Exemple #1
0
        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);
        }
Exemple #2
0
        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);
            }
        }