Exemplo n.º 1
0
        public IActionResult CreateCompanyWithDateOfDemise(
            [FromBody] DemisedCompanyForCreationDto 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));
        }
Exemplo n.º 2
0
                                               "application/vnd.marvin.demisedcompany.full+xml" })] // Support for XML for this call
        public IActionResult CreateDemisedCompany(
            [FromBody] DemisedCompanyForCreationDto company)
        {
            if (company == null)
            {
                return(BadRequest());
            }

            var companyEntity = AutoMapper.Mapper.Map <Company>(company);

            _repository.AddCompany(companyEntity);             // Need try / catch

            var companyToReturn        = AutoMapper.Mapper.Map <CompanyDto>(companyEntity);
            var links                  = CreateLinks(companyToReturn.Id, null); // Needs overload to avoid the null
            var linkedResourceToReturn = (IDictionary <string, object>)companyToReturn.ShapeData(null);

            linkedResourceToReturn.Add("links", links);

            return(CreatedAtRoute(
                       routeName: "GetCompany",
                       routeValues: new { id = linkedResourceToReturn["Id"] },
                       value: linkedResourceToReturn));
        }