public async Task <IActionResult> Create([Bind("Title,Body,Number,TicketId,StaffId,OrganizationId")] Tasks task) { if (ModelState.IsValid) { task.DateCreate = DateTime.Now; var Person = await CurrentPersonAsync(); string staffName = ""; string orgName = ""; if (task.OrganizationId != null) { task.Type = 1; } if (task.OrganizationId != null) { orgName = _context.Organizations.AsNoTracking().SingleOrDefault(n => n.Id == task.OrganizationId).Name; } if (task.StaffId != null) { staffName = _context.Person.AsNoTracking().SingleOrDefault(n => n.Id == task.StaffId).Name; } var thread = new TicketThread() { TicketId = task.TicketId, DateCreate = DateTime.Now, Title = $"Поставлена задача", Body = $"Поставлена задача {task.Number} на {orgName} {staffName}", Poster = Person.Name, Type = 0 }; var person = await CurrentPersonAsync(); //if (!String.IsNullOrEmpty(person.ApiKey)) //{ // RedmineService redmine = new RedmineService(_context, person.ApiKey); // ReadmineIssue issueInfo = new ReadmineIssue(); // await redmine.CreateIssueAsync(task); // return PartialView(issueInfo); //} _context.Add(task); _context.Add(thread); await _context.SaveChangesAsync(); string[] ExceptCon = SignalrHub._connections.GetConnections(_userManager.GetUserId(HttpContext.User)).Cast <string>().ToArray(); await _contextHub.Clients.AllExcept(ExceptCon).SendAsync("ReceiveMessage", thread.Poster, thread.DateCreate.ToString("g"), $"Заявка #{thread.TicketId}: {thread.Title}"); return(RedirectToAction(nameof(Index), new { task.TicketId })); } return(PartialView(task)); }
// GET: TicketThreads/Create/Id public IActionResult Create(int Id, int Event, int Type, string table) { if (table == null) { table = "false"; } ViewBag.Event = Event; ViewBag.table = table; var thread = new TicketThread() { TicketId = Id, Type = Type }; return(PartialView(thread)); }
public async Task <IActionResult> Close(int id) { if (id == 0) { return(NotFound()); } if (ModelState.IsValid) { var taskToUpdate = await _context.Tasks.SingleOrDefaultAsync(t => t.Id == id); var Person = await CurrentPersonAsync(); taskToUpdate.Status = 1; await TryUpdateModelAsync <Tasks>(taskToUpdate, "", t => t.Result, t => t.DateClose, t => t.Status); var thread = new TicketThread() { TicketId = taskToUpdate.TicketId, DateCreate = DateTime.Now, Title = $"Закрыта задача", Body = $@"<p>Задача {taskToUpdate.Number}/{taskToUpdate.Id} выполнена {taskToUpdate.DateClose}</p> Результат выполнения: {taskToUpdate.Result} ", Poster = Person.Name, Type = 0 }; _context.Add(thread); await _context.SaveChangesAsync(); string[] ExceptCon = SignalrHub._connections.GetConnections(_userManager.GetUserId(HttpContext.User)).Cast <string>().ToArray(); await _contextHub.Clients.AllExcept(ExceptCon).SendAsync("ReceiveMessage", thread.Poster, thread.DateCreate.ToString("g"), $"Заявка #{thread.TicketId}: {thread.Title}"); return(RedirectToAction(nameof(Index), new { Ticketid = taskToUpdate.TicketId })); } return(PartialView()); }
public async Task <IActionResult> Create([Bind("Type,Body,TicketId")] TicketThread ticketThread, int Event, bool isInform, bool table) { var events = new Event(); bool isUser = false; if (HttpContext.User.IsInRole("Пользователь")) { isUser = true; } ticketThread.Title = events.GetEvent(Event); if (ModelState.IsValid) { var Person = await _context.Person.AsNoTracking().Select(t => new { t.Id, t.Name, t.AccountID }).SingleOrDefaultAsync(p => p.AccountID == _userManager.GetUserId(HttpContext.User)); var ticket = await _context.Tickets .Include(t => t.TicketThreads) .Include(t => t.Person) .Include(t => t.CoAuthors) .SingleOrDefaultAsync(t => t.Id == ticketThread.TicketId); if (events.IsStatus(Event)) { ticket.StatusId = Event; } if (Event != 2 && isUser == true) { ticket.IsAnswered = false; ticket.LastMessage = DateTime.Now; } else if (isInform == true) { ticket.IsAnswered = true; ticket.LastResponse = DateTime.Now; } ticket.DateUpdate = ticketThread.DateCreate = DateTime.Now; if (Event == 2) { ticket.Closed = DateTime.Now; } ticketThread.PersonId = Person.Id; ticketThread.Poster = Person.Name; ticketThread.IsInform = isInform; _context.TicketThreads.Add(ticketThread); await _context.SaveChangesAsync(); string[] ExceptCon = SignalrHub._connections.GetConnections(_userManager.GetUserId(HttpContext.User)).Cast <string>().ToArray(); //await _contextHub.Clients.AllExcept(ExceptCon).SendAsync("ReceiveMessage", ticketThread.Poster, ticketThread.DateCreate.ToString("g"), $"Заявка #{ticketThread.TicketId}: {ticketThread.Title}"); await _contextHub.Clients.GroupExcept("Staff", ExceptCon).SendAsync("ReceiveMessage", ticketThread.Poster, ticketThread.DateCreate.ToString("g"), $"<a href=\"/Tickets/Edit/{ticketThread.TicketId}\" data-ajax=\"true\" data-ajax-method=\"GET\" data-ajax-update=\"#cell-content\" data-ajax-mode=\"update\" title=\"Перейти\"> Заявка #{ticketThread.TicketId}</a>: {ticketThread.Title}", isUser); if (isInform) { ticketThread.Title = $"Изменения в заявке #{ticket.Id} {ticketThread.Title}"; await _emailService.SendEmailAsync(ticket.Person.Email, ticketThread.Title, ticketThread.Body, ticket.CoAuthors); } //new SignalRclient("http://"+HttpContext.Request.Host.ToUriComponent()).SendEventAsync(_userManager.GetUserId(HttpContext.User),ticketThread); if (table || Event == 4) { return(Ok("OK")); } if (Event == 2) { return(RedirectToAction("Index", "Tickets")); //If Event = close load ticket list } return(RedirectToAction("Edit", "Tickets", new { Id = ticketThread.TicketId })); } if (table) { return(new StatusCodeResult(500)); } return(PartialView(ticketThread)); }