public async Task UpdateStudent_returns_ArgumentException_on_not_found()
 {
     var studentToUpdate = new UpdateStudentDTO {
         Id = Guid.NewGuid()
     };
     await Assert.ThrowsAsync <ArgumentException>(() => repository.UpdateStudentAsync(studentToUpdate));
 }
        public async Task <IActionResult> UpdateSource(int id, [FromBody] UpdateStudentDTO source)
        {
            try
            {
                if (source == null)
                {
                    return(BadRequest());
                }
                if (!ModelState.IsValid)
                {
                    return(BadRequest("Invalid model object"));
                }
                var sourceEntity = await _repositoryWrapper.StudentRepo.GetDataByIdAsync(id);

                if (sourceEntity == null)
                {
                    return(NotFound());
                }
                _mapper.Map(source, sourceEntity);
                _repositoryWrapper.StudentRepo.UpdateData(sourceEntity);
                await _repositoryWrapper.SaveAsync();

                return(Ok("Update successfully!"));
            }
            catch (Exception ex)
            {
                //_logger.LogError($"Something went wrong inside CreateSources action: {ex.Message}");
                if (ex.InnerException != null)
                {
                    return(BadRequest(ex.Message + "," + ex.InnerException.Message));
                }
                return(BadRequest(ex.Message));
            }
        }
示例#3
0
        public async Task <bool> UpdateStudentAsync(UpdateStudentDTO student)
        {
            var entity = await context.Students.FindAsync(student.Id);

            if (entity == null)
            {
                throw new ArgumentException($"Could not remove student with id {student.Id}, because it does not exist.");
            }

            // Remove the previous keywords, as they are a primary key
            var keywordsForStudent = from k in context.StudentKeywords
                                     where k.StudentId.Equals(entity.Id)
                                     select k;

            context.StudentKeywords.RemoveRange(keywordsForStudent);

            entity.Agreement       = student.Agreement;
            entity.Degree          = student.Degree;
            entity.Keywords        = GetKeywords(student.KeywordNames).ToList();
            entity.Location        = student.Location;
            entity.MaxWorkingHours = student.MaxWorkingHours;
            entity.MinWorkingHours = student.MinWorkingHours;
            entity.MinSalary       = student.MinSalary;

            await context.SaveChangesAsync();

            return(true);
        }
示例#4
0
        public async Task <IHttpActionResult> PutStudentAsync(int id, UpdateStudentDTO student)
        {
            if (!ModelState.IsValid)
            {
                LoggingService.SaveErrorLog($"Updating student error. Id in url: {id}, id in model: {student.RecordBookNumber}");
                _logger.Error($"Updating student error. Id in url: {id}, id in model: {student.RecordBookNumber}");
                return(BadRequest(ModelState));
            }

            if (id != student.RecordBookNumber)
            {
                LoggingService.SaveErrorLog($"Updating student error. Model: {JsonConvert.SerializeObject(student)} invalid");
                _logger.Error($"Updating student error. Model: {JsonConvert.SerializeObject(student)} invalid");
                return(BadRequest());
            }

            var updateResult = await StudentService.UpdateStudentAsync(student);

            if (updateResult.Updated)
            {
                return(Ok(updateResult));
            }

            return(StatusCode(HttpStatusCode.NoContent));
        }
        public async Task <CreatedStudentDTO> UpdateAsync(UpdateStudentDTO student)
        {
            if (!_accessProvider.CurrentUserId.HasValue)
            {
                throw new ForbiddenException($"The current user doesn't access for document.");
            }

            User user = _userRepository.Get(_accessProvider.CurrentUserId.Value)
                        .Include(s => s.Student)
                        .FirstOrDefault(s => s.Id == _accessProvider.CurrentUserId.Value);

            if (user is null)
            {
                throw new NotFoundException($"User with {_accessProvider.CurrentUserId.Value} dont found");
            }

            user.Firstname                     = student.Name;
            user.Lastname                      = student.Lastname;
            user.Student.FacultyId             = student.FacultyId;
            user.Student.SpecialityByFacultyId = student.SpecialityByFacultyId;
            user.Student.SpecializationId      = student.SpecializationId;
            user.Student.UniversityId          = student.UniversityId;
            user.Student.CanHelpWithDormitory  = student.CanHelp;
            user.Student.CourseNumber          = student.Course;
            _userRepository.Update(user);
            await _storage.SaveAsync();

            return(new CreatedStudentDTO(user));
        }
示例#6
0
        public async Task <(bool, string)> Update(int id, ReadStudentDTO newT)
        {
            using (var client = new HttpClient())
            {
                DataMessage message = null;
                client.DefaultRequestHeaders.Clear();
                client.BaseAddress = new Uri(WebAPIUrl);
                client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue(mediaType: "application/json"));
                var token            = Session.GetString("Token");
                var UpdateStudentDTO = new UpdateStudentDTO()
                {
                    Name = newT.Name, Surname = newT.Surname, DateOfBirth = newT.DateOfBirth, DepartmentId = newT.DepartmentId, Index = newT.Index, StatusId = newT.StatusId
                };
                if (string.IsNullOrEmpty(token))
                {
                    return(false, "You are not logged in!");
                }
                client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue(scheme: "Bearer", parameter: token);
                var responseMessage = await client.PutAsJsonAsync <UpdateStudentDTO>(requestUri : "/api/Students/UpdateStudent/" + id, UpdateStudentDTO);

                var resultMessage = await responseMessage.Content.ReadAsStringAsync();

                message = JsonConvert.DeserializeObject <DataMessage>(resultMessage);

                return(responseMessage.IsSuccessStatusCode, message.Message);
            }
        }
示例#7
0
        private async void AddSTudent_Click(object sender, RoutedEventArgs e)
        {
            object @object;

            if (this.VM.IsItemSelected)
            {
                @object = new UpdateStudentDTO
                {
                    Name          = Name.Text,
                    Surname       = Surname.Text,
                    StudentId     = this.VM.StudentId,
                    StudentNumber = this.VM.StudentNumber
                };
            }
            else
            {
                @object = new AddStudentDTO
                {
                    Name          = Name.Text,
                    Surname       = Surname.Text,
                    StudentNumber = Factory.RandomStudentNumberGenerator.Next(Config.StudentNumber_MinValue, Config.StudentNumber_MaxValue)
                };
            }


            try
            {
                if (this.VM.IsItemSelected)
                {
                    await AppData.Client.PutAsync(Config.REST_Endpoints_Students, @object);
                }
                else
                {
                    await AppData.Client.Post(Config.REST_Endpoints_Students, @object);
                }

                await AppData.RefreshStudentsAsync();

                this.VM.Students      = AppData.Students;
                this.VM.Name          = string.Empty;
                this.VM.Surname       = string.Empty;
                this.VM.StudentNumber = 0;
            }
            catch (Exception ex)
            {
                string title = $"OH SNAP! Failed to add the following student : {((Student)@object).StudentNumber}";

                string msg    = $"Couldn't add student : {((Student)@object).ToString()}. \n Exception : {ex.Message}. \n Inner Exception : {ex.InnerException?.Message}.";
                var    dialog = new MessageDialog(msg, title);
                await dialog.ShowAsync();

                // Log error
            }
        }
示例#8
0
        /// <summary>
        /// The student can update himself.
        /// </summary>
        /// <param name="updateStudentDTO"></param>
        /// <returns></returns>
        public async Task UpdateCurrentStudentAsync(UpdateStudentDTO updateStudentDTO)
        {
            var currentStudent = await _userManager.FindByNameAsync(_loggedUser).ConfigureAwait(false);

            currentStudent.ThrowIfNullForGuidObject();

            currentStudent.Student.Name        = updateStudentDTO.Name;
            currentStudent.Student.Surname     = updateStudentDTO.Surname;
            currentStudent.Student.University  = updateStudentDTO.University;
            currentStudent.Student.Age         = updateStudentDTO.Age;
            currentStudent.Student.Dream       = updateStudentDTO.Dream;
            currentStudent.Student.HomeAddress = updateStudentDTO.HomeAddress;

            await _studentRepository.UpdateAsync(currentStudent.Student).ConfigureAwait(false);
        }
示例#9
0
        public async Task Update_returns_500_on_internal_error()
        {
            var student = new UpdateStudentDTO {
                Degree = Degree.Bachelor
            };

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

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

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

            Assert.Equal(500, code.StatusCode);
        }
示例#10
0
        public async Task Update_returns_404_on_not_found()
        {
            var student = new UpdateStudentDTO {
                Id = Guid.NewGuid()
            };

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

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

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

            Assert.Equal(404, code.StatusCode);
        }
示例#11
0
        public async Task Update_returns_200_and_true()
        {
            var student = new UpdateStudentDTO {
                Degree = Degree.Bachelor
            };

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

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

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

            Assert.Equal(200, okResult.StatusCode);
            Assert.True(hasBeenUpdated);
        }
        public IActionResult UpdateStudent(UpdateStudentDTO updateStudentDto, [FromRoute] string id)
        {
            var student =
                _studentsDbContext.Student.FirstOrDefault(x => x.IndexNumber == id);

            if (student == null)
            {
                return(NotFound($"Nie znaleziono studenta o id {id}"));
            }

            student.FirstName = updateStudentDto.FirstName;
            student.LastName  = updateStudentDto.LastName;
            student.BirthDate = updateStudentDto.BirthDate;

            _studentsDbContext.SaveChanges();

            return(Ok(student));
        }
示例#13
0
        public async Task <ActionResult <bool> > Update([FromBody] UpdateStudentDTO student, bool isTest = false)
        {
            try
            {
                var isUpdated = await repository.UpdateStudentAsync(student);

                return(Ok(isUpdated));
            }
            catch (ArgumentException e)
            {
                Util.LogError(e, isTest);
                return(StatusCode(StatusCodes.Status404NotFound));
            }
            catch (Exception e)
            {
                Util.LogError(e, isTest);
                return(StatusCode(StatusCodes.Status500InternalServerError));
            }
        }
示例#14
0
        public async Task UpdateStudent_returns_true_on_updated()
        {
            var studentToUpdate = await Context.Students.FirstAsync();

            var dto = new UpdateStudentDTO
            {
                Id              = studentToUpdate.Id,
                KeywordNames    = new [] { "Testing", "C#"   },
                Degree          = Degree.Other,
                MinSalary       = 1,
                MinWorkingHours = 1,
                MaxWorkingHours = 2,
                Agreement       = true,
                Location        = "København"
            };
            var actual = await repository.UpdateStudentAsync(dto);

            Assert.True(actual);
            Assert.Equal(dto.Id, studentToUpdate.Id);
            Assert.Equal(dto.KeywordNames, studentToUpdate.Keywords.Select(k => k.Keyword.Name).ToList());
        }
示例#15
0
        public async Task <ActionResult> UpdateStudentAsync(UpdateStudentDTO student)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            var s = _mapper.Map <Student>(student);

            try
            {
                await this._service.UpdateAsync(s);

                await this._service.SaveAsync();
            }
            catch (Exception ex)
            {
                return(Problem(detail: $"Failed to update student ({s.Name}). Error: {ex.Message}. InnerException: {ex.InnerException?.Message}"));
            }

            return(Ok());
        }
示例#16
0
        public async Task <UpdateStudentResultDTO> UpdateStudentAsync(UpdateStudentDTO student)
        {
            var updateResult = new UpdateStudentResultDTO
            {
                Updated = false,
                Student = null
            };

            var studentEntity = _repository.GetStudentByID(student.RecordBookNumber);

            var user = await _userManager.FindByIdAsync(studentEntity.UserId);

            user.FirstName = string.IsNullOrWhiteSpace(student.FirstName) ? user.FirstName : student.FirstName;
            user.LastName  = string.IsNullOrWhiteSpace(student.LastName) ? user.LastName : student.LastName;


            //TODO: zrobić ładniejszy kod
            studentEntity.CurrentSemester = student.CurrentSemester;
            studentEntity.Pesel           = student.Pesel;
            studentEntity.EnrollmentDate  = student.EnrollmentDate;
            studentEntity.UserId          = user.Id;
            studentEntity.UserData        = user;
            //var newStudent = Mapper.Map<Student>(student);
            //newStudent.UserId = user.Id;
            //newStudent.UserData = user;

            updateResult.Student = Mapper.Map <GetStudentDTO>(studentEntity);


            _repository.UpdateStudent(studentEntity);
            if (_repository.Save())
            {
                updateResult.Updated = true;
                return(updateResult);
            }

            return(updateResult);
        }
        public async Task <IActionResult> UpdateStudentAsync(int id, UpdateStudentDTO updateStudentDTO)
        {
            if (ModelState.IsValid)
            {
                try
                {
                    var student = _mapper.Map <Student>(updateStudentDTO);
                    await _context.Update(id, student);

                    _log.AddLog(Request, _httpContextAccessor, this.ControllerContext.RouteData.Values["controller"].ToString(), this.ControllerContext.RouteData.Values["action"].ToString(), $"Eshte edituar studenti me id: {id}");
                    return(Ok(new DataMessage("Studenti eshte edituar me sukses!")));
                }
                catch (Exception ex)
                {
                    _log.AddLog(Request, _httpContextAccessor, this.ControllerContext.RouteData.Values["controller"].ToString(), this.ControllerContext.RouteData.Values["action"].ToString(), $"Deshtim ne editimin e studentit me id: {id}");
                    return(BadRequest(new DataMessage("Editimi deshtoi " + ex.Message)));
                }
            }
            else
            {
                return(BadRequest(ModelState));
            }
        }
示例#18
0
 public async Task <IActionResult> UpdateCurrentStudent([FromBody] UpdateStudentDTO updateStudent)
 {
     return(await _studentService.UpdateCurrentStudentAsync(updateStudent).ConfigureAwait(false).GetObjectResponseAsync <UpdateStudentDTO>("Success").ConfigureAwait(false));
 }