Beispiel #1
0
        /// <summary>
        /// Used to pre-populate responses for current screening requests.
        /// </summary>
        /// <param name="screeningEntityName"></param>
        /// <returns></returns>
        public virtual ScreeningRequestPersonEntity GetLatestScreeningEntityResponse(string screeningEntityName)
        {
            if (!string.IsNullOrEmpty(screeningEntityName))
            {
                //IEnumerable<RequestPerson> list = this.RequestPersons.Where(x => !x.Archive)
                //    .OrderByDescending(x => x.GetMostRecentScreeningRequestPersonEntity(screeningEntityName) != null ? x.GetMostRecentScreeningRequestPersonEntity(screeningEntityName).MostRecentHistory.DateStatusReached as DateTime? : null);
                //if (list != null && list.Any())
                //    return list.First().GetMostRecentScreeningRequestPersonEntity(screeningEntityName);
                ScreeningRequestPersonEntity mostRecent = null;
                foreach (RequestPerson rp in this.RequestPersons.Where(x => !x.Archive))
                {
                    if (mostRecent == null)
                    {
                        mostRecent = rp.GetMostRecentScreeningRequestPersonEntity(screeningEntityName);
                    }
                    else
                    {
                        ScreeningRequestPersonEntity current = rp.GetMostRecentScreeningRequestPersonEntity(screeningEntityName);
                        if (current != null && current.MostRecentHistory != null && mostRecent.MostRecentHistory != null)
                        {
                            if (current.MostRecentHistory.DateStatusReached >= mostRecent.MostRecentHistory.DateStatusReached)
                            {
                                mostRecent = current;
                            }
                        }
                    }
                }

                return(mostRecent);
            }
            return(null);
        }
Beispiel #2
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);
                    }
                }
            }
        }
Beispiel #3
0
 public ScreeningRequestPersonEntityDataTableView(ScreeningRequestPersonEntity srpe)
 {
     if (srpe != null)
     {
         if (srpe.RequestPerson != null)
         {
             if (srpe.RequestPerson.Person != null)
             {
                 this.PersonId       = srpe.RequestPerson.Person.Id;
                 this.PersonName     = srpe.RequestPerson.Person.Name;
                 this.PersonIDNumber = srpe.RequestPerson.Person.MilitaryIDNumber;
             }
             if (srpe.RequestPerson.Request != null)
             {
                 this.RequestId       = srpe.RequestPerson.Request.Id;
                 this.RequestHeadline = srpe.RequestPerson.Request.Headline;
                 if (srpe.ScreeningEntity != null)
                 {
                     this.ResponseDate = srpe.RequestPerson.Request.ResponseDate(srpe.ScreeningEntity.ScreeningEntityName);
                 }
             }
         }
         if (srpe.ScreeningResult != null)
         {
             this.ScreeningResultName = srpe.ScreeningResult.ScreeningResultName;
         }
         this.Reason     = srpe.Reason;
         this.Commentary = srpe.Commentary;
         if (srpe.MostRecentHistory != null)
         {
             this.LastModified = srpe.MostRecentHistory.DateStatusReached;
             this.User         = srpe.MostRecentHistory.AdminUser.Headline;
         }
     }
 }
Beispiel #4
0
 public void UpdateResponse(ScreeningRequestPersonEntity response)
 {
     if (this.indexWriter != null && response != null)
     {
         this.DeleteResponse(response.RequestPerson.Person.Id, response.ScreeningEntity.ScreeningEntityName);
         this.Add <ScreeningRequestPersonEntity>(response);
     }
 }
Beispiel #5
0
        public ActionResult Respond(RespondViewModel vm)
        {
            if (ModelState.IsValid)
            {
                AdminUser user = this.userTasks.GetAdminUser(User.Identity.Name);

                // update responses
                foreach (ScreeningRequestPersonEntityViewModel rvm in vm.Responses.Values)
                {
                    ScreeningRequestPersonEntity srpe;
                    if (rvm.Id > 0)
                    {
                        srpe = this.screeningTasks.GetScreeningRequestPersonEntity(rvm.Id);
                    }
                    else
                    {
                        srpe = new ScreeningRequestPersonEntity();
                        srpe.ScreeningEntity = user.GetScreeningEntity();
                    }

                    if (srpe.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(Respond(vm));
                    }

                    srpe.Reason          = rvm.Reason;
                    srpe.Commentary      = rvm.Commentary;
                    srpe.Version         = rvm.Version;
                    srpe.RequestPerson   = this.requestPersonTasks.GetRequestPerson(rvm.RequestPersonID);
                    srpe.ScreeningResult = this.screeningTasks.GetScreeningResult(rvm.ScreeningResultID);
                    this.screeningTasks.SaveOrUpdateScreeningRequestPersonEntity(srpe, User.Identity.Name, ScreeningStatus.UPDATED);
                }
                if (vm.SubmitResponse)
                {
                    ViewBag.SuccessMessage = "Screening request response complete.";

                    // save ScreeningRequestEntityResponse
                    Request request = this.requestTasks.Get(vm.Id);
                    this.screeningTasks.SetEntityResponse(request, user.GetScreeningEntity());

                    // update request history with new status
                    string newStatus = this.screeningTasks.HasAllResponses(request) ? RequestStatus.NAME_SENT_FOR_CONSOLIDATION : RequestStatus.NAME_SCREENING_IN_PROGRESS;
                    this.requestTasks.SaveRequestHistory(vm.Id, this.requestTasks.GetRequestStatus(newStatus).Id, User.Identity.Name);

                    // send email notification
                    this.emailTasks.SendRespondedToEmail(User.Identity.Name, vm.Id);

                    return(RedirectToAction("Index"));
                }
                else
                {
                    // need to start a new transaction in order to refresh srpe.Versions
                    return(RedirectToAction("Respond", new { id = vm.Id }));
                }
            }
            return(Respond(vm.Id));
        }
Beispiel #6
0
        public virtual string GetLatestColourCoding(string screeningEntityName)
        {
            ScreeningRequestPersonEntity srpe = this.GetLatestScreeningEntityResponse(screeningEntityName);

            if (srpe != null)
            {
                return(srpe.ScreeningResult.ToString());
            }
            return(string.Empty);
        }
Beispiel #7
0
        public IList <ScreeningRequestPersonEntity> SearchScreenings(string term, int screeningEntityId)
        {
            ScreeningRequestPersonEntity srpeAlias2 = null;

            return(Session.QueryOver <ScreeningRequestPersonEntity>(() => srpeAlias2)
                   .Where(() => !srpeAlias2.Archive)
                   .And(() => srpeAlias2.ScreeningEntity.Id == screeningEntityId)
                   .And(Restrictions.Disjunction()
                        .Add(Restrictions.On(() => srpeAlias2.Reason).IsInsensitiveLike("%" + term + "%"))
                        .Add(Restrictions.On(() => srpeAlias2.Commentary).IsInsensitiveLike("%" + term + "%"))
                        )
                   .List <ScreeningRequestPersonEntity>());
        }
        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);
        }
Beispiel #9
0
        public RespondViewModel(Request request, IEnumerable <ScreeningResult> srs, ScreeningEntity screeningEntity)
        {
            this.Id             = request.Id;
            this.SubmitResponse = false;
            this.Responses      = new Dictionary <int, ScreeningRequestPersonEntityViewModel>();

            if (screeningEntity != null)
            {
                foreach (RequestPerson rp in request.Persons.Where(x => !x.Archive))
                {
                    ScreeningRequestPersonEntity          srpe = rp.GetMostRecentScreeningRequestPersonEntity(screeningEntity.ScreeningEntityName);
                    ScreeningRequestPersonEntityViewModel vm   = new ScreeningRequestPersonEntityViewModel(srpe);

                    vm.PopulateDropDowns(srs);
                    this.Responses[rp.Id] = vm;
                }
            }
        }
 public ScreeningRequestPersonEntityViewModel(ScreeningRequestPersonEntity srpe)
 {
     if (srpe != null)
     {
         this.Id = srpe.Id;
         if (srpe.RequestPerson != null)
         {
             this.RequestPersonID = srpe.RequestPerson.Id;
         }
         if (srpe.ScreeningResult != null)
         {
             this.ScreeningResultID = srpe.ScreeningResult.Id;
         }
         this.Reason     = srpe.Reason;
         this.Commentary = srpe.Commentary;
         this.Version    = srpe.Version;
     }
 }
Beispiel #11
0
        public ScreeningRequestPersonEntity SaveOrUpdateScreeningRequestPersonEntity(ScreeningRequestPersonEntity srpe, string username, int screeningStatusId)
        {
            srpe.RequestPerson.AddScreeningRequestPersonEntity(srpe);
            srpe = this.srpeRepository.SaveOrUpdate(srpe);

            this.luceneTasks.UpdateResponse(srpe);

            ScreeningRequestPersonEntityHistory h = new ScreeningRequestPersonEntityHistory();

            h.AdminUser                    = this.userTasks.GetAdminUser(username);
            h.DateStatusReached            = DateTime.Now;
            h.ScreeningRequestPersonEntity = srpe;
            h.ScreeningStatus              = this.screeningStatusRepo.Get(screeningStatusId);
            srpe.AddHistory(h);
            this.srpehRepository.SaveOrUpdate(h);

            return(srpe);
        }
Beispiel #12
0
        protected override void AddNoCommit <T>(T obj)
        {
            ScreeningRequestPersonEntity response = obj as ScreeningRequestPersonEntity;

            if (response != null && !response.Archive && this.indexWriter != null)
            {
                Document doc = new Document();

                if (response.RequestPerson != null && response.RequestPerson.Person != null)
                {
                    doc.Add(new NumericField("PersonId", Field.Store.YES, true).SetIntValue(response.RequestPerson.Person.Id));
                    doc.Add(new Field("PersonName", response.RequestPerson.Person.Name, Field.Store.YES, Field.Index.NO));
                    doc.Add(new Field("LastScreeningResult", response.RequestPerson.Person.LatestScreeningSupportStatus, Field.Store.YES, Field.Index.NO));
                    if (response.RequestPerson.Person.LatestScreeningFinalDecisionDate.HasValue)
                    {
                        doc.Add(new NumericField("LastScreeningDate", Field.Store.YES, false)
                                .SetLongValue(response.RequestPerson.Person.LatestScreeningFinalDecisionDate.Value.Ticks));
                    }
                }

                if (response.ScreeningResult != null)
                {
                    doc.Add(new Field("LastColourCoding", response.ScreeningResult.ScreeningResultName, Field.Store.YES, Field.Index.NO));
                }

                if (!string.IsNullOrEmpty(response.Reason))
                {
                    doc.Add(new Field("Reason", response.Reason, Field.Store.YES, Field.Index.ANALYZED));
                }

                if (!string.IsNullOrEmpty(response.Commentary))
                {
                    doc.Add(new Field("Commentary", response.Commentary, Field.Store.YES, Field.Index.ANALYZED));
                }

                if (response.ScreeningEntity != null)
                {
                    doc.Add(new Field("ScreeningEntityName", response.ScreeningEntity.ScreeningEntityName, Field.Store.YES, Field.Index.NOT_ANALYZED));
                }

                this.indexWriter.AddDocument(doc);
            }
        }
Beispiel #13
0
        public JsonNetResult RespondSingle(ScreeningRequestPersonEntityViewModel vm)
        {
            if (ModelState.IsValid)
            {
                AdminUser user = this.userTasks.GetAdminUser(User.Identity.Name);

                ScreeningRequestPersonEntity srpe;
                if (vm.Id > 0)
                {
                    srpe = this.screeningTasks.GetScreeningRequestPersonEntity(vm.Id);
                }
                else
                {
                    srpe = new ScreeningRequestPersonEntity();
                    srpe.ScreeningEntity = user.GetScreeningEntity();
                }

                if (srpe.Version > vm.Version)
                {
                    Response.StatusCode = (int)HttpStatusCode.Forbidden;
                    string name = srpe.RequestPerson != null && srpe.RequestPerson.Person != null ? "for <strong>" + srpe.RequestPerson.Person.Name : string.Empty;
                    ModelState.AddModelError("Version", "Response " + name + " has changed since you loaded this page.  Try reloading before saving again.");
                    return(JsonNet(this.GetErrorsForJson()));
                }

                srpe.Reason          = vm.Reason;
                srpe.Commentary      = vm.Commentary;
                srpe.Version         = vm.Version;
                srpe.RequestPerson   = this.requestPersonTasks.GetRequestPerson(vm.RequestPersonID);
                srpe.ScreeningResult = this.screeningTasks.GetScreeningResult(vm.ScreeningResultID);
                this.screeningTasks.SaveOrUpdateScreeningRequestPersonEntity(srpe, User.Identity.Name, ScreeningStatus.UPDATED);

                // the page that calls this json action may need to initiate a reload, in order for the srpe.Version parameter to be up to date.
                return(JsonNet("Save successful."));
            }
            Response.StatusCode = (int)HttpStatusCode.Forbidden;
            return(JsonNet(this.GetErrorsForJson()));
        }
Beispiel #14
0
 public void AddResponse(ScreeningRequestPersonEntity response)
 {
     this.screeningResponseIndexer.Add <ScreeningRequestPersonEntity>(response);
 }
Beispiel #15
0
 public void UpdateResponse(ScreeningRequestPersonEntity response)
 {
     this.screeningResponseIndexer.UpdateResponse(response);
 }
Beispiel #16
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();
            }
        }
    }
Beispiel #17
0
 public virtual void AddScreeningRequestPersonEntity(ScreeningRequestPersonEntity srpe)
 {
     this.ScreeningRequestPersonEntities.Add(srpe);
 }
Beispiel #18
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));
        }
        /// <summary>
        /// Sets a row in the person attached
        /// </summary>
        /// <param name="row">The row that has already been added to the persons attached table</param>
        /// <param name="person">The person whose details should be added to the row</param>
        /// <returns>Pdf row object</returns>
        private Row SetPersonAttachedRow(ScreeningEntity screeningEntity, Row row, RequestPerson requestPerson)
        {
            string   personName;
            Text     text;
            Cell     cell;
            TextInfo textInfo = new TextInfo();

            row.VerticalAlignment = VerticalAlignmentType.Top;
            row.IsBroken          = false;

            //text customization for labels in request details
            textInfo.FontSize           = 12;
            textInfo.IsTrueTypeFontBold = false;
            textInfo.Alignment          = AlignmentType.Center;

            //Name Column
            personName = requestPerson.Person.Name;
            cell       = row.Cells.Add(personName.Trim(), textInfo);

            //Military ID Column
            cell = row.Cells.Add(requestPerson.Person.MilitaryIDNumber, textInfo);

            //Color
            ScreeningRequestPersonEntity srpe = requestPerson.GetMostRecentScreeningRequestPersonEntity(screeningEntity.ScreeningEntityName);
            string color = string.Empty;

            if (srpe != null)
            {
                color = srpe.ScreeningResult.ToString();
            }
            cell = row.Cells.Add();
            text = new Text(color);
            if (!string.IsNullOrEmpty(color))
            {
                //Green
                if (color.Equals(ScreeningResult.GREEN, StringComparison.OrdinalIgnoreCase))
                {
                    text.TextInfo.BackgroundColor = new Color("Green");
                    text.TextInfo.Color           = new Color("White");
                }
                //Yellow
                else if (color.Equals(ScreeningResult.YELLOW, StringComparison.OrdinalIgnoreCase))
                {
                    text.TextInfo.BackgroundColor = new Color("Yellow");
                    text.TextInfo.Color           = new Color("Black");
                }
                //Red
                else if (color.Equals(ScreeningResult.RED, StringComparison.OrdinalIgnoreCase))
                {
                    text.TextInfo.BackgroundColor = new Color("Red");
                    text.TextInfo.Color           = new Color("White");
                }
            }
            text.TextInfo.Alignment   = AlignmentType.Center;
            text.TextInfo.LineSpacing = 6;
            cell.Paragraphs.Add(text);

            //Reason
            cell = row.Cells.Add(srpe != null ? srpe.Reason : string.Empty, textInfo);

            //Commentary
            cell = row.Cells.Add(srpe != null ? srpe.Commentary : string.Empty, textInfo);

            return(row);
        }