//
        // GET: /CarritoCompras/Create
        public ActionResult RealizarCompra()
        {
            List<CarritoCompra> listaCarritoCompras = null;

            string rpta = string.Empty;

                listaCarritoCompras = (List<CarritoCompra>)Session["Carrito"];
             Transaccion objTransaccion = new Transaccion();
             objTransaccion = (Transaccion)Session["Transaccion"];

                Decimal dMonto = listaCarritoCompras.Sum(P => P.TotalProducto);
                //Guardar en base de datos
                WsBanco.NroCuentaServiceClient oWsBancoJava = new WsBanco.NroCuentaServiceClient();
                //rpta = oWsBancoJava.obtenerTransaccion("6958474589632458", "0201", "SOL", 100);
               // rpta = oWsBancoJava.obtenerTransaccion("6958474589632458", "0201", "SOL", (double)dMonto);
                rpta = oWsBancoJava.obtenerTransaccion(objTransaccion.NumeroTarjeta, objTransaccion.CodigoTarjeta, objTransaccion.TipoPago, (double)dMonto);

                if (rpta != "-1")
                {

                    objTransaccion.CodigoTransaccion = rpta;
                    //Procedemos a guardar el documento
                    //Cabecera
                    TB_Pedido newPedido = new TB_Pedido();
                    newPedido.Fk_eCliente = objTransaccion.IdCliente;
                    newPedido.cDestinatario = "";
                    newPedido.mTotal = dMonto;
                    newPedido.cNumTarjeta = objTransaccion.NumeroTarjeta;
                    newPedido.eCodTarjeta = int.Parse(objTransaccion.CodigoTarjeta);
                    newPedido.cTipoPago = objTransaccion.TipoPago;
                    newPedido.cNroTransaccion = rpta;
                    _data.TB_Pedido.InsertOnSubmit(newPedido);
                    _data.SubmitChanges();

                    //Detalle
                    for (int i = 0; i < listaCarritoCompras.Count; i++)
                    {
                        TB_DetallePedido newDetPedido = new TB_DetallePedido();
                        newDetPedido.Fk_ePedido = newPedido.Pk_ePedido;
                        newDetPedido.Fk_eProducto = listaCarritoCompras[i].IdProducto;
                        newDetPedido.eCantidad = listaCarritoCompras[i].CantProducto;
                        newDetPedido.mSuTotal = listaCarritoCompras[i].TotalProducto;
                        _data.TB_DetallePedido.InsertOnSubmit(newDetPedido);
                        _data.SubmitChanges();

                    }

                    //Message QUEUE
                    //Insertar en cola - Message Queue
                    string rutaColaR = @".\private$\Ventas";
                    if (!MessageQueue.Exists(rutaColaR))
                        MessageQueue.Create(rutaColaR);
                    MessageQueue colaR = new MessageQueue(rutaColaR);
                    Message mensajeR = new Message();
                    mensajeR.Label = "Venta001";
                   // mensajeR.Body = new Transaccion() { IdCliente = 1, NombreCliente = "Lucho Cuellar", NumeroTarjeta = "20412222111", TipoPago = "S", MontoTotal = 700 };
                    mensajeR.Body = new Transaccion() { CodigoTarjeta=objTransaccion.CodigoTarjeta, CodigoTransaccion= objTransaccion.CodigoTransaccion, IdCliente= objTransaccion.IdCliente, MontoTotal= objTransaccion.MontoTotal, NombreCliente= objTransaccion.NombreCliente, NumeroTarjeta= objTransaccion.NumeroTarjeta, TipoPago= objTransaccion.TipoPago};
                    colaR.Send(mensajeR);

                    //Leer el objeto insertado en cola
                    string rutaColaL = @".\private$\Ventas";
                    if (!MessageQueue.Exists(rutaColaL))
                        MessageQueue.Create(rutaColaL);
                    MessageQueue colaL = new MessageQueue(rutaColaL);
                    colaL.Formatter = new XmlMessageFormatter(new Type[] { typeof(Transaccion) });
                    Message mensajeL = colaL.Receive(); //new Message();
                    Transaccion otransCola = (Transaccion)mensajeL.Body;
                    //Message QUEUE

                    ////Limpiar
                    //Session["Carrito"] = null;
                    //Session["Transaccion"] = objTransaccion;
                    //ViewData["Cod.Transaccion"] = objTransaccion.CodigoTransaccion;

                    //Limpiar
                    //Session["Carrito"] = null;
                    Session["Transaccion"] = otransCola;
                    ViewData["Cod.Transaccion"] = otransCola.CodigoTransaccion;

                    ViewData["Message"] = string.Format("La compra se realizo correctamente, El Monto total fue de : {0}", String.Format("{0:c}", Session["MontoCarritoTotal"]));

                    //Enviar Correo

                    //MailMessage mailObj = new MailMessage(txtFrom.Text, txtTo.Text, txtSubject.Text, txtBody.Text); SmtpClient SMTPServer = new SmtpClient("localhost"); try { SMTPServer.Send(mailObj); }
                    //catch (Exception ex) { }

                    //MailMessage mailObj = new MailMessage("*****@*****.**", "*****@*****.**", "Compra Articulos Computo", "Buenos dias su compra fue satisfactoria"); SmtpClient SMTPServer = new SmtpClient("smtp.gmail.com"); try { SMTPServer.Send(mailObj); }
                    //catch (Exception ex) { }

                    MailMessage MyMailMessage = new MailMessage();

                    MyMailMessage.From = new MailAddress("*****@*****.**");

                    MyMailMessage.To.Add("*****@*****.**");

                    MyMailMessage.Subject = "Compra Articulos de Computo";

                    MyMailMessage.IsBodyHtml = true;

                    string MensajeCorreo = string.Empty;

                    MensajeCorreo = string.Format( "<table><tr><td> Sr(a) : {0} </td></tr> ",otransCola.NombreCliente);

                    MensajeCorreo += "<tr><td> Los Articulos comprados fueron :  </td></tr>";

                    for (int i = 0; i < listaCarritoCompras.Count; i++)
                    {

                        MensajeCorreo += string.Format("<tr><td> {0} - {1}  </td></tr>", listaCarritoCompras[i].CantProducto, listaCarritoCompras[i].DescripcionProducto);

                    }

                    MensajeCorreo += string.Format("<tr><td>El total es de : {0} </td></tr>", String.Format("{0:c}", Session["MontoCarritoTotal"]));
                    MensajeCorreo += "</table>";

                   // MyMailMessage.Body = "<table><tr><td>" + txtName.Text + txtEmail.Text + txtComments.Text + "</table></tr></td>";
                   // MyMailMessage.Body = "<table><tr><td>Tu compra fue un exito </tr></td></table>";
                    MyMailMessage.Body = MensajeCorreo;

                    SmtpClient SMTPServer = new SmtpClient("smtp.gmail.com");

                    SMTPServer.Port = 587;

                   // SMTPServer.Credentials = new System.Net.NetworkCredential("*****@*****.**", System.Configuration.ConfigurationSettings.AppSettings["pwd"].ToString());
                    SMTPServer.Credentials = new System.Net.NetworkCredential("*****@*****.**", "esquivel");

                    SMTPServer.EnableSsl = true;

                    try
                    {

                        SMTPServer.Send(MyMailMessage);

                       // Response.Redirect("Thankyou.aspx");

                    }

                    catch (Exception ex)
                    {

                     }

                    //smtp.gmail.com

                    //Limpiar Carrito
                    Session["Carrito"] = null;

                }
                else
                {
                    ViewData["Message"] = "Ocurrió un error en la transacción.";
                }

                return View();
        }
 partial void DeleteTB_DetallePedido(TB_DetallePedido instance);
 partial void UpdateTB_DetallePedido(TB_DetallePedido instance);
 partial void InsertTB_DetallePedido(TB_DetallePedido instance);
		private void detach_TB_DetallePedido(TB_DetallePedido entity)
		{
			this.SendPropertyChanging();
			entity.TB_Pedido = null;
		}
		private void attach_TB_DetallePedido(TB_DetallePedido entity)
		{
			this.SendPropertyChanging();
			entity.TB_Producto = this;
		}