public InvoiceRequest CreateInvoice(InvoiceRequest invoiceRequest) { using (var scope = _context.CreateScope()) { var db = scope.ServiceProvider.GetRequiredService <InvoiceContext>(); //add customer var newCustomer = new DataAccess.Models.Customer() { Name = invoiceRequest.CustomerDetails.CustomerName, Streat = invoiceRequest.CustomerDetails.ShippingDetails.Streat, State = invoiceRequest.CustomerDetails.ShippingDetails.State, City = invoiceRequest.CustomerDetails.ShippingDetails.City, Phone = invoiceRequest.CustomerDetails.ShippingDetails.Phone, }; db.Customer.Add(newCustomer); db.SaveChanges(); var randumNumber = new Random(); //add products var invoice = new InvoiceDetails() { InvoiceNumber = invoiceRequest.CompanyID.ToString() + "-" + "DDYY" + randumNumber.Next().ToString(), CompanyId = invoiceRequest.CompanyID, Date = invoiceRequest.InvoiceDate, CustomerId = newCustomer.Id, }; db.InvoiceDetails.Add(invoice); db.SaveChanges(); foreach (var product in invoiceRequest.ProductDetails) { var newProduct = new DataAccess.Models.Product() { price = product.Price, Name = product.Name }; db.Product.Add(newProduct); db.SaveChanges(); var newOrder = new OrderDetails() { ProuductId = newProduct.Id, InvoiceId = invoice.Id, Quantity = product.Quantity }; db.OrderDetails.Add(newOrder); db.SaveChanges(); } invoiceRequest.InvoiceId = invoice.Id; return(invoiceRequest); } }
public static ProductDto ToDto(this DataAccess.Models.Product item) { ProductDto dto = null; if (item != null) { dto = new ProductDto { Id = item.Id, Name = item.Name, DepositBuyDate = item.DepositBuyDate, BuyingPrice = item.BuyingPrice.HasValue ? item.BuyingPrice.Value : 0.0m, Item = item.Item.ToBasicDto() as ItemDto, ProductType = item.ProductType.ToBasicDto() as ProductTypeDto, PaperReference = item.PaperReference.ToBasicDto() as PaperReferenceDto, City = item.City.ToDto(), StockLocation = item.StockLocation, Rating = item.Rating.ToDto(), Customer = item.Customer.ToDto(), Operator = item.CreateOperator.ToDto(), Brands = item.Brands.ToList().ToDto(), Categories = item.Categories.ToList().ToDto(), Models = item.Models.ToList().ToDto(), Sold = item.Sold, SellingPrice = item.SellPrice.HasValue ? item.SellPrice.Value : 0.0m, SellingOperator = item.SellingOperator.ToDto(), State = item.State.ToDto(), Buyer = item.ProductBuyer.ToDto(), Mecanic = item.Mecanic.HasValue && item.Mecanic.Value, SellingDate = item.SellingDate.HasValue ? item.SellingDate.Value : Constants.DEFAULT_DATE, CardIdentificationNumber = item.CarIdentificationNumber, HasComplaint = item.HasComplaint.HasValue && item.HasComplaint.Value, ComplaintOperator = item.ComplaintOperator.ToDto(), ComplaintDate = item.ComplaintDate.HasValue ? item.ComplaintDate.Value : Constants.DEFAULT_DATE, IsReturn = item.IsReturn.HasValue && item.IsReturn.Value, ReturnDate = item.ReturnDate.HasValue ? item.ReturnDate.Value : Constants.DEFAULT_DATE, ReturnOperator = item.ReturnOperator.ToDto(), IsReplace = item.IsReplace.HasValue && item.IsReplace.Value, ReplacementOperator = item.ReplaceOperator.ToDto(), ReplaceDate = item.ReplaceDate.HasValue ? item.ReplaceDate.Value : Constants.DEFAULT_DATE, ReplaceProductId = item.ReplacedProductId.HasValue ? item.ReplacedProductId.Value : 0, IsReimbursed = item.IsReimbursed.HasValue && item.IsReimbursed.Value, IsAvailable = item.IsAvailable.HasValue && item.IsAvailable.Value, RequestNumber = item.RequestNumber, RequestDate = item.RequestDate.HasValue ? item.RequestDate.Value : Constants.DEFAULT_DATE, RequestOperator = item.RequestOperator.ToDto(), HasOrder = item.HasOrder.HasValue && item.HasOrder.Value, OrderNumber = item.OrderNumber, OrderDate = item.OrderDate.HasValue ? item.OrderDate.Value : Constants.DEFAULT_DATE, OrderOperator = item.OrderOperator.ToDto(), OrderCustomer = item.OrderCustomer.ToDto(), OrderSellingPrice = item.OrderSellingPrice.HasValue ? item.OrderSellingPrice.Value : 0.0m, AdvancePaymentAmount = item.AdvancePaymentAmount.HasValue ? item.AdvancePaymentAmount.Value : 0.0m, EstimatedDeliveryDate = item.EstimatedDeliveryDate.HasValue ? item.EstimatedDeliveryDate.Value : Constants.DEFAULT_DATE, FinalDate = item.FinalDate.HasValue ? item.FinalDate.Value : Constants.DEFAULT_DATE, BalanceAmount = item.BalanceAmount.HasValue ? item.BalanceAmount.Value : 0.0m }; } return(dto); }