using System; using System.Collections.Generic; using System.Linq; using System.Text; using Npgsql; using System.Collections; using System.IO; using System.Data; namespace SafeMobileLib.DBmanagers { public class DBiconsManager : DBmanager { public DBiconsManager(string p_server, string p_dbname, string p_user, string p_password, string p_port) : base(p_server, p_dbname, p_user, p_password, p_port) { } /// /// Type 1 = place and 2 = units /// /// /// /// public sqlResponse Insert_Place_Icons(String IconName, byte[] Imagedata) { sqlResponse resp; string placetype_id = ""; try { using (NpgsqlConnection connection = new NpgsqlConnection()) { connection.ConnectionString = getConnectionString(); connection.Open(); string command = "insert into placetype (type_name) VALUES('" + IconName + "')"; using (NpgsqlCommand cmd = new NpgsqlCommand(command, connection)) { cmd.ExecuteNonQuery(); } command = "SELECT currval(pg_get_serial_sequence('placetype', 'type_id'))"; using (NpgsqlCommand cmd = new NpgsqlCommand(command, connection)) { placetype_id = cmd.ExecuteScalar().ToString(); } command = "INSERT INTO newicons(icontype,id,imagedata) SELECT @Type, @Id, @ImageData"; using (NpgsqlCommand cmd = new NpgsqlCommand(command, connection)) { cmd.Parameters.Add("@Type", NpgsqlTypes.NpgsqlDbType.Integer).Value = 1; cmd.Parameters.Add("@Id", NpgsqlTypes.NpgsqlDbType.Varchar).Value = placetype_id; cmd.Parameters.Add("@ImageData", NpgsqlTypes.NpgsqlDbType.Bytea).Value = Imagedata; cmd.ExecuteNonQuery(); } resp = sqlResponse.done; } } catch (Exception ee) { Console.WriteLine(ee.Message + " " + ee.StackTrace + " " + ee.Source, ConsoleColor.Red); resp = sqlResponse.SQLerror; } return resp; } /// /// Type 1 = place and 2 = units /// /// /// /// public sqlResponse Insert_Units_Icons(String IconName, byte[] Imagedata) { sqlResponse resp; string car_id = ""; try { using (NpgsqlConnection connection = new NpgsqlConnection()) { connection.ConnectionString = getConnectionString(); connection.Open(); string command = "SELECT MAX(id) FROM car"; using (NpgsqlCommand cmd = new NpgsqlCommand(command, connection)) { car_id = cmd.ExecuteScalar().ToString(); } Int64 carId = 1000; Int64.TryParse(car_id, out carId); // increment the new carId carId = carId + 1; command = "INSERT INTO car (id, name, pattern, displayed_name) " + " VALUES(" + (carId) + ",'" + IconName + "','custom_" + IconName.ToLower().Trim().Replace(' ', '_') + "','" + IconName + "')"; using (NpgsqlCommand cmd = new NpgsqlCommand(command, connection)) { cmd.ExecuteNonQuery(); } command = "INSERT INTO newicons(icontype,id,imagedata) SELECT @Type, @Id, @ImageData"; using (NpgsqlCommand cmd = new NpgsqlCommand(command, connection)) { cmd.Parameters.Add("@Type", NpgsqlTypes.NpgsqlDbType.Integer).Value = 2; cmd.Parameters.Add("@Id", NpgsqlTypes.NpgsqlDbType.Double).Value = carId; cmd.Parameters.Add("@ImageData", NpgsqlTypes.NpgsqlDbType.Bytea).Value = Imagedata; cmd.ExecuteNonQuery(); } resp = sqlResponse.done; } } catch (Exception ee) { Console.WriteLine(ee.Message + " " + ee.StackTrace + " " + ee.Source); resp = sqlResponse.SQLerror; } return resp; } public Byte[] Get_Place_Image(Int32 ID) { Byte[] productImageByte = null; try { using (NpgsqlConnection connection = new NpgsqlConnection()) { connection.ConnectionString = getConnectionString(); connection.Open(); string command = $"SELECT ImageData FROM newicons where id={ID} and icontype=1"; using (NpgsqlCommand cmd = new NpgsqlCommand(command, connection)) { productImageByte = (Byte[])cmd.ExecuteScalar(); } } } catch (Exception ee) { Console.WriteLine(ee.Message + " " + ee.StackTrace + " " + ee.Source); } return productImageByte; } public Byte[] Get_Unit_Image(Int32 ID) { Byte[] productImageByte = null; try { using (NpgsqlConnection connection = new NpgsqlConnection()) { connection.ConnectionString = getConnectionString(); connection.Open(); string command = $"SELECT ImageData FROM newicons where id={ID} and icontype=2"; using (NpgsqlCommand cmd = new NpgsqlCommand(command, connection)) { productImageByte = (Byte[])cmd.ExecuteScalar(); } } } catch (Exception ee) { Console.WriteLine(ee.Message + " " + ee.StackTrace + " " + ee.Source, ConsoleColor.Red); } return productImageByte; } //need to update all old stuff one existing ID public sqlResponse Delete_Units_Icons(Int32 ID, Int32 firstID) { sqlResponse resp; try { using (NpgsqlConnection connection = new NpgsqlConnection()) { connection.ConnectionString = getConnectionString(); connection.Open(); string command = $"UPDATE vehicle SET driver_id= {firstID} WHERE driver_id={ID}"; using (NpgsqlCommand cmd = new NpgsqlCommand(command, connection)) { cmd.ExecuteNonQuery(); } command = $"DELETE FROM car WHERE id={ID}"; using (NpgsqlCommand cmd = new NpgsqlCommand(command, connection)) { cmd.ExecuteNonQuery(); } command = $"DELETE FROM newicons WHERE id={ID}"; using (NpgsqlCommand cmd = new NpgsqlCommand(command, connection)) { cmd.ExecuteNonQuery(); } resp = sqlResponse.done; } } catch (Exception ee) { Console.WriteLine(ee.Message + " " + ee.StackTrace + " " + ee.Source); resp = sqlResponse.SQLerror; } return resp; } public List GetIconThemes() { List ret = new List(); try { using (NpgsqlConnection connection = new NpgsqlConnection()) { connection.ConnectionString = getConnectionString(); connection.Open(); using (NpgsqlCommand cmd = new NpgsqlCommand("SELECT id, name, prefix FROM icon_theme", connection)) { using (NpgsqlDataReader dr = cmd.ExecuteReader()) { while (dr.Read()) { IconTheme obj = new IconTheme(); obj.Id = (int)dr.GetInt32(0); obj.Name = dr.GetString(1); obj.Prefix = dr.GetString(2); ret.Add(obj); } } } } } catch (Exception ee) { Console.WriteLine(ee.Message + " " + ee.StackTrace + " " + ee.Source, ConsoleColor.Red); } return ret; } public List getAllPlaceIcons() { List ret = new List(); try { using (NpgsqlConnection connection = new NpgsqlConnection()) { connection.ConnectionString = getConnectionString(); connection.Open(); string command = "SELECT type_name, type_id from placetype ORDER by type_name"; using (NpgsqlCommand cmd = new NpgsqlCommand(command, connection)) { using (NpgsqlDataReader dr = cmd.ExecuteReader()) { while (dr.Read()) { Place obj = new Place(); obj.type = dr.GetString(0); obj.idx = dr.GetInt32(1); obj.pic = ""; ret.Add(obj); } } } } } catch (Exception ee) { Console.WriteLine(ee.Message + " " + ee.StackTrace + " " + ee.Source, ConsoleColor.Red); } return ret; } public List getAllUnitIcons() { List suidList = new List(); try { using (NpgsqlConnection connection = new NpgsqlConnection()) { connection.ConnectionString = getConnectionString(); connection.Open(); string command = "SELECT name, id, pattern, displayed_name from car ORDER by name"; using (NpgsqlCommand cmd = new NpgsqlCommand(command, connection)) { using (NpgsqlDataReader dr = cmd.ExecuteReader()) { while (dr.Read()) { Car obj = new Car(); obj.Name = dr.GetString(0); obj.idx = dr.GetInt32(1); obj.iconPattern = dr.IsDBNull(2) ? obj.Name.ToLower().Trim().Replace(' ', '_') : dr.GetString(2); obj.DisplayedName = dr.IsDBNull(3) ? obj.Name : dr.GetString(3); suidList.Add(obj); } } } } } catch (Exception ex) { Console.WriteLine(ex.ToString()); } return suidList; } } public class Place { public string name; public string desc { get; set; } public double lat { get; set; } public double lng { get; set; } public string type { get; set; } public string pic { get; set; } public string address { get; set; } public Int32 idx { get; set; } public Int32 useridx { get; set; } public String Name { get { return name; } } public String Type { get { return type; } } } public class IconTheme { private int id; public int Id { get { return id; } set { id = value; } } private string name; public string Name { get { return name; } set { name = value; } } private string prefix; public string Prefix { get { return prefix; } set { prefix = value; } } public IconTheme() { this.id = 0; this.name = ""; this.prefix = ""; } } public class PlaceIcons { private int id; public int Id { get { return id; } set { id = value; } } private string placename; public string Placename { get { return placename; } set { placename = value; } } private string pic; public string Pic { get { return pic; } set { pic = value; } } public PlaceIcons(int id, string placename, string pic) { this.id = id; this.placename = placename; this.pic = pic; } } public class UnitIcons { private int id; public int Id { get { return id; } set { id = value; } } private string unitname; public string Unitname { get { return unitname; } set { unitname = value; } } private string pic; public string Pic { get { return pic; } set { pic = value; } } public UnitIcons(int id, string unitname, string pic) { this.id = id; this.unitname = unitname; this.pic = pic; } } public class UnitIconsComparer : IComparer { public UnitIconsComparer() : base() { } int IComparer.Compare(object x, object y) { UnitIcons X = x as UnitIcons; UnitIcons Y = y as UnitIcons; return String.Compare(X.Unitname, Y.Unitname); } } public class PlaceIconsComparer : IComparer { public PlaceIconsComparer() : base() { } int IComparer.Compare(object x, object y) { PlaceIcons X = x as PlaceIcons; PlaceIcons Y = y as PlaceIcons; return String.Compare(X.Placename, Y.Placename); } } }