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 })); }
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 })); }
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(); }
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)); }
// 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))); }
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 })); }
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 })); }
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 })); }
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")); } }
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 })); }
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(); } }
public static void PersistDayLog(DayLog daylog, UserStatus?fillStatus) { CarPoolToolEntities entities = new CarPoolToolEntities(); PersistDayLog(daylog, entities, fillStatus, true); }
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 })); }