public async Task <IActionResult> Edit(int?id) { if (id == null) { return(NotFound()); } CaseItemTemplate templ = await _context.CaseItemTemplates.SingleOrDefaultAsync(ci => ci.Id == id); templ.Options = await _context.CaseItemOptions.Where(o => o.CaseItemTemplateId == id).OrderBy(o => o.SerialNum).ToListAsync(); if (templ == null) { return(NotFound()); } CaseItemTemplateEditVM vm = new CaseItemTemplateEditVM() { ItemTemplate = templ }; var resTypes = Enum.GetValues(typeof(ResponseType)).Cast <ResponseType>().Select(v => v.ToString()); ViewData["ResponseTypeId"] = new SelectList(resTypes, templ.ResponseType.ToString()); return(View(vm)); }
public async Task <IActionResult> Delete(int?id) { if (id == null) { return(NotFound()); } CaseItemTemplate templ = await _context.CaseItemTemplates.SingleOrDefaultAsync(ci => ci.Id == id); if (templ == null) { return(NotFound()); } return(View(templ)); }
public async Task <IActionResult> Create() { CaseItemTemplate vm = new CaseItemTemplate(); // get the largest serial number int serNum = 1; if (_context.CaseItemTemplates.Count() > 0) { serNum = await _context.CaseItemTemplates.MaxAsync(ci => ci.SerialNum) + 1; } vm.SerialNum = serNum; var resTypes = Enum.GetValues(typeof(ResponseType)).Cast <ResponseType>().Select(v => v.ToString()); ViewData["ResponseTypeId"] = new SelectList(resTypes, ResponseType.ShortText.ToString()); return(View(vm)); }
public async Task <IActionResult> DeleteConfirmed(int?id) { if (id == null) { return(NotFound()); } CaseItemTemplate templ = await _context.CaseItemTemplates.SingleOrDefaultAsync(ci => ci.Id == id); if (templ == null) { return(NotFound()); } _context.CaseItemTemplates.Remove(templ); await _context.SaveChangesAsync(); return(RedirectToAction(nameof(Index)).WithSuccess("Case Item Deletion done")); }
public async Task <IActionResult> Create(CaseItemTemplate vm) { if (ModelState.IsValid) { _context.Add(vm); int numInserted = await _context.SaveChangesAsync(); if (numInserted == 1) { _logger.LogInformation("New Case Item Template created"); return(RedirectToAction(nameof(Index)).WithSuccess("New Case Item Template created")); } else { string msg = $"New Case Item Template not created as db returned num insertions as {numInserted}"; _logger.LogInformation(msg); //todo create custom exception throw new Exception(msg); } } // If we got this far, something failed, redisplay form return(View(vm)); }
public async Task <IActionResult> Edit(int id, CaseItemTemplateEditVM vm) { if (ModelState.IsValid) { CaseItemTemplate templ = await _context.CaseItemTemplates.FindAsync(id); if (templ == null) { return(NotFound()); } // update object as per user changes templ.Question = vm.ItemTemplate.Question; templ.ResponseType = vm.ItemTemplate.ResponseType; templ.SerialNum = vm.ItemTemplate.SerialNum; templ.IsResponseRequired = vm.ItemTemplate.IsResponseRequired; //templ.Options = vm.ItemTemplate.Options; try { _context.Update(templ); await _context.SaveChangesAsync(); } catch (DbUpdateConcurrencyException) { // check if the we are trying to edit was already deleted due to concurrency if (!_context.CaseItemTemplates.Any(ci => ci.Id == id)) { return(NotFound()); } else { throw; } } // create new option if not null or blank string newOpt = (vm.NewOptionText ?? "").Trim(); if (!string.IsNullOrEmpty(newOpt)) { // find the biggest serial number for this CaseItemTemplate - https://stackoverflow.com/questions/7542021/how-to-get-max-value-of-a-column-using-entity-framework int maxSerNum = 1; if (_context.CaseItemOptions.Count() > 0) { maxSerNum = _context.CaseItemOptions.Select(o => o.SerialNum).Max() + 1; } CaseItemOption opt = new CaseItemOption() { CaseItemTemplateId = id, OptionText = newOpt, SerialNum = maxSerNum }; _context.Add(opt); int numInserted = await _context.SaveChangesAsync(); if (numInserted == 1) { _logger.LogInformation("New Case Item Template Option created"); //return RedirectToAction(nameof(Index)); } else { string msg = $"New Case Item Template Option not created as db returned num insertions as {numInserted}"; _logger.LogInformation(msg); //todo create custom exception throw new Exception(msg); } } return(RedirectToAction(nameof(Index)).WithSuccess("Case Item Editing done")); } var resTypes = Enum.GetValues(typeof(ResponseType)).Cast <ResponseType>().Select(v => v.ToString()); ViewData["ResponseTypeId"] = new SelectList(resTypes, vm.ItemTemplate.ResponseType.ToString()); // If we got this far, something failed, redisplay form return(View(vm)); }
public async Task <IActionResult> Create(ReportingCaseCreateVM vm) { if (ModelState.IsValid) { // create a new case object ReportingCase newCase = new ReportingCase() { DownTime = vm.DownTime }; // add issue created by Information newCase.CreatedById = _userManager.GetUserId(User); // add case items from vm List <ReportingCaseItem> caseItems = new List <ReportingCaseItem>(); for (int caseTemplIter = 0; caseTemplIter < vm.CaseItems.Count; caseTemplIter++) { CaseItemTemplate caseItemTemplate = vm.CaseItems[caseTemplIter]; string resp = vm.Responses[caseTemplIter]; if (caseItemTemplate.ResponseType == ResponseType.ChoicesWithText) { resp = vm.ChoiceTexts[caseTemplIter] ?? resp; } ReportingCaseItem caseItem = new ReportingCaseItem() { SerialNum = caseItemTemplate.SerialNum, Question = caseItemTemplate.Question, ResponseType = caseItemTemplate.ResponseType, Response = resp }; caseItems.Add(caseItem); } newCase.CaseItems = caseItems; // Getting Attachment IFormFile attachment = vm.Attachment; // Saving attachment on Server if (attachment != null && attachment.Length > 0) { // create a new filename with timestamp string attachmentPath = $"{DateTime.Now.ToString("yyyy_MM_dd_HH_mm_ss")}_{Guid.NewGuid()}{Path.GetExtension(attachment.FileName)}"; string filePath = Path.Combine(_folderPaths.AttachmentsFolder, attachmentPath); using (var fileStream = new FileStream(filePath, FileMode.Create)) { attachment.CopyTo(fileStream); newCase.AttachmentName = attachment.FileName; newCase.AttachmentPath = attachmentPath; } } _context.Add(newCase); int numInserted = await _context.SaveChangesAsync(); if (numInserted >= 1) { _logger.LogInformation("New Case created"); // insert each concerned agency if (!string.IsNullOrWhiteSpace(vm.ConcernedAgencyId)) { string caseDetail = String.Join("<br>", newCase.CaseItems.Select(ci => $"{ci.Question} - {ci.Response}").ToArray()); foreach (string concAgId in vm.ConcernedAgencyId.Split(",")) { IdentityUser user = await _context.Users.FindAsync(concAgId); ReportingCaseConcerned concerned = new ReportingCaseConcerned() { ReportingCaseId = newCase.Id, UserId = user.Id }; _context.Add(concerned); numInserted = await _context.SaveChangesAsync(); if (numInserted == 1) { _logger.LogInformation("New Case Concerned agency created"); await _emailSender.SendEmailAsync($"{user.Email}", "New Issue alert", $"Sir/Madam,<br>You are being associated with a new issue with id <b>{newCase.Id}</b> in WRLDC issues portal." + "<br><br><b>Issue Details</b>" + $"<br>{caseDetail}" + "<br><br>For kind information please<br><br>Regards<br>IT WRLDC"); } else { string msg = $"New Case Concerned agency not created as db returned num insertions as {numInserted}"; _logger.LogInformation(msg); //todo create custom exception throw new Exception(msg); } } return(RedirectToAction(nameof(Index)).WithSuccess("New Issue created")); } } else { string msg = $"New Case not created as db returned num insertions as {numInserted}"; _logger.LogInformation(msg); //todo create custom exception throw new Exception(msg); } } return(View(vm)); }