예제 #1
0
        internal int InsertWellData(string wellLong, string wellLat, string village, string wellDepth = null, string waterLevel = null, string description = null, string valveReplacedBy = null, string valveReplacementDate = null, Image wellPhoto = null)
        {
            if (!hasInternet)
            {
                return(-1);
            }
            var insert = "INSERT INTO \"Wells\"( \"WellLng\", \"WellLat\", \"WellImage\",\"WellDepth\", \"WaterLevel\", \"Description\"," +
                         "\"Village\", \"ValveReplacedBy\", \"ValveReplacementDate\") VALUES " +
                         "(@wellLng, @wellLat, @wellPhoto, @welldepth, @waterlevel, @description, @village, @valveraplacedby, @valvereplacedate) RETURNING \"WellID\";";

            using (var pgsqlConnection = new NpgsqlConnection(connectionString))
            {
                pgsqlConnection.Open();
                using (var command = new NpgsqlCommand(insert, pgsqlConnection))
                {
                    command.Parameters.AddWithValue("@wellLng", wellLong);
                    command.Parameters.AddWithValue("@wellLat", wellLat);
                    command.Parameters.AddWithValue("@wellPhoto", wellPhoto == null ? null :ImageToDatabaseConverter.ImageToBase64(wellPhoto, wellPhoto.RawFormat));
                    command.Parameters.AddWithValue("@welldepth", wellDepth);
                    command.Parameters.AddWithValue("@waterlevel", waterLevel);
                    command.Parameters.AddWithValue("@description", description);
                    command.Parameters.AddWithValue("@village", village);
                    command.Parameters.AddWithValue("@valveraplacedby", valveReplacedBy);
                    command.Parameters.AddWithValue("@valvereplacedate", valveReplacementDate);
                    return(Convert.ToInt32(command.ExecuteScalar()));
                }
            }
        }
예제 #2
0
        internal List <Well> ReadWellData()
        {
            if (!hasInternet)
            {
                return(new List <Well>());
            }
            var select             = "SELECT * FROM \"Wells\";";
            var allLocationsSelect = "SELECT * FROM \"Location\"";
            var wells = new List <Well>();

            //Pass in Connection string
            using (var pgsqlConnection = new NpgsqlConnection(connectionString))
            {   //Open the connection(socket)
                pgsqlConnection.Open();
                //create dictionary array of strings
                Dictionary <string, Tuple <string, string, string> > locations = new Dictionary <string, Tuple <string, string, string> >();
                //pass in all location content, pass in connectionString
                using (var command = new NpgsqlCommand(allLocationsSelect, pgsqlConnection))
                {
                    //create execute reader from library
                    NpgsqlDataReader dr = command.ExecuteReader();
                    //read through the data
                    while (dr.Read())
                    {   //add list into dictionary array that is being read
                        locations.Add(dr["Village"].ToString(),
                                      new Tuple <string, string, string>(dr["Area"].ToString(), dr["District"].ToString(), dr["NumOfPeople"] == DBNull.Value ? null : dr["NumOfPeople"].ToString()));
                    }
                }
                //pass in all "wells" content, pass in connectionString
                using (var command = new NpgsqlCommand(select, pgsqlConnection))
                {   //Same as above
                    NpgsqlDataReader dr = command.ExecuteReader();
                    while (dr.Read())
                    {
                        var image        = dr["WellImage"].ToString();
                        var village      = dr["Village"].ToString();
                        var locationInfo = locations[village];

                        wells.Add(
                            new Well(
                                dr["WellID"] == DBNull.Value ? null : dr["WellID"].ToString(),
                                dr["WellLng"] == DBNull.Value ? null : dr["WellLng"].ToString(),
                                dr["WellLat"] == DBNull.Value ? null : dr["WellLat"].ToString(),
                                string.IsNullOrWhiteSpace(image) ?
                                null :
                                ImageToDatabaseConverter.Base64ToImage(image),
                                dr["Description"] == DBNull.Value ? null : dr["Description"].ToString(),
                                dr["WellDepth"] == DBNull.Value ? null : dr["WellDepth"].ToString(),
                                dr["WaterLevel"] == DBNull.Value ? null : dr["WaterLevel"].ToString(),
                                village,
                                locationInfo.Item1,             //area
                                locationInfo.Item2,             //district
                                locationInfo.Item3,             //number of people
                                dr["ValveReplacedBy"] == DBNull.Value ? null : dr["ValveReplacedBy"].ToString(),
                                dr["ValveReplacementDate"] == DBNull.Value ? null : dr["ValveReplacementDate"].ToString()
                                ));
                    }
                }
            }
            return(wells);
        }
예제 #3
0
        internal void UpdateWellData(Well well)
        {
            if (!hasInternet)
            {
                return;
            }
            var update = "UPDATE \"Wells\" SET \"WellLng\" = @wellLng, \"WellLat\" = @wellLat, \"WellImage\" = @wellPhoto, " +
                         "\"WellDepth\" = @welldepth, \"Description\" = @description, \"WaterLevel\" = @waterlevel, " +
                         "\"Village\" = @village, \"ValveReplacedBy\" = @valvereplacedby";

            if (!string.IsNullOrWhiteSpace(well.ValveReplacementDate))
            {
                update += ", \"ValveReplacementDate\" = to_date(@valvereplacedate, 'DD/MM/YYYY')";
            }
            update += " WHERE \"WellID\" = @wellId;";

            using (var pgsqlConnection = new NpgsqlConnection(connectionString))
            {
                pgsqlConnection.Open();
                using (var command = new NpgsqlCommand(update, pgsqlConnection))
                {
                    command.Parameters.AddWithValue("@wellid", well.WellId);
                    command.Parameters.AddWithValue("@wellLng", well.Longitude);
                    command.Parameters.AddWithValue("@wellLat", well.Latitude);
                    command.Parameters.AddWithValue("@wellPhoto", well.HasValidImage ? ImageToDatabaseConverter.ImageToBase64(well.WellImage, well.WellImage.RawFormat) : null);
                    command.Parameters.AddWithValue("@welldepth", well.Depth);
                    command.Parameters.AddWithValue("@waterlevel", well.WaterLevel);
                    command.Parameters.AddWithValue("@description", well.Description);
                    command.Parameters.AddWithValue("@village", well.Village);
                    command.Parameters.AddWithValue("@valvereplacedby", well.ValveReplacedBy);
                    command.Parameters.AddWithValue("@valvereplacedate", well.ValveReplacementDate);
                    command.ExecuteNonQuery();
                }
            }
        }