private static async Task AddCommentsAsync()
        {
            Console.Clear();
            Console.WriteLine("InstaPhoto" + "\nSubir Foto");

            await ViewPhotos();

            Console.WriteLine("\nIngrese ID de foto");
            var photoId = ClientUtils.ReadUntilIsNotEmpty(Console.ReadLine());

            Console.WriteLine("\nIngrese comentario");
            var message = ClientUtils.ReadUntilIsNotEmpty(Console.ReadLine());

            var comment = new Comment
            {
                Photo = new Photo()
                {
                    Id = long.Parse(photoId)
                },
                Message = message,
            };
            var response = await ServerHandler.HandleCommentCreation(_client, comment);

            if (response.responseCommands == ProtocolConstants.ResponseCommands.Ok)
            {
                Console.WriteLine("\nComentario Agregado Correctamente");
            }
            else
            {
                Console.WriteLine("\nDatos invalidos, revise y pruebe de nuevo");
            }

            ConsoleValidations.ContinueHandler();
        }
        private static async Task MainMenu()
        {
            var options = new string[] {
                "Cargar Foto",
                "Listado de Usuarios",
                "Ver Comentarios",
                "Ver Fotos",
                "Agregar Comentarios",
                "Salir"
            };

            while (_client.IsLoggedIn)
            {
                Console.Clear();
                ConsoleValidations.ListOperations($"{"InstaPhoto"}\n\nMENÚ PRINCIPAL:", options, true);

                var option = ConsoleValidations.ReadUntilValid(prompt: "\nIngrese opción",
                                                               pattern: $"^[1-{options.Length}]$",
                                                               errorMsg: $"Ingrese un número entre 1 y {options.Length}");

                await ExecuteItemMainMenu(option);
            }

            ConsoleValidations.ContinueHandler();
        }
        private static async Task LoginUser()
        {
            Console.Clear();
            Console.WriteLine("InstaPhoto" + "\nLogin");

            Console.WriteLine("\nIngrese email (<<q>> para cancelar) >>");
            var email = ClientUtils.ReadUntilIsNotEmpty(Console.ReadLine());

            Console.WriteLine("\nIngrese contrasenia (<<q>> para cancelar) >>");
            var password = ClientUtils.ReadUntilIsNotEmpty(Console.ReadLine());

            var user = new User
            {
                Email    = email,
                Password = password
            };

            var response = await ServerHandler.HandleLogin(_client, user);

            if (response.responseCommands == ProtocolConstants.ResponseCommands.Ok)
            {
                Console.WriteLine("\nBienvenido!");
                _client.IsLoggedIn = true;
                await MainMenu();
            }
            else
            {
                Console.WriteLine("\nDatos invalidos, revise y pruebe de nuevo");

                ConsoleValidations.ContinueHandler();
            }
        }
        public static async Task Main(string[] args)
        {
            Console.Clear();
            Console.Title = "InstaPhoto";
            Console.WriteLine("InstaPhoto\n\nPresione una tecla para continuar...\n");
            Console.ReadLine();

            var clientIp = ConsoleValidations.PromptIPsAvailablesOnPC("InstaPhoto");

            var ipEndPoint = new IPEndPoint(IPAddress.Parse(clientIp), 0);
            var client     = new TcpClient(ipEndPoint);

            Console.WriteLine("\nIndique ip del serivdor:\n");
            var serverIp = Console.ReadLine();

            Console.WriteLine("\nIndique puerto del serivdor:\n");
            var port = Console.ReadLine();

            var serverIpEndPoint = new IPEndPoint(IPAddress.Parse(serverIp), int.Parse(port));

            client.Connect(serverIpEndPoint);
            var stream = client.GetStream();

            _client = new Client()
            {
                StreamCommunication = new StreamCommunication(stream)
            };

            await EntryMenu();
        }
示例#5
0
        public static async Task DeleteUser(Server server)
        {
            var clients = (await server.Service.GetUsersAsync()).ToList().Select(c => new User()
            {
                Name  = c.Name,
                Email = c.Email,
                //LastConnection = c.LastConnection
            });

            if (!clients.Any())
            {
                Console.WriteLine("\nNo hay usuarios en el sistema");
                return;
            }

            var options = clients.Select(g => g.ToString()).ToArray();

            ConsoleValidations.ListOperations("\nClientes disponibles:", options, false);;
            var option = ConsoleValidations.ReadUntilValid(prompt: "\nIngrese número de cliente",
                                                           pattern: $"^[1-9]|10$",
                                                           errorMsg: $"Ingrese un número entre 1 y {options.Length}");


            var clientToDelete = clients.ElementAt(int.Parse(option) - 1);
            var clientDto      = new UserDto
            {
                Email = clientToDelete.Email
            };
            await server.Service.RemoveUserAsync(clientDto);
        }
        private static async Task ViewPhotos()
        {
            var response = await ServerHandler.HandleViewPhotos(_client);

            foreach (var photo in response)
            {
                Console.WriteLine(photo.ToString());
            }

            ConsoleValidations.ContinueHandler();
        }
        private static async Task ListSelectedOption(FileServer.Server server, string title, string[] list)
        {
            ConsoleValidations.ListOperations($"{"ADMINISTRACIÓN DEL SERVIDOR"}\n\n{title}:", list, true);
            string option = ConsoleValidations.ReadUntilValid(prompt: "\nPresione <<q>> para volver al menú principal",
                                                              pattern: $"^[q|Q]$",
                                                              errorMsg: $"Opción no válida");

            if (option.ToLower() == "q")
            {
                await Menu(server);
            }
        }
        private static async Task EntryMenu()
        {
            while (true)
            {
                var options = new string[] {
                    "Registrase",
                    "Login",
                    "Desconectarse"
                };
                ConsoleValidations.ListOperations($"{"InstaPhoto"}\n\nMENÚ PRINCIPAL:", options, true);

                var option = ConsoleValidations.ReadUntilValid(prompt: "\nIngrese opción",
                                                               pattern: $"^[1-{options.Length}]$",
                                                               errorMsg: $"Ingrese un número entre 1 y {options.Length}");

                await ExecuteItemEntryMenu(option);
            }
        }
        private static async Task ViewUsers()
        {
            var response = await ServerHandler.HandleViewUsers(_client);

            if (response.Count == 0)
            {
                Console.WriteLine("No hay usuarios en el sistema");
            }
            else
            {
                foreach (var user in response)
                {
                    Console.WriteLine(user.ToString());
                }
            }

            ConsoleValidations.ContinueHandler();
        }
        private static async Task ViewComments()
        {
            Console.WriteLine("\nIngrese ID de foto");
            var photoId = ClientUtils.ReadUntilIsNotEmpty(Console.ReadLine());

            var photo = new Photo()
            {
                Id = long.Parse(photoId)
            };

            var response = await ServerHandler.HandleViewComments(_client, photo);

            foreach (var comment in response)
            {
                Console.WriteLine(comment.ToString());
            }

            ConsoleValidations.ContinueHandler();
        }
示例#11
0
        public static async Task ModifyUser(Server server)
        {
            var clients = (await server.Service.GetUsersAsync()).ToList().Select(c => new User()
            {
                Name  = c.Name,
                Email = c.Email,
                //LastConnection = c.LastConnection
            });

            if (!clients.Any())
            {
                Console.WriteLine("\nNo hay usuarios en el sistema");
                return;
            }
            string[] options = clients.Select(g => g.ToString()).ToArray();

            ConsoleValidations.ListOperations("\nClientes disponibles:", options, false);;
            string option = ConsoleValidations.ReadUntilValid(prompt: "\nIngrese número de cliente",
                                                              pattern: $"^[1-9]|10$",
                                                              errorMsg: $"Ingrese un número entre 1 y {options.Length}");


            var userToUpdate = clients.ElementAt(int.Parse(option) - 1);

            Console.WriteLine("\nIngrese el nuevo nombre del cliente (<<q>> para cancelar) >>");
            string name = ServerUtils.ReadUntilIsNotEmpty(Console.ReadLine());

            Console.WriteLine("\nIngrese el nuevo contraseia del cliente (<<q>> para cancelar) >>");
            string password = ServerUtils.ReadUntilIsNotEmpty(Console.ReadLine());

            userToUpdate.Name     = name;
            userToUpdate.Password = password;

            var dto = new UserDto()
            {
                Name     = userToUpdate.Name,
                Password = userToUpdate.Password,
                Email    = userToUpdate.Email
            };

            await server.Service.ModifyUserAsync(dto);
        }
        private static async Task Menu(FileServer.Server server)
        {
            while (true)
            {
                string[] options = new string[] {
                    "LISTAR CLIENTES CONECTADOS",
                    "ADMINISTRAR CLIENTES",
                    "APAGAR SERVIDOR"
                };
                ConsoleValidations.ListOperations($"{"ADMINISTRACIÓN DEL SERVIDOR"}\n\nMENÚ PRINCIPAL:", options, true);

                var option = ConsoleValidations.ReadUntilValid(prompt: "\nIngrese opción",
                                                               pattern: $"^[1-{options.Length}]$",
                                                               errorMsg: $"Ingrese un número entre 1 y {options.Length}");

                await ExecuteItemMenu(option, server);

                ConsoleValidations.ContinueHandler();
            }
        }
        private static async Task CrudClient(FileServer.Server server)
        {
            var menu_options = new [] {
                "Crear un cliente",
                "Borrar un cliente",
                "Modificar un cliente existente",
                "Volver"
            };

            ConsoleValidations.ListOperations("\nMENU CLIENTE:", menu_options, false);

            string option = ConsoleValidations.ReadUntilValid(prompt: "\nIngrese opción",
                                                              pattern: $"^[1-{menu_options.Length}]$",
                                                              errorMsg: $"Ingrese un número entre 1 y {menu_options.Length}");

            switch (option)
            {
            case "1":
                await AdminHandler.CreateUser(server);

                break;

            case "2":
                await AdminHandler.DeleteUser(server);

                break;

            case "3":
                await AdminHandler.ModifyUser(server);

                break;

            case "4":
                await Menu(server);

                break;

            default:
                throw new Exception($"Option: {option} is not a valid option.");
            }
        }
        private static async Task UploadPhotoAsync()
        {
            Console.Clear();
            Console.WriteLine("InstaPhoto" + "\nSubir Foto");

            Console.WriteLine("\nIngrese ruta de la foto");
            var filePath = ClientUtils.ReadUntilIsNotEmpty(Console.ReadLine());

            var response = await ServerHandler.HandleImageUpload(_client, filePath);

            if (response.responseCommands == ProtocolConstants.ResponseCommands.Ok)
            {
                Console.WriteLine("\nImagen Agregada Correctamente");
            }
            else
            {
                Console.WriteLine("\nDatos invalidos, revise y pruebe de nuevo");
            }

            ConsoleValidations.ContinueHandler();
        }