public async Task <ActionResult <StudentResource> > UpdateStudent(int id, [FromBody] SaveStudentResource saveStudentResource)
        {
            var validator        = new SaveStudentResourceValidator();
            var validationResult = await validator.ValidateAsync(saveStudentResource);

            var requestIsInvalid = id == 0 || !validationResult.IsValid;

            if (requestIsInvalid)
            {
                _logger.LogError(DateTime.Now + $"\nUpdating student with {id} id failed, validation isn't valid " + validationResult.Errors);
                return(BadRequest(validationResult.Errors));
            }

            var studentToBeUpdate = await _studentService.GetStudentById(id);

            var student = _mapper.Map <SaveStudentResource, Student>(saveStudentResource);

            student.Id = id;

            await _studentService.UpdateStudent(student);

            var updatedStudent = await _studentService.GetStudentById(id);

            var updatedStudentResource = _mapper.Map <Student, StudentResource>(updatedStudent);

            return(Ok(updatedStudentResource));
        }
        public async Task <ActionResult <StudentResource> > CreateStudent([FromBody] SaveStudentResource saveStudentResource)
        {
            var validator        = new SaveStudentResourceValidator();
            var validationResult = await validator.ValidateAsync(saveStudentResource);

            if (!validationResult.IsValid)
            {
                _logger.LogError(DateTime.Now + $"\nCreating student failed, validation isn't valid " + validationResult.Errors.ToString());
                return(BadRequest(validationResult.Errors));
            }

            var studentToCreate = _mapper.Map <SaveStudentResource, Student>(saveStudentResource);

            var result = await _studentService.CreateStudent(studentToCreate);

            var createdStudent = _mapper.Map <Student, StudentResource>(result);

            return(Ok(createdStudent));
        }