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); } }
// 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))); }
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)); }
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)); }