Example #1
0
        public ResponseBussiness <FinalizarCompraResponse> FinalizarCompraTCMM(FinalizarCompraRequest request)
        {
            TokenDto token = new TokenService().Get();
            ResponseBussiness <FinalizarCompraResponse> response = new MelodyMilanoBusiness(token).FinalizarCompraTCMM(request);

            return(response);
        }
Example #2
0
        public ActionResult <FinalizarCompraResponse> FinalizarCompra([FromBody] Carrinho carrinho, CancellationToken cancellationToken)
        {
            try
            {
                var produtoRequest = new FinalizarCompraRequest()
                {
                    ProdutosCompra = carrinho.produtos,
                    Comprador      = carrinho.comprador,
                    Endereco       = carrinho.endereco
                };

                var query   = new FinalizarCompraCommand(produtoRequest, this.UserRef);
                var results = this.Mediator.Send(query).Result;
                return(Ok(results.CompraPendente));
            }
            catch (Exception ex)
            {
                return(BadRequest(new { Mensagem = ex.Message }));
            }
        }
Example #3
0
        /// <summary>
        /// Método para finalizar la compra por tarjeta de MM
        /// </summary>
        /// <param name="request">Objeto petición con información de TCMM asociada</param>
        /// <returns></returns>
        public ResponseBussiness <FinalizarCompraResponse> FinalizarCompraTCMM(FinalizarCompraRequest request)
        {
            //request.PlanFinanciamiento: ID del plan de financiamiento
            //request.ImporteVentaTotal: Monto autorizado con la TCMM
            string mesesFinanciados;
            string montoMensualidad;

            //OCG: Recuparar número de meses para el financiamiento
            mesesFinanciados = request.MesesFinanciados.ToString();

            return(tryCatch.SafeExecutor(() =>
            {
                FinalizarCompraResponse response = new FinalizarCompraResponse();
                InfoService infoService = new InfoService();
                InformacionServiciosExternosBusiness informacionServiciosExternosBusiness = new InformacionServiciosExternosBusiness();
                infoService = informacionServiciosExternosBusiness.ObtenerCadenaServicioExterno(7);
                var cadenaURL = infoService.UrlService;
                HttpWebRequest httpWebRequest = (HttpWebRequest)WebRequest.Create(cadenaURL + "/getPurchaseAuthorization");
                httpWebRequest.Headers.Add("Authorization", credenciales.Licence);
                httpWebRequest.Method = "POST";
                httpWebRequest.ContentType = "application/json";
                var serializer = new Newtonsoft.Json.JsonSerializer();

                // Inicia la Transaccion
                using (TransactionScope scope = new TransactionScope())
                {
                    // Se procesan las promociones por venta
                    foreach (var item in request.DescuentosPromocionalesPorVentaAplicados.DescuentoPromocionesAplicados)
                    {
                        repository.PersistirPromocionesVenta(request.FolioOperacionAsociada, token.CodeStore, token.CodeBox, item.ImporteDescuento
                                                             , item.CodigoPromocionAplicado, item.DescripcionCodigoPromocionAplicado, item.PorcentajeDescuento, item.CodigoRazonDescuento, item.FormaPagoCodigoPromocionAplicado);
                    }
                    // Se procesan las promociones por línea de venta
                    foreach (var item in request.DescuentosPromocionalesPorLineaAplicados.DescuentoPromocionesAplicados)
                    {
                        repository.PersistirPromocionesLineaVenta(request.FolioOperacionAsociada, token.CodeStore, token.CodeBox, item.Secuencia, item.ImporteDescuento
                                                                  , item.CodigoPromocionAplicado, item.DescripcionCodigoPromocionAplicado, item.PorcentajeDescuento, item.CodigoRazonDescuento, item.FormaPagoCodigoPromocionAplicado);
                    }

                    //OCG:
                    // Se procesa la persistencia localmente
                    var movimientoVenta = repository.ProcesarMovimientoTarjetaMelodyMilano(token.CodeStore, token.CodeBox, token.CodeEmployee, "", request.NumeroTarjeta, request);

                    // Se invoca el Servicio de Milano
                    using (var streamWriter = new StreamWriter(httpWebRequest.GetRequestStream()))
                    {
                        using (var textWriter = new Newtonsoft.Json.JsonTextWriter(streamWriter))
                        {
                            serializer.Serialize(textWriter,
                                                 new
                            {
                                User = credenciales.UserName,
                                Pwd = credenciales.Password,
                                CardId = request.NumeroTarjeta,
                                BranchId = token.CodeStore,
                                TerminalNumber = token.CodeBox,
                                VoucherNumber = movimientoVenta.Transaccion,
                                TransactionAmount = request.ImporteVentaTotal,
                                EntryMode = 12,
                                FinancingSchemeId = request.PlanFinanciamiento
                            });
                        }
                    }
                    var httpResponse = (HttpWebResponse)httpWebRequest.GetResponse();
                    using (var streamReader = new StreamReader(httpResponse.GetResponseStream()))
                    {
                        var responseText = streamReader.ReadToEnd();
                        JToken responseJObject = JObject.Parse(responseText);
                        response.CodigoRespuestaTCMM = new CodigoRespuestaTCMM();
                        response.CodigoRespuestaTCMM.CodigoRespuesta = Convert.ToString(responseJObject.SelectToken("ErrorCode"));
                        response.CodigoRespuestaTCMM.MensajeRetorno = Convert.ToString(responseJObject.SelectToken("Message"));

                        //OCG: Recuperar los valores del financiamiento para poder actualizar la tabla
                        UpdatePlanFinanciamientoTCMM planesFinanciamiento = new UpdatePlanFinanciamientoTCMM();

                        planesFinanciamiento.folioOperacion = request.FolioOperacionAsociada;
                        planesFinanciamiento.montoMensualidad = Convert.ToString(responseJObject.SelectToken("Response.MonthlyPayment"));
                        planesFinanciamiento.financiamientoId = request.MesesFinanciados.ToString();
                        planesFinanciamiento.codigoFormaPago = request.CodigoFormaPagoImporte;
                        planesFinanciamiento.codigoTienda = token.CodeStore;
                        planesFinanciamiento.fechaActualizacion = DateTime.Now;
                        planesFinanciamiento.codigoCaja = token.CodeBox;

                        repository.spMilano_ActualizaPlazoFinanciamiento(planesFinanciamiento);
                        //--


                        if (response.CodigoRespuestaTCMM.CodigoRespuesta == "0")
                        {
                            // Actualizar la autorización regresada por WS Milano
                            response.Authorization = Convert.ToString(responseJObject.SelectToken("Response").SelectToken("AuthorizationNumber"));
                            repository.ActualizarMovimientoTarjetaMelodyMilano(token.CodeStore, token.CodeBox, movimientoVenta.Transaccion, response.Authorization, request);
                            scope.Complete();
                        }
                    }
                }
                // Finalizar la Transacción

                return response;
            }));
        }
 public FinalizarCompraCommand(FinalizarCompraRequest finalizarCompraRequest, IUserRef userRef)
 {
     FinalizarCompraRequest = finalizarCompraRequest;
     UserRef = userRef;
 }