// POST: api/Roles public async Task <IActionResult> Post( [FromBody] RoleForManipulationDto roleDto, [FromHeader(Name = "Accept")] string mediaType) { var response = await businessLogic.CreateRole(roleDto, mediaType); if (response.IsSuccessful) { var responseAsRoleDto = (GenericResponse <IDictionary <string, object> >)response; return(CreatedAtRoute("GetRole", new { id = responseAsRoleDto.Result["Id"] }, responseAsRoleDto.Result)); } var responseAsIdentityResult = (GenericResponse <IdentityResult>)response; return(BadRequest(responseAsIdentityResult.Result)); }
public async Task <GenericResponse> CreateRole(RoleForManipulationDto role, string mediaType) { try { if (!MediaTypeHeaderValue.TryParse(mediaType, out MediaTypeHeaderValue parsedMediaType)) { return(GenericResponseBuilder.NoSuccess("Wrong media type")); } var roleEntity = this.mapper.Map <IdentityRole>(role); var result = await this.dataService.RoleManager.CreateAsync(roleEntity); if (!result.Succeeded) { return(GenericResponseBuilder.NoSuccess <IdentityResult>(result)); } var roleToReturn = this.mapper.Map <RoleDto>(roleEntity) .ShapeData() as IDictionary <string, object>;; var includeLinks = parsedMediaType.SubTypeWithoutSuffix .EndsWith("hateoas", StringComparison.InvariantCultureIgnoreCase); if (includeLinks) { var links = CreateLinksForRole(Guid.Parse(roleEntity.Id)); roleToReturn.Add("links", links); } return(GenericResponseBuilder.Success <IDictionary <string, object> >(roleToReturn)); } catch (Exception ex) { logger.LogError(string.Format("Error in BLL - CreateRole. {0}", ex.Message)); return(GenericResponseBuilder.NoSuccess <IDictionary <string, object> >(null, ex.Message.ToString())); } }