public async Task <IActionResult> EditTicket(Admin.ViewModels.Ticket.EditTicketBindingModel model) { if (ModelState.IsValid) { var ticket = await service.FindTicket(model.Id); if (ticket.Priority == 0) { model.Priority = 0; } var AgentId = await service.FindUserIdByName(model.AgentId); model.AgentId = AgentId.Id; var AuthorId = await service.FindUserIdByName(model.AuthorId); model.AuthorId = AuthorId.Id; await service.EditTicket(model); return(RedirectToAction("DisplayAllSendTickets")); } IEnumerable <Models.User> userUsernameToSelect = service.UserUsernameToSelect(); IEnumerable <Models.Project> projectIdToSelect = service.ProjectIdToSelect(); //here i will get username as a value and in the post action i will find by the username the id of the user ViewBag.AgentUsername = new SelectList(userUsernameToSelect, "UserName", "UserName", model.AgentId); ViewBag.ProjectId = new SelectList(projectIdToSelect, "Id", "Id", model.ProjectId); return(View()); }
public async Task EditTicket(Admin.ViewModels.Ticket.EditTicketBindingModel model) { var ticket = await FindTicket(model.Id); if (ticket == null) { throw new NullReferenceException($"No Ticket with id:{model.Id} exist."); } ticket.AgentId = model.AgentId; ticket.IsComplete = model.IsComplete; ticket.IsDeleted = model.IsDeleted; ticket.Priority = model.Priority; ticket.Descripton = model.Description; ticket.ProjectId = model.ProjectId; if (model.WorkingTime != null) { var wt = new WorkingTime(); wt.WorkingSpan = model.WorkingTime; wt.TicketId = model.Id; await dbContext.WorkingTimes.AddAsync(wt); await dbContext.SaveChangesAsync(); } if (model.FilesToUpload != null) { foreach (var file in model.FilesToUpload) { if (file != null) { if (file.Length > 0) { var fileName = Path.GetFileName(file.FileName); var fileExtension = Path.GetExtension(fileName); var newFileName = String.Concat(Convert.ToString(Guid.NewGuid()), fileExtension); var fileToUpload = new Models.File { TicketId = model.Id }; using (var target = new MemoryStream()) { file.CopyTo(target); fileToUpload.FileUpload = target.ToArray(); } await dbContext.Files.AddAsync(fileToUpload); await dbContext.SaveChangesAsync(); } } } } dbContext.Tickets.Update(ticket); await dbContext.SaveChangesAsync(); }
public async Task <IActionResult> EditTicket(int id) { var ticket = await service.FindTicket(id); var ticketToEdit = new Admin.ViewModels.Ticket.EditTicketBindingModel(); if (ticket == null) { return(NotFound()); } //---the only fields that can be edited are AgentId,Priority,TicketId,IsAnswered,IsComplete,IsDeleted,ProjectId,UploadFiles,Descripton ticketToEdit.Id = ticket.Id; ticketToEdit.Title = ticket.Title; ticketToEdit.Description = ticket.Descripton; ticketToEdit.ProjectId = ticket.ProjectId; var authorUsername = await service.FindUserNameById(ticket.AuthorId); ticketToEdit.AuthorId = authorUsername.UserName; ticketToEdit.AgentId = ticket.AgentId; if (ticketToEdit.Priority == 0) { ticketToEdit.Priority = 0; } else { ticketToEdit.Priority = ticket.Priority; } ticketToEdit.SendOn = ticket.SendOn; //ticketToEdit.TicketId = ticket.TicketId; //ticketToEdit.IsAnswered = ticket.IsAnswered; ticketToEdit.IsComplete = ticket.IsComplete; ticketToEdit.IsDeleted = ticket.IsDeleted; IEnumerable <Models.User> userUsernameToSelect = service.UserUsernameToSelect(); IEnumerable <Models.Project> projectIdToSelect = service.ProjectIdToSelect(); //here i will get username as a value and in the post action i will find by the username the id of the user //---- ViewBag.AgentUsername = new SelectList(userUsernameToSelect, "UserName", "UserName", ticketToEdit.AgentId); ViewBag.ProjectId = new SelectList(projectIdToSelect, "Id", "Id", ticketToEdit.ProjectId); return(View(ticketToEdit)); }