protected override CommandResult Execute(ConsoleContext context, RoleArgument arguments)
        {
            Task <ConnectorResult <Response <IEnumerable <Role> > > > role = WinApiConnector.RequestGet <Response <IEnumerable <Role> > >($"{context.ConsoleSettings.ServerAddress}:{context.ConsoleSettings.Port}/Api/Configuration/GetRole/" +
                                                                                                                                          $"{arguments.Name.ToLower()}");
            ConnectorResult <Response <IEnumerable <Role> > > preResult = role.Result;

            if (!preResult.IsSuccess)
            {
                return(new CommandResult(preResult.Message, false));
            }
            if (!preResult.Response.IsSuccess)
            {
                return(new CommandResult(preResult.Response.Code, false));
            }
            if (!preResult.Response.Payload.Any())
            {
                return(new CommandResult($"The Role {arguments.Name} doesn't exist in database"));
            }

            Task <ConnectorResult <Response <string> > > result = WinApiConnector.RequestDelete <Response <string> >($"{context.ConsoleSettings.ServerAddress}:{context.ConsoleSettings.Port}/Api/Configuration/DeleteRole" +
                                                                                                                     $"/{preResult.Response.Payload.FirstOrDefault().Identifier}");
            ConnectorResult <Response <string> > connectorResult = result.Result;

            if (!connectorResult.IsSuccess)
            {
                return(new CommandResult(connectorResult.Message, false));
            }
            if (!connectorResult.Response.IsSuccess)
            {
                return(new CommandResult(connectorResult.Response.Code, false));
            }
            if (string.IsNullOrEmpty(connectorResult.Response.Payload))
            {
                return(new CommandResult("The payload of response <DELETE USER > is null or empty ", false));
            }
            return(new CommandResult($"The Role {arguments.Name} has been deleted", true));
        }
        protected override CommandResult Execute(ConsoleContext context, UserArgumentsExtension arguments)
        {
            IList <User> users      = new List <User>();
            User         deleteUser = new User();
            Guid         identifier = Guid.Empty;

            if (string.IsNullOrEmpty(arguments.Identifier) && string.IsNullOrEmpty(arguments.Login))
            {
                Task <ConnectorResult <Response <IEnumerable <User> > > > usersRequest = WinApiConnector.RequestGet <Response <IEnumerable <User> > >($"{context.ConsoleSettings.ServerAddress}:{context.ConsoleSettings.Port}/Api/User/GetAll");
                ConnectorResult <Response <IEnumerable <User> > >         preResponse  = usersRequest.Result;

                if (!preResponse.IsSuccess)
                {
                    return(new CommandResult(preResponse.Message, false));
                }
                if (!preResponse.Response.IsSuccess)
                {
                    return(new CommandResult(preResponse.Response.Code, false));
                }
                if (!preResponse.Response.Payload.Any())
                {
                    return(new CommandResult("The payload od request is null or empty", false));
                }
                int index = 1;
                foreach (var ur in preResponse.Response.Payload)
                {
                    users.Add(ur);
                    System.Console.WriteLine($"{index++}. {ur.Login} - {ur.Identifier}");
                }

                System.Console.WriteLine($"Wybierz numer użytkownika do aktualizacji 1-{users.Count}");
                bool shouldWork = true;
                int  choisenOne = 0;
                do
                {
                    string readLine = System.Console.ReadLine();
                    bool   isParsed = int.TryParse(readLine, out choisenOne);
                    shouldWork = isParsed ? choisenOne > users.Count : true;
                }while(shouldWork);

                deleteUser.Identifier = users[choisenOne - 1].Identifier;
            }

            if (!string.IsNullOrEmpty(arguments.Identifier))
            {
                var tmp = Guid.TryParse(arguments.Identifier, out identifier);
                if (!tmp)
                {
                    return(new CommandResult("Cannot parse identifier from -i param", false));
                }

                deleteUser.Identifier = identifier;
            }
            if (!string.IsNullOrEmpty(arguments.Login) && string.IsNullOrEmpty(arguments.Identifier))
            {
                User tmpUser = new User()
                {
                    Login = arguments.Login
                };
                Task <ConnectorResult <Response <IEnumerable <User> > > > userByLogin = WinApiConnector.RequestPost <User, Response <IEnumerable <User> > >($"{context.ConsoleSettings.ServerAddress}:{context.ConsoleSettings.Port}/Api/User/GetByLogin", tmpUser);
                ConnectorResult <Response <IEnumerable <User> > >         preResponse = userByLogin.Result;

                if (!preResponse.IsSuccess)
                {
                    return(new CommandResult(preResponse.Message, false));
                }
                if (!preResponse.Response.IsSuccess)
                {
                    return(new CommandResult(preResponse.Response.Code, false));
                }
                if (!preResponse.Response.Payload.Any())
                {
                    return(new CommandResult("The Payload of request is null or empty", false));
                }
                if (preResponse.Response.Payload.Count() != 1)
                {
                    return(new CommandResult("There is too many results", true));
                }

                deleteUser.Identifier = preResponse.Response.Payload.FirstOrDefault().Identifier;
            }

            var result = WinApiConnector.RequestDelete <Response <string> >($"{context.ConsoleSettings.ServerAddress}:{context.ConsoleSettings.Port}/Api/User/Delete/" +
                                                                            $"{deleteUser.Identifier}");
            ConnectorResult <Response <string> > connectorResult = result.Result;

            if (!connectorResult.IsSuccess)
            {
                return(new CommandResult(connectorResult.Message, false));
            }
            if (!connectorResult.Response.IsSuccess)
            {
                return(new CommandResult(connectorResult.Response.Code, false));
            }
            if (string.IsNullOrEmpty(connectorResult.Response.Payload))
            {
                return(new CommandResult("The payload of response <DELETE USER > is null or empty ", false));
            }
            return(new CommandResult($"The User {deleteUser.Identifier} has been deleted", true));
        }
        protected override CommandResult Execute(ConsoleContext context, AnimalArguments arguments)
        {
            Animal         deleteAnimal = new Animal();
            IList <Animal> animals      = new List <Animal>();

            if (string.IsNullOrEmpty(arguments.Name))
            {
                Task <ConnectorResult <Response <IEnumerable <Animal> > > > existsAnimals = WinApiConnector.RequestGet <Response <IEnumerable <Animal> > >($"{context.ConsoleSettings.ServerAddress}:{context.ConsoleSettings.Port}/Api/Configuration/");
                ConnectorResult <Response <IEnumerable <Animal> > >         preResult     = existsAnimals.Result;
                if (!preResult.IsSuccess)
                {
                    return(new CommandResult(preResult.Message, false));
                }
                if (!preResult.Response.IsSuccess)
                {
                    return(new CommandResult(preResult.Response.Code, false));
                }
                if (!preResult.Response.Payload.Any())
                {
                    return(new CommandResult("The payload of request is null or empty", false));
                }
                foreach (var animal in preResult.Response.Payload)
                {
                    animals.Add(animal);
                    System.Console.WriteLine($"{animal}");
                }
                bool shouldWork = true;
                int  choisenOne = 0;

                do
                {
                    string readLine = System.Console.ReadLine();
                    bool   isParsed = int.TryParse(readLine, out choisenOne);
                    shouldWork = isParsed ? choisenOne > animals.Count() : true;
                }while(shouldWork);

                deleteAnimal.Identifier = animals[choisenOne - 1].Identifier;
            }

            if (!string.IsNullOrEmpty(arguments.Name))
            {
                Task <ConnectorResult <Response <IEnumerable <Animal> > > > existAnimal     = WinApiConnector.RequestGet <Response <IEnumerable <Animal> > >($"{context.ConsoleSettings.ServerAddress}:{context.ConsoleSettings.Port}/Api/Configuration/GetAnimal" + $"/{arguments.Name.ToLower()}");
                ConnectorResult <Response <IEnumerable <Animal> > >         connectorResult = existAnimal.Result;

                if (!connectorResult.IsSuccess)
                {
                    return(new CommandResult(connectorResult.Message, false));
                }
                if (!connectorResult.Response.IsSuccess)
                {
                    return(new CommandResult(connectorResult.Response.Code, false));
                }
                if (!connectorResult.Response.Payload.Any())
                {
                    return(new CommandResult("The paylod of request is null or empty", false));
                }
                if (connectorResult.Response.Payload.Count() != 1)
                {
                    return(new CommandResult("There is too many results", false));
                }
                deleteAnimal.Identifier = connectorResult.Response.Payload.FirstOrDefault().Identifier;
            }

            Task <ConnectorResult <Response <string> > > deleteResult = WinApiConnector.RequestDelete <Response <string> >($"{context.ConsoleSettings.ServerAddress}:{context.ConsoleSettings.Port}/Api/Configuration/DeleteAnimal" + $"/{deleteAnimal.Identifier}");
            ConnectorResult <Response <string> >         postResult   = deleteResult.Result;

            if (!postResult.IsSuccess)
            {
                return(new CommandResult(postResult.Message, false));
            }
            if (!postResult.Response.IsSuccess)
            {
                return(new CommandResult(postResult.Response.Code, false));
            }
            if (string.IsNullOrEmpty(postResult.Response.Payload))
            {
                return(new CommandResult("The payload of response is null or empty", false));
            }

            return(new CommandResult(postResult.Response.Payload, true));
        }
        protected override CommandResult Execute(ConsoleContext context, QuarryArguments arguments)
        {
            List <Quarry> quarries = new List <Quarry>();
            Quarry        quarry   = new Quarry();

            if (string.IsNullOrEmpty(arguments.Identifier))
            {
                Task <ConnectorResult <Response <IEnumerable <Quarry> > > > result    = WinApiConnector.RequestGet <Response <IEnumerable <Quarry> > >($"{context.ConsoleSettings.ServerAddress}:{context.ConsoleSettings.Port}/Api/Hunting/GetQuarries");
                ConnectorResult <Response <IEnumerable <Quarry> > >         preResult = result.Result;
                if (!preResult.IsSuccess)
                {
                    return(new CommandResult(preResult.Message, false));
                }
                if (!preResult.Response.IsSuccess)
                {
                    return(new CommandResult(preResult.Response.Code, false));
                }
                if (!preResult.Response.Payload.Any())
                {
                    return(new CommandResult("The payload of response is null or empty", false));
                }

                foreach (var item in preResult.Response.Payload)
                {
                    System.Console.WriteLine($"{item.Animal.Name} - {item.Amount}");
                    quarries.Add(item);
                }

                bool shoudWork  = true;
                int  choisenOne = 0;

                do
                {
                    System.Console.Write("WYbierz zwierzyne do usunięcia");
                    string readLine = System.Console.ReadLine();
                    bool   isParsed = int.TryParse(readLine, out choisenOne);
                    shoudWork = isParsed ? choisenOne > quarries.Count() : true;
                }while(shoudWork);

                quarry.Identifier = quarries[choisenOne - 1].Identifier;
            }
            if (!string.IsNullOrEmpty(arguments.Identifier))
            {
                Guid deleteGuid   = Guid.Empty;
                bool isParsedGuid = Guid.TryParse(arguments.Identifier, out deleteGuid);
                if (isParsedGuid)
                {
                    quarry.Identifier = deleteGuid;
                }
                return(new CommandResult("The Identifier parsing error. Please use the correct identifier or do not use the -i param"));
            }

            Task <ConnectorResult <Response <string> > > deleteResult = WinApiConnector.RequestDelete <Response <string> >($"{context.ConsoleSettings.ServerAddress}:{context.ConsoleSettings.Port}/Api/Hunting/DeleteQuarry" +
                                                                                                                           $"{quarry.Identifier}");
            ConnectorResult <Response <string> > connectorResult = deleteResult.Result;

            if (!connectorResult.IsSuccess)
            {
                return(new CommandResult(connectorResult.Message, false));
            }
            if (!connectorResult.Response.IsSuccess)
            {
                return(new CommandResult(connectorResult.Response.Code, false));
            }
            if (string.IsNullOrEmpty(connectorResult.Response.Payload))
            {
                return(new CommandResult("The payload of response is null or empty", false));
            }
            return(new CommandResult(connectorResult.Response.Payload, true));
        }