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);
        }