Esempio n. 1
0
        public void CreateScreeningRequestPersonEntitiesForRequest(Request request, ScreeningEntity screeningEntity, string username)
        {
            if (request != null && screeningEntity != null)
            {
                ScreeningResult screeningResult = this.GetScreeningResult(ScreeningResult.PENDING);
                foreach (RequestPerson rp in request.Persons.Where(x => !x.Archive))
                {
                    // only create new ScreeningRequestPersonEntity if one doesn't already exist
                    if (rp.GetMostRecentScreeningRequestPersonEntity(screeningEntity.ScreeningEntityName) == null)
                    {
                        // persist new ScreeningRequestPersonEntity for this RequestPerson
                        ScreeningRequestPersonEntity newSrpe = new ScreeningRequestPersonEntity()
                        {
                            RequestPerson   = rp,
                            ScreeningEntity = screeningEntity,
                            ScreeningResult = screeningResult
                        };

                        // copy screening results from last known screening by this screening entity
                        ScreeningRequestPersonEntity lastSrpe = rp.Person.GetLatestScreeningEntityResponse(screeningEntity.ScreeningEntityName);
                        if (lastSrpe != null)
                        {
                            newSrpe.ScreeningResult = lastSrpe.ScreeningResult;
                            newSrpe.Reason          = lastSrpe.Reason;
                            newSrpe.Commentary      = lastSrpe.Commentary;
                        }
                        newSrpe = this.SaveOrUpdateScreeningRequestPersonEntity(newSrpe, username, ScreeningStatus.ADDED);
                    }
                }
            }
        }
        public IDictionary <ScreeningEntity, ScreeningEntityStatisticDTO> GetScreeningEntityStatistics(DateTime start, DateTime end)
        {
            IDictionary <ScreeningEntity, ScreeningEntityStatisticDTO> dtos = new Dictionary <ScreeningEntity, ScreeningEntityStatisticDTO>();

            // get all RequestPersons for given date period
            IList <RequestPerson> rps = this.requestPersonTasks.GetCompletedRequestPersons()
                                        .Where(x => x.GetScreeningRequestPersonFinalDecision().MostRecentDate >= start &&
                                               x.GetScreeningRequestPersonFinalDecision().MostRecentDate < end)
                                        .ToList();

            // count all ScreeningResults from ConditionalityGroup and FinalDecision that differed and agreed to each ScreeningEntity's results.
            foreach (ScreeningEntity entity in this.screeningTasks.GetScreeningEntities())
            {
                ScreeningEntityStatisticDTO dto = new ScreeningEntityStatisticDTO()
                {
                    ScreeningEntity = entity.ScreeningEntityName
                };
                IEnumerable <RequestPerson> theseRps = rps.Where(x => x.GetScreeningRequestPersonEntity(entity.ScreeningEntityName) != null);
                dto.TotalPersonScreenings = theseRps.Count();

                foreach (ScreeningResult result in this.screeningTasks.GetScreeningResults())
                {
                    ScreeningDifferenceDTO cgDiff = new ScreeningDifferenceDTO()
                    {
                        ScreeningResult = result.ScreeningResultName
                    };
                    ScreeningDifferenceDTO fdDiff = new ScreeningDifferenceDTO()
                    {
                        ScreeningResult = result.ScreeningResultName
                    };
                    foreach (RequestPerson rp in theseRps.Where(x => x.GetScreeningRequestPersonEntity(entity.ScreeningEntityName).ScreeningResult == result))
                    {
                        ScreeningResult entityResult = rp.GetScreeningRequestPersonEntity(entity.ScreeningEntityName).ScreeningResult;
                        if (entityResult == rp.GetScreeningRequestPersonRecommendation().ScreeningResult)
                        {
                            cgDiff.NumAgreed++;
                        }
                        else
                        {
                            cgDiff.NumDisagreed++;
                        }
                        if (entityResult == rp.GetScreeningRequestPersonFinalDecision().ScreeningResult)
                        {
                            fdDiff.NumAgreed++;
                        }
                        else
                        {
                            fdDiff.NumDisagreed++;
                        }
                    }
                    dto.ConditionalityGroupDifferences.Add(cgDiff);
                    dto.FinalDecisionDifferences.Add(fdDiff);
                }

                dtos.Add(entity, dto);
            }

            return(dtos);
        }
Esempio n. 3
0
        protected IList <ScreeningRequestPersonFinalDecision> GetFinalDecisions(ScreeningResult result)
        {
            IDictionary <string, object> criteria = new Dictionary <string, object>();

            criteria.Add("ScreeningResult", result);
            criteria.Add("Archive", false);
            return(this.srpfdRepo.FindAll(criteria));
        }
Esempio n. 4
0
        public void CreateScreeningRequestPersonFinalDecisionsForRequest(Request request, string username)
        {
            if (request != null)
            {
                ScreeningResult        screeningResult        = this.GetScreeningResult(ScreeningResult.PENDING);
                ScreeningSupportStatus screeningSupportStatus = this.GetScreeningSupportStatus(ScreeningSupportStatus.ID_PENDING);
                foreach (RequestPerson rp in request.Persons.Where(x => !x.Archive))
                {
                    // only create new ScreeningRequestPersonFinalDecision if one doesn't already exist
                    if (rp.GetScreeningRequestPersonFinalDecision() == null)
                    {
                        // persist new ScreeningRequestPersonFinalDecision for this RequestPerson
                        ScreeningRequestPersonFinalDecision finalDecision = new ScreeningRequestPersonFinalDecision()
                        {
                            RequestPerson          = rp,
                            ScreeningResult        = screeningResult,
                            ScreeningSupportStatus = screeningSupportStatus
                        };

                        // copy screening result made during recommendation/consolidation phase
                        ScreeningRequestPersonRecommendation recommendation = rp.GetScreeningRequestPersonRecommendation();
                        if (recommendation != null && recommendation.ScreeningResult != null)
                        {
                            finalDecision.ScreeningResult = recommendation.ScreeningResult;

                            // use same level screening result to pre-populate support status as well
                            switch (recommendation.ScreeningResult.Id)
                            {
                            case ScreeningResult.ID_GREEN:
                                finalDecision.ScreeningSupportStatus = this.GetScreeningSupportStatus(ScreeningSupportStatus.ID_SUPPORT_RECOMMENDED);
                                break;

                            case ScreeningResult.ID_YELLOW:
                                finalDecision.ScreeningSupportStatus = this.GetScreeningSupportStatus(ScreeningSupportStatus.ID_MONITORED_SUPPORT);
                                break;

                            case ScreeningResult.ID_RED:
                                finalDecision.ScreeningSupportStatus = this.GetScreeningSupportStatus(ScreeningSupportStatus.ID_SUPPORT_NOT_RECOMMENDED);
                                break;

                            case ScreeningResult.ID_PENDING:
                                finalDecision.ScreeningSupportStatus = this.GetScreeningSupportStatus(ScreeningSupportStatus.ID_PENDING);
                                break;
                            }
                        }
                        finalDecision = this.SaveOrUpdateFinalDecision(finalDecision, username);
                        rp.AddScreeningRequestPersonFinalDecision(finalDecision);
                    }
                }
            }
        }
        public List <object> Post(ScreeningResult screeningResult)
        {
            GoogleCredential credential;

            using (var stream = new FileStream("client_secrets.json", FileMode.Open, FileAccess.Read))
            {
                credential = GoogleCredential.FromStream(stream)
                             .CreateScoped(Scopes);
            }

            var service = new SheetsService(new BaseClientService.Initializer()
            {
                HttpClientInitializer = credential,
                ApplicationName       = ApplicationName,
            });

            /*
             * var range = $"{SheetName}!A:C";
             * var request = service.Spreadsheets.Values.Get(SpreadsheetId, range);
             *
             * var response = request.Execute();
             * var values = response.Values;
             */

            screeningResult.Date = DateTime.Now;

            var range      = $"{SheetName}!A:D";
            var valueRange = new ValueRange();

            var objectList = new List <object>()
            {
                screeningResult.Date.ToShortDateString(), screeningResult.Date.ToShortTimeString(), screeningResult.Name, screeningResult.Risk
            };

            valueRange.Values = new List <IList <object> > {
                objectList
            };

            var appendRequest = service.Spreadsheets.Values.Append(valueRange, SpreadsheetId, range);

            appendRequest.ValueInputOption = SpreadsheetsResource.ValuesResource.AppendRequest.ValueInputOptionEnum.USERENTERED;
            var appendResponse = appendRequest.Execute();

            return(objectList);
        }
Esempio n. 6
0
        public ActionResult FinalDecisions(QueryFinalDecisionViewModel vm)
        {
            ScreeningResult sr = this.screeningTasks.GetScreeningResult(vm.ScreeningResultId);

            if (sr != null)
            {
                if (vm.OrganizationId.HasValue)
                {
                    Organization org = this.orgTasks.GetOrganization(vm.OrganizationId.Value);
                    ViewData["people"] = this.screeningTasks.GetFinalDecisions(sr.ScreeningResultName, org);
                }
                else
                {
                    ViewData["people"] = this.screeningTasks.GetFinalDecisions(sr.ScreeningResultName);
                }
            }

            vm.PopulateDropDowns(this.screeningTasks.GetScreeningResults());
            return(View(vm));
        }