コード例 #1
0
        public async Task <IActionResult> Put(int id, [FromBody] JobUpdateDto jobUpdateDto)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest());
            }

            var job = await _unitOfWork.Jobs.GetJobAsync(id);

            if (job == null)
            {
                return(NotFound());
            }

            _unitOfWork.JobOccupations.Delete(job.Occupations);

            await _unitOfWork.CompleteAsync();

            _mapper.Map(jobUpdateDto, job);

            //job.SetEditInfo("Iman");

            _unitOfWork.Jobs.Edit(job);

            await _unitOfWork.CompleteAsync();

            return(NoContent());
        }
コード例 #2
0
        public async Task <IActionResult> PartialUpdateJobAsync(
            [FromRoute, SwaggerParameter("Id of the job to partially update", Required = true)] Guid jobId,
            [FromBody, SwaggerParameter("Json patch operations to perform", Required = true)] JsonPatchDocument <JobUpdateDto> jobToPartialUpdate,
            [FromHeader(Name = "accept"), SwaggerParameter("Request Hateoas")] string mediaType)
        {
            if (jobToPartialUpdate == null)
            {
                return(BadRequest());
            }

            var foundJob = await _jobRepository.GetFirstByConditionAsync(j => j.Id == jobId);

            if (foundJob == null)
            {
                var jobToCreate = new JobUpdateDto();

                // check if necessary
                jobToPartialUpdate.ApplyTo(jobToCreate, ModelState);

                var jobToAdd = Mapper.Map <Job>(jobToCreate);
                jobToAdd.Id = Guid.NewGuid();

                _jobRepository.Create(jobToAdd);

                if (!await _jobRepository.SaveChangesAsync())
                {
                    throw new Exception("Failed to partially update job");
                }

                var jobToReturn = await _jobRepository.GetFirstByConditionAsync(j => j.Id == jobToAdd.Id);

                if (mediaType == "application/vnd.AO.json+hateoas")
                {
                    var shapedJob = _controllerHelper.ShapeAndAddLinkToObject(jobToReturn, "Job", null);
                    return(CreatedAtRoute("GetJob", new { jobId = jobToReturn.Id }, shapedJob));
                }

                return(CreatedAtRoute("GetJob", new { jobId = jobToReturn.Id }, jobToReturn));
            }
            // why map back and fourth?
            var jobToPatch = Mapper.Map <JobUpdateDto>(foundJob);

            // check if necessary
            jobToPartialUpdate.ApplyTo(jobToPatch, ModelState);

            // why map back and fourth?
            Mapper.Map(jobToPatch, foundJob);

            _jobRepository.Update(foundJob);

            if (!await _jobRepository.SaveChangesAsync())
            {
                throw new Exception("Failed to partially update job");
            }


            return(NoContent());
        }
コード例 #3
0
ファイル: JobController.cs プロジェクト: davidikin45/Test
        public async Task <IActionResult> Update(Guid id, [FromBody] JobUpdateDto dto)
        {
            var job = await _applicationDbContext.Jobs.FindAsync(id);

            if (job == null)
            {
                return(NotFound());
            }

            dto.Update(job);

            await _applicationDbContext.SaveChangesAsync();

            return(NoContent());
        }
コード例 #4
0
ファイル: JobsController.cs プロジェクト: autismhub/API
        public ActionResult UpdateJob(int id, JobUpdateDto jobUpdateDto)
        {
            Job jobModelFromRepo = _repository.GetJobById(id);

            if (jobModelFromRepo == null)
            {
                return(NotFound());
            }
            _mapper.Map(jobUpdateDto, jobModelFromRepo);

            _repository.UpdateJob(jobModelFromRepo);
            _repository.SaveChanges();

            return(NoContent());
        }
コード例 #5
0
        public async Task <ActionResult> UpdateJob(JobUpdateDto jobUpdateDto, int jobId)
        {
            var job = await _jobRepository.GetJobAsync(jobId);

            _mapper.Map(jobUpdateDto, job);

            _jobRepository.Update(job);

            if (await _jobRepository.SaveAllAsync())
            {
                return(NoContent());
            }

            return(BadRequest("Failed to update job profile."));
        }
コード例 #6
0
        public void Update_Delayed()
        {
            var dto = new JobUpdateDto()
            {
                Status = JobStatus.Delayed, DelayReason = "Other"
            };
            var job = new Job()
            {
                Id = Guid.Parse("D0E96FF7-BB53-472B-A42C-000112B8FCA1"), ContractorID = null, Name = "Job22_25_1", Floor = 22, Room = 25, StatusNum = JobStatus.NotStarted, RJobID = null, RoomTypeId = Guid.Parse("86F23884-1971-4BDF-90DB-629F887ED76A")
            };

            dto.Update(job);

            Assert.Equal(dto.Status, job.StatusNum);
            Assert.Equal(dto.DelayReason, job.DelayReason);
        }
コード例 #7
0
        public IActionResult UpdateJob(int JobId, [FromBody] JobUpdateDto JobDto)
        {
            if (JobDto == null || JobId != JobDto.Id)
            {
                return(BadRequest(ModelState));
            }

            var JobObj = _mapper.Map <Job>(JobDto);

            if (!_jsRepo.UpdateJob(JobObj))
            {
                ModelState.AddModelError("", $"Something went wrong when updating the record {JobObj.Name}");
                return(StatusCode(500, ModelState));
            }
            return(NoContent());
        }
コード例 #8
0
        public IActionResult Update(int id, JobUpdateDto model)
        {
            TempData["Active"] = TempDataInfo.Job;
            var job  = _jobService.GetById(id);
            var list = _departmentService.List();

            if (ModelState.IsValid)
            {
                job.Name         = model.Name;
                job.DepartmentId = model.DepartmentId;
                job.CreationDate = model.CreationDate;
                job.Description  = model.Description;
                _jobService.Update(job);
                return(RedirectToAction("List"));
            }
            ViewBag.Departments = new SelectList(list, "DepartmentId", "DepartmentName", model.DepartmentId);
            return(View(model));
        }
コード例 #9
0
        public async Task Update_Invalid_ReturnsNotFoundResult()
        {
            var serviceProvider = new ServiceCollection().AddLogging().BuildServiceProvider();
            var factory         = serviceProvider.GetService <ILoggerFactory>();
            var logger          = factory.CreateLogger <JobController>();

            var options = new DbContextOptionsBuilder <ApplicationDbContext>().UseInMemoryDatabase("Update_Invalid_ReturnsNotFoundResult").Options;

            await SeedDatabase(options);

            using (var context = new ApplicationDbContext(options))
            {
                var controller = new JobController(context, logger);
                var dto        = new JobUpdateDto()
                {
                    Status = JobStatus.NotStarted
                };
                var result = await controller.Update(Guid.Parse("EC572A33-1D58-4671-870E-BC4756F79EE4"), dto);

                Assert.IsType <NotFoundResult>(result);
            }
        }
コード例 #10
0
        public async Task Update_Valid_ReturnsNoContentResult()
        {
            var serviceProvider = new ServiceCollection().AddLogging().BuildServiceProvider();
            var factory         = serviceProvider.GetService <ILoggerFactory>();
            var logger          = factory.CreateLogger <JobController>();

            var options = new DbContextOptionsBuilder <ApplicationDbContext>().UseInMemoryDatabase("Update_NotStarted_ReturnsNoContentResult").Options;

            await SeedDatabase(options);

            using (var context = new ApplicationDbContext(options))
            {
                var controller = new JobController(context, logger);
                var dto        = new JobUpdateDto()
                {
                    Status = JobStatus.NotStarted
                };
                var result = await controller.Update(Guid.Parse("A5F29486-04F2-439A-979D-0A3F9E323B92"), dto);

                Assert.IsType <NoContentResult>(result);
            }
        }
コード例 #11
0
        public async Task <IActionResult> UpdateJobAsync(
            [FromRoute, SwaggerParameter("Id of the job to update", Required = true)] Guid jobId,
            [FromBody, SwaggerParameter("Object with updates to job", Required = true)] JobUpdateDto jobToUpdate,
            [FromHeader(Name = "accept"), SwaggerParameter("Request Hateoas")] string mediaType)
        {
            var foundJob = await _jobRepository.GetFirstByConditionAsync(j => j.Id == jobId);

            if (foundJob == null)
            {
                var jobToAdd = Mapper.Map <Job>(jobToUpdate);
                jobToAdd.Id = Guid.NewGuid();

                _jobRepository.Create(jobToAdd);

                await _jobRepository.SaveChangesAsync();

                var jobToReturn = await _jobRepository.GetFirstByConditionAsync(j => j.Id == jobToAdd.Id);

                if (mediaType == "application/vnd.AO.json+hateoas")
                {
                    var shapedJob = _controllerHelper.ShapeAndAddLinkToObject(jobToReturn, "Job", null);
                    return(CreatedAtRoute("GetJob", new { jobId = jobToReturn.Id }, shapedJob));
                }

                return(CreatedAtRoute("GetJob", new { jobId = jobToReturn.Id }, jobToReturn));
            }

            Mapper.Map(jobToUpdate, foundJob);

            _jobRepository.Update(foundJob);

            if (!await _jobRepository.SaveChangesAsync())
            {
                throw new Exception("Failed to update job");
            }

            return(NoContent());
        }
コード例 #12
0
ファイル: JobsController.cs プロジェクト: autismhub/API
        public ActionResult PartialJobUpdate(int id, JsonPatchDocument <JobUpdateDto> patchDoc)
        {
            Job jobModelFromRepo = _repository.GetJobById(id);

            if (jobModelFromRepo == null)
            {
                return(NotFound());
            }
            JobUpdateDto jobToPatch = _mapper.Map <JobUpdateDto>(jobModelFromRepo);

            patchDoc.ApplyTo(jobToPatch, ModelState);
            if (!TryValidateModel(jobToPatch))
            {
                return(ValidationProblem(ModelState));
            }

            _mapper.Map(jobToPatch, jobModelFromRepo);

            _repository.UpdateJob(jobModelFromRepo);
            _repository.SaveChanges();

            return(NoContent());
        }