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