Ejemplo n.º 1
0
        public static async Task GetTableDataCount(SepDbContext context, List <BlobMetadataExtended> blobsMetadata)
        {
            foreach (var blob in blobsMetadata)
            {
                switch (blob.Name)
                {
                case "airlines.csv":
                    blob.Count = await context.Airlines.CountAsync();

                    break;

                case "airports.csv":
                    blob.Count = await context.Airports.CountAsync();

                    break;

                case "flights.csv":
                    blob.Count = await context.Flights.CountAsync();

                    break;

                case "planes.csv":
                    blob.Count = await context.Planes.CountAsync();

                    break;

                case "weather.csv":
                    blob.Count = await context.Weather.CountAsync();

                    break;

                default:
                    break;
                }
            }
        }
Ejemplo n.º 2
0
 public EventsController(SepDbContext context, IMapper mapper)
 {
     this.mapper  = mapper;
     this.context = context;
 }
        //private readonly ContainerData _containerData;

        public AssignmentHub(SepDbContext context, IConfiguration Configuration)
        {
            _context = context;
            //_containerData = new ContainerData(Configuration);
        }
Ejemplo n.º 4
0
 public DbInitializer(DLUserManager userManager, DLRoleManager roleManager, SepDbContext _context)
 {
     this.userManager = userManager;
     this.roleManager = roleManager;
     this.context     = _context;
 }
 public AirlinesHub(SepDbContext context)
 {
     _context = context;
 }
Ejemplo n.º 6
0
 public FlightsHub(SepDbContext context)
 {
     _context = context;
 }
Ejemplo n.º 7
0
 public PlanesHub(SepDbContext context)
 {
     _context = context;
 }
        public static async Task Run([BlobTrigger("data-to-process/{name}", Connection = "AzureWebJobsStorage")] Stream myBlob, string name, ILogger log)
        {
            try
            {
                var connString = System.Environment.GetEnvironmentVariable("Sep6DbConnString");
                using (var db = new SepDbContext(connString))
                {
                    var csv       = new CsvConverter();
                    var tableName = "";
                    IEnumerable <object> data;

                    switch (name)
                    {
                    case "airports.csv":
                        tableName = "Airports";
                        data      = csv.GetAirportsData(myBlob);
                        break;

                    case "airlines.csv":
                        tableName = "Airlines";
                        data      = csv.GetAirlinesData(myBlob);
                        break;

                    case "flights.csv":
                        tableName = "Flights";
                        data      = csv.GetFlightsData(myBlob);
                        break;

                    case "planes.csv":
                        tableName = "Planes";
                        data      = csv.GetPlanesData(myBlob);
                        break;

                    case "weather.csv":
                        tableName = "Weather";
                        data      = csv.GetWeatherData(myBlob);
                        break;

                    default:
                        // if there is no name like we want exit task and log why
                        log.LogWarning($"File with name {name} is not supported");
                        return;
                    }

                    // load metadata
                    var metadata = await db.TablesMetadata.FindAsync(tableName);

                    try
                    {
                        // if metadata does not exist create one
                        if (metadata == null)
                        {
                            var meta = new TableMetadata
                            {
                                Table         = tableName,
                                UploadDate    = DateTime.Now,
                                EditDate      = DateTime.Now,
                                DataCount     = data.Count(),
                                DataMaxDate   = MetadataUtils.GetMaxDate(data, tableName),
                                DataMinDate   = MetadataUtils.GetMinDate(data, tableName),
                                DataProcessed = false
                            };

                            await db.TablesMetadata.AddAsync(meta);

                            await db.SaveChangesAsync();

                            // read new metadata
                            metadata = await db.TablesMetadata.FindAsync(tableName);
                        }
                        else
                        {
                            metadata.EditDate      = DateTime.Now;
                            metadata.DataCount     = data.Count();
                            metadata.DataMaxDate   = MetadataUtils.GetMaxDate(data, tableName);
                            metadata.DataMinDate   = MetadataUtils.GetMinDate(data, tableName);
                            metadata.DataProcessed = false;
                            await db.SaveChangesAsync();
                        }

                        // I`d like to change it to just adding distinct data
                        // but it would probably take waaay to much time to process that
                        // delete table before adding data
                        await db.Database.ExecuteSqlRawAsync($"TRUNCATE TABLE [{tableName}]");

                        // I tried to do it by generic but it is either way to hard or I am just stupid
                        // Anyway it took way too much time and time is precious
                        if (tableName == "Airports")
                        {
                            await db.Airports.AddRangeAsync(data.Cast <Airport>());
                        }
                        else if (tableName == "Airlines")
                        {
                            await db.Airlines.AddRangeAsync(data.Cast <Airline>());
                        }
                        else if (tableName == "Planes")
                        {
                            await db.Planes.AddRangeAsync(data.Cast <Plane>());
                        }
                        else if (tableName == "Flights")
                        {
                            await db.Flights.AddRangeAsync(data.Cast <Flight>());
                        }
                        else if (tableName == "Weather")
                        {
                            await db.Weather.AddRangeAsync(data.Cast <Weather>());
                        }

                        // data are processed
                        metadata.DataProcessed = true;
                        // save all changes
                        await db.SaveChangesAsync();
                    }
                    catch (Exception e)
                    {
                        if (metadata != null)
                        {
                            // set data processed to true if something wrong happen
                            metadata.DataProcessed = true;
                            await db.SaveChangesAsync();
                        }
                        log.LogError($"Error while saving [{tableName}] data to database ->" + e.Message);
                    }
                }
            }
            catch (Exception e)
            {
                log.LogError(e.Message);
            }
        }
Ejemplo n.º 9
0
        //private readonly ContainerData _containerData;

        public SharedHub(SepDbContext context, IConfiguration Configuration)
        {
            _context = context;
            //_containerData = new ContainerData(Configuration);
        }
Ejemplo n.º 10
0
 public PreferencesController(SepDbContext context, IMapper mapper)
 {
     this.context = context;
     this.mapper  = mapper;
 }
Ejemplo n.º 11
0
 public WeatherHub(SepDbContext context)
 {
     _context = context;
 }
Ejemplo n.º 12
0
 public AirportsHub(SepDbContext context)
 {
     _context = context;
 }