public async Task <IActionResult> Post([FromBody] AddCostCenterViewModel model) { Guid?parentId = null; if (model == null) { return(BadRequest()); } if (model.ParentCostCenterId.HasValue) { var parentCostCenter = await _costCenterRepo.GetAsync(model.ParentCostCenterId.Value); if (parentCostCenter == null) { return(NotFound(Resources.CostCenters.CostCenterResource.ParentCostCenterNotFound)); } parentId = parentCostCenter.Id; } if (await _costCenterRepo.IsExistCodeAsync(model.Code)) { ModelState.AddModelError("Code", Resources.Global.Common.ThisCodeExist); } if (await _costCenterRepo.IsExistNameAsync(model.Name)) { ModelState.AddModelError("Name", Resources.Global.Common.ThisNameExist); } if (!ModelState.IsValid) { return(BadRequest(ModelState.GetWithErrorsKey())); } var costCenter = new CostCenter(model.Code, model.Name, model.Note); if (parentId.HasValue) { costCenter.ParentId = parentId.Value; } var affectedRows = await _costCenterRepo.AddAsync(costCenter); if (affectedRows > 0) { _costCenterRepo.LoadReferences(costCenter); var viewModel = AutoMapper.Mapper.Map <CostCenterViewModel>(costCenter); return(CreatedAtRoute("GetCostCenter", new { id = costCenter.Number }, viewModel)); } return(BadRequest()); }