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")); } }
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")); } }
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")); } }