public Empleado RetrieveById(int id)
        {
            var cuenta = new Empleado()
            {
                id = id
            };

            return(em.RetrieveById(cuenta));
        }
Exemple #2
0
        //SE MUESTRA LA INFORMACION QUE HA PEDIDO EL USUARIO
        private static async void BotOnCallbackQueryReceived(object sender, CallbackQueryEventArgs callbackQueryEventArgs)
        {
            //var message = messageEventArgs.Message;
            var callbackQuery = callbackQueryEventArgs.CallbackQuery;

            switch (callbackQuery.Data.Split(":")[0])
            {
            case "comercios":     //MUESTRA LA LISTA DE LOS COMERCIOS

                var             usuario        = Int32.Parse(callbackQuery.Data.Split(":")[1]);
                List <Comercio> listaComercios = new List <Comercio>();
                listaComercios = comercios.ObtenerTodoComercio();

                var Botcomercios = new InlineKeyboardButton[listaComercios.Count()][];
                int counter      = 0;
                foreach (var lista in listaComercios)
                {
                    var row = new[]
                    {
                        InlineKeyboardButton.WithCallbackData(text: lista.Nombre, callbackData: "sucursales:" + lista.Id + ":" + usuario)
                    };
                    Botcomercios[counter] = row;
                    counter++;
                }

                await Bot.SendTextMessageAsync(
                    chatId : callbackQuery.Message.Chat.Id,
                    text : "Lista de comercios:",
                    replyMarkup : new InlineKeyboardMarkup(Botcomercios));


                break;

            case "sucursales":

                var usuario_1 = Int32.Parse(callbackQuery.Data.Split(":")[2]);


                var sucursal = new Sucursal {
                    IdComercio = Int32.Parse(callbackQuery.Data.Split(":")[1])
                };

                List <Sucursal> listaSucursales = new List <Sucursal>();

                listaSucursales = sucursales.ObtenerTodoSucursal(sucursal);

                var Botsucursales = new InlineKeyboardButton[listaSucursales.Count()][];
                int iterable      = 0;
                foreach (var list in listaSucursales)
                {
                    var row = new[]
                    {
                        InlineKeyboardButton.WithCallbackData(text: list.Nombre, callbackData: "opcionesSucursales:" + usuario_1 + ":" + list.Id)
                    };
                    Botsucursales[iterable] = row;
                    iterable++;
                }

                await Bot.SendTextMessageAsync(
                    chatId : callbackQuery.Message.Chat.Id,
                    text : "Lista de sucursales:",
                    replyMarkup : new InlineKeyboardMarkup(Botsucursales));

                break;


            case "opcionesSucursales":

                var sucursalList = new InlineKeyboardMarkup(new[]
                {
                    new []
                    {
                        InlineKeyboardButton.WithCallbackData(
                            text: "Dirección",
                            callbackData: "direccion: " + Int32.Parse(callbackQuery.Data.Split(":")[2])),//lo que se manda al case
                        InlineKeyboardButton.WithCallbackData(
                            text: "Servicios",
                            callbackData: "servicios: " + Int32.Parse(callbackQuery.Data.Split(":")[1]) + ":" + Int32.Parse(callbackQuery.Data.Split(":")[2])),//lo que se manda al case
                    }
                });
                await Bot.SendTextMessageAsync(
                    chatId : callbackQuery.Message.Chat.Id,
                    text : "Opciones: ",
                    replyMarkup : sucursalList);


                break;

            case "direccion":

                var sucursalDireccion = new Sucursal {
                    Id = Int32.Parse(callbackQuery.Data.Split(":")[1])
                };
                Sucursal direccion = sucursales.ObtenerSucursal(sucursalDireccion);

                await Bot.SendLocationAsync(
                    chatId : callbackQuery.Message.Chat.Id,
                    latitude : float.Parse(direccion.Latitud),
                    longitude : float.Parse(direccion.Longitud)
                    );

                break;


            case "servicios":


                //var Id = Int32.Parse(callbackQuery.Data.Split(":")[1]);
                var usuario_2   = Int32.Parse(callbackQuery.Data.Split(":")[1]);
                var id_sucursal = Int32.Parse(callbackQuery.Data.Split(":")[2]);

                List <Item> listItem = new List <Item>();

                listItem = items.RetrieveAllBySucursal(id_sucursal);

                var BotItem = new InlineKeyboardButton[listItem.Count()][];
                int count1  = 0;
                foreach (var list in listItem)
                {
                    if (list.tipo.Equals("Servicio"))
                    {
                        var row = new[]
                        {
                            InlineKeyboardButton.WithCallbackData(text: list.nombre, callbackData: "itemOpciones:" + usuario_2 + ":" + list.id + ":" + id_sucursal)
                        };
                        BotItem[count1] = row;
                        count1++;
                    }
                    else if (listItem.Count().Equals(0))
                    {
                        var sucursalError = new InlineKeyboardMarkup(new[]
                        {
                            new []
                            {
                                InlineKeyboardButton.WithCallbackData(
                                    text: "Comercios",
                                    callbackData: "comercios: " + usuario_2),//lo que se manda al case
                            }
                        });
                        await Bot.SendTextMessageAsync(
                            chatId : callbackQuery.Message.Chat.Id,
                            text : "No se encontraron servicios, ingrese a un nuevo comercio: ",
                            replyMarkup : sucursalError);

                        return;
                    }
                    else if (list.tipo.Equals("Producto"))
                    {
                        var row = new[]
                        {
                            InlineKeyboardButton.WithCallbackData(text: list.nombre + "/No puede sacar citas de productos", callbackData: "comercios: " + usuario_2)
                        };
                        BotItem[count1] = row;
                        count1++;
                    }
                }
                await Bot.SendTextMessageAsync(
                    chatId : callbackQuery.Message.Chat.Id,
                    text : "Lista de servicios:",
                    replyMarkup : new InlineKeyboardMarkup(BotItem));


                break;

            case "itemOpciones":

                var opcionesItem = new InlineKeyboardMarkup(new[]
                {
                    new []
                    {
                        InlineKeyboardButton.WithCallbackData(
                            text: "Nueva Cita",
                            callbackData: "nuevaCita: " + Int32.Parse(callbackQuery.Data.Split(":")[1]) + ":" + Int32.Parse(callbackQuery.Data.Split(":")[2]) + ":" + Int32.Parse(callbackQuery.Data.Split(":")[3])),//lo que se manda al case, el id del item
                    }
                });
                await Bot.SendTextMessageAsync(
                    chatId : callbackQuery.Message.Chat.Id,
                    text : "Citas: ",
                    replyMarkup : opcionesItem);


                break;

            case "nuevaCita":

                var id_item    = Int32.Parse(callbackQuery.Data.Split(":")[2]);
                var idSucursal = Int32.Parse(callbackQuery.Data.Split(":")[3]);

                datosCitas[1] = id_item.ToString();
                datosCitas[3] = idSucursal.ToString();

                int id_usuario = Int32.Parse(callbackQuery.Data.Split(":")[1]);    //id del usuario pos 1


                if (id_usuario == 0)
                {
                    await Bot.SendTextMessageAsync(
                        chatId : callbackQuery.Message.Chat.Id,
                        text : "Debe iniciar sesión antes de sacar un cita, ingrese su correo electrónico y contraseña separados por una coma",
                        replyMarkup : new ForceReplyMarkup());
                }
                else
                {
                    List <EmpleadosXItem> empleados = new List <EmpleadosXItem>();

                    empleados = items.obtenerEmpleadosItem(id_item);

                    var BotEmpleado = new InlineKeyboardButton[empleados.Count()][];
                    int count3      = 0;
                    foreach (var list in empleados)
                    {
                        var nuevo_empleado = new Empleado {
                            id = list.id_empleado
                        };

                        Empleado nombre_empleado = empleado.RetrieveById(nuevo_empleado);

                        var usuario_empleado = new Usuario {
                            Id = nombre_empleado.id_usuario
                        };

                        Usuario usuarioMostrar = usuarios.RetrieveById(usuario_empleado);


                        var row = new[]
                        {
                            InlineKeyboardButton.WithCallbackData(text: usuarioMostrar.Nombre, callbackData: "datosCita:" + list.id_empleado + ":" + id_item + ":" + id_usuario + ":" + idSucursal)//mas el id del cliente ,mas el item
                        };
                        BotEmpleado[count3] = row;
                        count3++;

                        datosCitas[0] = list.id_empleado.ToString();

                        datosCitas[2] = id_usuario.ToString();
                    }

                    await Bot.SendTextMessageAsync(
                        chatId : callbackQuery.Message.Chat.Id,
                        text : "Empleados disponibles:",
                        replyMarkup : new InlineKeyboardMarkup(BotEmpleado));
                }

                break;

            case "datosCita":

                await Bot.SendTextMessageAsync(
                    chatId : callbackQuery.Message.Chat.Id,
                    text : "Ingrese la fecha, la hora de inicio, la hora de fin de la cita. Ejemplo: 2020-08-24,17:00:00,18:00:00",
                    replyMarkup : new ForceReplyMarkup());

                break;
            }
        }
Exemple #3
0
        public IActionResult CrearFactura(Pago pago)
        {
            Envio       envio       = pago.Envio;
            Transaccion transaccion = pago.Transaccion;
            Promocion   promocion   = pago.Promocion;

            transaccion.CodigoTransaccion = new Random().Next(100000000).ToString();
            try
            {
                int idTransaccion = transaccionManagement.Create(transaccion);

                var empleado = new Empleado {
                    id = envio.IdEmpleado
                };
                empleado = empleadoManagement.RetrieveById(empleado);

                var usuarioEmpleado = new Usuario {
                    Id = empleado.id_usuario
                };
                usuarioEmpleado = usuarioManagement.RetrieveById(usuarioEmpleado);

                var cliente = new Usuario {
                    Id = envio.IdCliente
                };
                cliente = usuarioManagement.RetrieveById(cliente);

                var sucursalEmpleado = sucursalManagement.ObtenerSucursalPorEmpleado(usuarioEmpleado);

                var comercio = new Comercio {
                    Id = sucursalEmpleado.IdComercio
                };
                comercio = comercioManagement.ObtenerComercio(comercio);

                var factura = new Factura
                {
                    IdUsuario        = cliente.Id,
                    IdEmpleado       = empleado.id,
                    NombreEmpleado   = usuarioEmpleado.Nombre,
                    ApellidoEmpleado = usuarioEmpleado.Apellido,
                    CedulaUsuario    = cliente.Cedula,
                    NombreUsuario    = cliente.Nombre,
                    ApellidoUsuario  = cliente.Apellido,
                    TelefonoUsuario  = cliente.Telefono,
                    CorreoUsuario    = cliente.Correo,
                    NombreSucursal   = sucursalEmpleado.Nombre,
                    CedulaJuridica   = comercio.CedulaJuridica,
                    //Todo: Promociones
                    IdTransaccion = idTransaccion
                };

                if (promocion != null)
                {
                    factura.IdPromocion     = promocion.id;
                    factura.NombrePromocion = promocion.nombre;
                    factura.Porcentaje      = promocion.porcentaje;
                }

                var          facturaDB    = facturaManagement.Create(factura, envio);
                LineaFactura lineaFactura = new LineaFactura {
                    IdFactura = facturaDB.Id
                };
                List <LineaFactura> lineasFactura = facturaManagement.RetrieveLineasxFactura(lineaFactura);

                HtmlToPdf htmlToPdf = new HtmlToPdf();

                Object[] pagoContainer = { factura, transaccion, lineasFactura };

                PdfDocument pdfDocument = htmlToPdf.ConvertHtmlString(GetHtmlString(pagoContainer));

                MemoryStream pdfStream = new MemoryStream();

                pdfDocument.Save(pdfStream);

                pdfStream.Position = 0;

                this.emailService.Send(new EmailModel
                {
                    To         = cliente.Correo,
                    Subject    = "Factura",
                    Message    = "<p>Factura de " + comercio.Nombre + "</p>",
                    Attachment = new Attachment(pdfStream, "Factura.pdf")
                });

                return(Ok());
            } catch (Exception e)
            {
                return(BadRequest(new { message = "Ha ocurrido un error al registrar su pago. Inténtelo más tarde." }));
            }
        }