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));
        }
Esempio n. 2
0
                                               "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));
        }
Esempio n. 3
0
        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));
            }
        }
Esempio n. 4
0
        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();
        }
Esempio n. 5
0
        [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)));
        }
Esempio n. 7
0
        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));
        }
Esempio n. 9
0
        public CompanyDto CreateCompany(CompanyForCreationDto company)
        {
            var companyEntity = _mapper.Map <Company>(company);

            _companyRepository.CreateCompany(companyEntity);
            _repositoryManager.Save();

            var companyToReturn = _mapper.Map <CompanyDto>(companyEntity);

            return(companyToReturn);
        }
Esempio n. 10
0
        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));
        }
Esempio n. 12
0
        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));
        }
Esempio n. 13
0
        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));
        }
Esempio n. 14
0
        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}"));
            }
        }
Esempio n. 15
0
 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
     });
 }
Esempio n. 16
0
        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));
        }
Esempio n. 23
0
        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
        }
Esempio n. 24
0
 public IActionResult CreateCompanyWithUnsupportedMediaType(
     [FromBody] CompanyForCreationDto company)
 {
     // Hacky - needs work! The custom media type / attribute combination isn't working well for this.
     return(new UnsupportedMediaTypeResult());
 }