public async Task <IActionResult> UpdateAssigmentStudent([FromBody] AssignmentUpdateDTO data, string uniqueId) { if (string.IsNullOrEmpty(uniqueId)) { return(Ok(new { status = false, message = "GroupName cannot be null or empty", data = data })); } var student = await _mongoRepositoryStudents.FindOneAsync(x => x.UniqueId.Equals(uniqueId)); if (student == null) { return(BadRequest(new { status = false, message = $"Student with {uniqueId} not found", data = "" })); } var oldAssigmentStud = new List <Assignment>(); var studTotal = 0; foreach (var studAss in student.Assignments) { if (studAss.AssigmentId != null && studAss.AssigmentId.Equals(data.AssigmentId)) { studAss.MainTitle = data.Data.MainTitle; studAss.Total = data.Data.Total; studAss.Weight = data.Data.Weight; studAss.Name = data.Data.Name; } oldAssigmentStud.Add(studAss); var learnerMarkTotal = 0; foreach (var c in studAss.MainTitle) { learnerMarkTotal += Convert.ToInt32(c.Content.LearnerMark); } var grTotal = ((learnerMarkTotal / Convert.ToInt32(studAss.Total)) * 100) * (studAss.Weight / 100); studTotal += grTotal; } student.Assignments = oldAssigmentStud; student.TotalMark = studTotal.ToString(); await _mongoRepositoryStudents.ReplaceOneAsync(student); return(Ok(new { status = true, message = "successful request", data = student })); }
public async Task <IActionResult> UpdateAssigment([FromBody] AssignmentUpdateDTO data) { if (string.IsNullOrEmpty(data.GroupName)) { return(Ok(new { status = false, message = "GroupName cannot be null or empty", data = data })); } var nameOfTheGroup = CheckIfGroupExist(data.GroupName); if (string.IsNullOrEmpty(nameOfTheGroup.Item1)) { return(Ok(new { status = false, message = $"Students Group {data.AssigmentId} does not exist", data = "" })); } var foundAssigment = await _mongoRepositoryAssigment.FindOneAsync(x => x.AssigmentId.Equals(data.AssigmentId)); if (foundAssigment == null) { return(Ok(new { status = false, message = $"Assigment {data.Data.Name} not found", data = "" })); } foundAssigment.Total = data.Data.Total; foundAssigment.MainTitle = data.Data.MainTitle; foundAssigment.Weight = data.Data.Weight; foundAssigment.Name = foundAssigment.Name; await _mongoRepositoryAssigment.ReplaceOneAsync(foundAssigment); var gr = await _mongoRepositoryGroup.FindOneAsync(x => x.GroupId.Equals(nameOfTheGroup.Item2)); var oldAssignents = new List <Assignment>(); foreach (var ass in gr.Assignemts) { if (ass.AssigmentId != null && ass.AssigmentId.Equals(foundAssigment.AssigmentId)) { ass.MainTitle = data.Data.MainTitle; ass.Total = data.Data.Total; ass.Weight = data.Data.Weight; ass.Name = data.Data.Name; } oldAssignents.Add(ass); } gr.Assignemts = oldAssignents; await _mongoRepositoryGroup.ReplaceOneAsync(gr); var studentOfThisGroup = _mongoRepositoryStudents.AsQueryable().Where(x => x.GroupId.Equals(nameOfTheGroup.Item2)).ToList(); foreach (var stud in studentOfThisGroup) { var oldAssigmentStud = new List <Assignment>(); var studTotal = 0; foreach (var studAss in stud.Assignments) { if (studAss.AssigmentId != null && studAss.AssigmentId.Equals(foundAssigment.AssigmentId)) { studAss.MainTitle = data.Data.MainTitle; studAss.Total = data.Data.Total; studAss.Weight = data.Data.Weight; studAss.Name = data.Data.Name; } oldAssigmentStud.Add(studAss); var learnerMarkTotal = 0; foreach (var c in studAss.MainTitle) { learnerMarkTotal += Convert.ToInt32(c.Content.LearnerMark); } var grTotal = ((learnerMarkTotal / Convert.ToInt32(studAss.Total)) * 100) * (studAss.Weight / 100); studTotal += grTotal; } stud.Assignments = oldAssigmentStud; stud.TotalMark = studTotal.ToString(); await _mongoRepositoryStudents.ReplaceOneAsync(stud); } return(Ok(new { status = true, message = "successful request", data = foundAssigment })); }