Ejemplo n.º 1
0
        /// <summary>
        /// Saves a new tenant to the database.
        /// </summary>
        /// <param name="name">Tenants full name, "First Last"</param>
        /// <returns>True if operation was successful and changes were saved.</returns>
        public static bool AddTenant(string id, string name)
        {
            using (var context = new LogsContext())
            {
                context.Database.BeginTransaction();
                try
                {
                    context.Add(
                        new Tenant()
                    {
                        Id   = id,
                        Name = name
                    });

                    context.SaveChanges();
                    context.Database.CommitTransaction();
                }
                catch (Exception)
                {
                    context.Database.RollbackTransaction();
                    return(false);
                }
            }

            return(true);
        }
Ejemplo n.º 2
0
 private void LogsContextSeeding()
 {
     LogsContext.Seeding.Add(new Logs.SeedModel {
         IsSeed = true
     });
     LogsContext.SaveChanges();
 }
Ejemplo n.º 3
0
        /// <summary>
        /// Saves a log entry to the database.
        /// </summary>
        /// <param name="when">Date and time when this occured, using the format "YY-MM-DD HH:MM:SS"</param>
        /// <param name="doorId">Door id involved.</param>
        /// <param name="eventId">Event id, what happened</param>
        /// <param name="tagId">Tag id used.</param>
        /// <returns>True if operation was successful and changes were saved.</returns>
        public static bool LogEntry(string when, string doorId, string eventId, string tagId)
        {
            using (var context = new LogsContext())
            {
                context.Database.BeginTransaction();
                try
                {
                    context.Add(
                        new LogEntry()
                    {
                        When    = DateTime.ParseExact(when, "yy-MM-dd HH:mm:ss", null),
                        DoorId  = doorId,
                        EventId = eventId,
                        TagId   = tagId
                    }
                        );

                    context.SaveChanges();
                    context.Database.CommitTransaction();
                }
                catch (Exception)
                {
                    context.Database.RollbackTransaction();
                    return(false);
                }
            }

            return(true);
        }
Ejemplo n.º 4
0
        public static void Log(Logs log)
        {
            LogsContext db = new LogsContext();

            db.Logs.Add(log);

            db.SaveChanges();
            db.Dispose();
        }
Ejemplo n.º 5
0
 public void UpdateSeedLogs()
 {
     LogsContext.ExecuteTransaction(() =>
     {
         LogsContext.Seeding.Add(new Logs.SeedModel {
             IsSeed = true
         });
         LogsContext.SaveChanges();
     });
 }
Ejemplo n.º 6
0
 /// <summary>
 /// Looks for the names and tags of all tenants living at the apartment.
 /// </summary>
 /// <param name="apartmentId">Apartment id code.</param>
 /// <returns>Names of all tenants, listed alpabethically in ascending order.</returns>
 public static List <Tag> ListTenantsAt(string apartmentId)
 {
     using (var context = new LogsContext())
     {
         return(context.Tags
                .Include(t => t.Tenant)
                .Where(t => t.Tenant.ApartmentId == apartmentId)
                .OrderBy(t => t.Tenant.Name)
                .ToList());
     }
 }
Ejemplo n.º 7
0
        private void ButtonStartScript_Click(object sender, EventArgs e)
        {
            string errMsg = ReadView(scriptHardware.Id);

            if (scriptHardware.Name != ScriptName.Text)
            {
                errMsg += $"{GetString(Resource.String.saving_is_required)}";
            }

            if (!string.IsNullOrWhiteSpace(errMsg))
            {
                errMsg += $"ButtonStartScript_Click - {errMsg}";
                Log.Error(TAG, errMsg);
                using (LogsContext logs = new LogsContext())
                {
                    logs.AddLogRow(LogStatusesEnum.Error, errMsg, TAG);
                }
                CardSubtitle.Text = errMsg;
                CardSubtitle.SetTextColor(Color.Red);
                Toast.MakeText(this, errMsg, ToastLength.Short).Show();
                return;
            }

            TaskModel task;

            lock (DatabaseContext.DbLocker)
            {
                using (DatabaseContext db = new DatabaseContext(gs.DatabasePathBase))
                {
                    task = new TaskModel()
                    {
                        Name = "http trigger",
                        TaskInitiatorType = TaskInitiatorsTypes.Manual,
                        TaskInitiatorId   = (sender as AppCompatButton).Id,
                        ScriptId          = scriptHardware.Id
                    };
                    task.FinishedAt = task.CreatedAt;
                    db.Tasks.Add(task);
                    db.SaveChanges();
                }
            }
            task.Script = scriptHardware;

            BackgroundWorker bw = new BackgroundWorker();

            bw.DoWork             += new DoWorkEventHandler(aForegroundService.RunScriptAction);
            bw.ProgressChanged    += Bw_ProgressChanged;
            bw.RunWorkerCompleted += Bw_RunWorkerCompleted;
            bw.RunWorkerAsync(task);

            //Thread RunScriptThread = new Thread(aForegroundService.RunScriptAction) { IsBackground = false };
            //RunScriptThread.Start(task);
        }
Ejemplo n.º 8
0
        /// <summary>
        /// Looks for log entries containing the tag.
        /// </summary>
        /// <param name="tag">Tag code.</param>
        /// <returns>Log entries, listed in descending order based on date and time, latest entry first.</returns>
        public static List <LogEntry> FindEntriesByTag(string tagId)
        {
            using (var context = new LogsContext())
            {
                var entries = context.LogEntries
                              .Include(le => le.Tag)
                              .ThenInclude(ta => ta.Tenant)
                              .Where(le => le.TagId == tagId)
                              .OrderByDescending(le => le.When);

                // Limit entries returned according to MaxEntries.
                return(MaxEntries > 0 ? entries.Take(MaxEntries).ToList() : entries.ToList());
            }
        }
Ejemplo n.º 9
0
        /// <summary>
        /// Looks through currently in use tag ids for specified apartment and finds the next first alphabethically available.
        /// E.g. if tags 0301A, 0301B, and 0301D are in use, 0301C will be returned.
        /// </summary>
        /// <param name="apartmentId">Apartment id for which to get a tag id.</param>
        /// <returns>Returns an available tag id, or an empty string if none is available.</returns>
        public static string GetNextApartmentTag(string apartmentId)
        {
            // Get all currently assigned tag letters for apartment.
            var tagLettersInUse = new List <string>();

            using (var context = new LogsContext())
            {
                var tags = context.Tags
                           .Include(t => t.Tenant)
                           .Where(t => t.Tenant.ApartmentId == apartmentId)
                           .ToList();

                foreach (Tag tag in tags)
                {
                    tagLettersInUse.Add(tag.Id.Substring(apartmentId.Length));
                }
            }

            // Make sure they are sorted or trouble when assuming letter is available.
            tagLettersInUse.Sort();

            // Find first letter in the alphabet that is not currently in use by a tenant.
            foreach (char letter in AllowedTagLetters.ToCharArray())
            {
                // Assume its available until proven it's not.
                var isLetterAvailable = true;

                foreach (string tagLetter in tagLettersInUse)
                {
                    // Is letter in use by tag?
                    if (tagLetter.IndexOf(letter) >= 0) // index of 'A' in "A"? => 0 => true
                    {
                        isLetterAvailable = false;
                        // It's in use, no reason looking at the other tags for this letter.
                        break;
                    }
                }
                if (isLetterAvailable)
                {
                    return($"{apartmentId}{letter}");
                }
            }

            // Return empty string if all allowed letters are in use.
            return("");
        }
 public DbBaseOperations()
 {
     dbContext  = new BookstoreEntities();
     logContext = new LogsContext();
 }
Ejemplo n.º 11
0
 public RegistroViewModel(LogsContext context)
 {
     _context = context;
 }
        public static void ExecureQuery(string filePath)
        {
            XmlDocument xmlDocument = new XmlDocument();

            xmlDocument.Load(filePath);
            string pathQuery = "/review-queries/query";

            XmlNodeList xmlQuery = xmlDocument.SelectNodes(pathQuery);


            string fileName = "../../search-results.xml";

            using (var writer = new XmlTextWriter(fileName, Encoding.UTF8))
            {
                writer.Formatting  = Formatting.Indented;
                writer.IndentChar  = '\t';
                writer.Indentation = 1;

                writer.WriteStartDocument();
                writer.WriteStartElement("search-results");
                writer.WriteStartElement("result-set");

                BookstoreEntities context = new BookstoreEntities();
                foreach (XmlNode query in xmlQuery)
                {
                    if (query.Attributes["type"].Value == "by-period")
                    {
                        string startDateStr = query["start-date"].InnerText;
                        string endDateStr   = query["end-date"].InnerText;

                        DateTime startDate = DateTime.ParseExact(startDateStr, "d-MMM-yyyy", CultureInfo.InvariantCulture);
                        DateTime endDate   = DateTime.ParseExact(endDateStr, "d-MMM-yyyy", CultureInfo.InvariantCulture);


                        var searchQuery =
                            from r in context.Reviews
                            where r.CreationDate >= startDate && r.CreationDate <= endDate
                            select r;

                        searchQuery = searchQuery.OrderByDescending(x => x.CreationDate);
                        searchQuery = searchQuery.OrderByDescending(x => x.ReviewText);

                        WriteBookmarks(writer, searchQuery.ToList());
                    }
                    else
                    {
                        string authorName = query["author-name"].InnerText;

                        var searchQuery =
                            from r in context.Reviews
                            join a in context.Authors on r.AuthorId equals a.AuthorId
                            where a.Name == authorName
                            select r;

                        searchQuery = searchQuery.OrderByDescending(x => x.CreationDate);
                        searchQuery = searchQuery.OrderByDescending(x => x.ReviewText);

                        WriteBookmarks(writer, searchQuery.ToList());
                    }

                    //Create log
                    var logsContext = new LogsContext();
                    Log log         = new Log
                    {
                        Date     = DateTime.Now,
                        QueryXml = CreateQueryXml(query)
                    };
                    logsContext.Logs.Add(log);
                    logsContext.SaveChanges();
                }

                writer.WriteEndElement();
                writer.WriteEndDocument();
            }
        }
Ejemplo n.º 13
0
 public LogsController(LogsContext context)
 {
     _context = context;
 }
Ejemplo n.º 14
0
 public EfRepository(LogsContext context)
 {
     _context = context ?? throw new NullReferenceException(nameof(context));
     _dbSet   = context.Set <TEntity>();
 }
Ejemplo n.º 15
0
        /// <summary>
        /// Moves a tenant from an apartment and updates the tenants tag.
        /// </summary>
        /// <param name="tenantOrTagId">Full name of tenant or tenants tag id. </param>
        /// <param name="apartmentId">Id of apartment to move in to,
        /// or an empty string to simply move out and not into another apartment.</param>
        /// <returns>True if operation was successful and changes were saved.</returns>
        public static bool MoveTenant(string tenantOrTagId, string apartmentId)
        {
            using (var context = new LogsContext())
            {
                try
                {
                    var tenant = context.Tenants
                                 .Where(t => t.Id == tenantOrTagId)
                                 .FirstOrDefault();

                    var tag = context.Tags
                              .Include(t => t.Tenant)
                              .Where(t => t.Id == tenantOrTagId || t.Tenant.Id == tenantOrTagId)
                              .FirstOrDefault();

                    if (tenant == null && tag != null)
                    {
                        tenant = tag.Tenant;
                    }
                    else if (tenant == null && tag == null)
                    {
                        // Tenant not found by tenant id or tag id.
                        return(false);
                    }

                    context.Database.BeginTransaction();
                    try
                    {
                        if (apartmentId == "")
                        {
                            // Tenant moved out. Remove tenant and tag.
                            context.Tenants.Remove(tenant);
                            if (tag != null)
                            {
                                context.Tags.Remove(tag);
                            }
                        }
                        else
                        {
                            // Tenant moved to another apartment.
                            // Set tenants new apartment id.
                            tenant.ApartmentId = apartmentId;

                            if (tag != null)
                            {
                                // Remove old tag if there was one.
                                context.Tags.Remove(tag);
                            }

                            // Set tenants new tag.
                            context.Add(
                                new Tag()
                            {
                                Tenant   = tenant,
                                TenantId = tenant.Id,
                                Id       = TagHelper.GetNextApartmentTag(apartmentId),
                            }
                                );
                        }

                        context.SaveChanges();
                        context.Database.CommitTransaction();
                    }
                    catch (Exception)
                    {
                        context.Database.RollbackTransaction();
                        return(false);
                    }
                }
                catch (Exception)
                {
                    return(false);
                }
            }

            return(true);
        }
Ejemplo n.º 16
0
        async void SimulateSplash()
        {
            LogsContext logsDB = new LogsContext();

            await logsDB.Database.EnsureCreatedAsync();

            string log_msg = GetText(Resource.String.logs_database_ensure_created) + System.Environment.NewLine + LogsContext.DatabasePathLogs;

            RunOnUiThread(() =>
            {
                Toast.MakeText(this, log_msg, ToastLength.Short).Show();
            });
            //await logsDB.Database.EnsureCreatedAsync();
            try
            {
                logsDB.AddLogRow(LogStatusesEnum.Info, GetText(Resource.String.start_app_msg), TAG);
            }
            catch (Exception ex)
            {
                string err_message = ex.Message;
                if (ex.InnerException != null)
                {
                    err_message += System.Environment.NewLine +
                                   ex.InnerException.Message + System.Environment.NewLine + System.Environment.NewLine +
                                   GetText(Resource.String.delete_the_log_database_file) + System.Environment.NewLine +
                                   LogsContext.DatabasePathLogs;
                }
                if (File.Exists(LogsContext.DatabasePathLogs))
                {
                    File.Delete(LogsContext.DatabasePathLogs);
                }

                await logsDB.Database.EnsureCreatedAsync();

                logsDB.AddLogRow(LogStatusesEnum.Error, err_message, TAG);
                logsDB.AddLogRow(LogStatusesEnum.Trac, GetText(Resource.String.start_app_msg), TAG);

                RunOnUiThread(() =>
                {
                    Toast.MakeText(this, err_message, ToastLength.Long).Show();
                });
            }

            DatabaseContext db = new DatabaseContext(gs.DatabasePathBase);

            db.Database.EnsureCreated();
            AddSplashText($"db patch: {gs.DatabasePathBase}");
#if DEBUG
            log_msg = GetText(Resource.String.deleting_outdated_logs);
            AddSplashText(log_msg);
            logsDB.Logs.RemoveRange(logsDB.Logs.Where(x => x.CreatedAt < DateTime.Now.AddDays(-7)).ToArray());

            if (reWriteDataBase)
            {
                log_msg = GetText(Resource.String.deleting_main_database_file);

                logsDB.AddLogRow(LogStatusesEnum.Warn, log_msg, TAG);
                AddSplashText(log_msg);
                File.Delete(gs.DatabasePathBase);
            }

            log_msg = GetText(Resource.String.initializing_db_demo_data);
            AddSplashText(log_msg);
            logsDB.AddLogRow(LogStatusesEnum.Trac, log_msg, TAG);
            await db.Database.EnsureCreatedAsync();

            try
            {
                _ = db.TelegramMessages.FirstOrDefault();
                _ = db.Users.FirstOrDefault();
                _ = db.Hardwares.FirstOrDefault();
                _ = db.CloudMessages.FirstOrDefault();
                _ = db.TelegramUsers.FirstOrDefault();
                _ = db.Ports.FirstOrDefault();
                _ = db.Scripts.FirstOrDefault();
                _ = db.Commands.FirstOrDefault();
                _ = db.Tasks.FirstOrDefault();
                _ = db.Reports.FirstOrDefault();
            }
            catch (Exception ex)
            {
                string err_message = ex.Message;
                if (ex.InnerException != null)
                {
                    err_message += System.Environment.NewLine +
                                   ex.InnerException.Message + System.Environment.NewLine + System.Environment.NewLine +
                                   GetText(Resource.String.delete_the_context_database_file) + System.Environment.NewLine +
                                   gs.DatabasePathBase;
                }
                File.Delete(gs.DatabasePathBase);
                await db.Database.EnsureCreatedAsync();

                RunOnUiThread(() =>
                {
                    Toast.MakeText(this, err_message, ToastLength.Long).Show();
                });
            }

            if (await db.Users.CountAsync() == 0)
            {
                log_msg = GetText(Resource.String.load_demo_users);
                logsDB.AddLogRow(LogStatusesEnum.Info, log_msg, TAG);
                AddSplashText(log_msg);
                await db.Users.AddAsync(new UserModel { Name = "Tom", Email = "*****@*****.**", Phone = "+79995554422", AlarmSubscriber = true, CommandsAllowed = true });

                await db.Users.AddAsync(new UserModel { Name = "Alice", Email = "*****@*****.**", Phone = "+75556664411", AlarmSubscriber = false, CommandsAllowed = true });

                await db.SaveChangesAsync();
            }
            if (await db.Hardwares.CountAsync() == 0)
            {
                log_msg = GetText(Resource.String.load_demo_hardwares);
                logsDB.AddLogRow(LogStatusesEnum.Info, log_msg, TAG);
                AddSplashText(log_msg);
                await db.Hardwares.AddAsync(new HardwareModel { Name = "DEMO 2", Address = "192.168.2.114", Password = "******", AlarmSubscriber = true, CommandsAllowed = true });

                await db.Hardwares.AddAsync(new HardwareModel { Name = "DEMO 1", Address = "192.168.0.14", Password = "******", AlarmSubscriber = false, CommandsAllowed = true });

                await db.SaveChangesAsync();

                for (int i = 0; i < 38; i++)
                {
                    await db.Ports.AddRangeAsync(new PortModel()
                    {
                        HardwareId = 2, PortNumb = i
                    }, new PortModel()
                    {
                        HardwareId = 1, PortNumb = i
                    });

                    await db.SaveChangesAsync();
                }
            }

            if (await db.Scripts.CountAsync() == 0)
            {
                await db.Scripts.AddAsync(new ScriptModel { Name = "Утро", TriggerPortState = true, TriggerPortId = 1 });

                await db.Scripts.AddAsync(new ScriptModel { Name = "Ушёл из дома", TriggerPortState = null });

                await db.SaveChangesAsync();
            }

            if (await db.Commands.CountAsync() == 0)
            {
                int scriptHardwareId = (await db.Scripts.FirstAsync()).Id;
                await db.Commands.AddAsync(new CommandModel { Name = "Выключить уличный свет", Ordering = 1, TypeCommand = TypesCommands.Controller, ScriptId = scriptHardwareId, Execution = 2, ExecutionParametr = "15:0;10:0" });

                await db.Commands.AddAsync(new CommandModel { Name = "Включить полив", Ordering = 2, TypeCommand = TypesCommands.Port, ScriptId = scriptHardwareId, Execution = 30, ExecutionParametr = "on" });

                await db.SaveChangesAsync();
            }
#endif

            using (StreamReader sr = new StreamReader(Assets.Open("bootstrap.min.css")))
            {
                using (StreamWriter sw = new StreamWriter(MyWebViewClient.bootstrap_min_css, false))
                {
                    await sw.WriteAsync(await sr.ReadToEndAsync());
                }
            }
            using (StreamReader sr = new StreamReader(Assets.Open("jquery.slim.min.js")))
            {
                using (StreamWriter sw = new StreamWriter(MyWebViewClient.jquery_slim_min_js, false))
                {
                    await sw.WriteAsync(await sr.ReadToEndAsync());
                }
            }
            using (StreamReader sr = new StreamReader(Assets.Open("popper.min.js")))
            {
                using (StreamWriter sw = new StreamWriter(MyWebViewClient.popper_min_js, false))
                {
                    await sw.WriteAsync(await sr.ReadToEndAsync());
                }
            }
            using (StreamReader sr = new StreamReader(Assets.Open("bootstrap.min.js")))
            {
                using (StreamWriter sw = new StreamWriter(MyWebViewClient.bootstrap_min_js, false))
                {
                    await sw.WriteAsync(await sr.ReadToEndAsync());
                }
            }
            using (StreamReader sr = new StreamReader(Assets.Open("onload.cf1.js")))
            {
                using (StreamWriter sw = new StreamWriter(MyWebViewClient.onload_cf1_js, false))
                {
                    await sw.WriteAsync(await sr.ReadToEndAsync());
                }
            }
            using (StreamReader sr = new StreamReader(Assets.Open("onload.cf2.js")))
            {
                using (StreamWriter sw = new StreamWriter(MyWebViewClient.onload_cf2_js, false))
                {
                    await sw.WriteAsync(await sr.ReadToEndAsync());
                }
            }
            using (StreamReader sr = new StreamReader(Assets.Open("onload.cf3.js")))
            {
                using (StreamWriter sw = new StreamWriter(MyWebViewClient.onload_cf3_js, false))
                {
                    await sw.WriteAsync(await sr.ReadToEndAsync());
                }
            }
            using (StreamReader sr = new StreamReader(Assets.Open("onload.cf4.js")))
            {
                using (StreamWriter sw = new StreamWriter(MyWebViewClient.onload_cf4_js, false))
                {
                    await sw.WriteAsync(await sr.ReadToEndAsync());
                }
            }
            using (StreamReader sr = new StreamReader(Assets.Open("onload.cf7.js")))
            {
                using (StreamWriter sw = new StreamWriter(MyWebViewClient.onload_cf7_js, false))
                {
                    await sw.WriteAsync(await sr.ReadToEndAsync());
                }
            }
            using (StreamReader sr = new StreamReader(Assets.Open("onload.cf9.js")))
            {
                using (StreamWriter sw = new StreamWriter(MyWebViewClient.onload_cf9_js, false))
                {
                    await sw.WriteAsync(await sr.ReadToEndAsync());
                }
            }
            using (StreamReader sr = new StreamReader(Assets.Open("onload.cf10.js")))
            {
                using (StreamWriter sw = new StreamWriter(MyWebViewClient.onload_cf10_js, false))
                {
                    await sw.WriteAsync(await sr.ReadToEndAsync());
                }
            }
            using (StreamReader sr = new StreamReader(Assets.Open("onload.pt.js")))
            {
                using (StreamWriter sw = new StreamWriter(MyWebViewClient.onload_pt_js, false))
                {
                    await sw.WriteAsync(await sr.ReadToEndAsync());
                }
            }
            using (StreamReader sr = new StreamReader(Assets.Open("onload.root.js")))
            {
                using (StreamWriter sw = new StreamWriter(MyWebViewClient.onload_root_js, false))
                {
                    await sw.WriteAsync(await sr.ReadToEndAsync());
                }
            }

            log_msg = GetText(Resource.String.finish_initializing_application);
            logsDB.AddLogRow(LogStatusesEnum.Info, log_msg, TAG);
            AddSplashText(log_msg);
            isCompleted = true;
            StartActivity(new Intent(Application.Context, typeof(HardwaresListActivity)));
            await db.DisposeAsync();

            await logsDB.DisposeAsync();

            LoadingTracert = null;
        }
Ejemplo n.º 17
0
        /// <summary>
        /// Sets up seed data in DBContext LogsContext.
        /// </summary>
        public static void Seed()
        {
            // Open database connection.
            using (var context = new LogsContext())
            {
                // Start transaction.
                context.Database.BeginTransaction();
                try
                {
                    #region Add Locations
                    var locations = new List <Location>
                    {
                        new Location()
                        {
                            Id = "UT"
                        },
                        new Location()
                        {
                            Id = "SOPRUM"
                        },
                        new Location()
                        {
                            Id = "TVÄTT"
                        },
                        new Location()
                        {
                            Id = "VAKT"
                        },

                        new Location()
                        {
                            Id = "0101"
                        },
                        new Location()
                        {
                            Id = "0102"
                        },
                        new Location()
                        {
                            Id = "0103"
                        },

                        new Location()
                        {
                            Id = "0201"
                        },
                        new Location()
                        {
                            Id = "0202"
                        },

                        new Location()
                        {
                            Id = "0301"
                        },
                        new Location()
                        {
                            Id = "0302"
                        },
                    };
                    context.AddRange(locations);
                    #endregion

                    #region Add Doors
                    // Add doors
                    var doors = new List <Door>
                    {
                        new Door()
                        {
                            Id = "UT01", LocationId = "UT", Description = "Dörr ut mot gatan."
                        },
                        new Door()
                        {
                            Id = "SOPRUM01", LocationId = "SOPRUM", Description = "Dörr mot soprummet."
                        },
                        new Door()
                        {
                            Id = "TVÄTT01", LocationId = "TVÄTT", Description = "Dörr mot tvättstugan."
                        },
                        new Door()
                        {
                            Id = "VAKT01", LocationId = "VAKT", Description = "Dörr mot vaktmästarens rum."
                        },

                        // doors for apartments 0101, 0102, 0103
                        new Door()
                        {
                            Id = "LGH0101", LocationId = "0101", Description = "Dörr till lägenhet."
                        },
                        new Door()
                        {
                            Id = "BLK0101", LocationId = "0101", Description = "Dörr till balkong/altan."
                        },
                        new Door()
                        {
                            Id = "LGH0102", LocationId = "0102", Description = "Dörr till lägenhet."
                        },
                        new Door()
                        {
                            Id = "BLK0102", LocationId = "0102", Description = "Dörr till balkong/altan."
                        },
                        new Door()
                        {
                            Id = "LGH0103", LocationId = "0103", Description = "Dörr till lägenhet."
                        },
                        new Door()
                        {
                            Id = "BLK0103", LocationId = "0103", Description = "Dörr till balkong/altan."
                        },

                        // ... 0201, 0202
                        new Door()
                        {
                            Id = "LGH0201", LocationId = "0201", Description = "Dörr till lägenhet."
                        },
                        new Door()
                        {
                            Id = "BLK0201", LocationId = "0201", Description = "Dörr till balkong/altan."
                        },
                        new Door()
                        {
                            Id = "LGH0202", LocationId = "0202", Description = "Dörr till lägenhet."
                        },
                        new Door()
                        {
                            Id = "BLK0202", LocationId = "0202", Description = "Dörr till balkong/altan."
                        },

                        // ... 0301, 0302
                        new Door()
                        {
                            Id = "LGH0301", LocationId = "0301", Description = "Dörr till lägenhet."
                        },
                        new Door()
                        {
                            Id = "BLK0301", LocationId = "0301", Description = "Dörr till balkong/altan."
                        },
                        new Door()
                        {
                            Id = "LGH0302", LocationId = "0302", Description = "Dörr till lägenhet."
                        },
                        new Door()
                        {
                            Id = "BLK0302", LocationId = "0302", Description = "Dörr till balkong/altan."
                        },
                    };
                    context.AddRange(doors);
                    #endregion

                    #region Add Events
                    var events = new List <Event>
                    {
                        new Event()
                        {
                            Id = "DÖUT", Description = "Dörr öppnad - utifrån."
                        },
                        new Event()
                        {
                            Id = "DÖIN", Description = "Dörr öppnad - inifrån"
                        },
                        new Event()
                        {
                            Id = "DS", Description = "Dörr stängd."
                        },
                        new Event()
                        {
                            Id = "FDUT", Description = "Fel dörr - Otillåtet försök att öppna en dörr utifrån."
                        },
                        new Event()
                        {
                            Id = "FDIN", Description = "Fel dörr - Otillåtet försök att öppna en dörr inifrån."
                        }
                    };
                    context.AddRange(events);

                    #endregion

                    #region Add Tenants
                    var tenants = new List <Tenant>
                    {
                        new Tenant()
                        {
                            Id = "00010101-0001", Name = "Liam Jönsson", ApartmentId = "0101"
                        },

                        new Tenant()
                        {
                            Id = "00010101-0002", Name = "Elias Petterson", ApartmentId = "0102"
                        },
                        new Tenant()
                        {
                            Id = "00010101-0003", Name = "Wilma Johansson", ApartmentId = "0102"
                        },

                        new Tenant()
                        {
                            Id = "00010101-0004", Name = "Alicia Sanchez", ApartmentId = "0103"
                        },
                        new Tenant()
                        {
                            Id = "00010101-0005", Name = "Aaron Sanchez", ApartmentId = "0103"
                        },

                        new Tenant()
                        {
                            Id = "00010101-0006", Name = "Olivia Erlander", ApartmentId = "0201"
                        },
                        new Tenant()
                        {
                            Id = "00010101-0007", Name = "William Erlander", ApartmentId = "0201"
                        },
                        new Tenant()
                        {
                            Id = "00010101-0008", Name = "Alexander Erlander", ApartmentId = "0201"
                        },
                        new Tenant()
                        {
                            Id = "00010101-0009", Name = "Astrid Erlander", ApartmentId = "0201"
                        },

                        new Tenant()
                        {
                            Id = "00010101-0010", Name = "Lucas Adolfsson", ApartmentId = "0202"
                        },
                        new Tenant()
                        {
                            Id = "00010101-0011", Name = "Ebba Adolfsson", ApartmentId = "0202"
                        },
                        new Tenant()
                        {
                            Id = "00010101-0012", Name = "Lilly Adolfsson", ApartmentId = "0202"
                        },

                        new Tenant()
                        {
                            Id = "00010101-0013", Name = "Ella Ahlström", ApartmentId = "0301"
                        },
                        new Tenant()
                        {
                            Id = "00010101-0014", Name = "Alma Alfredsson", ApartmentId = "0301"
                        },
                        new Tenant()
                        {
                            Id = "00010101-0015", Name = "Elsa Ahlström", ApartmentId = "0301"
                        },
                        new Tenant()
                        {
                            Id = "00010101-0016", Name = "Maja Ahlström", ApartmentId = "0301"
                        },

                        new Tenant()
                        {
                            Id = "00010101-0017", Name = "Noah Almgren", ApartmentId = "0302"
                        },
                        new Tenant()
                        {
                            Id = "00010101-0018", Name = "Adam Andersen", ApartmentId = "0302"
                        },
                        new Tenant()
                        {
                            Id = "00010101-0019", Name = "Kattis Backman", ApartmentId = "0302"
                        },
                        new Tenant()
                        {
                            Id = "00010101-0020", Name = "Oscar Chen", ApartmentId = "0302"
                        },

                        new Tenant()
                        {
                            Id = "00010101-0021", Name = "Vaktmästare", ApartmentId = "VAKT"
                        },
                    };
                    context.AddRange(tenants);
                    #endregion

                    #region Add Tags
                    var tags = new List <Tag>
                    {
                        new Tag()
                        {
                            Id = "0101A", TenantId = "00010101-0001"
                        },

                        new Tag()
                        {
                            Id = "0102A", TenantId = "00010101-0002"
                        },
                        new Tag()
                        {
                            Id = "0102B", TenantId = "00010101-0003"
                        },

                        new Tag()
                        {
                            Id = "0103A", TenantId = "00010101-0004"
                        },
                        new Tag()
                        {
                            Id = "0103B", TenantId = "00010101-0005"
                        },

                        new Tag()
                        {
                            Id = "0201A", TenantId = "00010101-0006"
                        },
                        new Tag()
                        {
                            Id = "0201B", TenantId = "00010101-0007"
                        },
                        new Tag()
                        {
                            Id = "0201C", TenantId = "00010101-0008"
                        },
                        new Tag()
                        {
                            Id = "0201D", TenantId = "00010101-0009"
                        },

                        new Tag()
                        {
                            Id = "0202A", TenantId = "00010101-0010"
                        },
                        new Tag()
                        {
                            Id = "0202B", TenantId = "00010101-0011"
                        },
                        new Tag()
                        {
                            Id = "0202C", TenantId = "00010101-0012"
                        },

                        new Tag()
                        {
                            Id = "0301A", TenantId = "00010101-0013"
                        },
                        new Tag()
                        {
                            Id = "0301B", TenantId = "00010101-0014"
                        },
                        new Tag()
                        {
                            Id = "0301C", TenantId = "00010101-0015"
                        },
                        new Tag()
                        {
                            Id = "0301D", TenantId = "00010101-0016"
                        },

                        new Tag()
                        {
                            Id = "0302A", TenantId = "00010101-0017"
                        },
                        new Tag()
                        {
                            Id = "0302B", TenantId = "00010101-0018"
                        },
                        new Tag()
                        {
                            Id = "0302C", TenantId = "00010101-0019"
                        },
                        new Tag()
                        {
                            Id = "0302D", TenantId = "00010101-0020"
                        },

                        new Tag()
                        {
                            Id = "VAKT01", TenantId = "00010101-0021"
                        },
                    };
                    context.AddRange(tags);
                    #endregion

                    #region Add Access
                    var accesses = new List <Access>
                    {
                        new Access()
                        {
                            TagId = "VAKT01", DoorId = "VAKT01"
                        },
                        // TODO add more...
                    };
                    #endregion

                    #region Add Logs
                    var logs = new List <LogEntry>
                    {
                        new LogEntry()
                        {
                            When = DateTime.ParseExact("23-10-20 10:07:00", "dd-MM-yy HH:mm:ss", null), TagId = "0201C", DoorId = "LGH0201", EventId = "DÖIN"
                        },                                                                                                                                        // william erlander tar in tidningen
                        new LogEntry()
                        {
                            When = DateTime.ParseExact("23-10-20 10:08:00", "dd-MM-yy HH:mm:ss", null), TagId = "0201C", DoorId = "LGH0201", EventId = "DÖUT"
                        },
                        new LogEntry()
                        {
                            When = DateTime.ParseExact("23-10-20 10:19:00", "dd-MM-yy HH:mm:ss", null), TagId = "0302A", DoorId = "LGH0302", EventId = "DÖIN"
                        },                                                                                                                                        // noah almgren slänger soporna
                        new LogEntry()
                        {
                            When = DateTime.ParseExact("23-10-20 10:19:00", "dd-MM-yy HH:mm:ss", null), TagId = "0201A", DoorId = "LGH0201", EventId = "DÖIN"
                        },                                                                                                                                        // olivia erlander går till jobbet
                        new LogEntry()
                        {
                            When = DateTime.ParseExact("23-10-20 10:20:00", "dd-MM-yy HH:mm:ss", null), TagId = "0302A", DoorId = "SOPRUM01", EventId = "DÖUT"
                        },
                        new LogEntry()
                        {
                            When = DateTime.ParseExact("23-10-20 10:20:33", "dd-MM-yy HH:mm:ss", null), TagId = "0201A", DoorId = "UT01", EventId = "DÖIN"
                        },
                        new LogEntry()
                        {
                            When = DateTime.ParseExact("23-10-20 10:21:00", "dd-MM-yy HH:mm:ss", null), TagId = "0302A", DoorId = "SOPRUM01", EventId = "DÖIN"
                        },
                        new LogEntry()
                        {
                            When = DateTime.ParseExact("23-10-20 10:22:00", "dd-MM-yy HH:mm:ss", null), TagId = "0302A", DoorId = "LGH0302", EventId = "DÖUT"
                        },
                        new LogEntry()
                        {
                            When = DateTime.ParseExact("23-10-20 10:55:00", "dd-MM-yy HH:mm:ss", null), TagId = "0202A", DoorId = "LGH0202", EventId = "DÖIN"
                        },                                                                                                                                        // lucas adolfson hämtar posten
                        new LogEntry()
                        {
                            When = DateTime.ParseExact("23-10-20 10:56:00", "dd-MM-yy HH:mm:ss", null), TagId = "0202A", DoorId = "LGH0202", EventId = "DÖUT"
                        },
                        new LogEntry()
                        {
                            When = DateTime.ParseExact("23-10-20 11:03:00", "dd-MM-yy HH:mm:ss", null), TagId = "0301D", DoorId = "LGH0301", EventId = "DÖIN"
                        },                                                                                                                                        // maja ahlström hämtar posten
                        new LogEntry()
                        {
                            When = DateTime.ParseExact("23-10-20 11:04:00", "dd-MM-yy HH:mm:ss", null), TagId = "0301D", DoorId = "LGH0301", EventId = "DÖUT"
                        },
                        new LogEntry()
                        {
                            When = DateTime.ParseExact("23-10-19 08:19:12", "dd-MM-yy HH:mm:ss", null), TagId = "0101A", DoorId = "BLK0101", EventId = "DÖIN"
                        },                                                                                                                                        // liam går ut på altanen
                        new LogEntry()
                        {
                            When = DateTime.ParseExact("23-10-19 08:22:45", "dd-MM-yy HH:mm:ss", null), TagId = "0201D", DoorId = "BLK0201", EventId = "DÖIN"
                        },                                                                                                                                        // astrid går ut på balkongen
                        new LogEntry()
                        {
                            When = DateTime.ParseExact("23-10-19 08:25:09", "dd-MM-yy HH:mm:ss", null), TagId = "0201D", DoorId = "BLK0201", EventId = "DÖUT"
                        },
                        new LogEntry()
                        {
                            When = DateTime.ParseExact("23-10-19 08:27:10", "dd-MM-yy HH:mm:ss", null), TagId = "0101A", DoorId = "BLK0101", EventId = "DÖUT"
                        },
                    };
                    context.AddRange(logs);
                    #endregion

                    context.SaveChanges();
                    context.Database.CommitTransaction();
                }
                catch (Exception)
                {
                    // Roll back transaction if there's any exception inserting data.
                    context.Database.RollbackTransaction();
                    return;
                }
            }
        }