public async Task <IActionResult> ValidatePUD() { var user_helper = await userManager.GetUserAsync(HttpContext.User); var all_user = await _context.Users.Include(i => i.PUDAllocations).ToListAsync(); var user = all_user.Find(i => i.Id == user_helper.Id); bool uncheckPUDExist = false; if (user.PUDAllocations != null) { foreach (var alloc in user.PUDAllocations) { uncheckPUDExist = true; break; } } if (user.PUDAllocations == null || user.PUDAllocations.Count == 0 || !uncheckPUDExist) { user.PUDAllocations = new List <PUDAllocation>(); } else { var all_allocation = await _context.PUDAllocations.Include(i => i.PUD).Include(i => i.Validation).ToListAsync(); var all_valid = await _context.Validations.Include(i => i.CriteriaList).ToListAsync(); var all_pud = await _context.PUDs.Include(i => i.EduProgram).Include(i => i.Department).Include(i => i.InspectionPUDResults).ToListAsync(); var all_pudResults = await _context.InspectionPUDResults.Include(i => i.CheckResults).ToListAsync(); var all_critResults = await _context.CheckResults.ToListAsync(); var all_crit = await _context.CheckVsCriterias.Include(i => i.Criteria).ToListAsync(); } ValidatePUDViewModel viewModel = new ValidatePUDViewModel();; foreach (var allocation in user.PUDAllocations) { if (!allocation.Checked && allocation.Validation != null && !allocation.Validation.Closed && allocation.Validation.CurrentIteration == allocation.Iteration) { viewModel = new ValidatePUDViewModel() { UserId = user.Id, ValidationID = allocation.Validation.Id, CurrentIteration = allocation.Validation.CurrentIteration, PUDId = allocation.PUD.Id, Link = allocation.PUD.Link, EduProgram = allocation.PUD.EduProgram.Name, Department = allocation.PUD.Department.Name, EducationStage = allocation.PUD.EducationStage, Language = allocation.PUD.Language, CourseName = allocation.PUD.CourseName, Details = allocation.PUD.Details, Criterias = new List <ValidatePUDCriteriaViewModel>(), AllocationId = allocation.Id, InspectionResults = new List <EvaluateInspectionPUDResultsViewModel>() }; foreach (var criteria in allocation.Validation.CriteriaList) { ValidatePUDCriteriaViewModel criteriaViewModel = new ValidatePUDCriteriaViewModel() { CheckVsCriteriaId = criteria.Id, Criteria = criteria.Criteria }; viewModel.Criterias.Add(criteriaViewModel); } // ===================================================================================================================== foreach (var result in allocation.PUD.InspectionPUDResults) { EvaluateInspectionPUDResultsViewModel eval = new EvaluateInspectionPUDResultsViewModel() { CheckResultEvaluations = new List <int>(), InspectionPUDResultId = result.Id, CriteriaNames = new List <string>() }; foreach (var item in result.CheckResults) { eval.CheckResultEvaluations.Add(item.Evaluation); eval.CriteriaNames.Add(item.InspectionCriteria.Criteria.Name); } viewModel.InspectionResults.Add(eval); } break; } } return(View(viewModel)); }
public async Task <IActionResult> ValidatePUD(ValidatePUDViewModel model) { var user = await _context.Users.FirstOrDefaultAsync(i => i.Id == model.UserId); var validation = await _context.Validations.FirstOrDefaultAsync(m => m.Id == model.ValidationID); var pud = await _context.PUDs.FirstOrDefaultAsync(m => m.Id == model.PUDId); var allocation = await _context.PUDAllocations.FirstOrDefaultAsync(m => m.Id == model.AllocationId); var all_inspectionResults = await _context.InspectionPUDResults.Include(i => i.CheckResultEvaluations).ToListAsync(); var all_crit = await _context.CheckVsCriterias.ToListAsync(); if (model.Criterias == null) { model.Criterias = new List <ValidatePUDCriteriaViewModel>(); } if (model.InspectionResults == null) { model.InspectionResults = new List <EvaluateInspectionPUDResultsViewModel>(); } ValidationPUDResult validationPUDResult = new ValidationPUDResult() { Iteration = model.CurrentIteration, PUD = pud, User = user, Validation = validation, CheckResults = new List <CheckResult>(), InspectionPUDResults = new List <InspectionPUDResult>() }; foreach (var modelCriteria in model.Criterias) { var criteria = all_crit.Find(i => i.Id == modelCriteria.CheckVsCriteriaId); CheckResult result = new CheckResult() { Evaluation = modelCriteria.CheckResult, InspectionCriteria = criteria }; validationPUDResult.CheckResults.Add(result); } foreach (var result in model.InspectionResults) { CheckResultEvaluation eval = new CheckResultEvaluation() { Evaluation = result.Evaluation, Validation = validation, Validator = user }; var inspPUDRes = all_inspectionResults.Find(i => i.Id == result.InspectionPUDResultId); inspPUDRes.CheckResultEvaluations.Add(eval); _context.Update(inspPUDRes); } allocation.Checked = true; _context.Update(allocation); _context.Add(validationPUDResult); await _context.SaveChangesAsync(); return(RedirectToAction("ValidatePUD")); }