// GET: Checklists/Create public IActionResult Create() { var templates = _context.ChecklistTemplates .Where(x => x.IsActive) .Include(x => x.Environment) .Select(x => new SelectListItem { Text = $"{x.Environment.Name} - {x.Name}", Value = x.Id.ToString() }).ToList(); var viewModel = new CreateChecklistViewModel { Templates = templates }; return(View(viewModel)); }
public async Task <IActionResult> Create(CreateChecklistViewModel CreateChecklistModel) { if (CreateChecklistModel.ChecklistLineItems.Count > 0) { ChecklistModel Checklist = new ChecklistModel { ChecklistTitle = CreateChecklistModel.Title }; _context.Add(Checklist); _context.SaveChanges(); foreach (string ActionToDo in CreateChecklistModel.ChecklistLineItems) { ChecklistLineItemModel LineItem = new ChecklistLineItemModel { ActionToDo = ActionToDo }; _context.Add(LineItem); _context.SaveChanges(); LineItemJoinerModel LineItemJoiner = new LineItemJoinerModel { ChecklistId = Checklist.CheckListId, ChecklistLineItemId = LineItem.ChecklistLineItemId }; _context.Add(LineItemJoiner); _context.SaveChanges(); UserChecklistModel UserChecklist = new UserChecklistModel { User = await _userManager.GetUserAsync(HttpContext.User), LineItemJoinerId = LineItemJoiner.LineItemJoinerId }; _context.Add(UserChecklist); _context.SaveChanges(); } await _context.SaveChangesAsync(); return(RedirectToAction("Index", "UserChecklist")); } return(View(CreateChecklistModel)); }
public async Task <IActionResult> Create([Bind("SeletedTemplate,Name,IsActive,ScheduleFor,GitHash,Comments")] CreateChecklistViewModel viewModel) { if (!ModelState.IsValid) { var templates = _context.ChecklistTemplates .Where(x => x.IsActive) .Include(x => x.Environment) .Select(x => new SelectListItem { Text = $"{x.Environment.Name} - {x.Name}", Value = x.Id.ToString() }).ToList(); viewModel.Templates = templates; return(View(viewModel)); } var selectedTemplate = await _context.ChecklistTemplates .Include(x => x.TemplateTasks) .ThenInclude(x => x.Task) .Include(x => x.Environment) .SingleOrDefaultAsync(x => x.Id == viewModel.SeletedTemplate); if (selectedTemplate == null) { var templates = _context.ChecklistTemplates .Where(x => x.IsActive) .Include(x => x.Environment) .Select(x => new SelectListItem { Text = $"{x.Environment.Name} - {x.Name}", Value = x.Id.ToString() }).ToList(); viewModel.Templates = templates; return(View(viewModel)); } var checklistEntity = new ChecklistEntity { IsActive = viewModel.IsActive, Name = viewModel.Name, Comments = viewModel.Comments, ScheduledOn = viewModel.ScheduleFor, ScheduledBy = viewModel.ScheduleFor.HasValue ? User.Identity.Name : null, GitHash = viewModel.GitHash, Environment = selectedTemplate.Environment }; _context.Add(checklistEntity); await _context.SaveChangesAsync(); var checklistTasks = selectedTemplate.TemplateTasks .Select(x => new ChecklistTaskEntity { Id = Guid.NewGuid(), Task = x.Task, SortOrder = x.SortOrder, Checklist = checklistEntity }) .ToList(); foreach (var checklistTask in checklistTasks) { _context.ChecklistTasks.Add(checklistTask); } await _context.SaveChangesAsync(); return(RedirectToAction(nameof(Index))); }