public EnrollStudentResponse EnrollStudent(EnrollStudentRequest request) { var response = new EnrollStudentResponse(); response.setStatus(400, "Error"); var _studies = _context.Studies.Where(p => p.Name == request.Studies).FirstOrDefault(); if (_studies == null) { response.setStatus(400, "ERROR: Studies do not exist"); return(response); } var _enrollment = _context.Enrollment.Where(e => e.IdStudy == _studies.IdStudy && e.Semester == 1).FirstOrDefault(); if (_enrollment == null) { _enrollment = new Enrollment() { IdEnrollment = _context.Enrollment.Max(p => p.IdEnrollment) + 1, Semester = 1, IdStudy = _studies.IdStudy, StartDate = DateTime.Now.Date }; _context.Enrollment.Add(_enrollment); _context.SaveChanges(); } var _student = _context.Student.Where(p => p.IndexNumber == request.IndexNumber).FirstOrDefault(); if (_student == null) { DateTime dateValue; DateTime.TryParseExact(request.BirthDate, "dd.MM.yyyy", CultureInfo.InvariantCulture, DateTimeStyles.None, out dateValue); _student = new Student { IndexNumber = request.IndexNumber, FirstName = request.FirstName, LastName = request.LastName, BirthDate = dateValue, IdEnrollment = _enrollment.IdEnrollment }; _context.Student.Add(_student); _context.SaveChanges(); response.setStatus(201, "Student was enrolled"); } else { response.setStatus(400, "Student exists in database"); } response.LastName = _student.LastName; response.Semester = _enrollment.Semester; response.StartDate = _enrollment.StartDate.ToString(); response.Studies = request.Studies; return(response); }
public EnrollStudentResponse EnrollStudent(EnrollStudentRequest request) { var response = new EnrollStudentResponse(); response.setStatus(400, "Unknown Error"); // domyślnie - błąd var _studies = _context.Studies.Where(p => p.Name == request.Studies).FirstOrDefault(); if (_studies == null) { response.setStatus(400, "ERROR: Nie istnieją studia przekazane przez klienta"); return(response); } var _enrollment = _context.Enrollment.Where(e => e.IdStudy == _studies.IdStudy && e.Semester == 1).FirstOrDefault(); if (_enrollment == null) { _enrollment = new Enrollment() { IdEnrollment = _context.Enrollment.Max(p => p.IdEnrollment) + 1, Semester = 1, IdStudy = _studies.IdStudy, StartDate = DateTime.Now.Date }; _context.Enrollment.Add(_enrollment); _context.SaveChanges(); } var _student = _context.Student.Where(p => p.IndexNumber == request.IndexNumber).FirstOrDefault(); if (_student == null) { DateTime dateValue; DateTime.TryParseExact(request.BirthDate, "dd.MM.yyyy", CultureInfo.InvariantCulture, DateTimeStyles.None, out dateValue); _student = new Student { IndexNumber = request.IndexNumber, FirstName = request.FirstName, LastName = request.LastName, BirthDate = dateValue, IdEnrollment = _enrollment.IdEnrollment }; _context.Student.Add(_student); _context.SaveChanges(); response.setStatus(201, "Student został poprawnie zapisany na semestr"); // student został poprawnie zapisany na semestr } else { response.setStatus(400, "Taki student już istnieje"); } response.LastName = _student.LastName; response.Semester = _enrollment.Semester; response.StartDate = _enrollment.StartDate.ToString(); response.Studies = request.Studies; return(response); }
public EnrollStudentResponse EnrollStudent(EnrollStudentRequest request) { var response = new EnrollStudentResponse(); response.setStatus(400, "Unknown Error"); // domyślnie - błąd _ = new Student { FirstName = request.FirstName, LastName = request.LastName, IndexNumber = request.IndexNumber, BirthDate = request.BirthDate, Studies = request.Studies }; using (var connection = new SqlConnection(CONN_STR)) { connection.Open(); var command = connection.CreateCommand(); var transaction = connection.BeginTransaction(); command.Connection = connection; command.Transaction = transaction; try { command.CommandText = "select IdStudy, Name from dbo.Studies where name = @studies;"; command.Parameters.AddWithValue("studies", request.Studies); var reader = command.ExecuteReader(); if (!reader.Read()) { reader.Close(); response.setStatus(400, "ERROR: Nie istnieją studia przekazane przez klienta"); } else { int idStudy = int.Parse(reader["IdStudy"].ToString()); string studiesName = reader["Name"].ToString(); reader.Close(); command.CommandText = "SELECT TOP 1 IdEnrollment, StartDate " + " FROM dbo.Enrollment e " + " INNER JOIN dbo.Studies s ON e.IdStudy = s.IdStudy and Semester = 1 " + " WHERE s.name = @studies " + " ORDER BY StartDate DESC;"; DateTime enrollmentDate = DateTime.Now.Date; reader = command.ExecuteReader(); int nextEnrollment; if (!reader.Read()) { reader.Close(); command.CommandText = "SELECT ISNULL(MAX(IdEnrollment), 0) as id FROM dbo.Enrollment"; reader = command.ExecuteReader(); if (!reader.Read()) { nextEnrollment = 1; } else { nextEnrollment = int.Parse(reader["id"].ToString()) + 1; } reader.Close(); command.CommandText = "INSERT INTO dbo.Enrollment(IdEnrollment, Semester, IdStudy, StartDate) " + "VALUES( " + nextEnrollment + ", 1, " + idStudy + ", '" + enrollmentDate.ToString("yyyy-MM-dd") + "');"; command.ExecuteNonQuery(); } else { nextEnrollment = int.Parse(reader["IdEnrollment"].ToString()); enrollmentDate = DateTime.ParseExact(reader["StartDate"].ToString().Substring(0, 10), "yyyy-MM-dd", CultureInfo.InvariantCulture); } ; reader.Close(); command.CommandText = "SELECT IndexNumber FROM dbo.Student s WHERE IndexNumber = @IndexNumber;"; command.Parameters.AddWithValue("IndexNumber", request.IndexNumber); reader = command.ExecuteReader(); if (reader.Read()) { reader.Close(); transaction.Rollback(); response.setStatus(400, "ERROR: Numer indeksu studenta nie jest unikalny"); // nr indeksu studenta nie jest unikalny } else { reader.Close(); DateTime BirthDateNew; if (DateTime.TryParseExact(request.BirthDate, "dd.MM.yyyy", CultureInfo.InvariantCulture, DateTimeStyles.None, out BirthDateNew)) { command.CommandText = "INSERT INTO dbo.Student(IndexNumber, FirstName, LastName, BirthDate, IdEnrollment)" + "VALUES(@IndexNumber, @FirstName, @LastName, @BirthDate, @IdEnrollment);"; command.Parameters.AddWithValue("FirstName", request.FirstName); command.Parameters.AddWithValue("LastName", request.LastName); command.Parameters.AddWithValue("BirthDate", BirthDateNew); command.Parameters.AddWithValue("IdEnrollment", nextEnrollment); command.ExecuteNonQuery(); reader.Close(); transaction.Commit(); response.LastName = request.LastName; response.Semester = 1; response.Studies = studiesName; response.StartDate = enrollmentDate.ToString("dd.MM.yyyy"); response.setStatus(201, "Student został poprawnie zapisany na semestr"); // student został poprawnie zapisany na semestr } else { reader.Close(); transaction.Rollback(); response.setStatus(400, "ERROR: Błędna data urodzenia"); // nr indeksu studenta nie jest unikalny } } }; } catch (SqlException e) { Console.WriteLine("An exception of type " + e.GetType()); transaction.Rollback(); } return(response); } }