コード例 #1
0
        private void AddStudent(SqlConnection client, SqlTransaction transaction, CreateStudentDTO student, int idEnrollment)
        {
            using (var cmd = new SqlCommand())
            {
                var password = PasswordHelper.HashPassword(student.Password);

                cmd.Connection  = client;
                cmd.Transaction = transaction;
                cmd.CommandText = @"INSERT INTO [Student]
                       ([IndexNumber]
                       ,[FirstName]
                       ,[LastName]
                       ,[BirthDate]
                       ,[IdEnrollment]
                       ,[Password]
                       ,[PasswordSalt])
                 VALUES
                       (@indexNumber
                       ,@firstName
                       ,@lastName
                       ,@birthDate
                       ,@enrollment
                       ,@password
                       ,@passwordSalt)";
                cmd.Parameters.AddWithValue("indexNumber", student.IndexNumber);
                cmd.Parameters.AddWithValue("firstName", student.FirstName);
                cmd.Parameters.AddWithValue("lastName", student.LastName);
                cmd.Parameters.AddWithValue("birthDate", student.BirthDate);
                cmd.Parameters.AddWithValue("enrollment", idEnrollment);
                cmd.Parameters.AddWithValue("password", password.PasswordHash);
                cmd.Parameters.AddWithValue("passwordSalt", password.Salt);

                cmd.ExecuteNonQuery();
            }
        }
コード例 #2
0
ファイル: EnrollmentsController.cs プロジェクト: s16507/CW5-6
        public IActionResult CreateStudent(CreateStudentDTO student)
        {
            var studies = _dbService.GetStudiesByName(student.Studies);


            if (studies == null)
            {
                return(BadRequest($"Nie znaleziono kierunku studiow {student.Studies}"));
            }
            if (_dbService.GetStudentByIndexNumber(student.IndexNumber) != null)
            {
                return(BadRequest($"Istnieje juz student z numerem indeksu {student.IndexNumber}"));
            }
            var enrollment = _dbService.GetLatestEnrollment(1, studies.IdStudy);

            if (enrollment == null)
            {
                enrollment = _dbService.AddStudentWithNewEnrollment(student, new Enrollment()
                {
                    IdStudy = studies.IdStudy, Semester = 1, StartDate = DateTime.Now
                });
            }
            else
            {
                _dbService.AddStudentWithExistingEnrollment(student, enrollment.IdEnrollment);
            }
            return(Created("", enrollment));
        }
コード例 #3
0
        public async Task <CreatedStudentDTO> CreateAsync(CreateStudentDTO student)
        {
            User user = _userRepository.Get().Include(s => s.Student)
                        .FirstOrDefault(s => s.Student.TelegramId == student.TelegramId);

            if (user is null)
            {
                user = new User()
                {
                    Firstname = student.Firstname,
                    Lastname  = student.Lastname,
                    Student   = new Student
                    {
                        TelegramId       = student.TelegramId,
                        TelegramPhotoUrl = student.TelegramPhotoUrl,
                        TelegramUsername = student.TelegramUsername
                    }
                };

                await _userRepository.AddAsync(user);

                await _storage.SaveAsync();
            }

            return(new CreatedStudentDTO(user));
        }
コード例 #4
0
        public async Task <IActionResult> Create([FromBody] CreateStudentDTO dto)
        {
            if (null == dto)
            {
                return(BadRequest());
            }
            var command = new CreateStudent(dto.Id, dto.FirstName, dto.LastName);
            await _mediator.Publish(command);

            return(CreatedAtAction("GetById", new { id = dto.Id }, dto.Id));
        }
コード例 #5
0
        public async Task Create_returns_500_on_internal_error()
        {
            var student = new CreateStudentDTO();

            repository.Setup(r => r.CreateStudentAsync(student)).ThrowsAsync(new Exception());
            var controller = new StudentRepositoryController(repository.Object);

            var actual = await controller.Create(student, true);

            var actionResult = Assert.IsType <ActionResult <Guid> >(actual);
            var code         = Assert.IsType <StatusCodeResult>(actionResult.Result);

            Assert.Equal(500, code.StatusCode);
        }
コード例 #6
0
        public IActionResult CreateStudent(CreateStudentDTO createStudentDto)
        {
            var studies = _studentsDbContext.Studies
                          .Include(x => x.Enrollments)
                          .FirstOrDefault(x => x.Name == createStudentDto.Studies);

            if (studies == null)
            {
                return(BadRequest($"Nie znaleziono kierunku studiow {createStudentDto.Studies}"));
            }

            if (_studentsDbContext.Student.Any(x => x.IndexNumber == createStudentDto.IndexNumber))
            {
                return(BadRequest($"Istnieje juz student z numerem indeksu {createStudentDto.IndexNumber}"));
            }

            var enrollment = studies.Enrollments.OrderByDescending(x => x.StartDate)
                             .FirstOrDefault(x => x.Semester == 1);

            if (enrollment == null)
            {
                enrollment = new ModelsEf.Enrollment()
                {
                    IdEnrollment = _studentsDbContext.Enrollment.Max(x => x.IdEnrollment) + 1,
                    Studies      = studies,
                    StartDate    = DateTime.Now,
                    Semester     = 1
                };

                _studentsDbContext.Enrollment.Add(enrollment);
            }

            var password = PasswordHelper.HashPassword(createStudentDto.Password);
            var student  = new Student()
            {
                IndexNumber  = createStudentDto.IndexNumber,
                Password     = password.PasswordHash,
                PasswordSalt = password.Salt,
                LastName     = createStudentDto.LastName,
                FirstName    = createStudentDto.FirstName,
                BirthDate    = createStudentDto.BirthDate,
                Enrollment   = enrollment
            };

            _studentsDbContext.Student.Add(student);
            _studentsDbContext.SaveChanges();

            return(Created("", enrollment));
        }
コード例 #7
0
ファイル: StudentsController.cs プロジェクト: cvlad99/Pr1
        public IActionResult CreateStudent([FromBody] CreateStudentDTO student)
        {
            var s = new Student
            {
                Name      = student.Name,
                Cnp       = student.Cnp,
                Restances = student.Restances
            };
            var result = _studentService.AddStudent(s);

            if (result == null)
            {
                return(BadRequest());
            }
            return(Created($"/students/{result.Id}", result));
        }
コード例 #8
0
        public async Task Create_returns_200_and_id_of_created_student()
        {
            var nextMockedId = Guid.NewGuid();
            var student      = new CreateStudentDTO();

            repository.Setup(r => r.CreateStudentAsync(student)).ReturnsAsync(nextMockedId);
            var controller = new StudentRepositoryController(repository.Object);

            var actual = await controller.Create(student, true);

            var actionResult = Assert.IsType <ActionResult <Guid> >(actual);
            var okResult     = Assert.IsType <OkObjectResult>(actionResult.Result);
            var actualId     = Assert.IsType <Guid>(okResult.Value);

            Assert.Equal(200, okResult.StatusCode);
            Assert.Equal(nextMockedId, actualId);
        }
コード例 #9
0
        public async Task <IHttpActionResult> PostStudentAsync(CreateStudentDTO student)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            var result = await StudentService.AddStudentAsync(student);

            if (!result.Created)
            {
                LoggingService.SaveErrorLog($"Adding student error. Student {JsonConvert.SerializeObject(student)}");
                _logger.Error($"Adding student error. Student {JsonConvert.SerializeObject(student)}");
                return(BadRequest("Adding student error. Try again."));
            }
            return(CreatedAtRoute("GetStudent", new { id = result.Student.RecordBookNumber }, result.Student));
        }
コード例 #10
0
        public async Task CreateStudent_returns_the_id_of_created_student()
        {
            var id      = Guid.NewGuid();
            var student = new CreateStudentDTO
            {
                Id              = id,
                Degree          = Degree.Bachelor,
                KeywordNames    = new [] { "Testing" },
                MinSalary       = 100,
                MinWorkingHours = 5,
                MaxWorkingHours = 20,
                Agreement       = false,
                Location        = "Nowhere"
            };

            var actual = await repository.CreateStudentAsync(student);

            Assert.Equal(student.Id, actual);
        }
コード例 #11
0
        public async Task <ActionResult <Guid> > Create([FromBody] CreateStudentDTO student, bool isTest = false)
        {
            try
            {
                var id = await repository.CreateStudentAsync(student);

                return(Ok(id));
            }
            catch (ArgumentException e)
            {
                Util.LogError(e, isTest);
                return(StatusCode(StatusCodes.Status409Conflict));
            }
            catch (Exception e)
            {
                Util.LogError(e, isTest);
                return(StatusCode(StatusCodes.Status500InternalServerError));
            }
        }
コード例 #12
0
        public async Task <Guid> CreateStudentAsync(CreateStudentDTO student)
        {
            var entity = new Student
            {
                Id              = student.Id,
                Degree          = student.Degree,
                Keywords        = GetKeywords(student.KeywordNames).ToList(),
                MinSalary       = student.MinSalary,
                MinWorkingHours = student.MinWorkingHours,
                MaxWorkingHours = student.MaxWorkingHours,
                Agreement       = student.Agreement,
                Location        = student.Location
            };

            await context.Students.AddAsync(entity);

            await context.SaveChangesAsync();

            return(entity.Id);
        }
コード例 #13
0
        public void AddStudentWithExistingEnrollment(CreateStudentDTO student, int existingIdEnrollment)
        {
            using (var client = new SqlConnection(
                       "Data Source=db-mssql;Initial Catalog=s17428;Integrated Security=True"))
            {
                client.Open();
                using (var transaction = client.BeginTransaction())
                {
                    try
                    {
                        AddStudent(client, transaction, student, existingIdEnrollment);

                        transaction.Commit();
                    }
                    catch (Exception)
                    {
                        transaction.Rollback();
                        throw;
                    }
                }
            }
        }
コード例 #14
0
        public async Task <NewStudentResultDTO> AddStudentAsync(CreateStudentDTO studentDTO)
        {
            var createResult = new NewStudentResultDTO
            {
                Created = false,
                Student = null
            };
            var user = new ApplicationUser()
            {
                UserName = studentDTO.Email, Email = studentDTO.Email, CreatedDate = DateTime.Now, FirstName = studentDTO.FirstName, LastName = studentDTO.LastName, EmailConfirmed = true
            };

            var result = await _userManager.CreateAsync(user, studentDTO.Pesel.ToString() + studentDTO.LastName.ToLower().Substring(0, Math.Min(studentDTO.LastName.Length, 3)));

            //var saveUserResult = _store.Context.SaveChanges();
            var roleResult = await _userManager.AddToRoleAsync(user.Id, "student");

            if (!result.Succeeded || !roleResult.Succeeded)
            {
                return(createResult);
            }

            var student = Mapper.Map <Student>(studentDTO);

            student.UserId = user.Id;

            var createdStudent = _repository.InsertStudent(student);

            if (_repository.Save())
            {
                createResult.Created = true;
                createResult.Student = Mapper.Map <GetStudentDTO>(createdStudent);

                return(createResult);
            }

            return(createResult);
        }
コード例 #15
0
 public Enrollment AddStudentWithNewEnrollment(CreateStudentDTO student, Enrollment enrollment)
 {
     using (var client = new SqlConnection(
                "Data Source=db-mssql;Initial Catalog=s17428;Integrated Security=True"))
     {
         client.Open();
         using (var transaction = client.BeginTransaction())
         {
             try
             {
                 enrollment = AddEnrollment(client, transaction, enrollment);
                 AddStudent(client, transaction, student, enrollment.IdEnrollment);
                 transaction.Commit();
                 return(enrollment);
             }
             catch (Exception)
             {
                 transaction.Rollback();
                 throw;
             }
         }
     }
 }