public async Task <IActionResult> ValidateDelivery([FromBody] ValidateDeliveryRequest request)
        {
            var isValid = await _transactionService.ValidateDelivery(request);

            var response = new ValidateDeliveryResult
            {
                IsValid = isValid
            };

            return(Ok(response));
        }
        public async Task <ValidateDeliveryResult> ValidateDelivery(ValidateDeliveryRequest validateDeliveryRequest)
        {
            string             json    = JsonConvert.SerializeObject(validateDeliveryRequest);
            HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Post, "api/transactions/validate-delivery")
            {
                Content = new StringContent(json, Encoding.UTF8, "application/json")
            };
            HttpResponseMessage responseMessage = await _httpClient.SendAsync(request);

            await EnsureSuccessOrThrowAsync(responseMessage);

            string recievedJson = await responseMessage.Content.ReadAsStringAsync();

            var validateDeliveryResult = JsonConvert.DeserializeObject <ValidateDeliveryResult>(recievedJson);

            return(validateDeliveryResult);
        }
Beispiel #3
0
        public async Task <bool> ValidateDelivery(ValidateDeliveryRequest request)
        {
            if (request.ValidationType == "Pickup")
            {
                var contribution = await _transactionStore.GetContribution(request.ContributionId);

                Process process = await BuildProcess(contribution.ProcessId);

                if (process.DeliveryCode == request.DeliveryCode)
                {
                    await process.ValidatePickup();

                    return(true);
                }
                else
                {
                    return(false);
                }
            }
            else if (request.ValidationType == "Destination")
            {
                var getProcessesResult = await _transactionStore.GetProcesses(request.CampaignId);

                Process process = getProcessesResult.Processes.Find(x => x.DeliveryCode == request.DeliveryCode);
                if (process != null)
                {
                    process = await BuildProcess(process.Id);

                    await process.ValidateDestination();

                    var deliveryDemand = process.GetDeliveryDemand();
                    var user           = await _userService.GetUser(deliveryDemand.PickupUsername);

                    _notificationService.NotifyUser(user.Email, "Donation Delivered!", "Hey " + user.FirstName + "! Your donation has been delivered. Thank you for your generosity!");
                    return(true);
                }
                else
                {
                    return(false);
                }
            }
            else
            {
                throw new BadRequestException("Invalid ValidationType");
            }
        }
Beispiel #4
0
        private async void ValidateDeliveryButton_Click(object sender, EventArgs e)
        {
            var validateDeliveryRequest = new ValidateDeliveryRequest
            {
                ValidationType = "Destination",
                CampaignId     = SelectedCampaign.Id,
                DeliveryCode   = DashboardPanel_DeliveryCodeTextBox.Text
            };

            var result = await client.ValidateDelivery(validateDeliveryRequest);

            string message;

            if (result.IsValid)
            {
                message = "Delivery Validated!";
                DashboardPanel_TreeView.Focus();
            }
            else
            {
                message = "Wrong Delivery Code.";
            }
            MessageBox.Show(message);
        }
Beispiel #5
0
        private async void ContributionPanel_ValidatePickupButton_Click(object sender, EventArgs e)
        {
            var validateDeliveryRequest = new ValidateDeliveryRequest
            {
                ValidationType = "Pickup",
                ContributionId = contributionIdTag,
                DeliveryCode   = ContributionPanel_DeliveryCodeTextBox.Text
            };

            var result = await client.ValidateDelivery(validateDeliveryRequest);

            string message;

            if (result.IsValid)
            {
                message = "Delivery Validated!";
                ContributionPanel.Focus();
            }
            else
            {
                message = "Wrong Delivery Code.";
            }
            MessageBox.Show(message);
        }