public async Task <IActionResult> Create([Bind("Id,Capacity,roomTypes,IsAvailable,PriceAdult,PriceKid,roomNumber")] Room room)
        {
            if (ModelState.IsValid)
            {
                try
                {
                    SecurityChecker.CheckRoom(room);
                }
                catch (Exception)
                {
                    return(View(room));
                }
                try
                {
                    AvailabilityChecker.CheckRoomAvailabikity(room, _context);
                }
                catch (RoomNumberExistsException)
                {
                    ViewData["message"] = "Room number already exists";
                    room.roomNumber     = 0;
                    return(View(room));
                }
                catch (Exception)
                {
                    return(View(room));
                }
                _context.Add(room);
                await _context.SaveChangesAsync();

                return(RedirectToAction(nameof(Index)));
            }
            return(View(room));
        }
Пример #2
0
        public void loadXmlFromPayload()
        {
            // Creates a XmlDocument from the
            XmlDocument xmlDocument = new XmlDocument();

            xmlDocument.LoadXml(LevelXmlPayload.Instance.levelXml);
            var levelFile    = xmlDocument.SelectSingleNode("LevelFile");
            var hashMatching = SecurityChecker.validateXmlLevel(levelFile);

            if (!hashMatching)
            {
                Debug.LogError("Level hashes are not matching!");
            }
            if (!(hashMatching || overrideHashCheck))
            {
                return;
            }

            var versionString = ParseHelper.getAttributeValueByName(levelFile, "version");

            if (!int.TryParse(versionString, out var version))
            {
                throw new Exception("Could not parse a valid Versionnumber from: " + versionString);
            }

            var levelXml = levelFile.SelectSingleNode("Level");

            CurrentLevel    = ParserFactory.getLevelParserByVersion(version).parseLevelFromXmlString(levelXml);
            CurrentTutorial = ParserFactory.getTutorialParserByVersion(version).parseTutorialFromXmlString(levelXml);
            CurrentLevel.initializeLevel();
            CurrentTutorial.initializeTutorial();
        }
Пример #3
0
        public async Task <IActionResult> Create([Bind("Id,Username,Password,FirstName,SecondName,LastName,Egn,PhoneNumber,Email,IsActive,HireDate,LeaveDate")] User user)
        {
            if (ModelState.IsValid)
            {
                user.IsActive = true;
                user.HireDate = DateTime.Now;
                try
                {
                    SecurityChecker.CheckUser(user);
                }
                catch (InvalidEgnException)
                {
                    ViewData["message"] = "Egn is invalid";
                    user.Egn            = null;
                    return(View(user));
                }
                catch (Exception)
                {
                    return(View(user));
                }
                try
                {
                    AvailabilityChecker.CheckUserAvailabikity(user, _context);
                }
                catch (UsernameAlreadyExistsException)
                {
                    ViewData["message"] = "Username is taken";
                    user.Username       = null;
                    return(View(user));
                }
                catch (EmailAlreadyExistsException)
                {
                    ViewData["message"] = "Email is already registered";
                    user.Email          = null;
                    return(View(user));
                }
                catch (EgnAlreadyExistsException)
                {
                    ViewData["message"] = "EGN is already registered";
                    user.Egn            = null;
                    return(View(user));
                }
                catch (PhoneAlreadyExistsException)
                {
                    ViewData["message"] = "Phone is already registered";
                    user.PhoneNumber    = null;
                    return(View(user));
                }
                catch (Exception)
                {
                    return(View(user));
                }
                user.Password = Hasher.GetHash(user.Password);
                _context.Add(user);
                await _context.SaveChangesAsync();

                return(RedirectToAction(nameof(Index)));
            }
            return(View(user));
        }
Пример #4
0
        public TControlViewModel GetContent <TControlViewModel, TControl>(bool changeTitle, params Arg[] args)
            where TControlViewModel : IControlViewModel, IClaim
            where TControl : IControl
        {
            TControlViewModel ret;

            Dictionary <string, object> parameterDictionary = args.ToDictionary(x => x.Name, x => x.Value);

            Arguments castleArgs = new Arguments(parameterDictionary);

            bool isAllowed = SecurityChecker.AmIAllowed <TControlViewModel>();

            ret = Container.Resolve <TControlViewModel>(parameterDictionary);

            if (!isAllowed)
            {
                throw SecurityException.CreateCoreException <TControlViewModel>(ret);
            }

            ret.WindowViewModel.Value = this;

            ret.ControlLoadedCommand.Execute(ret);

            if (changeTitle)
            {
                Title.Value = string.Format("{0} {1}", MVVMConfiguration.Configuration.DefaultTitle, ((IBaseViewModel)ret).Title != null ? string.Format("- {0}", ((IBaseViewModel)ret).Title) : "");
            }

            return(ret);
        }
 public async Task <IActionResult> Create([Bind("Id,StartDate,EndDate,IsBreakfastIncluded,IsAllInclusive,Price")] Reservation reservation)
 {
     //reservation.Price = 1;
     // if (ModelState.IsValid)
     //  {
     try
     {
         SecurityChecker.CheckDate(reservation.StartDate, reservation.EndDate);
     }
     catch (Exception)
     {
         return(View(reservation));
     }
     // HttpContext.Items.Add("startdate", reservation.StartDate.ToString());
     TempData["startdate"] = reservation.StartDate;
     //reservation.Reserver = CurrentUser.GetCurrent(_context);
     // HttpContext.Items.Add("enddate", reservation.EndDate.ToString());
     TempData["enddate"] = reservation.EndDate;
     // HttpContext.Items.Add("IsAllInclusive", reservation.IsAllInclusive.ToString());
     TempData["allink"] = reservation.IsAllInclusive;
     // CurrentReservation.SetResFirst(reservation);
     // HttpContext.Items.Add("breakfast", reservation.IsBreakfastIncluded.ToString());
     TempData["breakfast"] = reservation.IsBreakfastIncluded;
     //_context.Add(reservation);
     // await _context.SaveChangesAsync();
     return(RedirectToAction(nameof(ShowRooms)));
     //   }
     // return View(reservation);
 }
Пример #6
0
        public TControlViewModel GetContent <TControlViewModel, TControl>(bool changeTitle)
            where TControlViewModel : IControlViewModel, IClaim
            where TControl : IControl
        {
            TControlViewModel ret;

            bool isAllowed = SecurityChecker.AmIAllowed <TControlViewModel>();

            ret = Container.Resolve <TControlViewModel>();

            if (!isAllowed)
            {
                throw SecurityException.CreateCoreException <TControlViewModel>(ret);
            }

            ret.WindowViewModel.Value = this;

            ret.ControlLoadedCommand.Execute(ret);

            if (changeTitle)
            {
                Title.Value = string.Format("{0} {1}", MVVMConfiguration.Configuration.DefaultTitle, ((IBaseViewModel)ret).Title != null ? string.Format("- {0}", ((IBaseViewModel)ret).Title) : "");
            }

            return(ret);
        }
Пример #7
0
        public TControlViewModel LoadContent <TControlViewModel, TControl>()
            where TControlViewModel : IControlViewModel, IClaim
            where TControl : IControl
        {
            bool isAllowed = SecurityChecker.AmIAllowed <TControlViewModel>();
            //TControlViewModel controlViewModel = Container.Resolve<TControlViewModel>();

            TControlViewModel controlViewModel = GetContent <TControlViewModel, TControl>(true);

            if (isAllowed)
            {
                Title.Value = string.Format("{0} {1}", MVVMConfiguration.Configuration.DefaultTitle, ((IClaim)controlViewModel).SecurityCode != null ? string.Format("- {0}", ((IClaim)controlViewModel).SecurityCode) : "");
                CurrentControlViewModel.Value = controlViewModel;

                CurrentControlViewModel.Value.WindowViewModel.Value = this;

                //controlViewModel.ControlLoadedCommand.Execute(controlViewModel);

                return((TControlViewModel)CurrentControlViewModel.Value);
            }
            else
            {
                throw SecurityException.CreateCoreException <TControlViewModel>(controlViewModel);
            }
        }
        public async Task <IActionResult> ConfirmClient(int id)
        {
            if (id == 0)
            {
                return(RedirectToAction(nameof(ShowClients)));
            }
            else
            {
                if (int.Parse(TempData["clientsnum"].ToString()) < int.Parse(TempData["roomcap"].ToString()))
                {
                    var clients = (from c in _context.Clients where c.Id == id select c).ToList();
                    if (clients.Count > 0)
                    {
                        string clientIds;
                        try
                        {
                            clientIds = TempData["clientids"].ToString();
                        }
                        catch (Exception)
                        {
                            clientIds = "";
                        }
                        clientIds += (clients[0].Id.ToString() + " ");
                        TempData["clientsnum"] = int.Parse(TempData["clientsnum"].ToString()) + 1;
                        //HttpContext.Items["clientIds"] = clientIds;
                        TempData["clientids"] = clientIds;
                        // CurrentReservation.Clients.Add(clients[0]);
                        return(RedirectToAction(nameof(ShowClients)));
                    }

                    //return RedirectToAction(nameof(ShowClients));
                }
                // Reservation res = CurrentReservation.GetReservation();
                Reservation res = new Reservation();
                res.StartDate      = DateTime.Parse(TempData["startdate"].ToString());
                res.EndDate        = DateTime.Parse(TempData["enddate"].ToString());
                res.IsAllInclusive = bool.Parse(TempData["allink"].ToString());
                res.IsAllInclusive = bool.Parse(TempData["breakfast"].ToString());
                // string a = TempData["clientids"].ToString();
                res.Reserver = CurrentReservation.GetReserver(int.Parse(TempData["userId"].ToString()), _context);
                res.Room     = CurrentReservation.GetRoom(int.Parse(TempData["roomid"].ToString()), _context);
                res.Clients  = CurrentReservation.GetClients(TempData["clientids"].ToString().Substring(1), _context);
                res.Price    = CurrentReservation.CalkPrice(res);
                try { SecurityChecker.CheckReservation(res); }
                catch (Exception)
                {
                    return(RedirectToAction(nameof(Create)));
                }
                _context.Add(res);
                await _context.SaveChangesAsync();

                return(RedirectToAction(nameof(Index)));
            }
        }
Пример #9
0
        public TWindow LoadWindow <TWindowViewModel, TWindow>(TWindowViewModel windowViewModel)
            where TWindowViewModel : class, IWindowViewModel, IClaim
            where TWindow : class, IWindow
        {
            bool isAllowed = SecurityChecker.AmIAllowed <TWindowViewModel>();

            if (isAllowed)
            {
                Window.Value             = (IWindow)Container.Resolve <TWindow>();
                Window.Value.DataContext = this;
                Window.Value.Show();
                LoadedCommand.Execute(null);

                return((TWindow)Window.Value);
            }
            else
            {
                throw SecurityException.CreateCoreException <TWindowViewModel>(windowViewModel);
            }
        }
        public async Task <IActionResult> Create([Bind("Id,FirstName,LastName,PhoneNumber,Email,IsMinor")] Client client)
        {
            if (ModelState.IsValid)
            {
                try
                {
                    SecurityChecker.CheckClient(client);
                }
                catch (Exception)
                {
                    return(View(client));
                }
                try
                {
                    AvailabilityChecker.CheckClientAvailabikity(client, _context);
                }
                catch (EmailAlreadyExistsException)
                {
                    ViewData["message"] = "Email is already registered";
                    client.Email        = null;
                    return(View(client));
                }
                catch (PhoneAlreadyExistsException)
                {
                    ViewData["message"] = "Phone is already registered";
                    client.PhoneNumber  = null;
                    return(View(client));
                }
                catch (Exception)
                {
                    return(View(client));
                }
                _context.Add(client);
                await _context.SaveChangesAsync();

                return(RedirectToAction(nameof(Index)));
            }
            return(View(client));
        }
Пример #11
0
        public TControlViewModel LoadContent <TControlViewModel, TControl>(params Arg[] args)
            where TControlViewModel : IControlViewModel, IClaim
            where TControl : IControl
        {
            bool isAllowed = SecurityChecker.AmIAllowed <TControlViewModel>();

            TControlViewModel controlViewModel = GetContent <TControlViewModel, TControl>(true, args);

            if (isAllowed)
            {
                CurrentControlViewModel.Value = controlViewModel;

                CurrentControlViewModel.Value.WindowViewModel.Value = this;

                //controlViewModel.ControlLoadedCommand.Execute(controlViewModel);

                return((TControlViewModel)CurrentControlViewModel.Value);
            }
            else
            {
                throw SecurityException.CreateCoreException <TControlViewModel>(controlViewModel);
            }
        }
Пример #12
0
        static void Main(string[] args)
        {
            var buttonGfloor  = new Button(Floors.G);
            var buttonSfloor  = new Button(Floors.S);
            var buttonT1floor = new Button(Floors.T1);
            var buttonT2floor = new Button(Floors.T2);

            var buttonArray = new Button[]
            {
                buttonGfloor,
                buttonSfloor,
                buttonT1floor,
                buttonT2floor
            };

            var elevatorDoor  = new SecurityChecker();
            var baseElevator  = new Elevator(Floors.G, Floors.G, buttonArray, elevatorDoor);
            var agentMulder   = new Agent("Agent Mulder", ClearenceTypes.TopSecret, Floors.T1, 1000, baseElevator);
            var agentShelby   = new Agent("Agent Shelby", ClearenceTypes.TopSecret, Floors.T2, 500, baseElevator);
            var agentJohnson  = new Agent("Agent Johnson", ClearenceTypes.Secret, Floors.G, 500, baseElevator);
            var agentJohny    = new Agent("Agent Johny", ClearenceTypes.Confidential, Floors.G, 500, baseElevator);
            var agentAmanda   = new Agent("Agent Amanda", ClearenceTypes.Secret, Floors.S, 854, baseElevator);
            var agentGretchen = new Agent("Agent Gretchen ", ClearenceTypes.Confidential, Floors.G, 500, baseElevator);



            var elevatorThread      = new Thread(baseElevator.MoveElevator);
            var agentMulderThread   = new Thread(agentMulder.MoveAround);
            var agentShelbyThread   = new Thread(agentShelby.MoveAround);
            var agentJohnsonThread  = new Thread(agentJohnson.MoveAround);
            var agentJohnyThread    = new Thread(agentJohny.MoveAround);
            var agentAmandaThread   = new Thread(agentAmanda.MoveAround);
            var agentGretchenThread = new Thread(agentGretchen.MoveAround);



            elevatorThread.Start();
            agentMulderThread.Start();
            agentShelbyThread.Start();
            agentJohnsonThread.Start();
            agentJohnyThread.Start();
            agentAmandaThread.Start();
            agentGretchenThread.Start();


            var agentList = new List <Agent>();

            agentList.Add(agentMulder);
            agentList.Add(agentShelby);
            agentList.Add(agentJohnson);
            agentList.Add(agentJohny);
            agentList.Add(agentAmanda);
            agentList.Add(agentGretchen);


            for (int i = 0; i < 10; i++)
            {
                Console.WriteLine("Activity Log {0}:", i + 1);
                Console.WriteLine("Elevator is at floor {0}, target floor is {1}", baseElevator.CurrentFloor, baseElevator.DestinationFloor);
                foreach (var agent in agentList)
                {
                    Console.WriteLine("{0} is on floor {1}, doing : {2}",
                                      agent.Name, agent.CurrentFloor.ToString(), agent.CurrentActivity);
                }

                Console.WriteLine();

                Thread.Sleep(1000);
            }

            agentMulderThread.Abort();
            agentShelbyThread.Abort();
            agentJohnsonThread.Abort();
            agentJohnyThread.Abort();
            agentAmandaThread.Abort();
            agentGretchenThread.Abort();

            elevatorThread.Abort();

            Console.WriteLine("This is the end..");
            Console.ReadLine();
        }