Esempio n. 1
0
        public async Task <ActionResult <ReturnResponse> > PutCategory([FromRoute] int categoryId, [FromBody] CategoryToUpdate categoryToUpdate)
        {
            var dbTransaction = await _dataContext.Database.BeginTransactionAsync();

            var result = await _categoryRepository.UpdateCategory(categoryId, categoryToUpdate);

            if (result.StatusCode == Utils.Success)
            {
                result.ObjectValue = _mapper.Map <CategoryResponse>((Category)result.ObjectValue);
                await dbTransaction.CommitAsync();

                return(StatusCode(StatusCodes.Status200OK, result));
            }
            else
            {
                await dbTransaction.RollbackAsync();

                return(StatusCode(StatusCodes.Status400BadRequest, result));
            }
        }
        public async Task <ReturnResponse> UpdateCategory(int categoryId, CategoryToUpdate categoryToUpdate)
        {
            if (categoryToUpdate == null)
            {
                return(new ReturnResponse()
                {
                    StatusCode = Utils.ObjectNull,
                    StatusMessage = Utils.StatusMessageObjectNull
                });
            }

            if (categoryId != categoryToUpdate.CategoryId)
            {
                return(new ReturnResponse()
                {
                    StatusCode = Utils.BadRequest,
                    StatusMessage = Utils.StatusMessageBadRequest
                });
            }

            var categoryDetails = await _dataContext.Category.Where(a => a.CategoryId == categoryId).FirstOrDefaultAsync();

            if (categoryDetails == null)
            {
                return(new ReturnResponse()
                {
                    StatusCode = Utils.NotFound,
                    StatusMessage = Utils.StatusMessageNotFound
                });
            }

            var categoryToStore = _mapper.Map(categoryToUpdate, categoryDetails);
            var updateResult    = _globalRepository.Update(categoryToStore);

            if (!updateResult)
            {
                return(new ReturnResponse()
                {
                    StatusCode = Utils.NotSucceeded,
                    StatusMessage = Utils.StatusMessageNotSucceeded
                });
            }

            var saveResult = await _globalRepository.SaveAll();

            if (!saveResult.HasValue)
            {
                return(new ReturnResponse()
                {
                    StatusCode = Utils.SaveError,
                    StatusMessage = Utils.StatusMessageSaveError
                });
            }

            if (!saveResult.Value)
            {
                return(new ReturnResponse()
                {
                    StatusCode = Utils.SaveNoRowAffected,
                    StatusMessage = Utils.StatusMessageSaveNoRowAffected
                });
            }

            return(new ReturnResponse()
            {
                StatusCode = Utils.Success,
                StatusMessage = Utils.StatusMessageSuccess,
                ObjectValue = categoryToStore
            });
        }