using System.Collections.Generic;
public static void Main()
var transitProviders = new List<ITransitProviders>()
var georgianPost = new GeorgianPost(transitProviders);
var foundParcels = georgianPost.FindParcelByClientRoomId("MP3001");
if(foundParcels.Count > 0)
foreach(var item in foundParcels)
Console.WriteLine("გზავნილის დეტალები:" +
Environment.NewLine+ Environment.NewLine +item.ParcelCode +
Environment.NewLine + item.ClientRoomId + Environment.NewLine +
item.Weight +Environment.NewLine + item.ParcelStatus + Environment.NewLine+ "----");
Console.WriteLine("აღნიშნული ოთახის ნომრით გზავნილები არ მოიძებმა!");
public decimal ParcelId {get;set;}
public string ParcelCode {get;set;}
public string ClientRoomId {get;set;}
public double? Weight {get;set;}
public string ParcelStatus {get;set;}
public string Storage {get;set;}
public class GeorgianPost
private List<ITransitProviders> _transitProviders;
public GeorgianPost(List<ITransitProviders> transitProviders)
_transitProviders = transitProviders;
public List<Parcel> FindParcelByClientRoomId(String RoomId)
List<Parcel> _clientParcels = null;
foreach (var provider in _transitProviders)
if(!string.IsNullOrEmpty(RoomId))
_clientParcels = provider.ActiveParcels.Where(x=>x.ClientRoomId == RoomId).ToList();
public Parcel FindParcelByParcelCode(String ParcelCode)
foreach (var provider in _transitProviders)
if(!string.IsNullOrEmpty(ParcelCode))
return provider.ActiveParcels.Where(x=>x.ParcelCode == ParcelCode).FirstOrDefault();
public interface ITransitProviders
List<Parcel> ActiveParcels {get;set;}
public class GreeceStorage :ITransitProviders
public List<Parcel> ActiveParcels {get;set;}
ActiveParcels = new List<Parcel>
ParcelCode = "MP0250155663",
ParcelStatus = "Arrived In Storage",
ParcelCode = "MP0250155664",
ParcelStatus = "Receiver Address Problem",
ParcelCode = "MP0250155665",
ParcelCode = "MP0250155666",
ParcelCode = "MP0250155669",
ParcelStatus = "Arrived In Storage",
public class OperationStatus
public bool isValid {get;set;}
public string OperationDescription {get;set;}
public string OperationCode {get;set;}