Пример #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 static IEnumerable <DayLog> GetWeek(DateTime start, DateTime end)
        {
            CarPoolToolEntities entities = new CarPoolToolEntities();

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

            Dictionary <DateTime, DayLog> week = new Dictionary <DateTime, DayLog>();

            foreach (var item in log.ToList())
            {
                if (!week.ContainsKey(item.data.Date))
                {
                    week[item.data.Date] = new DayLog(item.data.Date);
                }
                week[item.data.Date].InsertLog(item);
            }

            //Fill missing users and/or days
            var      users  = entities.Users;
            DateTime curDay = start;

            while (curDay < end)
            {
                if (!week.ContainsKey(curDay))
                {
                    week[curDay] = new DayLog(curDay);
                }
                week[curDay].FillMissingUsers(users, UserStatus.MissingData, false);
                curDay = curDay.AddDays(1);
            }


            //Load alerts and holidays
            foreach (var daylog in week.Values)
            {
                var alerts = from a in entities.Alerts
                             where a.data == daylog.Date
                             select a;

                var holiday = (from h in entities.Holidays
                               where h.data == daylog.Date
                               select h).FirstOrDefault();

                daylog.Alerts = alerts.ToList();
                if (holiday != null)
                {
                    daylog.Holiday = holiday;
                }
            }


            return(week.Values.OrderBy(x => x.Date));
        }
Пример #5
0
        // GET: UserStats
        public ActionResult Index()
        {
            ViewBag.Section = ActiveSection.Stats;
            CarPoolToolEntities entities = new CarPoolToolEntities();

            var usertotals = from a in entities.Users
                             join b in entities.Totals on a.username equals b.username
                             select new UserTotal()
            {
                Total = b, User = a
            };

            return(View("StatisticsView", usertotals.ToList().OrderByDescending((x) => x.Total.driver_month)));
        }
Пример #6
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 }));
        }
Пример #7
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 }));
        }
Пример #8
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 }));
        }
Пример #9
0
        public ActionResult Login(string user, string pass, string returnUrl)
        {
            ViewBag.Section = ActiveSection.Account;

            CarPoolToolEntities entities = new CarPoolToolEntities();

            string passHashStr = sha256(pass);

            var validUsers = from u in entities.Users where u.username.Equals(user) && u.password.Equals(passHashStr) select u;

            if (validUsers == null || validUsers.Count() == 0)
            {
                TempData["loginError"] = "Username sconosciuto o password non corretta.";
                return(View("LoginView"));
            }

            User validUser = validUsers.ToList().First();

            var claims = new List <Claim>();

            claims.Add(new Claim(ClaimTypes.Name, validUser.username));
            var id = new ClaimsIdentity(claims, DefaultAuthenticationTypes.ApplicationCookie);

            var ctx = Request.GetOwinContext();
            var authenticationManager = ctx.Authentication;

            authenticationManager.SignIn(new Microsoft.Owin.Security.AuthenticationProperties()
            {
                IsPersistent = true
            }, id);

            if (returnUrl != null)
            {
                return(Redirect(returnUrl));
            }
            else
            {
                return(RedirectToAction("Index"));
            }
        }
Пример #10
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 }));
        }
Пример #11
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();
            }
        }
Пример #12
0
        public static void PersistDayLog(DayLog daylog, UserStatus?fillStatus)
        {
            CarPoolToolEntities entities = new CarPoolToolEntities();

            PersistDayLog(daylog, entities, fillStatus, true);
        }
Пример #13
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 }));
        }