private void modifyButton_Click(object sender, EventArgs e)
        {
            string selected = usersComboBox.SelectedItem.ToString();

            using (UserDataEntities dc = new UserDataEntities())
            {
                Object selecteduserName = usersComboBox.SelectedItem;
                var    users            = from user in dc.Users where user.UserName == selecteduserName.ToString()
                                          select user;

                foreach (var user in users)
                {
                    user.MaxPageNumber      = (int)modifySubscriptionNumericBox.Value;
                    user.NotificationPerDay = (int)modifyRefreshRate.Value;
                    if (userName != user.UserName || user.IsAdmin == admin_check.Checked)
                    {
                        user.IsAdmin = admin_check.Checked;
                    }
                    else
                    {
                        MessageBox.Show("Cannot change admin permission for yourself!");
                    }
                }

                try
                {
                    dc.SaveChanges();
                }
                catch (Exception exp)
                {
                    Console.WriteLine(exp);
                }
            }
        }
Пример #2
0
        public HttpResponseMessage Put(int id, [FromBody] User user)
        {
            using (UserDataEntities userEntities = new UserDataEntities())
            {
                try
                {
                    User userEntity = userEntities.Users.FirstOrDefault(e => e.UserId == id);
                    if (userEntity == null)
                    {
                        return(Request.CreateErrorResponse(HttpStatusCode.NotFound, "The user with the id of " + id.ToString() + " was not found."));
                    }
                    else
                    {
                        userEntity.UserPassword = user.UserPassword;
                        userEntity.UserEmail    = user.UserEmail;

                        userEntities.SaveChanges();
                        return(Request.CreateResponse(HttpStatusCode.OK, userEntities));
                    }
                }
                catch (Exception ex)
                {
                    return(Request.CreateErrorResponse(HttpStatusCode.BadRequest, ex));
                }
            }
        }
Пример #3
0
        private void subscribeButton_Click(object sender, EventArgs e)
        {
            using (UserDataEntities dc = new UserDataEntities())
            {
                var users     = from user in dc.Users where user.UserName == userName select user;
                var userPages = from pages in dc.Pages where pages.UserName == userName select pages;
                var count     = userPages.Count();
                if (users.FirstOrDefault().MaxPageNumber > count)
                {
                    // newWikipediaPageTextBox, sensitivityNumericBox, refreshRateNumericBox értékét  kiovlassuk, és beszúrunk egy új sort a Pages táblába, majd meghívjuk a refreshDataGridet
                    string subscribePageName    = newWikipediaPageTextBox.Text;
                    int    subscribeSensitivity = (int)sensitivityNumericBox.Value;
                    int    subscriberefreshRate = (int)refreshRateNumericBox.Value;

                    Page newPage = new Page();
                    newPage.UserName     = this.userName;
                    newPage.WikiPage     = subscribePageName;
                    newPage.Sensitivity  = subscribeSensitivity;
                    newPage.RefreshRate  = subscriberefreshRate;
                    newPage.LastRevision = -1;

                    dc.Pages.Add(newPage);
                    dc.SaveChanges();

                    refreshDataGrid();
                }
                else
                {
                    MessageBox.Show("You can not subscribe");
                }
            }
        }
Пример #4
0
        private void unsubscribeComboBox1_SelectedIndexChanged(object sender, EventArgs e)
        {
            //int selectedIndex = this.unsubscribeComboBox1.SelectedIndex;
            Object selectedItem = unsubscribeComboBox1.SelectedItem;

            using (UserDataEntities dc = new UserDataEntities())
            {
                var groups = from page in dc.Pages
                             where page.UserName.Contains(userName)
                             group page by page.UserName into g
                             select g;
                foreach (var g in groups)
                {
                    foreach (var page in g)
                    {
                        if (page.WikiPage == selectedItem.ToString())
                        {
                            // Updationg the numeric boxes according to the selected subscribe
                            modifySensitivityNumericBox.Value = page.Sensitivity;
                            modifyRefreshRate.Value           = page.RefreshRate;
                        }
                    }
                }
            }
        }
        private void refreshDatabase(PageReadData data, bool notified = false, int revID = -1)
        {
            using (UserDataEntities dc = new UserDataEntities())
            {
                var currentPage = from page in dc.Pages
                                  where page.Id == data.PageId
                                  select page;
                try
                {
                    var page = currentPage.First();
                    if (notified)
                    {
                        // If user has been notified
                        page.LastRevision = revID;
                        page.LastNotified = DateTime.Now;
                    }
                    page.LastRefreshed = DateTime.Now;

                    dc.SaveChanges();
                }
                catch (ArgumentNullException exp)
                {
                    Console.WriteLine("Error: " + exp.Message + "\n\t Possibly wrong page id.");
                }
            }
        }
Пример #6
0
 public IEnumerable <User> Get()
 {
     using (UserDataEntities userEntities = new UserDataEntities())
     {
         return(userEntities.Users.ToList());
     }
 }
Пример #7
0
        public void refreshDataGrid()
        {
            deleteDataGrid();
            deleteUnsubscribeComboBox();

            using (UserDataEntities dc = new UserDataEntities())
            {
                var groups = from page in dc.Pages
                             where page.UserName.Contains(userName)
                             group page by page.UserName into g
                             select g;
                foreach (var g in groups)
                {
                    //Console.WriteLine(g.Key);
                    foreach (var page in g)
                    {
                        //Console.WriteLine("   {0}, {1}, {2}", page.WikiPage, page.Sensitivity, page.RefreshRate);
                        this.unsubscribeComboBox1.Items.Add(page.WikiPage);
                        this.dataGridView1.Rows.Add(page.WikiPage, page.Sensitivity, page.RefreshRate);
                    }
                }
            }
            if (unsubscribeComboBox1.Items.Count > 0)
            {
                this.unsubscribeComboBox1.SelectedIndex = 0;
            }
        }
Пример #8
0
 public User Get(int id)
 {
     using (UserDataEntities userEntities = new UserDataEntities())
     {
         var userEntity = userEntities.Users.FirstOrDefault(e => e.UserId == id);
         return(userEntity);
     }
 }
 public bool IsEmailExist(string emailID)
 {
     using (UserDataEntities dc = new UserDataEntities())
     {
         var v = dc.RegistrationDetails.Where(a => a.EmailID == emailID).FirstOrDefault();
         return(v != null);
     }
 }
Пример #10
0
 public void Post([FromBody] User user)
 {
     using (var entities = new UserDataEntities())
     {
         user.DateCreated = DateTime.Now;
         entities.Users.Add(user);
         entities.SaveChanges();
     }
 }
        public ActionResult Registration([Bind(Exclude = "IsEmailVerified,ActivationCode")] RegistrationDetail registrationDetail)
        {
            bool   Status  = false;
            string message = "";

            //
            // Model Validation
            if (ModelState.IsValid)
            {
                #region
                // Email already Exist
                var isExist = IsEmailExist(registrationDetail.EmailID);
                if (isExist)
                {
                    ModelState.AddModelError("EmailExist", "Email already exist");
                    return(View(registrationDetail));
                }
                #endregion
                #region
                //Generate Activation Code
                registrationDetail.ActivationCode = Guid.NewGuid();
                #endregion

                #region
                // Password Hashing
                registrationDetail.Password        = Crypto.Hash(registrationDetail.Password);
                registrationDetail.ConfirmPassword = Crypto.Hash(registrationDetail.ConfirmPassword); //
                #endregion
                registrationDetail.IsEmailVerified = false;

                #region
                //Save to Database
                using (UserDataEntities dc = new UserDataEntities())
                {
                    dc.RegistrationDetails.Add(registrationDetail);
                    dc.SaveChanges();

                    //Send Email to User
                    SendVerificationLinkEmail(registrationDetail.EmailID, registrationDetail.ActivationCode.ToString());
                    message = "Registration successfully done. Account activation link " +
                              " has been sent to your email id:" + registrationDetail.EmailID;
                    Status = true;
                }
                #endregion
            }
            else
            {
                message = "Invalid Request";
            }

            ViewBag.Message = message;
            ViewBag.Status  = Status;
            return(View(registrationDetail));
        }
Пример #12
0
 private void admin_button_Click(object sender, EventArgs e)
 {
     using (UserDataEntities dc = new UserDataEntities())
     {
         var user_admin = from user in dc.Users where user.UserName == userName select new { user.IsAdmin };
         if (user_admin.FirstOrDefault().IsAdmin)
         {
             adminForm = new Forms.AdminForm(userName);
             adminForm.Show();
         }
     }
 }
Пример #13
0
 public IHttpActionResult Add(User user)
 {
     if (user != null)
     {
         UserDataEntities entities = new UserDataEntities();
         var response = entities.Users.Add(user);
         entities.SaveChanges();
         return(Ok(response));
     }
     else
     {
         return(BadRequest());
     }
 }
Пример #14
0
 public IHttpActionResult Remove(User user)
 {
     if (user != null)
     {
         UserDataEntities entities = new UserDataEntities();
         var pollToRemove          = entities.Users.Find(user.ID);
         entities.Users.Remove(pollToRemove);
         return(Ok("Record deleted"));
     }
     else
     {
         return(BadRequest());
     }
 }
        void refreshData()
        {
            string selected = usersComboBox.SelectedItem.ToString();

            using (UserDataEntities dc = new UserDataEntities())
            {
                var selectedUser = from user in dc.Users
                                   where user.UserName == selected
                                   select new { user.MaxPageNumber, user.NotificationPerDay, user.IsAdmin };

                modifyRefreshRate.Value            = selectedUser.FirstOrDefault().NotificationPerDay;
                modifySubscriptionNumericBox.Value = selectedUser.FirstOrDefault().MaxPageNumber;
                admin_check.Checked = selectedUser.FirstOrDefault().IsAdmin;
            }
        }
 public WikipediaPoller()
 {
     using (UserDataEntities dc = new UserDataEntities())
     {
         var pages = from page in dc.Pages
                     where page.LastNotified == null ||
                     page.LastNotified.Value != DateTime.Today
                     select page;
         foreach (var page in pages)
         {
             page.Notified = 0;
         }
         date = DateTime.Today;
         dc.SaveChanges();
     }
 }
        private void updateNotifications()
        {
            using (UserDataEntities dc = new UserDataEntities())
            {
                var pages = from page in dc.Pages
                            select page;
                foreach (var page in pages)
                {
                    page.Notified = 0;
                }

                dc.SaveChanges();
            }

            date = DateTime.Today;
        }
        public ActionResult Login(UserLogin login, string ReturnUrl = "")
        {
            string message = "";

            using (UserDataEntities dc = new UserDataEntities())
            {
                var v = dc.RegistrationDetails.Where(a => a.EmailID == login.EmailID).FirstOrDefault();
                if (v != null)
                {
                    if (!v.IsEmailVerified)
                    {
                        ViewBag.Message = "Please verify your email first";
                        return(View());
                    }
                    if (string.Compare(Crypto.Hash(login.Password), v.Password) == 0)
                    {
                        int    timeout   = login.RememberMe ? 525600 : 20; // 525600 min = 1 year
                        var    ticket    = new FormsAuthenticationTicket(login.EmailID, login.RememberMe, timeout);
                        string encrypted = FormsAuthentication.Encrypt(ticket);
                        var    cookie    = new HttpCookie(FormsAuthentication.FormsCookieName, encrypted);
                        cookie.Expires  = DateTime.Now.AddMinutes(timeout);
                        cookie.HttpOnly = true;
                        Response.Cookies.Add(cookie);


                        if (Url.IsLocalUrl(ReturnUrl))
                        {
                            return(Redirect(ReturnUrl));
                        }
                        else
                        {
                            return(RedirectToAction("Index", "Home"));
                        }
                    }
                    else
                    {
                        message = "Invalid credentials provided";
                    }
                }
                else
                {
                    message = "Invalid credentials provided";
                }
            }
            ViewBag.Message = message;
            return(View());
        }
Пример #19
0
 public HttpResponseMessage Delete(int id)
 {
     using (UserDataEntities userEntities = new UserDataEntities())
     {
         var entity = userEntities.Users.FirstOrDefault(e => e.UserId == id);
         if (entity == null)
         {
             return(Request.CreateErrorResponse(HttpStatusCode.NotFound, "The product with the id of " + id.ToString() + " was not found."));
         }
         else
         {
             userEntities.Users.Remove(entity);
             userEntities.SaveChanges();
             return(Request.CreateResponse(HttpStatusCode.OK));
         }
     }
 }
Пример #20
0
 public HttpResponseMessage Post([FromBody] User user)
 {
     using (UserDataEntities userEntities = new UserDataEntities())
     {
         try
         {
             userEntities.Users.Add(user);
             userEntities.SaveChanges();
             var message = Request.CreateResponse(HttpStatusCode.Created, user);
             message.Headers.Location = new Uri(Request.RequestUri + user.UserId.ToString());
             return(message);
         }
         catch (Exception ex)
         {
             return(Request.CreateErrorResponse(HttpStatusCode.BadRequest, ex));
         }
     }
 }
        public AdminForm(string userName)
        {
            InitializeComponent();

            this.userName = userName;

            using (UserDataEntities dc = new UserDataEntities())
            {
                var users = from user in dc.Users
                            select new { user.UserName };
                foreach (var user in users)
                {
                    this.usersComboBox.Items.Add(user.UserName);
                }
            }

            usersComboBox.SelectedIndex = 1;
            refreshData();
        }
Пример #22
0
        private void unsubscribeButton_Click(object sender, EventArgs e)
        {
            Object selectedItem = unsubscribeComboBox1.SelectedItem;

            // username és a kiválasztott wikipedia oldal függvényében kitöröljük a Pages táblából a sort, majd meghívjuk a refreshDataGridet
            using (UserDataEntities dc = new UserDataEntities())
            {
                var itemToRemove = (from s1 in dc.Pages
                                    where s1.WikiPage == selectedItem.ToString() && s1.UserName == userName
                                    select s1).FirstOrDefault();

                if (itemToRemove != null)
                {
                    dc.Pages.Remove(itemToRemove);
                    dc.SaveChanges();
                }
            }

            refreshDataGrid();
        }
Пример #23
0
        public IHttpActionResult Authenticate(LoginRequest login)
        {
            if (login == null)
            {
                throw new HttpResponseException(HttpStatusCode.BadRequest);
            }

            UserDataEntities entities = new UserDataEntities();

            var user = entities.Users.FirstOrDefault(e => e.Username == login.Username && e.Password == login.Password);

            if (user != null)
            {
                var token = TokenGenerator.GenerateTokenJwt(login.Username);
                return(Ok(token));
            }
            else
            {
                return(Unauthorized());
            }
        }
Пример #24
0
        private void login()
        {
            bool loginSuccessful = false;

            using (UserDataEntities dc = new UserDataEntities())
            {
                var users = from user in dc.Users select new { user.UserName, user.Email, user.IsAdmin, user.UserPass };
                foreach (var user in users)
                {
                    if (userNameTextBox.Text == user.UserName && Hash(passwordTextBox.Text) == user.UserPass)
                    {
                        loginSuccessful = true;
                        // Elugrunk az user windowra
                        passwordTextBox.Text = "";
                        Hide();
                        Forms.SimpleUserForm userForm = new Forms.SimpleUserForm(user.UserName, this, user.IsAdmin);
                        userForm.Show();
                    }
                }

                if (!loginSuccessful)
                {
                    MessageBox.Show("Invalid username or password");
                }

                //var groups = from page in dc.Pages
                //             group page by page.UserName into g
                //             select g;
                //foreach (var g in groups)
                //{
                //    Console.WriteLine(g.Key);
                //    foreach (var page in g)
                //    {
                //        Console.WriteLine("   {0}, {1}, {2}", page.WikiPage, page.Sensitivity, page.NotificationNumber);
                //    }
                //}
            }
        }
        public ActionResult VerifyAccount(string id)
        {
            bool Status = false;

            using (UserDataEntities dc = new UserDataEntities())
            {
                dc.Configuration.ValidateOnSaveEnabled = false; // This line I have added here to avoid
                                                                // Confirm password does not match issue on save changes
                var v = dc.RegistrationDetails.Where(a => a.ActivationCode == new Guid(id)).FirstOrDefault();
                if (v != null)
                {
                    v.IsEmailVerified = true;
                    dc.SaveChanges();
                    Status = true;
                }
                else
                {
                    ViewBag.Message = "Invalid Request";
                }
            }
            ViewBag.Status = Status;
            return(View());
        }
Пример #26
0
        private void modifyButton_Click(object sender, EventArgs e)
        {
            // username és a kiválasztott wikipedia oldal függvényében kitöröljük a Pages táblából a sort és egy új sort szúrúnk be a módosított értékeknek megfelelően, majd meghívjuk a refreshDataGridet

            Object selectedItem = unsubscribeComboBox1.SelectedItem;

            // username és a kiválasztott wikipedia oldal függvényében kitöröljük a Pages táblából a sort, majd meghívjuk a refreshDataGridet
            using (UserDataEntities dc = new UserDataEntities())
            {
                var itemToChange = (from s1 in dc.Pages
                                    where s1.WikiPage == selectedItem.ToString() && s1.UserName == userName
                                    select s1).FirstOrDefault();

                if (itemToChange != null)
                {
                    itemToChange.Sensitivity = (int)modifySensitivityNumericBox.Value;
                    itemToChange.RefreshRate = (int)modifyRefreshRate.Value;
                    // dc.Pages.Remove(itemToRemove);
                    dc.SaveChanges();
                }
            }

            refreshDataGrid();
        }
        public void poll()
        {
            long milisec = 60000;

            while (true)
            {
                // Check running flag in every 20 miliseconds
                lock (thisLock)
                {
                    if (!running)
                    {
                        break;
                    }
                }
                if (milisec >= 60000)
                {
                    milisec = 0;
                    if (date != DateTime.Today)
                    {
                        updateNotifications();
                    }

                    Stopwatch sw = new Stopwatch();
                    sw.Start();
                    long ellapsed = 0;
                    List <PageReadData> pages;
                    using (UserDataEntities dc = new UserDataEntities())
                    {
                        pages = (from user in dc.Users
                                 join page in dc.Pages on user.UserName equals page.UserName
                                 select new PageReadData {
                            UserName = user.UserName,
                            NotificationPerDay = user.NotificationPerDay,
                            Email = user.Email,
                            PageId = page.Id,
                            WikiPage = page.WikiPage,
                            Sensitivity = page.Sensitivity,
                            RefreshRate = page.RefreshRate,
                            LastRefreshed = page.LastRefreshed != null ? page.LastRefreshed.Value : DateTime.MinValue,
                            Notified = page.Notified,
                            LastRevision = page.LastRevision
                        }).ToList();
                    }
                    var threads = new List <Thread>();
                    foreach (var page in pages)
                    {
                        // Measure time, and check in every 20 miliseconds if the app has been closed
                        // This is necessary to don't wait for working thread on exit
                        sw.Stop();
                        if (sw.ElapsedMilliseconds > 20)
                        {
                            lock (thisLock)
                            {
                                if (!running)
                                {
                                    break;
                                }
                            }
                            ellapsed = sw.ElapsedMilliseconds;
                            sw.Reset();
                        }
                        sw.Start();
                        if (page.Notified == page.NotificationPerDay)
                        {
                            // User reached notification limit
                            continue;
                        }
                        if (page.LastRefreshed == null || (DateTime.Now - page.LastRefreshed).TotalMilliseconds >= page.RefreshRate * 60000)
                        {
                            var t = new Thread(() => checkAndUpdateWikiPage(page));
                            threads.Add(t);
                            t.Start();
                        }
                        foreach (var t in threads)
                        {
                            t.Join();
                        }
                    }
                    sw.Stop();
                    sw.Reset();
                    // Start on ellapsed milliseconds, that way if ellapsed time less then 60000 miliseconds
                    // then there is no plus sleep time
                    milisec = ellapsed;
                }
                if (milisec < 60000)
                {
                    Thread.Sleep(20); // 1 minutes
                    milisec += 20;
                }
            }
        }