private static InitiateViewModel MainForm(Employee author) { using (var ctx = new SolutionsContext()) { var troubleStatuses = new List <int>() { (int)Enums.Statuses.NOT_APPROVED }; var activeStatuses = new List <int>() { (int)Enums.Statuses.ON_APPROVE, (int)Enums.Statuses.ON_PERFORM, (int)Enums.Statuses.HOLD }; var model = new InitiateViewModel() { AuthorId = author.Id, AuthorName = ActiveDirectory.GetName(author.Account), Operations = new List <Operation>(ctx.Operations), Priorities = new List <Priority>(ctx.Priorities), Resources = new List <Resource>(ctx.Resources), Testers = Employee.ByRoleRepo((int)Enums.Roles.TESTER), TroubleTickets = Ticket.AuthorRepo(troubleStatuses, author), ActiveTickets = Ticket.AuthorRepo(activeStatuses, author), ClosedTickets = Ticket.ClosedRepo(author, (int)Enums.Roles.AUTHOR) }; return(model); } }
public ActionResult AddTicket(InitiateViewModel model) { if (model.PriorityId == (int)Enums.Priorities.A) { if (model.PriorityDesc == null) { ModelState.AddModelError("PriorityDesc", "Не указано обоснование класса А"); } } if (!ModelState.IsValid) { var employee = Employee.GetEmployee(User.Identity.Name); var data = MainForm(employee); data.Solutions = model.Solutions ?? null; data.TechnicalTask = model.TechnicalTask ?? null; data.Desc = model.Desc ?? null; data.FullDesc = model.FullDesc ?? null; data.Instructions = model.Instructions ?? null; data.PriorityDesc = model.PriorityDesc ?? null; if (model.PriorityId != (int)Enums.Priorities.B) { data.PriorityId = model.PriorityId; } if (model.TesterId != 1) { data.TesterId = model.TesterId; } return(View("Index", data)); } using (var ctx = new SolutionsContext()) { var ticket = new Ticket() { AuthorId = model.AuthorId, Desc = model.Desc, FullDesc = model.FullDesc, Instructions = model.Instructions, OperationId = model.OperationId, PriorityId = model.PriorityId, ResourceId = model.ResourceId, Solutions = model.Solutions, TechnicalTask = model.TechnicalTask, Created = DateTime.Now }; if (ticket.ResourceId == (int)Enums.Resources.PRODUCTION) { ticket.TesterId = model.TesterId; ticket.StatusId = (int)Enums.Statuses.ON_APPROVE; } else if (ticket.PriorityId == (int)Enums.Priorities.A) { ticket.StatusId = (int)Enums.Statuses.ON_APPROVE; } else if (ticket.PriorityId == (int)Enums.Priorities.C) { ticket.StatusId = (int)Enums.Statuses.HOLD; } else { ticket.StatusId = (int)Enums.Statuses.ON_PERFORM; } ctx.Tickets.Add(ticket); ctx.SaveChanges(); Mail.Send(ticket); return(RedirectToAction("RequestSent")); } }