protected override string Handle(ICommand command, IDealershipEngine engine)
        {
            var type            = command.Parameters[0];
            var make            = command.Parameters[1];
            var model           = command.Parameters[2];
            var price           = decimal.Parse(command.Parameters[3]);
            var additionalParam = command.Parameters[4];

            var      typeEnum = (VehicleType)Enum.Parse(typeof(VehicleType), type, true);
            IVehicle vehicle  = null;

            switch (typeEnum)
            {
            case VehicleType.Car:
                vehicle = engine.Factory.GetCar(make, model, price, int.Parse(additionalParam));
                break;

            case VehicleType.Motorcycle:
                vehicle = engine.Factory.GetMotorcycle(make, model, price, additionalParam);
                break;

            case VehicleType.Truck:
                vehicle = engine.Factory.GetTruck(make, model, price, int.Parse(additionalParam));
                break;

            default:
                throw new ArgumentOutOfRangeException(nameof(type), type, null);
            }

            engine.LoggedUser.AddVehicle(vehicle);

            return(string.Format(VehicleAddedSuccessfully, engine.LoggedUser.Username));
        }
Exemplo n.º 2
0
        protected override string Handle(ICommand command, IDealershipEngine engine)
        {
            var username  = command.Parameters[0];
            var firstName = command.Parameters[1];
            var lastName  = command.Parameters[2];
            var password  = command.Parameters[3];
            var role      = Role.Normal;

            if (command.Parameters.Count > 4)
            {
                role = (Role)Enum.Parse(typeof(Role), command.Parameters[4]);
            }

            if (engine.LoggedUser != null)
            {
                return(string.Format(UserLoggedInAlready, engine.LoggedUser.Username));
            }

            if (engine.Users.Any(u => u.Username.ToLower() == username.ToLower()))
            {
                return(string.Format(UserAlreadyExist, username));
            }

            var user = engine.Factory.CreateUser(username, firstName, lastName, password, role.ToString());

            engine.LoggedUser = user;
            engine.Users.Add(user);

            return(string.Format(UserRegisterеd, username));
        }
Exemplo n.º 3
0
        protected override string Handle(ICommand command, IDealershipEngine engine)
        {
            var username = command.Parameters[0];
            var password = command.Parameters[1];

            if (engine.LoggedUser != null)
            {
                return(string.Format(UserLoggedInAlready, engine.LoggedUser.Username));
            }

            var userFound =
                engine.Users.FirstOrDefault(
                    u =>
                    string.Equals(u.Username, username,
                                  StringComparison.CurrentCultureIgnoreCase));

            if (userFound == null || userFound.Password != password)
            {
                return(WrongUsernameOrPassword);
            }

            engine.LoginUser(userFound);

            return(string.Format(UserLoggedIn, username));
        }
Exemplo n.º 4
0
        protected override string ProcessCommand(ICommand command, IDealershipEngine engine)
        {
            var type            = command.Parameters[0];
            var make            = command.Parameters[1];
            var model           = command.Parameters[2];
            var price           = decimal.Parse(command.Parameters[3]);
            var additionalParam = command.Parameters[4];

            var      typeEnum = (VehicleType)Enum.Parse(typeof(VehicleType), type, true);
            IVehicle vehicle  = null;

            if (typeEnum == VehicleType.Car)
            {
                vehicle = engine.Factory.CreateCar(make, model, price, int.Parse(additionalParam));
            }
            else if (typeEnum == VehicleType.Motorcycle)
            {
                vehicle = engine.Factory.CreateMotorcycle(make, model, price, additionalParam);
            }
            else if (typeEnum == VehicleType.Truck)
            {
                vehicle = engine.Factory.CreateTruck(make, model, price, int.Parse(additionalParam));
            }

            engine.LoggedUser.AddVehicle(vehicle);
            return(string.Format(VehicleAddedSuccessfully, engine.LoggedUser.Username));
        }
Exemplo n.º 5
0
        public static void Main()
        {
            StandardKernel normalKernel = new StandardKernel(new DealershipModule());

            IDealershipEngine dealershipEngine = normalKernel.Get <IDealershipEngine>();

            dealershipEngine.Start();
        }
        protected override string ProcessCommand(ICommand command, IDealershipEngine engine)
        {
            var vehicleIndex = int.Parse(command.Parameters[0]) - 1;

            CommandHandler.ValidateRange(vehicleIndex, 0, engine.LoggedUser.Vehicles.Count, CommandHandler.RemovedVehicleDoesNotExist);

            var vehicle = engine.LoggedUser.Vehicles[vehicleIndex];

            engine.LoggedUser.RemoveVehicle(vehicle);
            return(string.Format(VehicleRemovedSuccessfully, engine.LoggedUser.Username));
        }
        protected override string ProcessCommand(ICommand command, IDealershipEngine engine)
        {
            var username = command.Parameters[0];
            var user     = engine.Users.FirstOrDefault(u => u.Username.ToLower() == username.ToLower());

            if (user == null)
            {
                return(string.Format(CommandHandler.NoSuchUser, username));
            }

            return(user.PrintVehicles());
        }
Exemplo n.º 8
0
        public string HandleCommand(ICommand command, IDealershipEngine engine)
        {
            if (this.CanHandle(command))
            {
                return(this.Handle(command, engine));
            }

            if (this.Next != null)
            {
                return(this.Next.HandleCommand(command, engine));
            }

            return(InvalidCommand);
        }
        protected override string Handle(ICommand command, IDealershipEngine engine)
        {
            if (engine.LoggedUser.Role != Role.Admin)
            {
                return(YouAreNotAnAdmin);
            }

            var builder = new StringBuilder();

            builder.AppendLine("--USERS--");
            var counter = 1;

            foreach (var user in engine.Users)
            {
                builder.AppendLine(string.Format("{0}. {1}", counter, user.ToString()));
                counter++;
            }

            return(builder.ToString().Trim());;
        }
        protected override string Handle(ICommand command, IDealershipEngine engine)
        {
            var username = command.Parameters[0];
            var password = command.Parameters[1];

            if (engine.LoggedUser != null)
            {
                return(string.Format(UserLoggedInAlready, engine.LoggedUser.Username));
            }

            var userFound = engine.Users.FirstOrDefault(u => u.Username.ToLower() == username.ToLower());

            if (userFound != null && userFound.Password == password)
            {
                engine.LoggedUser = userFound;
                return(string.Format(UserLoggedIn, username));
            }

            return(WrongUsernameOrPassword);
        }
Exemplo n.º 11
0
        protected override string ProcessCommand(ICommand command, IDealershipEngine engine)
        {
            var vehicleIndex = int.Parse(command.Parameters[0]) - 1;
            var commentIndex = int.Parse(command.Parameters[1]) - 1;
            var username     = command.Parameters[2];
            var user         = engine.Users.FirstOrDefault(u => u.Username == username);

            if (user == null)
            {
                return(string.Format(CommandHandler.NoSuchUser, username));
            }

            CommandHandler.ValidateRange(vehicleIndex, 0, user.Vehicles.Count, CommandHandler.RemovedVehicleDoesNotExist);
            CommandHandler.ValidateRange(commentIndex, 0, user.Vehicles[vehicleIndex].Comments.Count, RemovedCommentDoesNotExist);

            var vehicle = user.Vehicles[vehicleIndex];
            var comment = user.Vehicles[vehicleIndex].Comments[commentIndex];

            engine.LoggedUser.RemoveComment(comment, vehicle);
            return(string.Format(CommentRemovedSuccessfully, engine.LoggedUser.Username));
        }
Exemplo n.º 12
0
        protected override string Handle(ICommand command, IDealershipEngine engine)
        {
            var content      = command.Parameters[0];
            var author       = command.Parameters[1];
            var vehicleIndex = int.Parse(command.Parameters[2]) - 1;

            var comment = engine.Factory.CreateComment(content);

            comment.Author = engine.LoggedUser.Username;
            var user = engine.Users.FirstOrDefault(u => u.Username == author);

            if (user == null)
            {
                return(string.Format(NoSuchUser, author));
            }

            RangeValidator.ValidateRange(vehicleIndex, 0, user.Vehicles.Count, VehicleDoesNotExist);

            var vehicle = user.Vehicles[vehicleIndex];

            engine.LoggedUser.AddComment(comment, vehicle);

            return(string.Format(CommentAddedSuccessfully, engine.LoggedUser.Username));
        }
Exemplo n.º 13
0
        public string HandleCommand(ICommand command, IDealershipEngine engine)
        {
            if (command.Name != "RegisterUser" && command.Name != "Login")
            {
                if (engine.LoggedUser == null)
                {
                    return(UserNotLogged);
                }
            }

            if (this.CanHandleCommand(command))
            {
                return(this.ProcessCommand(command, engine));
            }
            else if (this.Successor != null)
            {
                return(this.Successor.HandleCommand(command, engine));
            }
            else
            {
                string errorMessage = string.Format(InvalidCommand, command.Name);
                return(errorMessage);
            }
        }
Exemplo n.º 14
0
 protected abstract string Handle(ICommand command, IDealershipEngine engine);
Exemplo n.º 15
0
 protected override string Handle(ICommand command, IDealershipEngine engine)
 {
     engine.LoginUser(null);
     return(UserLoggedOut);
 }
 protected override string ProcessCommand(ICommand command, IDealershipEngine engine)
 {
     engine.LoggedUser = null;
     return(UserLoggedOut);
 }
Exemplo n.º 17
0
 protected abstract string ProcessCommand(ICommand command, IDealershipEngine engine);