Ejemplo n.º 1
0
        public async Task <ActionResult> CreateStudent([FromBody] StudentRegisterDTO newStudent)
        {
            newStudent.Password = AuthentificationService.EncryptPassword(newStudent.Password);
            string base64Image = newStudent.Student.ProfilePicturePath;

            if (!string.IsNullOrEmpty(base64Image))
            {
                string imageFileId = await _sharedRepository.GetNextImageId();

                newStudent.Student.ProfilePicturePath = FileManagerService.SaveImageToFile(base64Image, imageFileId);
            }

            if (await _repository.CreateNonExistingStudent(newStudent))
            {
                StudentDTO student = await _repository.StudentExists(newStudent.Student.Email);

                student.Student.ProfilePicturePath = base64Image;
                string token = JwtManager.GenerateJWToken(student.Student, student.Id.ToString());
                return(Ok(new JsonResult(token)));
            }
            else
            {
                return(Ok(new JsonResult("Email taken")));
            }
        }
Ejemplo n.º 2
0
        // создание заявки студента
        public async Task <OperationDetailDTO> CreateStudentRegisterRequestAsync(StudentRegisterDTO dto)
        {
            List <string> errorMessages = new List <string>();

            try
            {
                if (!UserValidator.Validate(dto, out errorMessages))
                {
                    return(new OperationDetailDTO {
                        Succeeded = false, ErrorMessages = errorMessages
                    });
                }
                if (await _context.StudentRegisterRequests.AnyAsync(x => x.UserName == dto.UserName) ||
                    await _context.TeacherRegisterRequests.AnyAsync(x => x.UserName == dto.UserName) ||
                    await _userManager.FindByNameAsync(dto.UserName) != null)
                {
                    errorMessages.Add("Пользователь с таким имененем пользователем уже существует. Пожалуйста, выберите другое.");
                    return(new OperationDetailDTO {
                        Succeeded = false, ErrorMessages = errorMessages
                    });
                }

                var testUser = new User
                {
                    Email        = dto.Email,
                    UserName     = dto.UserName,
                    PasswordHash = dto.Password
                };
                var userValidateRes = await _userValidator.ValidateAsync(_userManager, testUser);

                if (!userValidateRes.Succeeded)
                {
                    errorMessages.Add("Введенные данные не прошли валидацию. Подробнее далее.");
                    foreach (var error in userValidateRes.Errors.ToList())
                    {
                        errorMessages.Add(error.Description);
                    }
                    return(new OperationDetailDTO {
                        Succeeded = false, ErrorMessages = errorMessages
                    });
                }

                await _context.StudentRegisterRequests.AddAsync(GetStudentRegEntityFromDTO(dto));

                await _context.SaveChangesAsync();

                return(new OperationDetailDTO {
                    Succeeded = true
                });
            }
            catch (Exception e)
            {
                return(new OperationDetailDTO {
                    Succeeded = false, ErrorMessages = { _serverErrorMessage + e.Message }
                });
            }
        }
        public async Task <IActionResult> AddStudentRegRequestAsync([FromBody] StudentRegisterDTO dto)
        {
            var test   = JsonConvert.SerializeObject(dto);
            var detail = new OperationDetailDTO();
            var res    = await _accountService.CreateStudentRegisterRequestAsync(dto);

            detail = res;
            return(Ok(detail));
        }
Ejemplo n.º 4
0
        // методы для конвертации >>

        private StudentRegisterRequest GetStudentRegEntityFromDTO(StudentRegisterDTO dto) => new StudentRegisterRequest
        {
            GroupId      = dto.GroupId,
            Name         = dto.Name,
            Surname      = dto.Surname,
            Patronymic   = dto.Patronymic,
            Email        = dto.Email,
            PasswordHash = dto.Password,
            UserName     = dto.UserName,
        };
Ejemplo n.º 5
0
        public async Task <IActionResult> RegisterCourses2()
        {
            var res = new StudentRegisterDTO();

            res.CourseList = await _context.Courses
                             .Where(c => c.Deleted != 1 &&
                                    c.StartDate.Value.Date <= DateTime.Now.Date && c.EndDate.Value.Date >= DateTime.Now.Date && c.Status != 1)
                             .Select(c => new CourseSelectDTO {
                ID   = c.ID,
                Name = $"{c.Name} - {c.Code}"
            }).ToListAsync();

            return(View(res));
        }
Ejemplo n.º 6
0
        public async Task <IActionResult> DoRegisterCourses(StudentRegisterDTO req)
        {
            try
            {
                if (ModelState.IsValid)
                {
                    var imgPath = await Utils.SaveFile(req.Image, "Student");

                    var code = await CreateCode();

                    var student = new Student
                    {
                        CourseID               = req.CourseID,
                        Status                 = 1,
                        Code                   = code,
                        DOB                    = req.DOB,
                        Email                  = req.Email,
                        Gender                 = req.Gender,
                        ImageURL               = imgPath,
                        Name                   = req.Name,
                        PermanentAddress       = req.PermanentAddress,
                        PhoneNumber            = req.PhoneNumber,
                        ResidentialAddress     = req.ResidentialAddress,
                        ResponsiblePersonName  = req.ResponsiblePersonName,
                        ResponsiblePersonPhone = req.ResponsiblePersonPhone,
                        TestScore              = req.TestScore,
                        CreatedAt              = DateTime.Now,
                        UpdatedAt              = DateTime.Now
                    };
                    _context.Add(student);
                    await _context.SaveChangesAsync();

                    TempData["Success"] = "Successfully";
                    return(RedirectToAction(nameof(Courses)));
                }

                req.Course = await _context.Courses
                             .FirstOrDefaultAsync(c => c.Deleted != 1 &&
                                                  c.StartDate <= DateTime.Now && c.EndDate >= DateTime.Now && c.Status != 1);

                return(View(req));
            }
            catch (Exception ex)
            {
                TempData["Error"] = ex.Message;
                return(RedirectToAction(nameof(Courses)));
            }
        }
Ejemplo n.º 7
0
        public async Task <IActionResult> RegisterCourses(int?id)
        {
            var res = new StudentRegisterDTO();

            res.Course = await _context.Courses
                         .FirstOrDefaultAsync(c => c.Deleted != 1 && c.ID == id &&
                                              c.StartDate.Value.Date <= DateTime.Now.Date && c.EndDate.Value.Date >= DateTime.Now.Date && c.Status != 1);

            if (res.Course == null)
            {
                TempData["Error"] = "Course not found or can't register";
                return(RedirectToAction(nameof(Courses)));
            }

            return(View(res));
        }
        public static bool Validate(StudentRegisterDTO dto, out List <string> messages)
        {
            bool res = true;

            messages = new List <string>();

            if (String.IsNullOrEmpty(dto.Name) || dto.Name.Length >= 50)
            {
                messages.Add("Укажите корректно имя. Только буквы, максимальная длина - 50.");
                res = false;
            }

            if (String.IsNullOrEmpty(dto.Surname) || dto.Surname.Length >= 50)
            {
                messages.Add("Укажите корректно фамилию. Только буквы, максимальная длина - 50.");
                res = false;
            }

            if (String.IsNullOrEmpty(dto.Patronymic) || dto.Patronymic.Length >= 50)
            {
                messages.Add("Укажите корректно отчество. Только буквы, максимальная длина - 50.");
                res = false;
            }

            if (String.IsNullOrEmpty(dto.UserName) || dto.UserName.Length >= 50)
            {
                messages.Add("Укажите корректно имя пользователя. Максимальная длина - 50.");
                res = false;
            }

            if (dto.Password.Length < 6)
            {
                messages.Add("Укажите корректно пароль. Минимальная длина - 6.");
                res = false;
            }

            if (!EmailValidator.IsCorrect(dto.Email))
            {
                messages.Add("Укажите корректно электронную почту.");
                res = false;
            }

            return(res);
        }
Ejemplo n.º 9
0
        public async Task <bool> CreateNonExistingStudent(StudentRegisterDTO newStudent)
        {
            Student rawStudent = newStudent.Student;
            string  password   = newStudent.Password;
            var     res        = await _client.Cypher
                                 .Merge("(student:Student {Email: $email})")
                                 .WithParam("email", rawStudent.Email)
                                 .OnCreate().Set("student = $rawStudent, student.IsNew = true, student.Password = $password")
                                 .WithParams(new
            {
                rawStudent = rawStudent,
                password   = password
            })
                                 .OnMatch().Set("student.IsNew = false")
                                 .Return <bool>("student.IsNew")
                                 .ResultsAsync;

            return(res.Single());
        }
Ejemplo n.º 10
0
 public Task <OperationDetailDTO> CreateStudentRegisterRequestAsync(StudentRegisterDTO dto)
 {
     throw new NotImplementedException();
 }
Ejemplo n.º 11
0
        // создание сущности студента и добавление в БД
        public async Task <OperationDetailDTO> CreateStudentAsync(StudentRegisterDTO dto)
        {
            OperationDetailDTO resultDetail;
            List <string>      errors = new List <string>();

            try
            {
                var student = new Student
                {
                    Name       = dto.Name,
                    Surname    = dto.Surname,
                    Patronymic = dto.Patronymic,
                    GroupId    = dto.GroupId
                };

                var user = new User
                {
                    Student      = student,
                    Email        = dto.Email,
                    PasswordHash = dto.Password,
                    UserName     = dto.UserName,
                    EntityId     = student.Id
                };

                var userResult = await _userManager.CreateAsync(user, dto.Password);

                if (userResult.Succeeded)
                {
                    var roleResult = await _userManager.AddToRoleAsync(user, Role.Types.Student.ToString());

                    if (roleResult.Succeeded)
                    {
                        resultDetail = new OperationDetailDTO {
                            Succeeded = true
                        };
                    }
                    else
                    {
                        await _userManager.DeleteAsync(user);

                        foreach (var error in userResult.Errors)
                        {
                            errors.Add("Ошибка при регистрации пользователя-студента. Код ошибки: " + error.Code + ". Описание ошибки: " + error.Description);
                        }
                        resultDetail = new OperationDetailDTO {
                            Succeeded = false, ErrorMessages = errors
                        };
                    }
                }
                else
                {
                    foreach (var error in userResult.Errors)
                    {
                        errors.Add("Ошибка при регистрации пользователя-студента.\nКод ошибки: " + error.Code + " Описание ошибки: " + error.Description);
                    }
                    resultDetail = new OperationDetailDTO {
                        Succeeded = false, ErrorMessages = errors
                    };
                }
                return(resultDetail);
            }

            catch (Exception e)
            {
                errors.Add(_serverErrorMessage + e.Message);
                return(new OperationDetailDTO {
                    Succeeded = false, ErrorMessages = errors
                });
            }
        }