public IActionResult UpdateStudent([FromQuery] string Ind, [FromBody] Student stud) { try { var output = _context.Student.Where(st => st.IndexNumber.Equals(Ind)).FirstOrDefault(); output.FirstName = stud.FirstName; output.LastName = stud.LastName; output.BirthDate = stud.BirthDate; output.IdEnrollment = stud.IdEnrollment; if (stud.Password != null) { output.Password = PasswordHasherService.GenerateSaltedHash(stud.Password, output.Salt); } _context.SaveChanges(); return(Ok("Successfuly edited student!")); }catch (NullReferenceException ex) { return(BadRequest("No student found")); } }
public EnrollResponse EnrollStudent(EnrollRequest request) { EnrollResponse enrollResponse = new EnrollResponse(); using (var client = new SqlConnection("Data Source = db-mssql.pjwstk.edu.pl; Initial Catalog = s16796; Integrated Security = True")) { using (var command = new SqlCommand()) { command.Connection = client; client.Open(); var transaction = client.BeginTransaction(); command.Transaction = transaction; command.CommandText = "Select IdStudy FROM Studies where Name=@name"; command.Parameters.AddWithValue("name", request.Studies); var dr = command.ExecuteReader(); if (!dr.Read()) { dr.Close(); transaction.Rollback(); throw new ArgumentException("No studies found with that name"); } else { enrollResponse.IdStudies = Convert.ToInt32(dr["IdStudy"].ToString()); enrollResponse.Semester = 1; enrollResponse.Studies = request.Studies; } dr.Close(); command.Parameters.Clear(); command.CommandText = "SELECT IdEnrollment, StartDate FROM Enrollment WHERE semester = 1 AND IdStudy = @id order by StartDate desc"; command.Parameters.AddWithValue("id", enrollResponse.IdStudies); dr = command.ExecuteReader(); if (dr.Read()) { enrollResponse.IdEnrollment = Convert.ToInt32(dr["IdEnrollment"].ToString()); enrollResponse.StartDate = Convert.ToDateTime(dr["StartDate"]); } else { //enrollment nie istnieje! dr.Close(); command.CommandText = "INSERT INTO Enrollment(IdEnrollment, Semester, IdStudy, StartDate) OUTPUT Inserted.IdEnrollment VALUES((SELECT MAX(IdEnrollment) FROM Enrollment) + 1, 1, @id, @startdate)"; command.Parameters.AddWithValue("startdate", DateTime.Now); dr = command.ExecuteReader(); dr.Read(); enrollResponse.IdEnrollment = Convert.ToInt32(dr["IdEnrollment"].ToString()); enrollResponse.StartDate = DateTime.Now.Date; } dr.Close(); var studentsalt = GetSalt(32); command.Parameters.Clear(); command.CommandText = "INSERT INTO Student(IndexNumber, FirstName, LastName, BirthDate, IdEnrollment, Password, Salt) VALUES(@index, @first, @last, @birth, @enrollment, @Password, @Salt)"; command.Parameters.AddWithValue("index", request.IndexNumber); command.Parameters.AddWithValue("first", request.FirstName); command.Parameters.AddWithValue("last", request.LastName); command.Parameters.AddWithValue("birth", DateTime.ParseExact(request.BirthDate, "dd.MM.yyyy", null)); command.Parameters.AddWithValue("enrollment", enrollResponse.IdEnrollment); command.Parameters.AddWithValue("Password", PasswordHasherService.GenerateSaltedHash(request.Password, studentsalt)); command.Parameters.AddWithValue("Salt", studentsalt); try { dr = command.ExecuteReader(); enrollResponse.IndexNumber = request.IndexNumber; } catch (Exception exc) { Console.WriteLine(exc); dr.Close(); transaction.Rollback(); throw new ArgumentException("This index already exists"); } dr.Close(); transaction.Commit(); return(enrollResponse); } } }
public EnrollResponse EnrollStudent(EnrollRequest request, s16796Context context) { EnrollResponse enrollResponse = new EnrollResponse(); context.Database.BeginTransaction(); var test = context.Student.Where(student => student.IndexNumber.Equals(request.IndexNumber)).FirstOrDefault(); if (test != null) { throw new ArgumentException("Index taken!"); } enrollResponse.IndexNumber = request.IndexNumber; try { enrollResponse.IdStudies = context.Studies.Where(studies => studies.Name.Equals(request.Studies)).Select(studies => studies.IdStudy).FirstOrDefault(); }catch (InvalidOperationException ex) { context.Database.RollbackTransaction(); throw new ArgumentException("No studies found with that name"); } enrollResponse.Semester = 1; enrollResponse.Studies = request.Studies; try { var output = context.Enrollment.Where(enroll => enroll.Semester == 1 && enroll.IdStudy == enrollResponse.IdStudies).Select(enr => new { IdEnrollment = enr.IdEnrollment, StartDate = enr.StartDate }).First(); enrollResponse.IdEnrollment = output.IdEnrollment; enrollResponse.StartDate = output.StartDate; }catch (InvalidOperationException ex) { enrollResponse.IdEnrollment = context.Enrollment.Max(enr => enr.IdEnrollment) + 1; enrollResponse.StartDate = DateTime.Now.Date; var enrollmentadd = new Enrollment() { IdEnrollment = enrollResponse.IdEnrollment, Semester = 1, IdStudy = enrollResponse.IdStudies, StartDate = enrollResponse.StartDate }; context.Enrollment.Add(enrollmentadd); } var studentsalt = GetSalt(32); var nowystudent = new Student() { IndexNumber = request.IndexNumber, FirstName = request.FirstName, LastName = request.LastName, BirthDate = DateTime.ParseExact(request.BirthDate, "dd.MM.yyyy", null), IdEnrollment = enrollResponse.IdEnrollment, Password = PasswordHasherService.GenerateSaltedHash(request.Password, studentsalt), Salt = studentsalt }; context.Student.Add(nowystudent); context.SaveChanges(); context.Database.CommitTransaction(); return(enrollResponse); }