private async Task capturarCita()
        {
            int citaId = Convert.ToInt32(txtcita.Text);
            var cita   = await ctCtrl.getFullCita(citaId);

            if (cita.Cita != null)
            {
                if (cita.Cita.Estatus == 3)
                {
                    MessageBox.Show(
                        "La cita introducida esta catalogada como satisfactoria.",
                        "Cita no encontrada",
                        MessageBoxButtons.OK,
                        MessageBoxIcon.Warning
                        );
                    return;
                }
                this.Cita                  = cita.Cita;
                CitaDetalle                = cita.CitaDetalle;
                this.dgvbase.DataSource    = CitaDetalle;
                dgvbase.Columns[0].Visible = false;
                dgvbase.Columns[1].Visible = false;
                calcularImporte();
            }
            else
            {
                MessageBox.Show(
                    "La cita introducida no puede ser encontrada, verifique que esta no este completada, ni cancelada.",
                    "Cita no encontrada",
                    MessageBoxButtons.OK,
                    MessageBoxIcon.Warning
                    );
            }
        }
        private async void btnagendar_Click(object sender, EventArgs e)
        {
            if (txthora.Text.Length < 1 || txtminuto.Text.Length < 1)
            {
                MessageBox.Show("La cita debe tener hora y minutos.", "Datos invalidos", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                return;
            }
            if (txtcantservicios.Value == 0)
            {
                MessageBox.Show("No puede hacer 0 servicios.", "Datos invalidos", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                return;
            }
            if (dgvserv.Rows.Count < 1)
            {
                MessageBox.Show("No puede hacer 0 servicios.", "Datos invalidos", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                return;
            }

            var r = MessageBox.Show("Agendar cita?", "Confirmar", MessageBoxButtons.YesNo, MessageBoxIcon.Question);

            if (r == DialogResult.No)
            {
                return;
            }

            this.Cursor = Cursors.WaitCursor;
            List <cita_detalle> citaDetalles = new List <cita_detalle>();

            foreach (DataGridViewRow row in dgvserv.Rows)
            {
                citaDetalles.Add(new cita_detalle
                {
                    sv_id      = (short)Convert.ToInt32(row.Cells[0].Value.ToString()),
                    sv_cant    = Convert.ToInt32(row.Cells[2].Value.ToString()),
                    sv_precio  = Convert.ToDecimal(row.Cells[3].Value.ToString()),
                    sv_importe = Convert.ToDecimal(row.Cells[4].Value.ToString()),
                });
            }
            var cita = await ctCtrl.crearCita(new citas
            {
                ct_estatus  = 1,
                ct_cliente  = this.Cliente.idcliente,
                ct_empleado = this.Empleado.Id,
                ct_fecha    = this.txtfecha.Value,
                ct_hora     = Convert.ToDateTime($"{txthora.Text}:{txtminuto.Text}:00").TimeOfDay,
            },
                                              citaDetalles);

            this.Cursor = Cursors.Default;
            if (cita != null)
            {
                var msg = MessageBox.Show(
                    $"Se creo una cita con folio {cita.idcita}, para el cliente " +
                    $"{this.Cliente.cl_nombrecompleto} para el dia " +
                    $"{this.txtfecha.Value.Day}/{this.txtfecha.Value.Month}/{this.txtfecha.Value.Year} a " +
                    $"las {this.txthora.Text}:{this.txtminuto.Text}, Imprimir ticket?",
                    "Operacion exitosa, Imprimir ticket?", MessageBoxButtons.YesNo, MessageBoxIcon.Information);
                if (msg == DialogResult.No)
                {
                    reloadForm();
                    return;
                }
                // Abrir el formulario con el ticket.
                var ctd = await ctCtrl.getFullCita(cita.idcita);

                var frmTicketCita = new frmticketcita(ctd.CitaDetalle, ctd.Cita.Fecha, ctd.Cita.Id);
                frmTicketCita.ShowDialog();
                reloadForm();
            }
            else
            {
                MessageBox.Show("Ocurrio un error creando la cita, comuniquese con el administrador del sistema.", "Error", MessageBoxButtons.OK, MessageBoxIcon.Hand);
            }
        }