using System; using Npgsql; using NpgsqlTypes; using System.Configuration; using System.Collections.Specialized; using yavscModel.WorkFlow; using System.Web.Mvc; using System.Configuration.Provider; namespace WorkFlowProvider { public class NpgsqlContentProvider: ProviderBase, IContentProvider { public Estimate GetEstimate (long estimid) { throw new NotImplementedException (); } public void SetTitle (long estid, string newTitle) { using (NpgsqlConnection cnx = CreateConnection ()) { using (NpgsqlCommand cmd = cnx.CreateCommand ()) { cmd.CommandText = "update estimate set title = @tit where _id = @estid"; cmd.Parameters.Add ("@tit", newTitle); cmd.Parameters.Add ("@estid", estid); cnx.Open (); cmd.ExecuteNonQuery (); cnx.Close (); } } } public long Write (long estid, string desc, decimal ucost, int count, long productid) { using (NpgsqlConnection cnx = CreateConnection ()) { using (NpgsqlCommand cmd = cnx.CreateCommand ()) { cmd.CommandText = "insert into writtings (description, estimid) VALUES (@dscr,@estid) returning _id"; cmd.Parameters.Add ("@dscr", desc); // cmd.Parameters.Add ("@prdid", productid); // cmd.Parameters.Add("@ucost", ucost); // cmd.Parameters.Add("@mult", count); cmd.Parameters.Add("@estid", estid); cnx.Open (); long res = (long) cmd.ExecuteScalar (); cnx.Close (); return res; } } } public void SetDesc (long writid, string newDesc) { using (NpgsqlConnection cnx = CreateConnection ()) { using (NpgsqlCommand cmd = cnx.CreateCommand ()) { cmd.CommandText = "update writtings set description = @dscr where _id = @writid"; cmd.Parameters.Add ("@tit", newDesc); cmd.Parameters.Add ("@writid", writid); cnx.Open (); cmd.ExecuteNonQuery (); cnx.Close (); } } } public bool[] FinalStatuses { get { throw new NotImplementedException (); } } public string Order (IWFOrder c) { throw new NotImplementedException (); } public IContent GetBlob (string orderId) { throw new NotImplementedException (); } public int GetStatus (string orderId) { throw new NotImplementedException (); } public string[] StatusLabels { get { throw new NotImplementedException (); } } #region IDisposable implementation public void Dispose () { } #endregion public long CreateEstimate (string client, string title) { using (NpgsqlConnection cnx = CreateConnection ()) { using (NpgsqlCommand cmd = cnx.CreateCommand ()) { cmd.CommandText = "insert into estimate (title,username,applicationname) " + "values (@tit,@un,@app) returning _id"; cmd.Parameters.Add ("@tit", title); cmd.Parameters.Add ("@un", client); cmd.Parameters.Add("@app", ApplicationName); cnx.Open (); long res = (long)cmd.ExecuteScalar (); cnx.Close (); return res; } } } string applicationName=null; public string ApplicationName { get { return applicationName; } set { applicationName = value; } } string cnxstr = null; public override void Initialize (string name, NameValueCollection config) { if ( string.IsNullOrWhiteSpace(config ["connectionStringName"])) throw new ConfigurationErrorsException ("No name for Npgsql connection string found"); cnxstr = ConfigurationManager.ConnectionStrings [config ["connectionStringName"]].ConnectionString; applicationName = config["applicationName"] ?? "/"; } protected NpgsqlConnection CreateConnection () { return new NpgsqlConnection (cnxstr); } } }