示例#1
0
 /// <summary>
 /// Delete a Additional Driver Charge
 /// </summary>
 public void Delete(AdditionalDriverCharge additionalDriverCharge)
 {
     if (additionalDriverCharge == null || !ModelState.IsValid)
     {
         throw new HttpException((int)HttpStatusCode.BadRequest, "Invalid Request");
     }
     additionalDriverService.AdditionalDriverChargeDelete(additionalDriverService.FindById(additionalDriverCharge.AdditionalDriverChargeId));
 }
        /// <summary>
        ///  Additional Driver Charge Detail
        /// </summary>
        /// <returns></returns>
        public List <Models.AdditionalDriverCharge> Get([FromUri] AdditionalDriverCharge additionalDriverCharge)
        {
            if (!ModelState.IsValid)
            {
                throw new HttpException((int)HttpStatusCode.BadRequest, "Invalid Request");
            }
            List <AdditionalDriverCharge> result =
                additionalDriverService.GetAdditionalDriverChargeDetail(additionalDriverCharge.AdditionalDriverChargeId).ToList();

            return(result.Count > 0?result.Select(x => x.CreateFrom()).ToList():null);
        }
示例#3
0
        public AdditionalDriverChargeSearchContent Post(AdditionalDriverCharge additionalDriverCharge)
        {
            if (additionalDriverCharge == null || !ModelState.IsValid)
            {
                throw new HttpException((int)HttpStatusCode.BadRequest, "Invalid Request");
            }
            AdditionalDriverChargeSearchContent reponse =
                additionalDriverService.SaveAdditionalDriverCharge(additionalDriverCharge.CreateFrom())
                .CreateFrom();

            return(reponse);
        }
示例#4
0
        /// <summary>
        /// Add Additional Driver Charge
        /// </summary>
        /// <param name="additionalDriverCharge"></param>
        /// <returns></returns>
        public AdditionalDriverChargeSearchContent SaveAdditionalDriverCharge(AdditionalDriverCharge additionalDriverCharge)
        {
            TariffType tariffType = tariffTypeRepository.Find(long.Parse(additionalDriverCharge.TariffTypeCode));

            additionalDriverCharge.TariffTypeCode = tariffType.TariffTypeCode;
            long oldRecordId = additionalDriverCharge.AdditionalDriverChargeId;

            if (additionalDriverCharge.AdditionalDriverChargeId == 0) //Add Case
            {
                additionalDriverCharge.IsActive         = true;
                additionalDriverCharge.IsDeleted        = additionalDriverCharge.IsPrivate = additionalDriverCharge.IsReadOnly = false;
                additionalDriverCharge.RecLastUpdatedBy = additionalDriverCharge.RecCreatedBy = additionalDriverChargeRepository.LoggedInUserIdentity;
                additionalDriverCharge.RecCreatedDt     = additionalDriverCharge.RecLastUpdatedDt = DateTime.Now;
                additionalDriverCharge.RowVersion       = 0;
                additionalDriverCharge.UserDomainKey    = additionalDriverChargeRepository.UserDomainKey;
                additionalDriverChargeRepository.Add(additionalDriverCharge);
                additionalDriverChargeRepository.SaveChanges();
            }
            else //Update Case
            {
                additionalDriverCharge.IsActive                 = true;
                additionalDriverCharge.IsDeleted                = additionalDriverCharge.IsPrivate = additionalDriverCharge.IsReadOnly = false;
                additionalDriverCharge.RecLastUpdatedBy         = additionalDriverCharge.RecCreatedBy = additionalDriverChargeRepository.LoggedInUserIdentity;
                additionalDriverCharge.RecCreatedDt             = additionalDriverCharge.RecLastUpdatedDt = DateTime.Now;
                additionalDriverCharge.RevisionNumber           = additionalDriverCharge.RevisionNumber + 1;
                additionalDriverCharge.UserDomainKey            = additionalDriverChargeRepository.UserDomainKey;
                additionalDriverCharge.AdditionalDriverChargeId = 0;
                additionalDriverChargeRepository.Add(additionalDriverCharge);
                additionalDriverChargeRepository.SaveChanges();

                AdditionalDriverCharge oldAdditionalDriverChargeRecord = additionalDriverChargeRepository.Find(oldRecordId);
                oldAdditionalDriverChargeRecord.ChildAdditionalDriverChargeId = additionalDriverCharge.AdditionalDriverChargeId;
                additionalDriverChargeRepository.SaveChanges();
            }
            return(new AdditionalDriverChargeSearchContent
            {
                AdditionalDriverChargeId = additionalDriverCharge.AdditionalDriverChargeId,
                TariffTypeCode = tariffType.TariffTypeCode,
                TariffTypeCodeName = tariffType.TariffTypeCode + " - " + tariffType.TariffTypeName,
                AdditionalDriverChargeRate = additionalDriverCharge.AdditionalDriverChargeRate,
                StartDt = additionalDriverCharge.StartDt,
                CompanyCodeName = tariffType.Operation.Department.Company.CompanyCode + " - " + tariffType.Operation.Department.Company.CompanyName,
                OperationCodeName = tariffType.Operation.OperationCode + " - " + tariffType.Operation.OperationName,
                RevisionNumber = additionalDriverCharge.RevisionNumber,
                CompanyId = tariffType.Operation.Department.Company.CompanyId,
                DepartmentId = tariffType.Operation.Department.DepartmentId,
                OperationId = tariffType.Operation.OperationId,
                TariffTypeId = tariffType.TariffTypeId,
            });
        }
示例#5
0
        /// <summary>
        /// Calculate Ra Driver Charge
        /// </summary>
        public RaDriver CalculateCharge(DateTime rACreatedDate, DateTime startDtTime, DateTime endDtTime, long desigGradeId, bool isChauffer,
                                        long operationId, List <TariffType> oTariffTypeList)
        {
            PricingStrategy objPs = PricingStrategyFactory.GetPricingStrategy(rACreatedDate, startDtTime, endDtTime, operationId, oTariffTypeList);

            if (objPs == null)
            {
                throw new CaresException(Resources.RentalAgreement.RentalAgreement.TariffTypeNotDefinedForRaDriver, null);
            }

            RaDriver tmp;

            if (isChauffer)
            {
                List <ChaufferCharge> chaufferCharges = chaufferChargeRepository.
                                                        GetForRaBilling(objPs.TariffType.TariffTypeCode, Convert.ToInt64(desigGradeId), rACreatedDate).ToList();

                if (chaufferCharges.Count == 0)
                {
                    throw new CaresException(Resources.RentalAgreement.RentalAgreement.ChaufferRateNotDefinedForChauffer, null);
                }

                ChaufferCharge oChfRate = chaufferCharges[0];

                tmp = objPs.CalculateChaufferCharge(startDtTime, endDtTime, oChfRate);
            }
            else
            {
                List <AdditionalDriverCharge> additionalDriverCharges = additionalDriverChargeRepository.
                                                                        GetForRaBilling(objPs.TariffType.TariffTypeCode, rACreatedDate).ToList();

                if (additionalDriverCharges.Count == 0)
                {
                    throw new CaresException(Resources.RentalAgreement.RentalAgreement.DriverChargeNotDefined, null);
                }

                AdditionalDriverCharge oAddDrvRate = additionalDriverCharges[0];

                tmp = objPs.CalculateAddDriverCharge(startDtTime, endDtTime, oAddDrvRate);
            }

            return(tmp);
        }
示例#6
0
        public override RaDriver CalculateAddDriverCharge(DateTime StartDate, DateTime EndDate, AdditionalDriverCharge AddDrvRate)
        {
            RaDriver oRADriver = null;
            //calculate total rental duration as a time span object
            TimeSpan dtSpan = EndDate - StartDate;

            //convert rental duration to minutes for standardization
            float AddDrvDurationInMinutes = GetDurationInMinutes(dtSpan, Convert.ToInt32(TariffType.MeasurementUnitId));
            //convert tariff type FromDuration to Minute for standardization
            float TariffDurationFrom = GetDurationInMinutes(TariffType.DurationFrom, Convert.ToInt32(TariffType.MeasurementUnitId));
            //convert tariff type ToDuration to Minute for standardization
            float TariffDurationTo = GetDurationInMinutes(TariffType.DurationTo, Convert.ToInt32(TariffType.MeasurementUnitId));
            //convert tariff type GracePeriod to Minute for standardization
            float TariffGracePeriod = GetDurationInMinutes((float)TariffType.GracePeriod, Convert.ToInt32(TariffType.MeasurementUnitId));

            //set rental charge object common parameters
            oRADriver            = new RaDriver();
            oRADriver.TariffType = this.TariffType.TariffTypeCode;
            if (AddDrvDurationInMinutes >= TariffDurationFrom && AddDrvDurationInMinutes <= TariffDurationTo)
            {
                oRADriver.Rate          = AddDrvRate.AdditionalDriverChargeRate;
                oRADriver.TotalCharge   = AddDrvRate.AdditionalDriverChargeRate;
                oRADriver.ChargedDay    = dtSpan.Days;
                oRADriver.ChargedHour   = dtSpan.Hours;
                oRADriver.ChargedMinute = dtSpan.Minutes;
            }
            else
            {
                float ChargeDuration = GetDurationInMinutes(dtSpan, Convert.ToInt32(TariffType.MeasurementUnitId));
                oRADriver.TotalCharge = (float)Math.Round((ChargeDuration / TariffDurationTo) * AddDrvRate.AdditionalDriverChargeRate, base.DecimalRounding, MidpointRounding.AwayFromZero);

                oRADriver.Rate = AddDrvRate.AdditionalDriverChargeRate;
                //excess milage charge for edit case
                oRADriver.ChargedDay    = dtSpan.Days;
                oRADriver.ChargedHour   = dtSpan.Hours;
                oRADriver.ChargedMinute = dtSpan.Minutes;
            }
            return(oRADriver);
        }
示例#7
0
 public abstract RaDriver CalculateAddDriverCharge(DateTime StartDate, DateTime EndDate, AdditionalDriverCharge AddDrvRate);
示例#8
0
 /// <summary>
 /// Additional Driver Charge Delete
 /// </summary>
 /// <param name="additionalDriverCharge"></param>
 public void AdditionalDriverChargeDelete(AdditionalDriverCharge additionalDriverCharge)
 {
     additionalDriverChargeRepository.Delete(additionalDriverCharge);
     additionalDriverChargeRepository.SaveChanges();
 }