示例#1
0
        public async Task <InboundResponse> Handle(InboundRequest <InitializeConnection> request,
                                                   CancellationToken cancellationToken)
        {
            _logger.WithDebug("InitializeConnection: DeviceId:{0}", handling: Handling.Unrestricted, request.Message.DeviceId.Value)
            .WithPair("DeviceId", request.Message.DeviceId.Value)
            .Log();

            var connectionAccepted = new ConnectionAccepted()
            {
            };

            _logger.WithDebug("Sending: ConnectionAccepted").Log();

            var response = new InitializeConnectionResponse();

            response.RequestApproved.Value = true;
            response.DeviceId.Value        = request.Message.DeviceId.Value;
            var payload = Encoding.UTF8.GetBytes(response.Serialize());

            return(new InboundResponse()
            {
                Topic = request.ResponseTopic,
                Message = connectionAccepted,
                MessageType = connectionAccepted.GetType().Name,
                Payload = payload,
                PayloadType = response.GetType().Name,
                CorrelationData = request.CorrelationData,
            });
        }
示例#2
0
        public bool AddOrUpdate(InboundRequest inboundRequest)
        {
            bool isSaved = true;

            using (WTCCeresEntities db = new WTCCeresEntities())
            {
                try
                {
                    if (inboundRequest.InboundRequestId == 0)
                    {
                        db.InboundRequest.Add(inboundRequest);
                    }
                    else
                    {
                        db.InboundRequest.AddOrUpdate(inboundRequest);
                    }

                    db.SaveChanges();
                    ir = inboundRequest;
                }
                catch (Exception ex)
                {
                    string msg = ex.Message;
                    isSaved = false;
                }
            }
            return(isSaved);
        }
示例#3
0
        public ResultRequest <DtoTokenResponse> RefreshToken(
            [FromBody] InboundRequest <DtoRefreshToken> request)
        {
            try
            {
                var dto = request?.Data;
                if (dto == null)
                {
                    return(ResultRequest <DtoTokenResponse> .Error("Access Token request fail",
                                                                   "Invalid request data"));
                }

                var encryptedRefreshToken = dto.RefreshToken;
                if (string.IsNullOrEmpty(encryptedRefreshToken))
                {
                    throw new LogicException(
                              "Refresh Token is required for grantType RefreshToken");
                }

                var tokenFromRefreshToken = _service.GetNewTokenFromRefreshToken(encryptedRefreshToken);

                return(ResultRequest <DtoTokenResponse> .Ok(tokenFromRefreshToken));
            }
            catch (Exception e)
            {
                return(ResultRequest <DtoTokenResponse> .Error("Access Token request error",
                                                               e.Message));
            }
        }
示例#4
0
        public Task <ResultRequest> BlockUserToken([FromBody] InboundRequest <DtoUserToken> request)
        {
            try
            {
                var dto = request?.Data;
                if (dto == null || (string.IsNullOrEmpty(dto.UserId) && string.IsNullOrEmpty(dto.Token)))
                {
                    return(Task.FromResult(ResultRequest.Error("Access Token request fail", "Invalid request data")));
                }

                var allTokens = string.IsNullOrEmpty(dto.Token);
                if (allTokens)
                {
                    UserTokenMapping.Remove(dto.UserId, true);
                }
                else
                {
                    UserTokenMapping.Remove(dto.UserId, new UserToken
                    {
                        UserId = dto.UserId,
                        Token  = dto.Token
                    });
                }

                return(Task.FromResult(ResultRequest.Ok()));
            }
            catch (Exception e)
            {
                return(Task.FromResult(ResultRequest.Error("Access Token request error", e.Message)));
            }
        }
示例#5
0
        public Task BindModelAsync(ModelBindingContext bindingContext)
        {
            var userInboundRequest = new InboundRequest();

            userInboundRequest.Page     = GetFromQuery(nameof(InboundRequest.Page), bindingContext);
            userInboundRequest.Sorting  = GetFromQuery(nameof(InboundRequest.Sorting), bindingContext);
            userInboundRequest.Language = GetHeader(nameof(InboundRequest.Language), bindingContext);
            userInboundRequest.ClientId = GetHeader(nameof(InboundRequest.ClientId), bindingContext);

            userInboundRequest.Query = bindingContext.HttpContext.Request.QueryString;

            bindingContext.Result = ModelBindingResult.Success(userInboundRequest);
            return(Task.CompletedTask);
        }
示例#6
0
        public bool Delete(int InboundRequestId)
        {
            bool isSaved = true;

            using (WTCCeresEntities db = new WTCCeresEntities())
            {
                try
                {
                    ir = db.InboundRequest.Find(InboundRequestId);
                    db.InboundRequest.Remove(ir);
                    db.SaveChanges();
                }
                catch (Exception ex)
                {
                    string msg = ex.Message;
                    isSaved = false;
                }
            }
            return(isSaved);
        }
示例#7
0
        public async Task <ResultRequest <DtoTokenResponse> > LoginWithApiKey(
            [FromBody] InboundRequest <DtoAuthApiKey> request)
        {
            try
            {
                var dto = request?.Data;
                if (dto == null)
                {
                    return(ResultRequest <DtoTokenResponse> .Error("Access Token request fail",
                                                                   "Invalid request data"));
                }

                var token = await _service.GenerateToken(dto.ApiKey);

                return(ResultRequest <DtoTokenResponse> .Ok(token));
            }
            catch (Exception e)
            {
                return(ResultRequest <DtoTokenResponse> .Error("Access Token request error",
                                                               e.Message));
            }
        }
示例#8
0
        public void LoadInfo(VW_InboundRequest inReq)
        {
            loadForm();
            firstLoad = true;
            inRequest = InboundRequestService.GetById(inReq.InboundRequestId);
            cboSSLine.SelectedValue      = inRequest.ShippingLineId;
            nudQtyCans.Value             = inRequest.QtyRequested;
            cboReleaseType.SelectedValue = inRequest.BookingTypeId;
            cboCanState.SelectedItem     = inRequest.ContainerState;
            cboCanSize.SelectedValue     = inRequest.ContainerSizeId;
            lblTitle.Text = "Update Request";
            if (!inReq.ReleaseType.Equals("REPO"))
            {
                relOrder = ReleaseOrderService.GetAllByInboundRequestId(inReq.InboundRequestId).ToList()[0];
                rel      = ReleaseService.GetByReleaseId(relOrder.ReleaseId);

                // RelOrderMbList = ReleaseOrderMinibookingService.GetAllByReleaseOrderId(relOrder.ReleaseOrderId)
                // relOrderMb = RelOrderMbList.Where(Function(r) r.AssignmentOrder = 1).ToList(0)

                cboBooking.SelectedText = rel.ReleaseNumber;
            }

            firstLoad = false;
        }
示例#9
0
        private void btnComplete_Click(object sender, EventArgs e)
        {
            if (GoodToGo())
            {
                var  relOrderService = new ReleaseOrderService();
                var  relService      = new ReleaseService();
                bool isInserted;
                int  relReqId;
                if (isNewRequest)
                {
                    inRequest = new InboundRequest();
                    inRequest.RequestStatusId = (int)MdlEnum.RequestStatus.PENDING_REPLY;
                    inRequest.DateRequested   = DateAndTime.Now;
                    inRequest.IsOpenRequest   = true;
                }

                inRequest.ShippingLineId  = Conversions.ToInteger(cboSSLine.SelectedValue);
                inRequest.QtyRequested    = (int)Math.Round(nudQtyCans.Value);
                inRequest.ContainerSizeId = Conversions.ToInteger(cboCanSize.SelectedValue);
                inRequest.ContainerState  = Conversions.ToString(cboCanState.SelectedItem);
                inRequest.BookingTypeId   = Conversions.ToInteger(cboReleaseType.SelectedValue);
                isInserted = inReqServ.AddOrUpdate(inRequest);
                relReqId   = inReqServ.GetLastInboundRequestId();
                if (isInserted)
                {
                    if (isExportRelease)
                    {
                        if (isNewRequest)
                        {
                            rel = new Release();
                            isChangeOfExportBooking = false;
                            relOrder = new ReleaseOrder();
                        }

                        rel.ReleaseNumber = Strings.Trim(cboBooking.Text);
                        if (relService.AddOrUpdate(rel))
                        {
                            relOrder.ReleaseId        = relService.GetLastReleaseId();
                            relOrder.DateAccepted     = default;
                            relOrder.CreatedAt        = DateAndTime.Now;
                            relOrder.InboundRequestId = inReqServ.GetLastInboundRequestId();
                            relOrder.QtyAccepted      = 0;
                            if (relOrderService.AddOrUpdate(relOrder))
                            {
                                if (isChangeOfExportBooking)
                                {
                                    ReplaceExportBookingNumber();
                                }
                                else
                                {
                                    var newRelMb      = new ReleaseOrderMinibooking();
                                    var relOrdService = new ReleaseOrderMinibookingService();
                                    newRelMb.ReleaseOrderId  = relOrderService.GetLastReleaseOrderId();
                                    newRelMb.MinibookingId   = MinibookingService.GetByBookingAndMbOrder(Strings.Trim(cboBooking.Text), 1).MiniBookingId;
                                    newRelMb.CreatedAt       = DateAndTime.Now;
                                    newRelMb.QtyRequested    = inRequest.QtyRequested;
                                    newRelMb.AssignmentOrder = 1;
                                    relOrdService.AddOrUpdate(newRelMb);
                                }

                                Close();
                            }
                            else
                            {
                                My.MyProject.Forms.MessageBoxCeresOK.ShowDialog("Booking export not saved", "Something went wrong and the export booking request was not saved." + Constants.vbNewLine + "Please try again.", this);
                            }
                        }
                        else
                        {
                            My.MyProject.Forms.MessageBoxCeresOK.ShowDialog("Booking export not saved", "Something went wrong and the export booking request was not saved." + Constants.vbNewLine + "Please try again.", this);
                        }
                    }
                    else
                    {
                        Close();
                    }
                }
                else
                {
                    My.MyProject.Forms.MessageBoxCeresOK.ShowDialog("Request not saved", "Something went wrong and the request was not saved." + Constants.vbNewLine + "Please try again.", this);
                }
            }
        }
示例#10
0
        public async Task <IActionResult> Inbound(string paymentId, string actiontype)
        {
            string responseCode       = string.Empty;
            string responseMessage    = string.Empty;
            string responseStatusCode = string.Empty;
            string responseBody       = string.Empty;

            string         privateKey     = HttpContext.Request.Headers[AffirmConstants.PrivateKeyHeader];
            string         publicKey      = HttpContext.Request.Headers[AffirmConstants.PublicKeyHeader];
            var            bodyAsText     = await new System.IO.StreamReader(HttpContext.Request.Body).ReadToEndAsync();
            InboundRequest inboundRequest = null;

            try
            {
                inboundRequest = JsonConvert.DeserializeObject <InboundRequest>(bodyAsText);
            }
            catch (Exception ex)
            {
                responseMessage = ex.Message;
                _context.Vtex.Logger.Error("Inbound", null, $"Error parsing InboundRequest {bodyAsText}", ex);
            }

            dynamic inboundRequestBody = null;

            try
            {
                inboundRequestBody = JsonConvert.DeserializeObject(inboundRequest.requestData.body);
            }
            catch (Exception ex)
            {
                responseMessage = ex.Message;
                _context.Vtex.Logger.Error("Inbound", null, $"Error parsing InboundRequestBody {bodyAsText}", ex);
            }

            paymentId = inboundRequest.paymentId;
            string requestId = inboundRequest.requestId;

            if (inboundRequestBody == null)
            {
                responseStatusCode = StatusCodes.Status400BadRequest.ToString();
            }
            else if (string.IsNullOrWhiteSpace(privateKey) || string.IsNullOrWhiteSpace(publicKey))
            {
                responseStatusCode = StatusCodes.Status400BadRequest.ToString();
                responseMessage    = "Missing keys.";
            }
            else
            {
                try
                {
                    switch (actiontype)
                    {
                    case AffirmConstants.Inbound.ActionAuthorize:
                        string token         = inboundRequestBody.token;
                        string callbackUrl   = inboundRequestBody.callbackUrl;
                        int    amount        = inboundRequestBody.orderTotal;
                        string orderId       = inboundRequestBody.orderId;
                        bool   sandboxMode   = inboundRequest.sandboxMode;
                        string transactionId = inboundRequest.transactionId;
                        if (string.IsNullOrEmpty(paymentId) || string.IsNullOrEmpty(token) || string.IsNullOrEmpty(callbackUrl))
                        {
                            responseStatusCode = StatusCodes.Status400BadRequest.ToString();
                            responseMessage    = "Missing parameters.";
                        }
                        else
                        {
                            var paymentRequest = await this._affirmPaymentService.Authorize(paymentId, token, publicKey, privateKey, callbackUrl, amount, orderId, sandboxMode, transactionId);

                            _context.Vtex.Logger.Info("Inbound", null, $"{paymentId} {JsonConvert.SerializeObject(paymentRequest)}");
                            Response.Headers.Add("Cache-Control", "private");

                            responseBody       = JsonConvert.SerializeObject(paymentRequest);
                            responseStatusCode = StatusCodes.Status200OK.ToString();
                        }

                        break;

                    default:
                        responseStatusCode = StatusCodes.Status405MethodNotAllowed.ToString();
                        responseMessage    = $"Action '{actiontype}' is not supported.";
                        break;
                    }
                }
                catch (Exception ex)
                {
                    _context.Vtex.Logger.Error("Inbound", null, $"Error processing request {bodyAsText}", ex);
                }
            }

            InboundResponse response = null;

            try
            {
                response = new InboundResponse
                {
                    code         = responseCode,
                    message      = responseMessage,
                    paymentId    = paymentId,
                    requestId    = requestId,
                    responseData = new ResponseData
                    {
                        body       = responseBody,
                        statusCode = responseStatusCode
                    }
                };
            }
            catch (Exception ex)
            {
                _context.Vtex.Logger.Error("Inbound", null, $"Error creating Response {responseBody}", ex);
            }

            return(Json(response));
        }
示例#11
0
        public void Handler()
        {
            InboundRequest   inboundRequest = null;
            ToaRequestResult inboundResult  = null;
            int?           aid            = null;
            WorkOrderModel workOrderModel = null;

            try
            {
                _log.Notice("Starting WorkOrderSave Handler.");
                object wotype          = EventHandlerServices.GetEventHandlerService().getFieldFromWorOrderRecord(_workOrderRecord, "WO_Type");
                object overrideRequest = EventHandlerServices.GetEventHandlerService().getFieldFromWorOrderRecord(_workOrderRecord, "Override_Request");
                object timeSlot        = EventHandlerServices.GetEventHandlerService().getFieldFromWorOrderRecord(_workOrderRecord, "WO_Time_Slot");
                object wodate          = EventHandlerServices.GetEventHandlerService().getFieldFromWorOrderRecord(_workOrderRecord, "WO_Date");
                object resolutionDue   = EventHandlerServices.GetEventHandlerService().getFieldFromWorOrderRecord(_workOrderRecord, "Resolution_Due");

                if (null == wotype)
                {
                    return;
                }

                if (overrideRequest != null)
                {
                    if (timeSlot == null || wodate == null)
                    {
                        return;
                    }
                }
                else
                {
                    if (timeSlot == null || wodate == null)
                    {
                        if (resolutionDue == null)
                        {
                            return;
                        }
                    }
                }

                _log.Notice("Converting from RecordContext to WorkOrder Model started");
                workOrderModel = EventHandlerServices.GetEventHandlerService().GetWorkOrderModel(_recordContext);
                _log.Notice("Convertion from RecordContext to WorkOrder Model completed");

                //Appointments 'key' fields are set in the constuctor of below object
                var activitySettings = new ActivitySettingsModel();
                //Inventory 'key' fields are set in the constuctor of below object
                var inventorySettings = new InventorySettingsModel();

                _log.Notice("Initialize InboundRequest");
                inboundRequest = new InboundRequest(new List <IToaModel>()
                {
                    workOrderModel
                });
                inboundRequest.PropertiesMode    = Client.Common.PropertiesMode.Replace;
                inboundRequest.AllowChangeDate   = Client.Common.AllowChangeDate.Yes;
                inboundRequest.ActivitySettings  = activitySettings;
                inboundRequest.InventorySettings = inventorySettings;
                _log.Notice("Invoking TOA Server using Inbound API Started");
                inboundResult = InboundService.GetService().BeginSyncRequest(inboundRequest);

                if (inboundResult != null)
                {
                    _log.Notice("Invoking TOA Server using Inbound API Completed");
                    ToaExceptionManager manager = new ToaExceptionManager();
                    _log.Notice("Processing Inbound API Response Result");
                    aid = manager.ProcessInboundResult(inboundResult);
                    _log.Notice("Completed Processing Inbound API Response Result");
                    if (aid == null)
                    {
                        _cancelEventArgs.Cancel = true;
                        return;
                    }
                }
                else
                {
                    foreach (IGenericField field in _workOrderRecord.GenericFields)
                    {
                        if (field.Name.Equals("WO_Status"))
                        {
                            TextInfo textInfo = new CultureInfo("en-US", false).TextInfo;
                            field.DataValue.Value = textInfo.ToTitleCase(ToaStringsUtil.GetString(Client.Common.ActivityStatus.NotCreated));
                            break;
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                _log.Error(ex.Message, ex.StackTrace);
                MessageBox.Show(ToaExceptionMessages.UnexpectedError, ToaExceptionMessages.TitleError,
                                MessageBoxButton.OK, MessageBoxImage.Error);
            }

            try
            {
                _log.Notice("Updating WorkOrder Record.");
                workOrderModel.TOA_AID = (aid != null) ? aid : 0;
                UpdateWorkOrderRecord(inboundResult, workOrderModel);
                _log.Notice("WorkOrder Record Updated.");
                _log.Notice("Exiting WorkOrderSave Handler.");
            }
            catch (Exception ex)
            {
                _log.Error(ex.Message, ex.StackTrace);
                MessageBox.Show(ToaExceptionMessages.UnexpectedError, ToaExceptionMessages.TitleError,
                                MessageBoxButton.OK, MessageBoxImage.Error);
            }
        }
示例#12
0
 public bool AddOrUpdate(InboundRequest inboundRequest)
 {
     return(repository.AddOrUpdate(inboundRequest));
 }
        public ActionResult Inbound([FromBody] InboundRequest inboundRequest)
        {
            var             modelErrors     = new List <string>();
            InboundResponse inboundResponse = new InboundResponse();
            CacheHandler    cacheHandler    = new CacheHandler();

            var request = Request;
            var headers = request.Headers;

            headers.TryGetValue("Authorization", out authorizationToken);
            string token    = authorizationToken.FirstOrDefault().Substring("Basic ".Length).Trim();
            string userName = token.Split(':')[0];
            string authId   = token.Split(':')[1];

            try
            {
                if (!ModelState.IsValid)
                {
                    foreach (var modelState in ModelState.Values)
                    {
                        foreach (var modelError in modelState.Errors)
                        {
                            modelErrors.Add(modelError.ErrorMessage);
                        }
                    }

                    inboundResponse.Message = "";
                    inboundResponse.Error   = string.Join(",", modelErrors);
                }
                else
                {
                    long        accountId   = _context.Account.Where(x => x.Username == userName && x.AuthId == authId).FirstOrDefault().Id;
                    PhoneNumber phoneNumber = _context.PhoneNumber.Where(x => x.Number == inboundRequest.To && x.AccountId == accountId).FirstOrDefault();
                    if (phoneNumber != null)
                    {
                        if (inboundRequest.Text.Equals("STOP") || inboundRequest.Text.Equals("STOP\n") || inboundRequest.Text.Equals("STOP\r") || inboundRequest.Text.Equals("STOP\r\n"))
                        {
                            if (!cacheHandler.IsKeyPresentInInboundCache(inboundRequest.From, inboundRequest.To))
                            {
                                cacheHandler.SetInboundSMSCacheAsync(inboundRequest.From, inboundRequest.To);
                            }
                        }

                        inboundResponse.Message = "inbound sms ok";
                        inboundResponse.Error   = "";
                    }
                    else
                    {
                        inboundResponse.Message = "";
                        inboundResponse.Error   = "to parameter not found";
                    }
                }
            }
            catch
            {
                inboundResponse.Message = "";
                inboundResponse.Error   = "unknown failure";
            }

            return(CreatedAtAction("Inbound", inboundResponse));
        }
        public async Task <IActionResult> Inbound(string actiontype)
        {
            Console.WriteLine($"InboundAsync action = {actiontype}");

            string responseCode       = string.Empty;
            string responseMessage    = string.Empty;
            string responseStatusCode = string.Empty;
            string responseBody       = string.Empty;

            var            bodyAsText         = await new System.IO.StreamReader(HttpContext.Request.Body).ReadToEndAsync();
            InboundRequest inboundRequest     = JsonConvert.DeserializeObject <InboundRequest>(bodyAsText);
            dynamic        inboundRequestBody = null;

            try
            {
                inboundRequestBody = JsonConvert.DeserializeObject(inboundRequest.requestData.body);
            }
            catch (Exception ex)
            {
                responseMessage = ex.Message;
            }

            string paymentId = inboundRequest.paymentId;
            string requestId = inboundRequest.requestId;

            if (inboundRequestBody == null)
            {
                responseStatusCode = StatusCodes.Status400BadRequest.ToString();
            }
            else
            {
                switch (actiontype)
                {
                case FlowFinanceConstants.Inbound.ActionLoanAcceptance:
                    Models.SignLoanRequest.RootObject signLoanRequest = new Models.SignLoanRequest.RootObject
                    {
                        signature = new Models.SignLoanRequest.Signature
                        {
                            date      = DateTime.Now,
                            userAgent = inboundRequestBody.userAgent,
                            ip        = await this._flowFinancePaymentService.GetShopperIp()
                        }
                    };

                    string loanId    = inboundRequestBody.loanId;
                    int    accountId = inboundRequestBody.accountId;

                    //Console.WriteLine($"loanId = [{loanId}]   accountId = [{accountId}]");

                    responseBody = await this._flowFinancePaymentService.SignLoan(signLoanRequest, loanId, accountId);

                    //if (responseBody.Equals(FlowFinanceConstants.Success))
                    //{
                    string callbackUrl = inboundRequestBody.callbackUrl;
                    //decimal amount = inboundRequestBody.amount;

                    responseStatusCode = StatusCodes.Status200OK.ToString();
                    // Verify that the loan is signed and update the status with Vtex Payment
                    CreatePaymentResponse verifyPaymentResponse = await this._flowFinancePaymentService.VerifyLoanAsync(paymentId, loanId, accountId, callbackUrl);

                    //}
                    responseMessage = verifyPaymentResponse.message;
                    break;

                default:
                    responseStatusCode = StatusCodes.Status405MethodNotAllowed.ToString();
                    responseMessage    = $"Action '{actiontype}' is not supported.";
                    break;
                }
            }

            InboundResponse response = new InboundResponse
            {
                code         = responseCode,
                message      = responseMessage,
                paymentId    = paymentId,
                requestId    = requestId,
                responseData = new ResponseData
                {
                    body       = responseBody,
                    statusCode = responseStatusCode
                }
            };

            return(Json(response));
        }
示例#15
0
 public IActionResult ModelBindingTest
     ([ModelBinder(BinderType = typeof(PaginationRequestBinder))] InboundRequest inboundRequest)
 {
     return(Ok(inboundRequest));
 }