﻿using System;
using System.Collections.Generic;
using System.Globalization;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

namespace PlantillaASP
{
    public partial class Tarjeta : System.Web.UI.Page
    {
        Wservice.Fase2WebClient servicio = new Wservice.Fase2WebClient();
        banco.APIClient bank = new banco.APIClient();
        compra.POSapiClient buy = new compra.POSapiClient();

        protected void Page_Load(object sender, EventArgs e)
        {

        }

        protected void Button2_Click(object sender, EventArgs e)
        {
            Double actual = Double.Parse(Session["saldo"].ToString(), CultureInfo.InvariantCulture);
            Double nuevosaldo = Double.Parse(TextBox2.Text, CultureInfo.InvariantCulture);
            Double total = actual + nuevosaldo;
            int tarjeta = servicio.ObtenerTarjeta(Session["NickName"].ToString());
            int cuentaAdmin = servicio.ObtenerCuenta("admin");

            if ("Operacion exitosa".Equals(buy.pagoConTarjeta(tarjeta, cuentaAdmin, nuevosaldo)))
            {
                Session["saldo"] = servicio.ActualizarSaldo(Session["NickName"].ToString(), total);
                Label5.Text = " Nuevo Saldo: " + total;
            }
            else
            {
                Label5.Text = "Error";

            }
        }

        protected void Button1_Click(object sender, EventArgs e)
        {
            int cuentaAdmin = 0;
            banco.monetaria[] a = bank.listaCuentasAsociadas(201503611);
            for (int i = 0; i < a.Length; i++)
            {
                String nombre = a[i].nombre.ToString();
                if (nombre.Equals("admin"))
                {
                    cuentaAdmin = Convert.ToInt32(a[i].noCuenta);
                    break;
                }

            }
            if (buy.validarTarjeta(Convert.ToInt32(TextBox1.Text), 201503611))
            {
                if (servicio.agregartarjetaMenos(Convert.ToInt32(TextBox1.Text), Session["NickName"].ToString()))
                {
                    Label3.Text = "Tarjeta Agregada Correctamente";
                }
                else
                {
                    Label3.Text = "Error";
                }

            }
            else
            {
                Label3.Text = "Error";
            }

        }

        protected void Button3_Click(object sender, EventArgs e)
        {
            if (servicio.BorrarTarjeta(Session["NickName"].ToString()))
            {
                Label4.Text = "Eliminada Correctamente";
            }
            else
            {
                Label4.Text = "Error";
            }
        }

        protected void Button4_Click(object sender, EventArgs e)
        {
            int cuentaNo = 0;
            int tarjeta = 0;
            String nombre = Session["NickName"].ToString();
            bank.AbrirCuentaMonetaria(201503611, nombre, nombre, 1000);
            banco.monetaria[] dato = bank.listaCuentasAsociadas(201503611);
            for (int i = dato.Length-1; i>=0; i--)
            {
                String name = dato[i].nombre.ToString();
                if (nombre.Equals(name))
                {
                    cuentaNo = dato[i].noCuenta;
                    bank.generarNuevaTarjeta(cuentaNo, 201503611);
                    int?[] a = bank.getTarjetasAsociadas(cuentaNo, 201503611);
                    tarjeta = a[0].Value;


                    //servicio.agregartarjeta(tarjeta, nombre,cuentaNo);
                    break;
                }

            }
            Label7.Text = "Cuenta: " + cuentaNo + " Tarjeta: " + tarjeta;
        }

        protected void Button5_Click(object sender, EventArgs e)
        {
            if (servicio.agregartarjeta(Convert.ToInt32(TextBox1.Text), Session["NickName"].ToString(), Convert.ToInt32(TextBox3.Text)))
            {
                Label3.Text = "Tarjeta Agregada Correctamente";
            }
            else
            {
                Label3.Text = "Error";
            }
        }

        protected void Button6_Click(object sender, EventArgs e)
        {
            banco.monetaria[] dato = bank.listaCuentasAsociadas(201503611);
            for (int i = 0; i < dato.Length; i++)
            {
                int s = servicio.ObtenerCuenta(Session["NickName"].ToString());
                if (s == dato[i].noCuenta)
                {
                    Label11.Text = "" + dato[i].monto;
                    break;
                }
            }
        }
    }
}