public ActionResult CreateGate(UserProfile objUser)
        {
            TempData["errorMsg"]  = string.Empty;
            TempData["statusMsg"] = string.Empty;

            if (ModelState.IsValid &&
                Session["UserID"] != null &&
                Session["UserType"].ToString().Equals("1"))
            {
                using (ParkingEntities db = new ParkingEntities())
                {
                    var obj = db.UserProfiles
                              .Where(a => a.UserName.Equals(objUser.UserName))
                              .FirstOrDefault();

                    if (obj == null)
                    {
                        objUser.IsActive  = true;
                        objUser.CreatedBy = Session["UserName"].ToString();
                        db.UserProfiles.Add(objUser);
                        db.SaveChanges();
                        TempData["statusMsg"] = "Account is created successfully.";
                        return(RedirectToAction("AdminUserDashBoard"));
                    }
                    else
                    {
                        TempData["errorMsg"] = "GateID is already exists, Please create with seperate name";
                        return(RedirectToAction("AdminUserDashBoard"));
                    }
                }
            }
            // When user is not logged-in.
            Session.Clear();
            return(RedirectToAction("Signin"));
        }
        public ActionResult EntryGate(ParkingLog parkingLog)
        {
            TempData["statusMsg"] = string.Empty;

            if (ModelState.IsValid &&
                Session["UserID"] != null &&
                Session["UserType"].ToString().Equals("2"))
            {
                if (!string.IsNullOrEmpty(parkingLog.PlateNumber))
                {
                    using (ParkingEntities db = new ParkingEntities())
                    {
                        parkingLog.Status          = "OnGoing";
                        parkingLog.InGateSessionID = Session.SessionID;
                        parkingLog.InTimeStamp     = DateTime.Now;
                        parkingLog.INAgentMACID    = Session["UserName"].ToString();
                        db.ParkingLogs.Add(parkingLog);
                        db.SaveChanges();
                        TempData["statusMsg"] = "Successfully Submitted Your IN Entry.";
                    }
                }
                ModelState.Clear();
                return(View());
            }

            // When user is not logged-in
            Session.Clear();
            return(RedirectToAction("Signin", "Login"));
        }
        public ActionResult Signin(UserProfile objUser)
        {
            TempData["errorMsg"] = string.Empty;

            // Validate UserName & Password
            if (ModelState.IsValid &&
                !string.IsNullOrEmpty(objUser.UserName) &&
                !string.IsNullOrEmpty(objUser.Password))
            {
                using (ParkingEntities db = new ParkingEntities())
                {
                    var obj = db.UserProfiles
                              .Where(a => a.UserName.Equals(objUser.UserName) &&
                                     a.Password.Equals(objUser.Password))
                              .FirstOrDefault();

                    if (obj != null)
                    {
                        Session["UserID"]   = obj.UserId.ToString();
                        Session["UserName"] = obj.UserName.ToString();
                        Session["UserType"] = obj.UserType.ToString();
                        if (obj.UserType == 1)
                        {
                            TempData["statusMsg"] = string.Empty;
                            return(RedirectToAction("AdminUserDashBoard"));
                        }
                        else if (obj.UserType == 2)
                        {
                            return(RedirectToAction("EntryGate", "Parking"));
                        }
                        else if (obj.UserType == 3)
                        {
                            return(RedirectToAction("OutGate", "Parking"));
                        }
                    }
                    else
                    {
                        TempData["errorMsg"] = "UserName / Password is incorrect";
                    }
                }
            }

            // When user is not logged-in OR Authorization fails.
            Session.Clear();
            return(View(objUser));
        }
        public ActionResult OutGate(ParkingLog parkingLog)
        {
            TempData["statusMsg"] = string.Empty;
            TempData["errorMsg"]  = string.Empty;

            if (ModelState.IsValid &&
                Session["UserID"] != null &&
                Session["UserType"].ToString().Equals("3"))
            {
                if (!string.IsNullOrEmpty(parkingLog.PlateNumber))
                {
                    using (ParkingEntities db = new ParkingEntities())
                    {
                        var obj = db.ParkingLogs
                                  .Where(car
                                         => car.PlateNumber.Equals(parkingLog.PlateNumber) &&
                                         car.Status.Equals("OnGoing"))
                                  .OrderByDescending(car => car.InTimeStamp)
                                  .FirstOrDefault();

                        if (obj != null)
                        {
                            obj.Status           = "Completed";
                            obj.OutGateSessionID = Session.SessionID;
                            obj.OutTimeStamp     = DateTime.Now;
                            obj.OUTAgentMACID    = Session["UserName"].ToString();
                            db.SaveChanges();
                            TempData["statusMsg"] = "Sucessfully submited your OUT Entry.";
                        }
                        else
                        {
                            TempData["errorMsg"] = "Sorry We don't have your records in our server.";
                        }
                    }
                }
                ModelState.Clear();
                return(View());
            }

            //When user is not logged-in
            Session.Clear();
            return(RedirectToAction("Signin", "Login"));
        }