public static AgentNoteVm GetAgentNoteInfo(int operId, byte noteType, int agNoteId = 0, bool forEdit = true) { AgentNoteVm agNoteVm = new AgentNoteVm(noteType); OperationsEntities db1 = new OperationsEntities(); AccountingEntities db = new AccountingEntities(); AgentNote agNoteDb; if (agNoteId != 0) { agNoteDb = db.AgentNotes.Where(x => x.AgentNoteId == agNoteId).FirstOrDefault(); Mapper.CreateMap <AgentNote, AgentNoteVm>().IgnoreAllNonExisting(); Mapper.CreateMap <AgentNoteDetail, AgentNoteDetailVm>().IgnoreAllNonExisting(); Mapper.Map(agNoteDb, agNoteVm); operId = agNoteDb.OperationId; //agNoteVm.FromPort = operationInfo.FromPort; //agNoteVm.ToPort = operationInfo.ToPort; } else { agNoteDb = new AgentNote(); agNoteVm.AgentNoteCode = AdminHelper.GeneratePrefixCode(PrefixForEnum.AgentNote, false); } var operationInfo = db1.OperationViews.Where(x => x.OperationId == operId).FirstOrDefault(); Mapper.CreateMap <OperationView, AgentNoteVm>() .ForMember(x => x.CreateBy, y => y.Ignore()) .ForMember(x => x.CreateDate, y => y.Ignore()) .IgnoreAllNonExisting(); Mapper.Map(operationInfo, agNoteVm); if (operationInfo.OrderFrom == 1) { agNoteVm.CustomerName = operationInfo.ShipperNameEn; } else { agNoteVm.CustomerName = operationInfo.ConsigneeNameEn; } agNoteVm.AgentName = operationInfo.AgentNameEn; var operCostObj = AccountingHelper.GetOperationCost(agNoteVm.OperationId, 0); var agentCostList = operCostObj.OperationCostAccVms.Where(x => x.IsAgent).ToList(); var agentCostTotalList = operCostObj.OperationCostTotalAccVms.Where(x => x.TotalAgentRate != 0).ToList(); var operCostList = db1.OperationCosts.Include("OperationCostLib").Include("Currency") .Where(x => x.OperationId == operId && x.IsAgentCost == true).ToList(); agNoteVm.ContainerSummary = operCostObj.ContainerSummary; agNoteVm.OperationCostAccVms = agentCostList; agNoteVm.OperationCostTotalAccVms = agentCostTotalList; agNoteVm.HouseBillId = agentCostList.FirstOrDefault().HouseBillId; if (agentCostList.Count > 0) { agNoteVm.CurrencyId = agentCostList.FirstOrDefault().CurrencyId; agNoteVm.CurrencySign = agentCostList.FirstOrDefault().CurrencySign; } if (forEdit) { //Get prev agent note details for this operation List <int> usedCost = db.AgentNoteDetails .Where(x => x.AgentNote.OperationId == operId) .Select(x => x.OperCostId) .ToList(); var newCosts = operCostList.Where(x => !usedCost.Contains(x.OperCostId)).ToList(); AgentNoteDetailVm agentNoteDetailVm; foreach (var item in newCosts) { agentNoteDetailVm = new AgentNoteDetailVm() { AgentNoteDetailId = 0, CostName = item.OperationCostLib.OperCostNameEn, CurrencyId = item.CurrencyId, CurrencySign = item.Currency.CurrencySign, ExchangeRate = 1, MainAmount = agNoteVm.AgentNoteType == 1 ? item.OperationCostSelling : item.OperationCostNet, MainCurrencyId = item.CurrencyId, MainCurrencySign = item.Currency.CurrencySign, OperCostId = item.OperCostId, OperCostLibId = item.OperCostLibId }; agNoteVm.AgentNoteDetails.Add(agentNoteDetailVm); } } else { foreach (var item in agNoteVm.AgentNoteDetails) { item.CostName = operCostList .Where(x => x.OperCostId == item.OperCostId).FirstOrDefault().OperationCostLib.OperCostNameEn; } } return(agNoteVm); }
internal static string AddEditAgentNote(AgentNoteVm agentNoteVm) { string isSaved = "true"; AccountingEntities db = new AccountingEntities(); AgentNote agNoteDb; int agNoteId = agentNoteVm.AgentNoteId; if (agNoteId == 0) { agNoteDb = new AgentNote(); } else { agNoteDb = db.AgentNotes.Where(x => x.AgentNoteId == agNoteId).FirstOrDefault(); } Mapper.CreateMap <AgentNoteVm, AgentNote>() .ForMember(x => x.AgentNoteDetails, y => y.Ignore()) .IgnoreAllNonExisting(); Mapper.Map(agentNoteVm, agNoteDb); AgentNoteDetail agNoteDetail; Mapper.CreateMap <AgentNoteDetailVm, AgentNoteDetail>().IgnoreAllNonExisting(); foreach (var item in agentNoteVm.AgentNoteDetails) { if (item.IsSelected) { agNoteDetail = new AgentNoteDetail(); Mapper.Map(item, agNoteDetail); agNoteDb.AgentNoteDetails.Add(agNoteDetail); } } using (TransactionScope transaction = new TransactionScope()) { try { string agentAccId = AccountingChartHelper.GetAccountIdByPkAndTbName(agNoteDb.AgentId, "Agent", "AgentId"); if (string.IsNullOrEmpty(agentAccId)) { agentAccId = AccountingChartHelper.AddAgentToChart(agNoteDb.AgentId, agNoteDb.AgentNoteType); } if (agNoteId == 0) { agNoteDb.AgentNoteCode = AdminHelper.GeneratePrefixCode(PrefixForEnum.AgentNote, true); db.AgentNotes.Add(agNoteDb); } db.SaveChanges(); if (agNoteId == 0) { agentNoteVm.AgentId = agNoteDb.AgentId; agentNoteVm.AgentNoteCode = agNoteDb.AgentNoteCode; //Add invoice to accounting transactions table AddAgentToTransTable(agentAccId, agentNoteVm); OperationHelper.ChangeOperationStatus(agentNoteVm.OperationId, (byte)StatusEnum.InvoiceIssued); } isSaved = "true" + agNoteDb.AgentNoteId; transaction.Complete(); } catch (DbEntityValidationException e) { isSaved = "false " + e.Message; AdminHelper.LastIdRemoveOne(PrefixForEnum.AgentNote); } catch (Exception e) { isSaved = "false " + e.Message; AdminHelper.LastIdRemoveOne(PrefixForEnum.AgentNote); } } return(isSaved); }