public void ItTransitionsToSumbittedAfterNew()
        {
            // Arrange
            var items = new List<OrderLineItemDto>();
            items.Add(new OrderLineItemDto () {ItemId = 1, Units = 2, CurrencyId = "AED", PricePerUnit = 0});
            items.Add(new OrderLineItemDto () {ItemId = 2, Units = 1, CurrencyId = "AED", PricePerUnit = 0});
            items.Add(new OrderLineItemDto () {ItemId = 3, Units = 3, CurrencyId = "AED", PricePerUnit = 0});
            items.Add(new OrderLineItemDto () {ItemId = 4, Units = 2, CurrencyId = "AED", PricePerUnit = 0});

            // Act
            _order = _ordersRepository.Create(new OrderSettings(DateTime.Now, 1, 0, null, null, 1, 1, 1, "XYZ", "AF8787", DateTime.Now.AddDays(1), DateTime.Now.AddDays(1), items)
            /*List<OrderLineItemDto> lineItems*/);

            // Assert
            Assert.AreEqual(Order.Submitted, _order.Status);
        }
        private void QuoteOrder(Order order, DateTime quoteDate)
        {
            var lineItemDtos = new List<OrderLineItemDto>();
            foreach (OrderLineItem lineItem in order.LineItems)
            {
                var lineItemDto = new OrderLineItemDto();
                lineItemDto.ItemId = lineItem.Item.Id;
                lineItemDto.Units = lineItem.Units;
                lineItemDto.CurrencyId = lineItem.Currency.Id;
                lineItemDto.PricePerUnit = Utilities.GenerateRandomAmount(lineItemDto.ItemId, 500);
                lineItemDtos.Add(lineItemDto);
            }

            _ordersRepository.Quote(order.Id, quoteDate, lineItemDtos);
        }
 private void IgnoreOrder(Order order)
 {
     _ordersRepository.Ignore(order.Id, "System");
 }
 private void FulfillOrder(Order order, DateTime flflDate)
 {
     _ordersRepository.Fulfill(order.Id, flflDate);
 }
 private void ApproveOrder(Order order, DateTime approveDate)
 {
     _ordersRepository.Approve(order.Id, approveDate);
 }
        public OrderViewModel(int traderId, Order order)
        {
            Id = order.Id;
            OrderDate = order.OrderDate;
            QuotationDate = order.QuotationDate;
            ApprovalDate = order.ApprovalDate;
            FulfilmentDate = order.FulfilmentDate;

            Status = "Submitted";
            if (order.Status == Order.Submitted)
                Status = "Submitted";
            else if (order.Status == Order.Quoted)
                Status = "Quoted";
            else if (order.Status == Order.Approved)
                Status = "Approved";
            else if (order.Status == Order.Fulfilled)
                Status = "Fulfilled";

            Amount = order.Amount / order.GlobalPivotExchangeRate;
            AdminFee = order.AdminFee / order.GlobalPivotExchangeRate;

            TakeoffAirport = order.TakeoffAirport.Name;
            LandingAirport = order.LandingAirport.Name;
            Aircraft = order.Aircraft.Manufacturer;
            Operator = order.Operator;
            FlightNumber = order.FlightNumber;
            EstimatedTakeoffTime = order.EstimatedTakeoffTime;
            EstimatedLandingTime = order.EstimatedLandingTime;

            AircraftId = order.Aircraft.Id;
            TakeoffAirportId = order.TakeoffAirport.Id;
            LandingAirportId = order.LandingAirport.Id;

            BuyerId = order.Buyer.Id;
            Buyer = order.Buyer.Name;
            SellerId = order.Seller.Id;
            Seller = order.Seller.Name;

            IsSeller = order.Seller.Id == traderId;
            IsViewed = false; // Please see comments above

            IsQuoted = order.IsQuoted;
            IsApproved = order.IsApproved;
            IsFulfilled = order.IsFulfilled;

            Contract = new ContractViewModel(traderId, order.Contract);

            LineItems = new List<OrderLineItemDto>();
            foreach (OrderLineItem lineItem in order.LineItems)
            {
                var dto = new OrderLineItemDto();
                dto.ItemId = lineItem.Item.Id;
                dto.Category = lineItem.Item.Category;
                dto.SubCategory = lineItem.Item.SubCategory;
                dto.Item = lineItem.Item.Name;
                dto.Units = lineItem.Units;
                dto.Unit = lineItem.Item.Unit;
                dto.CurrencyId = lineItem.Currency.Id;
                dto.PricePerUnit = lineItem.PricePerUnit / lineItem.GlobalPivotExchangeRate;
                dto.Amount = dto.PricePerUnit * dto.Units;
                dto.Instructions = lineItem.Instructions;
                LineItems.Add(dto);
            }
        }