Esempio n. 1
0
        public async Task <IActionResult> Put(long id, [FromBody] EditSellerViewModel model)
        {
            Guid?parentId = null;

            if (model == null)
            {
                return(BadRequest());
            }

            if (model.Id != id)
            {
                return(BadRequest());
            }

            var seller = await _sellerRepo.GetAsync(id);

            if (seller == null)
            {
                return(NotFound(Resources.Sellers.SellerResource.SellerNotFound));
            }

            if (model.ParentSellerId.HasValue)
            {
                var parentSeller = await _sellerRepo.GetAsync(model.ParentSellerId.Value);

                if (parentSeller == null)
                {
                    return(NotFound(Resources.Sellers.SellerResource.ParentSellerNotFound));
                }
                parentId = parentSeller.Id;
            }

            if (await _sellerRepo.IsExistCodeAsync(seller.Id, model.Code))
            {
                ModelState.AddModelError("Code", Resources.Global.Common.ThisCodeExist);
            }
            if (await _sellerRepo.IsExistNameAsync(seller.Id, model.Name))
            {
                ModelState.AddModelError("Name", Resources.Global.Common.ThisNameExist);
            }
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState.GetWithErrorsKey()));
            }

            seller          = AutoMapper.Mapper.Map(model, seller);
            seller.ParentId = parentId;

            var affectedRows = await _sellerRepo.EditAsync(seller);

            if (affectedRows > 0)
            {
                _sellerRepo.LoadReferences(seller);

                var viewModel = AutoMapper.Mapper.Map <SellerViewModel>(seller);

                return(CreatedAtRoute("GetSeller", new { id = seller.Number }, viewModel));
            }
            return(BadRequest());
        }