// POST api/<controller> public void PostDip(int drillSiteId, int readingId, string dip) { try { using (var db = new DsmContext()) { // retrieve requested "current" reading var currentReading = db.DepthReadings.FirstOrDefault(x => x.Id == readingId); var drillSite = db.DrillSites.Include(x => x.DepthReadings).FirstOrDefault(x => x.Id == drillSiteId); if (currentReading == null || drillSite == null) { Console.WriteLine("Could not find the specified reading or drill site"); return; } currentReading.Dip = Convert.ToDouble(dip); // TODO - handle invalid input var config = db.Config.FirstOrDefault() ?? new DrillConfigModel(); TrickleDownTrustWorthiness(drillSite, currentReading, config.NumberOfRecordsToQueryDip); db.SaveChanges(); } } catch (SqliteException) { // do not want to output exception details to user (for security reasons) Console.WriteLine("Failed - a database related exception occurred"); } }
/// <summary> /// Used to retrieve Depth Readings that /// correspond with a particular Drill Site /// Usage: GET api/<controller>/<site_id> /// </summary> /// <param name="id">Drill site ID</param> /// <returns>Depth Readings associated with the Drill Site</returns> public IEnumerable <string> GetDepthReadings(int id) { using (var db = new DsmContext()) { var drillSite = db.DrillSites.Include(x => x.DepthReadings).FirstOrDefault(x => x.Id == id); return(drillSite == null ? new[] { "no result" } : drillSite.DepthReadings.OrderBy(x => x.Id).Select(x => x.Serialize())); } }
public ActionResult Index() { var drillSites = new List <DrillSiteModel>(); try { using (var db = new DsmContext()) { db.TryCreateDatabase(); drillSites = db.DrillSites.Include(x => x.DepthReadings).ToList(); } } catch (SqliteException ex) { Console.WriteLine(ex); } return(View(drillSites)); }
public ActionResult GenerateData() { // create random data var drillSites = DataGeneratorService.GenerateDrillSitesWithDepthReadings(); // try insert data into DB try { using (var db = new DsmContext()) { db.TryCreateDatabase(); // remove all data var allDepthReadings = from readings in db.DepthReadings select readings; db.DepthReadings.RemoveRange(allDepthReadings); var allDrillSites = from sites in db.DrillSites select sites; db.DrillSites.RemoveRange(allDrillSites); db.SaveChanges(); // add newly generated data foreach (var drillSite in drillSites.Select(x => x.DrillSiteModel)) { var drillSiteDbReference = db.Add(drillSite); db.SaveChanges(); var depthReadings = DataGeneratorService.GenerateDepthReadings( drillSite.CollarDip, drillSite.CollarAzimuth); foreach (var depthReading in depthReadings) { drillSiteDbReference.Entity.DepthReadings.Add(depthReading); db.SaveChanges(); } } } } catch (SqliteException ex) { // TODO - consider redirecting to a "failed to create/insert data" page Console.WriteLine("Failed to insert generated drill site & depth readings data into database", ex); } return(RedirectToAction("Index", "Home")); }
/// <summary> /// Retrieve singleton instance of config service - on first call /// GetInstance will attempt to retrieve config from database, if /// config does not exist in database, an instance is created and /// inserted into the database. /// </summary> /// <returns>Database config service instance</returns> public static DrillConfigService GetInstance() { if (_instance != null) { return(_instance); // already instantiated } // create default instance _instance = new DrillConfigService(); // attempt to read config from database try { using (var db = new DsmContext()) { var config = db.Config.FirstOrDefaultAsync().Result; if (config == null) // no config exists in database { // insert default instance db.Config.Add(_instance.DrillConfigModel); db.SaveChanges(); } else { // config exists, create service instance using config data _instance = new DrillConfigService(config); } } } catch (SqliteException ex) { Console.WriteLine("Failed to retrieve or write config to database", ex); } catch (AggregateException ex) { Console.WriteLine("Failed to retrieve or write config to database", ex); } return(_instance); }
// POST api/<controller> public void PostDepth(int drillSiteId, int readingId, string depth) { try { using (var db = new DsmContext()) { // retrieve requested "current" reading var currentReading = db.DepthReadings.FirstOrDefault(x => x.Id == readingId); if (currentReading == null) { Console.WriteLine("Could not find the specified reading"); return; } currentReading.Depth = Convert.ToDouble(depth); // TODO - handle invalid input db.SaveChanges(); } } catch (SqliteException) { // do not want to output exception details to user (for security reasons) Console.WriteLine("Failed - a database related exception occurred"); } }