예제 #1
0
        public static void Main(string[] args)
        {
            FileAdapter fileAdapter = new FileAdapter();
            var         allFamilies = fileAdapter.getAllFamilies();


            //AddAllFamilies(allFamilies);

            using (FamilyDbContext familyDbContext = new FamilyDbContext())
            {
                var           first         = familyDbContext.Childs.First(child => child.FirstName.Equals("Maria"));
                Interest      interest      = familyDbContext.Interests.First(interst => interst.Type.Equals("Fodbold"));
                ChildInterest childInterest = new ChildInterest()
                {
                    Child    = first,
                    Interest = interest
                };

                familyDbContext.ChildInterests.Add(childInterest);
                familyDbContext.SaveChanges();
            }



            CreateHostBuilder(args).Build().Run();
        }
예제 #2
0
        public async Task DeleteMemberFromFamilyAsync(string streetName, int houseNumber, string memberType, int memberId)
        {
            Console.WriteLine("\tDeleting member from family");
            using (FamilyDbContext dbContext = new FamilyDbContext())
            {
                Family family = await GetFamilyByAddress(streetName, houseNumber);

                switch (memberType)
                {
                case "adults":
                    Adult adult = family.Adults.First(a => a.Id == memberId);
                    dbContext.Remove(adult);
                    break;

                case "children":
                    Child child = family.Children.First(c => c.Id == memberId);
                    dbContext.Remove(child);
                    break;

                case "pets":
                    Pet pet = family.Pets.First(p => p.Id == memberId);
                    dbContext.Remove(pet);
                    break;
                }

                dbContext.Update(family);
                await dbContext.SaveChangesAsync();
            }
        }
        //protected Token CreateToken(Manager manager, int hours = DefaultExpirationHours)
        //{
        //    var now = CommonService.Now;

        //    if (manager == null)
        //        return null;

        //    // берем пользователя из токена и проверяем на активность (не удален)
        //    var person = manager?.Person;
        //    if (person == null)
        //        return null;

        //    var key = Guid.NewGuid().ToString();

        //    // создаем стандартный токен
        //    var token = new Token(0, person.ID, manager.ID, manager.Login, key, now.AddHours(DefaultExpirationHours), person.Name, person.Avatar)
        //    {
        //        Roles = manager.Roles.Select(r => r.Name).ToArray()
        //    };

        //    // создаем доступ к Azure для просмотра материалов
        //    var sas = this.CreateSASToken();
        //    if (!String.IsNullOrWhiteSpace(sas))
        //        token.Values.Add(MaterialDataProvider.StorageSASTokenName, sas);

        //    return token;
        //}

        public Token Authenticate(string token)
        {
            // authentication by the Token
            var now = CommonService.Now;

            Token result = null;

            // создаем новый контекст, дабы не использовать "уже загруженные" сущности
            using (var dbContext = new FamilyDbContext())
            {
                // находим токин пользователя в базе по заданному коду токена
                var managerToken = dbContext.Set <UserToken>()
                                   .Include(t => t.Manager.Roles)
                                   .Include(t => t.Manager.Person.Avatar)
                                   .Include(t => t.Guest)
                                   //.Where(t => t.Manager.Person.State == Common.Enums.ObjectState.Active)
                                   .SingleOrDefault(t => t.Date <= now && now <= t.Expire && t.Code.ToLower() == token.ToLower());

                if (managerToken == null)
                {
                    return(null);
                }

                result = this.BuildToken(managerToken);
            }

            return(result);
        }
예제 #4
0
        public static FamilyDbContext CreateFamilyDbContext(CreateDbOptions createDbOptions)
        {
            // Create new context for all tests
            var context = new FamilyDbContext(createDbOptions);

            Assert.True(context.Parents.Count() >= 0);
            return(context);
        }
예제 #5
0
 public async Task UpdateFamilyAsync(Family family)
 {
     Console.WriteLine("\tUpdating");
     using (FamilyDbContext dbContext = new FamilyDbContext())
     {
         dbContext.Update(family);
         await dbContext.SaveChangesAsync();
     }
 }
예제 #6
0
        public async Task RegisterAsync(APIUser user)
        {
            using (FamilyDbContext dbContext = new FamilyDbContext())
            {
                await dbContext.Users.AddAsync(user);

                await dbContext.SaveChangesAsync();
            }
        }
예제 #7
0
        public async Task <APIUser> LoginAsync(string username, string password)
        {
            using (FamilyDbContext dbContext = new FamilyDbContext())
            {
                APIUser user = await dbContext.Users.FirstOrDefaultAsync(u => u.Username.Equals(username) &&
                                                                         u.Password.Equals(password));

                return(user);
            }
        }
예제 #8
0
        public async Task CreateFamilyAsync(Family family)
        {
            Console.WriteLine("\tCreating family");
            using (FamilyDbContext dbContext = new FamilyDbContext())
            {
                await dbContext.Families.AddAsync(family);

                await dbContext.SaveChangesAsync();
            }
        }
예제 #9
0
        public async Task DeleteFamilyAsync(string streetName, int?houseNumber)
        {
            Console.WriteLine("\tDeleting family");
            using (FamilyDbContext dbContext = new FamilyDbContext())
            {
                Family family = await GetFamilyByAddress(streetName, houseNumber);

                dbContext.Remove(family);
                await dbContext.SaveChangesAsync();
            }
        }
예제 #10
0
        public void test_get_persons()
        {
            FamilyDbContext context = new FamilyDbContext();
            var             persons = context.Set <Person>().ToList();

            var repo = new PersonRepository(context);

            File.WriteAllText("hello.txt", "hello");
            var find = repo.FindAll("ли");

            Assert.IsTrue(find.Count() > 0);
        }
        public Token Authenticate(string login, string password)
        {
            // authentication by the Login and Password
            var now = CommonService.Now;

            Token result = null;

            // создаем новый контекст, дабы не использовать "уже загруженные" сущности
            using (var dbContext = new FamilyDbContext())
            {
                UserToken userToken = null;

                // authentication for Managers
                if (userToken == null)
                {
                    // находим пользователя по логину
                    var manager = dbContext.Set <Manager>()
                                  .Include(t => t.Person.Avatar)
                                  .Include(t => t.Roles)
                                  //.Where(m => m.Person.State == Common.Enums.ObjectState.Active)
                                  .FirstOrDefault(m => m.Login.ToLower() == login.ToLower());

                    if (manager != null && CommonService.VerifyPassword(password, manager.Password))
                    {
                        userToken = UserToken.Create(manager, null, now.AddHours(DefaultExpirationHours));
                    }
                }

                // authentication for Guests
                if (userToken == null)
                {
                    var guest = dbContext.Set <Guest>()
                                .FirstOrDefault(g => g.Date <= now && now <= g.Expire && g.Login.ToLower() == login.ToLower());

                    if (guest != null && CommonService.VerifyPassword(password, guest.Password))
                    {
                        userToken = UserToken.Create(null, guest, guest.Expire);
                    }
                }

                // saving new token
                if (userToken != null)
                {
                    dbContext.Set <UserToken>().Add(userToken);
                    dbContext.SaveChanges();

                    result = this.BuildToken(userToken);
                }
            }

            return(result);
        }
예제 #12
0
        public async Task AddChildToFamilyAsync(string streetName, int houseNumber, Child child)
        {
            Console.WriteLine("\tAdding child to family " + child.Id);
            using (FamilyDbContext dbContext = new FamilyDbContext())
            {
                Family family = await GetFamilyByAddress(streetName, houseNumber);

                family.Children.Add(child);
                dbContext.Add(child);
                dbContext.Update(family);
                await dbContext.SaveChangesAsync();
            }
        }
예제 #13
0
        public async Task AddAdultToFamilyAsync(string streetName, int houseNumber, Adult adult)
        {
            Console.WriteLine("\tAdding adult to family " + adult.Id);
            using (FamilyDbContext dbContext = new FamilyDbContext())
            {
                Family family = await GetFamilyByAddress(streetName, houseNumber);

                family.Adults.Add(adult);
                dbContext.Add(adult);
                dbContext.Update(family);
                await dbContext.SaveChangesAsync();
            }
        }
예제 #14
0
        public async Task UpdatePetInFamilyAsync(string streetName, int houseNumber, Pet pet)
        {
            Console.WriteLine("\tUpdating pet in family");
            using (FamilyDbContext dbContext = new FamilyDbContext())
            {
                Family family = await GetFamilyByAddress(streetName, houseNumber);

                family.EditPet(pet);
                dbContext.Update(pet);
                //dbContext.Update(family);
                await dbContext.SaveChangesAsync();
            }
        }
예제 #15
0
 public async Task <IList <Family> > GetAllFamiliesAsync()
 {
     using (FamilyDbContext dbContext = new FamilyDbContext())
     {
         Console.WriteLine("\tGetting families");
         List <Family> families = dbContext.Families.Include(f => f.Adults)
                                  .Include(f => f.Pets)
                                  .Include(f => f.Children)
                                  .ThenInclude(c => c.ChildInterests)
                                  .ThenInclude(i => i.Interest)
                                  .ToList();
         return(families);
     }
 }
예제 #16
0
 private static void AddAllFamilies(IList <Family> allFamilies)
 {
     using (FamilyDbContext familyDbContext = new FamilyDbContext())
     {
         for (int i = 0; i < allFamilies.Count; i++)
         {
             familyDbContext.Families.Add(new Family()
             {
                 HouseNumber = allFamilies[i].HouseNumber,
                 StreetName  = allFamilies[i].StreetName
             });
             familyDbContext.SaveChanges();
         }
     }
 }
예제 #17
0
 public async Task <Family> GetFamilyByAddress(string streetName, int?houseNumber)
 {
     using (FamilyDbContext dbContext = new FamilyDbContext())
     {
         Console.WriteLine("\tGetting family at address");
         Family family = dbContext.Families.Where(f =>
                                                  f.StreetName.Equals(streetName) && f.HouseNumber == houseNumber)
                         .Include(f => f.Adults)
                         .Include(f => f.Pets)
                         .Include(f => f.Children)
                         .ThenInclude(c => c.ChildInterests)
                         .ThenInclude(i => i.Interest).FirstOrDefault();
         return(family);
     }
 }
예제 #18
0
        public async Task UpdateAdultInFamilyAsync(string streetName, int houseNumber, Adult adult)
        {
            Console.WriteLine("\tUpdating adult in family");
            using (FamilyDbContext dbContext = new FamilyDbContext())
            {
                Family family = await GetFamilyByAddress(streetName, houseNumber);

                family.EditAdult(adult);
                dbContext.Update(adult);
                // dbContext.Update(family);
                Console.WriteLine("Before saving changes");
                await dbContext.SaveChangesAsync();

                Console.WriteLine("Saved changes to update adult");
            }
        }
        private List <Contact> CreateTestContactsWithDetails(FamilyDbContext context)
        {
            // Create test entities
            var category1 = new ContactCategory
            {
                CategoryName = "Friends",
            };
            var contact1 = new Contact
            {
                ContactCategory = category1
            };

            // Persist entities
            context.Contacts.Add(contact1);
            context.SaveChanges();

            // Create one-to-one related entity
            var data1 = new ContactData
            {
                Data      = "Data 1",
                ContactId = contact1.Id,
                Contact   = contact1
            };

            context.ContactDatas.Add(data1);
            context.SaveChanges();

            // Detach entities
            var objContext = ((IObjectContextAdapter)context).ObjectContext;

            objContext.Detach(contact1);

            // Clear reference properties
            contact1.ContactCategory = null;
            contact1.ContactData     = null;

            // Return entities
            return(new List <Contact> {
                contact1
            });
        }
예제 #20
0
 public void Initialize(bool useInMemory = true, Action seedData = null)
 {
     if (useInMemory)
     {
         // In-memory database only exists while the connection is open
         _connection = new SqliteConnection("DataSource=:memory:");
         _connection.Open();
         _options = new DbContextOptionsBuilder <FamilyDbContext>()
                    .UseSqlite(_connection)
                    .Options;
     }
     else
     {
         _options = new DbContextOptionsBuilder <FamilyDbContext>()
                    .UseSqlServer(@"Data Source=(localdb)\MSSQLLocalDB; Initial Catelog=FamilyTest; Integrated Security=True; MultipleActiveResultSets=True")
                    .Options;
     }
     _context = new FamilyDbContext(_options);
     _context.Database.EnsureCreated();
     seedData?.Invoke();
 }
예제 #21
0
 public DadDailyItemsController(FamilyDbContext context)
 {
     _context = context;
 }