private string GetEditedProperties(TicketCreateEditViewModel newValues, Ticket oldValues) { var properties = new List <string> { "Title", "Description", "DueDate", "AssignedTo", "ProjectId", "TicketPriorityId", "TicketStatusId", "TicketTypeId" }; var editedProperties = new List <string>(); foreach (var prop in properties) { var oldValue = oldValues.GetType().GetProperty(prop).GetValue(oldValues, null); var newValue = newValues.GetType().GetProperty(prop).GetValue(newValues, null); if (oldValue.ToString() != newValue.ToString()) { editedProperties.Add(prop); } } if (editedProperties.Count > 0) { var result = string.Join(", ", editedProperties); return("Edited " + result); } return(null); }
public async Task <IActionResult> Edit(int id, TicketCreateEditViewModel ticketViewModel) { var userId = _userManager.GetUserId(User); if (id != ticketViewModel.Id) { return(NotFound()); } if (ModelState.IsValid) { var ticketToUpdate = await _unitOfWork.Tickets.GetById(ticketViewModel.Id); LogEditActivity(ticketViewModel, ticketToUpdate); _mapper.Map(ticketViewModel, ticketToUpdate); ticketToUpdate.UpdatedOn = DateTime.Now; ticketToUpdate.UpdatedByUserId = userId; await _unitOfWork.Complete(); return(RedirectToAction(nameof(Index))); } PrepareCreateEditViewModel(ref ticketViewModel); return(View(ticketViewModel)); }
public IActionResult Create() { var viewModel = new TicketCreateEditViewModel(); PrepareCreateEditViewModel(ref viewModel); return(View(viewModel)); }
private void PrepareCreateEditViewModel(ref TicketCreateEditViewModel ticketCreateEditViewModel) { ticketCreateEditViewModel.AllAppUsers = _userManager.Users.ToList(); ticketCreateEditViewModel.AllProjects = _unitOfWork.Projects.GetAllSynchronously(); ticketCreateEditViewModel.AllTicketPriorities = _unitOfWork.TicketPriorities.GetAllSynchronously(); ticketCreateEditViewModel.AllTicketStatuses = _unitOfWork.TicketStatuses.GetAllSynchronously(); ticketCreateEditViewModel.AllTicketTypes = _unitOfWork.TicketTypes.GetAllSynchronously(); }
public IActionResult Create() { Product[] products = _context.Products.ToArray(); TicketCreateEditViewModel model = new TicketCreateEditViewModel() { Ticket = new Ticket(), Products = products.Select(x => new SelectListItem { Value = x.ProductId.ToString(), Text = x.Name }) }; return(View(model)); }
private void LogEditActivity(TicketCreateEditViewModel newValues, Ticket oldValues) { string editedProperties = GetEditedProperties(newValues, oldValues); if (editedProperties != null) { var activityLog = new TicketActivityLog() { ActivityDate = DateTime.Now, ActivityDescription = editedProperties, TicketId = oldValues.Id, ApplicationUserId = _userManager.GetUserId(User) }; _unitOfWork.TicketActivityLogs.Add(activityLog); } }
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) { if (id == null) { return(NotFound()); } var ticket = await _context.Tickets.Include(u => u.Owner) .Include(e => e.Employee) .Include(m => m.Product) .Include(f => f.FileDetails) .Include(p => p.Priority) .Include(s => s.Status) .SingleOrDefaultAsync(m => m.TicketId == id); Product[] products = _context.Products.ToArray(); Status[] statuses = _context.Statuses.ToArray(); Priority[] priorities = _context.Priorities.ToArray(); User[] users = _context.Users.Where(u => !String.IsNullOrEmpty(u.WorkerCardNumber) && !u.WorkerCardNumber.Equals("00-00")).ToArray(); var model = new TicketCreateEditViewModel() { Ticket = ticket, Products = products.Select(x => new SelectListItem { Value = x.ProductId.ToString(), Text = x.Name, Selected = false }), Users = users.Select(x => new SelectListItem { Value = x.Id.ToString(), Text = x.FullName, Selected = false }), Statuses = statuses.Select(x => new SelectListItem { Value = x.StatusId.ToString(), Text = x.Name, Selected = false }), Priorities = priorities.Select(x => new SelectListItem { Value = x.PriorityId.ToString(), Text = x.Name, Selected = false }) }; if (ticket == null) { return(NotFound()); } return(View(model)); }
public async Task <IActionResult> Create(TicketCreateEditViewModel ticket) { if (ModelState.IsValid) { var userId = _userManager.GetUserId(User); ticket.ApplicationUserId = userId; ticket.CreatedOn = DateTime.Now; ticket.UpdatedOn = DateTime.Now; var ticketToAdd = _mapper.Map <TicketCreateEditViewModel, Ticket>(ticket); _unitOfWork.Tickets.Add(ticketToAdd); await _unitOfWork.Complete(); return(RedirectToAction(nameof(Index))); } else { PrepareCreateEditViewModel(ref ticket); return(View(ticket)); } }
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)); }