public async Task <ActionResult <CompanyDto> > AddCompany([FromBody] CompanyForCreationDto companyForCreation) { var validationResults = new CompanyForCreationDtoValidator().Validate(companyForCreation); validationResults.AddToModelState(ModelState, null); if (!ModelState.IsValid) { return(BadRequest(new ValidationProblemDetails(ModelState))); //return ValidationProblem(); } var company = _mapper.Map <Company>(companyForCreation); await _companyRepo.AddCompany(company); var saveSuccessful = await _companyRepo.SaveAsync(); if (saveSuccessful) { var companyFromRepo = await _companyRepo.GetCompanyAsync(company.Id); var companyDto = _mapper.Map <CompanyDto>(companyFromRepo); var response = new Response <CompanyDto>(companyDto); return(CreatedAtRoute("GetCompany", new { company.Id }, response)); } return(StatusCode(500)); }
"application/vnd.marvin.company.full+xml" })] // Versioning support with custom attribute public IActionResult CreateCompany( [FromBody] CompanyForCreationDto company) { // Automatically handles some basic validation with DTO serialization if (company == null) { return(BadRequest()); } // TODO - Add some validation var companyEntity = AutoMapper.Mapper.Map <Company>(company); _repository.AddCompany(companyEntity); // Needs try catch // Support for dynamic HATEOAS on POST var companyToReturn = AutoMapper.Mapper.Map <CompanyDto>(companyEntity); IEnumerable <LinkDto> links = CreateLinks( id: companyToReturn.Id, fields: null); // TODO - overload function so null isn't sent when data shaping isn't required var linkedResourceToReturn = (IDictionary <string, object>)companyToReturn.ShapeData(null); linkedResourceToReturn.Add("links", links); return(CreatedAtRoute( routeName: "GetCompany", routeValues: new { id = linkedResourceToReturn["Id"] }, value: linkedResourceToReturn)); }
public async Task <ActionResult <long> > Create([FromBody] CompanyForCreationDto company) { try { if (company == null) { return(BadRequest("Company object is null")); } else if (!ModelState.IsValid) { return(BadRequest("Invalid model object")); } var companyEntity = _mapper.Map <Company>(company); _repository.Company.CreateCompany(companyEntity); await _repository.SaveAsync(); var createdCompany = _mapper.Map <CompanyDto>(companyEntity); return(StatusCode(StatusCodes.Status201Created, createdCompany.Id)); } catch (Exception) { return(StatusCode(StatusCodes.Status500InternalServerError)); } }
public void CreateCompany_ValidInputCreatesCompanyAndReturnsAnOkResult_WithAnCompany() { // Arrange var newCompany = SeedTestData.GetTestCompany(); mockRepo.Setup(repo => repo.Company.CreateCompany(It.IsAny <Company>())) .Verifiable(); var controller = new CompaniesController(mockRepo.Object, _mapper); CompanyForCreationDto newCompanyDto = new CompanyForCreationDto() { Name = newCompany.Name, Address = newCompany.Address, Country = newCompany.Country }; // Act var result = controller.CreateCompany(newCompanyDto); // Assert Assert.IsInstanceOf <OkObjectResult>(result); var okResult = result as OkObjectResult; Assert.That(okResult.Value, Is.TypeOf <Company>()); Company resultComp = okResult.Value as Company; Assert.AreEqual(resultComp.Name, newCompany.Name); Assert.AreEqual(resultComp.Address, newCompany.Address); Assert.AreEqual(resultComp.Country, newCompany.Country); mockRepo.Verify(); }
[HttpPost] //via body //nu met DTO public IActionResult CreateCompany([FromBody] CompanyForCreationDto companyDto) { if (companyDto == null) { BadRequest("Company object is invalid"); } //To do : companyDto object ozetten naaar een company object // 2 manieren mogelijk //ofwel manueel code schrijven //Company company = new Company() //{ // Name = companyDto.Name, // Address = companyDto.Address, // Country = companyDto.Country //}; //ofwel met automapper //altijd configuratie nodig die 1 keer wordt aangesproken bij opstarten Company company = _mapper.Map <Company>(companyDto); //automapper, dus dit doet hetzelfde als die manuele --> maar ook in mappingprofile nodig _repositoryManager.Company.CreateCompany(company); _repositoryManager.Save(); return(Ok(company)); //return NoContent(); }
public ActionResult <CompanyDto> CreateCompany([FromBody] CompanyForCreationDto companyForCreationDto) { var company = mapper.Map <Company>(companyForCreationDto); company.Id = Guid.NewGuid(); repository.Company.CreateCompany(company); repository.Save(); return(CreatedAtRoute(nameof(GetCompany), new { id = company.Id }, mapper.Map <CompanyDto>(company))); }
public async Task <ActionResult <CompanyDto> > CreateCompany(CompanyForCreationDto companyForCreationDto) { var company = companyForCreationDto.ToEntity(); _repository.AddCompany(company); await _repository.SaveChangesAsync(); return(CreatedAtRoute("GetCompany", new { companyId = company.Id }, company)); }
public async Task <IActionResult> CreateCompany([FromBody] CompanyForCreationDto company) { var companyEntity = _mapper.Map <Company>(company); _repository.Company.CreateCompany(companyEntity); await _repository.SaveAsync(); var companyToReturn = _mapper.Map <CompanyDto>(companyEntity); return(CreatedAtRoute("CompanyById", new { id = companyToReturn.Id }, companyToReturn)); }
public CompanyDto CreateCompany(CompanyForCreationDto company) { var companyEntity = _mapper.Map <Company>(company); _companyRepository.CreateCompany(companyEntity); _repositoryManager.Save(); var companyToReturn = _mapper.Map <CompanyDto>(companyEntity); return(companyToReturn); }
public void CreateCompany_InValidInputNull_ReturnsBadRequestObjectResult() { // Arrange var controller = new CompaniesController(mockRepo.Object, _mapper); CompanyForCreationDto newCompanyDto = null; // Act var result = controller.CreateCompany(newCompanyDto); // Assert Assert.IsInstanceOf <BadRequestObjectResult>(result); mockRepo.Verify(repo => repo.Company.CreateCompany(It.IsAny <Company>()), Times.Never); }
public ActionResult <CompanyDto> CreateCompany(CompanyForCreationDto companyForCreationDto) { var entity = mapper.Map <Company>(companyForCreationDto); jobRepository.AddCompany(entity); jobRepository.Save(); var companyToReturn = mapper.Map <CompanyDto>(entity); return(CreatedAtRoute("GetCompany", new { companyId = companyToReturn.Id }, companyToReturn)); }
public async Task <IActionResult> CreateCompany([FromBody] CompanyForCreationDto company) { // model validation is performed through the action service filter var companyEntity = _mapper.Map <Company>(company); _repository.Company.CreateCompany(companyEntity); await _repository.SaveAsync(); var companyToReturn = _mapper.Map <CompanyDto>(companyEntity); return(CreatedAtRoute("CompanyById", new { id = companyToReturn.Id }, companyToReturn)); }
public async Task <IActionResult> CreateCompany([FromBody] CompanyForCreationDto company) { //------------- The commented code below is replaced by the ActionFilter called as an attribute above ---------- //if (company == null) //{ // _logger.LogError("CompanyForCreationDto object sent from client is null."); // return BadRequest("CompanyForCreationDto object is null"); //} ////Suppress the BadRequest error when the ModelState is invalid //if (!ModelState.IsValid) //{ // _logger.LogError("Invalid model state for the CompanyForCreationDto object"); // return UnprocessableEntity(ModelState); //} //Get child Employees resource if they exist List <Employee> employees = null; if (company.Employees != null) { employees = _repository.Company.GetEmployees(company.Employees); } //var companyEntity = _mapper.Map<Company>(company); var companyEntity = new Company { Name = company.Name, Address = company.Address, Country = company.Country, Employees = employees }; _repository.Company.CreateCompany(companyEntity); await _repository.SaveAsync(); //var companyToReturn = _mapper.Map<CompanyDto>(companyEntity); var companyToReturn = new CompanyDto { Id = companyEntity.Id, Name = companyEntity.Name, FullAddress = string.Join(' ', companyEntity.Address, companyEntity.Country) }; return(CreatedAtRoute("CompanyById", new { id = companyToReturn.Id }, companyToReturn)); }
public IActionResult CreateCompany([FromBody] CompanyForCreationDto company) { #region использование валидации /*Чтобы вернуть 422 вместо 400, первое, что нам нужно сделать, это подавить * BadRequest ошибка, когда ModelState является недействительным. * Мы собираемся сделать это, добавив этот код в Startup класс в ConfigureServices метод: * services.Configure<ApiBehaviorOptions>(options => * { * options.SuppressModelStateInvalidFilter = true; * }); */ #endregion if (!ModelState.IsValid) { _logger.LogError("Invalid model state for the EmployeeForCreationDto object"); return(UnprocessableEntity(ModelState)); } var checkCompany = _wrapper.Company.FindByCondition(x => x.Name.Equals(company.Name), false).ToList(); if (checkCompany.Count != 0) { _logger.LogError("Добавить компанию не удалось. Компания с таким именем уже существует"); return(BadRequest("Добавить компанию не удалось. Компания с таким именем уже существует")); } if (company == null) { _logger.LogError("CompanyForCreationDto object sent from client is null."); return(BadRequest("CompanyForCreationDto object is null")); } try { var companyEntity = _mapper.Map <Company>(company); _wrapper.Company.CreateCompany(companyEntity); _wrapper.SaveAsync(); var companyToReturn = _mapper.Map <CompanyDto>(companyEntity); return(CreatedAtRoute("CompanyById", new { id = companyToReturn.Id }, companyToReturn));//CreatedAtRoute Метод предназначен для возвращения URI для вновь созданного ресурса при вызове метода POST для хранения какой - то новый объект. } catch (Exception ex) { _logger.LogError($"При попвтке создания организации с с названием {company.Name} произошла ошибка. Подробности" + $"{ex.Message}, {ex.Data}, {ex.TargetSite}"); return(BadRequest($"При попвтке создания организации с с названием {company.Name} произошла ошибка. Подробности" + $"{ex.Message}, {ex.Data}, {ex.TargetSite}")); } }
public static Company ToEntity(this CompanyForCreationDto source) { return(new Company() { Name = source.Name, HqCity = source.HqCity, HqCountry = source.HqCountry, PostCode = source.PostCode, CompanyDescription = source.CompanyDescription, Category = source.Category.ToCompanyCategory(), LogoFileName = source.LogoFileName, Website = source.Website, EmployerBrandWebsite = source.EmployerBrandWebsite }); }
public IActionResult UpdateCompany(int id, [FromBody] CompanyForCreationDto Company) { if (Company == null) { return(BadRequest()); } var companyFromStore = CompaniesDataStore.Current.Companies.FirstOrDefault(c => c.Id == id); if (companyFromStore == null) { return(NotFound()); } companyFromStore.CompanyName = Company.Company; return(NoContent()); }
public IActionResult CreateCompany([FromBody] CompanyForCreationDto company) { if (company == null) { var message = ErrorMessages.CompanyIsNull; _logger.LogError(message); return(BadRequest(message)); } var createdCompany = _companyService.CreateCompany(company); return(CreatedAtRoute("GetCompanyById", new { id = createdCompany.Id }, createdCompany)); }
public async Task <IActionResult> CreateCompany([FromBody] CompanyForCreationDto company) { if (company == null) { _logger.LogError("CompanyForCreationDto object sent from client is null."); return(BadRequest("CompanyForCreationDto object is null")); } var companyEntity = _mapper.Map <Company>(company); await _repository.Company.CreateCompany(companyEntity); await _repository.SaveAsync(); var companyToReturn = _mapper.Map <CompanyDto>(companyEntity); return(CreatedAtRoute("CompanyById", new { id = companyToReturn.Id }, companyToReturn)); }
public async Task <IActionResult> CreateCompany([FromBody] CompanyForCreationDto company) { var companyEntity = _mapper.Map <Company>(company); _repository.Company.CreateCompany(companyEntity); //_repository.Save(); await _repository.SaveAsync(); var companyToReturn = _mapper.Map <CompanyDto>(companyEntity); return(CreatedAtRoute("CompanyById", new { id = companyToReturn.Id }, companyToReturn)); //CreatedAtRoute = Returns a URI to the newly created resource when //you invoke a POST method to store some new object }
public IActionResult CreateCompany([FromBody] CompanyForCreationDto Company) { if (Company == null) { return(BadRequest()); } var finalCompany = new CompanyDto() { Id = 3, CompanyName = Company.Company, CompanyDescription = Company.Company, Status = Company.Company }; CompaniesDataStore.Current.Companies.Add(finalCompany); return(CreatedAtRoute("GetCompany", new { id = 3 }, finalCompany)); }
public ActionResult <CompanyDto> CreateCompany(CompanyForCreationDto company) { var companyEntity = _mapper.Map <Entities.Company>(company); _companyRepository.AddCompany(companyEntity); _companyRepository.Save(); var companyToReturn = _mapper.Map <CompanyDto>(companyEntity); var links = CreateLinksForCompany(companyToReturn.Id, null); var linkedResourceToReturn = companyToReturn.ShapeData(null) as IDictionary <string, object>; linkedResourceToReturn.Add("links", links); return(CreatedAtRoute("GetCompany", new { companyId = linkedResourceToReturn["Id"] }, linkedResourceToReturn)); }
public async Task <IActionResult> CreateCompany([FromBody] CompanyForCreationDto company) { if (company == null) { _logger.LogError("CompanyForCreationDto object sent from client is null."); return(BadRequest("CompanyForCreationDto object is null")); } if (!ModelState.IsValid) { _logger.LogError("Invalid model state for the CompanyForCreationDto object"); return(UnprocessableEntity(ModelState)); } var companyEntity = _mapper.Map <Company>(company); _repositoryManager.Company.CreateCompany(companyEntity); await _repositoryManager.SaveAsync(); var companyToReturn = _mapper.Map <CompanyDto>(companyEntity); return(CreatedAtRoute("CompanyById", new { id = companyToReturn.Id }, companyToReturn)); }
public IActionResult CreateCompany([FromBody] CompanyForCreationDto companyDto) { if (companyDto == null) { return(BadRequest("CompanyDto object is empty")); } //To do: het companyDto object omzetten naar een company object //2 manieren mogelijk //1) Ofwel manueel code schrijven: //Company company = new Company() //{ // Name = companyDto.Name, // Address = companyDto.Address, // Country = companyDto.Country //}; //2) Ofwel Automapper Company company = _mapper.Map <Company>(companyDto); _repositoryManager.Company.CreateCompany(company); _repositoryManager.Save(); return(Ok(company)); //200 met data van nieuw gecreëerde company }
public IActionResult CreateCompanyWithUnsupportedMediaType( [FromBody] CompanyForCreationDto company) { // Hacky - needs work! The custom media type / attribute combination isn't working well for this. return(new UnsupportedMediaTypeResult()); }