예제 #1
0
        public void Export(int id)
        {
            Request request       = this.requestTasks.Get(id);
            string  sortByRankStr = Request.QueryString.Get("sortByRank");

            if (request != null)
            {
                AdminUser user = this.userTasks.GetAdminUser(User.Identity.Name);
                if (user != null)
                {
                    byte[] pdf = this.pdfExportService.GetExport(request, user.GetScreeningEntity(), Convert.ToBoolean(sortByRankStr));
                    if (pdf != null)
                    {
                        string fileName = user.GetScreeningEntity() != null
                            ? request.ReferenceNumber + " response from " + user.GetScreeningEntity().ToString() + ".pdf"
                            : request.ReferenceNumber + ".pdf";
                        Response.ContentType = "application/pdf";
                        Response.AddHeader("Content-Disposition", "attachment; filename=\"" + fileName + "\"");
                        Response.OutputStream.Write(pdf, 0, pdf.Length);
                    }
                    else
                    {
                        Response.StatusCode        = (int)HttpStatusCode.InternalServerError;
                        Response.StatusDescription = "Problem creating PDF.";
                    }
                }
            }
            else
            {
                Response.StatusCode        = (int)HttpStatusCode.NotFound;
                Response.StatusDescription = "That request doesn't exist.";
            }
        }
예제 #2
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));
        }
예제 #3
0
 public ActionResult ScreeningResponseSearch(SearchViewModel vm)
 {
     if (ModelState.IsValid)
     {
         AdminUser user = this.userTasks.GetAdminUser(User.Identity.Name);
         if (user != null)
         {
             ScreeningEntity entity = user.GetScreeningEntity();
             if (entity != null)
             {
                 IList <LuceneSearchResult> results = this.luceneTasks.ScreeningResponseSearch(vm.Term, entity.ScreeningEntityName, 50);
                 ViewData["results"] = results;
                 return(View(vm));
             }
             else
             {
                 ModelState.AddModelError("ScreeningEntity", "User is not a member of any screening entity.");
             }
         }
         else
         {
             ModelState.AddModelError("User", "User does not exist.");
         }
     }
     return(ScreeningResponseSearch());
 }
예제 #4
0
        public void SendRespondedToEmail(string username, int requestId)
        {
            Request   request = this.requestTasks.Get(requestId);
            AdminUser user    = this.userTasks.GetAdminUser(username);

            if (request != null && user != null)
            {
                ScreeningEntity screeningEntity = user.GetScreeningEntity();

                string subject = "Notification - Response to Screening Request";
                string body    = "This is an automated notification. " + screeningEntity + " has responded to screening request: "
                                 + "<a href='" + APPLICATION_URL + "Screening/Consolidate/Request/" + request.Id.ToString() + "'>"
                                 + request.Headline + "</a>.<br />";

                //foreach (RequestPerson rp in request.Persons.Where(x => !x.Archive))
                //{
                //    body += "\n";
                //    body += "Name: " + rp.Person.Name + "\n";
                //    ScreeningRequestPersonEntity srpe = rp.GetScreeningRequestPersonEntity(screeningEntity.ScreeningEntityName);
                //    if (srpe != null)
                //        body += "Color: " + srpe.ScreeningResult + "\n";
                //}

                this.SendMailMessage(this.userTasks.GetUsersWithRole(AdminRole.ScreeningRequestConsolidator),
                                     this.userTasks.GetAdminUser(username),
                                     subject, body, true);
            }
        }
예제 #5
0
        public ActionResult Browse(string code)
        {
            AdminUser       user            = this.userTasks.GetAdminUser(User.Identity.Name);
            ScreeningEntity screeningEntity = user.GetScreeningEntity();

            if (!string.IsNullOrEmpty(code))
            {
                ViewBag.Code = code;
                return(View());
            }
            return(new HttpNotFoundResult());
        }
예제 #6
0
        // The following is a list of all screening responses submitted by JHRO to the ODSRSG as of 7/17/2013 5:05:03 PM.
        public ActionResult All()
        {
            AdminUser       user = this.userTasks.GetAdminUser(User.Identity.Name);
            ScreeningEntity se   = user.GetScreeningEntity();

            if (se == null)
            {
                return(new HttpNotFoundResult());
            }

            ViewBag.ScreeningEntity = se;
            return(View((from srpe in this.screeningTasks.GetScreeningResponsesByEntity(se.ScreeningEntityName) select new ScreeningRequestPersonEntityDataTableView(srpe)).ToList()));
        }
예제 #7
0
        protected string GetUserScreeningEntityName()
        {
            AdminUser user = this.userTasks.GetAdminUser(User.Identity.Name);

            if (user != null)
            {
                ScreeningEntity entity = user.GetScreeningEntity();
                if (entity != null)
                {
                    return(entity.ScreeningEntityName);
                }
            }
            return(null);
        }
예제 #8
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()));
        }
예제 #9
0
        public void ExportNominated()
        {
            IList <RequestPerson> rps  = this.requestPersonTasks.GetNominatedRequestPersons();
            AdminUser             user = this.userTasks.GetAdminUser(User.Identity.Name);

            if (rps != null && user != null)
            {
                ExcelCasesForDiscussion excel = new ExcelCasesForDiscussion(rps, this.screeningTasks.GetScreeningEntities().ToList(), user.GetScreeningEntity().ScreeningEntityName);
                if (excel != null)
                {
                    string fileName = DateTime.Now.ToString("yyyyMMdd", CultureInfo.InvariantCulture) + "_" + "CondMeetingExport.xls";
                    Response.ContentType = "application/vnd.ms-excel";
                    Response.AddHeader("Content-Disposition", "attachment; filename=\"" + fileName + "\"");
                    Response.OutputStream.Write(excel.PdfBytes, 0, excel.PdfBytes.Length);
                }
                else
                {
                    Response.StatusCode        = (int)HttpStatusCode.InternalServerError;
                    Response.StatusDescription = "Problem creating spreadsheet.";
                }
            }
            else
            {
                Response.StatusCode        = (int)HttpStatusCode.NotFound;
                Response.StatusDescription = "There are no nominated persons.";
            }
        }