// 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()));
            }
        }
Example #3
0
        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");
            }
        }