public async Task <IActionResult> CreateEvent([FromBody] CreateEventResource eventResource) { if (!ModelState.IsValid) { return(BadRequest(ModelState)); } var myEvent = mapper.Map <CreateEventResource, Event>(eventResource); context.Events.Add(myEvent); await context.SaveChangesAsync(); var result = mapper.Map <Event, EventResource>(myEvent); return(Ok(result)); }
public async Task <IActionResult> CreateUser([FromBody] CreateUserResource userResource) { if (!ModelState.IsValid) { return(BadRequest(ModelState)); } var user = mapper.Map <CreateUserResource, User>(userResource); context.Users.Add(user); await context.SaveChangesAsync(); var result = mapper.Map <User, UserResource>(user); return(Ok(result)); }
public async Task <IActionResult> CreateRequest([FromBody] CreateRequestResource requestResource) { if (!ModelState.IsValid) { return(BadRequest(ModelState)); } var request = mapper.Map <CreateRequestResource, Request>(requestResource); context.Requests.Add(request); await context.SaveChangesAsync(); var result = mapper.Map <Request, RequestResource>(request); return(Ok(result)); }
public async Task <IActionResult> CreatePreference([FromBody] CreatePreferenceResource preferenceResource) { if (!ModelState.IsValid) { return(BadRequest(ModelState)); } var preference = mapper.Map <CreatePreferenceResource, Preference>(preferenceResource); context.Preferences.Add(preference); await context.SaveChangesAsync(); var result = mapper.Map <Preference, PreferenceResource>(preference); return(Ok(result)); }
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); } }