/// <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); }
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); }
/// <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, }); }
/// <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); }
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); }
public abstract RaDriver CalculateAddDriverCharge(DateTime StartDate, DateTime EndDate, AdditionalDriverCharge AddDrvRate);
/// <summary> /// Additional Driver Charge Delete /// </summary> /// <param name="additionalDriverCharge"></param> public void AdditionalDriverChargeDelete(AdditionalDriverCharge additionalDriverCharge) { additionalDriverChargeRepository.Delete(additionalDriverCharge); additionalDriverChargeRepository.SaveChanges(); }