public async Task <IActionResult> EditLabExecutionAsync(AdminLabExecution labExecutionData) { // Check input if (!ModelState.IsValid || !(labExecutionData.LabExecution.PreStart < labExecutionData.LabExecution.Start && labExecutionData.LabExecution.Start < labExecutionData.LabExecution.End)) { AddStatusMessage(_localizer["EditLabExecutionAsync:InvalidInput"], StatusMessageTypes.Error); return(await ShowEditLabExecutionFormAsync(null, null, labExecutionData)); } try { // Retrieve edited labExecution from database and apply changes var labExecution = await _labExecutionService.GetLabExecutionAsync(labExecutionData.LabExecution.GroupId, labExecutionData.LabExecution.LabId, HttpContext.RequestAborted); labExecution.PreStart = labExecutionData.LabExecution.PreStart; labExecution.Start = labExecutionData.LabExecution.Start; labExecution.End = labExecutionData.LabExecution.End; await _labExecutionService.UpdateLabExecutionAsync(labExecution, HttpContext.RequestAborted); AddStatusMessage(_localizer["EditLabExecutionAsync:Success"], StatusMessageTypes.Success); } catch (InvalidOperationException ex) { _logger.LogError(ex, "Edit lab execution"); AddStatusMessage(_localizer["EditLabExecutionAsync:UnknownError"], StatusMessageTypes.Error); return(await ShowEditLabExecutionFormAsync(null, null, labExecutionData)); } return(await RenderLabExecutionListAsync()); }
public async Task <IActionResult> ShowCreateLabExecutionForGroupFormAsync(AdminLabExecution labExecutionData = null) { // Pass lists ViewData["Labs"] = await _labService.GetLabsAsync().ToListAsync(); ViewData["Groups"] = await _userService.GetGroupsAsync().ToListAsync(); return(await RenderAsync(ViewType.CreateForGroup, labExecutionData)); }
public async Task <IActionResult> CreateLabExecutionForSlotAsync(AdminLabExecution labExecutionData) { // Check input if (!ModelState.IsValid || !await _labService.LabExistsAsync(labExecutionData.LabExecution.LabId, HttpContext.RequestAborted) || !await _slotService.SlotExistsAsync(labExecutionData.SlotId, HttpContext.RequestAborted) || !(labExecutionData.LabExecution.PreStart < labExecutionData.LabExecution.Start && labExecutionData.LabExecution.Start < labExecutionData.LabExecution.End)) { AddStatusMessage(_localizer["CreateLabExecutionForSlotAsync:InvalidInput"], StatusMessageTypes.Error); return(await ShowCreateLabExecutionForSlotFormAsync(labExecutionData)); } try { // Start lab for each of the groups foreach (var group in await _userService.GetGroupsInSlotAsync(labExecutionData.SlotId).ToListAsync()) { try { var labExecution = new LabExecution { GroupId = group.Id, LabId = labExecutionData.LabExecution.LabId, PreStart = labExecutionData.LabExecution.PreStart, Start = labExecutionData.LabExecution.Start, End = labExecutionData.LabExecution.End }; await _labExecutionService.CreateLabExecutionAsync(labExecution, labExecutionData.OverrideExisting, HttpContext.RequestAborted); } catch (Exception ex) { _logger.LogError(ex, "Create lab execution for group in slot"); AddStatusMessage(_localizer["CreateLabExecutionForSlotAsync:ErrorGroup", group.Id, group.DisplayName], StatusMessageTypes.Warning); } } AddStatusMessage(_localizer["CreateLabExecutionForSlotAsync:Success"], StatusMessageTypes.Success); } catch (Exception ex) { _logger.LogError(ex, "Create lab execution for slot"); AddStatusMessage(_localizer["CreateLabExecutionForSlotAsync:UnknownError"], StatusMessageTypes.Error); return(await ShowCreateLabExecutionForSlotFormAsync(labExecutionData)); } return(await RenderLabExecutionListAsync()); }
public async Task <IActionResult> CreateLabExecutionForGroupAsync(AdminLabExecution labExecutionData) { // Check input if (!ModelState.IsValid || !await _labService.LabExistsAsync(labExecutionData.LabExecution.LabId, HttpContext.RequestAborted) || !await _userService.GroupExistsAsync(labExecutionData.LabExecution.GroupId, HttpContext.RequestAborted) || !(labExecutionData.LabExecution.PreStart < labExecutionData.LabExecution.Start && labExecutionData.LabExecution.Start < labExecutionData.LabExecution.End)) { AddStatusMessage(_localizer["CreateLabExecutionForGroupAsync:InvalidInput"], StatusMessageTypes.Error); return(await ShowCreateLabExecutionForGroupFormAsync(labExecutionData)); } // Start lab for group try { var labExecution = new LabExecution { GroupId = labExecutionData.LabExecution.GroupId, LabId = labExecutionData.LabExecution.LabId, PreStart = labExecutionData.LabExecution.PreStart, Start = labExecutionData.LabExecution.Start, End = labExecutionData.LabExecution.End }; await _labExecutionService.CreateLabExecutionAsync(labExecution, labExecutionData.OverrideExisting, HttpContext.RequestAborted); AddStatusMessage(_localizer["CreateLabExecutionForGroupAsync:Success"], StatusMessageTypes.Success); } catch (Exception ex) { _logger.LogError(ex, "Create lab execution for group"); AddStatusMessage(_localizer["CreateLabExecutionForGroupAsync:UnknownError"], StatusMessageTypes.Error); return(await ShowCreateLabExecutionForGroupFormAsync(labExecutionData)); } return(await RenderLabExecutionListAsync()); }
private async Task <IActionResult> ShowEditLabExecutionFormAsync(int?groupId, int?labId, AdminLabExecution labExecutionData = null) { // Retrieve by ID, if no object from a failed POST was passed if (groupId != null && labId != null) { labExecutionData = new AdminLabExecution { LabExecution = await _labExecutionService.GetLabExecutionAsync(groupId.Value, labId.Value, HttpContext.RequestAborted) }; if (labExecutionData.LabExecution == null) { AddStatusMessage(_localizer["ShowEditLabExecutionFormAsync:NotFound"], StatusMessageTypes.Error); return(await RenderLabExecutionListAsync()); } } if (labExecutionData?.LabExecution == null) { AddStatusMessage(_localizer["ShowEditLabExecutionFormAsync:MissingParameter"], StatusMessageTypes.Error); return(await RenderLabExecutionListAsync()); } return(await RenderAsync(ViewType.Edit, labExecutionData)); }