public async Task <IActionResult> View(TicketRepliesParameters parameters, int id) { var user = (TokenUser)HttpContext.Items["User"]; if (parameters.Attachments != null) { parameters.Reply.Files = new List <StorageCreateParameters>(); foreach (var attachment in parameters.Attachments) { var fileBytes = new byte[] { }; if (attachment != null) { await using (var ms = new MemoryStream()) { await attachment.CopyToAsync(ms); fileBytes = ms.ToArray(); } var fileName = Path.GetFileName(attachment.FileName); parameters.Reply.Files.Add(new StorageCreateParameters { Name = Path.GetFileNameWithoutExtension(fileName), Bytes = fileBytes, Extension = Path.GetExtension(fileName) }); } } } var result = await _replyProxy.Create(user.Token, new ReplyCreateParameters { ClientId = parameters.Ticket.ClientId, StaffId = parameters.Ticket.StaffMemberId, SenderType = SenderType.Client, TicketId = id, Content = parameters.Reply.Content, Files = parameters.Reply?.Files }); if (result == null) { TempData["errorMessage"] = "There was a problem in sending your reply, please try again!"; return(View()); } _emailSender.Send(new EmailSendParameter { ToAddress = result.StaffMemberEmail, Subject = $"Ticket number {result.Id} has a new reply", Body = $"Hello {result.StaffMemberName}" + "," + $"{Environment.NewLine}" + $"Ticket {result.Id} has a new reply" + $"{Environment.NewLine}" + "Please reply to the client as soon as possible to fix the issues." }); TempData["message"] = "Your reply sent successfully!"; return(RedirectToAction("View", new { id })); }
public async Task <IActionResult> CloseTicket(TicketRepliesParameters parameters) { var user = (TokenUser)HttpContext.Items["User"]; var result = await _ticketProxy.Update(user.Token, parameters.Ticket.Id); if (result != null) { TempData["message"] = $" Your ticket id: {parameters.Ticket.Id } closed successfully"; return(RedirectToAction("Index")); } TempData["errorMessage"] = $"Something went wrong, please try again to close your ticket."; return(RedirectToAction("View", new { result.Id })); }
public async Task <IActionResult> StaffView(TicketRepliesParameters parameters, int id) { if (parameters.Attachments != null) { parameters.Reply.Files = new List <StorageCreateParameters>(); foreach (var attachment in parameters.Attachments) { byte[] fileBytes; if (attachment == null) { continue; } await using (var ms = new MemoryStream()) { await attachment.CopyToAsync(ms); fileBytes = ms.ToArray(); } var fileName = Path.GetFileName(attachment.FileName); parameters.Reply.Files.Add(new StorageCreateParameters { Name = Path.GetFileNameWithoutExtension(fileName), Bytes = fileBytes, Extension = Path.GetExtension(fileName) }); } } await _replyProxy.Create(new ReplyCreateParameters { ClientId = parameters.Ticket.ClientId, StaffId = parameters.Ticket.StaffMemberId, SenderType = SenderType.StaffMember, TicketId = id, Content = parameters.Reply.Content, Files = parameters.Reply.Files }); TempData["message"] = $" Your reply is sent successfully "; return(RedirectToAction("StaffView", new { id })); }