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)); }
"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)); }