public async Task <IActionResult> Save(ClientRequestModel request) { var sellerClaim = this.User.Claims.FirstOrDefault(x => x.Type == AccountConstants.Claims.OrganisationIdClaim); if (request.Id.HasValue) { var serviceModel = new UpdateClientServiceModel { Id = request.Id, Name = request.Name, Email = request.Email, CommunicationLanguage = request.CommunicationLanguage, ClientOrganisationId = request.OrganisationId, Language = CultureInfo.CurrentCulture.Name, Username = this.User.Claims.FirstOrDefault(x => x.Type == ClaimTypes.Email)?.Value, OrganisationId = GuidHelper.ParseNullable(sellerClaim?.Value) }; var validator = new UpdateClientModelValidator(); var validationResult = await validator.ValidateAsync(serviceModel); if (validationResult.IsValid) { var client = await this.clientsService.UpdateAsync(serviceModel); return(this.StatusCode((int)HttpStatusCode.OK, new { Id = client.Id })); } throw new CustomException(string.Join(ErrorConstants.ErrorMessagesSeparator, validationResult.Errors.Select(x => x.ErrorMessage)), (int)HttpStatusCode.UnprocessableEntity); } else { var serviceModel = new CreateClientServiceModel { Name = request.Name, Email = request.Email, CommunicationLanguage = request.CommunicationLanguage, ClientOrganisationId = request.OrganisationId, Language = CultureInfo.CurrentCulture.Name, Username = this.User.Claims.FirstOrDefault(x => x.Type == ClaimTypes.Email)?.Value, OrganisationId = GuidHelper.ParseNullable(sellerClaim?.Value) }; var validator = new CreateClientModelValidator(); var validationResult = await validator.ValidateAsync(serviceModel); if (validationResult.IsValid) { var client = await this.clientsService.CreateAsync(serviceModel); return(this.StatusCode((int)HttpStatusCode.Created, new { Id = client.Id })); } throw new CustomException(string.Join(ErrorConstants.ErrorMessagesSeparator, validationResult.Errors.Select(x => x.ErrorMessage)), (int)HttpStatusCode.UnprocessableEntity); } }
public async Task <ClientServiceModel> UpdateAsync(UpdateClientServiceModel serviceModel) { var client = await this.context.Clients.FirstOrDefaultAsync(x => x.Id == serviceModel.Id && x.SellerId == serviceModel.OrganisationId.Value && x.IsActive); if (client == null) { throw new CustomException(this.clientLocalizer.GetString("ClientNotFound"), (int)HttpStatusCode.NotFound); } client.Name = serviceModel.Name; client.Email = serviceModel.Email; client.Language = serviceModel.CommunicationLanguage; client.OrganisationId = serviceModel.ClientOrganisationId.Value; await this.context.SaveChangesAsync(); return(await this.GetAsync(new GetClientServiceModel { Id = client.Id, Language = serviceModel.Language, OrganisationId = serviceModel.OrganisationId, Username = serviceModel.Username })); }