public IActionResult CreateStaffMember([FromBody] StaffMemberForCreationDTO staffMember) { if (staffMember == null) { return(BadRequest()); } // Validate data if (!ModelState.IsValid || !_supermarketRepository.SupermarketExists(staffMember.SupermarketId)) { // return 422 return(new UnprocessableEntityObjectResult(ModelState)); } var staffMemberEntity = Mapper.Map <StaffMember>(staffMember); _supermarketRepository.AddStaffMember(staffMemberEntity); if (!_supermarketRepository.Save()) { throw new Exception("Creating a staff member failed on Save."); } var staffMemberToReturn = Mapper.Map <StaffMemberDTO>(staffMemberEntity); var links = CreateLinksForStaffMember(staffMemberToReturn.Id, null); var linkedResourceToReturn = staffMemberToReturn.ShapeData(null) as IDictionary <string, object>; linkedResourceToReturn.Add("links", links); return(CreatedAtRoute("GetStaffMember", new { id = linkedResourceToReturn["Id"] }, linkedResourceToReturn)); }
public IActionResult CreateStaffMemberCollection([FromBody] IEnumerable <StaffMemberForCreationDTO> staffMemberCollection) { if (staffMemberCollection == null) { return(BadRequest()); } // Validate data foreach (StaffMemberForCreationDTO s in staffMemberCollection) { if (!ModelState.IsValid || !_supermarketRepository.SupermarketExists(s.SupermarketId)) { // return 422 return(new UnprocessableEntityObjectResult(ModelState)); } } var staffMemberEntities = Mapper.Map <IEnumerable <StaffMember> >(staffMemberCollection); foreach (var staffMember in staffMemberEntities) { _supermarketRepository.AddStaffMember(staffMember); } if (!_supermarketRepository.Save()) { throw new Exception("Creating a staff member collection failed on save."); } var staffMemberCollectionToReturn = Mapper.Map <IEnumerable <StaffMemberDTO> >(staffMemberEntities); var idsAsString = string.Join(",", staffMemberCollectionToReturn.Select(s => s.Id)); return(CreatedAtRoute("GetStaffMemberCollection", new { ids = idsAsString }, staffMemberCollectionToReturn)); }