Exemplo n.º 1
0
        public async Task <IActionResult> EditInvestigation(int id, [Bind("InvestigationId", "Report", "Description", "DateOfAction", "Status")] EditInvestigation updatedInvestigation)
        {
            ViewBag.status = new SelectList(statusoptions);
            try
            {
                //1. Check for incoming data integrity
                if (id != updatedInvestigation.InvestigationId)
                {
                    return(NotFound());
                }

                //2. Check if the user has access to this investigation
                Investigation existingInvestigation = _investigationRepository.GetReportByInvestigationId(id);

                if (existingInvestigation != null)
                {
                    var currentUser = await _userManager.GetUserAsync(User);

                    if (existingInvestigation.Investigator.IdNum == currentUser.IdNum)
                    {
                        //2. Validate model
                        if (ModelState.IsValid)
                        {
                            Investigation updated_Investigation = new Investigation()
                            {
                                InvestigationId = updatedInvestigation.InvestigationId,
                                Investigator    = await _userManager.GetUserAsync(User),
                                Report          = existingInvestigation.Report,
                                Description     = updatedInvestigation.Description,
                                DateOfAction    = DateTime.UtcNow
                            };

                            // Updating status of report
                            _reportRepository.UpdateStatus(existingInvestigation.Report.ReportId, updatedInvestigation.Status);

                            _investigationRepository.UpdateInvestigation(updated_Investigation);
                            return(RedirectToAction("Index"));
                        }
                        else
                        {
                            return(View(updatedInvestigation));
                        }
                    }
                    return(Unauthorized());
                }
                else
                {
                    return(RedirectToAction("Index"));
                }
            }
            catch (Exception ex)
            {
                _logger.LogError(ex.Message);
                return(View("Error"));
            }
        }
Exemplo n.º 2
0
        public async Task <IActionResult> EditInvestigation(int id)
        {
            ViewBag.status = new SelectList(statusoptions);
            try
            {
                Investigation existingInvestigation = _investigationRepository.GetReportByInvestigationId(id);

                if (existingInvestigation != null)
                {
                    var currentUser = await _userManager.GetUserAsync(User);

                    if (existingInvestigation.Investigator.IdNum == currentUser.IdNum)
                    {
                        EditInvestigation model = new EditInvestigation()
                        {
                            InvestigationId = existingInvestigation.InvestigationId,
                            Investigator    = currentUser,
                            Report          = existingInvestigation.Report,
                            Description     = existingInvestigation.Description,
                            DateOfAction    = DateTime.UtcNow,
                            Status          = existingInvestigation.Report.Status
                        };

                        return(View(model));
                    }
                    else
                    {
                        return(Unauthorized());
                    }
                }
                else
                {
                    return(RedirectToAction("Index"));
                }
            }
            catch (Exception ex)
            {
                _logger.LogError(ex.Message);
                return(View("Error"));
            }
        }
Exemplo n.º 3
0
        public async Task <IActionResult> CreateInvestigation(int id, [Bind("Report", "Description", "Status")] EditInvestigation newInvestigation)
        {
            ViewBag.status = new SelectList(statusoptions);
            try
            {
                if (ModelState.IsValid)
                {
                    Report tempReport = _reportRepository.GetReportsById(id);

                    Investigation investigation = new Investigation()
                    {
                        Investigator = await _userManager.GetUserAsync(User),
                        Report       = tempReport,
                        Description  = newInvestigation.Description,
                        DateOfAction = DateTime.UtcNow
                    };

                    // Updating status of report
                    _reportRepository.UpdateStatus(id, newInvestigation.Status);

                    _investigationRepository.CreateInvestigation(investigation);
                    _logger.LogInformation("User " + User.Identity.Name + " created an investigation");
                    Mailer(investigation.Report.Reporter);
                    return(RedirectToAction("Index"));
                }
                else
                {
                    return(View(newInvestigation));
                }
            }
            catch (Exception ex)
            {
                _logger.LogError(ex.Message);
                return(View("Error"));
            }
        }