// // CUSTOM MODULES // public DTO.FactoryProformaInvoiceMng.EditFormData GetData(int userId, int id, int factoryId, string season, int factoryOrderId, out Library.DTO.Notification notification) { notification = new Library.DTO.Notification() { Type = Library.DTO.NotificationType.Success }; DTO.FactoryProformaInvoiceMng.EditFormData data = new DTO.FactoryProformaInvoiceMng.EditFormData(); data.Data = new DTO.FactoryProformaInvoiceMng.FactoryProformaInvoice(); data.Data.Details = new List <DTO.FactoryProformaInvoiceMng.FactoryProformaInvoiceDetail>(); //try to get data try { // check permission if (id > 0 && fwFactory.CheckFactoryProformaInvoicePermission(userId, id) == 0) { throw new Exception("Current user don't have access permission for the selected proforma invoice data!"); } if (id <= 0 && fwFactory.CheckFactoryPermission(userId, factoryId) == 0) { throw new Exception("Current user don't have access permission for the selected factory data!"); } if (id <= 0 && fwFactory.CheckFactoryOrderPermission(userId, factoryOrderId) == 0) { throw new Exception("Current user don't have access permission for the selected factory order data!"); } using (FactoryProformaInvoiceMngEntities context = CreateContext()) { if (id == 0) { data.Data.Season = season; data.Data.FactoryID = factoryId; DTO.Support.Factory dtoFactory = supportFactory.GetFactory().FirstOrDefault(o => o.FactoryID == factoryId); FactoryProformaInvoiceMng_FactoryOrderSearchResult_View dbFactoryOrder = context.FactoryProformaInvoiceMng_FactoryOrderSearchResult_View.FirstOrDefault(o => o.FactoryOrderID == factoryOrderId); if (dtoFactory != null) { data.Data.FactoryUD = dtoFactory.FactoryUD; } else { throw new Exception("Factory not found!"); } if (dbFactoryOrder != null) { data.Data.FactoryOrderID = factoryOrderId; data.Data.FactoryOrderUD = dbFactoryOrder.FactoryOrderUD; // get products int index = -1; foreach (FactoryProformaInvoiceMng_FactoryOrderItemSearchResult_View dbDetail in context.FactoryProformaInvoiceMng_FactoryOrderItemSearchResult_View.Where(o => o.FactoryOrderID == factoryOrderId)) { data.Data.Details.Add(new DTO.FactoryProformaInvoiceMng.FactoryProformaInvoiceDetail() { FactoryProformaInvoiceDetailID = index, FactoryOrderDetailID = dbDetail.FactoryOrderDetailID, FactoryOrderSparepartDetailID = dbDetail.FactoryOrderSparepartDetailID, ArticleCode = dbDetail.ArticleCode, Description = dbDetail.Description, ClientUD = dbDetail.ClientUD, FactoryOrderUD = dbDetail.FactoryOrderUD, LDS = dbDetail.LDS.Value.ToString("dd/MM/yyyy"), OrderQnt = dbDetail.OrderQnt, ProductionStatus = dbDetail.ProductionStatus, PurchasingPrice = dbDetail.PurchasingPrice, Remark = string.Empty, UnitPrice = dbDetail.PurchasingPrice }); index--; } } else { throw new Exception("Factory order not found!"); } } else { data.Data = converter.DB2DTO_FactoryProformaInvoice(context.FactoryProformaInvoiceMng_FactoryProformaInvoice_View.FirstOrDefault(o => o.FactoryProformaInvoiceID == id)); } } } catch (Exception ex) { notification.Type = Library.DTO.NotificationType.Error; notification.Message = ex.Message; } return(data); }
public DTO.QuotationMng.EditFormData GetData(int id, int factoryID, string season, List <int> orders, int userId, out Library.DTO.Notification notification) { notification = new Library.DTO.Notification() { Type = Library.DTO.NotificationType.Success }; DTO.QuotationMng.EditFormData data = new DTO.QuotationMng.EditFormData(); data.Data = new DTO.QuotationMng.Quotation(); data.Data.QuotationDetails = new List <DTO.QuotationMng.QuotationDetail>(); data.Data.QuotationOffers = new List <DTO.QuotationMng.QuotationOffer>(); data.DeliveryTerms = new List <DTO.Support.DeliveryTerm>(); data.PaymentTerms = new List <DTO.Support.PaymentTerm>(); data.OfferDirections = new List <DTO.Support.OfferDirection>(); data.PriceDifferences = new List <DTO.Support.PriceDifference>(); data.QuotationStatuses = new List <DTO.Support.QuotationStatus>(); //try to get data try { using (QuotationMngEntities context = CreateContext()) { // add new case if (id == 0) { data.Data.Season = season; DTO.Support.Factory dtoFactory = supportFactory.GetFactory().FirstOrDefault(o => o.FactoryID == factoryID); data.Data.FactoryID = factoryID; data.Data.FactoryUD = dtoFactory.FactoryUD; data.Data.FactoryName = dtoFactory.FactoryName; data.Data.QuotationUD = "---/" + dtoFactory.FactoryUD.Substring(0, 3) + "/" + season.Replace("/", "-"); int index = -1; foreach (QuotationMng_FactoryOrderDetailSearchResult_View detail in context.QuotationMng_FactoryOrderDetailSearchResult_View.Where(o => o.FactoryOrderID.HasValue && orders.Contains(o.FactoryOrderID.Value))) { DTO.QuotationMng.QuotationDetail dtoDetail = new DTO.QuotationMng.QuotationDetail(); dtoDetail.QuotationDetailID = index; dtoDetail.ArticleCode = detail.ArticleCode; dtoDetail.Description = detail.Description; dtoDetail.FactoryOrderDetailID = detail.FactoryOrderDetailID; dtoDetail.FactoryOrderSparepartDetailID = detail.FactoryOrderSparepartDetailID; dtoDetail.ClientUD = detail.ClientUD; dtoDetail.FactoryOrderUD = detail.FactoryOrderUD; if (detail.LDS.HasValue) { dtoDetail.LDS = detail.LDS.Value.ToString("dd/MM/yyyy"); } dtoDetail.StatusID = 1; // hardcode for PENDING dtoDetail.QuotationStatusNM = "PENDING"; dtoDetail.StatusUpdatedBy = userId; dtoDetail.StatusUpdatedDate = DateTime.Now.ToString("dd/MM/yyyy"); dtoDetail.UpdatorName = supportFactory.GetUser().FirstOrDefault(o => o.UserID == userId).FullName; dtoDetail.UpdatorName2 = supportFactory.GetUser().FirstOrDefault(o => o.UserID == userId).FullName; data.Data.QuotationDetails.Add(dtoDetail); index--; } } else { data.Data = converter.DB2DTO_Quotation(context.QuotationMng_Quotation_View.Include("QuotationMng_QuotationDetail_View").Include("QuotationMng_QuotationOffer_View").Include("QuotationMng_QuotationOffer_View.QuotationMng_QuotationOfferDetail_View").FirstOrDefault(o => o.QuotationID == id)); season = data.Data.Season; } } Task task2 = Task.Factory.StartNew(() => { data.DeliveryTerms = supportFactory.GetDeliveryTerm().ToList(); }); Task task3 = Task.Factory.StartNew(() => { data.PaymentTerms = supportFactory.GetPaymentTerm().ToList(); }); Task task4 = Task.Factory.StartNew(() => { data.OfferDirections = supportFactory.GetOfferDirection().ToList(); }); Task task5 = Task.Factory.StartNew(() => { data.PriceDifferences = supportFactory.GetPriceDifference(season).ToList(); }); Task task6 = Task.Factory.StartNew(() => { data.QuotationStatuses = supportFactory.GetQuotationStatus().ToList(); }); Task.WaitAll(task2, task3, task4, task5, task6); } catch (Exception ex) { notification.Type = Library.DTO.NotificationType.Error; notification.Message = ex.Message; } return(data); }