public async Task <bool> SendMessageUpdate(PostMessageUpdateRequest request) { string message = request.Message; int admUserId = request.AdmUserId; int admSiteId = request.AdmSiteId; AdmMessage admMessage = _autoMapper.Map <AdmMessage>(request); admMessage.MessageDate = _repository.GetSchoolNow(admSiteId); foreach (var id in request.UserIDs) { AdmUser admUser = await _repository.GetAsync <AdmUser>(u => u.AdmUserID == id); admMessage.Recipients.Add(admUser); } bool isForwarded = request.ActionType.Equals("forwarded"); admMessage.AdmMessagesDetails.Add(new AdmMessagesDetail { AdmMessageID = admMessage.AdmMessageID, SentByAdmUserID = admUserId, MesageText = message.Trim(), MessageDate = _repository.GetSchoolNow(admSiteId), IsForwarded = isForwarded }); await _repository.CreateAsync <AdmMessage>(admMessage); return(true); }
public async Task <int> SaveCEPClaimRates(PutCEPClaimRatesRequest cepClaimRatesRequest) { AccCEPRates claimPct; switch (cepClaimRatesRequest.CepOption) { case 1: claimPct = await _repository.GetAsync <AccCEPRates>(w => w.AdmSiteID == cepClaimRatesRequest.AdmSiteId); break; case 2: claimPct = await _repository.GetAsync <AccCEPRates>(w => w.AdmSchoolGroupID == cepClaimRatesRequest.AdmSiteId); break; default: claimPct = await _repository.GetAsync <AccCEPRates>(w => w.AdmSchoolGroupID == null && w.AdmSiteID == null); break; } if (claimPct != null) { claimPct.CEPFreeRate = cepClaimRatesRequest.CepFreeRate; claimPct.CEPFullPayRate = cepClaimRatesRequest.CepFullPayRate; var updated = await _repository.UpdateAsync(claimPct); return(updated.AccCEPRateID); } Debug.WriteLine($"AccCEPRates not found in database. CepOption - {cepClaimRatesRequest.CepOption}, AdmSiteId - {cepClaimRatesRequest.AdmSiteId}", nameof(GetAdmSitesCEPClaimingPercent)); throw new ApplicationException("AccCEPRates not found in database"); }
public async Task <GetAdmSchoolGroupResponse> GetAdmSchoolGroup(int id) { var admSchoolGroup = await _repository.FindAsync <AdmSchoolGroup>(id); var admGlobalOption = await _repository.GetAsync <AdmGlobalOption>(x => true); //should be only one var result = _autoMapper.Map <GetAdmSchoolGroupResponse>(admSchoolGroup); result.ShowCEP = admGlobalOption.CEPSchoolOption == CEPSchoolOption.SchoolGroups; return(result); }
public async Task <List <int> > SaveAccP2Rates(IEnumerable <AccP2RateSaveModel> requestItems) { var idCollection = new List <int>(); foreach (var accP2RateSaveModel in requestItems) { if (accP2RateSaveModel.IsBreakfastOnly) { accP2RateSaveModel.LUFreeRate = 0; accP2RateSaveModel.LUReducedRate = 0; accP2RateSaveModel.LUFullPayRate = 0; } var admOptions = await _repository.GetAsync <AdmSitesOption>(x => x.AdmSiteID == accP2RateSaveModel.AdmSiteID); var accP2Rate = await _repository.FindAsync <AccP2Rates>(accP2RateSaveModel.AccP2RateID) ?? new AccP2Rates(); accP2Rate = _autoMapper.Map(accP2RateSaveModel, accP2Rate); //audit fields CreatedBy, ModifiedDate etc. should be set in a generic place, not each place we use repo for create/update if (accP2RateSaveModel.AccP2RateID == 0) { accP2Rate.EffectiveDate = DateTime.Parse($"7/1/{admOptions?.BaseYearStart ?? DateTime.Now.Year}"); await _repository.CreateAsync(accP2Rate); } else { await _repository.UpdateAsync(accP2Rate); } idCollection.Add(accP2Rate.AccP2RateID); } return(idCollection); }
private async Task <GetYearEndProcessSetUpOptionsResponse> MapFromAdmSitesOption(int admSiteId) { var site = await _repository.GetAsync <AdmSite>(s => s.IsDistrict); var today = _repository.GetSchoolNow(admSiteId); int currentSchoolYear = today.Year; return(new GetYearEndProcessSetUpOptionsResponse { OptionsForTheYear = currentSchoolYear, DefaultStartAltDate = site.AdmSitesOption.SchoolAltStartDate.ToUsDateString(), DefaultStartDate = site.AdmSitesOption.SchoolStartDate.ToUsDateString(), DefaultEndDate = site.AdmSitesOption.SchoolEndDate.ToUsDateString(), DefaultTempStatusExpDate = site.AdmSitesOption.SchoolTempStatusExpDate.ToUsDateString() }); }
public async Task <GetIntegrationJobDetailsResponse> GetIntegrationJobDetails(GetIntegrationJobDetailsRequest request) { GetIntegrationJobDetailsResponse model; AdmIntegrationJob job = null; switch (request.JobId) { case 0: // find first var view = await _repository.GetAsync <AppView>(v => v.AppObjectID == "Integration" && v.ViewName == "Index"); if (view != null) { var pref = (await _repository.GetListAsync <AppViewsAdmUsersPreference>(p => p.AdmUserID == request.CurrentAdmUserId && p.AppViewID == view.AppViewID)) .FirstOrDefault(); if (pref?.LastViewedID != null) { request.JobId = pref.LastViewedID.Value; } } if (request.JobId != 0) { job = (await _repository.GetListAsync <AdmIntegrationJob>(j => j.AdmIntegrationJobID == request.JobId && !j.IsDeleted)) .FirstOrDefault(); } if (job == null) { job = (await _repository.GetListAsync <AdmIntegrationJob>()) .OrderBy(o => o.Name) .FirstOrDefault(o => !o.IsDeleted); } break; case -1: //new one break; default: job = await _repository.FindAsync <AdmIntegrationJob>(request.JobId); await SaveUserLastViewed(request.JobId, request.CurrentAdmUserId); break; } if (job == null) { model = new GetIntegrationJobDetailsResponse() { JobName = "", JobDescription = "", TaskModel = new AdmScheduledTaskItem(), IsImport = request.IsImport.HasValue && request.IsImport.Value, MapType = (int)GetMapType(request.MapTypeName), GradeSchoolChangeThreshhold = 10, CNIPsVendorNumber = "", CNIPsCDSNumber = "", CNIPsLicenseNumber = "", CNIPsSponsor = "", CNIPsID = "" }; } else { model = _autoMapper.Map <GetIntegrationJobDetailsResponse>(job); model.JobName = job.Name; model.JobDescription = job.Description; model.IsImport = job.AdmIntegrationMap.IsImport; model.JobCriteriaColumns = BuildJobCriteriaColumns(job); // krp 2do - does this work? without recalling the db to populate the AdmIntegrationMap model.MapType = job.AdmIntegrationMap.MapType; // GetImportType(job.AdmIntegrationMapID) model = await UpdateModelWithCniPs(model); model.TaskModel = new AdmScheduledTaskItem(); var sched = await _repository.GetAsync <AdmScheduledTask>(t => t.AdmIntegrationJobID == job.AdmIntegrationJobID); if (sched != null) { model.TaskModel = _autoMapper.Map <AdmScheduledTaskItem>(sched); if (sched.StartTime.HasValue) { model.TaskModel.StartTime = new DateTime(((TimeSpan)sched.StartTime).Ticks); } } } var integrationMaps = await _repository.GetListAsync <AdmIntegrationMap>(q => q.MapType == model.MapType && q.IsImport == model.IsImport); model.Maps = _autoMapper.Map <Collection <IntegrationMapItem> >(integrationMaps); if (model.Maps.Count == 0 && model.AdmIntegrationMapID == 0 && (model.MapType == (int)IntegrationMapType.Gordon_Foods_Order_Export) || (model.MapType == (int)IntegrationMapType.CNIPs)) { var map = await GetNewMap(model.MapType); model.Maps.Add(_autoMapper.Map <IntegrationMapItem>(map)); } return(model); }
public async Task <bool> GetIsReasonExist(string reason) { var posReason = await _repository.GetAsync <PosReason>(x => x.Reason == reason.Trim().ToLower()); return(posReason != null); }
public async Task SaveSchoolsInformation(PutSchoolsInformationRequest model) { var validations = await ValidateSchoolData(model); if (!validations.Any()) { if (model.AdmSiteId != 0) { var site = await _repo.FindAsync <AdmSite>(model.AdmSiteId); site.SiteID = model.SiteId; site.SiteDescription = model.SiteDescription; site.AdmManagementLevelID = model.AdmManagementLevelId; site.ParentAdmSiteID = model.ParentAdmSiteId; site.InvSiteTypeID = model.InvSiteTypeId; site.State = model.State; site.IsDistrict = model.IsDistrict; site.IsActive = model.IsActive; site.MenAgeGroupID = model.MenAgeGroupID; site.Address1 = model.Address1; site.Address2 = model.Address2; site.City = model.City; site.ZipCode = model.ZipCode; site.SchoolPhoneNumber = model.SchoolPhoneNumber; site.PrincipalPhoneNumber = model.ManagerPhoneNumber; site.PrincipalName = model.ManagerName; site.PrincipalEmail = model.ManagerEmail; if (string.IsNullOrWhiteSpace(model.AccLockoutDate)) { DateTime schoolStartDate = model.Calendar.SchoolStartDate.ParseUsDate() ?? DateTime.MinValue; site.AccLockoutDate = schoolStartDate; } else { site.AccLockoutDate = model.AccLockoutDate.ParseUsDate(); } // Create or Update the Site Options if (site.AdmSitesOption == null) { var options = new AdmSitesOption { AdmSiteID = model.AdmSiteId, SchoolStartDate = model.Calendar.SchoolStartDate.ParseUsDate(), IsYearRoundSchool = model.Calendar.IsYearRoundSchool }; site.AdmSitesOption = options; } else { site.AdmSitesOption.SchoolStartDate = model.Calendar.SchoolStartDate.ParseUsDate(); site.AdmSitesOption.IsYearRoundSchool = model.Calendar.IsYearRoundSchool; if (model.Calendar.IsYearRoundSchool == false) { site.AdmSitesOption.SchoolAltStartDate = null; site.AdmSitesOption.SchoolTempStatusExpDate = null; site.AdmSitesOption.SchoolStartDate = model.Calendar.SchoolStartDate.ParseUsDate(); } } //PMM 9/21/15 site.AdmSitesOption.IsClaimChildSitesSeparately = model.SiteOptions.IsClaimChildSitesSeparately; site.AdmSitesOption.IsRefundAllowed = model.SiteOptions.IsRefundAllowed; site.AdmSitesOption.SiteAttendanceFactor = model.SiteOptions.SiteAttendanceFactor; site.AdmSitesOption.IsCEP = model.SiteOptions.IsCEP; site.AdmSitesOption.IsDontInactivateMissingStudent = model.SiteOptions.IsDontInactivateMissingStudent; site.AdmSitesOption.IsSevereNeed = model.SiteOptions.IsSevereNeed; //AMH SLN-3147 Provision 2 settings site.AdmSitesOption.IsProvisionSite = model.SiteOptions.IsProvisionSite; site.AdmSitesOption.BaseYearStart = model.SiteOptions.BaseYearStart; site.AdmSitesOption.BaseYearEnrollment = model.SiteOptions.BaseYearEnrollment; site.AdmSitesOption.BaseYearFree = model.SiteOptions.BaseYearFree; site.AdmSitesOption.BaseYearReduced = model.SiteOptions.BaseYearReduced; //time zone await SaveCentralOfficeTimeZone(model.COTimeZoneName); site.AdmSitesOption.TimeZoneName = model.TimeZoneName; //AMH S-03093 if CW, create InvVendor for the CW if (site.AdmSitesOption.IsWarehouse) { InvVendors cwVendor = await _repo.GetAsync <InvVendors>(v => v.AdmSiteID == model.AdmSiteId); cwVendor.Name = site.SiteDescription; cwVendor.Active = site.IsActive; cwVendor.VendorNumber = site.SiteID; cwVendor.Address = site.Address1; cwVendor.Address2 = site.Address2; cwVendor.City = site.City; cwVendor.State = site.State; cwVendor.ZipCode = site.ZipCode; cwVendor.PhoneNumber = site.PrincipalPhoneNumber; cwVendor.Email = site.PrincipalEmail; await _repo.UpdateAsync <InvVendors>(cwVendor); } // Create or Update the Site PIN Configuration AdmSitesPINConfiguration pinConfig = site.AdmSitesPINConfiguration; if (pinConfig == null) { pinConfig = new AdmSitesPINConfiguration { AdmSiteID = model.AdmSiteId }; } pinConfig.PINLength = model.PinConfiguration.PINLength; pinConfig.PadPINWithZeros = model.PinConfiguration.PadPINWithZeros; pinConfig.StudentRandomlyGeneratePIN = model.PinConfiguration.StudentRandomlyGeneratePIN; pinConfig.StudentIsLeftOfID = model.PinConfiguration.StudentIsLeftOfId; pinConfig.StudentLeftOfID = model.PinConfiguration.StudentLeftOfId; pinConfig.StudentRightOfID = model.PinConfiguration.StudentRightOfId; pinConfig.StudentAppendToPIN = model.PinConfiguration.StudentAppendToPIN; pinConfig.StudentPreventLeadingZeros = model.PinConfiguration.StudentPreventLeadingZeros; pinConfig.StudentAppendPosition = model.PinConfiguration.StudentAppendPosition; pinConfig.StudentAppendText = model.PinConfiguration.StudentAppendText; pinConfig.UseAdultSettings = model.PinConfiguration.UseAdultSettings; if (model.PinConfiguration.UseAdultSettings) { pinConfig.AdultRandomlyGeneratePIN = model.PinConfiguration.StudentRandomlyGeneratePIN; pinConfig.AdultIsLeftOfID = model.PinConfiguration.StudentIsLeftOfId; pinConfig.AdultLeftOfID = model.PinConfiguration.StudentLeftOfId; pinConfig.AdultRightOfID = model.PinConfiguration.StudentRightOfId; pinConfig.AdultAppendToPIN = model.PinConfiguration.StudentAppendToPIN; pinConfig.AdultPreventLeadingZeros = model.PinConfiguration.StudentPreventLeadingZeros; pinConfig.AdultAppendPosition = model.PinConfiguration.StudentAppendPosition; pinConfig.AdultAppendText = model.PinConfiguration.StudentAppendText; } else { pinConfig.AdultRandomlyGeneratePIN = model.PinConfiguration.AdultRandomlyGeneratePIN; pinConfig.AdultIsLeftOfID = model.PinConfiguration.AdultIsLeftOfId; pinConfig.AdultLeftOfID = model.PinConfiguration.AdultLeftOfId; pinConfig.AdultRightOfID = model.PinConfiguration.AdultRightOfId; pinConfig.AdultAppendToPIN = model.PinConfiguration.AdultAppendToPIN; pinConfig.AdultPreventLeadingZeros = model.PinConfiguration.AdultPreventLeadingZeros; pinConfig.AdultAppendPosition = model.PinConfiguration.AdultAppendPosition; pinConfig.AdultAppendText = model.PinConfiguration.AdultAppendText; } site.AdmSitesPINConfiguration = pinConfig; if (model.Terminals != null) //terminals collection deserialized in the validate method { foreach (var term in model.Terminals) { if (term.IsDeleted) { _repo.MarkForDeletion(term); } else { PosTerminal terminal; if (term.PosTerminalId == 0) { terminal = new PosTerminal(); site.PosTerminals.Add(terminal); } else { terminal = site.PosTerminals.FirstOrDefault(t => t.PosTerminalID == term.PosTerminalId); } if (terminal != null) { terminal.MachineName = term.MachineName.Trim(); terminal.TerminalNumber = term.TerminalNumber; terminal.IsAutoSale = term.IsAutoSale; terminal.IsActive = term.IsActive; } } } } site.AdmSitesServePOS.Clear(); model.ServingSites.ForEach(s => site.AdmSitesServePOS.Add(new AdmSitesServePOS() { AdmSiteID = s.AdmSiteId, OtherAdmSiteID = s.OtherAdmSiteId })); // set the customer number site.CustomerNumber = model.CustomerNumber; await _repo.UpdateAsync <AdmSite>(site); } } if (model.SiteOptions.IsCEP) { var admGlobalOptions = (await _repo.GetListAsync <AdmGlobalOption>()).FirstOrDefault(); var claimOption = -1; if (admGlobalOptions != null && (CEPSchoolOption.District == admGlobalOptions.CEPSchoolOption && model.IsDistrict)) { claimOption = 0; } else if (admGlobalOptions != null && ((CEPSchoolOption.Schools == admGlobalOptions.CEPSchoolOption || CEPSchoolOption.SchoolGroups == admGlobalOptions.CEPSchoolOption) && model.IsDistrict == false)) { claimOption = 1; } if (claimOption != -1) { await PopulateAccCEPRates(claimOption, model.AdmSiteId, 0); } } else if (model.SiteOptions.IsProvisionSite) { var userInfo = await _repo.FindAsync <AdmUser>(model.AdmUserId); var createdBy = userInfo.FirstName + " " + userInfo.LastName; var exists = (await _repo.GetListAsync <AccP2Rates>(w => w.AdmSiteID == model.AdmSiteId)).Any(); if (exists == false) { var baseYear = "7/1/" + model.SiteOptions.BaseYearStart; AccP2Rates claimPct = new AccP2Rates { AdmSiteID = model.AdmSiteId, IsBreakfastOnly = false, BRFreeRate = 0, BRReducedRate = 0, BRFullPayRate = 0, LUFreeRate = 0, LUReducedRate = 0, LUFullPayRate = 0, EffectiveDate = DateTime.Parse(baseYear), CreatedDateTime = DateTime.Now, CreatedBy = createdBy, LastModifiedDateTime = DateTime.Now, LastModifiedBy = createdBy }; await _repo.CreateAsync <AccP2Rates>(claimPct); } } }