// POST: api/applicationclients public async Task <ActionResult <ApplicationClientDto> > Post( [FromBody] ApplicationClientForCreationDto clientForCreationDto, [FromHeader(Name = "Accept")] string mediaType) { var response = await this.businessLogic.CreateApplicationClient(clientForCreationDto, mediaType); if (!response.IsSuccessful) { return(BadRequest(new { message = response.ErrorMessage })); } return(CreatedAtRoute("GetApplicationClient", new { id = response.Result["Id"] }, response.Result)); }
public async Task <GenericResponse <IDictionary <string, object> > > CreateApplicationClient(ApplicationClientForCreationDto applicationClient, string mediaType) { try { if (!MediaTypeHeaderValue.TryParse(mediaType, out MediaTypeHeaderValue parsedMediaType)) { return(GenericResponseBuilder.NoSuccess <IDictionary <string, object> >(null, "Wrong media type")); } var regex = new Regex("^[a-zA-Z0-9 ]*$"); if (!regex.IsMatch(applicationClient.Name)) { return(GenericResponseBuilder.NoSuccess <IDictionary <string, object> >(null, "Special characters are not allowed in the client name.")); } var client = await this.dataService.ApplicationClients.FindByNameAsync(applicationClient.Name); if (client != null) { return(GenericResponseBuilder.NoSuccess <IDictionary <string, object> >(null, string.Format("Client already exits with name: {0}", applicationClient.Name))); } var applicationClientEntity = this.mapper.Map <ApplicationClient>(applicationClient); CreateClientSecret(applicationClientEntity); this.dataService.ApplicationClients.Create(applicationClientEntity); await this.dataService.CompleteAsync(); var clientToReturn = this.mapper.Map <ApplicationClientDto>(applicationClientEntity) .ShapeData() as IDictionary <string, object>; var includeLinks = parsedMediaType.SubTypeWithoutSuffix .EndsWith("hateoas", StringComparison.InvariantCultureIgnoreCase); if (includeLinks) { var links = CreateLinksForApplicationClient(applicationClientEntity.Id); clientToReturn.Add("links", links); } return(GenericResponseBuilder.Success <IDictionary <string, object> >(clientToReturn)); } catch (Exception ex) { logger.LogError(string.Format("Error in BLL - CreateApplicationClient. {0}", ex.Message)); return(GenericResponseBuilder.NoSuccess <IDictionary <string, object> >(null, ex.Message.ToString())); } }