Example #1
0
        public StudentsEnrollmentResponse GetStudentsEnrollment(string index)
        {
            string EnrollmentQuery = "SELECT stu.IndexNumber,stu.FirstName, stu.LastName,BirthDate, s.Name, e.Semester, e.StartDate" +
                                     " FROM Student stu INNER JOIN Enrollment e on stu.IdEnrollment = e.IdEnrollment INNER JOIN" +
                                     " Studies s on e.IdStudy = s.IdStudy WHERE IndexNumber = @index";


            using (SqlConnection con = new SqlConnection(ConString))
                using (SqlCommand com = new SqlCommand())
                {
                    com.Connection  = con;
                    com.CommandText = EnrollmentQuery;
                    com.Parameters.AddWithValue("index", index);
                    con.Open();
                    SqlDataReader dr = com.ExecuteReader();


                    var stEnrollment = new StudentsEnrollmentResponse();
                    if (!dr.HasRows)
                    {
                        return(null);
                    }
                    while (dr.Read())
                    {
                        stEnrollment.IndexNumber = dr["IndexNumber"].ToString();
                        stEnrollment.FirstName   = dr["FirstName"].ToString();
                        stEnrollment.LastName    = dr["LastName"].ToString();
                        stEnrollment.BirthDate   = DateTime.Parse(dr["BirthDate"].ToString());
                        stEnrollment.Name        = dr["Name"].ToString();
                        stEnrollment.Semester    = int.Parse(dr["Semester"].ToString());
                        stEnrollment.StartDate   = DateTime.Parse(dr["StartDate"].ToString());
                    }

                    return(stEnrollment);
                }
        }
Example #2
0
        public StudentsEnrollmentResponse StartEnrollStudent(EnrollStudentRequest request)
        {
            StudentsEnrollmentResponse response = null;

            using (var con = new SqlConnection(ConString))
                using (var com = new SqlCommand())
                {
                    com.Connection = con;
                    con.Open();
                    var trans = con.BeginTransaction();
                    com.Transaction = trans;


                    try
                    {
                        //Czy studia istnieja?
                        com.CommandText = "SELECT IdStudy FROM Studies WHERE Name = @name";
                        com.Parameters.AddWithValue("name", request.Studies);
                        var dr = com.ExecuteReader();

                        if (!dr.Read())
                        {
                            trans.Rollback();
                            throw new EnrollmentException("Dane studia nie istnieją");
                        }

                        int idStudy = int.Parse(dr["IdStudy"].ToString());
                        dr.Close();

                        //Czy index jest unikalny?
                        com.CommandText = "SELECT IndexNumber FROM Student WHERE IndexNumber =@IndexNumber";
                        com.Parameters.AddWithValue("IndexNumber", request.IndexNumber);

                        dr = com.ExecuteReader();

                        if (dr.HasRows)
                        {
                            trans.Rollback();
                            throw new EnrollmentException("Podany numer indexu jest już używany");
                        }
                        dr.Close();

                        //Czy jest już taki wpis w tabel Enrollments o danym IdEnrollments dla stówdiów o IdStudy

                        com.CommandText = "SELECT IdEnrollment FROM Enrollment WHERE IdStudy =@IdStudy AND Semester = 1 ORDER BY StartDate DESC";
                        com.Parameters.AddWithValue("IdStudy", idStudy);
                        int idEnrollment;
                        dr = com.ExecuteReader();

                        DateTime startDate = DateTime.Now;
                        if (dr.HasRows)
                        {
                            idEnrollment = (int)dr["IdEnrollment"];
                        }
                        else
                        {
                            //dodajemy wpis do Enorllment
                            //sprawdzamy maxymalny wpis w IdEnrollment
                            dr.Close();

                            com.CommandText = "SELECT Max(IdEnrollment) AS Max  FROM Enrollment";
                            dr = com.ExecuteReader();

                            if (dr.Read())
                            {
                                idEnrollment = (int)dr["Max"] + 1;
                            }
                            else
                            {
                                throw new EnrollmentException("Błąd w czytaniu max enrollment");
                            }
                            dr.Close();

                            com.CommandText = $"INSERT INTO Enrollment(IdEnrollment,Semester,IdStudy,StartDate) " +
                                              $"VAUES (@IdEnrollment,@Semester,@IdStudy,@StartDate)";
                            com.Parameters.AddWithValue("IdEnrollment", idEnrollment);
                            com.Parameters.AddWithValue("Semester", "1");
                            com.Parameters.AddWithValue("IdStudy", idStudy);
                            com.Parameters.AddWithValue("StartDate", startDate);

                            com.BeginExecuteNonQuery();
                        }


                        //Dodajemy wpis do Students
                        com.CommandText = $"INSERT INTO Student(IndexNumber, FirstName,LastName,BirthDate, IdEnrollment)" +
                                          $" VALUES ( @IndexNumber, @FirstName, @LastName, @Birthdate, @IdEnrollment)";

                        com.Parameters.AddWithValue("IndexNumber", request.IndexNumber);
                        com.Parameters.AddWithValue("FirstName", request.FirstName);
                        com.Parameters.AddWithValue("LastName", request.LastName);
                        com.Parameters.AddWithValue("BirthDate", request.BirthDate);
                        com.Parameters.AddWithValue("IdEnrollment", idEnrollment);

                        com.ExecuteNonQuery();

                        response = new StudentsEnrollmentResponse
                        {
                            IndexNumber = request.IndexNumber,
                            FirstName   = request.FirstName,
                            LastName    = request.LastName,
                            BirthDate   = request.BirthDate,
                            Name        = request.Studies,
                            Semester    = 1,
                            StartDate   = startDate
                        };

                        trans.Commit();
                    }
                    catch (SqlException e)
                    {
                        trans.Rollback();
                        return(null);
                    }
                }
            return(response);
        }