예제 #1
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();
            }
        }
예제 #2
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 }));
        }