Example #1
0
        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());
        }
Example #2
0
        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));
        }
Example #3
0
        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)));
        }
Example #4
0
        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)));
        }