Ejemplo n.º 1
0
        public IActionResult PromoteStudents(PromoteStudentsRequest request)
        {
            var response = _service.PromoteStudents(request);

            if (response.IdEnrollment == 0)
            {
                return(NotFound(response.Message));
            }

            return(CreatedAtAction(nameof(PromoteStudents), response));
        }
Ejemplo n.º 2
0
        public IActionResult PromoteStudents(PromoteStudentsRequest request)
        {
            var enrollment = _studentsDbService.PromoteStudents(request);

            if (enrollment == null)
            {
                return(NotFound());
            }

            return(Created("api/enrollments/promotions", enrollment));
        }
Ejemplo n.º 3
0
        public IActionResult PromoteStudents(PromoteStudentsRequest promoteStudentsRequest)
        {
            EnrollmentStatus enrollmentStatus = _enrollmentDBService.PromoteStudents(promoteStudentsRequest);

            if (enrollmentStatus.Status == 400)
            {
                return(BadRequest(enrollmentStatus.Message));
            }

            return(Ok(enrollmentStatus.enrollment));
        }
Ejemplo n.º 4
0
 public IActionResult PromoteStudents(PromoteStudentsRequest request)
 {
     if (_service.PromoteStudents(request) == null)
     {
         return(BadRequest("Brak studiów w bazie"));
     }
     else
     {
         return(Ok(_service.PromoteStudents(request)));
     }
 }
Ejemplo n.º 5
0
        public IActionResult PromoteStudents(PromoteStudentsRequest promoteStudentsRequest)
        {
            var newEnrollment = _dbService.PromoteStudents(promoteStudentsRequest);

            if (newEnrollment != null)
            {
                return(Created("/api/students", newEnrollment));
            }
            return(BadRequest($"Nie ma wpisu w bazie danych o kierunku '{promoteStudentsRequest.Studies}' " +
                              $"i semestrze {promoteStudentsRequest.Semester}"));
        }
Ejemplo n.º 6
0
        // promocja studentow na nowy semestr danych studiow
        public IActionResult PromoteStudent(PromoteStudentsRequest request)
        {
            Enrollment newPromotion = _studentsDbService.PromoteStudents(request);

            if (newPromotion == null)
            {
                return(BadRequest(newPromotion));
            }

            return(Ok(newPromotion));
        }  // end of method PromoteStudent
Ejemplo n.º 7
0
 public IActionResult PromoteStudents(PromoteStudentsRequest request)
 {
     try
     {
         var promotionResult = _service.PromoteStudents(request);
         return(Created("api/enrollments/promotions", promotionResult));
     }
     catch (EnrollmentException exc)
     {
         return(BadRequest(exc.Message));
     }
 }
Ejemplo n.º 8
0
        public PromoteStudentsResponse PromoteStudents(PromoteStudentsRequest request)
        {
            var db       = new s18985Context();
            var response = new PromoteStudentsResponse();

            var t = db.Studies.Where(x => x.Name == request.Studies).Select(x => x.IdStudy).First();
            var e = db.Enrollment.Where(x => x.IdStudy == t && x.Semester == request.Semester).FirstOrDefault();

            if (e == null)
            {
                return(null);
            }

            var studs        = db.Student.Where(x => x.IdEnrollment == e.IdEnrollment).ToList();
            int nextSemester = request.Semester + 1;

            e = db.Enrollment.Where(x => x.IdStudy == t && x.Semester == nextSemester).FirstOrDefault();
            int f;

            if (e == null)
            {
                var max    = (db.Enrollment.Max(x => x.IdEnrollment)) + 1;
                var enroll = new Enrollment
                {
                    IdEnrollment = max,
                    Semester     = nextSemester,
                    IdStudy      = t,
                    StartDate    = DateTime.Now
                };
                db.Enrollment.Add(enroll);
                f = max;
            }
            else
            {
                f = e.IdEnrollment;
            }


            foreach (var s in studs)
            {
                s.IdEnrollment = f;
                db.Attach(s);
                db.Entry(s).Property("IdEnrollment").IsModified = true;
                db.SaveChanges();
            }

            response.IdEnrollment = f;
            response.Semester     = nextSemester;
            response.Studies      = request.Studies;
            response.StartDate    = DateTime.Now;

            return(response);
        }
Ejemplo n.º 9
0
        public IActionResult PromoteStudents(PromoteStudentsRequest request)
        {
            try
            {
                var psr = _service.PromoteStudents(request);

                return(Ok(psr));
            } catch (Exception exc)
            {
                return(BadRequest(exc.ToString()));
            }
        }
Ejemplo n.º 10
0
        public Enrollment PromoteStudents(PromoteStudentsRequest request)
        {
            _context = new APBDContext();

            Studies    study;
            Enrollment oldEnrollment;

            // Upewniam się, że w tabeli Enrollment istnieje wpis o podanej wartości Studies i Semester
            try
            {
                study = _context.Studies
                        .First(x => x.Name.Equals(request.Studies));
                oldEnrollment = _context.Enrollment
                                .Where(x => x.IdStudy.Equals(study.IdStudy))
                                .First(x => x.Semester == Convert.ToInt32(request.Semester));
            } catch
            {
                return(null);
            }

            Enrollment enrollment;

            try
            {
                enrollment = _context.Enrollment
                             .Where(x => x.IdStudy.Equals(study.IdStudy))
                             .First(x => x.Semester == Convert.ToInt32(request.Semester) + 1);
            } catch
            {
                var newEnrollment = new Enrollment
                {
                    IdEnrollment = _context.Enrollment
                                   .Max(x => x.IdEnrollment) + 1,
                    Semester  = Convert.ToInt32(request.Semester) + 1,
                    IdStudy   = study.IdStudy,
                    StartDate = DateTime.Today
                };
                _context.Enrollment.Add(newEnrollment);
                enrollment = newEnrollment;
            }

            var students = _context.Student
                           .Where(x => x.IdEnrollment == oldEnrollment.IdEnrollment)
                           .ToList();

            foreach (var s in students)
            {
                s.IdEnrollment = enrollment.IdEnrollment;
            }

            _context.SaveChanges();
            return(enrollment);
        }
Ejemplo n.º 11
0
        public Enrollment PromoteStudents(PromoteStudentsRequest request)
        {
            using (var con = new SqlConnection("Data Source=db-mssql;Initial Catalog=s19151;Integrated Security=True"))
                using (var com = con.CreateCommand())
                {
                    con.Open();
                    var tran = con.BeginTransaction("PromoteStudentTrans");

                    com.Connection  = con;
                    com.Transaction = tran;

                    com.CommandText = $"SELECT 1 FROM Enrollment " +
                                      $"INNER JOIN Studies ON Studies.IdStudy = Enrollment.IdStudy " +
                                      $"WHERE Name = @studies AND semester = @semester";
                    com.Parameters.AddWithValue("studies", request.Studies);
                    com.Parameters.AddWithValue("semester", request.Semester);

                    var dr = com.ExecuteReader();
                    if (!dr.Read())
                    {
                        dr.Close();
                        tran.Rollback();

                        return(null);
                    }
                    dr.Close();

                    com.CommandText = "promotestudents @studies, @semester";

                    var returnParam = new SqlParameter("returnVal", SqlDbType.Int);
                    returnParam.Direction = ParameterDirection.ReturnValue;
                    com.Parameters.Add(returnParam);

                    com.ExecuteNonQuery();

                    int idEnroll = Convert.ToInt32(returnParam.Value);

                    com.CommandText = "SELECT * FROM Enrollment WHERE IdEnrollment = @idEnroll";
                    com.Parameters.AddWithValue("idEnroll", idEnroll);

                    dr = com.ExecuteReader();
                    Enrollment enrollment = new Enrollment();

                    enrollment.IdEnrollment = idEnroll;
                    enrollment.Semester     = Int32.Parse(dr["Semester"].ToString());
                    enrollment.IdStudy      = Int32.Parse(dr["IdStudy"].ToString());
                    enrollment.StartDate    = DateTime.Parse(dr["StartDate"].ToString());
                    tran.Commit();

                    return(enrollment);
                }
        }
Ejemplo n.º 12
0
        public PromoteStudentsResponse PromoteStudents(PromoteStudentsRequest request)
        {
            var studies = _studentContext.Studies.FirstOrDefault(s => s.Name == request.Studies);

            if (studies == null)
            {
                return(null);
            }

            var oldEnrollmentId = _studentContext.Enrollment.FirstOrDefault(e => e.IdStudy == studies.IdStudy && e.Semester == request.Semester);

            if (oldEnrollmentId == null)
            {
                return(null);
            }

            var enrollment = _studentContext.Enrollment.FirstOrDefault(e => e.IdStudy == studies.IdStudy && e.Semester == request.Semester + 1);

            if (enrollment == null)
            {
                _studentContext.Enrollment.Add(new Enrollment()
                {
                    IdStudy   = studies.IdStudy,
                    Semester  = request.Semester + 1,
                    StartDate = DateTime.Today
                });
                if (_studentContext.SaveChanges() != 1)
                {
                    return(null);
                }
                enrollment = _studentContext.Enrollment.FirstOrDefault(e => e.IdStudy == studies.IdStudy && e.Semester == request.Semester + 1);
            }

            var students = _studentContext.Student.Where(s => s.IdEnrollment == oldEnrollmentId.IdEnrollment).ToList();

            foreach (var s in students)
            {
                s.IdEnrollment = enrollment.IdEnrollment;
            }
            if (_studentContext.SaveChanges() != 1)
            {
                return(null);
            }

            return(new PromoteStudentsResponse()
            {
                IdEnrollment = enrollment.IdEnrollment,
                Semester = enrollment.Semester,
                StartDate = enrollment.StartDate,
                Study = studies.Name
            });
        }
Ejemplo n.º 13
0
        public PromoteStudentsResponse PromoteStudents(PromoteStudentsRequest request)
        {
            var response = new PromoteStudentsResponse();

            response.setStatus(400, "Unknown Error"); // domyślnie - błąd

            using (var connection = new SqlConnection(CONN_STR))
            {
                connection.Open();
                var command     = connection.CreateCommand();
                var transaction = connection.BeginTransaction();

                command.Connection  = connection;
                command.Transaction = transaction;

                command.CommandText = "select e.IdEnrollment from dbo.Enrollment e inner join dbo.Studies s on e.IdStudy = s.IdStudy where s.Name = @studyName and e.Semester = @semesterNumber";
                command.Parameters.AddWithValue("studyName", request.Studies);
                command.Parameters.AddWithValue("semesterNumber", request.Semester);

                var reader = command.ExecuteReader();
                if (!reader.Read())
                {
                    reader.Close();
                    response.setStatus(404, "ERROR: nie znaleziono semestru i/lub studiów");
                    transaction.Rollback();
                }
                else
                {
                    reader.Close();


                    using (SqlConnection conn = new SqlConnection(CONN_STR))
                    {
                        conn.Open();
                        SqlCommand cmd = new SqlCommand("Promote", conn);
                        cmd.CommandType = CommandType.StoredProcedure;

                        cmd.Parameters.Add(new SqlParameter("@studies", request.Studies));
                        cmd.Parameters.Add(new SqlParameter("@semester", request.Semester));
                        cmd.ExecuteReader();
                        conn.Close();
                    }
                    response.Semester    = request.Semester + 1;
                    response.StartDate   = DateTime.Now.ToString("dd.MM.yyyy");
                    response.StudiesName = request.Studies;

                    transaction.Commit();
                    response.setStatus(201, "Studenci zostali promowani na następny semestr");
                }
            }
            return(response);
        }
Ejemplo n.º 14
0
        public IActionResult PromoteStudents(PromoteStudentsRequest request)
        {
            //czy studia istnieją
            var studies = db.Studies.Where(s => s.Name.Equals(request.Studies));

            if (studies.Count() == 0)
            {
                return(BadRequest("Studia " + request.Studies + " nie istnieją"));
            }

            var study = studies.First();

            //czy enrollment istnieje
            var enrollment = db.Enrollment.Where(e => e.Semester == request.Semester &&
                                                 e.IdStudy == study.IdStudy);

            if (enrollment.Count() == 0)
            {
                return(NotFound("Wpis na semestr " + request.Semester + " dla " + request.Studies + " nie istnieje"));
            }

            //czy istnieje enrollment z semestrem o 1 wyższym
            var enrollmentPlus = db.Enrollment.Where(e => e.Semester == request.Semester + 1 &&
                                                     e.IdStudy == study.IdStudy);

            //jesli nie to dodajemy
            Enrollment resultEnrollmentPlus;

            if (enrollmentPlus.Count() == 0)
            {
                resultEnrollmentPlus = new Enrollment();
                resultEnrollmentPlus.IdEnrollment = db.Enrollment.Max(e => e.IdEnrollment) + 1;
                resultEnrollmentPlus.Semester     = enrollment.First().Semester + 1;
                resultEnrollmentPlus.IdStudy      = enrollment.First().IdStudy;
                resultEnrollmentPlus.StartDate    = DateTime.Now;

                db.Enrollment.Add(resultEnrollmentPlus);
            }
            else
            {
                resultEnrollmentPlus = enrollmentPlus.First();
            }

            //uaktualnienie dla studentów

            db.Student.Where(s => s.IdEnrollment == enrollment.First().IdEnrollment)
            .ToList()
            .ForEach(s => s.IdEnrollment = resultEnrollmentPlus.IdEnrollment);

            db.SaveChanges();
            return(Ok("Promocja zakończona"));
        }
Ejemplo n.º 15
0
        public IActionResult PromoteStudents(PromoteStudentsRequest request)
        {
            PromoteStudentsResponse resp = _service.PromoteStudents(request);

            if (resp == null)
            {
                return(BadRequest("404 Not Found"));
            }
            else
            {
                return(Ok(resp));
            }
        }
Ejemplo n.º 16
0
        public IActionResult PromoteStudents(PromoteStudentsRequest request)
        {
            var response = _service.PromoteStudents(request);

            if (response != null)
            {
                return(Created("", response));
            }
            else
            {
                return(NotFound());
            }
        }
Ejemplo n.º 17
0
        public PromoteStudentsResponse PromoteStudents(PromoteStudentsRequest request)
        {
            var          response = new PromoteStudentsResponse();
            DateTime     date     = DateTime.Today;
            int          success;
            const string ConString = "Data Source=db-mssql;Initial Catalog=s19391;Integrated Security=True";

            using (var con = new SqlConnection(ConString))
                using (var com = new SqlCommand())
                {
                    com.Connection = con;

                    con.Open();
                    var tran = con.BeginTransaction();

                    com.CommandText = "execute PromoteStudents @study, @semester";
                    com.Parameters.AddWithValue("study", request.Studies);
                    com.Parameters.AddWithValue("semester", request.Semester);
                    com.Transaction = tran;
                    success         = com.ExecuteNonQuery();

                    var nextSemestr = request.Semester + 1;
                    com.CommandText = "select IdEnrollment from enrollment where semester = @nextSemester and idstudy = (select idstudy from studies where name = @study)";
                    com.Parameters.AddWithValue("nextSemester", nextSemestr);
                    com.Transaction = tran;
                    var dr = com.ExecuteScalar();

                    response.IdEnrollment = (int)dr;

                    com.CommandText = "select StartDate from enrollment where semester = @nextSemester and idstudy = (select idstudy from studies where name = @study)";
                    com.Transaction = tran;
                    dr = com.ExecuteScalar();

                    response.StartDate = (DateTime)dr;

                    tran.Commit();

                    response.Studies  = request.Studies;
                    response.Semester = request.Semester + 1;


                    if (success > 0)
                    {
                        return(response);
                    }
                    else
                    {
                        return(null);
                    }
                }
        }
Ejemplo n.º 18
0
        public PromoteStudentsResponse PromoteStudents(PromoteStudentsRequest request)
        {
            PromoteStudentsResponse response;
            DateTime now = DateTime.Now;

            var checkStudies = _context.Studies
                               .Where(s => s.Name == request.Studies)
                               .FirstOrDefault();

            if (checkStudies == null)
            {
                throw new ArgumentException("Podane studia nie istnieja");
            }

            var studies = _context.Enrollment
                          .Join(_context.Studies,
                                enr => enr.IdStudy,
                                stu => stu.IdStudy,
                                (enr, stu) => new
            {
                enr,
                stu
            })
                          .Where(s => s.stu.Name == request.Studies &&
                                 s.enr.Semester == request.Semester)
                          .FirstOrDefault();

            if (studies == default)
            {
                throw new ArgumentException("Wpis z podanym semestrem nie istnieje w bazie");
            }

            var result = _context.Enrollment
                         .FromSqlRaw("EXEC [dbo].[PromoteStudents] {0}, {1}", request.Studies, request.Semester)
                         .AsEnumerable()
                         .FirstOrDefault();

            if (result != null)
            {
                response = new PromoteStudentsResponse()
                {
                    IdEnrollment = result.IdEnrollment,
                    IdStudy      = result.IdStudy,
                    Semester     = result.Semester,
                    StartDate    = result.StartDate
                };

                return(response);
            }
            return(null);
        }
Ejemplo n.º 19
0
        public EnrollmentResponse PromoteStudents(PromoteStudentsRequest request)
        {
            APBDContext context = new APBDContext();
            //istnienie wpisów
            Enrollment enr = context.Enrollment
                             .Where(x => x.Semester == request.Semester)
                             .Where(x => x.IdStudy == context.Studies.Where(y => y.Name == request.Studies).FirstOrDefault().IdStudy)
                             .FirstOrDefault();

            if (enr == null)
            {
                return(null);
            }

            //istnienie wpisu +1
            Enrollment enr2 = context.Enrollment
                              .Where(x => x.Semester == request.Semester + 1)
                              .Where(x => x.IdStudy == enr.IdStudy)
                              .FirstOrDefault();

            if (enr2 == null)
            {
                context.Enrollment.Add(enr2 = new Enrollment {
                    Semester     = request.Semester + 1,
                    StartDate    = DateTime.Today,
                    IdEnrollment = context.Enrollment.Select(x => x.IdEnrollment).Max() + 1,
                    IdStudy      = enr.IdStudy
                });
            }


            //promocja studentów
            var students = context.Student
                           .Where(x => x.IdEnrollment == enr.IdEnrollment).ToList();

            foreach (Student s in students)
            {
                s.IdEnrollment = enr2.IdEnrollment;
            }
            context.SaveChanges();

            // stworzenie Enrollmentu
            EnrollmentResponse enrResp = new EnrollmentResponse();

            enrResp.Semester  = enr2.Semester;
            enrResp.StudyName = request.Studies;
            enrResp.StartDate = enr2.StartDate.ToString();

            return(enrResp);
        }
Ejemplo n.º 20
0
        public Enrollment PromoteStudents(PromoteStudentsRequest request)
        {
            using (var con = new SqlConnection(CONNECTION_STRING))
                using (var com = new SqlCommand())
                {
                    com.Connection = con;
                    con.Open();
                    var transaction = con.BeginTransaction();
                    com.Transaction = transaction;

                    com.CommandText = "execute spPromoteStudentToNextSemester @Name, @Semester;";
                    com.Parameters.AddWithValue("Name", request.Name);
                    com.Parameters.AddWithValue("Semester", request.Semester);


                    try
                    {
                        com.ExecuteNonQuery();
                        transaction.Commit();
                    } catch (SqlException e)
                    {
                        transaction.Rollback();
                        return(null);
                    }


                    com.CommandText = "SELECT * FROM Enrollment WHERE IdStudy = (SELECT IdStudy FROM Studies WHERE Name = @Name AND Semester = @Semester + 1)";
                    Enrollment newPromotionEnrollment = null;
                    var        dataReader             = com.ExecuteReader();
                    {
                        if (dataReader.Read())
                        {
                            newPromotionEnrollment = new Enrollment()
                            {
                                IdEnrollment = (int)dataReader["IdEnrollment"],
                                IdStudy      = (int)dataReader["IdStudy"],
                                Semester     = (int)dataReader["Semester"],
                                StartDate    = (DateTime)dataReader["StartDate"]
                            };
                        }
                        else
                        {
                            return(null);
                        }
                        dataReader.Close();

                        return(newPromotionEnrollment);
                    }
                }
        }
Ejemplo n.º 21
0
 public Enrollment PromoteStudents(PromoteStudentsRequest request)
 {
     using (var db = new s18838Context())
     {
         var enrollment = GetEnrollment(request.Studies, request.Semester);
         if (enrollment == null)
         {
             throw new Exception();
         }
         db.Database.ExecuteSqlRaw("exec PromoteStudents @Studies @Semester", request.Studies, request.Semester);
         enrollment.Semester++;
         return(enrollment);
     }
 }
Ejemplo n.º 22
0
        public IActionResult PromoteStudents(PromoteStudentsRequest request)
        {
            Enrollment en;

            try
            {
                en = _dbService.PromoteStudents(request);
            }
            catch (Exception e)
            {
                return(NotFound(e.Message));
            }

            return(Created("", en));
        }
Ejemplo n.º 23
0
        public IActionResult PromoteStudents(PromoteStudentsRequest request)
        {
            var response = _service.PromoteStudents(request);

            switch (response.getStatus())
            {
            case 201: return(new CreatedAtRouteResult("api/enrollments/promotions", response));   //(response);

            case 404: return(NotFound(response.getMessage()));

            case 400: return(BadRequest(response.getMessage()));

            default: return(BadRequest("INNY ERROR"));
            }
        }
Ejemplo n.º 24
0
        public PromoteStudentsResponse PromoteStudents(PromoteStudentsRequest request)
        {
            var psr = new PromoteStudentsResponse();

            using (var con = new SqlConnection(Program.GetConnectionString()))
                using (var com = new SqlCommand())
                {
                    com.Connection = con;
                    con.Open();

                    var tran = con.BeginTransaction();

                    try
                    {
                        com.CommandText = "EXEC PROMOTESTUDENTS @STUDIES = @studies, @SEMESTER = @semester";
                        com.Parameters.AddWithValue("studies", request.Studies);
                        com.Parameters.AddWithValue("semester", request.Semester);
                        com.Transaction = tran;

                        var dr = com.ExecuteReader();

                        if (!dr.Read())
                        {
                            dr.Close();
                            tran.Rollback();
                            throw new Exception("Procedura nie powiodła się");
                        }
                        else
                        {
                            psr.IdEnrollment = (int)dr["IdEnrollment"];
                            psr.IdStudy      = (int)dr["IdStudy"];
                            psr.Semester     = (int)dr["Semester"];
                            psr.StartDate    = (DateTime)dr["StartDate"];
                        }

                        dr.Close();

                        tran.Commit();
                    }
                    catch (SqlException exc)
                    {
                        tran.Rollback();
                        throw new Exception("Operacja nie przebiegła pomyślnie");
                    }

                    return(psr);
                }
        }
Ejemplo n.º 25
0
 public IActionResult PromoteStudents(PromoteStudentsRequest request)
 {
     try
     {
         var enrollment = _dbService.PromoteStudents(request.Studies, request.Semester);
         return(Created("api/enrollments", _enrollmentToResponseMapper.Map(enrollment)));
     }
     catch (NoSuchStudiesException)
     {
         return(NotFound("No such studies"));
     }
     catch (NoSuchEnrollmentException)
     {
         return(NotFound("No such enrollment"));
     }
 }
Ejemplo n.º 26
0
        public IActionResult PromoteStudent(PromoteStudentsRequest req)
        {
            var arePromoted = _service.PromoteStudents(req);

            if (!arePromoted)
            {
                return(StatusCode(500));
            }
            var response = new PromoteStudentsResponse()
            {
                Semester = req.Semester + 1,
                Studies  = req.Studies
            };

            return(Ok(response));
        }
Ejemplo n.º 27
0
        public IActionResult PromoteStudents(PromoteStudentsRequest request)
        {
            var response = _service.PromoteStudents(request);

            if (response.ResultCode.Equals("400"))
            {
                return(BadRequest(response.Message));
            }

            if (response.ResultCode.Equals("404"))
            {
                return(NotFound(response.Message));
            }

            return(Created(response.Message, response.Obj));
        }
Ejemplo n.º 28
0
 public IActionResult PromoteStudents(PromoteStudentsRequest request)
 {
     try
     {
         var responce = _service.PromoteStudents(request);
         return(Ok("Students have been promoted successfully"));
     }
     catch (StudiesNotFound ex1)
     {
         return(NotFound(ex1.Message));
     }
     catch (NoStudentsToPromote ex2)
     {
         return(NotFound(ex2.Message));
     }
 }
Ejemplo n.º 29
0
        public Enrolment PromoteStudents(PromoteStudentsRequest request)
        {
            //Mapowanie
            var enrolment = new Enrolment();

            enrolment.Semester = request.Semester;

            using (var connection = new SqlConnection(SqlConn))
                using (var command = new SqlCommand("PromoteStudents", connection))
                {
                    command.CommandType = CommandType.StoredProcedure;
                    command.Parameters.Add(new SqlParameter("@Studies", request.Studies));
                    command.Parameters.Add(new SqlParameter("@Semester", enrolment.Semester));
                    connection.Open();
                    var transaction = connection.BeginTransaction();
                    command.Transaction = transaction;
                    var returnValue = command.ExecuteNonQuery();
                    if (returnValue == -1)
                    {
                        transaction.Rollback();
                        return(new EnrolmentError("Brak przedmiotu lub konkretnego semestru"));
                    }

                    command.CommandType = CommandType.Text;
                    command.CommandText = "Select IdEnrollment, e.IdStudy, StartDate " +
                                          " from Enrollment as e left join Studies as s on e.IdStudy = s.IdStudy " +
                                          " where Semester = @Semester2 + 1 and Name = @Studies2";
                    command.Parameters.Add(new SqlParameter("@Studies2", request.Studies));
                    command.Parameters.Add(new SqlParameter("@Semester2", enrolment.Semester));
                    command.Transaction = transaction;
                    var dr = command.ExecuteReader();

                    if (dr.Read())
                    {
                        enrolment.IdEnrollment = (int)dr["IdEnrollment"];
                        enrolment.StartDate    = DateTime.Parse(dr["StartDate"].ToString());
                        enrolment.IdStudy      = (int)dr["IdStudy"];
                        dr.Close();
                    }
                    else
                    {
                        transaction.Rollback();
                    }
                    transaction.Commit();
                }
            return(enrolment);
        }
        public IActionResult PromoteStudents(PromoteStudentsRequest request)
        {
            int changedEnrollment      = 0;
            var promoteStudnetResponse = new PromoteStudentResponse();

            using (var connection = new SqlConnection(
                       "Data Source=db-mssql.pjwstk.edu.pl;Initial Catalog=s18711;Integrated Security=True"))
                using (var command = new SqlCommand("dbo.Promote", connection))
                    using (var command2 = new SqlCommand())
                    {
                        command2.Connection = connection;

                        command.CommandType = CommandType.StoredProcedure;

                        command.Parameters.Add("@StudiesName", SqlDbType.VarChar, 100);
                        command.Parameters.Add("@Semester", SqlDbType.Int);
                        command.Parameters.Add("@myOut", SqlDbType.Int).Direction = ParameterDirection.Output;

                        command.Parameters["@StudiesName"].Value = request.Studies;
                        command.Parameters["@Semester"].Value    = request.Semester;

                        connection.Open();
                        command.ExecuteNonQuery();

                        changedEnrollment = Convert.ToInt32(command.Parameters["@myOut"].Value);

                        command2.CommandText = "SELECT * FROM Enrollment WHERE IdEnrollment = @IdE";
                        command2.Parameters.AddWithValue("IdE", changedEnrollment);

                        var dataReader = command2.ExecuteReader();

                        if (dataReader.Read())
                        {
                            promoteStudnetResponse.IdEnrollment = int.Parse(dataReader["IdEnrollment"].ToString());
                            promoteStudnetResponse.IdStudies    = int.Parse(dataReader["IdStudy"].ToString());
                            promoteStudnetResponse.Semester     = int.Parse(dataReader["Semester"].ToString());
                        }
                    }



            return(CreatedAtAction("PromoteStudents", promoteStudnetResponse));
        }