public static TruckingOrderVm NewTruckingOrderByOperation(int operationId, byte orderFrom = 1, int houseBillId = 0) { EasyFreightEntities db = new EasyFreightEntities(); OperationsEntities db1 = new OperationsEntities(); TruckingOrderVm trkoVmObj = new TruckingOrderVm(orderFrom); //Get House Bill status var hbInfo = db1.HouseBills.Where(x => x.HouseBillId == houseBillId) .Select(x => new { x.StatusId, x.OperationDate }).FirstOrDefault(); //Check if has trucking order .. Get its details for edit TruckingOrder truckingOrderDb; if (hbInfo.StatusId == 3 || hbInfo.StatusId == 4) { truckingOrderDb = db.TruckingOrders .Where(x => x.HouseBillId == houseBillId && (x.StatusId == 3 || x.StatusId == 4)).FirstOrDefault(); } else { truckingOrderDb = db.TruckingOrders .Where(x => x.HouseBillId == houseBillId && (x.StatusId == 1 || x.StatusId == 2)).FirstOrDefault(); } if (truckingOrderDb != null) { Mapper.CreateMap <TruckingOrder, TruckingOrderVm>().IgnoreAllNonExisting(); Mapper.Map(truckingOrderDb, trkoVmObj); trkoVmObj.OperationDate = hbInfo.OperationDate.Value; } else { var houseBillVm = HouseBillHelper.GetHbContent(operationId, orderFrom, houseBillId); Mapper.CreateMap <HouseBillVm, TruckingOrderVm>() .ForMember(x => x.StatusId, y => y.Ignore()) .IgnoreAllNonExisting(); Mapper.Map(houseBillVm, trkoVmObj); trkoVmObj.BookingNo = db1.Operations.Where(x => x.OperationId == operationId) .FirstOrDefault().BookingNumber; } return(trkoVmObj); }
public static string AddEditOperation(OperationVm operationVm, out int operId) { string isSaved = "true"; int operationId = operationVm.OperationId; OperationsEntities db = new OperationsEntities(); Operation operationDb; List <OperationContainer> operationContListDb; // notifications NotificationMsgVm notifi = new NotificationMsgVm(); if (operationId == 0) { operationDb = new Operation(); operationContListDb = new List <OperationContainer>(); } else { operationDb = db.Operations.Include("OperationContainers") .Where(x => x.OperationId == operationId).FirstOrDefault(); if (operationDb.StatusId > 2) { operId = operationDb.OperationId; isSaved = "false .. Cann't update operation is not open "; return(isSaved); } operationContListDb = operationDb.OperationContainers.ToList(); //Get quotContainers Ids sent from the screen List <long> containerVmIds = operationVm.OperationContainers.Select(x => x.OperConId).ToList(); var containerDel = operationContListDb.Where(x => !containerVmIds.Contains(x.OperConId)).ToList(); foreach (var item in containerDel) { db.OperationContainers.Remove(item); } } Mapper.CreateMap <OperationVm, Operation>().IgnoreAllNonExisting(); // .ForMember(x => x.OperationContainers, v=> v.Ignore()); Mapper.CreateMap <OperationContainerVm, OperationContainer>().IgnoreAllNonExisting(); Mapper.Map(operationVm, operationDb); bool updateHB = false; if (operationId == 0) { //Generate code at save event if (operationDb.OrderFrom == 1) { operationDb.OperationCode = AdminHelper.GeneratePrefixCode(PrefixForEnum.Export, true); } else { operationDb.OperationCode = AdminHelper.GeneratePrefixCode(PrefixForEnum.Import, true); } db.Operations.Add(operationDb); //update quotation status if any int?quoteId = operationVm.QuoteId; if (quoteId != null) { //status = 2 -- opened Quotation quoteToUpdate = db.Quotations.Where(x => x.QuoteId == quoteId).FirstOrDefault(); quoteToUpdate.StatusId = 2; } notifi.NotificationTypeID = (operationDb.OrderFrom == 1) ? 1 : 3; notifi.ObjectID = -1; } else { List <HouseBillListVm> hbList = HouseBillHelper.GetHBList(operationId, operationDb.OrderFrom); if (hbList.Count == 1) { if (!operationDb.IsConsolidation) { HouseBill hb = db.HouseBills.Where(x => x.OperationId == operationDb.OperationId).FirstOrDefault(); hb.CBM = operationDb.CBM; hb.GoodsDescription = operationDb.GoodsDescription; hb.GrossWeight = operationDb.GrossWeight; hb.NetWeight = operationDb.NetWeight; hb.NumberOfPackages = operationDb.NumberOfPackages; hb.CollectedFreightCost = operationDb.FreightCostAmount; hb.CollectedThcCost = operationDb.ThcCostAmount; // hb.ShipperId = operationDb.ShipperId; // hb.ConsigneeId = operationDb.ConsigneeId; // hb.NotifierId = operationDb.NotifierId; // hb.NotifierAsConsignee = operationDb.NotifierAsConsignee; // hb.AgentId = operationDb.AgentId; hb.FromPortId = operationDb.FromPortId; hb.ToPortId = operationDb.ToPortId; } } } operId = 0; try { db.SaveChanges(); operId = operationDb.OperationId; if (notifi.ObjectID == -1) { notifi.ObjectID = operId; notifi.NotificationMsg = " New " + (operationDb.OrderFrom == 1 ? "Export " : "Import ") + " Operation Code: " + operationDb.OperationCode; NotificationHelper.Create_Notification(notifi); } //update hb if (updateHB) { } } catch (DbEntityValidationException e) { isSaved = "false " + e.Message; } catch (Exception e) { isSaved = "false " + e.Message; } return(isSaved); }
public static TruckingOrderDetailVm GetTruckingOrderDetailInfo(int truckingOrderId) { TruckingOrderDetailVm trkoVmObj = new TruckingOrderDetailVm(truckingOrderId); EasyFreightEntities db = new EasyFreightEntities(); int truckDetailCount = db.TruckingOrderDetails.Where(x => x.TruckingOrderId == truckingOrderId).Count(); OperationsEntities db1 = new OperationsEntities(); var truckViewObj = db1.TruckingOrdersViews.Where(x => x.TruckingOrderId == truckingOrderId).FirstOrDefault(); Mapper.CreateMap <TruckingOrdersView, TruckingOrderDetailVm>().IgnoreAllNonExisting(); Mapper.Map(truckViewObj, trkoVmObj); trkoVmObj.ClientName = truckViewObj.OrderFrom == 1 ? truckViewObj.ShipperNameEn : truckViewObj.ConsigneeNameEn; trkoVmObj.ContainersSummary = OperationHelper.GetContainersSummary(trkoVmObj.OperationId); List <TruckingOrderCost> truckCostList = db.TruckingOrderCosts.Where(x => x.TruckingOrderId == truckingOrderId).ToList(); TruckingCostVm truckingCostObj; if (truckCostList.Count() == 0) { truckingCostObj = new TruckingCostVm(trkoVmObj.TruckingOrderId); trkoVmObj.TruckingOrderCosts.Add(truckingCostObj); } else { Mapper.CreateMap <TruckingOrderCost, TruckingCostVm>().IgnoreAllNonExisting(); trkoVmObj.TotalCostNet = Math.Round(truckCostList.Sum(x => x.TruckingCostNet), 2); trkoVmObj.TotalCostSelling = Math.Round(truckCostList.Sum(x => x.TruckingCostSelling), 2); foreach (var cost in truckCostList) { truckingCostObj = new TruckingCostVm(); Mapper.Map(cost, truckingCostObj); truckingCostObj.TruckingCostSelling = Math.Round(truckingCostObj.TruckingCostSelling.Value, 2); truckingCostObj.TruckingCostNet = Math.Round(truckingCostObj.TruckingCostNet.Value, 2); truckingCostObj.TruckingCostName = cost.TruckingCostLib.TruckingCostName; truckingCostObj.CurrencySign = cost.Currency.CurrencySign; trkoVmObj.TruckingOrderCosts.Add(truckingCostObj); } } List <OperationContainerVm> operationContainerList = OperationHelper.GetOperationContainers(trkoVmObj.OperationId); if (operationContainerList.Count() > 0) { //kamal int truckHouseId = db.TruckingOrders.Where(x => x.TruckingOrderId == truckingOrderId).Select(a => a.HouseBillId.Value).FirstOrDefault(); List <HouseContainerVm> hcVmList = HouseBillHelper.GetHousContainerByHouseID(truckHouseId); if (hcVmList.Count > 0) { foreach (var opcont in operationContainerList) { foreach (var item in hcVmList) { if (item.OperConId == opcont.OperConId) { trkoVmObj.OperationContainers.Add(opcont); } } } } else { foreach (var opcont in operationContainerList) { trkoVmObj.OperationContainers.Add(opcont); } } } trkoVmObj.HbDate = db1.HouseBills .Where(x => x.HouseBillId == truckViewObj.HouseBillId).FirstOrDefault().OperationDate.Value; //Get code generated if first insert if (truckDetailCount == 0) { trkoVmObj.TruckingOrderCode = AdminHelper.GeneratePrefixCode(PrefixForEnum.TruckingOrder, false); } return(trkoVmObj); }
internal static string AddEditInvoice(InvoiceVm invoiceVm) { string isSaved = "true"; AccountingEntities db = new AccountingEntities(); int invoiceId = invoiceVm.InvoiceId; byte invoiceType = invoiceVm.InvoiceType; // int hbId = invoiceVm.HouseBillId; Invoice invDb; if (invoiceId == 0) { invDb = new Invoice(); } else { invDb = db.Invoices.Include("InvoiceDetails").Include("InvoiceTotals") .Where(x => x.InvoiceId == invoiceId).FirstOrDefault(); //Delete Invoice details and totals .. will insert it again var invDbTotals = invDb.InvoiceTotals; var invDbDetails = invDb.InvoiceDetails; foreach (var item in invDbDetails) { invDb.InvoiceDetails.Remove(item); } foreach (var item in invDbTotals) { invDb.InvoiceTotals.Remove(item); } } Mapper.CreateMap <InvoiceVm, Invoice>() .ForMember(x => x.InvoiceTotals, y => y.Ignore()) .ForMember(x => x.InvoiceDetails, y => y.Ignore()) .IgnoreAllNonExisting(); Mapper.Map(invoiceVm, invDb); InvoiceDetail invDetail; Mapper.CreateMap <InvoiceDetailVm, InvoiceDetail>().IgnoreAllNonExisting(); foreach (var item in invoiceVm.InvoiceDetails) { if (item.IsSelected == true) { invDetail = new InvoiceDetail(); Mapper.Map(item, invDetail); invDb.InvoiceDetails.Add(invDetail); } } InvoiceTotal invTotalDb; foreach (var item in invoiceVm.InvoiceTotals) { invTotalDb = new InvoiceTotal() { CurrencyId = item.CurrencyId, TotalAmount = item.TotalAmount, CurrencySign = item.CurrencySign, TaxDepositAmount = item.TaxDepositAmount, TotalBeforeTax = item.TotalBeforeTax, VatTaxAmount = item.VatTaxAmount }; invDb.InvoiceTotals.Add(invTotalDb); } using (TransactionScope transaction = new TransactionScope()) { try { //Add shipper or consignee to accounting chart string accountId = GetAccountId(invoiceVm.OrderFrom, invoiceVm.ShipperId, invoiceVm.ConsigneeId); if (invoiceId == 0) { invDb.InvoiceCode = AdminHelper.GeneratePrefixCode(PrefixForEnum.AccountingInvoice, true); db.Invoices.Add(invDb); } db.SaveChanges(); invoiceVm.InvoiceId = invDb.InvoiceId; invoiceVm.InvoiceCode = invDb.InvoiceCode; //Change HB status if (invoiceId == 0) { //Add invoice to accounting transactions table AddInvToTransTable(accountId, invoiceVm); HouseBillHelper.ChangeHBStatus(invDb.HouseBillId, (byte)StatusEnum.InvoiceIssued); OperationHelper.ChangeOperationStatus(invDb.OperationId, (byte)StatusEnum.InvoiceIssued); } transaction.Complete(); } catch (DbEntityValidationException e) { isSaved = "false " + e.Message; //AdminHelper.LastIdRemoveOne(PrefixForEnum.AccountingInvoice); } catch (Exception e) { isSaved = "false " + e.Message; //AdminHelper.LastIdRemoveOne(PrefixForEnum.AccountingInvoice); } } return(isSaved); }