private DAL.Entities.Order AssembleOrder(ICreateOrderData createOrderData, string newOrderNumber) { IEnumerable <string> itemCodes = createOrderData.Items.Select(item => item.Code).ToList(); IEnumerable <DAL.Entities.Item> items = repository.ItemRepository. GetAll().Where(item => itemCodes.Contains(item.Code)).ToList(); ICollection <DAL.Entities.OrderItem> assembledItems = createOrderData.Items.Select(item => AssembleItem(item, items)).ToList(); return(new DAL.Entities.Order { Number = newOrderNumber, CustomerName = createOrderData.CustomerName, CustomerSurname = createOrderData.CustomerSurname, CustomerPhone = createOrderData.CustomerPhone, CustomerEmail = createOrderData.CustomerEmail, City = createOrderData.City, PostDepartment = createOrderData.PostDepartment, PaymentType = Assembler.Assemble(createOrderData.PaymentType), DeliveryType = Assembler.Assemble(createOrderData.DeliveryType), User = createOrderData.UserEmail == null ? null : repository.UserManager.FindByEmail(createOrderData.UserEmail), OrderStatus = DAL.Entities.OrderStatus.Ordered, CreatingDateTime = DateTime.UtcNow, Items = assembledItems }); }
public void CreateOrder(ICreateOrderData createOrderData) { DAL.Entities.Order assembledOrder = AssembleOrder(createOrderData, orderNumberGenerator.GenerateNumber()); repository.OrderRepository.Create(assembledOrder); repository.Save(); }