コード例 #1
0
        private void CreateEmail(MeetingModel mm, List <int> userList)
        {
            try
            {
                RoomModel room = db.Rooms.Find(mm.RoomID);

                string location = room.Name;
                string title    = mm.Title;
                string purpose  = mm.Purpose;

                DateTime startingTime = MilitaryTime.ParseMilitaryTime(mm.StartingTime, mm.BookingDate.Value.Year, mm.BookingDate.Value.Month, mm.BookingDate.Value.Day);
                DateTime endingTime   = MilitaryTime.ParseMilitaryTime(mm.EndingTime, mm.BookingDate.Value.Year, mm.BookingDate.Value.Month, mm.BookingDate.Value.Day);

                //PUTTING THE MEETING DETAILS INTO AN ARRAY OF STRING

                String[] contents = { "BEGIN:VCALENDAR",
                                      "PRODID:-//Flo Inc.//FloSoft//EN",
                                      "BEGIN:VEVENT",
                                      "DTSTART:" + startingTime.ToUniversalTime().ToString("yyyyMMdd\\THHmmss\\Z"),
                                      "DTEND:" + endingTime.ToUniversalTime().ToString("yyyyMMdd\\THHmmss\\Z"),
                                      "LOCATION:" + location,
                                      "DESCRIPTION;ENCODING=QUOTED-PRINTABLE:" + purpose,
                                      "SUMMARY:" + title,                                                          "PRIORITY:3",
                                      "END:VEVENT",                                                                "END:VCALENDAR" };

                string path = ConfigurationManager.AppSettings["EmailPath"].ToString();

                if (!Directory.Exists(path))
                {
                    Directory.CreateDirectory(path);
                }

                string filePath = Path.Combine(path, title + ".ics");

                if (System.IO.File.Exists(filePath))
                {
                    System.IO.File.Delete(filePath); // Delete old one
                }

                FileStream fs = System.IO.File.Create(filePath);
                fs.Close();
                System.IO.File.WriteAllLines(filePath, contents);

                //METHOD TO SEND EMAIL IS CALLED
                SendMail(filePath, userList, mm);
            }
            catch (Exception ex)
            {
                Log.Error("Mobile App", context.STR_USER, "CreateEmail", ex);
            }
        }
コード例 #2
0
        // GET: Meeting/Upcoming
        public ActionResult Upcoming(string searchTerm, int?page, string currentFilter)
        {
            ViewBag.SearchTerm = searchTerm;

            var todayDate    = DateTime.Today;
            var startingTime = MilitaryTime.ChangeToMilitaryTime(DateTime.Now);

            var    queryUSer = db.Users.Where(c => c.Username == context.UserID).FirstOrDefault();
            int    userID    = queryUSer.ID;
            string tempQuery = "SELECT distinct A.* FROM MeetingModel A left JOIN ParticipantModel B on A.ID = B.MeetingID "
                               + "WHERE (B.UserID='" + userID + "' or A.CreatedBy='" + context.UserID + "') AND BookingDate >= '" + todayDate + "'";

            var meetings = db.Meetings.SqlQuery(tempQuery).ToList().AsQueryable();

            if (searchTerm != null)
            {
                page = 1;
            }
            else
            {
                searchTerm = currentFilter;
            }

            ViewBag.CurrentFilter = searchTerm;

            if (!String.IsNullOrEmpty(searchTerm))
            {
                meetings = meetings.Where(s => s.Title.Contains(searchTerm) ||
                                          s.Room.Name.Contains(searchTerm));
            }

            meetings = meetings.OrderBy(d => d.BookingDate).ThenBy(s => s.StartingTime);
            int pageSize   = Config.PageSize;
            int pageNumber = (page ?? 1);

            return(View(meetings.ToPagedList(pageNumber, pageSize)));
        }
コード例 #3
0
        public ActionResult Edit([Bind(Include = "ID,RoomID,Title,Purpose,BookingDate,StartingTime,EndingTime,CreatedBy,CreatedDate,UpdatedBy,UpdatedDate,RecurenceType,SCCStartDate,SCCEndDate, Notification, NotificationStatus")] MeetingModel meetingModel)
        {
            // Convert the Starting time and Ending time to String (4 Char)
            string strStart = string.Empty;
            string strEnd   = string.Empty;

            strStart = MilitaryTime.ChangeToMilitaryTime(DateTime.Parse(meetingModel.StartingTime));
            strEnd   = MilitaryTime.ChangeToMilitaryTime(DateTime.Parse(meetingModel.EndingTime));

            meetingModel.StartingTime = strStart;
            meetingModel.EndingTime   = strEnd;

            string sqlStart = (Convert.ToInt32(strStart) + 1).ToString(); // + 1 to staring time in order to perform between condition
            string sqlEnd   = (Convert.ToInt32(strEnd) - 1).ToString();   // - 1 to staring time in order to perform between condition

            //string meetingNotifcation = db.Meetings.Find(meetingModel.ID).Notification;
            //string meetingNotifcationStt = db.Meetings.Find(meetingModel.ID).NotificationStatus;

            if (ModelState.IsValid)
            {
                string tempQuery = "SELECT * FROM dbo.MeetingModel WHERE ID <> " + meetingModel.ID + " AND RoomID = " + meetingModel.RoomID + " AND BookingDate='" + meetingModel.BookingDate + "' AND (" + sqlStart + " between StartingTime and EndingTime OR " + sqlEnd + " between StartingTime and EndingTime)";

                // Checking whether this timeslot if booked
                var bookedMeeting = db.Meetings.SqlQuery(tempQuery).ToList();

                if (bookedMeeting.Count == 0)
                {
                    MeetingModel meeting = new MeetingModel();
                    meeting.ID                 = meetingModel.ID;
                    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;
                    meeting.SCCStartDate       = meetingModel.SCCStartDate;
                    meeting.SCCEndDate         = meetingModel.SCCEndDate;
                    meeting.CreatedBy          = meetingModel.CreatedBy;
                    meeting.CreatedDate        = meetingModel.CreatedDate;
                    meeting.UpdatedBy          = context.UserID;
                    meeting.UpdatedDate        = DateTime.Now;
                    meeting.Notification       = meetingModel.Notification;
                    meeting.NotificationStatus = meetingModel.NotificationStatus;
                    if (ModelState.IsValid)
                    {
                        db.Entry(meeting).State = EntityState.Modified;
                        db.SaveChanges();

                        return(RedirectToAction("Index"));
                    }
                }
                else
                {
                    UserModel user = db.Users.Where(u => u.Username.Equals(meetingModel.CreatedBy)).SingleOrDefault();

                    if (user != null)
                    {
                        ViewBag.ErrorMessage = "This time slot had been booked by " + user.Name + " on " + meetingModel.BookingDate.Value.ToString("yyyy-MM-dd") + " at " + meetingModel.StartingTime + " to " + meetingModel.EndingTime;
                    }
                    else
                    {
                        ViewBag.ErrorMessage = "The selected time slot had been booked";
                    }
                }
            }

            ViewBag.RoomID = new SelectList(db.Rooms, "ID", "Name", meetingModel.RoomID);

            return(View(meetingModel));
        }
コード例 #4
0
        public ActionResult Create([Bind(Include = "ID,RoomID,Title,Purpose,BookingDate,StartingTime,EndingTime,CreatedBy,CreatedDate,UpdatedBy,UpdatedDate,RecurenceType,SCCStartDate,SCCEndDate, Notification")] MeetingModel meetingModel)
        {
            // Convert the Starting time and Ending time to String (4 Char)
            string strStart = string.Empty;
            string strEnd   = string.Empty;

            strStart = MilitaryTime.ChangeToMilitaryTime(DateTime.Parse(meetingModel.StartingTime));
            strEnd   = MilitaryTime.ChangeToMilitaryTime(DateTime.Parse(meetingModel.EndingTime));

            meetingModel.StartingTime = strStart;
            meetingModel.EndingTime   = strEnd;

            string sqlStart = (Convert.ToInt32(strStart) + 1).ToString(); // + 1 to staring time in order to perform between condition
            string sqlEnd   = (Convert.ToInt32(strEnd) - 1).ToString();   // - 1 to staring time in order to perform between condition

            if (ModelState.IsValid)
            {
                if (meetingModel.RecurenceType == 0)
                {
                    string tempQuery = "SELECT * FROM dbo.MeetingModel WHERE RoomID = " + meetingModel.RoomID + " AND BookingDate='" + meetingModel.BookingDate + "' AND (" + sqlStart + " between StartingTime and EndingTime OR " + sqlEnd + " between StartingTime and EndingTime)";

                    // Checking whether this timeslot if booked
                    var bookedMeeting = db.Meetings.SqlQuery(tempQuery).ToList();

                    if (bookedMeeting.Count == 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;
                        //meeting.SCCStartDate = meetingModel.SCCStartDate;
                        //meeting.SCCEndDate = meetingModel.SCCEndDate;
                        //meeting.CreatedBy = context.UserID;
                        //meeting.CreatedDate = DateTime.Now;

                        //db.Meetings.Add(meeting);
                        //db.SaveChanges();

                        // Change to store in session, later save to DB at one time
                        Session["Meeting"] = meetingModel;
                        return(RedirectToAction("AddAttendee"));
                    }
                    else
                    {
                        UserModel user = db.Users.Where(u => u.Username.Equals(meetingModel.CreatedBy)).SingleOrDefault();

                        if (user != null)
                        {
                            ViewBag.ErrorMessage = "This time slot had been booked by " + user.Name + " on " + meetingModel.BookingDate.Value.ToString("yyyy-MM-dd") + " at " + meetingModel.StartingTime + " to " + meetingModel.EndingTime;
                        }
                        else
                        {
                            ViewBag.ErrorMessage = "The selected time slot had been booked";
                        }
                    }
                }
                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);
                    }

                    int checkavalilable = 0;
                    foreach (var date in dates)
                    {
                        string tempQuery = "SELECT * FROM dbo.MeetingModel WHERE RoomID = " + meetingModel.RoomID + " AND BookingDate='" + meetingModel.BookingDate + "' AND (" + sqlStart + " between StartingTime and EndingTime OR " + sqlEnd + " between StartingTime and EndingTime)";

                        // Checking whether this timeslot if booked
                        var bookedMeeting = db.Meetings.SqlQuery(tempQuery).ToList();

                        if (bookedMeeting.Count > 0)
                        {
                            checkavalilable++;
                        }
                    }

                    if (checkavalilable == 0)
                    {
                        //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 = meetingModel.SCCStartDate;
                        //    meeting.SCCEndDate = meetingModel.SCCEndDate;
                        //    meeting.CreatedBy = context.UserID;
                        //    meeting.CreatedDate = DateTime.Now;

                        //    if (ModelState.IsValid)
                        //    {
                        //        db.Meetings.Add(meeting);
                        //        db.SaveChanges();
                        //    }
                        //}

                        // Change to store in session, later save to DB at one time
                        Session["Meeting"] = meetingModel;
                        return(RedirectToAction("AddAttendee"));
                    }
                    else
                    {
                        ViewBag.ErrorMessage = "The selected time slot had been booked";
                    }
                }
            }

            ViewBag.RoomID        = new SelectList(db.Rooms, "ID", "Name", meetingModel.RoomID);
            ViewBag.RecurenceType = GetOccurrenceRate(meetingModel.RecurenceType);

            var Minutes = GetAllMinutess();

            meetingModel.Notifications = GetSelectListItems(Minutes);
            return(View(meetingModel));
        }