public async Task <IActionResult> Create(TicketCreateEditViewModel ticketModel) { var user = await GetCurrentUserAsync(); if (ticketModel.Ticket.ProductId != 0) { var ticket = ticketModel.Ticket; ticket.Product = await _context.Products.SingleOrDefaultAsync(p => p.ProductId == ticket.ProductId); ticket.StatusId = 1; ticket.Status = await _context.Statuses.SingleOrDefaultAsync(s => s.StatusId == 1); ticket.CreateDate = DateTime.Now; ticket.UpdateDate = DateTime.Now; ticket.PriorityId = 1; ticket.Priority = await _context.Priorities.SingleOrDefaultAsync(s => s.PriorityId == 1); ticket.OwnerId = user.Id; ticket.Owner = await _context.Users.SingleOrDefaultAsync(u => u.Id == ticket.OwnerId); if (ModelState.IsValid) { await _userManager.AddToRoleAsync(user, "Owner"); user.OwnerTickets.Add(ticket); _context.Tickets.Add(ticket); _context.Users.Update(user); await _context.SaveChangesAsync(); List <FileDetail> fileDetails = await FileUploadHelperExtensions.UploadFileAsync (_hostingEnvironment, _context, ticket.TicketId, Request.Form.Files); ticket.FileDetails = fileDetails; _context.Tickets.Update(ticket); await _context.SaveChangesAsync(); return(RedirectToAction(nameof(Index))); } } return(View(ticketModel)); }
public async Task <IActionResult> Edit(int id, TicketCreateEditViewModel ticketModel) { var ticket = ticketModel.Ticket; if (ticket.ProductId != 0) { if (id != ticket.TicketId) { return(NotFound()); } var oldTicket = await _context.Tickets.SingleOrDefaultAsync(t => t.TicketId == ticket.TicketId); oldTicket.Title = ticket.Title; oldTicket.Description = ticket.Description; if ((User.IsInRole("Admin") || User.IsInRole("Employee")) && (ticket.StatusId != 0 && ticket.PriorityId != 0)) { oldTicket.PriorityId = ticket.PriorityId; oldTicket.Priority = await _context.Priorities.SingleOrDefaultAsync(p => p.PriorityId == ticket.PriorityId); oldTicket.StatusId = ticket.StatusId; oldTicket.Status = await _context.Statuses.SingleOrDefaultAsync(p => p.StatusId == ticket.StatusId); } oldTicket.UpdateDate = DateTime.Now; oldTicket.Product = ticket.Product; oldTicket.Assigned = ticket.Assigned; if (User.IsInRole("Admin") && (ticket.EmployeeId != null && ticket.EmployeeId != "0")) { oldTicket.Assigned = true; oldTicket.EmployeeId = ticket.EmployeeId; oldTicket.Employee = await _context.Users.SingleOrDefaultAsync(u => u.Id == oldTicket.EmployeeId); oldTicket.Employee.EmployeeTickets.Add(oldTicket); await _userManager.AddToRoleAsync(oldTicket.Employee, "Assigned"); } else if (ticket.Assigned) { oldTicket.Assigned = true; var user = await GetCurrentUserAsync(); oldTicket.EmployeeId = user.Id; oldTicket.Employee = await _context.Users.SingleOrDefaultAsync(u => u.Id == oldTicket.EmployeeId); oldTicket.Employee.EmployeeTickets.Add(oldTicket); await _userManager.AddToRoleAsync(user, "Assigned"); } else { oldTicket.EmployeeId = null; oldTicket.Employee = null; } if (ModelState.IsValid) { try { var user = await _context.Users.SingleOrDefaultAsync(u => u.Id == oldTicket.OwnerId); var callbackUrl = Url.EmailUpdateLink(oldTicket.TicketId, Request.Scheme); await _emailSender.SendEmailUpdateAsync(user.Email, callbackUrl); List <FileDetail> fileDetails = await FileUploadHelperExtensions.UploadFileAsync (_hostingEnvironment, _context, oldTicket.TicketId, Request.Form.Files); oldTicket.FileDetails = fileDetails; _context.Update(oldTicket); await _context.SaveChangesAsync(); } catch (DbUpdateConcurrencyException) { if (!TicketExists(oldTicket.TicketId)) { return(NotFound()); } else { throw; } } return(RedirectToAction(nameof(Details), new { id = ticket.TicketId.ToString() })); } } return(View(ticketModel)); }