コード例 #1
0
        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());
        }