public async Task <IActionResult> NewWorker(string providerId, [FromBody] ProviderWorkerBindingModel bindingModel) { if (!ModelState.IsValid) { return(BadRequest(ModelState.GetErrors())); } var(imageBucket, outcomeAction, error) = await _imageBucketRepository.NewImageBucket( new ImageBucket { StoreBucket = new ImageBucketKey { Store = Constants.WORKER_IMAGES_STORE }, ImageList = new List <string>() }); if (outcomeAction != RepositoryOutcomeAction.OkCreated) { return(this.StatusCode(500, error)); } var providerWorker = new ProviderWorker { Name = bindingModel.Name, LastName = bindingModel.LastName, Email = bindingModel.Email, PhoneNumber = bindingModel.PhoneNumber, ProviderWorkerImageBucketKey = imageBucket.StoreBucket }; (providerWorker, outcomeAction, error) = await _providerWorkerRepository.NewAsync(providerId, providerWorker); try { var userRegistration = await _userService.RegisterUserAsync( new UserRegistration { ProviderId = providerId, WorkerId = providerWorker.Id, FirstName = bindingModel.Name, LastName = bindingModel.LastName, Email = bindingModel.Email, Password = bindingModel.Password, }); } catch (ApiException ex) { return(BadRequest(ex.ApiError)); } var location = this.Url.BuildGetProviderWorkerUrl(providerId, providerWorker?.Id); return(this.FromRepositoryOutcome(outcomeAction, error, MapToProviderWorkerViewModel(providerWorker), location)); }
public async Task <IActionResult> PatchWorker(string providerId, string id, [FromBody] JsonPatchDocument <ProviderWorkerBindingModel> patchBindingModel) { if (patchBindingModel.Operations.Count == 0) { return(BadRequest("Must indicate operations to perform")); } var patchModel = new JsonPatchDocument <ProviderWorker>(); var model = new ProviderWorkerBindingModel(); patchBindingModel.ApplyTo(model); for (int i = 0; i < patchBindingModel.Operations.Count; i++) { var operation = patchBindingModel.Operations[i]; patchModel.Operations.Add( new Operation <ProviderWorker>(operation.op, operation.path, operation.from, ReadValue(model, operation.path))); } var(result, outcomeAction, error) = await _providerWorkerRepository.PatchAsync(providerId, id, patchModel); return(this.FromRepositoryOutcome(outcomeAction, error, MapToProviderWorkerViewModel(result))); }
public async Task <IActionResult> UpdateWorker(string providerId, string id, [FromBody] ProviderWorkerBindingModel model) { if (!ModelState.IsValid) { return(BadRequest(ModelState.GetErrors())); } var(result, outcomeAction, error) = await _providerWorkerRepository.PatchAllButProviderWorkerImageStoreAsync( providerId, new ProviderWorker { Id = id, Email = model.Email, Name = model.Name, LastName = model.LastName, Status = model.Status, PhoneNumber = model.PhoneNumber, DeviceId = model.DeviceId, LastKnownLocation = model.LastKnownLocation }); return(this.FromRepositoryOutcome(outcomeAction, error, MapToProviderWorkerViewModel(result))); }