using System.Collections.Generic;
public class PortfolioDTO
public int PortfolioId { get; set; }
public string Name { get; set; }
public string Description { get; set; }
public DateTime CreatedDate { get; set; }
public DateTime ModifiedDate { get; set; }
public class PortfolioQueue
private Queue<PortfolioDTO> portfolioQueue = new Queue<PortfolioDTO>();
public void EnqueuePortfolio(PortfolioDTO portfolio)
portfolioQueue.Enqueue(portfolio);
public PortfolioDTO DequeuePortfolio()
if (portfolioQueue.Count > 0)
return portfolioQueue.Dequeue();
throw new InvalidOperationException("Queue is empty");
public List<PortfolioDTO> GetAllPortfolios()
return new List<PortfolioDTO>(portfolioQueue);
public PortfolioDTO GetPortfolioById(int id)
foreach (var portfolio in portfolioQueue)
if (portfolio.PortfolioId == id)
public int GetPortfolioCount()
return portfolioQueue.Count;
public static void Main()
PortfolioQueue portfolioQueue = new PortfolioQueue();
portfolioQueue.EnqueuePortfolio(new PortfolioDTO { PortfolioId = 1, Name = "Portfolio 1", Description = "Description 1", CreatedDate = DateTime.Now, ModifiedDate = DateTime.Now });
portfolioQueue.EnqueuePortfolio(new PortfolioDTO { PortfolioId = 2, Name = "Portfolio 2", Description = "Description 2", CreatedDate = DateTime.Now, ModifiedDate = DateTime.Now });
Console.WriteLine("All Portfolios in Queue:");
foreach (var portfolio in portfolioQueue.GetAllPortfolios())
Console.WriteLine($"ID: {portfolio.PortfolioId}, Name: {portfolio.Name}, Description: {portfolio.Description}");
var searchResult = portfolioQueue.GetPortfolioById(1);
Console.WriteLine($"\nSearch Result: ID: {searchResult.PortfolioId}, Name: {searchResult.Name}, Description: {searchResult.Description}");
var dequeuedPortfolio = portfolioQueue.DequeuePortfolio();
Console.WriteLine($"\nDequeued Portfolio: ID: {dequeuedPortfolio.PortfolioId}, Name: {dequeuedPortfolio.Name}, Description: {dequeuedPortfolio.Description}");
Console.WriteLine("\nPortfolios left in Queue:");
foreach (var portfolio in portfolioQueue.GetAllPortfolios())
Console.WriteLine($"ID: {portfolio.PortfolioId}, Name: {portfolio.Name}, Description: {portfolio.Description}");
Console.WriteLine($"\nTotal Portfolios in Queue: {portfolioQueue.GetPortfolioCount()}");