Пример #1
0
 public RecommendationViewModel(ScreeningRequestPersonRecommendation srpr)
 {
     this.Id = srpr.Id;
     this.RequestPersonID   = srpr.RequestPerson.Id;
     this.ScreeningResultID = srpr.ScreeningResult.Id;
     this.Commentary        = srpr.Commentary;
     this.Version           = srpr.Version;
 }
Пример #2
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);
                    }
                }
            }
        }
Пример #3
0
        public ScreeningRequestPersonRecommendation SaveOrUpdateRecommendation(ScreeningRequestPersonRecommendation srpr, string username)
        {
            srpr = this.srprRepo.SaveOrUpdate(srpr);

            ScreeningRequestPersonRecommendationHistory h = new ScreeningRequestPersonRecommendationHistory();

            h.AdminUser         = this.userTasks.GetAdminUser(username);
            h.DateStatusReached = DateTime.Now;
            h.ScreeningRequestPersonRecommendation = srpr;
            h.ScreeningStatus = (srpr.Id > 0 ? this.screeningStatusRepo.Get(ScreeningStatus.UPDATED) : this.screeningStatusRepo.Get(ScreeningStatus.ADDED));
            this.srprhRepo.SaveOrUpdate(h);

            return(srpr);
        }
Пример #4
0
        public ActionResult RequestAction(ConsolidateViewModel cvm)
        {
            if (ModelState.IsValid)
            {
                // update commentary
                foreach (RecommendationViewModel rvm in cvm.Recommendations.Values)
                {
                    ScreeningRequestPersonRecommendation srpr;
                    if (rvm.Id > 0)
                    {
                        srpr = this.screeningTasks.GetRecommendation(rvm.Id);
                    }
                    else
                    {
                        srpr = new ScreeningRequestPersonRecommendation();
                    }

                    if (srpr.Version > rvm.Version)
                    {
                        ModelState.AddModelError("somekey", "Data has changed since you loaded this page.  Please reload before saving again.  Try pressing the back button to recover your edits.");
                        return(RequestAction(cvm));
                    }

                    srpr.Commentary      = rvm.Commentary;
                    srpr.Version         = rvm.Version;
                    srpr.RequestPerson   = this.requestPersonTasks.GetRequestPerson(rvm.RequestPersonID);
                    srpr.ScreeningResult = this.screeningTasks.GetScreeningResult(rvm.ScreeningResultID);
                    this.screeningTasks.SaveOrUpdateRecommendation(srpr, User.Identity.Name);
                }
                if (cvm.SendForFinalDecision)
                {
                    ViewBag.SuccessMessage = "Screening request sent for final decision.";

                    // update status
                    this.requestTasks.SaveRequestHistory(cvm.Id, this.requestTasks.GetRequestStatus(RequestStatus.NAME_SENT_FOR_FINAL_DECISION).Id, User.Identity.Name);

                    // send email notification
                    this.emailTasks.SendRequestSentForFinalDecisionEmail(User.Identity.Name, cvm.Id);

                    return(RedirectToAction("Index"));
                }
                else
                {
                    //ViewBag.SuccessMessage = "Successfully saved commentary.  Click 'Send for Final Decision' when complete.";
                    return(RedirectToAction("RequestAction", new { id = cvm.Id }));  // need to finish transaction in order to load Recommendation.Id
                }
            }
            return(RequestAction(cvm.Id));
        }
Пример #5
0
        private Workbook ConstructWorkbook()
        {
            Workbook  workBook  = new Workbook();
            Worksheet workSheet = AddWorkSheet(ref workBook);

            workSheet = AddColumnHeadings(workSheet);
            for (int i = 0; i < this.NominatedRequestPersons.Count; i++)
            {
                RequestPerson rp = this.NominatedRequestPersons[i];
                workSheet.Cells[i + 1, 0].PutValue(rp.Person.Name);
                int j = 0;
                for (j = 0; j < this.ScreeningEntities.Count; j++)
                {
                    ScreeningEntity se = this.ScreeningEntities[j];
                    ScreeningRequestPersonEntity srpe = rp.GetMostRecentScreeningRequestPersonEntity(se.ScreeningEntityName);
                    if (srpe != null)
                    {
                        workSheet.Cells[i + 1, j + 1].PutValue(srpe.ScreeningResult.ToString());
                        workSheet.Cells[i + 1, j + 1].SetStyle(GetCellStyleForResult(srpe.ScreeningResult.ToString()));
                    }
                }
                //dsrsg
                ScreeningRequestPersonRecommendation srpr = rp.GetScreeningRequestPersonRecommendation();
                if (srpr != null)
                {
                    workSheet.Cells[i + 1, j + 1].PutValue(srpr.ScreeningResult.ToString());
                    workSheet.Cells[i + 1, j + 1].SetStyle(GetCellStyleForResult(srpr.ScreeningResult.ToString()));
                }
                //the user's commentary and reason; dsrsg commentary if no screening entity
                if (!string.IsNullOrEmpty(this.UserScreeningEntityName))
                {
                    ScreeningRequestPersonEntity srpe = rp.GetMostRecentScreeningRequestPersonEntity(this.UserScreeningEntityName);
                    if (srpe != null)
                    {
                        workSheet.Cells[i + 1, j + 2].PutValue(srpe.Reason);
                        workSheet.Cells[i + 1, j + 3].PutValue(srpe.Commentary);
                    }
                }
                else
                if (srpr != null)
                {
                    workSheet.Cells[i + 1, j + 3].PutValue(srpr.Commentary);
                }
            }
            workSheet.AutoFitColumns();
            return(workBook);
        }
Пример #6
0
        public JsonNetResult Reasons()
        {
            string term = Request.QueryString["term"];

            if (!string.IsNullOrEmpty(term))
            {
                term = term.Trim();
                Regex regex = new Regex("^[0-9]+$");
                if (regex.IsMatch(term))
                {
                    int requestPersonId;
                    if (int.TryParse(term, out requestPersonId))
                    {
                        RequestPerson rp = this.requestPersonTasks.GetRequestPerson(requestPersonId);
                        if (rp != null && rp.Request != null)
                        {
                            AdminUser user = this.userTasks.GetAdminUser(User.Identity.Name);

                            // 2014-09-01 we used to check request.UserHasPermission(user) at this point, but actually there are no restrictions
                            // on access for any of the roles that have access to this action anyway, so - no check.

                            IList <object> reasons = new List <object>();

                            // conditionality participant inputs
                            foreach (ScreeningEntity se in this.screeningTasks.GetScreeningEntities())
                            {
                                ScreeningRequestPersonEntity srpe = rp.GetScreeningRequestPersonEntity(se.ScreeningEntityName);
                                if (srpe != null)
                                {
                                    reasons.Add(new
                                    {
                                        ScreeningEntity = srpe.ScreeningEntity.ToString(),
                                        Result          = srpe.ScreeningResult.ToString(),
                                        Reason          = srpe.Reason,
                                        Commentary      = srpe.Commentary
                                    });
                                }
                            }

                            // consolidation phase commentary
                            ScreeningRequestPersonRecommendation srpr = rp.GetScreeningRequestPersonRecommendation();
                            if (srpr != null)
                            {
                                reasons.Add(new
                                {
                                    ScreeningEntity = "PWG",
                                    Result          = srpr.ScreeningResult.ToString(),
                                    Commentary      = srpr.Commentary
                                });
                            }

                            // final decision commentary
                            ScreeningRequestPersonFinalDecision srpfd = rp.GetScreeningRequestPersonFinalDecision();
                            if (srpfd != null)
                            {
                                reasons.Add(new
                                {
                                    ScreeningEntity = "SMG",
                                    Result          = srpfd.ScreeningResult.ToString(),
                                    SupportStatus   = srpfd.ScreeningSupportStatus.ToString(),
                                    Commentary      = srpfd.Commentary
                                });
                            }

                            return(JsonNet(reasons));
                        }
                    }
                }
            }
            return(JsonNet(string.Empty));
        }
Пример #7
0
        public RequestPersonViewModel(RequestPerson rp)
        {
            this.Id    = rp.Id;
            this.Notes = rp.Notes;
            if (rp.Request != null)
            {
                this.RequestId   = rp.Request.Id;
                this.RequestName = rp.Request.Headline;
            }

            this.EntityResults = new List <ScreeningResultViewModel>();
            string[] entities = ScreeningEntity.GetNames(rp.Request.GetCreatedDate());
            foreach (string entity in entities)
            {
                ScreeningRequestPersonEntity srpe = rp.GetScreeningRequestPersonEntity(entity);
                if (srpe != null)
                {
                    this.EntityResults.Add(new ScreeningResultViewModel()
                    {
                        Name       = srpe.ScreeningEntity.ToString(),
                        Result     = srpe.ScreeningResult.ToString(),
                        Reason     = srpe.Reason,
                        Commentary = srpe.Commentary,
                        Date       = srpe.MostRecentHistory.DateStatusReached
                    });
                }
                else
                {
                    this.EntityResults.Add(new ScreeningResultViewModel()
                    {
                        Name = entity
                    });
                }
            }

            ScreeningRequestPersonRecommendation srpr = rp.GetScreeningRequestPersonRecommendation();

            if (srpr != null)
            {
                this.RecommendationResult = new ScreeningResultViewModel()
                {
                    Name       = "Recommended",
                    Result     = srpr.ScreeningResult.ToString(),
                    Commentary = srpr.Commentary,
                    Date       = srpr.MostRecentHistory.DateStatusReached
                }
            }
            ;

            ScreeningRequestPersonFinalDecision srpfd = rp.GetScreeningRequestPersonFinalDecision();

            if (srpfd != null)
            {
                this.FinalResult = new ScreeningResultViewModel()
                {
                    Name       = "Final Decision",
                    Result     = srpfd.ScreeningResult.ToString(),
                    Commentary = srpfd.Commentary,
                    Date       = srpfd.MostRecentHistory.DateStatusReached
                };
                this.FinalSupportStatus = srpfd.ScreeningSupportStatus.ToString();
            }
        }
    }