protected void Application_PostAuthenticateRequest(Object sender, EventArgs e) { var cu = Context.User; EfDbContext db = new EfDbContext(); if (db.Users.Count() != 0 && db.Users.Any(c => c.Roles.Any(r => r.RoleName == "Администратор"))) { string currentSid = null; var identity = Context.User.Identity as WindowsIdentity; if (identity.User != null) { currentSid = identity.User.Value; } SocialPackage.Infrastructure.Entities.User usr = db.Users.Include("Limit").FirstOrDefault(el => el.Login == currentSid); if (usr != null) { usr.Identity = identity; Context.User = usr; //throw new MembershipCreateUserException("заведите пользователя в базе данных"); } } else { var user = new User { Roles = new List <UserRole> { new UserRole { RoleName = "Администратор" } } }; user.Identity = Context.User.Identity as WindowsIdentity; Context.User = user; } }
public ActionResult AddUser(UserViewModel user) { if (ModelState.IsValid) { var usr = new User() { FullName = user.FullName, Email = user.Email, Login = user.Login, Limit = db.Limit.Find(user.SelectedLimitId), Roles = user.SelectedRoles.Select(el => db.UserRole.Find(el)).ToList() }; db.Users.Add(usr); db.SaveChanges(); FixBid(user.realProezdLimit, user.realFitnesLimit, user.realCultureEvent, usr); return RedirectToAction("Index"); } return View(new UserViewModel() { AvailLimits = db.Limit.ToList() }); }
public ActionResult Index(SettingsViewModel model) { if (!ModelState.IsValid) { return View(model); } //context.Categories.RemoveRange(context.Categories); //context.Limit.RemoveRange(context.Limit); //var categories = new List<Category> { // new Category { Color = "#755bee", Name="Проездные"}, // new Category { Color = "#3ec172", Name="Фитнес"}, // new Category { Color = "#e73f72", Name="Соц. Мероприятия"} //}; Limit firstUserLimit; if (dbContext.Limit.Count() == 0) { firstUserLimit = new Limit { CultureEvents = -1, Fitnes = -1, Proezd = -1, Name = "Пустой лимит" }; dbContext.Limit.Add(firstUserLimit); } else firstUserLimit = dbContext.Limit.First(); if (dbContext.Categories.Count() == 0) { var categories = new List<Category> { new Category { Color = "#755bee", Name="Проездные"}, new Category { Color = "#3ec172", Name="Фитнес"}, new Category { Color = "#e73f72", Name="Соц. Мероприятия"} }; dbContext.Categories.AddRange(categories); } List<UserRole> roles; if (dbContext.UserRole.Count() == 0) { roles = new List<UserRole> { new UserRole { RoleName = "Пользователь"}, new UserRole { RoleName = "Администратор"}, new UserRole { RoleName = "Бухгалтер"}, new UserRole { RoleName = "Секретарь"} }; dbContext.UserRole.AddRange(roles); } else roles = dbContext.UserRole.ToList(); var user = new User { FullName = model.User.FullName, Email = model.User.Email, Login = model.User.Login, Roles = roles.Where(c => c.RoleName == "Администратор").ToList(), Limit = firstUserLimit }; dbContext.Users.Add(user); dbContext.SaveChanges(); Session.Abandon(); return RedirectToAction("Index", "Users"); }
private void FixBid(decimal proezd, decimal fitnes, decimal soc, User user) { var now = new DateTime(DateTime.Now.Year, DateTime.Now.Month, 1); if (user.Limit.Proezd > proezd) db.Bids.Add(new Bid() { BidUser = user, BidSender = user, category = db.Categories.Find(1), FixBid = true, Date = now, Status = BidStatus.Paid, Summ = user.Limit.Proezd - proezd, ImageUrl = "fix" }); if (user.Limit.Fitnes > fitnes) db.Bids.Add(new Bid() { BidUser = user, BidSender = user, category = db.Categories.Find(2), FixBid = true, Date = now, Status = BidStatus.Paid, Summ = user.Limit.Fitnes - fitnes, ImageUrl = "fix" }); if (user.Limit.CultureEvents > soc) db.Bids.Add(new Bid() { BidUser = user, BidSender = user, category = db.Categories.Find(3), FixBid = true, Date = now, Status = BidStatus.Paid, Summ = user.Limit.CultureEvents - soc, ImageUrl = "fix" }); db.SaveChanges(); }
private decimal getAvaliableLimits(User user, int categoryId, int year) { var userLimitsInCurrYear = db.Bids.Where(el => el.BidUser.id == user.id && el.Date.Year == year); decimal limit = 0; switch (categoryId) { case 1: limit = user.Limit.Proezd > 0 ? user.Limit.Proezd - userLimitsInCurrYear.Where(el => el.category.id == 1 && el.Status != BidStatus.Declined).ToArray().Sum(el => el.Summ) : user.Limit.Proezd; break; case 3: limit = user.Limit.CultureEvents > 0 ? user.Limit.CultureEvents - userLimitsInCurrYear.Where(el => el.category.id == 3 && el.Status != BidStatus.Declined).ToArray().Sum(el => el.Summ) : user.Limit.CultureEvents; break; case 2: limit = user.Limit.Fitnes > 0 ? user.Limit.Fitnes - userLimitsInCurrYear.Where(el => el.category.id == 2 && el.Status != BidStatus.Declined).ToArray().Sum(el => el.Summ) : user.Limit.Fitnes; break; } return limit; }