Пример #1
0
        public ActionResult InsertHoliday(Holiday holiday)
        {
            ViewBag.Section = ActiveSection.Week;

            CarPoolToolEntities entities = new CarPoolToolEntities();

            if (holiday != null)
            {
                //Segno festivo
                entities.Holidays.Add(holiday);

                //Rimuovo eventuali persone segnate
                var log = from a in entities.CarpoolLogs
                          where a.data == holiday.data
                          select a;
                if (log != null)
                {
                    entities.CarpoolLogs.RemoveRange(log);
                }

                entities.SaveChanges();

                CalendarHelper.UpdateGoogleCalendar(holiday.data, holiday.data.AddDays(1));
            }


            return(RedirectToAction("Week", new { start = holiday.data, skipAheadIfWeekend = false }));
        }
Пример #2
0
        public ActionResult WeekEdit(DateTime day, Dictionary <DayOfWeek, DayLog> weekdata, bool updateGoogleCalendar)
        {
            ViewBag.Section = ActiveSection.Week;

            CarPoolToolEntities entities = new CarPoolToolEntities();

            foreach (var daylog in weekdata.Values)
            {
                EntitiesHelper.PersistDayLog(daylog, entities, UserStatus.Absent, false);
            }

            entities.SaveChanges();

            if (updateGoogleCalendar)
            {
                try
                {
                    CalendarHelper.UpdateGoogleCalendar(weekdata.First().Value.Date, weekdata.Last().Value.Date.AddDays(1));
                }
                catch (Exception)
                {
                }
            }

            return(RedirectToAction("Week", new { start = day, skipAheadIfWeekend = false }));
        }
Пример #3
0
        public static void SetActive(User user, bool active)
        {
            CarPoolToolEntities entities = new CarPoolToolEntities();
            var current = (from u in entities.Users where u.username == user.username select u).FirstOrDefault();

            current.active = (active ? (short)1 : (short)0);

            entities.SaveChanges();
        }
Пример #4
0
        public ActionResult InsertAlert(Alert alert, DateTime start)
        {
            ViewBag.Section = ActiveSection.Week;

            CarPoolToolEntities entities = new CarPoolToolEntities();

            if (alert != null && alert.isValid())
            {
                entities.Alerts.Add(alert);
                entities.SaveChanges();
            }

            CalendarHelper.UpdateGoogleCalendar(start, start.AddDays(1));

            return(RedirectToAction("Week", new { start = start, skipAheadIfWeekend = false }));
        }
Пример #5
0
        public ActionResult DeleteHoliday(DateTime date)
        {
            ViewBag.Section = ActiveSection.Week;

            if (date != null)
            {
                CarPoolToolEntities entities = new CarPoolToolEntities();
                var holiday = (from a in entities.Holidays where a.data == date select a).FirstOrDefault();
                if (holiday != null)
                {
                    entities.Holidays.Remove(holiday);
                    entities.SaveChanges();
                }

                CalendarHelper.UpdateGoogleCalendar(date, date.AddDays(1));
            }

            return(RedirectToAction("Week", new { start = date, skipAheadIfWeekend = false }));
        }
Пример #6
0
        public ActionResult DeleteAlert(DateTime start, int alertId)
        {
            ViewBag.Section = ActiveSection.Week;

            if (alertId > 0)
            {
                CarPoolToolEntities entities = new CarPoolToolEntities();
                var alert = (from a in entities.Alerts where a.id == alertId select a).FirstOrDefault();
                if (alert != null)
                {
                    entities.Alerts.Remove(alert);
                    entities.SaveChanges();
                }
            }

            CalendarHelper.UpdateGoogleCalendar(start, start.AddDays(1));

            return(RedirectToAction("Week", new { start = start, skipAheadIfWeekend = false }));
        }
Пример #7
0
        public ActionResult WeekReset(DateTime start)
        {
            ViewBag.Section = ActiveSection.Week;

            if (start.DayOfWeek != DayOfWeek.Monday)
            {
                start = GetMonday(start, false);
            }
            DateTime end = start.AddDays(5);

            CarPoolToolEntities entities = new CarPoolToolEntities();

            var log = from a in entities.CarpoolLogs
                      where a.data >= start && a.data < end
                      select a;

            if (log != null)
            {
                entities.CarpoolLogs.RemoveRange(log);
                entities.SaveChanges();
            }

            return(RedirectToAction("Week", new { start = start, skipAheadIfWeekend = false }));
        }
Пример #8
0
        public static void PersistDayLog(DayLog daylog, CarPoolToolEntities entities, UserStatus?fillStatus, bool persistChanges)
        {
            DateTime day = daylog.Date.Date;

            var users = entities.Users;

            if (fillStatus.HasValue)
            {
                daylog.FillMissingUsers(users, fillStatus.Value, true);
            }

            foreach (var user in users)
            {
                if (!daylog.Userdata.ContainsKey(user))
                {
                    continue;
                }

                var        log    = (from l in entities.CarpoolLogs where l.data == day && l.username == user.username select l).FirstOrDefault();
                UserStatus status = daylog.Userdata[user];

                //Remove entry
                if (status == UserStatus.MissingData)
                {
                    if (log != null)
                    {
                        entities.CarpoolLogs.Remove(log);
                    }
                }
                else
                {
                    if (log == null)
                    {
                        log          = new CarpoolLog();
                        log.username = user.username;
                        log.data     = day;
                        entities.CarpoolLogs.Add(log);
                    }

                    switch (status)
                    {
                    case UserStatus.Driver:
                        log.driver    = 1;
                        log.passenger = 0;
                        break;

                    case UserStatus.Passenger:
                        log.driver    = 0;
                        log.passenger = 1;
                        break;

                    case UserStatus.Absent:
                        log.driver    = 0;
                        log.passenger = 0;
                        break;

                    default:
                        break;
                    }
                }
            }

            //Update o insert
            if (persistChanges)
            {
                entities.SaveChanges();
            }
        }
Пример #9
0
        public ActionResult Update(DateTime day, string username, UserStatus status, UserStatus?formerDriverStatus, bool updateGoogleCalendar)
        {
            day = day.Date;
            CarPoolToolEntities entities = new CarPoolToolEntities();

            var driver = (from l in entities.CarpoolLogs where l.data == day && l.driver == 1 select l).FirstOrDefault();

            if (driver != null)
            {
                if (formerDriverStatus.HasValue && formerDriverStatus != UserStatus.Driver)
                {
                    driver.driver    = 0;
                    driver.passenger = formerDriverStatus == UserStatus.Absent ? (short)0 : (short)1;
                    entities.SaveChanges();
                }
            }

            var log = (from l in entities.CarpoolLogs where l.data == day && l.username == username select l).FirstOrDefault();

            //Remove entry
            if (status == UserStatus.MissingData)
            {
                if (log != null)
                {
                    entities.CarpoolLogs.Remove(log);
                }
            }
            else
            {
                if (log == null)
                {
                    log          = new CarpoolLog();
                    log.username = username;
                    log.data     = day;
                    entities.CarpoolLogs.Add(log);
                }

                switch (status)
                {
                case UserStatus.Driver:
                    log.driver    = 1;
                    log.passenger = 0;
                    break;

                case UserStatus.Passenger:
                    log.driver    = 0;
                    log.passenger = 1;
                    break;

                case UserStatus.Absent:
                    log.driver    = 0;
                    log.passenger = 0;
                    break;

                default:
                    break;
                }
            }

            //Update o insert
            entities.SaveChanges();

            //Update calendar
            if (updateGoogleCalendar)
            {
                CalendarHelper.UpdateGoogleCalendar(day.Date, day.Date.AddDays(1));
            }

            return(RedirectToAction("Week", new { start = day.Date, skipAheadIfWeekend = false }));
        }