public async Task <ActionResult <QuoteTripCharge> > Post(QuoteTripCharge quoteTripCharge) { string eMail = string.Empty; using (Utility util = new Utility()) { eMail = util.GetEmailclaim(User.Identity as ClaimsIdentity); } if (quoteTripCharge.Id > 0) { quoteTripCharge.UpdatedBy = eMail; quoteTripCharge.ChargeDetails.ForEach(x => x.UpdatedBy = eMail); await _repository.UpdateAsync <QuoteTripCharge>(quoteTripCharge); } else { quoteTripCharge.CreatedBy = eMail; quoteTripCharge.ChargeDetails.ForEach(x => x.CreatedBy = eMail); await _repository.AddAsync <QuoteTripCharge>(quoteTripCharge); } return(CreatedAtAction("GetQuoteTripCharge", new { id = quoteTripCharge.Id }, quoteTripCharge)); }
public async Task <ActionResult <QuoteTripCharge> > Get(string requestData) { QuoteTripCharge quoteTripCharge = new QuoteTripCharge(); try { // Do the concilallation int vesselChargeId = 0; using (Utility util = new Utility(_repository, _config)) { bool isTrue = int.TryParse(util.StripParam(requestData), out vesselChargeId); } //first get var chargeCount = _repository.ListAllAsyncWhere <ChargeDetail>(x => x.IsActive == true).Result.Count; var qcDummy = await new Utility(_repository, _config).BuildQuoteTrip(vesselChargeId); var existingValue = _repository.GetByIdAsync <QuoteTripCharge>(x => x.VesselChargeId == vesselChargeId, new string[] { "ChargeDetails", "ChargeDetails.ChargeDetail" }).Result; if (existingValue != null) { //fill the missing ones&& if (existingValue.ChargeDetails.Count < chargeCount) { var existingValues = String.Join(",", existingValue.ChargeDetails.Select(f => f.ChargeDetail.Id).ToList <int>()); var diff = qcDummy.ChargeDetails.FindAll(x => !existingValues.Contains(x.ChargeDetail.Id.ToString())); if (diff.Count > 0) { existingValue.ChargeDetails.AddRange(diff); } } quoteTripCharge = existingValue; } else { quoteTripCharge = qcDummy; } } catch (Exception e) { throw e; } quoteTripCharge.ChargeDetails.OrderBy(x => x.ChargeDetail.ChargedAtId).ThenBy(y => y.IsActive); return(quoteTripCharge); }