public void SaveRecord(ChargeViewModel chargeViewModel)
        {
            tbl_GLChargeMaster_BasicInfo tblCharge        = new tbl_GLChargeMaster_BasicInfo();
            tbl_GLChargeMaster_Details   tblChargeDetails = new tbl_GLChargeMaster_Details();

            tblCharge.ChargeName    = chargeViewModel.ChargeName;
            tblCharge.ReferenceDate = chargeViewModel.ReferenceDate;
            tblCharge.Status        = chargeViewModel.Status;
            tblCharge.BranchID      = Convert.ToInt32(HttpContext.Current.Session["BranchId"]);
            tblCharge.CMPId         = Convert.ToInt32(HttpContext.Current.Session["CompanyId"]);
            tblCharge.FYID          = Convert.ToInt32(HttpContext.Current.Session["FinancialYearId"]);
            tblCharge.CreatedDate   = DateTime.Now;
            tblCharge.CreatedBy     = chargeViewModel.CreatedBy;
            tblCharge.UpdatedDate   = DateTime.Now;
            tblCharge.UpdatedBy     = chargeViewModel.UpdatedBy;
            _context.tbl_GLChargeMaster_BasicInfo.Add(tblCharge);
            _context.SaveChanges();

            int CID = _context.tbl_GLChargeMaster_BasicInfo.Max(x => x.CID);

            //save the data in Charge Details table
            foreach (var p in chargeViewModel.chargeDetailsCollection)
            {
                var chargetrn = new tbl_GLChargeMaster_Details
                {
                    CID         = CID,
                    LoanAmtFrom = p.LoanAmountGreaterthan,
                    LoanAmtTo   = p.LoanAmountLessthan,
                    Charges     = p.ChargeAmount,
                    ChargeType  = p.ChargeType,
                };
                _context.tbl_GLChargeMaster_Details.Add(chargetrn);
                _context.SaveChanges();
            }
        }
        public void UpdateRecord(ChargeViewModel chargeViewModel)
        {
            var chargeObj = _context.tbl_GLChargeMaster_BasicInfo.Where(x => x.CID == chargeViewModel.ID).FirstOrDefault();

            //update the data in charge table
            chargeObj.ChargeName    = chargeViewModel.ChargeName;
            chargeObj.ReferenceDate = chargeViewModel.ReferenceDate;
            chargeObj.Status        = chargeViewModel.Status;
            chargeObj.UpdatedBy     = chargeViewModel.UpdatedBy;
            chargeObj.UpdatedDate   = DateTime.Now;
            chargeObj.BranchID      = Convert.ToInt32(HttpContext.Current.Session["BranchId"]);
            chargeObj.CMPId         = Convert.ToInt32(HttpContext.Current.Session["CompanyId"]);
            chargeObj.FYID          = Convert.ToInt32(HttpContext.Current.Session["FinancialYearId"]);

            List <tbl_GLChargeMaster_Details> NewChargeDetailsList = new List <tbl_GLChargeMaster_Details>();

            //update the data in Charge Details table
            foreach (var p in chargeViewModel.chargeDetailsCollection)
            {
                var FindChargebject = _context.tbl_GLChargeMaster_Details.Where(x => x.ID == p.ID && x.CID == chargeViewModel.ID).FirstOrDefault();
                if (FindChargebject == null)
                {
                    var chargetrnnew = new tbl_GLChargeMaster_Details
                    {
                        CID         = chargeViewModel.ID,
                        LoanAmtFrom = p.LoanAmountGreaterthan,
                        LoanAmtTo   = p.LoanAmountLessthan,
                        Charges     = p.ChargeAmount,
                        ChargeType  = p.ChargeType,
                    };
                    _context.tbl_GLChargeMaster_Details.Add(chargetrnnew);
                }
                else
                {
                    FindChargebject.LoanAmtFrom = p.LoanAmountGreaterthan;
                    FindChargebject.LoanAmtTo   = p.LoanAmountLessthan;
                    FindChargebject.Charges     = p.ChargeAmount;
                    FindChargebject.ChargeType  = p.ChargeType;
                }
                NewChargeDetailsList.Add(FindChargebject);
            }
            #region charge details remove
            //take the loop of table and check from list if found in list then not remove else remove from table itself
            var chargetrnobjlist = _context.tbl_GLChargeMaster_Details.Where(x => x.CID == chargeViewModel.ID).ToList();
            if (chargetrnobjlist != null)
            {
                foreach (tbl_GLChargeMaster_Details item in chargetrnobjlist)
                {
                    if (NewChargeDetailsList.Contains(item))
                    {
                        continue;
                    }
                    else
                    {
                        _context.tbl_GLChargeMaster_Details.Remove(item);
                    }
                }
                _context.SaveChanges();
            }
            #endregion
        }