예제 #1
0
 public IActionResult EnrollStudent(DTOs.Requests.Student studentRequest)
 {
     return(ProcessResponseState(dbService.EnrollStudent(studentRequest)));
 }
예제 #2
0
        public ResponseState EnrollStudent(DTOs.Requests.Student studentRequest)
        {
            int idStudy;

            if (studentRequest.indexNumber == null)
            {
                return(ResponseState.Fail);
            }
            if (studentRequest.firstName == null)
            {
                return(ResponseState.Fail);
            }
            if (studentRequest.lastName == null)
            {
                return(ResponseState.Fail);
            }
            if (studentRequest.birthDate == null)
            {
                return(ResponseState.Fail);
            }
            if (studentRequest.studies == null)
            {
                return(ResponseState.Fail);
            }

            var com = new SqlCommand()
            {
                CommandText = "select IDSTUDY from STUDIES where NAME = @studies"
            };

            com.Parameters.AddWithValue("studies", studentRequest.studies);

            if (executeSelect(com).Count == 0)
            {
                return(ResponseState.Fail);
            }

            idStudy = (int)executeSelect(com)[0][0];

            com = new SqlCommand()
            {
                CommandText = "select * from ENROLLMENT e inner join STUDENT S on e.IDENROLLMENT = s.IDENROLLMENT where e.SEMESTER = 1 and e.IDSTUDY = @idStudy and s.INDEXNUMBER = @indexNumber"
            };
            com.Parameters.AddWithValue("idStudy", idStudy);
            com.Parameters.AddWithValue("indexNumber", studentRequest.indexNumber);

            if (executeSelect(com).Count != 0)
            {
                return(ResponseState.NoDataChanged);
            }

            com = new SqlCommand
            {
                CommandText = "select * from STUDENT where INDEXNUMBER = @indexNumber"
            };
            com.Parameters.AddWithValue("indexNumber", studentRequest.indexNumber);

            if (executeSelect(com).Count != 0)
            {
                return(ResponseState.NoDataChanged);
            }

            com = new SqlCommand()
            {
                CommandText = "select max(IDENROLLMENT) from ENROLLMENT"
            };
            int idEnrollment = (int)executeSelect(com)[0][0] + 1;

            var transaction = GetConnection().BeginTransaction();

            com = new SqlCommand()
            {
                CommandText = "insert into ENROLLMENT(IDENROLLMENT, STARTDATE, IDSTUDY, SEMESTER) values (@idEnrollment, @startDate, @idStudy, @semester"
            };
            DateTime dateTime = DateTime.Now;

            com.Parameters.AddWithValue("idEnrollment", idEnrollment);
            com.Parameters.AddWithValue("startDate", dateTime);
            com.Parameters.AddWithValue("idStudy", idStudy);
            com.Parameters.AddWithValue("semester", 1);
            ExecuteInsert(com);

            com = new SqlCommand()
            {
                CommandText = "insert into STUDENT(INDEXNUMBER, FIRSTNAME, LASTNAME, BIRTHDATE, IDENROLLMENT) VALUES (@indexNumber, @firstName, @lastName, @birthDate, @idEnrollment)"
            };
            com.Parameters.AddWithValue("indexNumber", studentRequest.indexNumber);
            com.Parameters.AddWithValue("firstName", studentRequest.firstName);
            com.Parameters.AddWithValue("lastName", studentRequest.lastName);
            com.Parameters.AddWithValue("birthdate", studentRequest.birthDate);
            com.Parameters.AddWithValue("idEnrollment", idEnrollment);
            ExecuteInsert(com);

            Model.Enrollment enrollment = new Enrollment();
            enrollment.idEnrollment = idEnrollment;
            enrollment.semester     = 1;
            enrollment.idStudy      = idStudy;
            enrollment.startDate    = dateTime;

            transaction.Commit();
            return(ResponseState.Success);
        }