public ActionResult Login(LoginDetails loginDetails)
        {
            if (ModelState.IsValid)
            {
                using (var dbContext = new TribiticaDbContext(_options))
                {
                    var user = dbContext
                               .Accounts
                               .Where(a => a.Name == loginDetails.NameProvided ||
                                      a.Email == loginDetails.NameProvided).FirstOrDefault();

                    if (user == null)
                    {
                        throw new KeyNotFoundException("User not found.");
                    }

                    if (user.Password != loginDetails.Password)
                    {
                        throw new InvalidOperationException("Password provided was incorrect.");
                    }

                    if (user != null)
                    {
                        HttpContext.Session.Set("UserID", user.ID.ToByteArray());
                        HttpContext.Session.SetString("UserName", user.Name);
                    }
                }
            }
            return(RedirectToAction("Index", "Home"));
        }
        public async Task <IActionResult> Edit(Guid id, [Bind("ID,Name,Password,Email,SelfSummary")] TribiticaAccount tribiticaAccount)
        {
            if (id != tribiticaAccount.ID)
            {
                return(NotFound());
            }

            if (ModelState.IsValid)
            {
                try
                {
                    using (var dbContext = new TribiticaDbContext(_options))
                    {
                        dbContext.Update(tribiticaAccount);
                        await dbContext.SaveChangesAsync();
                    }
                }
                catch (DbUpdateConcurrencyException)
                {
                    if (!TribiticaAccountExists(tribiticaAccount.ID))
                    {
                        return(NotFound());
                    }
                    else
                    {
                        throw;
                    }
                }
                return(RedirectToAction(nameof(Index)));
            }
            return(View(tribiticaAccount));
        }
Beispiel #3
0
        private void PrepareDb()
        {
            TribiticaDbContext.DbFileName = GetDbFileNameFromSettings();

            using (var dbContext = new TribiticaDbContext(new DbContextOptionsBuilder <TribiticaDbContext>().UseSqlite("Filename=" + GetDbFileNameFromSettings()).Options))
            {
                dbContext.Database.EnsureCreated();
                // CreateDebugAccount(dbContext, "yankee");
                CreateDebugAccount(dbContext, "cypress");
            }
        }
        public async Task <IActionResult> DeleteConfirmed(Guid id)
        {
            using (var dbContext = new TribiticaDbContext(_options))
            {
                var tribiticaAccount = await dbContext.Accounts.FindAsync(id);

                dbContext.Accounts.Remove(tribiticaAccount);
                await dbContext.SaveChangesAsync();

                return(RedirectToAction(nameof(Index)));
            }
        }
Beispiel #5
0
 private static void CreateDebugAccount(TribiticaDbContext dbContext, string name)
 {
     if (!dbContext.Accounts.Any(x => x.Name == name))
     {
         var tribiticaAccount = new TribiticaAccount
         {
             ID       = Guid.NewGuid(),
             Name     = name,
             Password = name,
             Email    = $"{name}@a.bc"
         };
         dbContext.Add(tribiticaAccount);
         dbContext.SaveChanges();
     }
 }
        public async Task <IActionResult> Create([Bind("ID,Name,Password,Email,SelfSummary")] TribiticaAccount tribiticaAccount)
        {
            if (ModelState.IsValid)
            {
                using (var dbContext = new TribiticaDbContext(_options))
                {
                    tribiticaAccount.ID = Guid.NewGuid();
                    dbContext.Add(tribiticaAccount);
                    await dbContext.SaveChangesAsync();

                    return(RedirectToAction(nameof(Index)));
                }
            }
            return(View(tribiticaAccount));
        }
        // GET: Account/Edit/5
        public async Task <IActionResult> Edit(Guid?id)
        {
            if (id == null)
            {
                return(NotFound());
            }
            using (var dbContext = new TribiticaDbContext(_options))
            {
                var tribiticaAccount = await dbContext.Accounts.FindAsync(id);

                if (tribiticaAccount == null)
                {
                    return(NotFound());
                }
                return(View(tribiticaAccount));
            }
        }
        // GET: Account/Delete/5
        public async Task <IActionResult> Delete(Guid?id)
        {
            if (id == null)
            {
                return(NotFound());
            }
            using (var dbContext = new TribiticaDbContext(_options))
            {
                var tribiticaAccount = await dbContext.Accounts
                                       .FirstOrDefaultAsync(m => m.ID == id);

                if (tribiticaAccount == null)
                {
                    return(NotFound());
                }

                return(View(tribiticaAccount));
            }
        }
Beispiel #9
0
        private DisposableFacade <T> GetTableBasedOnType <T>() where T : class, IGoal
        {
            object stuff;
            var    dbContext = new TribiticaDbContext(_options);

            if (typeof(T) == typeof(GoalDay))
            {
                stuff = dbContext.GoalsDay;
            }
            else if (typeof(T) == typeof(GoalWeek))
            {
                stuff = dbContext.GoalsWeek;
            }
            else if (typeof(T) == typeof(GoalYear))
            {
                stuff = dbContext.GoalsYear;
            }
            else
            {
                throw new ArgumentException($"Type {typeof(T).ToString()} was not expected.");
            }
            return(new DisposableFacade <T>(dbContext, (DbSet <T>)stuff));
        }
Beispiel #10
0
        private DisposableFacade <T> GetTableBasedOnType <T>(T goal) where T : class, IGoal
        {
            object stuff;
            var    dbContext = new TribiticaDbContext(_options);

            switch (goal)
            {
            case GoalDay _:
                stuff = dbContext.GoalsDay;
                break;

            case GoalWeek _:
                stuff = dbContext.GoalsWeek;
                break;

            case GoalYear _:
                stuff = dbContext.GoalsYear;
                break;

            default:
                throw new ArgumentException($"Type {typeof(T).ToString()} was not expected.");
            }
            return(new DisposableFacade <T>(dbContext, (DbSet <T>)stuff));
        }
 // GET: Account
 public async Task <IActionResult> Index()
 {
     using (var dbContext = new TribiticaDbContext(_options))
         return(View(await dbContext.Accounts.ToListAsync()));
 }
 private bool TribiticaAccountExists(Guid id)
 {
     using (var dbContext = new TribiticaDbContext(_options))
         return(dbContext.Accounts.Any(e => e.ID == id));
 }
Beispiel #13
0
 public DisposableFacade(TribiticaDbContext dbContext, DbSet <T1> dbSet)
 {
     _dbContext = dbContext;
     Table      = dbSet;
 }