예제 #1
0
        public static bool IsSessionValid(string username, string sessionKey)
        {
            int validity = Config.SessionKeyValidity;

            bool isValid = false;

            RBSContext db = new RBSContext();

            if (!string.IsNullOrEmpty(sessionKey))
            {
                SessionModel ss   = db.Sessions.FirstOrDefault(s => s.UserID.Equals(username) && s.SessionKey.Equals(sessionKey));
                DateTime     ssDt = new DateTime();

                if (ss.UpdatedDate.HasValue)
                {
                    ssDt = ss.UpdatedDate.Value;
                }
                else if (ss.CreatedDate.HasValue)
                {
                    ssDt = ss.CreatedDate.Value;
                }

                ssDt = ssDt.AddSeconds(validity);

                TimeSpan span         = DateTime.Now.Subtract(ssDt);
                TimeSpan validitySpan = TimeSpan.FromSeconds(validity);

                if (TimeSpan.Compare(span, validitySpan) == -1)   // -1: span is shorter than validitySpan, 0: both are equal, 1: span is longer than validitySpan
                {
                    isValid = true;
                }
            }

            return(isValid);
        }
예제 #2
0
        private static string getConfig(string key)
        {
            string str = string.Empty;

            RBSContext db = new RBSContext();

            ConfigModel config = db.Configs.FirstOrDefault(s => s.Key.Equals(key));

            if (config != null)
            {
                str = config.Value;
            }
            else
            {
                Log.Error(context.UserID, "Missing Config", key);
            }

            return(str);
        }
예제 #3
0
        public ActionResult DeleteConfirmed(int id)
        {
            MeetingModel meetingModel = db.Meetings.Find(id);

            if (meetingModel != null)
            {
                // Remove the Attendees for the particular meeting first.
                using (var context = new RBSContext())
                {
                    context.Database.ExecuteSqlCommand("DELETE FROM [ParticipantModel] WHERE MeetingID = " + meetingModel.ID);

                    context.SaveChanges();
                }

                db.Meetings.Remove(meetingModel);
                db.SaveChanges();
            }

            return(RedirectToAction("Index"));
        }
예제 #4
0
        // Purpose: To be used when password is passed from mobile client. Password is hashed and encrypted with salt.
        public static bool IsAuthenticated(string username, string passwordFromMobile, string salt)
        {
            bool isValid = false;

            RBSContext db = new RBSContext();

            UserModel user = db.Users.FirstOrDefault(s => s.Username.Equals(username));

            if (user != null)
            {
                // Encrypt with salt
                string passwordWithSalt = EncryptHashWithSalt(user.Password, salt);

                // Compare with DB value
                if (passwordFromMobile.Equals(passwordWithSalt))
                {
                    isValid = true;
                }
            }

            return(isValid);
        }
예제 #5
0
        public ActionResult AddAttendee(string selectedUsers, string selectedDepts)
        {
            if (!String.IsNullOrEmpty(selectedUsers) || !String.IsNullOrEmpty(selectedDepts))
            {
                MeetingModel meetingModel = (MeetingModel)Session["Meeting"];

                if (meetingModel != null)
                {
                    List <int> userIds = new List <int>();

                    if (selectedUsers.Length > 0)
                    {
                        string[] ids = selectedUsers.Trim().Split(',');

                        for (int i = 0; i < ids.Length; i++)
                        {
                            int temp = Convert.ToInt32(ids[i]);
                            userIds.Add(temp);
                        }
                    }
                    else if (selectedDepts.Length > 0)
                    {
                        string tempQuery = "SELECT ID FROM dbo.UserModel WHERE DepartmentID IN (" + selectedDepts + ")";

                        using (var context = new RBSContext())
                        {
                            userIds = context.Database.SqlQuery <int>("SELECT ID FROM dbo.UserModel WHERE DepartmentID IN (" + selectedDepts + ")").ToList();
                        }
                    }

                    if (meetingModel.RecurenceType == 0)
                    {
                        MeetingModel meeting = new MeetingModel();
                        meeting.RoomID        = meetingModel.RoomID;
                        meeting.Title         = meetingModel.Title;
                        meeting.Purpose       = meetingModel.Purpose;
                        meeting.BookingDate   = meetingModel.BookingDate;
                        meeting.StartingTime  = meetingModel.StartingTime;
                        meeting.EndingTime    = meetingModel.EndingTime;
                        meeting.RecurenceType = meetingModel.RecurenceType;
                        DateTime newStartDate = meetingModel.BookingDate.Value;
                        meeting.SCCStartDate = newStartDate.ToString("yyyy-MM-dd");
                        meeting.SCCEndDate   = meetingModel.SCCEndDate;
                        meeting.CreatedBy    = context.UserID;
                        meeting.CreatedDate  = DateTime.Now;
                        if (meetingModel.Notification == null)
                        {
                            meeting.Notification = "60";
                        }
                        else
                        {
                            meeting.Notification = meetingModel.Notification;
                        }
                        meeting.NotificationStatus = "0";
                        db.Meetings.Add(meeting);
                        db.SaveChanges();

                        // After saving the db, proceed to add participants
                        foreach (var id in userIds)
                        {
                            ParticipantModel participant = new ParticipantModel();
                            participant.MeetingID   = Convert.ToInt32(meeting.ID);
                            participant.UserID      = id;
                            participant.CreatedBy   = context.UserID;
                            participant.CreatedDate = DateTime.Now;

                            db.Participants.Add(participant);
                            db.SaveChanges();
                        }
                    }
                    else
                    {
                        List <DateTime> dates        = new List <DateTime>();
                        DateTime        newStartDate = meetingModel.BookingDate.Value;
                        DateTime        newEndDate   = DateTime.ParseExact(meetingModel.SCCEndDate, "yyyy-MM-dd", CultureInfo.InvariantCulture);

                        if (meetingModel.RecurenceType == 1)
                        {
                            dates = GetOccurrences(newStartDate, newEndDate, OccurrenceRate.Daily);
                        }
                        else if (meetingModel.RecurenceType == 2)
                        {
                            dates = GetOccurrences(newStartDate, newEndDate, OccurrenceRate.Weekly);
                        }
                        else if (meetingModel.RecurenceType == 3)
                        {
                            dates = GetOccurrences(newStartDate, newEndDate, OccurrenceRate.Monthly);
                        }

                        foreach (var date in dates)
                        {
                            MeetingModel meeting = new MeetingModel();
                            meeting.RoomID        = meetingModel.RoomID;
                            meeting.Title         = meetingModel.Title;
                            meeting.Purpose       = meetingModel.Purpose;
                            meeting.BookingDate   = DateTime.ParseExact(date.ToString("yyyy-MM-dd"), "yyyy-MM-dd", CultureInfo.InvariantCulture);
                            meeting.StartingTime  = meetingModel.StartingTime;
                            meeting.EndingTime    = meetingModel.EndingTime;
                            meeting.RecurenceType = meetingModel.RecurenceType;
                            meeting.SCCStartDate  = newStartDate.ToString("yyyy-MM-dd");
                            meeting.SCCEndDate    = meetingModel.SCCEndDate;
                            meeting.CreatedBy     = context.UserID;
                            meeting.CreatedDate   = DateTime.Now;
                            if (meetingModel.Notification == null)
                            {
                                meeting.Notification = "60";
                            }
                            else
                            {
                                meeting.Notification = meetingModel.Notification;
                            }
                            meeting.NotificationStatus = "0";
                            db.Meetings.Add(meeting);
                            db.SaveChanges();

                            // After saving the db, proceed to add participants
                            foreach (var id in userIds)
                            {
                                ParticipantModel participant = new ParticipantModel();
                                participant.MeetingID   = Convert.ToInt32(meeting.ID);
                                participant.UserID      = id;
                                participant.CreatedBy   = context.UserID;
                                participant.CreatedDate = DateTime.Now;

                                db.Participants.Add(participant);
                                db.SaveChanges();
                            }
                        }
                    }

                    // After saving, sending invitation to the participants
                    CreateEmail(meetingModel, userIds);

                    //after saving, sending notification
                    sendNotification(meetingModel, userIds, context.UserID);

                    return(RedirectToAction("Index"));
                }
                else
                {
                    return(RedirectToAction("Create"));
                }
            }
            else
            {
                IQueryable <UserModel> users = db.Users.Where(a => a.IsActive == true);

                List <UserDTO> userList = new List <UserDTO>();
                Mapper.Initialize(cfg => cfg.CreateMap <UserModel, UserDTO>());

                foreach (UserModel um in users)
                {
                    um.Department = null;
                    UserDTO newDto = Mapper.Map <UserDTO>(um);
                    userList.Add(newDto);
                }

                userList = userList.OrderBy(u => u.Name).ToList();
                IQueryable <DepartmentModel> departments = db.Departments.OrderBy(u => u.Name);

                string userjson = JsonConvert.SerializeObject(userList);
                string deptjson = JsonConvert.SerializeObject(departments.ToList());

                ViewBag.Users        = userjson;
                ViewBag.Departments  = deptjson;
                ViewBag.ErrorMessage = "Please select at least one user or one department.";

                return(View());
            }
        }