public async Task <IActionResult> UpdateImage(string store, string bucket, string name, RawContent rawContent, CancellationToken cancellationToken = default(CancellationToken)) { await _imageStore.UploadImageAsync(store, bucket, name, rawContent.ContentType, rawContent.Content, cancellationToken); var imageBucketKey = new ImageBucketKey { Store = store, Bucket = bucket }; var(imageBucket, outcomeAction, error) = await _imageBucketRepository.GetImageBucket(imageBucketKey, cancellationToken); if (outcomeAction == RepositoryOutcomeAction.OkNone) { imageBucket.ImageList.Add(name); (imageBucket, outcomeAction, error) = await _imageBucketRepository.UpdateImageBucket(imageBucket, CancellationToken.None); } else { (imageBucket, outcomeAction, error) = await _imageBucketRepository.NewImageBucket(new ImageBucket { StoreBucket = imageBucketKey, ImageList = new List <string> { name } }, CancellationToken.None); } if (outcomeAction.Outcome != RepositoryOutcome.Ok) { return(this.StatusCode(500, error)); } return(this.NoContent()); }
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> NewAssignment([FromBody] NewAssignmentBindingModel assignmentBindingModel) { if (!ModelState.IsValid) { return(BadRequest(ModelState.GetErrors())); } var(imageBucket, outcomeAction, error) = await _imageBucketRepository.NewImageBucket( new ImageBucket { StoreBucket = new ImageBucketKey { Store = Constants.ASSIGNMENT_IMAGES_STORE }, ImageList = new List <string>() }); if (outcomeAction != RepositoryOutcomeAction.OkCreated) { return(this.StatusCode(500, error)); } var assignment = new Assignment { ProviderId = assignmentBindingModel.ProviderId, ClientId = assignmentBindingModel.ClientId, CreationDateTime = assignmentBindingModel.CreationDateTime, InitialLocation = assignmentBindingModel.InitialLocation.ToGeoJson2DGeographicCoordinates(), Status = assignmentBindingModel.Status, StatusReason = assignmentBindingModel.StatusReason, EstimatedTimeOfArrival = assignmentBindingModel.EstimatedTimeOfArrival, WorkerId = assignmentBindingModel.WorkerId.IfNotNullOrEmpty(), BoatTowId = assignmentBindingModel.BoatTowId.IfNotNullOrEmpty(), ImageBucketKey = imageBucket.StoreBucket }; (assignment, outcomeAction, error) = await _assignmentRepository.NewAssignmentAsync(assignment); if (outcomeAction == RepositoryOutcomeAction.OkCreated) { await _notificationServices.NotifyAssignmentWorkerAsync(assignment); } return(this.FromRepositoryOutcome(outcomeAction, error, MapToAssignmentResponseViewModel(assignment), Url.BuildGetAssignmentUrl(assignment?.Id))); }
public async Task <IActionResult> NewProvider([FromBody] ProviderBindingModel providerBindingModel) { if (!ModelState.IsValid) { return(BadRequest(ModelState.GetErrors())); } var(imageBucket, outcomeAction, error) = await _imageBucketRepository.NewImageBucket( new ImageBucket { StoreBucket = new ImageBucketKey { Store = Constants.PROVIDER_IMAGES_STORE }, ImageList = new List <string>() }); if (outcomeAction != RepositoryOutcomeAction.OkCreated) { return(this.StatusCode(500, error)); } var provider = new Provider { Email = providerBindingModel.Email, Name = providerBindingModel.Name, State = providerBindingModel.State, City = providerBindingModel.City, ZipCode = providerBindingModel.ZipCode, Address = providerBindingModel.Address, ProviderImageBucketKey = imageBucket.StoreBucket, }; (provider, outcomeAction, error) = await _providerRepository.NewAsync(provider); return(this.FromRepositoryOutcome( outcomeAction, error, MapToProviderViewModel(provider), Url.BuildGetProviderUrl(provider?.Id))); }