Пример #1
0
 public static IEnumerable<AtToken> Tokenize(string s)
 {
     var builder = new StringBuilder();
     for (var i = 0; i < s.Length; i++)
     {
         var c = s[i];
         switch (c)
         {
             case '@':
                 if (i < s.Length - 1 && s[i + 1] == '@')
                 {
                     builder.Append(c);
                     i++;
                 }
                 else
                 {
                     if (builder.Length > 0)
                     {
                         var literal = builder.ToString();
                         var literalToken = new AtToken { Type = AtTokenType.Literal, Literal = literal };
                         yield return literalToken;
                         builder.Length = 0;
                     }
                     i++;
                     for (var j = i; j < s.Length; j++)
                     {
                         var innerC = s[j];
                         if (char.IsLetterOrDigit(innerC))
                         {
                             i++;
                             builder.Append(innerC);
                         }
                         else
                         {
                             break;
                         }
                     }
                     var identifier = builder.ToString();
                     var variableToken = new AtToken { Type = AtTokenType.Variable, Identifier = identifier };
                     yield return variableToken;
                     builder.Length = 0;
                     i--;
                 }
                 break;
             default:
                 builder.Append(c);
                 break;
         }
     }
     if (builder.Length > 0)
     {
         var literal = builder.ToString();
         var literalToken = new AtToken { Type = AtTokenType.Literal, Literal = literal };
         yield return literalToken;
     }
 }
Пример #2
0
        public IActionResult Logout()
        {
            AtToken RemovedToken = db.AtToken.FirstOrDefault(c => c.Token == GetCookie("Token"));

            db.AtToken.Remove(RemovedToken);
            db.SaveChanges();
            foreach (var cookie in Request.Cookies.Keys)
            {
                Response.Cookies.Delete(cookie);
            }
            return(RedirectToAction("Login", "Home"));
        }
Пример #3
0
        public IActionResult Login(Accounts newData)
        {
            Accounts myAccount = db.Accounts.FirstOrDefault(c => c.Email == newData.Email && c.AtPassword == newData.AtPassword);

            if (myAccount != null)
            {
                StringBuilder token  = new StringBuilder();
                Random        random = new Random();
                char          ch;
                for (int i = 0; i < 50; i++)
                {
                    ch = Convert.ToChar(Convert.ToInt32(Math.Floor(26 * random.NextDouble() + 65)));
                    token.Append(ch);
                }

                string timestamp = DateTime.Now.ToString().Replace(" ", "").Replace(":", "").Replace("/", "");

                AtToken myToken = new AtToken
                {
                    Token    = token + timestamp,
                    AtId     = myAccount.AtId,
                    TnStatus = myAccount.RoleType
                };

                AtToken previousToken = db.AtToken.FirstOrDefault(c => c.AtId == myAccount.AtId);
                if (previousToken != null)
                {
                    db.AtToken.Remove(previousToken);
                    db.SaveChanges();
                }

                db.AtToken.Add(myToken);
                db.SaveChanges();

                foreach (var cookie in Request.Cookies.Keys)
                {
                    Response.Cookies.Delete(cookie);
                }

                SetCookie("Token", myToken.Token, 30);
                SetCookie("Username", myAccount.AtName, 30);
                SetCookie("Role", myToken.TnStatus.ToString(), 30);
                SetCookie("Email", myAccount.Email, 30);

                return(RedirectToAction("Authentication"));
            }
            return(RedirectToAction("Login"));
        }
Пример #4
0
        public IActionResult CreateEvent()
        {
            string RoleType = GetCookie("Role");

            switch (RoleType)
            {
            case "1":
                return(RedirectToAction("Index", "Admin"));

            case "3":
                return(RedirectToAction("Index", "Guest"));

            case null:
                return(RedirectToAction("Login", "Home"));
            }
            ViewBag.Username = GetCookie("Username");
            AtToken myToken = db.AtToken.FirstOrDefault(c => c.Token == GetCookie("Token"));

            ViewBag.MyId = myToken.AtId;
            return(View());
        }
Пример #5
0
        public static IEnumerable <AtToken> Tokenize(string s)
        {
            var builder = new StringBuilder();

            for (var i = 0; i < s.Length; i++)
            {
                var c = s[i];
                switch (c)
                {
                case '@':
                    if (i < s.Length - 1 && s[i + 1] == '@')
                    {
                        builder.Append(c);
                        i++;
                    }
                    else
                    {
                        if (builder.Length > 0)
                        {
                            var literal      = builder.ToString();
                            var literalToken = new AtToken {
                                Type = AtTokenType.Literal, Literal = literal
                            };
                            yield return(literalToken);

                            builder.Length = 0;
                        }
                        i++;
                        for (var j = i; j < s.Length; j++)
                        {
                            var innerC = s[j];
                            if (char.IsLetterOrDigit(innerC))
                            {
                                i++;
                                builder.Append(innerC);
                            }
                            else
                            {
                                break;
                            }
                        }
                        var identifier    = builder.ToString();
                        var variableToken = new AtToken {
                            Type = AtTokenType.Variable, Identifier = identifier
                        };
                        yield return(variableToken);

                        builder.Length = 0;
                        i--;
                    }
                    break;

                default:
                    builder.Append(c);
                    break;
                }
            }
            if (builder.Length > 0)
            {
                var literal      = builder.ToString();
                var literalToken = new AtToken {
                    Type = AtTokenType.Literal, Literal = literal
                };
                yield return(literalToken);
            }
        }
Пример #6
0
        public IActionResult EventList(int Initial, string Query)
        {
            string RoleType = GetCookie("Role");

            switch (RoleType)
            {
            case "1":
                return(RedirectToAction("Index", "Admin"));

            case "2":
                return(RedirectToAction("Index", "User"));

            case null:
                return(RedirectToAction("Login", "Home"));
            }

            ViewBag.Username = GetCookie("Username");

            AtToken       myToken = db.AtToken.FirstOrDefault(c => c.Token == GetCookie("Token"));
            var           q1      = db.Invite.Where(c => c.AtId == myToken.AtId).Select(s => s.EtId);
            var           q2      = db.Attend.Where(c => c.AtId == myToken.AtId).Select(s => s.EtId);
            var           q3      = q1.Concat(q2).Distinct().ToList();
            List <Events> events  = new List <Events>();

            foreach (var i in q3)
            {
                Events myEvent = db.Events.FirstOrDefault(c => c.EtId == i);
                events.Add(myEvent);
            }

            if (Initial < 0)
            {
                Initial    = 0;
                ViewBag.L2 = Initial + 10;
            }

            if (Query != null)
            {
                events        = events.Where(c => c.EtName.Contains(Query, StringComparison.OrdinalIgnoreCase)).ToList();
                ViewBag.Query = Query;
            }

            int total = events.Count();

            ViewBag.Limit = total;
            int pages     = total / 10;
            int remainder = total - pages * 10;
            var builder   = events.Take(10 + Initial);
            var display   = builder.TakeLast(10);

            ViewBag.L2 = Initial + 10;

            if (Initial == pages * 10)
            {
                display    = builder.TakeLast(remainder);
                ViewBag.L2 = Initial + remainder;
            }

            ViewBag.Initial = Initial;

            if (total == 0)
            {
                ViewBag.L1 = 0;
            }
            else
            {
                ViewBag.L1 = Initial + 1;
            }
            ViewBag.L3 = total;

            string link = Request.Scheme + "://" + Request.Host + Url.Action("Event", "Home") + "?Code=";

            ViewBag.Link = link;
            return(View(display));
        }
Пример #7
0
        public IActionResult Event(string Code)
        {
            string RoleType = GetCookie("Role");

            if (RoleType == null)
            {
                return(RedirectToAction("Login"));
            }
            if (RoleType == "1")
            {
                return(RedirectToAction("Index", "Admin"));
            }
            if (Code == null)
            {
                switch (RoleType)
                {
                case "2":
                    return(RedirectToAction("Index", "User"));

                case "3":
                    return(RedirectToAction("Index", "Guest"));
                }
            }

            AtToken myToken = db.AtToken.FirstOrDefault(c => c.Token == GetCookie("Token"));
            bool    ch      = char.IsNumber(Code[0]);

            if (ch == true)
            {
                Events myEvent = db.Events.FirstOrDefault(c => c.QrInvite == Code);
                if (myEvent == null)
                {
                    return(Content("Debug: The Invite QR that you've requested is not valid."));
                }

                Invite CheckIE = db.Invite.FirstOrDefault(c => c.EtId == myEvent.EtId && c.AtId == myToken.AtId);
                if (CheckIE != null)
                {
                    switch (RoleType)
                    {
                    case "2":
                        return(RedirectToAction("Index", "User"));

                    case "3":
                        return(RedirectToAction("Index", "Guest"));
                    }
                }

                Invite myInvite = new Invite();
                myInvite.AtId = myToken.AtId;
                myInvite.EtId = myEvent.EtId;
                db.Invite.Add(myInvite);
                db.SaveChanges();

                switch (RoleType)
                {
                case "2":
                    return(RedirectToAction("Index", "User"));

                case "3":
                    return(RedirectToAction("Index", "Guest"));
                }
            }

            Events thisEvent = db.Events.FirstOrDefault(c => c.QrAttend == Code);

            if (thisEvent == null)
            {
                return(Content("Debug: The Attend QR that you've requested is not valid."));
            }

            Attend CheckAD = db.Attend.FirstOrDefault(c => c.AtId == myToken.AtId && c.EtId == thisEvent.EtId);

            if (CheckAD != null)
            {
                switch (RoleType)
                {
                case "2":
                    return(RedirectToAction("Index", "User"));

                case "3":
                    return(RedirectToAction("Index", "Guest"));
                }
            }

            Attend myAttend = new Attend();

            myAttend.AtId     = myToken.AtId;
            myAttend.EtId     = thisEvent.EtId;
            myAttend.AdRecord = DateTime.Now;
            db.Attend.Add(myAttend);
            db.SaveChanges();

            switch (RoleType)
            {
            case "2":
                return(RedirectToAction("Index", "User"));

            case "3":
                return(RedirectToAction("Index", "Guest"));
            }
            return(View());
        }