public async Task <ActionResult <StudentViewModel> > PostStudentDetails(StudentViewModel StudentData) { StudentDetails stu = new StudentDetails(); stu.FirstName = StudentData.firstName; stu.LastName = StudentData.lastName; stu.ClassId = StudentData.classId; _context.StudentDetails.Add(stu); await _context.SaveChangesAsync(); StudentDetails student = _context.StudentDetails.SingleOrDefault(x => x.FirstName == StudentData.firstName);//Need to make FirstName as unique key. yet to code for making it unique. foreach (var stuData in StudentData.subjectMarksDetail) { StuSubjectMarks subMarks = new StuSubjectMarks(); subMarks.SubjectId = stuData.subId; subMarks.StudentId = student.StudentId; subMarks.Marks = stuData.marks; _context.StuSubjectMarks.Add(subMarks); } await _context.SaveChangesAsync(); return(CreatedAtAction("GetStudentDetail", new { id = StudentData.stuId }, StudentData)); }
public async Task <IActionResult> PutStudentDetails(int id, StudentViewModel studentData) { if (id != studentData.stuId) { return(BadRequest()); } foreach (var data in studentData.subjectMarksDetail) { bool ifExist = await _context.StuSubjectMarks.AnyAsync(x => x.SubjectId == data.subId); if (!ifExist) { StuSubjectMarks subMarkData = new StuSubjectMarks(); subMarkData.StudentId = id; subMarkData.SubjectId = data.subId; subMarkData.Marks = data.marks; _context.StuSubjectMarks.Add(subMarkData); } else { StuSubjectMarks subMarks = await _context.StuSubjectMarks.FirstOrDefaultAsync(x => x.SubjectId == data.subId); subMarks.SubjectId = data.subId; subMarks.Marks = data.marks; } await _context.SaveChangesAsync(); } var studentDetail = await _context.StudentDetails.FindAsync(id); studentDetail.FirstName = studentData.firstName; studentDetail.LastName = studentData.lastName; studentDetail.ClassId = studentData.classId; try { await _context.SaveChangesAsync(); } catch (DbUpdateConcurrencyException) { if (!StudentDetailExists(id)) { return(NotFound()); } else { throw; } } return(NoContent()); }