Esempio n. 1
0
        public async Task <IActionResult> PartialUpdateWorkhoursAsync([FromRoute] Guid workhoursId, [FromBody] JsonPatchDocument <WorkhoursUpdateDto> workhoursToPartialUpdate)
        {
            if (workhoursToPartialUpdate == null)
            {
                return(BadRequest());
            }

            var foundWorkhours = await _workhoursRepository.GetFirstByConditionAsync(j => j.Id == workhoursId);

            if (foundWorkhours == null)
            {
                var workhoursToCreate = new WorkhoursUpdateDto();

                // check if necessary
                workhoursToPartialUpdate.ApplyTo(workhoursToCreate, ModelState);

                var workhoursToAdd = Mapper.Map <Workhours>(workhoursToCreate);
                workhoursToAdd.Id = Guid.NewGuid();

                _workhoursRepository.Create(workhoursToAdd);

                await _workhoursRepository.SaveChangesAsync();

                var workhoursToReturn = await _workhoursRepository.GetFirstByConditionAsync(j => j.Id == workhoursToAdd.Id);

                return(CreatedAtRoute("GetWorkhours", new { workhoursId = workhoursToReturn.Id }, workhoursToReturn));
            }
            // why map back and fourth?
            var workhoursToPatch = Mapper.Map <WorkhoursUpdateDto>(foundWorkhours);

            // check if necessary
            workhoursToPartialUpdate.ApplyTo(workhoursToPatch, ModelState);

            // why map back and fourth?
            Mapper.Map(workhoursToPatch, foundWorkhours);

            _workhoursRepository.Update(foundWorkhours);

            await _workhoursRepository.SaveChangesAsync();

            // check if it returns "old" workhours before update. Else find and return?
            return(Ok(foundWorkhours));

            //return NoContent();
        }
Esempio n. 2
0
        public async Task <IActionResult> UpdateWorkhoursAsync(
            [FromRoute, SwaggerParameter("Id of workhours to update", Required = true)] Guid workhoursId,
            [FromBody, SwaggerParameter("Object with the updates", Required = true)] WorkhoursUpdateDto workhoursToUpdate,
            [FromHeader(Name = "accept"), SwaggerParameter("Request Hateoas")] string mediaType)
        {
            var foundWorkhours = await _workhoursRepository.GetFirstByConditionAsync(j => j.Id == workhoursId);

            if (foundWorkhours == null)
            {
                var workhoursToAdd = Mapper.Map <Workhours>(workhoursToUpdate);
                workhoursToAdd.Id = Guid.NewGuid();

                _workhoursRepository.Create(workhoursToAdd);

                if (!await _workhoursRepository.SaveChangesAsync())
                {
                    throw new Exception("Failed to save an upserting");
                }

                var workhoursToReturn = Mapper.Map <WorkhoursDto>(await _workhoursRepository.GetFirstByConditionAsync(j => j.Id == workhoursId));

                if (mediaType == "application/vnd.AO.json+hateoas")
                {
                    var shapedWorkhours = _controllerHelper.ShapeAndAddLinkToObject(workhoursToReturn, "Workhours", null);

                    return(CreatedAtRoute("GetWorkhours", new { workhoursId = workhoursToReturn.Id }, shapedWorkhours));
                }
                return(CreatedAtRoute("GetWorkhours", new { workhoursId = workhoursToReturn.Id }, workhoursToReturn));
            }

            Mapper.Map(workhoursToUpdate, foundWorkhours);

            _workhoursRepository.Update(foundWorkhours);

            if (!await _workhoursRepository.SaveChangesAsync())
            {
                throw new Exception("Failed to save on upserting");
            }

            return(NoContent());
        }
Esempio n. 3
0
        public async Task <IActionResult> UpdateWorkhoursAsync([FromRoute] Guid workhoursId, [FromBody] WorkhoursUpdateDto workhoursToUpdate)
        {
            var foundWorkhours = await _workhoursRepository.GetFirstByConditionAsync(j => j.Id == workhoursId);

            if (foundWorkhours == null)
            {
                var workhoursToAdd = Mapper.Map <Workhours>(workhoursToUpdate);
                workhoursToAdd.Id = Guid.NewGuid();

                _workhoursRepository.Create(workhoursToAdd);

                await _workhoursRepository.SaveChangesAsync();

                var workhoursToReturn = await _workhoursRepository.GetFirstByConditionAsync(j => j.Id == workhoursToAdd.Id);

                return(CreatedAtRoute("GetWorkhours", new { workhoursId = workhoursToReturn.Id }, workhoursToReturn));
            }

            Mapper.Map(workhoursToUpdate, foundWorkhours);

            _workhoursRepository.Update(foundWorkhours);

            await _workhoursRepository.SaveChangesAsync();

            // check if it returns "old" workhours before update. Else find and return?
            return(Ok(foundWorkhours));

            //return NoContent();
        }
Esempio n. 4
0
        public async Task <IActionResult> PartialUpdateWorkhoursAsync(
            [FromRoute, SwaggerParameter("Id of workhours to partially update", Required = true)] Guid workhoursId,
            [FromBody, SwaggerParameter("Json patch operations to perform", Required = true)] JsonPatchDocument <WorkhoursUpdateDto> jsonPatchDocument,
            [FromHeader(Name = "accept"), SwaggerParameter("Request Hateoas")] string mediaType)
        {
            var foundWorkhours = await _workhoursRepository.GetFirstByConditionAsync(j => j.Id == workhoursId);

            if (foundWorkhours == null)
            {
                var workhoursToCreate = new WorkhoursUpdateDto();

                jsonPatchDocument.ApplyTo(workhoursToCreate, ModelState);

                if (!ModelState.IsValid)
                {
                    throw new Exception("Invalid model state");
                }

                var workhoursToAdd = Mapper.Map <Workhours>(workhoursToCreate);

                workhoursToAdd.Id = Guid.NewGuid();

                _workhoursRepository.Create(workhoursToAdd);

                if (!await _workhoursRepository.SaveChangesAsync())
                {
                    throw new Exception("Failed to save on upserting");
                }

                //var workhoursToReturn = await _workhoursRepository.GetFirstByConditionAsync(j => j.Id == workhoursToAdd.Id);
                var workhoursToReturn = Mapper.Map <WorkhoursDto>(workhoursToAdd);

                if (mediaType == "application/vnd.AO.json+hateoas")
                {
                    var shapedWorkhours = _controllerHelper.ShapeAndAddLinkToObject(workhoursToReturn, "Workhours", null);

                    return(CreatedAtRoute("GetWorkhours", new { workhoursId = workhoursToReturn.Id }, shapedWorkhours));
                }
                return(CreatedAtRoute("GetWorkhours", new { workhoursId = workhoursToReturn.Id }, workhoursToReturn));
            }
            // why map back and fourth?
            var workhoursToPatch = Mapper.Map <WorkhoursUpdateDto>(foundWorkhours);

            // check if necessary
            jsonPatchDocument.ApplyTo(workhoursToPatch, ModelState);

            if (!ModelState.IsValid)
            {
                throw new Exception("Invalid model state");
            }

            // why map back and fourth?
            Mapper.Map(workhoursToPatch, foundWorkhours);

            _workhoursRepository.Update(foundWorkhours);

            if (!await _workhoursRepository.SaveChangesAsync())
            {
                throw new Exception("Failed to save on upserting");
            }

            return(NoContent());
        }