/// <summary> /// Validate Servire Rate Main /// </summary> /// <param name="serviceRtMain"></param> /// <param name="addFlag"></param> private void ValidateServiceRt(ServiceRtMain serviceRtMain, bool addFlag) { DateTime oStartDt, serviceStartDt; oStartDt = Convert.ToDateTime(serviceRtMain.StartDt); if (addFlag) { //means new Standard Rt is being added serviceStartDt = Convert.ToDateTime(serviceRtMain.StartDt); if (serviceStartDt.Date < DateTime.Now.Date) { throw new CaresException(string.Format(CultureInfo.InvariantCulture, Resources.Tariff.ServiceRate.InvalidStartDate)); } List <ServiceRtMain> oServiceRateMain = serviceRtMainRepository.FindByTariffTypeCode(serviceRtMain.TariffTypeCode).ToList(); if (oServiceRateMain.Count > 0) { throw new CaresException(string.Format(CultureInfo.InvariantCulture, Resources.Tariff.ServiceRate.ServiceRtByTariffExist)); } } if (serviceRtMain.ServiceRts != null) { foreach (var item in serviceRtMain.ServiceRts) { serviceStartDt = Convert.ToDateTime(item.StartDt); if (serviceStartDt.Date < DateTime.Now.Date) { throw new CaresException(string.Format(CultureInfo.InvariantCulture, Resources.Tariff.ServiceRate.ServRateCurrentDateViolation)); } if (serviceStartDt.Date < oStartDt.Date) { throw new CaresException(string.Format(CultureInfo.InvariantCulture, Resources.Tariff.ServiceRate.ServRateInvalidEffectiveDate)); } } } }
/// <summary> /// Add/Edit Service Rate /// </summary> /// <param name="serviceRtMain"></param> /// <returns></returns> public ServiceRtMainContent SaveServiceRate(ServiceRtMain serviceRtMain) { TariffType tariffType = tariffTypeRepository.Find(long.Parse(serviceRtMain.TariffTypeCode)); serviceRtMain.TariffTypeCode = tariffType.TariffTypeCode; ServiceRtMain serviceRtMainDbVersion = serviceRtMainRepository.Find(serviceRtMain.ServiceRtMainId); #region Add if (serviceRtMainDbVersion == null) { ValidateServiceRt(serviceRtMain, true); serviceRtMain.UserDomainKey = serviceRtMainRepository.UserDomainKey; serviceRtMain.IsActive = true; serviceRtMain.IsDeleted = false; serviceRtMain.IsPrivate = false; serviceRtMain.IsReadOnly = false; serviceRtMain.RecCreatedDt = DateTime.Now; serviceRtMain.RecLastUpdatedDt = DateTime.Now; serviceRtMain.RecCreatedBy = serviceRtMainRepository.LoggedInUserIdentity; serviceRtMain.RecLastUpdatedBy = serviceRtMainRepository.LoggedInUserIdentity; serviceRtMain.RowVersion = 0; //set child (Service Rate in Service Rate Main) properties #region Service Rate in Service Rate Main if (serviceRtMain.ServiceRts != null) { // set properties foreach (ServiceRt item in serviceRtMain.ServiceRts) { item.IsActive = true; item.IsDeleted = false; item.IsPrivate = false; item.IsReadOnly = false; item.RecCreatedDt = DateTime.Now; item.RecLastUpdatedDt = DateTime.Now; item.RecCreatedBy = serviceRtMainRepository.LoggedInUserIdentity; item.RecLastUpdatedBy = serviceRtMainRepository.LoggedInUserIdentity; item.UserDomainKey = serviceRtMainRepository.UserDomainKey; } } #endregion serviceRtMainRepository.Add(serviceRtMain); serviceRtMainRepository.SaveChanges(); } #endregion #region Edit else { ValidateServiceRt(serviceRtMain, false); serviceRtMainDbVersion.RecLastUpdatedDt = DateTime.Now; serviceRtMainDbVersion.RecLastUpdatedBy = serviceRtMainRepository.LoggedInUserIdentity; serviceRtMainDbVersion.StartDt = serviceRtMain.StartDt; //add new Insurance Rate items if (serviceRtMain.ServiceRts != null) { foreach (ServiceRt serviceRt in serviceRtMain.ServiceRts) { if ( serviceRtMainDbVersion.ServiceRts.All( x => x.ServiceRtId != serviceRt.ServiceRtId) || serviceRt.ServiceRtId == 0) { // set properties serviceRt.IsActive = true; serviceRt.IsDeleted = false; serviceRt.IsPrivate = false; serviceRt.IsReadOnly = false; serviceRt.RecCreatedDt = DateTime.Now; serviceRt.RecLastUpdatedDt = DateTime.Now; serviceRt.RecCreatedBy = serviceRtMainRepository.LoggedInUserIdentity; serviceRt.RecLastUpdatedBy = serviceRtMainRepository.LoggedInUserIdentity; serviceRt.UserDomainKey = serviceRtMainRepository.UserDomainKey; serviceRt.ServiceRtMainId = serviceRtMain.ServiceRtMainId; serviceRtMainDbVersion.ServiceRts.Add(serviceRt); } else { serviceRt.IsActive = true; serviceRt.IsDeleted = false; serviceRt.IsPrivate = false; serviceRt.IsReadOnly = false; serviceRt.RecCreatedDt = DateTime.Now; serviceRt.RecLastUpdatedDt = DateTime.Now; serviceRt.RecCreatedBy = serviceRtMainRepository.LoggedInUserIdentity; serviceRt.RecLastUpdatedBy = serviceRtMainRepository.LoggedInUserIdentity; serviceRt.UserDomainKey = serviceRtMainRepository.UserDomainKey; serviceRt.ServiceRtMainId = serviceRtMain.ServiceRtMainId; long oldRecordId = serviceRt.ServiceRtId; serviceRt.ServiceRtId = 0; serviceRt.RevisionNumber = serviceRt.RevisionNumber + 1; serviceRtRepository.Add(serviceRt); serviceRtRepository.SaveChanges(); ServiceRt oldServiceRt = serviceRtRepository.Find(oldRecordId); oldServiceRt.ChildServiceRtId = serviceRt.ServiceRtId; serviceRtRepository.SaveChanges(); } } } } serviceRtMainRepository.SaveChanges(); #endregion return(new ServiceRtMainContent { TariffTypeCodeName = tariffType.TariffTypeCode + " - " + tariffType.TariffTypeName, TariffTypeId = tariffType.TariffTypeId, OperationId = tariffType.Operation.OperationId, OperationCodeName = tariffType.Operation.OperationCode + " - " + tariffType.Operation.OperationName, ServiceRtMainId = serviceRtMain.ServiceRtMainId, ServiceRtMainCode = serviceRtMain.ServiceRtMainCode, ServiceRtMainName = serviceRtMain.ServiceRtMainName, ServiceRtMainDescription = serviceRtMain.ServiceRtMainDescription, StartDt = serviceRtMain.StartDt }); }
/// <summary> /// Delete Service Rate /// </summary> /// <param name="serviceRtMain"></param> public void DeleteServiceRate(ServiceRtMain serviceRtMain) { serviceRtMainRepository.Delete(serviceRtMain); serviceRtMainRepository.SaveChanges(); }