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()); }