コード例 #1
0
        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);
        }
コード例 #2
0
        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");
        }
コード例 #3
0
        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);
        }
コード例 #4
0
        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);
        }
コード例 #5
0
        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()
            });
        }
コード例 #6
0
        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);
        }
コード例 #7
0
        public async Task <bool> GetIsReasonExist(string reason)
        {
            var posReason = await _repository.GetAsync <PosReason>(x => x.Reason == reason.Trim().ToLower());

            return(posReason != null);
        }
コード例 #8
0
        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);
                }
            }
        }