public int AddAdditionalCharge(AdditionalCharge model)
 {
     using (REMSDBEntities context = new REMSDBEntities())
     {
         try
         {
             context.AdditionalCharges.Add(model);
             int i = context.SaveChanges();
             return(i);
         }
         catch (Exception ex)
         {
             Helper hp = new Helper();
             hp.LogException(ex);
             return(0);
         }
     }
 }
Beispiel #2
0
        /// <summary>
        /// Save Additional Charge
        /// </summary>
        /// <param name="additionalChargeType"></param>
        /// <returns></returns>
        public AdditionalChargeType SaveAdditionalCharge(AdditionalChargeType additionalChargeType)
        {
            AdditionalChargeType additionalChargeTypeDbVersion =
                additionalChargeTypeRepository.Find(additionalChargeType.AdditionalChargeTypeId);

            if (additionalChargeTypeDbVersion == null) //Add Case
            {
                AditionalChargeValidation(additionalChargeType.AdditionalCharges);

                additionalChargeType.IsActive            = true;
                additionalChargeType.IsDeleted           =
                    additionalChargeType.IsPrivate       = additionalChargeType.IsReadOnly = false;
                additionalChargeType.RecLastUpdatedBy    =
                    additionalChargeType.RecCreatedBy    = additionalChargeTypeRepository.LoggedInUserIdentity;
                additionalChargeType.RecCreatedDt        = additionalChargeType.RecLastUpdatedDt = DateTime.Now;
                additionalChargeType.RowVersion          = 0;
                additionalChargeType.AdditionalChargeKey = 0;
                additionalChargeType.UserDomainKey       = additionalChargeTypeRepository.UserDomainKey;

                if (additionalChargeType.AdditionalCharges != null)
                {
                    foreach (var item in additionalChargeType.AdditionalCharges)
                    {
                        item.IsActive         = true;
                        item.IsDeleted        = item.IsPrivate = item.IsReadOnly = false;
                        item.RecLastUpdatedBy = item.RecCreatedBy = additionalChargeTypeRepository.LoggedInUserIdentity;
                        item.RecCreatedDt     = item.RecLastUpdatedDt = DateTime.Now;
                        item.RowVersion       = 0;
                        item.RevisionNumber   = 0;
                        item.UserDomainKey    = additionalChargeTypeRepository.UserDomainKey;
                    }
                }
                additionalChargeTypeRepository.Add(additionalChargeType);
                additionalChargeTypeRepository.SaveChanges();
            }
            else //Update Case
            {
                additionalChargeTypeDbVersion.RecLastUpdatedBy = additionalChargeTypeRepository.LoggedInUserIdentity;
                additionalChargeTypeDbVersion.RecLastUpdatedDt = DateTime.Now;
                additionalChargeTypeDbVersion.IsEditable       = additionalChargeType.IsEditable;

                foreach (var item in additionalChargeType.AdditionalCharges)
                {
                    if (
                        additionalChargeTypeDbVersion.AdditionalCharges.All(
                            x =>
                            x.AdditionalChargeId != item.AdditionalChargeId ||
                            item.AdditionalChargeId == 0))
                    {
                        item.IsActive         = true;
                        item.IsDeleted        = item.IsPrivate = item.IsReadOnly = false;
                        item.RecLastUpdatedBy = item.RecCreatedBy = additionalChargeTypeRepository.LoggedInUserIdentity;
                        item.RecCreatedDt     = item.RecLastUpdatedDt = DateTime.Now;
                        item.RowVersion       = 0;
                        item.RevisionNumber   = 0;
                        item.UserDomainKey    = additionalChargeTypeRepository.UserDomainKey;
                        additionalChargeTypeDbVersion.AdditionalCharges.Add(item);
                    }
                    else
                    {
                        if (additionalChargeTypeDbVersion.AdditionalCharges.Any(
                                x =>
                                x.AdditionalChargeId == item.AdditionalChargeId))
                        {
                            AdditionalCharge additionalChargeDbVesion =
                                additionalChargeTypeDbVersion.AdditionalCharges.First(
                                    x => x.AdditionalChargeId == item.AdditionalChargeId);
                            if (additionalChargeDbVesion.HireGroupDetailId != item.HireGroupDetailId ||
                                additionalChargeDbVesion.StartDt != item.StartDt ||
                                additionalChargeDbVesion.AdditionalChargeRate != item.AdditionalChargeRate)
                            {
                                item.IsActive               = true;
                                item.IsDeleted              = item.IsPrivate = item.IsReadOnly = false;
                                item.RecLastUpdatedBy       =
                                    item.RecCreatedBy       = additionalChargeTypeRepository.LoggedInUserIdentity;
                                item.RecCreatedDt           = item.RecLastUpdatedDt = DateTime.Now;
                                item.RowVersion             = 0;
                                item.AdditionalChargeTypeId = additionalChargeType.AdditionalChargeTypeId;
                                item.RevisionNumber         = additionalChargeDbVesion.RevisionNumber + 1;
                                item.AdditionalChargeId     = 0;
                                item.UserDomainKey          = additionalChargeTypeRepository.UserDomainKey;
                                additionalChargeRepository.Add(item);
                                additionalChargeRepository.SaveChanges();
                                additionalChargeDbVesion.ChildAdditionalChargeId = item.AdditionalChargeId;
                            }
                        }
                    }
                }
            }



            additionalChargeTypeRepository.SaveChanges();

            return(new AdditionalChargeType
            {
                AdditionalChargeTypeId = additionalChargeType.AdditionalChargeTypeId,
                AdditionalChargeTypeCode = additionalChargeType.AdditionalChargeTypeCode,
                AdditionalChargeTypeName = additionalChargeType.AdditionalChargeTypeName,
                AdditionalChargeTypeDescription = additionalChargeType.AdditionalChargeTypeDescription,
                IsEditable = additionalChargeType.IsEditable,
            });
        }
        //public FlatDetailModel GetFlatDetails(int FlatID)
        //{
        //    REMSDBEntities context = new REMSDBEntities();
        //    var flmodel = context.Flats.Where(fl => fl.FlatID == FlatID).FirstOrDefault();
        //    Mapper.CreateMap<Flat, FlatDetailModel>();
        //    FlatDetailModel model = new FlatDetailModel();
        //    model = Mapper.Map<Flat, FlatDetailModel>(flmodel);
        //    var flor = context.Floors.Where(fl => fl.FloorID == model.FloorID).FirstOrDefault();
        //    model.FloorName = flor.FloorName;
        //    model.FloorNo = flor.FloorNo;
        //    var twr = context.Towers.Where(tw => tw.TowerID == flor.TowerID).FirstOrDefault();
        //    model.TowerID = twr.TowerID;
        //    model.TowerName = twr.TowerName;
        //    model.TowerNo = twr.TowerNo;
        //    model.Block = twr.Block;
        //    var fmodel = context.FlatPLCs.Where(pl => pl.FlatID == FlatID).ToList();
        //    List<FlatPLCModel> FlatPLCList = new List<FlatPLCModel>();
        //    foreach (FlatPLC fp in fmodel)
        //    {
        //        Mapper.CreateMap<FlatPLC, FlatPLCModel>();
        //        var fpm = Mapper.Map<FlatPLC, FlatPLCModel>(fp);
        //        fpm.PLCName = fp.PLC.PLCName;
        //        fpm.AmountSqFt = fp.PLC.AmountSqFt;
        //        fpm.TotalAmount = fp.PLC.AmountSqFt * model.FlatSize;
        //        FlatPLCList.Add(fpm);
        //    }
        //    model.FlatPLCList = FlatPLCList;
        //    var amodel = context.FlatCharges.Where(fc => fc.FlatID == FlatID).ToList();
        //    List<FlatChargeModel> FlatChargeList = new List<FlatChargeModel>();
        //    foreach (var ac in amodel)
        //    {
        //        Mapper.CreateMap<FlatCharge, FlatChargeModel>();
        //        var acmodel = Mapper.Map<FlatCharge, FlatChargeModel>(ac);
        //        acmodel.ChargeName = ac.AdditionalCharge.Name;
        //        acmodel.Amount = ac.AdditionalCharge.Amount;
        //        acmodel.ChargeType = ac.AdditionalCharge.ChargeType;
        //        if (acmodel.ChargeType == "Free")
        //        {
        //            acmodel.TotalAmount = 0;
        //        }
        //        else if (acmodel.ChargeType == "Sq. Ft.")
        //        {
        //            acmodel.TotalAmount = ac.AdditionalCharge.Amount * model.FlatSize;
        //        }
        //        else if (acmodel.ChargeType == "One Time")
        //        {
        //            acmodel.TotalAmount = ac.AdditionalCharge.Amount;
        //        }
        //        FlatChargeList.Add(acmodel);
        //    }
        //    model.FlatChargeList = FlatChargeList;
        //    return model;
        //}

        public FlatDetailModel GetFlatDetails(int FlatID)
        {
            REMSDBEntities context = new REMSDBEntities();
            var            flmodel = context.Flats.Where(fl => fl.FlatID == FlatID).FirstOrDefault();

            Mapper.CreateMap <Flat, FlatDetailModel>();
            FlatDetailModel model = new FlatDetailModel();

            model = Mapper.Map <Flat, FlatDetailModel>(flmodel);
            var flor = context.Floors.Where(fl => fl.FloorID == model.FloorID).FirstOrDefault();

            model.FloorName = flor.FloorName;
            model.FloorNo   = flor.FloorNo;
            var twr = context.Towers.Where(tw => tw.TowerID == flor.TowerID).FirstOrDefault();

            model.TowerID   = twr.TowerID;
            model.TowerName = twr.TowerName;
            model.TowerNo   = twr.TowerNo;
            model.Block     = twr.Block;
            var fmodel = context.FlatPLCs.Where(pl => pl.FlatID == FlatID).ToList();
            List <FlatPLCModel> FlatPLCList = new List <FlatPLCModel>();

            foreach (FlatPLC fp in fmodel)
            {
                Mapper.CreateMap <FlatPLC, FlatPLCModel>();
                var fpm = Mapper.Map <FlatPLC, FlatPLCModel>(fp);
                fpm.PLCName     = fp.PLC.PLCName;
                fpm.AmountSqFt  = fp.PLC.AmountSqFt;
                fpm.TotalAmount = fp.PLC.AmountSqFt * model.FlatSize;
                FlatPLCList.Add(fpm);
            }
            model.FlatPLCList = FlatPLCList;
            var amodel = context.FlatCharges.Where(fc => fc.FlatID == FlatID).ToList();
            List <FlatChargeModel> FlatChargeList = new List <FlatChargeModel>();

            foreach (var ac in amodel)
            {
                Mapper.CreateMap <FlatCharge, FlatChargeModel>();
                var acmodel = Mapper.Map <FlatCharge, FlatChargeModel>(ac);
                acmodel.ChargeName = ac.AdditionalCharge.Name;
                acmodel.Amount     = ac.AdditionalCharge.Amount;
                acmodel.ChargeType = ac.AdditionalCharge.ChargeType;
                if (acmodel.ChargeType == "Free")
                {
                    acmodel.TotalAmount = 0;
                }
                else if (acmodel.ChargeType == "Sq. Ft.")
                {
                    acmodel.TotalAmount = ac.AdditionalCharge.Amount * model.FlatSize;
                }
                else if (acmodel.ChargeType == "One Time")
                {
                    acmodel.TotalAmount = ac.AdditionalCharge.Amount;
                }
                FlatChargeList.Add(acmodel);
            }
            model.FlatPlanCharge = context.Rem_GetFlatPlanCharge(FlatID).ToList();
            model.FloorWisePlc   = context.PLCs.Where(p => p.FloorNo == model.FloorNo).ToList();
            model.FlatChargeList = FlatChargeList;
            List <AdditionalCharge> AdditionalCharge = new List <AdditionalCharge>();
            var q = context.AdditionalCharges.ToList();

            for (int i = 0; i < q.Count - 1; i++)
            {
                AdditionalCharge additionalCharge = new AdditionalCharge();
                additionalCharge.ChargeType = q[i].ChargeType;
                additionalCharge.Amount     = q[i].Amount;
                additionalCharge.Name       = q[i].Name;
                if (additionalCharge.ChargeType == "Free")
                {
                    additionalCharge.Amount = 0;
                }
                else if (additionalCharge.ChargeType == "Sq. Ft.")
                {
                    additionalCharge.Amount = q[i].Amount * model.FlatSize;
                }
                else if (additionalCharge.ChargeType == "One Time")
                {
                    additionalCharge.Amount = q[i].Amount;
                }
                AdditionalCharge.Add(additionalCharge);
            }
            model.AdditionalCharge = AdditionalCharge;
            return(model);
        }