diff --git a/.gitignore b/.gitignore
index 7c41ebe4..caa86261 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,25 +1,18 @@
-*/bin
-*/obj
-plugins/*/bin
-plugins/*/obj
-*.userprefs
-packages
-web/avatars
-web/users
-dist
-bower_components
-node_modules
-svg
-web/bfiles
-web/App_Themes/style.totem.css
-web/Web.Debug.config
-web/Web.Release.config
-web/Web.Lua.config
-web/Web.LuaDebug.config
-web/Web.TotemPre.config
-web/Web.Totemprod.config
-.nuget
-.gitignore
-web/Web.*.config
+.gitignore
+appsettings.*.json
+.idea/
+.vscode/
+YavscWeb.userprefs
+bin/
+bower_components/
+node_modules/
+docfx_project/
+debugcmd
+debugcode/
+kestrel*.pid
+kestrel*.log
+scaffold.cmds
+DataProtection-Keys
+RSA-Params.json
diff --git a/.nuget/packages.config b/.nuget/packages.config
new file mode 100644
index 00000000..eaeeed58
--- /dev/null
+++ b/.nuget/packages.config
@@ -0,0 +1,4 @@
+
+
+
+
\ No newline at end of file
diff --git a/Banner.xcf b/Banner.xcf
deleted file mode 100644
index 10ccdb14..00000000
Binary files a/Banner.xcf and /dev/null differ
diff --git a/ChangeLog b/ChangeLog
deleted file mode 100644
index fc6a58e4..00000000
--- a/ChangeLog
+++ /dev/null
@@ -1,115 +0,0 @@
-2015-12-30 Paul Schneider
-
- * .gitignore: ignore ma config LuaDebug
-
-2015-12-24 Paul Schneider
-
- * Makefile:
- * Yavsc.sln: ajout d'une configuration de debuggage pour Lua
-
-2015-12-23 Paul Schneider
-
- * .gitignore: une typo
-
-2015-12-15 Paul Schneider
-
- * Makefile: utilise le fichier de conf généré pour débugger.
-
- * README.md: maj priorités
-
-2015-12-09 Paul Schneider
-
- * README.md: mise à jour des priorités
-
-2015-12-01 Paul Schneider
-
- * README.md: mise à jour priorités
-
-2015-12-01 Paul Schneider
-
- * README.md: mise à jour des priorités
-
-2015-12-01 Paul Schneider
-
- * Makefile: fixe le déploiement multiple en un appel
-
-2015-12-01 Paul Schneider
-
- * README.md: mise à jour des priorités
-
-2015-11-30 Paul Schneider
-
- * .gitignore: ignorer ma config
-
- * Features.md: précisions sur les rôles
-
-2015-11-30 Paul Schneider
-
- * README.md: mise à jour des priorités
-
- * Yavsc.sln: ajout du fichier "Features.md" à la solution
-
-2015-11-30 Paul Schneider
-
- * Makefile: Fixe: ne pas déployer sans hôte de destination
- Ajoute: le déployement de tous des sites en prod, avec la
- cible `syncall`
-
-
-2015-11-26 Paul Schneider
-
- * Makefile:
- * Yavsc.sln: nouvelles configurations de déploiement
-
-2015-11-23 Paul Schneider
-
- * .gitignore: ignorer les configuration des pré et prod totem.
-
-2015-11-21 Paul Schneider
-
- * Makefile: retour au débuggage de la copie de travaille, et
- pas de la déployée
-
-2015-11-19 Paul Schneider
-
- * .gitignore: ignore my new config transformation sources
-
- * Makefile: instead of `deploy`, start Xsp, in the `dist`
- folder
-
- * Yavsc.sln: Lua config
-
-2015-11-18 Paul Schneider
-
- * Makefile: adds my deployment targets
-
-2015-11-17 Paul Schneider
-
- * Makefile: adds nuget targets
-
-2015-11-14 Paul Schneider
-
- * Makefile: Fixes the `clean` target
-
- * README.md: WIP Skills
-
-2015-11-11 Paul Schneider
-
- * README.md: \n @ EOF
-
- * Yavsc.sln: remove the `booking` project from the solution
-
- * Edit.aspx: cleaning
-
-2015-11-08 Paul Schneider
-
- * README.md: Adds a TODO list
-
- * Yavsc.sln: do not build the MVC 5.1 project, that does not
- run under mono.
-
- * ChangeLog: this file should not be maintained as a git
- respository legacy file
-
- * .gitignore: this file should not be maintained under git
-
diff --git a/Features.md b/Features.md
deleted file mode 100644
index 7dadee7a..00000000
--- a/Features.md
+++ /dev/null
@@ -1,55 +0,0 @@
-# Fonctionalités
-
-# Une publication des talent du site
-
-Des notions de *préstataire*, d'*activité* et de *compténces*
-dirigent maintenant le "link juice":
-
-Sont publiées en home page les descriptions en temps réel des activités soutenues par au mois un préstataire enregistré, ayant déclaré son statut de préstataire par un choix parmis les activités configurée par l'administration du site.
-
-Le prestataire peut détailler ses compétences, en leur donnant une côte de départ, qui sera modifiée par les clients de ce prestataire, une fois le service rendu.
-
-Les membres du FrontOffice sont seuls, avec les administrateurs tout puissants, à pouvoir éditer les activités et compétences du site.
-Les préstataires ne font que choisir parmis les compétences liées à l'activité qu'il auront choisi.
-
-# Une reservation de préstataire
-
-Le préstataire peut renseigner un identifiant de calendrier Google.
-
-Dans ce cas, à la proposition de la reservation de ses services,
-on peut verifier (à l'aide d'un algorythme à rendre modulaire)
-sa disponibilité et présenter au client un peu plus de confiance
-dans le succès de sa demande de reservation.
-
-La fiche prestataire presente aussi, le cas échéant, un lien vers son blog (à l'existence de billets publiques).
-
-Le processus de reservation d'un préstataire peut être conduit par un utilisateur anonyme (non enregistré sur le site) jusqu'à la validation de son panier de commandes.
-
-## Un blog spot
-
-Une fois endossé le rôle de `Blogger`, On peut poster des billets, avec une mise en forme stockée à la Markdown en base de donnée,
-en WYSIWYG depuis l'interface Web grâce à un fork de hallo.js .
-
-La syntaxe a été etendue pour pouvoir publier, en tant qu'objet du document, des vidéos et fichiers audio.
-
-On peut attacher toute sorte de document à chacun des billets.
-
-# Un système de facturation
-
-Pour l'instant, il est réduit au minimum : un édition d'un devis, qui à la publicaton en LaTeX ou Pdf est présenté comme une facture.
-
-## Peut-être à desactiver ? à rendre optionnel au niveau administratif et utilisateur : le systeme de fichiers utilisateur
-
-Tout utilisateur enregistré dispose aussi du moyen de publier des applications de son choix, via son espace de fichiers perso ou ses billet de blog.
-
-# La conformité légale
-
-Hors mis les mentions légales concernant la responsabilité du site,
-un système d'avertissement unique par utilisateur à été mis en place.
-
-Il a été mis en oeuvre pour prévenir tout nouvel utilisateur, qu'en parcourant ce site,
- il accèpte le stockage de données persistantes sur son ordinateur, appélées "cookies"
- destinées à lui faciliter son expérience du site ...
-
-Il reste à prévenir de l'utilisation des liens vers les réseaux sociaux (pour l'instant, seulement Google Plus).
-
diff --git a/ITContentProvider/ITCPNpgsqlProvider.cs b/ITContentProvider/ITCPNpgsqlProvider.cs
deleted file mode 100644
index dfbed2b6..00000000
--- a/ITContentProvider/ITCPNpgsqlProvider.cs
+++ /dev/null
@@ -1,139 +0,0 @@
-using System;
-using Yavsc;
-using Npgsql;
-using Yavsc.Model;
-
-namespace Yavsc
-{
- ///
- /// ITCP npgsql provider.
- ///
- public class ITCPNpgsqlProvider : NpgsqlContentProvider
- {
- /* TODO
-
- int NewProject(string name, string desc, string ownedId);
- void AddDevRessource (int prjId, string userName);
- int NewTask(int projectId, string name, string desc);
- void SetProjectName(int projectId, string name);
- void SetProjectDesc(int projectId, string desc);
- void SetTaskName(int taskId, string name);
- void SetStartDate(int taskId, DateTime d);
- void SetEndDate(int taskId, DateTime d);
- void SetTaskDesc(int taskId, string desc);
- void NewRelease(int projectId, string Version);
- */
-
-///
-/// Initializes a new instance of the class.
-///
- public ITCPNpgsqlProvider ()
- {
- }
- ///
- /// Gets the project info.
- ///
- /// The project info.
- /// Projectid.
- public ProjectInfo GetProjectInfo(int projectid)
- {
- throw new NotImplementedException ();
- }
-
- ///
- /// Searchs the project.
- ///
- /// The project.
- /// Pi.
- public ProjectInfo[] SearchProject(ProjectInfo pi)
- {
- throw new NotImplementedException ();
- }
-
- ///
- /// News the task.
- ///
- /// The task.
- /// Project identifier.
- /// Name.
- /// Desc.
- public int NewTask (int projectId, string name, string desc)
- {
- throw new System.NotImplementedException ();
- }
-
- ///
- /// Sets the name of the task.
- ///
- /// Task identifier.
- /// Name.
- public void SetTaskName (int taskId, string name)
- {
- throw new System.NotImplementedException ();
- }
-
- ///
- /// Sets the start date.
- ///
- /// Task identifier.
- /// D.
- public void SetStartDate (int taskId, DateTime d)
- {
- throw new System.NotImplementedException ();
- }
-
- ///
- /// Sets the end date.
- ///
- /// Task identifier.
- /// D.
- public void SetEndDate (int taskId, DateTime d)
- {
- throw new System.NotImplementedException ();
- }
-
- ///
- /// Removes the project.
- ///
- /// Prj identifier.
- public void RemoveProject (int prjId)
- {
- using (var cnx = CreateConnection()) {
- cnx.Open ();
- using (NpgsqlCommand cmd = cnx.CreateCommand()) {
- cmd.CommandText = "delete from projets where id = @id";
- cmd.Parameters.AddWithValue ("@id", prjId);
- cmd.ExecuteNonQuery();
- }
- cnx.Close ();
- }
- }
-
- ///
- /// News the project.
- ///
- /// The project.
- /// Name.
- /// Desc.
- /// Owner identifier.
- public int NewProject (string name, string desc, string ownerId)
- {
- int id = 0;
- using (var cnx = CreateConnection()) {
- cnx.Open ();
- using (NpgsqlCommand cmd = cnx.CreateCommand()) {
- cmd.CommandText = "insert into projets (name,managerid,ApplicatonName,prdesc) values (@name,@mid,@appname,@pdesc)";
- cmd.Parameters.AddWithValue ("@name", name);
- cmd.Parameters.AddWithValue ("@mid", ownerId);
- cmd.Parameters.AddWithValue ("@appname", ApplicationName);
- cmd.Parameters.AddWithValue ("@desc", desc);
- id = (int)cmd.ExecuteScalar ();
- }
- cnx.Close ();
- }
- return id;
- }
-
- }
-}
-
diff --git a/ITContentProvider/ITContentProvider.csproj b/ITContentProvider/ITContentProvider.csproj
deleted file mode 100644
index 84c3fa79..00000000
--- a/ITContentProvider/ITContentProvider.csproj
+++ /dev/null
@@ -1,103 +0,0 @@
-
-
-
- Debug
- AnyCPU
- 8.0.30703
- 2.0
- {9D7D892E-9B77-4713-892D-C26E1E944119}
- Library
- ITContentProvider
- ITContentProvider
- v4.5.1
-
-
- true
- full
- false
- bin\Debug
- DEBUG;
- prompt
- 4
- false
- bin\Debug\ITContentProvider.xml
-
-
- full
- true
- bin\Release
- prompt
- 4
- false
-
-
- false
- bin\Lua
- 4
-
-
- false
- bin\TotemPre
- 4
-
-
- false
- bin\TotemProd
- 4
-
-
- false
- bin\YavscPre
- 4
-
-
- false
- bin\Yavsc
- 4
-
-
- false
- bin\Lua
- 4
-
-
-
-
-
-
-
-
- ..\packages\Npgsql.3.0.5\lib\net45\Npgsql.dll
-
-
-
-
-
-
-
-
-
-
-
- {68F5B80A-616E-4C3C-91A0-828AA40000BD}
- YavscModel
-
-
- {821FF72D-9F4B-4A2C-B95C-7B965291F119}
- NpgsqlContentProvider
-
-
-
-
-
-
-
-
-
- True
-
-
-
-
-
-
\ No newline at end of file
diff --git a/ITContentProvider/Model/NewProjectModel.cs b/ITContentProvider/Model/NewProjectModel.cs
deleted file mode 100644
index 369aa5f1..00000000
--- a/ITContentProvider/Model/NewProjectModel.cs
+++ /dev/null
@@ -1,38 +0,0 @@
-using System;
-using System.ComponentModel.DataAnnotations;
-using System.ComponentModel;
-
-namespace Yavsc.Model
-{
- ///
- /// New project model.
- ///
- public class NewProjectModel
- {
- ///
- /// Gets or sets the name.
- ///
- /// The name.
- [DisplayName("Nom du projet")]
- [Required()]
- public string Name { get; set; }
-
- ///
- /// Gets or sets the manager.
- ///
- /// The manager.
- [DisplayName("Manager du projet")]
- [Required]
- public string Manager { get; set; }
-
- ///
- /// Gets or sets the description.
- ///
- /// The description.
- [DisplayName("Description du projet")]
- [Required]
- public string Description { get; set; }
-
- }
-}
-
diff --git a/ITContentProvider/ProjectInfo.cs b/ITContentProvider/ProjectInfo.cs
deleted file mode 100644
index af18ace0..00000000
--- a/ITContentProvider/ProjectInfo.cs
+++ /dev/null
@@ -1,53 +0,0 @@
-using System;
-using Yavsc;
-
-namespace Yavsc.Model
-{
- ///
- /// Project info.
- ///
- public class ProjectInfo
- {
- ///
- /// Gets or sets the name.
- ///
- /// The name.
- string Name { get; set; }
- ///
- /// Gets or sets the licence.
- ///
- /// The licence.
- string Licence { get; set; }
- ///
- /// Gets or sets the BB description.
- ///
- /// The BB description.
- string BBDescription { get; set; }
- ///
- /// Gets or sets the start date.
- ///
- /// The start date.
- DateTime StartDate { get; set; }
- ///
- /// Gets or sets the prod version.
- ///
- /// The prod version.
- string ProdVersion { get; set; }
- ///
- /// Gets or sets the stable version.
- ///
- /// The stable version.
- string StableVersion { get; set; }
- ///
- /// Gets or sets the testing version.
- ///
- /// The testing version.
- string TestingVersion { get; set; }
- ///
- /// Gets or sets the web site.
- ///
- /// The web site.
- string WebSite { get; set; }
- }
-}
-
diff --git a/ITContentProvider/Properties/AssemblyInfo.cs b/ITContentProvider/Properties/AssemblyInfo.cs
deleted file mode 100644
index 1b2d13d3..00000000
--- a/ITContentProvider/Properties/AssemblyInfo.cs
+++ /dev/null
@@ -1,22 +0,0 @@
-using System.Reflection;
-using System.Runtime.CompilerServices;
-
-// Information about this assembly is defined by the following attributes.
-// Change them to the values specific to your project.
-[assembly: AssemblyTitle ("ITContentProvider")]
-[assembly: AssemblyDescription ("")]
-[assembly: AssemblyConfiguration ("")]
-[assembly: AssemblyCompany ("")]
-[assembly: AssemblyProduct ("")]
-[assembly: AssemblyCopyright ("Paul Schneider")]
-[assembly: AssemblyTrademark ("")]
-[assembly: AssemblyCulture ("")]
-// The assembly version has the format "{Major}.{Minor}.{Build}.{Revision}".
-// The form "{Major}.{Minor}.*" will automatically update the build and revision,
-// and "{Major}.{Minor}.{Build}.*" will update just the revision.
-[assembly: AssemblyVersion ("1.0.*")]
-// The following attributes are used to specify the signing key for the assembly,
-// if desired. See the Mono documentation for more information about signing.
-//[assembly: AssemblyDelaySign(false)]
-//[assembly: AssemblyKeyFile("")]
-
diff --git a/ITContentProvider/Views/Modules/IT/Index.aspx b/ITContentProvider/Views/Modules/IT/Index.aspx
deleted file mode 100644
index 985fb35a..00000000
--- a/ITContentProvider/Views/Modules/IT/Index.aspx
+++ /dev/null
@@ -1,5 +0,0 @@
-<%@ Page Title="Front office" Language="C#" MasterPageFile="~/Models/App.master" Inherits="System.Web.Mvc.ViewPage" %>
-
-
-
-
diff --git a/ITContentProvider/packages.config b/ITContentProvider/packages.config
deleted file mode 100644
index 440f9cbc..00000000
--- a/ITContentProvider/packages.config
+++ /dev/null
@@ -1,4 +0,0 @@
-
-
-
-
\ No newline at end of file
diff --git a/Makefile b/Makefile
deleted file mode 100644
index 900840b9..00000000
--- a/Makefile
+++ /dev/null
@@ -1,124 +0,0 @@
-
-VERSION=1.1
-CONFIG=Debug
-LDYDESTDIR=dist/web/$(CONFIG)
-COPYUNCHANGED="false"
-SHELL=/bin/bash
-
-
-HOST_rsync_Debug=lua.pschneider.fr
-DESTDIR_rsync_Debug=/srv/www/yavscdev
-
-HOST_rsync_Release=lua.pschneider.fr
-DESTDIR_rsync_Release=/srv/www/yavscpre
-
-HOST_rsync_Lua=lua.pschneider.fr
-DESTDIR_rsync_Lua=/srv/www/lua
-
-HOST_rsync_LuaDebug=lua.pschneider.fr
-DESTDIR_rsync_LuaDebug=/srv/www/lua
-
-HOST_rsync_YavscPre=lua.pschneider.fr
-DESTDIR_rsync_YavscPre=/srv/www/yavscpre
-
-HOST_rsync_Yavsc=lua.pschneider.fr
-DESTDIR_rsync_Yavsc=/srv/www/yavsc
-
-HOST_rsync_TotemPre=lua.pschneider.fr
-DESTDIR_rsync_TotemPre=/srv/www/totempre
-
-HOST_rsync_TotemProd=lua.pschneider.fr
-DESTDIR_rsync_TotemProd=/srv/www/totemprod
-
-DOCASSBS=NpgsqlBlogProvider.dll WorkFlowProvider.dll Yavsc.WebControls.dll ITContentProvider.dll NpgsqlMRPProviders.dll Yavsc.dll SalesCatalog.dll YavscModel.dll
-
-RSYNCCMD=rsync -ravu --chown=www-data:www-data
-
-all: deploy
-
-ddir:
- mkdir -p $(LDYDESTDIR)
-
-.PHONY: build
-build :
- echo "Building $(CONFIG) ..."
- xbuild /p:Configuration=$(CONFIG) /t:Build Yavsc.sln
-
-.PHONY: deploy
-deploy: ddir build
- rm -rf $(LYDESTDIR)
- xbuild /p:Configuration=$(CONFIG) /p:SkipCopyUnchangedFiles=$(COPYUNCHANGED) /p:DeployDir=../$(LDYDESTDIR) /t:Deploy web/Yavsc.csproj
-
-
-build_%: CONFIG = "$(subst build_,,$@)"
-
-build_%: echo "Building $(CONFIG) ..."
- xbuild /p:Configuration=$(CONFIG) /t:Build Yavsc.sln
-
-rsync_% : CONFIG = $(subst rsync_,,$@)
-
-rsync_% : HOST = $(HOST_rsync_$(CONFIG))
-
-rsync_% : DESTDIR = $(DESTDIR_rsync_$(CONFIG))
-
-
-rsync_% :
- make deploy CONFIG=$(CONFIG)
- if [[ "x$(HOST)" == "x" ]]; then echo "no host given, aborting"; exit 1; fi
- echo "!Deploying to $(HOST) using $(CONFIG) config!"
- $(RSYNCCMD) dist/web/$(CONFIG)/ root@$(HOST):$(DESTDIR)
-
-
-clean:
- xbuild /p:Configuration=$(CONFIG) /t:Clean Yavsc.sln
- find -name "StyleCop.Cache" -exec rm {} \;
-
-distclean: clean
- rm -rf $(LDYDESTDIR)
-
-sourcepkg:
- git archive --format=tar --prefix=yavsc-$(CONFIG)/ $(CONFIG) | bzip2 > yavsc-$(CONFIG).tar.bz2
-
-dist/web/$(CONFIG)/Web.config: deploy
-
-web/Web.config: dist/web/$(CONFIG)/Web.config
- cp dist/web/$(CONFIG)/Web.config web
-
-start_xsp: build web/Web.config
- (cd web; export MONO_OPTIONS=--debug; xsp4 --port 8080)
-
-xmldoc: $(patsubst %,web/bin/%,$(DOCASSBS))
- mdoc-update $^ $(patsubst %.dll,-i%.xml,$^) --out web/xmldoc
-
-htmldoc: xmldoc
- (cd web; monodocs2html -o htmldoc xmldoc)
-
-docdeploy-prod: htmldoc
- rsync -ravu web/htmldoc root@$(PRODHOSTDIR)
-
-rsync_Lua:
-
-rsync_LuaDebug:
-
-rsync_Debug:
-
-rsync_Release:
-
-rsync_YavscPre:
-
-rsync_yavsc:
-
-rsync_Totemprod:
-
-nuget_restore:
- for prj in ITContentProvider NpgsqlBlogProvider NpgsqlContentProvider NpgsqlMRPProviders Presta SalesCatalog TestAPI web WebControls yavscclient yavscModel; do if [ -f "$${prj}/packages.config" ]; then nuget restore "$${prj}/packages.config" -SolutionDirectory . ; fi; done
-
-nuget_update:
- for prj in ITContentProvider NpgsqlBlogProvider NpgsqlContentProvider NpgsqlMRPProviders Presta SalesCatalog TestAPI web WebControls yavscclient yavscModel; do nuget update "$${prj}/packages.config" ; done
-
-syncall: rsync_Debug rsync_Release rsync_YavscPre rsync_Lua rsync_Yavsc rsync_TotemPre rsync_TotemProd
-
-
-
-
-
diff --git a/NpgsqlBlogProvider/AssemblyInfo.cs b/NpgsqlBlogProvider/AssemblyInfo.cs
deleted file mode 100644
index 7cc5217d..00000000
--- a/NpgsqlBlogProvider/AssemblyInfo.cs
+++ /dev/null
@@ -1,27 +0,0 @@
-using System.Reflection;
-using System.Runtime.CompilerServices;
-
-// Information about this assembly is defined by the following attributes.
-// Change them to the values specific to your project.
-
-[assembly: AssemblyTitle("NpgsqlBlogProvider")]
-[assembly: AssemblyDescription("")]
-[assembly: AssemblyConfiguration("")]
-[assembly: AssemblyCompany("")]
-[assembly: AssemblyProduct("")]
-[assembly: AssemblyCopyright("paul")]
-[assembly: AssemblyTrademark("")]
-[assembly: AssemblyCulture("")]
-
-// The assembly version has the format "{Major}.{Minor}.{Build}.{Revision}".
-// The form "{Major}.{Minor}.*" will automatically update the build and revision,
-// and "{Major}.{Minor}.{Build}.*" will update just the revision.
-
-[assembly: AssemblyVersion("1.0.*")]
-
-// The following attributes are used to specify the signing key for the assembly,
-// if desired. See the Mono documentation for more information about signing.
-
-//[assembly: AssemblyDelaySign(false)]
-//[assembly: AssemblyKeyFile("")]
-
diff --git a/NpgsqlBlogProvider/NpgsqlBlogProvider.cs b/NpgsqlBlogProvider/NpgsqlBlogProvider.cs
deleted file mode 100644
index 677e5856..00000000
--- a/NpgsqlBlogProvider/NpgsqlBlogProvider.cs
+++ /dev/null
@@ -1,836 +0,0 @@
-using System;
-using System.Configuration;
-using System.Configuration.Provider;
-using Npgsql;
-using System.Collections.Generic;
-using Yavsc.Model.Blogs;
-using Yavsc.Model.Circles;
-using NpgsqlTypes;
-using System.Linq;
-
-namespace Npgsql.Web.Blog
-{
- ///
- /// Npgsql blog provider.
- ///
- public class NpgsqlBlogProvider : BlogProvider
- {
-
- string applicationName;
- string connectionString;
-
- #region implemented abstract members of BlogProvider
- ///
- /// Gets the public post count.
- ///
- /// The public post count.
- /// Blogger name.
- public override long GetPublicPostCount (string bloggerName)
- {
- long result = -1;
- using (NpgsqlConnection cnx = new NpgsqlConnection (connectionString))
- using (NpgsqlCommand cmd = cnx.CreateCommand ()) {
- cmd.CommandText = @"
-Select count(*)
-FROM blog b
-LEFT OUTER JOIN blog_access a ON a.post_id = b._id
-WHERE a.post_id IS NULL
-AND b.visible = TRUE
-AND b.username = :bname
-AND b.applicationname = :app
-
-";
- cmd.Parameters.AddWithValue ("bname", bloggerName);
- cmd.Parameters.AddWithValue ("app", applicationName);
- cnx.Open ();
- result = (long) cmd.ExecuteScalar ();
- cnx.Close ();
- }
- return result;
- }
-
- ///
- /// Updates the post.
- ///
- /// Be.
- public override void UpdatePost (BlogEntry be)
- {
- // TODO Tags and rate should not be ignored
- UpdatePost (be.Id, be.Title, be.Content, be.Visible, be.AllowedCircles);
- }
-
- ///
- /// Note the specified postid and note.
- ///
- /// Postid.
- /// rate.
- public override void Rate (long postid, int rate)
- {
- using (NpgsqlConnection cnx = new NpgsqlConnection (connectionString))
- using (NpgsqlCommand cmd = cnx.CreateCommand ()) {
- cmd.CommandText = "update blog set rate = :rate where _id = :pid";
- cmd.Parameters.AddWithValue ("rate", rate);
- cmd.Parameters.AddWithValue ("pid", postid);
- cnx.Open ();
- cmd.ExecuteNonQuery ();
- cnx.Close ();
- }
- }
- ///
- /// Tag the specified post by identifier
- /// using the given tag.
- ///
- /// Postid.
- /// Tag name.
- public override long Tag (long postid, string tagname)
- {
- long tid = GetOrCreateTagId (tagname);
- using (NpgsqlConnection cnx = new NpgsqlConnection (connectionString))
- using (NpgsqlCommand cmd = cnx.CreateCommand ()) {
- cmd.CommandText = "INSERT INTO tagged (tagid,postid) VALUES (:tid,:pid)";
- cmd.Parameters.AddWithValue ("tid", tid);
- cmd.Parameters.AddWithValue ("pid", postid);
- cnx.Open ();
- cmd.ExecuteNonQuery ();
- return tid;
- }
- }
-
- ///
- /// Uns the tag.
- ///
- /// Postid.
- /// Tagid.
- /// Name.
- override public void Untag (long postid, string name)
- {
- using (NpgsqlConnection cnx = new NpgsqlConnection (connectionString))
- using (NpgsqlCommand cmd = cnx.CreateCommand ()) {
- cmd.CommandText = "DELETE FROM tagged WHERE tagged.postid = :pid AND tagged.tagid = (select tag._id FROM tag WHERE tag.name = :tnm)";
- cmd.Parameters.AddWithValue ("pid", postid);
- cmd.Parameters.AddWithValue ("tnm", name);
- cnx.Open ();
- cmd.ExecuteNonQuery ();
- }
- }
-
- ///
- /// Uns the tag.
- ///
- /// Postid.
- /// Tagid.
- /// Tid.
- override public void Untag (long postid, long tid)
- {
- using (NpgsqlConnection cnx = new NpgsqlConnection (connectionString))
- using (NpgsqlCommand cmd = cnx.CreateCommand ()) {
- cmd.CommandText = "DELETE FROM tagged WHERE postid = :pid AND tagid = :tid";
- cmd.Parameters.AddWithValue ("pid", postid);
- cmd.Parameters.AddWithValue ("tid", tid);
- cnx.Open ();
- cmd.ExecuteNonQuery ();
- }
- }
-
- ///
- /// Gets the comments.
- ///
- /// The comments.
- /// Postid.
- /// If set to true get hidden.
- public override Comment[] GetComments (long postid, bool getHidden)
- {
- List cmts = new List ();
-
- using (NpgsqlConnection cnx = new NpgsqlConnection (connectionString))
- using (NpgsqlCommand cmd = cnx.CreateCommand ()) {
-
- cmd.CommandText = "select _id, username, bcontent, modified, posted, visible from comment " +
- "where applicationname = :appname and postid = :id" +
- ((getHidden) ? " and visible = true " : " ") +
- "order by posted asc";
- cmd.Parameters.AddWithValue ("appname", applicationName);
- cmd.Parameters.AddWithValue ("id", postid);
- cnx.Open ();
- using (NpgsqlDataReader rdr = cmd.ExecuteReader ()) {
- while (rdr.Read ()) {
- Comment c = new Comment ();
- c.CommentText = rdr.GetString (rdr.GetOrdinal ("bcontent"));
- c.From = rdr.GetString (rdr.GetOrdinal ("username"));
- c.Modified = rdr.GetDateTime (rdr.GetOrdinal ("modified"));
- c.Posted = rdr.GetDateTime (rdr.GetOrdinal ("posted"));
- c.Visible = rdr.GetBoolean (rdr.GetOrdinal ("visible"));
- c.PostId = postid;
- c.Id = rdr.GetInt64 (rdr.GetOrdinal ("_id"));
- cmts.Add (c);
- }
- }
- }
- return cmts.ToArray ();
- }
-
- ///
- /// Updates the post.
- ///
- /// Postid.
- /// Title.
- /// Content.
- /// If set to true visible.
- /// Circle identifiers
- public override void UpdatePost (long postid, string title, string content,
- bool visible, long[] cids)
- {
- using (NpgsqlConnection cnx = new NpgsqlConnection (connectionString)) {
- using (NpgsqlCommand cmd = cnx.CreateCommand ()) {
- DateTime now = DateTime.Now;
- cmd.CommandText =
- "update blog set modified=:now," +
- " title = :title," +
- " bcontent = :content, " +
- " visible = :visible " +
- "where _id = :id";
- cmd.Parameters.AddWithValue ("now", now);
- cmd.Parameters.AddWithValue ("title", title);
- if (content == null)
- content = "";
- cmd.Parameters.AddWithValue ("content", content);
- cmd.Parameters.AddWithValue ("visible", visible);
- cmd.Parameters.AddWithValue ("id", postid);
- cnx.Open ();
- cmd.ExecuteNonQuery ();
- }
- cnx.Close ();
- }
- if (cids != null) UpdatePostCircles (postid, cids);
- }
-
- ///
- /// Removes the post.
- ///
- /// Postid.
- public override void RemovePost (long postid)
- {
- using (NpgsqlConnection cnx = new NpgsqlConnection (connectionString))
- using (NpgsqlCommand cmd = cnx.CreateCommand ()) {
- cmd.CommandText = "delete from blog where _id = :id";
- cmd.Parameters.AddWithValue ("id", postid);
- cnx.Open ();
- cmd.ExecuteNonQuery ();
- }
- }
-
- ///
- /// Comment the specified from, postid and content.
- ///
- /// From.
- /// Postid.
- /// Content.
- public override long Comment (string from, long postid, string content)
- {
- if (from == null)
- throw new ArgumentNullException ("from");
- if (content == null)
- throw new ArgumentNullException ("content");
- bool visible = AutoValidatesComments;
- using (NpgsqlConnection cnx =
- new NpgsqlConnection (connectionString))
- using (NpgsqlCommand cmd = cnx.CreateCommand ()) {
- cmd.CommandText = "insert into comment (postid,bcontent," +
- "modified,posted,visible,username,applicationname)" +
- "values (:postid,:bcontent,:modified,:posted," +
- ":visible,:username,:appname) returning _id";
- cmd.Parameters.AddWithValue ("postid", postid);
- cmd.Parameters.AddWithValue ("bcontent", content);
- DateTime now = DateTime.Now;
- cmd.Parameters.AddWithValue ("modified", now);
- cmd.Parameters.AddWithValue ("posted", now);
- cmd.Parameters.AddWithValue ("visible", visible);
- cmd.Parameters.AddWithValue ("username", from);
- cmd.Parameters.AddWithValue ("appname", applicationName);
- cnx.Open ();
- return (long)cmd.ExecuteScalar ();
- }
- }
-
- ///
- /// Validates the comment.
- ///
- /// Cmtid.
- public override void ValidateComment (long cmtid)
- {
- throw new NotImplementedException ();
- }
-
- ///
- /// Updates the comment.
- ///
- /// Cmtid.
- /// Content.
- /// If set to true visible.
- public override void UpdateComment
- (long cmtid, string content, bool visible)
- {
- throw new NotImplementedException ();
- }
-
- private bool autoValidateComment = true;
-
- ///
- /// Gets or sets a value indicating whether this auto validate comment.
- ///
- /// true if auto validate comment; otherwise, false.
- public override bool AutoValidatesComments {
- get {
- return autoValidateComment;
- }
- set {
- autoValidateComment = value;
- }
- }
-
- ///
- /// Blogs the title.
- ///
- /// The title.
- /// Username.
- public override string BlogTitle
- (string username)
- {
- throw new NotImplementedException ();
- }
-
- #endregion
-
- ///
- /// Initialize the specified name and config.
- ///
- /// Name.
- /// Config.
- public override void Initialize
- (string name, System.Collections.Specialized.NameValueCollection config)
- {
- string cnxName = config ["connectionStringName"];
- connectionString = ConfigurationManager.ConnectionStrings [cnxName].ConnectionString;
- config.Remove ("connectionStringName");
- applicationName = config ["applicationName"];
- config.Remove ("applicationName");
- defaultPageSize = int.Parse (config ["pageLen"] ?? "10");
- base.Initialize (name, config);
- }
-
- #region implemented abstract members of BlogProvider
-
- ///
- /// Gets the post.
- ///
- /// The post.
- /// Postid.
- public override BlogEntry GetPost (long postid)
- {
- BlogEntry be = null;
- using (NpgsqlConnection cnx = new NpgsqlConnection (connectionString))
- using (NpgsqlCommand cmd = cnx.CreateCommand ()) {
- cmd.CommandText = "select username, title, bcontent, modified, " +
- "posted, visible, photo, rate from blog " +
- "where applicationname = :appname and _id = :id";
- cmd.Parameters.AddWithValue ("appname", applicationName);
- cmd.Parameters.AddWithValue ("id", postid);
- cnx.Open ();
- using (NpgsqlDataReader rdr = cmd.ExecuteReader ()) {
- if (rdr.Read ()) {
- be = new BlogEntry ();
- be.Title = rdr.GetString (rdr.GetOrdinal ("title"));
- be.Content = rdr.GetString (rdr.GetOrdinal ("bcontent"));
- be.Author = rdr.GetString (rdr.GetOrdinal ("username"));
- be.Modified = rdr.GetDateTime (rdr.GetOrdinal ("modified"));
- be.Posted = rdr.GetDateTime (rdr.GetOrdinal ("posted"));
- be.Visible = rdr.GetBoolean (rdr.GetOrdinal ("visible"));
- be.Rate = rdr.GetInt32 (rdr.GetOrdinal ("rate"));
- int oph = rdr.GetOrdinal ("photo");
- if (!rdr.IsDBNull (oph))
- be.Photo = rdr.GetString (oph);
- be.Id = postid;
- }
- }
- }
- if (be != null)
- Populate (be);
- return be;
-
- }
-
- ///
- /// Removes the comment.
- ///
- /// The comment.
- /// Cmtid.
- public override long RemoveComment (long cmtid)
- {
- long postid = 0;
- using (NpgsqlConnection cnx = new NpgsqlConnection (connectionString))
- using (NpgsqlCommand cmd = cnx.CreateCommand ()) {
- cmd.CommandText = "delete from comment where _id = :id returning postid";
- cmd.Parameters.AddWithValue ("id", cmtid);
- cnx.Open ();
- postid = (long)cmd.ExecuteScalar ();
- }
- return postid;
- }
-
- ///
- /// Gets the post.
- ///
- /// The post.
- /// Username.
- /// Title.
- public override UUTBlogEntryCollection GetPost (string username, string title)
- {
- UUTBlogEntryCollection bec = new UUTBlogEntryCollection (username, title);
- using (NpgsqlConnection cnx = new NpgsqlConnection (connectionString)) {
- using (NpgsqlCommand cmd = cnx.CreateCommand ()) {
- cmd.CommandText = "select _id,bcontent,modified,posted,visible,photo,rate from blog " +
- "where applicationname = :appname and username = :username and title = :title order by rate desc";
- cmd.Parameters.AddWithValue ("appname", NpgsqlDbType.Varchar, applicationName);
- cmd.Parameters.AddWithValue ("username", NpgsqlDbType.Varchar, username);
- cmd.Parameters.AddWithValue ("title", NpgsqlDbType.Varchar, title);
- cnx.Open ();
- cmd.Prepare ();
- using (NpgsqlDataReader rdr = cmd.ExecuteReader ()) {
- while (rdr.Read ()) {
- BlogEntry be = new BlogEntry ();
- be.Title = title;
- be.Content = rdr.GetString (rdr.GetOrdinal ("bcontent"));
- be.Author = username;
- be.Modified = rdr.GetDateTime (rdr.GetOrdinal ("modified"));
- be.Posted = rdr.GetDateTime (rdr.GetOrdinal ("posted"));
- be.Visible = rdr.GetBoolean (rdr.GetOrdinal ("visible"));
- be.Rate = rdr.GetInt32 (rdr.GetOrdinal ("rate"));
- be.Id = rdr.GetInt64 (rdr.GetOrdinal ("_id"));
- {
- int oph = rdr.GetOrdinal ("photo");
- if (!rdr.IsDBNull (oph))
- be.Photo = rdr.GetString (oph);
- }
-
- bec.Add (be);
- }
- rdr.Close ();
- }
-
- }
- if (bec.Count != 0) {
- Populate (bec);
- }
- }
- return bec;
- }
-
- private void SetCirclesOn (BasePost be)
- {
- List circles = new List ();
- using (NpgsqlConnection cnx = new NpgsqlConnection (connectionString))
- using (NpgsqlCommand cmdcircles = cnx.CreateCommand ()) {
- cmdcircles.CommandText = "select a.circle_id from blog_access a " +
- "where a.post_id = :pid";
- cmdcircles.Parameters.AddWithValue ("pid", be.Id);
- cnx.Open ();
- using (NpgsqlDataReader rdr = cmdcircles.ExecuteReader ()) {
- while (rdr.Read ()) {
- circles.Add (rdr.GetInt64 (0));
- }
- }
- }
- be.AllowedCircles = circles.ToArray ();
- }
-
- ///
- /// Removes the tag.
- ///
- /// Tagid.
- public override void DropTag (long tagid)
- {
- using (NpgsqlConnection cnx = new NpgsqlConnection (connectionString))
- using (NpgsqlCommand cmd = cnx.CreateCommand ()) {
- cmd.CommandText = "DELETE from public.tag where _id = :tid";
- cmd.Parameters.AddWithValue ("tagid", tagid);
- cnx.Open ();
- cmd.ExecuteNonQuery ();
- cnx.Close ();
- }
- }
-
- private static string SelectTagsSql = "SELECT tag.name, tag._id FROM public.tag WHERE name like :name";
-
- private IEnumerable GetSuggestion (string pattern)
- {
- using (NpgsqlConnection cnx = new NpgsqlConnection (connectionString))
- using (NpgsqlCommand cmd = cnx.CreateCommand ()) {
- cmd.CommandText = SelectTagsSql;
- throw new NotImplementedException ();
- }
- }
-
- private static string InsertTagSql = "INSERT INTO tag (name) VALUES (:name) returning _id";
-
- private void InsertTag (long postid, long tagid)
- {
- using (NpgsqlConnection cnx = new NpgsqlConnection (connectionString))
- using (NpgsqlCommand cmd = cnx.CreateCommand ()) {
- cmd.CommandText = InsertTagSql;
- throw new NotImplementedException ();
- }
- }
-
- private long GetTagId (string tagname)
- {
- // FIXME null pointer at cmd.ExecuteScalar!
- if (tagname == null)
- throw new NullReferenceException ("This tag name is null");
- long id = 0;
- using (NpgsqlConnection cnx = new NpgsqlConnection (connectionString)) {
-
- cnx.Open ();
- using (NpgsqlCommand cmd = cnx.CreateCommand ()) {
- cmd.CommandText = "SELECT _id FROM tag WHERE name LIKE :tn";
- cmd.Parameters.AddWithValue ("tn",NpgsqlDbType.Varchar, tagname);
- id = (long) cmd.ExecuteScalar ();
- }
- cnx.Close ();
- }
- return id;
- }
-
- private long GetOrCreateTagId (string tagname)
- {
- if (tagname == null)
- throw new NullReferenceException ("This tag name is null");
- long id = 0;
- using (NpgsqlConnection cnx = new NpgsqlConnection (connectionString)) {
- try {
- using (NpgsqlCommand cmd = cnx.CreateCommand ()) {
- cmd.CommandText = "SELECT tag._id FROM public.tag WHERE name = :name";
- cmd.Parameters.AddWithValue ("name", tagname);
- cnx.Open ();
- id = (long)cmd.ExecuteScalar ();
- }
- } catch (NullReferenceException) {
- using (NpgsqlCommand cmd = cnx.CreateCommand ()) {
- cmd.CommandText = "INSERT INTO public.tag(name) VALUES (:name) RETURNING _id";
- cmd.Parameters.AddWithValue ("name", tagname);
- id = (long)cmd.ExecuteScalar ();
- }
- }
- }
- return id;
- }
-
-
-
- private static string SelectPostTagsSql = "SELECT tag.name FROM public.tag, public.tagged\n" +
- "WHERE tag._id = tagged.tagid AND tagged.postid = :pid \n";
-
- private void SetTagsOn (BlogEntryCollection bec)
- {
- foreach (BlogEntry be in bec) {
- SetTagsOn (be);
- }
- }
-
- private void SetTagsOn (BasePost be)
- {
- List tags = new List ();
- using (NpgsqlConnection cnx = new NpgsqlConnection (connectionString))
- using (NpgsqlCommand cmdtags = cnx.CreateCommand ()) {
- cmdtags.CommandText = SelectPostTagsSql;
- cmdtags.Parameters.AddWithValue ("pid", be.Id);
- cnx.Open ();
- using (NpgsqlDataReader rdr = cmdtags.ExecuteReader ()) {
- while (rdr.Read ()) {
- tags.Add (rdr.GetString (0));
- }
- }
- }
- be.Tags = tags.ToArray ();
- }
-
- // Assert(bec!=null);
- private void Populate (BlogEntryCollection bec)
- {
- foreach (BlogEntry be in bec)
- Populate (be);
- }
-
- private void Populate (BasePost be)
- {
- SetTagsOn (be);
- SetCirclesOn (be);
- }
-
- ///
- /// Post the specified username, title, content and visible.
- ///
- /// Username.
- /// Title.
- /// Content.
- /// If set to true visible.
- /// .
- public override long Post (string username, string title, string content, bool visible, long[] circles)
- {
- long pid = 0;
- if (username == null)
- throw new ArgumentNullException ("username");
- if (title == null)
- throw new ArgumentNullException ("title");
- if (content == null)
- content = "";
- using (NpgsqlConnection cnx = new NpgsqlConnection (connectionString)) {
- using (NpgsqlCommand cmd = cnx.CreateCommand ()) {
- cmd.CommandText = "insert into blog (title,bcontent,modified,posted,visible,username,applicationname)" +
- "values (:title,:bcontent,:modified,:posted,:visible,:username,:appname) returning _id";
- cmd.Parameters.AddWithValue ("title", title);
- cmd.Parameters.AddWithValue ("bcontent", content);
- DateTime now = DateTime.Now;
- cmd.Parameters.AddWithValue ("modified", now);
- cmd.Parameters.AddWithValue ("posted", now);
- cmd.Parameters.AddWithValue ("visible", visible);
- cmd.Parameters.AddWithValue ("username", username);
- cmd.Parameters.AddWithValue ("appname", applicationName);
- cnx.Open ();
- pid = (long)cmd.ExecuteScalar ();
- }
- cnx.Close ();
- }
- if (circles != null)
- UpdatePostCircles (pid, circles);
- return pid;
- }
-
- ///
- /// Updates the post photo.
- ///
- /// Pid.
- /// Photo.
- public override void UpdatePostPhoto (long pid, string photo)
- {
- using (NpgsqlConnection cnx = new NpgsqlConnection (connectionString)) {
- cnx.Open ();
- using (NpgsqlCommand cmd = cnx.CreateCommand ()) {
- if (photo == null)
- cmd.CommandText = "update blog set photo = NULL where _id = :pid";
- else {
- cmd.CommandText = "update blog set photo = :photo where _id = :pid";
- cmd.Parameters.AddWithValue ("photo", photo);
- }
- cmd.Parameters.AddWithValue ("pid", pid);
- cmd.ExecuteNonQuery ();
- }
- cnx.Close ();
- }
- }
-
- private void UpdatePostCircles (long pid, long[] circles)
- {
- using (NpgsqlConnection cnx = new NpgsqlConnection (connectionString)) {
- cnx.Open ();
- using (NpgsqlCommand cmd = cnx.CreateCommand ()) {
- cmd.CommandText = "delete from blog_access where post_id = :pid";
- cmd.Parameters.AddWithValue ("pid", pid);
- cmd.ExecuteNonQuery ();
- }
- if (circles != null)
- if (circles.Length > 0)
- using (NpgsqlCommand cmd = cnx.CreateCommand ()) {
- cmd.CommandText = "insert into blog_access (post_id,circle_id) values (:pid,:cid)";
- cmd.Parameters.AddWithValue ("pid", NpgsqlTypes.NpgsqlDbType.Bigint, pid);
- cmd.Parameters.Add ("cid", NpgsqlTypes.NpgsqlDbType.Bigint);
- cmd.Prepare ();
- foreach (long ci in circles) {
- cmd.Parameters ["cid"].Value = ci;
- cmd.ExecuteNonQuery ();
- }
- }
- cnx.Close ();
- }
- }
-
- ///
- /// Finds the post.
- ///
- /// The post.
- /// Reader's Name.
- /// Pattern.
- /// Searchflags.
- /// Page index.
- /// Page size.
- /// Total records.
- public override BlogEntryCollection FindPost (string readersName, string pattern, FindBlogEntryFlags searchflags, int pageIndex, int pageSize, out int totalRecords)
- {
- BlogEntryCollection c = new BlogEntryCollection ();
- totalRecords = 0;
- using (NpgsqlConnection cnx = new NpgsqlConnection (connectionString))
- using (NpgsqlCommand cmd = cnx.CreateCommand ()) {
- if (readersName != null) {
- cmd.CommandText = "select _id, title,bcontent, modified," +
- "posted,username,visible,photo,rate " +
- "from blog b left outer join " +
- "(select count(*)>0 acc, a.post_id pid " +
- "from blog_access a," +
- " circle_members m, users u where m.circle_id = a.circle_id " +
- " and m.member = u.username and u.username = :uname " +
- " and u.applicationname = :appname " +
- " group by a.post_id) ma on (ma.pid = b._id) " +
- "where ( ((ma.acc IS NULL or ma.acc = TRUE) and b.Visible IS TRUE ) or b.username = :uname) ";
- cmd.Parameters.AddWithValue ("uname", readersName);
- } else {
- cmd.CommandText = "select _id, title,bcontent,modified," +
- "posted,username,visible,photo,rate " +
- "from blog b left outer join " +
- "(select count(*)>0 acc, a.post_id pid " +
- "from blog_access a" +
- " group by a.post_id) ma on (ma.pid = b._id)" +
- " where " +
- " ( ma.acc IS NULL and " +
- " b.Visible IS TRUE and " +
- " applicationname = :appname ) ";
- }
- cmd.Parameters.AddWithValue ("appname", applicationName);
- if (pattern != null) {
- if ((searchflags & FindBlogEntryFlags.MatchTag) > 0) {
- cmd.CommandText +=
- " AND EXISTS (SELECT tag._id FROM tag, tagged \n" +
- " WHERE tag._id = tagged.tagid \n" +
- " AND tagged.postid = b._id \n" +
- " AND tag.name like :tagname) \n";
- cmd.Parameters.AddWithValue ("tagname", pattern);
- }
-
- if ((searchflags & FindBlogEntryFlags.MatchContent) > 0) {
- cmd.CommandText += " and bcontent like :bcontent \n";
- cmd.Parameters.AddWithValue ("bcontent", pattern);
- }
- if ((searchflags & FindBlogEntryFlags.MatchTitle) > 0) {
- cmd.CommandText += " and title like :title";
- cmd.Parameters.AddWithValue ("title", pattern);
- }
- if ((searchflags & FindBlogEntryFlags.MatchUserName) > 0) {
- cmd.CommandText += " and username like :username \n";
- cmd.Parameters.AddWithValue ("username", pattern);
- }
- }
- if (((searchflags & FindBlogEntryFlags.MatchInvisible) == 0) &&
- (readersName == null) ) {
- cmd.CommandText += " and visible = true \n";
- }
-
- cmd.CommandText += " order by rate desc";
- cnx.Open ();
- using (NpgsqlDataReader rdr = cmd.ExecuteReader ()) {
- // pageIndex became one based
- int firstrec = pageIndex * pageSize;
- int lastrec = firstrec + pageSize - 1;
- while (rdr.Read ()) {
- if (totalRecords >= firstrec && totalRecords <= lastrec) {
- BlogEntry be = new BlogEntry ();
- be.Title = rdr.GetString (rdr.GetOrdinal ("title"));
- be.Id = rdr.GetInt64 (rdr.GetOrdinal ("_id"));
- be.Content = rdr.GetString (rdr.GetOrdinal ("bcontent"));
- be.Author = rdr.GetString (rdr.GetOrdinal ("username"));
- be.Posted = rdr.GetDateTime (rdr.GetOrdinal ("posted"));
- be.Modified = rdr.GetDateTime (rdr.GetOrdinal ("modified"));
- be.Visible = rdr.GetBoolean (rdr.GetOrdinal ("visible"));
- be.Rate = rdr.GetInt32 (rdr.GetOrdinal ("rate"));
- {
- int oph = rdr.GetOrdinal ("photo");
- if (!rdr.IsDBNull (oph))
- be.Photo = rdr.GetString (oph);
- }
- c.Add (be);
- }
- totalRecords++;
- }
- rdr.Close ();
- }
- }
- if (c != null)
- Populate (c);
-
- return c;
- }
-
- ///
- /// Removes the post.
- ///
- /// Username.
- /// Title.
- public override void RemoveTitle (string username, string title)
- {
- using (NpgsqlConnection cnx = new NpgsqlConnection (connectionString))
- using (NpgsqlCommand cmd = cnx.CreateCommand ()) {
- cmd.CommandText = "delete from blog where username = :username and applicationname = :appname and title=:title";
- cmd.Parameters.AddWithValue ("username", username);
- cmd.Parameters.AddWithValue ("appname", applicationName);
- cmd.Parameters.AddWithValue ("title", title);
- cnx.Open ();
- cmd.ExecuteNonQuery ();
- cnx.Close ();
- }
- }
-
-
- int defaultPageSize = 10;
-
- ///
- /// Lasts the posts.
- ///
- /// The posts.
- /// Page index.
- /// Page size.
- /// Total records.
- public override BlogEntryCollection LastPosts (int pageIndex, int pageSize, out int totalRecords)
- {
- BlogEntryCollection c = new BlogEntryCollection ();
- using (NpgsqlConnection cnx = new NpgsqlConnection (connectionString))
- using (NpgsqlCommand cmd = cnx.CreateCommand ()) {
- cmd.CommandText = "select * " +
- "from blog where applicationname = :appname and visible = true " +
- " order by modified desc limit :len";
-
- cmd.Parameters.AddWithValue ("appname", applicationName);
- cmd.Parameters.AddWithValue ("len", defaultPageSize * 10);
- cnx.Open ();
- using (NpgsqlDataReader rdr = cmd.ExecuteReader ()) {
- totalRecords = 0;
- int firstrec = pageIndex * pageSize;
- int lastrec = firstrec + pageSize - 1;
- while (rdr.Read ()) {
- if (totalRecords >= firstrec && totalRecords <= lastrec) {
- BlogEntry be = new BlogEntry ();
- be.Id = rdr.GetInt64 (rdr.GetOrdinal ("_id"));
- be.Title = rdr.GetString (rdr.GetOrdinal ("title"));
- be.Content = rdr.GetString (rdr.GetOrdinal ("bcontent"));
- be.Author = rdr.GetString (rdr.GetOrdinal ("username"));
- be.Posted = rdr.GetDateTime (rdr.GetOrdinal ("posted"));
- be.Modified = rdr.GetDateTime (rdr.GetOrdinal ("modified"));
- be.Visible = true; // because of sql code used
- be.Rate = rdr.GetInt32(rdr.GetOrdinal("rate"));
- {
- int oph = rdr.GetOrdinal ("photo");
- if (!rdr.IsDBNull (oph))
- be.Photo = rdr.GetString (oph);
- }
- SetTagsOn (be);
- SetCirclesOn (be);
- c.Add (be);
- }
- totalRecords++;
- }
- }
- }
- if (c != null)
- Populate (c);
- return c;
- }
-
- #endregion
- }
-}
diff --git a/NpgsqlBlogProvider/NpgsqlBlogProvider.csproj b/NpgsqlBlogProvider/NpgsqlBlogProvider.csproj
deleted file mode 100644
index 16e9b85c..00000000
--- a/NpgsqlBlogProvider/NpgsqlBlogProvider.csproj
+++ /dev/null
@@ -1,99 +0,0 @@
-
-
-
- Debug
- AnyCPU
- 8.0.30703
- 2.0
- {C6E9E91B-97D3-48D9-8AA7-05356929E162}
- Library
- Npgsql.Web.Blog
- NpgsqlBlogProvider
- v4.5.1
-
-
- true
- full
- false
- bin\Debug
- DEBUG;
- prompt
- 4
- false
- bin\Debug\NpgsqlBlogProvider.xml
-
-
- none
- true
- bin\Release
- prompt
- 4
- false
-
-
- false
- bin\Lua
- 4
-
-
- false
- bin\TotemPre
- 4
-
-
- false
- bin\TotemProd
- 4
-
-
- false
- bin\YavscPre
- 4
-
-
- false
- bin\Yavsc
- 4
-
-
- false
- bin\Lua
- 4
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- ..\packages\Npgsql.3.0.5\lib\net45\Npgsql.dll
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- {68F5B80A-616E-4C3C-91A0-828AA40000BD}
- YavscModel
-
-
-
\ No newline at end of file
diff --git a/NpgsqlBlogProvider/Sql/BlogTable.sql b/NpgsqlBlogProvider/Sql/BlogTable.sql
deleted file mode 100644
index 07fc24e2..00000000
--- a/NpgsqlBlogProvider/Sql/BlogTable.sql
+++ /dev/null
@@ -1,21 +0,0 @@
-
--- Table: blog
-
--- DROP TABLE blog;
-
-CREATE TABLE blog
-(
- applicationname character varying(255) NOT NULL,
- username character varying(255) NOT NULL,
- posted timestamp with time zone NOT NULL,
- modified timestamp with time zone NOT NULL,
- title character varying(255) NOT NULL,
- bcontent text NOT NULL,
- CONSTRAINT pk_blog PRIMARY KEY (username , applicationname , title ),
- CONSTRAINT bloguser FOREIGN KEY (applicationname, username)
- REFERENCES users (applicationname, username) MATCH SIMPLE
- ON UPDATE CASCADE ON DELETE CASCADE
-)
-WITH (
- OIDS=FALSE
-);
diff --git a/NpgsqlBlogProvider/packages.config b/NpgsqlBlogProvider/packages.config
deleted file mode 100644
index 440f9cbc..00000000
--- a/NpgsqlBlogProvider/packages.config
+++ /dev/null
@@ -1,4 +0,0 @@
-
-
-
-
\ No newline at end of file
diff --git a/NpgsqlContentProvider/NpgsqlCircleProvider.cs b/NpgsqlContentProvider/NpgsqlCircleProvider.cs
deleted file mode 100644
index 5908e526..00000000
--- a/NpgsqlContentProvider/NpgsqlCircleProvider.cs
+++ /dev/null
@@ -1,372 +0,0 @@
-//
-// NpgsqlCircleProvider.cs
-//
-// Author:
-// Paul Schneider
-//
-// Copyright (c) 2015 GNU GPL
-//
-// This program is free software: you can redistribute it and/or modify
-// it under the terms of the GNU Lesser General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
-//
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU Lesser General Public License for more details.
-//
-// You should have received a copy of the GNU Lesser General Public License
-// along with this program. If not, see .
-using System;
-using System.Collections.Generic;
-using System.Collections.Specialized;
-using System.Configuration;
-using System.Web.Security;
-using Npgsql;
-using NpgsqlTypes;
-using Yavsc.Model;
-using Yavsc.Model.Circles;
-
-namespace WorkFlowProvider
-{
- ///
- /// Npgsql circle provider.
- ///
- public class NpgsqlCircleProvider : CircleProvider
- {
- #region implemented abstract members of CircleProvider
- ///
- /// Circles the specified ownername and username.
- ///
- /// Ownername.
- /// Username.
- public override string[] Circles (string ownername, string username)
- {
- List circles = new List ();
- using (NpgsqlConnection cnx = new NpgsqlConnection (connectionString)) {
- using (NpgsqlCommand cmd = cnx.CreateCommand ()) {
- cmd.CommandText = @"select c.title from circle c, circle_members m
- where c.owner = :wnr
- and c._id = m.circle_id
- and m.member = :user
-and m.applicationname = :app
-";
- cmd.Parameters.AddWithValue ("wnr",ownername);
- cmd.Parameters.AddWithValue ("user",username);
- cmd.Parameters.AddWithValue ("app",applicationName);
- cnx.Open ();
- using (NpgsqlDataReader rdr = cmd.ExecuteReader ()) {
- if (rdr.HasRows) while (rdr.Read ())
- circles.Add (rdr.GetString (0));
- rdr.Close ();
- }
- }
- cnx.Close ();
- }
- return circles.ToArray();
- }
-
-
- ///
- /// Updates the circle.
- ///
- /// C.
- public override void UpdateCircle (CircleBase c)
- {
- using (NpgsqlConnection cnx = new NpgsqlConnection (connectionString)) {
- cnx.Open ();
- using (NpgsqlCommand cmd = cnx.CreateCommand ()) {
- cmd.CommandText = "update circle " +
- "set title = :title " +
- "where _id = :cid ";
- cmd.Parameters.AddWithValue ("title", c.Title);
- cmd.Parameters.AddWithValue ("cid", c.Id);
- cmd.ExecuteNonQuery ();
- }
- cnx.Close ();
- }
- }
- ///
- /// Get the specified circle by id, including all of its members.
- ///
- /// Identifier.
- /// The members.
- public override Circle GetMembers (long id)
- {
- Circle circ = null;
-
- using (NpgsqlConnection cnx = new NpgsqlConnection (connectionString)) {
- cnx.Open ();
- using (NpgsqlCommand cmd = cnx.CreateCommand ()) {
- cmd.CommandText = "select title, owner, public from circle where _id = :cid";
- cmd.Parameters.AddWithValue ("cid", id);
- using (NpgsqlDataReader dr = cmd.ExecuteReader ()) {
- if (dr.Read ()) {
- circ = new Circle ();
- circ.Id = id;
- circ.Title = dr.GetString (
- dr.GetOrdinal ("title"));
- circ.Owner = dr.GetString (
- dr.GetOrdinal ("owner"));
-
- }
- dr.Close ();
- }
- }
-
- if (circ != null) {
-
- using (NpgsqlCommand cmd = cnx.CreateCommand ()) {
- cmd.CommandText = "select member from circle_members where circle_id = :cid";
- cmd.Parameters.AddWithValue ("cid", NpgsqlTypes.NpgsqlDbType.Bigint, id);
- cmd.Prepare ();
- List members = new List ();
- using (NpgsqlDataReader dr = cmd.ExecuteReader ()) {
- while (dr.Read ())
- members.Add (dr.GetString (0));
- dr.Close ();
- circ.Members = members.ToArray ();
- }
- }
- }
- cnx.Close ();
- }
- return circ;
- }
- ///
- /// Gets the identifier.
- ///
- /// The identifier.
- /// Circle.
- /// Username.
- public override long GetId (string circle, string username)
- {
- long cid = 0;
- using (NpgsqlConnection cnx = new NpgsqlConnection (connectionString)) {
- cnx.Open ();
- using (NpgsqlCommand cmd = cnx.CreateCommand ()) {
- cmd.CommandText = "select _id from circle where " +
- "owner = :uname " +
- "and title = :title " +
- "and applicationname = :appname";
-
- cmd.Parameters.AddWithValue ("uname", username);
- cmd.Parameters.AddWithValue ("title", circle);
- cmd.Parameters.AddWithValue ("appname", applicationName);
- cid = (long)cmd.ExecuteScalar ();
- }
- cnx.Close ();
- }
- return cid;
- }
- ///
- /// Removes the membership.
- ///
- /// Circle identifier.
- /// Member.
- public override void RemoveMembership (long circle_id, string member)
- {
- using (NpgsqlConnection cnx = new NpgsqlConnection (connectionString))
- using (NpgsqlCommand cmd = cnx.CreateCommand ()) {
- cmd.CommandText = "delete from circle_members where circle_id = :cid and username = :uname";
- cmd.Parameters.AddWithValue ("cid", circle_id);
- cmd.Parameters.AddWithValue ("uname", member);
- cnx.Open ();
- cmd.ExecuteNonQuery ();
- cnx.Close ();
- }
- }
- ///
- /// Removes the member from all current user circles.
- ///
- /// Member.
- public override void RemoveMember (string member)
- {
- throw new NotImplementedException ();
- }
-
- #endregion
-
- ///
- /// Initializes a new instance of the class.
- ///
- public NpgsqlCircleProvider ()
- {
- }
-
- #region implemented abstract members of CircleProvider
-
- ///
- /// Returns circles from owner.
- ///
- /// Circle identifiers.
- /// Member name.
- public override bool Matches (long[] circle_ids, string member)
- {
- bool result = false;
- using (NpgsqlConnection cnx = new NpgsqlConnection (connectionString))
- using (NpgsqlCommand cmd = cnx.CreateCommand ()) {
- cmd.CommandText = "select count(*)>0 from circle_members where circle_id = :cid and member = :mbr";
- cmd.Parameters.Add ("cid", NpgsqlDbType.Bigint);
- cmd.Parameters.AddWithValue ("mbr", NpgsqlDbType.Varchar, member);
- cnx.Open ();
- cmd.Prepare ();
- foreach (long cid in circle_ids) {
- result = (bool)cmd.ExecuteScalar ();
- if (result)
- break;
- }
- cnx.Close ();
- }
- return result;
- }
-
- ///
- /// Add the specified user.
- ///
- /// circle Identifier.
- /// User name.
- public override void AddMember (long id, string username)
- {
- using (NpgsqlConnection cnx = new NpgsqlConnection (connectionString))
- using (NpgsqlCommand cmd = cnx.CreateCommand ()) {
- cmd.CommandText = "insert into circle_members (circle_id, member) values (:cid,:uname)";
- cmd.Parameters.AddWithValue ("cid", id);
- cmd.Parameters.AddWithValue ("uname", username);
- cnx.Open ();
- cmd.ExecuteNonQuery ();
- cnx.Close ();
- }
- }
-
- ///
- /// Get the specified circle by id.
- ///
- /// Identifier.
- public override CircleBase Get (long id)
- {
- CircleBase circ = null;
- using (NpgsqlConnection cnx = new NpgsqlConnection (connectionString)) {
- cnx.Open ();
- using (NpgsqlCommand cmd = cnx.CreateCommand ()) {
- cmd.CommandText = "select title, owner from circle where _id = :cid";
- cmd.Parameters.AddWithValue ("cid", id);
- using (NpgsqlDataReader rdr = cmd.ExecuteReader ()) {
- if (rdr.Read ()) {
- circ = new CircleBase ();
- circ.Id = id;
- circ.Owner = rdr.GetString (1);
- circ.Title = rdr.GetString (0);
- }
- }
- }
- cnx.Close ();
- }
- return circ;
- }
-
-
- ///
- /// Add the specified owner, title and users.
- ///
- /// Owner.
- /// Title.
- /// Users.
- public override long Create (string owner, string title, string[] users)
- {
- long id = 0;
- using (NpgsqlConnection cnx = new NpgsqlConnection (connectionString)) {
- cnx.Open ();
- using (NpgsqlCommand cmd = cnx.CreateCommand ()) {
- cmd.CommandText = "insert into circle (owner,title,applicationname,public) values (:wnr,:tit,:app,FALSE) returning _id";
- cmd.Parameters.AddWithValue ("wnr", owner);
- cmd.Parameters.AddWithValue ("tit", title);
- cmd.Parameters.AddWithValue ("app", applicationName);
- id = (long)cmd.ExecuteScalar ();
- }
- using (NpgsqlCommand cmd = cnx.CreateCommand ()) {
- cmd.CommandText = "insert into circle_members (circle_id,member) values (@cid,@mbr)";
- cmd.Parameters.AddWithValue ("cid", NpgsqlDbType.Bigint , id);
- cmd.Parameters.Add ("mbr", NpgsqlDbType.Varchar);
- cmd.Prepare ();
- if (users != null)
- foreach (string user in users) {
- cmd.Parameters [1].Value = user;
- cmd.ExecuteNonQuery ();
- }
- }
- cnx.Close ();
- }
- return id;
- }
-
- ///
- /// Delete the specified title.
- ///
- /// Identifier.
- public override void Delete (long id)
- {
- using (NpgsqlConnection cnx = new NpgsqlConnection (connectionString))
- using (NpgsqlCommand cmd = cnx.CreateCommand ()) {
- cmd.CommandText = "delete from circle where _id = @cid";
- cmd.Parameters.AddWithValue ("cid", id);
- cnx.Open ();
- cmd.ExecuteNonQuery ();
- cnx.Close ();
- }
- }
-
- ///
- /// List user's circles.
- ///
- /// User.
- public override IEnumerable List (string user)
- {
- List cc = new List ();
- using (NpgsqlConnection cnx = new NpgsqlConnection (connectionString)) {
- using (NpgsqlCommand cmd = cnx.CreateCommand ()) {
- cmd.CommandText = "select _id, title from circle where owner = :wnr";
- cmd.Parameters.AddWithValue ("wnr",user);
- cnx.Open ();
- using (NpgsqlDataReader rdr = cmd.ExecuteReader ()) {
- if (rdr.HasRows) {
- while (rdr.Read ()) {
- CircleBase cb = new CircleBase ();
- cb.Id = rdr.GetInt64 (0);
- cb.Title = rdr.GetString (1);
- cb.Owner = user;
- cc.Add (cb);
- }
- }
- rdr.Close ();
- }
- }
-
- cnx.Close ();
- }
- return cc;
- }
-
- #endregion
-
- string connectionString = null;
- string applicationName = null;
-
- ///
- /// Initialize this object using the specified name and config.
- ///
- /// Name.
- /// Config.
- public override void Initialize (string name, NameValueCollection config)
- {
- if (string.IsNullOrWhiteSpace (config ["connectionStringName"]))
- throw new ConfigurationErrorsException ("No name for Npgsql connection string found");
-
- connectionString = ConfigurationManager.ConnectionStrings [config ["connectionStringName"]].ConnectionString;
- applicationName = config ["applicationName"] ?? "/";
- }
-
- }
-}
-
diff --git a/NpgsqlContentProvider/NpgsqlContentProvider.cs b/NpgsqlContentProvider/NpgsqlContentProvider.cs
deleted file mode 100644
index 98720446..00000000
--- a/NpgsqlContentProvider/NpgsqlContentProvider.cs
+++ /dev/null
@@ -1,753 +0,0 @@
-using System;
-using Npgsql;
-using NpgsqlTypes;
-using System.Configuration;
-using System.Collections.Specialized;
-using Yavsc.Model.WorkFlow;
-using System.Configuration.Provider;
-using System.Collections.Generic;
-using Yavsc.Model.FrontOffice;
-using System.Web.Security;
-using System.Runtime.Serialization.Json;
-using System.IO;
-using System.Text;
-using Newtonsoft.Json;
-using Yavsc.Model.FrontOffice.Catalog;
-
-namespace Yavsc
-{
- ///
- /// Npgsql content provider.
- ///
- public class NpgsqlContentProvider: ProviderBase, IContentProvider
- {
- ///
- /// Finds the performer.
- ///
- /// The performer.
- /// MEA code.
- public PerformerProfile[] FindPerformer (string MEACode)
- {
- var result = new List ();
-
- using (NpgsqlConnection cnx = CreateConnection ()) {
- cnx.Open ();
-
- using (NpgsqlCommand cmd = cnx.CreateCommand ()) {
- cmd.CommandText = @"SELECT d.uniqueid, u.username, u.email, d.rate
- FROM profiledata d, profiles p, users u
- WHERE u.username = p.username
- AND u.applicationname = p.applicationname
- AND p.uniqueid = d.uniqueid
- AND u.isapproved = TRUE
- AND u.islockedout = FALSE
- AND d.meacode = :mea
- AND u.applicationname = :app
- ORDER BY u.username ";
- cmd.Parameters.AddWithValue ("mea", NpgsqlTypes.NpgsqlDbType.Varchar, MEACode);
- cmd.Parameters.AddWithValue ("app", NpgsqlTypes.NpgsqlDbType.Varchar, applicationName);
-
- using (var rdr = cmd.ExecuteReader ()) {
- if (rdr.HasRows) {
- while (rdr.Read ()) {
- var profile = new PerformerProfile (rdr.GetString (1));
- profile.Id = rdr.GetInt64 (0);
- profile.EMail = rdr.GetString (2);
- profile.MEACode = MEACode;
- profile.Rate = rdr.GetInt32 (3);
- result.Add (profile);
- }
- }
- }
- }
- }
- return result.ToArray ();
- }
-
- ///
- /// Gets the activity.
- ///
- /// The activity.
- /// MEA code.
- public Activity GetActivity (string MEACode)
- {
- Activity result = null;
- using (NpgsqlConnection cnx = CreateConnection ()) {
- cnx.Open ();
- using (NpgsqlCommand cmd = cnx.CreateCommand ()) {
- cmd.CommandText = @"select distinct meacode, title, cmnt, photo
- from activity where meacode = :code and applicationname = :app";
- cmd.Parameters.AddWithValue ("code", MEACode);
- cmd.Parameters.AddWithValue ("app", applicationName);
- using (var rdr = cmd.ExecuteReader ()) {
- if (rdr.HasRows) {
- rdr.Read ();
- result = new Activity () {
- Id = rdr.GetString (0),
- Title = rdr.GetString (1),
- Comment = rdr.GetString (2),
- Photo = rdr.GetString (3)
- };
- }
- }
- }
- cnx.Close ();
- }
- return result;
- }
-
- ///
- /// Finds the activity.
- ///
- /// The activity.
- /// Pattern.
- /// If set to true exerted.
- public Activity[] FindActivity (string pattern, bool exerted)
- {
- List acties = new List ();
- using (NpgsqlConnection cnx = CreateConnection ()) {
- cnx.Open ();
- using (NpgsqlCommand cmd = cnx.CreateCommand ()) {
- cmd.CommandText = (exerted) ?
- @"SELECT a.meacode, a.title, a.cmnt, a.photo
- FROM activity a, profiledata d, profiles p, users u
- WHERE u.username = p.username
- AND u.applicationname = p.applicationname
- AND p.uniqueid = d.uniqueid
- AND d.meacode = a.meacode
- AND u.isapproved = TRUE
- AND u.islockedout = FALSE
- AND a.title like :pat
- ORDER BY a.meacode " :
- @"SELECT meacode, title, cmnt, photo
- FROM activity
- WHERE title LIKE :pat
- ORDER BY meacode ";
- cmd.Parameters.AddWithValue ("pat", pattern);
- using (var rdr = cmd.ExecuteReader ()) {
- if (!rdr.HasRows)
- return new Activity[0];
- new List ();
- while (rdr.Read ()) {
- acties.Add (new Activity () {
- Id = rdr.GetString (0),
- Title = rdr.GetString (1),
- Comment = rdr.GetString (2),
- Photo = rdr.GetString (3)
- });
- }
- }
- }
-
- cnx.Close ();
- }
- return acties.ToArray();
- }
-
- ///
- /// Registers the activity.
- ///
- /// Activity.
- /// Code.
- public void RegisterActivity (string activity, string code, string comment)
- {
- using (NpgsqlConnection cnx = CreateConnection ()) {
- cnx.Open ();
- using (NpgsqlCommand cmd = cnx.CreateCommand ()) {
- cmd.CommandText = "insert into activity (meacode,title,applicationname,cmnt) " +
- " values (:code,:title,:app,:cmnt)";
- cmd.Parameters.AddWithValue ("code", code);
- cmd.Parameters.AddWithValue ("title", activity);
- cmd.Parameters.AddWithValue ("app", applicationName);
- cmd.Parameters.AddWithValue ("cmnt", comment);
- cmd.ExecuteNonQuery ();
- }
- cnx.Close ();
- }
- }
-
- ///
- /// Registers the command.
- ///
- /// The command id in db.
- /// COM.
- public long RegisterCommand (Command com)
- {
- long id;
-
- using (NpgsqlConnection cnx = CreateConnection ()) {
- using (NpgsqlCommand cmd = cnx.CreateCommand ()) {
- cmd.CommandText =
- "insert into commandes (prdref,creation,params,class,clientname,applicationname) values (:pref,:creat,:prms,:cls,:cli,:app) returning id";
- cmd.Parameters.AddWithValue ("pref", com.ProductRef);
- cmd.Parameters.AddWithValue ("creat", com.CreationDate);
- cmd.Parameters.AddWithValue ("prms", NpgsqlTypes.NpgsqlDbType.Jsonb,
- JsonConvert.SerializeObject(
- com.Parameters));
- cmd.Parameters.AddWithValue ("cls", com.GetType().FullName);
- cmd.Parameters.AddWithValue ("cli", com.ClientName);
- cmd.Parameters.AddWithValue ("app", ApplicationName);
- cnx.Open ();
- com.Id = id = (long)cmd.ExecuteScalar ();
- }
- }
- return id;
- }
-
- ///
- /// Gets the commands.
- ///
- /// The commands.
- /// Username.
- public CommandSet GetCommands (string username)
- {
- // Check the user's authorisations
- MembershipUser user = Membership.GetUser ();
- if (user.UserName != username)
- if (!Roles.IsUserInRole ("Admin"))
- if (!Roles.IsUserInRole ("FrontOffice"))
- throw new Exception ("Not allowed");
- CommandSet cmds = new CommandSet ();
-
- using (NpgsqlConnection cnx = CreateConnection ()) {
- using (NpgsqlCommand cmd = cnx.CreateCommand ()) {
- cmd.CommandText =
- "select id,creation,prdref,params::TEXT,class from commandes where @user = clientname and applicationname = @app";
- cmd.Parameters.AddWithValue ("@user", username);
- cmd.Parameters.AddWithValue ("@app", this.ApplicationName);
- cnx.Open ();
- using (NpgsqlDataReader rdr = cmd.ExecuteReader ()) {
- while (rdr.Read ()) {
- string cls = rdr.GetString (4);
- Command ycmd = Command.CreateCommand(cls);
- ycmd.Id = rdr.GetInt64 (0);
- ycmd.CreationDate = rdr.GetDateTime (1);
- ycmd.ProductRef = rdr.GetString (2);
- ycmd.ClientName = username;
- var prms = rdr.GetString (3);
- var obj = JsonConvert.DeserializeObject> (prms);
- ycmd.SetParameters(obj as Dictionary);
- cmds.Add (ycmd);
- }
- }
- }
- cnx.Close ();
- }
- return cmds;
- }
-
- ///
- /// Gets the stock status.
- ///
- /// The stock status.
- /// Product reference.
- public virtual StockStatus GetStockStatus (string productReference)
- {
- return StockStatus.NonExistent;
- }
-
-
- ///
- /// Gets the writting status changes.
- ///
- /// The writting statuses.
- /// Wrid.
- public StatusChange[] GetWrittingStatuses (long wrid)
- {
- throw new NotImplementedException ();
- }
-
- ///
- /// Gets the estimate status changes.
- ///
- /// The estimate statuses.
- /// Estid.
- public StatusChange[] GetEstimateStatuses (long estid)
- {
- throw new NotImplementedException ();
- }
-
- ///
- /// Tags the writting.
- ///
- /// Wrid.
- /// Tag.
- public void TagWritting (long wrid, string tag)
- {
- throw new NotImplementedException ();
- }
-
- ///
- /// Drops the writting tag .
- ///
- /// Wrid.
- /// Tag.
- public void DropWrittingTag (long wrid, string tag)
- {
- throw new NotImplementedException ();
- }
-
- ///
- /// Sets the writting status.
- ///
- /// Wrtid.
- /// Status.
- /// Username.
- public void SetWrittingStatus (long wrtid, int status, string username)
- {
- throw new NotImplementedException ();
- }
-
- ///
- /// Sets the estimate status.
- ///
- /// Estid.
- /// Status.
- /// Username.
- public void SetEstimateStatus (long estid, int status, string username)
- {
- throw new NotImplementedException ();
- }
-
- ///
- /// Releases all resource used by the object.
- ///
- /// Call when you are finished using the . The
- /// method leaves the in an unusable state. After
- /// calling , you must release all references to the so
- /// the garbage collector can reclaim the memory that the was occupying.
- public void Dispose ()
- {
- throw new NotImplementedException ();
- }
-
- ///
- /// Install the model in database using the specified cnx.
- ///
- /// Cnx.
- public void Install (System.Data.IDbConnection cnx)
- {
- throw new NotImplementedException ();
- }
-
- ///
- /// Uninstall the module data and data model from
- /// database, using the specified connection.
- ///
- /// Cnx.
- /// If set to true remove config.
- public void Uninstall (System.Data.IDbConnection cnx, bool removeConfig)
- {
- throw new NotImplementedException ();
- }
-
- ///
- /// Defaults the config.
- ///
- /// The config.
- /// App name.
- /// Cnx string.
- public ConfigurationSection DefaultConfig (string appName, string cnxStr)
- {
- throw new NotImplementedException ();
- }
-
-
- ///
- /// Gets or sets a value indicating whether this is active.
- ///
- /// true if active; otherwise, false.
- public bool Active {
- get {
- throw new NotImplementedException ();
- }
- set {
- throw new NotImplementedException ();
- }
- }
-
- ///
- /// Gets the different status labels.
- /// 0 is the starting status. Each status is an integer and the 0-based index
- /// of a string in this array.
- ///
- /// The status labels.
- public string[] Statuses {
- get {
- return new string[] { "Created", "Validated", "Success", "Error" };
- }
- }
-
- ///
- /// Gets the final statuses.
- ///
- /// The final statuses.
- public bool[] FinalStatuses {
- get {
- return new bool[] { false, false, true, true };
- }
- }
-
- ///
- /// Gets the estimates created by
- /// or for the given user by user name.
- ///
- /// The estimates.
- /// user name.
- public Estimate[] GetEstimates (string username)
- {
- if (username == null)
- throw new InvalidOperationException (
- "username cannot be" +
- " null at searching for estimates");
- List ids = new List ();
- List ests = new List ();
- using (NpgsqlConnection cnx = CreateConnection ()) {
- using (NpgsqlCommand cmd = cnx.CreateCommand ()) {
- cmd.CommandText =
- "select _id from estimate where client = @uname or username = @uname";
-
- cmd.Parameters.AddWithValue ("@uname", username);
- cnx.Open ();
-
- using (NpgsqlDataReader rdr = cmd.ExecuteReader ()) {
- while (rdr.Read ()) {
- ids.Add (rdr.GetInt64 (0));
- }
- rdr.Close ();
- }
- cnx.Close ();
- }
- foreach (long id in ids)
- ests.Add (Get (id));
- return ests.ToArray ();
- }
- }
-
- ///
- /// Gets the estimates.
- ///
- /// The estimates.
- /// Client.
- /// Responsible.
- public Estimate[] GetEstimates (string client, string responsible)
- {
- if (client == null && responsible == null)
- throw new InvalidOperationException (
- "client and responsible cannot be" +
- " both null at searching for estimates");
- List ids = new List ();
- List ests = new List ();
- using (NpgsqlConnection cnx = CreateConnection ()) {
- using (NpgsqlCommand cmd = cnx.CreateCommand ()) {
- cmd.CommandText =
- "select _id from estimate where ";
-
- if (client != null) {
- cmd.CommandText += "client = @clid";
- if (responsible != null)
- cmd.CommandText += " and ";
- cmd.Parameters.AddWithValue ("@clid", client);
- }
- if (responsible != null) {
- cmd.CommandText += "username = @resp";
- cmd.Parameters.AddWithValue ("@resp", responsible);
- }
-
- cnx.Open ();
-
- using (NpgsqlDataReader rdr = cmd.ExecuteReader ()) {
- while (rdr.Read ()) {
- ids.Add (rdr.GetInt64 (0));
- }
- rdr.Close ();
- }
- foreach (long id in ids)
- ests.Add (Get (id));
- return ests.ToArray ();
- }
- }
- }
-
- ///
- /// Drops the writting.
- ///
- /// Wrid.
- public void DropWritting (long wrid)
- {
-
- using (NpgsqlConnection cnx = CreateConnection ()) {
- using (NpgsqlCommand cmd = cnx.CreateCommand ()) {
- cmd.CommandText =
- "delete from writtings where _id = @wrid";
-
- cmd.Parameters.AddWithValue ("@wrid", wrid);
- cnx.Open ();
- cmd.ExecuteNonQuery ();
- }
- }
- }
-
- ///
- /// Drops the estimate.
- ///
- /// Estid.
- public void DropEstimate (long estid)
- {
- using (NpgsqlConnection cnx = CreateConnection ()) {
- using (NpgsqlCommand cmd = cnx.CreateCommand ()) {
- cmd.CommandText =
- "delete from estimate where _id = @estid";
-
- cmd.Parameters.AddWithValue ("@estid", estid);
- cnx.Open ();
- cmd.ExecuteNonQuery ();
- }
- }
- }
-
- ///
- /// Gets the estimate by identifier.
- ///
- /// The estimate.
- /// Estimid.
- public Estimate Get (long estimid)
- {
- Estimate est = null;
- using (NpgsqlConnection cnx = CreateConnection ()) {
- using (NpgsqlCommand cmd = cnx.CreateCommand ()) {
- cmd.CommandText =
- "select title,username,client,description from estimate where _id = @estid";
-
- cmd.Parameters.AddWithValue ("@estid", estimid);
- cnx.Open ();
- using (NpgsqlDataReader rdr = cmd.ExecuteReader ()) {
- if (!rdr.Read ()) {
- return null;
- }
- est = new Estimate ();
- est.Title = rdr.GetString (
- rdr.GetOrdinal ("title"));
-
- est.Responsible = rdr.GetString (
- rdr.GetOrdinal ("username"));
- int clientidx = rdr.GetOrdinal ("client");
- if (!rdr.IsDBNull (clientidx))
- est.Client = rdr.GetString (clientidx);
- int index = rdr.GetOrdinal ("description");
- if (!rdr.IsDBNull (index))
- est.Description = rdr.GetString (index);
- est.Id = estimid;
-
- rdr.Close ();
- }
- }
- // assert est != null
- using (NpgsqlCommand cmdw = new NpgsqlCommand ("select _id, productid, ucost, count, description from writtings where estimid = @estid", cnx)) {
- cmdw.Parameters.AddWithValue ("@estid", estimid);
- using (NpgsqlDataReader rdrw = cmdw.ExecuteReader ()) {
- List lw = null;
- if (rdrw.HasRows) {
- lw = new List ();
- while (rdrw.Read ()) {
- Writting w = new Writting ();
- int dei = rdrw.GetOrdinal ("description");
- if (!rdrw.IsDBNull (dei))
- w.Description = rdrw.GetString (dei);
- int opi = rdrw.GetOrdinal ("productid");
- if (!rdrw.IsDBNull (opi))
- w.ProductReference = rdrw.GetString (opi);
- int oco = rdrw.GetOrdinal ("count");
- if (!rdrw.IsDBNull (oco))
- w.Count = rdrw.GetInt32 (oco);
- int ouc = rdrw.GetOrdinal ("ucost");
- if (!rdrw.IsDBNull (ouc))
- w.UnitaryCost = rdrw.GetDecimal (ouc);
- w.Id = rdrw.GetInt64 (rdrw.GetOrdinal ("_id"));
- lw.Add (w);
- }
- est.Lines = lw.ToArray ();
- }
- }
- }
- return est;
- }
- }
-
- ///
- /// Updates the writting.
- ///
- /// Wr.
- public void UpdateWritting (Writting wr)
- {
- using (NpgsqlConnection cnx = CreateConnection ()) {
- using (NpgsqlCommand cmd = cnx.CreateCommand ()) {
- cmd.CommandText =
- "update writtings set " +
- "description = @desc, " +
- "ucost = @ucost, " +
- "count = @count, " +
- "productid = @prdid " +
- "where _id = @wrid";
- cmd.Parameters.AddWithValue ("@wrid", wr.Id);
- cmd.Parameters.AddWithValue ("@desc", wr.Description);
- cmd.Parameters.AddWithValue ("@ucost", wr.UnitaryCost);
- cmd.Parameters.AddWithValue ("@prdid", wr.ProductReference);
- cmd.Parameters.AddWithValue ("@count", wr.Count);
- cnx.Open ();
- cmd.ExecuteNonQuery ();
- cnx.Close ();
- }
- }
- }
-
- ///
- /// Saves the given Estimate object in database.
- ///
- /// the Estimate object.
- public void Update (Estimate estim)
- {
- using (NpgsqlConnection cnx = CreateConnection ()) {
- using (NpgsqlCommand cmd = cnx.CreateCommand ()) {
- cmd.CommandText =
- "update estimate set title = @tit, username = @un, " +
- "description = @descr, client = @cli where _id = @estid";
- cmd.Parameters.AddWithValue ("@tit", estim.Title);
- cmd.Parameters.AddWithValue ("@un", estim.Responsible);
- cmd.Parameters.AddWithValue ("@descr", estim.Description);
- cmd.Parameters.AddWithValue ("@cli", estim.Client);
- cmd.Parameters.AddWithValue ("@estid", estim.Id);
- cnx.Open ();
- cmd.ExecuteNonQuery ();
- cnx.Close ();
- }
- }
- }
-
- ///
- /// Add a line to the specified estimate by id,
- /// using the specified desc, ucost, count and productid.
- ///
- /// Estimate identifier.
- /// Textual description for this line.
- /// Unitary cost.
- /// Cost multiplier.
- /// Product identifier.
- public long Write (long estid, string desc, decimal ucost, int count, string productid)
- {
- using (NpgsqlConnection cnx = CreateConnection ()) {
- using (NpgsqlCommand cmd = cnx.CreateCommand ()) {
- cmd.CommandText =
- "insert into writtings (description, estimid, ucost, count, productid) VALUES (@dscr,@estid,@ucost,@count,@prdid) returning _id";
- cmd.Parameters.AddWithValue ("@dscr", desc);
- cmd.Parameters.AddWithValue ("@estid", estid);
-
- cmd.Parameters.AddWithValue ("@ucost", ucost);
- cmd.Parameters.AddWithValue ("@count", count);
- cmd.Parameters.AddWithValue ("@prdid", productid);
- cnx.Open ();
-
- long res = (long)cmd.ExecuteScalar ();
- cnx.Close ();
- return res;
- }
- }
- }
-
- ///
- /// Sets the desc.
- ///
- /// Writid.
- /// New desc.
- 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.AddWithValue ("@tit", newDesc);
- cmd.Parameters.AddWithValue ("@writid", writid);
- cnx.Open ();
- cmd.ExecuteNonQuery ();
- cnx.Close ();
- }
- }
- }
-
- ///
- /// Creates the estimate.
- ///
- /// The estimate.
- /// Client.
- /// Title.
- /// Responsible.
- /// Description.
- public Estimate CreateEstimate (string responsible, string client, string title, string description)
- {
- using (NpgsqlConnection cnx = CreateConnection ()) {
- using (NpgsqlCommand cmd = cnx.CreateCommand ()) {
- cmd.CommandText =
- "insert into estimate (title,description,username,client,applicationname) " +
- "values (@tit,@descr,@resp,@un,@app) returning _id";
- cmd.Parameters.AddWithValue ("@tit", title);
- cmd.Parameters.AddWithValue ("@un", client);
- cmd.Parameters.AddWithValue ("@resp", responsible);
- cmd.Parameters.AddWithValue ("@descr", description);
- cmd.Parameters.AddWithValue ("@app", ApplicationName);
- cnx.Open ();
- Estimate created = new Estimate ();
- created.Id = (long)cmd.ExecuteScalar ();
- cnx.Close ();
- created.Title = title;
- created.Description = description;
- created.Client = client;
- created.Responsible = responsible;
- return created;
- }
- }
- }
-
- string applicationName = null;
-
- ///
- /// Gets or sets the name of the application.
- ///
- /// The name of the application.
- public string ApplicationName {
- get {
- return applicationName;
- }
- set {
- applicationName = value;
- }
- }
-
- string cnxstr = null;
-
- ///
- /// Initialize this object using the specified name and config.
- ///
- /// Name.
- /// Config.
- 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"] ?? "/";
-
- }
-
- ///
- /// Creates the connection.
- ///
- /// The connection.
- protected NpgsqlConnection CreateConnection ()
- {
- return new NpgsqlConnection (cnxstr);
- }
-
- }
-}
-
diff --git a/NpgsqlContentProvider/NpgsqlContentProvider.csproj b/NpgsqlContentProvider/NpgsqlContentProvider.csproj
deleted file mode 100644
index b57719b3..00000000
--- a/NpgsqlContentProvider/NpgsqlContentProvider.csproj
+++ /dev/null
@@ -1,94 +0,0 @@
-
-
-
- Debug
- AnyCPU
- 8.0.30703
- 2.0
- {821FF72D-9F4B-4A2C-B95C-7B965291F119}
- Library
- WorkFlowProvider
- NpgsqlContentProvider
- v4.5.1
-
-
- true
- full
- false
- bin\Debug
- DEBUG;
- prompt
- 4
- false
- bin\Debug\WorkFlowProvider.xml
-
-
- full
- true
- bin\Release
- prompt
- 4
- false
-
-
- false
- bin\Lua
- 4
-
-
- false
- bin\TotemPre
- 4
-
-
- false
- bin\TotemProd
- 4
-
-
- false
- bin\YavscPre
- 4
-
-
- false
- bin\Yavsc
- 4
-
-
- false
- bin\Lua
- 4
-
-
-
-
-
-
-
-
-
-
- ..\packages\Npgsql.3.0.5\lib\net45\Npgsql.dll
-
-
- ..\packages\Newtonsoft.Json.8.0.1\lib\net45\Newtonsoft.Json.dll
-
-
-
-
-
-
-
-
-
-
-
- {68F5B80A-616E-4C3C-91A0-828AA40000BD}
- YavscModel
-
-
-
-
-
-
diff --git a/NpgsqlContentProvider/NpgsqlSkillProvider.cs b/NpgsqlContentProvider/NpgsqlSkillProvider.cs
deleted file mode 100644
index 6242cd88..00000000
--- a/NpgsqlContentProvider/NpgsqlSkillProvider.cs
+++ /dev/null
@@ -1,450 +0,0 @@
-//
-// NpgsqlSkillProvider.cs
-//
-// Author:
-// Paul Schneider
-//
-// Copyright (c) 2015 GNU GPL
-//
-// This program is free software: you can redistribute it and/or modify
-// it under the terms of the GNU Lesser General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
-//
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU Lesser General Public License for more details.
-//
-// You should have received a copy of the GNU Lesser General Public License
-// along with this program. If not, see .
-using System;
-using Yavsc.Model.Skill;
-using System.Configuration;
-using System.Collections.Specialized;
-using System.Collections.Generic;
-using Npgsql;
-using NpgsqlTypes;
-using Yavsc.Model.FrontOffice;
-
-namespace WorkFlowProvider
-{
- ///
- /// Npgsql skill provider.
- ///
- public class NpgsqlSkillProvider : SkillProvider
- {
- ///
- /// Initializes a new instance of the class.
- ///
- public NpgsqlSkillProvider ()
- {
-
- }
-
- string connectionString = null;
- string applicationName = null;
-
- ///
- /// Initialize this object using the specified name and config.
- ///
- /// Name.
- /// Config.
- public override void Initialize (string name, NameValueCollection config)
- {
- if (string.IsNullOrWhiteSpace (config ["connectionStringName"]))
- throw new ConfigurationErrorsException ("No name for Npgsql connection string found");
-
- connectionString = ConfigurationManager.ConnectionStrings [config ["connectionStringName"]].ConnectionString;
- applicationName = config ["applicationName"] ?? "/";
- }
-
- #region implemented abstract members of SkillProvider
-
- ///
- /// Gets the user skills.
- ///
- /// The user skills.
- /// Username.
- public override PerformerProfile GetUserSkills (string username)
- {
- var skills = new List ();
- var profile = new PerformerProfile (username);
- using (NpgsqlConnection cnx = new NpgsqlConnection (connectionString)) {
- cnx.Open ();
-
- using (NpgsqlCommand cmd = cnx.CreateCommand ()) {
- cmd.CommandText =
- "select p.uniqueid, d.rate, d.MEACode, u.email " +
- " from users u, profiles p, profiledata d where " +
- " u.username = :user and u.applicationname = :app " +
- " and p.username = u.username " +
- " and p.applicationname = u.applicationname " +
- " and p.uniqueid = d.uniqueid ";
- cmd.Parameters.AddWithValue ("user", NpgsqlTypes.NpgsqlDbType.Varchar, username);
- cmd.Parameters.AddWithValue ("app", NpgsqlTypes.NpgsqlDbType.Varchar, applicationName);
-
- using (var rdr = cmd.ExecuteReader ()) {
- rdr.Read ();
- profile.Id = rdr.GetInt64 (0);
- profile.Rate = rdr.GetInt32 (1);
- profile.MEACode = rdr.GetString (2);
- profile.EMail = rdr.GetString (3);
- }
- }
-
- using (NpgsqlCommand cmd = cnx.CreateCommand ()) {
- cmd.CommandText =
- " select u._id, u.skillid, s.name, " +
- " u.comment, u.rate from userskills u, " +
- " skill s " +
- " where u.skillid = s._id and " +
- " u.username = :uname " +
- " and s.applicationname = u.applicationname " +
- " and s.applicationname = :app " +
- " and s.meacode = :mea " +
- " order by u.rate desc ";
- cmd.Parameters.AddWithValue ("uname", NpgsqlTypes.NpgsqlDbType.Varchar, username);
- cmd.Parameters.AddWithValue ("app", NpgsqlTypes.NpgsqlDbType.Varchar, applicationName);
- cmd.Parameters.AddWithValue ("mea", NpgsqlTypes.NpgsqlDbType.Varchar, profile.MEACode);
- cmd.Prepare ();
- using (var rdr = cmd.ExecuteReader ()) {
- if (rdr.HasRows)
- while (rdr.Read ()) {
- skills.Add (new UserSkill () {
- Id = rdr.GetInt64 (0),
- SkillId = rdr.GetInt64 (1),
- SkillName = rdr.GetString (2),
- Comment = rdr.GetString (3),
- Rate = rdr.GetInt32 (4)
- });
- }
- profile.Skills = skills.ToArray ();
- }
- }
-
- cnx.Close ();
- }
- return profile;
- }
-
- ///
- /// Create the specified skill.
- ///
- /// skill.
- public override long Declare (SkillEntity skill)
- {
- long res = 0;
- using (NpgsqlConnection cnx = new NpgsqlConnection (connectionString)) {
- cnx.Open ();
- if (skill.Id == 0) {
- using (NpgsqlCommand cmd = cnx.CreateCommand ()) {
- cmd.CommandText = "insert into skill (name,meacode,rate,applicationname) " +
- " values (:name,:mea,:rate,:app) " +
- " returning _id ";
- cmd.Parameters.AddWithValue ("name", NpgsqlTypes.NpgsqlDbType.Varchar, skill.Name);
- cmd.Parameters.AddWithValue ("mea", NpgsqlTypes.NpgsqlDbType.Varchar, skill.MEACode);
- cmd.Parameters.AddWithValue ("rate",
- NpgsqlTypes.NpgsqlDbType.Integer, skill.Rate);
- cmd.Parameters.AddWithValue ("app", NpgsqlTypes.NpgsqlDbType.Varchar, applicationName);
- res = (long)cmd.ExecuteScalar ();
- }
- } else {
- using (NpgsqlCommand cmd = cnx.CreateCommand ()) {
- cmd.CommandText = "update skill set name = :name, rate = :rate where _id = :sid";
- cmd.Parameters.AddWithValue ("name", NpgsqlTypes.NpgsqlDbType.Bigint, skill.Id);
- cmd.Parameters.AddWithValue ("rate",
- NpgsqlTypes.NpgsqlDbType.Integer, skill.Rate);
- cmd.ExecuteNonQuery ();
- }
- }
- cnx.Close ();
- }
- return res;
- }
-
- ///
- /// Declares the userskill.
- ///
- /// The userskill.
- /// userskill.
- public override long Declare (UserSkillDeclaration userskill)
- {
- long res = 0;
- using (NpgsqlConnection cnx = new NpgsqlConnection (connectionString)) {
- cnx.Open ();
- if (userskill.Id == 0) {
- using (NpgsqlCommand cmd = cnx.CreateCommand ()) {
- if (userskill.Comment == null)
- userskill.Comment = "";
- cmd.CommandText = "insert into userskills" +
- " (username, applicationname, skillid, rate, comment) " +
- " values (:uname,:app,:sid,:rate,:cmnt) returning _id";
- cmd.Parameters.AddWithValue ("uname",
- NpgsqlTypes.NpgsqlDbType.Varchar, userskill.UserName);
- cmd.Parameters.AddWithValue ("app",
- NpgsqlTypes.NpgsqlDbType.Varchar, applicationName);
- cmd.Parameters.AddWithValue ("sid",
- NpgsqlTypes.NpgsqlDbType.Bigint, userskill.SkillId);
- cmd.Parameters.AddWithValue ("rate",
- NpgsqlTypes.NpgsqlDbType.Integer, userskill.Rate);
- cmd.Parameters.AddWithValue ("cmnt",
- NpgsqlTypes.NpgsqlDbType.Varchar, userskill.Comment);
- userskill.Id = res = (long)cmd.ExecuteScalar ();
- }
- } else {
- using (NpgsqlCommand cmd = cnx.CreateCommand ()) {
- cmd.CommandText = "update userskills" +
- " set rate = :rate," +
- " comment = :cmnt) " +
- " where _id = :usid ";
- cmd.Parameters.AddWithValue ("cmnt",
- NpgsqlTypes.NpgsqlDbType.Varchar, userskill.Comment);
- cmd.Parameters.AddWithValue ("rate",
- NpgsqlTypes.NpgsqlDbType.Integer, userskill.Rate);
- cmd.Parameters.AddWithValue ("usid",
- NpgsqlTypes.NpgsqlDbType.Bigint, userskill.Id);
- cmd.ExecuteNonQuery ();
- }
- }
- cnx.Close ();
- }
- return res;
- }
-
- ///
- /// Rate the specified user's skill.
- /// It creates the record describing the user's skill
- /// if not existent.
- ///
- /// UserSkillRating.
- public override long Rate (UserSkillRating userSkill)
- {
- // TODO Use the Author value to choose
- // between a self rating that goes into the `userskills` table
- // and a client rating that goes into the
- // `statisfaction` table.
- long usid = 0;
- using (NpgsqlConnection cnx = new NpgsqlConnection (connectionString)) {
- cnx.Open ();
- using (NpgsqlCommand cmd = cnx.CreateCommand ()) {
- if (userSkill.Id == 0) {
- cmd.CommandText = "insert into userskills " +
- " ( skillid, rate, username, applicationname ) " +
- " values ( :sid, :rate, :uname, :app ) " +
- " returning _id ";
- cmd.Parameters.AddWithValue ("sid", NpgsqlDbType.Bigint, userSkill.Id);
- cmd.Parameters.AddWithValue ("rate", NpgsqlDbType.Integer, userSkill.Rate);
- cmd.Parameters.AddWithValue ("uname", NpgsqlDbType.Varchar, userSkill.Performer);
- cmd.Parameters.AddWithValue ("app", NpgsqlDbType.Varchar, applicationName);
- usid = (long)cmd.ExecuteScalar ();
- } else {
- cmd.CommandText = "update userskills " +
- " set rate = :rate " +
- " where _id = :usid ";
- cmd.Parameters.AddWithValue ("rate", NpgsqlDbType.Integer, userSkill.Rate);
- cmd.Parameters.AddWithValue ("usid", NpgsqlDbType.Bigint, userSkill.Id);
- cmd.ExecuteNonQuery ();
- }
-
- }
- cnx.Close ();
- }
- return usid;
- }
-
- ///
- /// Rate the specified skill.
- /// The access to this method
- /// should be restricted to an Admin,
- /// or a rating engine
- ///
- /// Skill.
- public override void Rate (AuthentificatedSkillRating skill)
- {
- // TODO Use the Author value to choose
- // between a global setting for the application
- // and an user setting on his needs
-
- // when the `Author` value is not null,
- // it's concerning a rating on a need of the Author
- // if not, it's a need of the site
-
- using (NpgsqlConnection cnx = new NpgsqlConnection (connectionString)) {
- cnx.Open ();
- using (NpgsqlCommand cmd = cnx.CreateCommand ()) {
- cmd.CommandText = "update skill set rate = :rate where _id = :sid";
- cmd.Parameters.AddWithValue ("sid", NpgsqlTypes.NpgsqlDbType.Bigint, skill.Id);
- cmd.Parameters.AddWithValue ("rate", NpgsqlTypes.NpgsqlDbType.Integer, skill.Rate);
- cmd.ExecuteNonQuery ();
- }
- cnx.Close ();
- }
- }
-
- ///
- /// Finds the skills.
- ///
- /// The skill identifier.
- /// Pattern.
- /// MEA Code.
- public override SkillEntity[] FindSkill (string pattern, string MEACode)
- {
- List skills = new List ();
- using (NpgsqlConnection cnx = new NpgsqlConnection (connectionString)) {
- cnx.Open ();
- using (NpgsqlCommand cmd = cnx.CreateCommand ()) {
-
- cmd.CommandText = "select _id, name, rate, meacode " +
- " from skill " +
- " where name like :name ";
- if (MEACode != null)
- cmd.CommandText +=
- " and meacode = :mea ";
- cmd.CommandText += " and applicationname = :app " +
- " order by rate desc";
- cmd.Parameters.AddWithValue ("name", NpgsqlTypes.NpgsqlDbType.Varchar, pattern);
- if (MEACode != null)
- cmd.Parameters.AddWithValue ("mea", NpgsqlTypes.NpgsqlDbType.Varchar, MEACode);
- cmd.Parameters.AddWithValue ("app", NpgsqlTypes.NpgsqlDbType.Varchar, applicationName);
- cmd.Prepare ();
- using (var rdr = cmd.ExecuteReader ()) {
- if (rdr.HasRows)
- while (rdr.Read ()) {
- skills.Add (new SkillEntity () {
- Id = (long)rdr.GetInt64 (0),
- Name = (string)rdr.GetString (1),
- Rate = (int)rdr.GetInt32 (2),
- MEACode = (string)rdr.GetString (3),
- });
- }
- }
- }
- cnx.Close ();
- }
- return skills.ToArray ();
- }
-
- ///
- /// Finds the performer.
- ///
- /// The performer.
- /// MEACode.
- /// Skills.
- public override string[] FindPerformer (string MEACode, SkillRating [] skills)
- {
- var res = new List ();
-
- using (NpgsqlConnection cnx = new NpgsqlConnection (connectionString)) {
- cnx.Open ();
- if (skills != null) {
- using (NpgsqlCommand cmd = cnx.CreateCommand ()) {
-
- // on cherche ici simplement les prestataires
- // ayant déclaré les compétences spécifiées.
-
- cmd.CommandText = @" select u.username
- from userskills s, profiledata p, profiles q, users u
- where s.username = u.username
- and s.applicationname = u.applicationname
- and s.skillid = :sid
- and p.meacode = :mea
- and u.username = q.username
- and u.applicationname = q.applicationname
- and p.uniqueid = q.uniqueid
- and u.applicationname = :app
- and u.islockedout = FALSE
- and u.isapproved = TRUE
-order by s.rate desc ";
- cmd.Parameters.AddWithValue ("sid", NpgsqlDbType.Bigint, 0);
- cmd.Parameters.AddWithValue ("app", NpgsqlDbType.Varchar, applicationName);
- cmd.Parameters.AddWithValue ("mea", NpgsqlDbType.Varchar, MEACode);
- cmd.Prepare ();
- foreach (SkillRating skill in skills) {
- cmd.Parameters ["sid"].Value = skill.Id;
- using (var rdr = cmd.ExecuteReader ()) {
- while (rdr.Read ()) {
- string uname = rdr.GetString (0);
- if (!res.Contains (uname))
- res.Add (uname);
- }
- }
- }
- }
- }
- if (res.Count < 10) {
- using (NpgsqlCommand cmd = cnx.CreateCommand ()) {
- // Si on a trouvé trop peu de prestataire ayant
- // déclaré ces compétences (moins de 10),
- // On en cherche un ayant
- // simplement déclaré avoir l'activité
- // concernée.
- // TODO implement a configuration parameter :
-
- cmd.CommandText = " select u.username " +
- " from profiledata p, profiles q, users u " +
- " where u.username = q.username " +
- " and u.applicationname = q.applicationname " +
- " and p.uniqueid = q.uniqueid " +
- " and p.meacode = :mea " +
- " and u.applicationname = :app " +
- " and u.islockedout = FALSE " +
- " and u.isapproved = TRUE " +
- " order by p.rate desc " ;
- cmd.Parameters.AddWithValue ("app", NpgsqlDbType.Varchar, applicationName);
- cmd.Parameters.AddWithValue ("mea", NpgsqlDbType.Varchar, MEACode);
-
- using (var rdr = cmd.ExecuteReader ()) {
- while (rdr.Read ()) {
- string uname = rdr.GetString (0);
- if (!res.Contains (uname))
- res.Add (uname);
- }
- }
- }
- }
- cnx.Close ();
- }
- return res.ToArray ();
- }
-
- ///
- /// Deletes the skill.
- ///
- /// Skill identifier.
- public override void DeleteSkill (long skillId)
- {
- using (NpgsqlConnection cnx = new NpgsqlConnection (connectionString)) {
- cnx.Open ();
- using (NpgsqlCommand cmd = cnx.CreateCommand ()) {
- cmd.CommandText = " delete from skill " +
- " where _id = :sid ";
- cmd.Parameters.AddWithValue ("sid", NpgsqlTypes.NpgsqlDbType.Bigint, skillId);
- cmd.ExecuteNonQuery ();
- }
- cnx.Close ();
- }
- }
-
- ///
- /// Deletes the user skill.
- ///
- /// User skill identifier.
- public override void DeleteUserSkill (long userSkillId)
- {
- using (NpgsqlConnection cnx = new NpgsqlConnection (connectionString)) {
- cnx.Open ();
- using (NpgsqlCommand cmd = cnx.CreateCommand ()) {
- cmd.CommandText = " delete from userskills " +
- " where _id = :usid ";
- cmd.Parameters.AddWithValue ("usid", NpgsqlTypes.NpgsqlDbType.Bigint, userSkillId);
- cmd.ExecuteNonQuery ();
- }
- cnx.Close ();
- }
- }
-
- #endregion
- }
-}
-
diff --git a/NpgsqlContentProvider/Properties/AssemblyInfo.cs b/NpgsqlContentProvider/Properties/AssemblyInfo.cs
deleted file mode 100644
index 6344211b..00000000
--- a/NpgsqlContentProvider/Properties/AssemblyInfo.cs
+++ /dev/null
@@ -1,22 +0,0 @@
-using System.Reflection;
-using System.Runtime.CompilerServices;
-
-// Information about this assembly is defined by the following attributes.
-// Change them to the values specific to your project.
-[assembly: AssemblyTitle ("WorkFlowProvider")]
-[assembly: AssemblyDescription ("")]
-[assembly: AssemblyConfiguration ("")]
-[assembly: AssemblyCompany ("")]
-[assembly: AssemblyProduct ("")]
-[assembly: AssemblyCopyright ("Paul Schneider")]
-[assembly: AssemblyTrademark ("")]
-[assembly: AssemblyCulture ("")]
-// The assembly version has the format "{Major}.{Minor}.{Build}.{Revision}".
-// The form "{Major}.{Minor}.*" will automatically update the build and revision,
-// and "{Major}.{Minor}.{Build}.*" will update just the revision.
-[assembly: AssemblyVersion ("1.0.*")]
-// The following attributes are used to specify the signing key for the assembly,
-// if desired. See the Mono documentation for more information about signing.
-//[assembly: AssemblyDelaySign(false)]
-//[assembly: AssemblyKeyFile("")]
-
diff --git a/NpgsqlContentProvider/packages.config b/NpgsqlContentProvider/packages.config
deleted file mode 100644
index 60078080..00000000
--- a/NpgsqlContentProvider/packages.config
+++ /dev/null
@@ -1,9 +0,0 @@
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/NpgsqlMRPProviders/AssemblyInfo.cs b/NpgsqlMRPProviders/AssemblyInfo.cs
deleted file mode 100644
index 5aad255b..00000000
--- a/NpgsqlMRPProviders/AssemblyInfo.cs
+++ /dev/null
@@ -1,27 +0,0 @@
-using System.Reflection;
-using System.Runtime.CompilerServices;
-
-// Information about this assembly is defined by the following attributes.
-// Change them to the values specific to your project.
-
-[assembly: AssemblyTitle("NpgsqlMRPProviders")]
-[assembly: AssemblyDescription("")]
-[assembly: AssemblyConfiguration("")]
-[assembly: AssemblyCompany("")]
-[assembly: AssemblyProduct("")]
-[assembly: AssemblyCopyright("paul")]
-[assembly: AssemblyTrademark("")]
-[assembly: AssemblyCulture("")]
-
-// The assembly version has the format "{Major}.{Minor}.{Build}.{Revision}".
-// The form "{Major}.{Minor}.*" will automatically update the build and revision,
-// and "{Major}.{Minor}.{Build}.*" will update just the revision.
-
-[assembly: AssemblyVersion("1.0.*")]
-
-// The following attributes are used to specify the signing key for the assembly,
-// if desired. See the Mono documentation for more information about signing.
-
-//[assembly: AssemblyDelaySign(false)]
-//[assembly: AssemblyKeyFile("")]
-
diff --git a/NpgsqlMRPProviders/NpgsqlMRPProviders.csproj b/NpgsqlMRPProviders/NpgsqlMRPProviders.csproj
deleted file mode 100644
index 44c68f0e..00000000
--- a/NpgsqlMRPProviders/NpgsqlMRPProviders.csproj
+++ /dev/null
@@ -1,110 +0,0 @@
-
-
-
- Debug
- AnyCPU
- 8.0.30703
- 2.0
- {BBA7175D-7F92-4278-96FC-84C495A2B5A6}
- Library
- Npgsql.Web
- NpgsqlMRPProviders
- v4.5.1
-
-
- true
- full
- false
- bin\Debug
- DEBUG;
- prompt
- 4
- false
- bin\Debug\NpgsqlMRPProviders.xml
-
-
- none
- true
- bin\Release
- prompt
- 4
- false
-
-
- false
- bin\Lua
- 4
-
-
- false
- bin\TotemPre
- 4
-
-
- false
- bin\TotemProd
- 4
-
-
- false
- bin\YavscPre
- 4
-
-
- false
- bin\Yavsc
- 4
-
-
- false
- bin\Lua
- 4
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- ..\packages\Npgsql.3.0.5\lib\net45\Npgsql.dll
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- {68F5B80A-616E-4C3C-91A0-828AA40000BD}
- YavscModel
-
-
-
\ No newline at end of file
diff --git a/NpgsqlMRPProviders/NpgsqlMembershipProvider.cs b/NpgsqlMRPProviders/NpgsqlMembershipProvider.cs
deleted file mode 100644
index 22b100d9..00000000
--- a/NpgsqlMRPProviders/NpgsqlMembershipProvider.cs
+++ /dev/null
@@ -1,1397 +0,0 @@
-using System.Web.Security;
-using System.Web.Configuration;
-using System.Collections.Specialized;
-using System;
-using System.Configuration.Provider;
-using System.Configuration;
-using NpgsqlTypes;
-using System.Data;
-using System.Text;
-using System.Security.Cryptography;
-
-namespace Npgsql.Web
-{
-
- ///
- /// Npgsql membership provider.
- ///
- public sealed class NpgsqlMembershipProvider: MembershipProvider
- {
-
- //
- // Global connection string, generated password length.
- //
-
- private int newPasswordLength = 8;
- private string connectionString;
-
- //
- // Used when determining encryption key values.
- //
-
- private MachineKeySection machineKey;
-
- //
- // System.Configuration.Provider.ProviderBase.Initialize Method
- //
- ///
- /// Initialize the specified name and config.
- ///
- /// Name.
- /// Config.
- public override void Initialize (string name, NameValueCollection config)
- {
- //
- // Initialize values from web.config.
- //
-
- if (config == null)
- throw new ArgumentNullException ("config");
-
- if (name == null || name.Length == 0)
- name = "NpgsqlMembershipProvider";
-
- if (String.IsNullOrEmpty (config ["description"])) {
- config.Remove ("description");
- config.Add ("description", "Sample Npgsql Membership provider");
- }
-
- // Initialize the abstract base class.
- base.Initialize (name, config);
-
- pApplicationName = GetConfigValue (config ["applicationName"],
- System.Web.Hosting.HostingEnvironment.ApplicationVirtualPath);
- pMaxInvalidPasswordAttempts = Convert.ToInt32 (GetConfigValue (config ["maxInvalidPasswordAttempts"], "5"));
- pPasswordAttemptWindow = Convert.ToInt32 (GetConfigValue (config ["passwordAttemptWindow"], "10"));
- pMinRequiredNonAlphanumericCharacters = Convert.ToInt32 (GetConfigValue (config ["minRequiredNonAlphanumericCharacters"], "1"));
- pMinRequiredPasswordLength = Convert.ToInt32 (GetConfigValue (config ["minRequiredPasswordLength"], "7"));
- pPasswordStrengthRegularExpression = Convert.ToString (GetConfigValue (config ["passwordStrengthRegularExpression"], ""));
- pEnablePasswordReset = Convert.ToBoolean (GetConfigValue (config ["enablePasswordReset"], "true"));
- pEnablePasswordRetrieval = Convert.ToBoolean (GetConfigValue (config ["enablePasswordRetrieval"], "true"));
- pRequiresQuestionAndAnswer = Convert.ToBoolean (GetConfigValue (config ["requiresQuestionAndAnswer"], "false"));
- pRequiresUniqueEmail = Convert.ToBoolean (GetConfigValue (config ["requiresUniqueEmail"], "true"));
- string temp_format = config ["passwordFormat"];
- if (temp_format == null) {
- temp_format = "Hashed";
- }
-
- switch (temp_format) {
- case "Hashed":
- pPasswordFormat = MembershipPasswordFormat.Hashed;
- break;
- case "Encrypted":
- pPasswordFormat = MembershipPasswordFormat.Encrypted;
- break;
- case "Clear":
- pPasswordFormat = MembershipPasswordFormat.Clear;
- break;
- default:
- throw new ProviderException ("Password format not supported.");
- }
-
- //
- // Initialize NpgsqlConnection.
- //
-
- ConnectionStringSettings ConnectionStringSettings =
- ConfigurationManager.ConnectionStrings [config ["connectionStringName"]];
-
- if (ConnectionStringSettings == null || ConnectionStringSettings.ConnectionString.Trim () == "") {
- throw new ProviderException ("Connection string cannot be blank.");
- }
- connectionString = ConnectionStringSettings.ConnectionString;
-
- // Get encryption and decryption key information from the configuration.
- Configuration cfg =
- WebConfigurationManager.OpenWebConfiguration (System.Web.Hosting.HostingEnvironment.ApplicationVirtualPath);
- machineKey = (MachineKeySection)cfg.GetSection ("system.web/machineKey");
-
- if (machineKey.ValidationKey.Contains ("AutoGenerate"))
- if (PasswordFormat != MembershipPasswordFormat.Clear)
- throw new ProviderException ("Hashed or Encrypted passwords " +
- "are not supported with auto-generated keys."
- );
- }
-
-
- //
- // A helper function to retrieve config values from the configuration file.
- //
-
- private string GetConfigValue (string configValue, string defaultValue)
- {
- if (String.IsNullOrEmpty (configValue))
- return defaultValue;
-
- return configValue;
- }
-
-
- //
- // System.Web.Security.MembershipProvider properties.
- //
- private string pApplicationName;
- private bool pEnablePasswordReset;
- private bool pEnablePasswordRetrieval;
- private bool pRequiresQuestionAndAnswer;
- private bool pRequiresUniqueEmail;
- private int pMaxInvalidPasswordAttempts;
- private int pPasswordAttemptWindow;
- private MembershipPasswordFormat pPasswordFormat;
- ///
- /// Gets or sets the name of the application.
- ///
- /// The name of the application.
- public override string ApplicationName {
- get { return pApplicationName; }
- set { pApplicationName = value; }
- }
- ///
- /// Gets a value indicating whether this enable password reset.
- ///
- /// true if enable password reset; otherwise, false.
- public override bool EnablePasswordReset {
- get { return pEnablePasswordReset; }
- }
- ///
- /// Gets a value indicating whether this enable password retrieval.
- ///
- /// true if enable password retrieval; otherwise, false.
- public override bool EnablePasswordRetrieval {
- get { return pEnablePasswordRetrieval; }
- }
- ///
- /// Gets a value indicating whether this requires question and answer.
- ///
- /// true if requires question and answer; otherwise, false.
- public override bool RequiresQuestionAndAnswer {
- get { return pRequiresQuestionAndAnswer; }
- }
- ///
- /// Gets a value indicating whether this requires unique email.
- ///
- /// true if requires unique email; otherwise, false.
- public override bool RequiresUniqueEmail {
- get { return pRequiresUniqueEmail; }
- }
- ///
- /// Gets the max invalid password attempts.
- ///
- /// The max invalid password attempts.
- public override int MaxInvalidPasswordAttempts {
- get { return pMaxInvalidPasswordAttempts; }
- }
- ///
- /// Gets the password attempt window.
- ///
- /// The password attempt window.
- public override int PasswordAttemptWindow {
- get { return pPasswordAttemptWindow; }
- }
- ///
- /// Gets the password format.
- ///
- /// The password format.
- public override MembershipPasswordFormat PasswordFormat {
- get { return pPasswordFormat; }
- }
-
- private int pMinRequiredNonAlphanumericCharacters;
- ///
- /// Gets the minimum required non alphanumeric characters.
- ///
- /// The minimum required non alphanumeric characters.
- public override int MinRequiredNonAlphanumericCharacters {
- get { return pMinRequiredNonAlphanumericCharacters; }
- }
-
- private int pMinRequiredPasswordLength;
- ///
- /// Gets the minimum length of the required password.
- ///
- /// The minimum length of the required password.
- public override int MinRequiredPasswordLength {
- get { return pMinRequiredPasswordLength; }
- }
-
- private string pPasswordStrengthRegularExpression;
- ///
- /// Gets the password strength regular expression.
- ///
- /// The password strength regular expression.
- public override string PasswordStrengthRegularExpression {
- get { return pPasswordStrengthRegularExpression; }
- }
-
- //
- // System.Web.Security.MembershipProvider methods.
- //
-
- //
- // MembershipProvider.ChangePassword
- //
- /// To be added.
- /// To be added.
- ///
- /// Changes the password.
- ///
- /// true, if password was changed, false otherwise.
- /// Username.
- /// Old pwd.
- public override bool ChangePassword (string username, string oldPwd, string newPwd)
- {
- if (!ValidateUser (username, oldPwd))
- return false;
- ValidatePasswordEventArgs args = new ValidatePasswordEventArgs (username, newPwd, true);
- OnValidatingPassword (args);
- if (args.Cancel) {
- if (args.FailureInformation != null)
- throw args.FailureInformation;
- else
- throw new MembershipPasswordException ("Change password canceled due to new password validation failure.");
- }
- int rowsAffected = 0;
-
- using (NpgsqlConnection conn = new NpgsqlConnection (connectionString)) {
- using (NpgsqlCommand cmd = new NpgsqlCommand ("UPDATE Users " +
- " SET Passw = @Password, LastPasswordChangedDate = @LastPasswordChangedDate " +
- " WHERE Username = @Username AND ApplicationName = @ApplicationName", conn)) {
- cmd.Parameters.AddWithValue ("@Password", NpgsqlDbType.Varchar, 255).Value = EncodePassword (newPwd);
- cmd.Parameters.AddWithValue ("@LastPasswordChangedDate", DateTime.Now);
- cmd.Parameters.AddWithValue ("@Username", NpgsqlDbType.Varchar, 255).Value = username;
- cmd.Parameters.AddWithValue ("@ApplicationName", NpgsqlDbType.Varchar, 255).Value = pApplicationName;
- conn.Open ();
- rowsAffected = cmd.ExecuteNonQuery ();
- conn.Close ();
- }
- }
- if (rowsAffected > 0) {
- return true;
- }
-
- return false;
- }
-
-
-
- //
- // MembershipProvider.ChangePasswordQuestionAndAnswer
- //
- /// To be added.
- /// To be added.
- ///
- /// Changes the password question and answer.
- ///
- /// true, if password question and answer was changed, false otherwise.
- /// Username.
- /// Password.
- /// New pwd question.
- public override bool ChangePasswordQuestionAndAnswer (string username,
- string password,
- string newPwdQuestion,
- string newPwdAnswer)
- {
- if (!ValidateUser (username, password))
- return false;
- int rowsAffected = 0;
- using (NpgsqlConnection conn = new NpgsqlConnection (connectionString)) {
- using (NpgsqlCommand cmd = new NpgsqlCommand ("UPDATE Users " +
- " SET PasswordQuestion = @Question, PasswordAnswer = @Answer" +
- " WHERE Username = @Username AND ApplicationName = @ApplicationName", conn)) {
- cmd.Parameters.AddWithValue ("@Question", NpgsqlDbType.Varchar, 255).Value = newPwdQuestion;
- cmd.Parameters.AddWithValue ("@Answer", NpgsqlDbType.Varchar, 255).Value = EncodePassword (newPwdAnswer);
- cmd.Parameters.AddWithValue ("@Username", NpgsqlDbType.Varchar, 255).Value = username;
- cmd.Parameters.AddWithValue ("@ApplicationName", NpgsqlDbType.Varchar, 255).Value = pApplicationName;
- conn.Open ();
- rowsAffected = cmd.ExecuteNonQuery ();
- conn.Close ();
- }
- }
- if (rowsAffected > 0) {
- return true;
- }
-
- return false;
- }
-
-
-
- //
- // MembershipProvider.CreateUser
- //
-
- /// Creates an User.
- ///
- /// To be added.
- ///
- /// To be added.
- /// The user.
- /// Username.
- /// Password.
- /// E-mail.
- /// Password question.
- /// Password answer.
- /// If set to true is approved.
- /// To be added.
- /// Status.
- public override MembershipUser CreateUser (string username,
- string password,
- string email,
- string passwordQuestion,
- string passwordAnswer,
- bool isApproved,
- object providerUserKey,
- out MembershipCreateStatus status)
- {
- ValidatePasswordEventArgs args =
- new ValidatePasswordEventArgs (username, password, true);
-
- OnValidatingPassword (args);
-
- if (args.Cancel) {
- status = MembershipCreateStatus.InvalidPassword;
- return null;
- }
- if (RequiresUniqueEmail && GetUserNameByEmail (email) != "") {
- status = MembershipCreateStatus.DuplicateEmail;
- return null;
- }
-
- MembershipUser u = GetUser (username, false);
- if (passwordQuestion == null)
- passwordQuestion = "";
- if (passwordAnswer == null)
- passwordAnswer = "";
- if (u == null) {
- DateTime createDate = DateTime.Now;
-
- if (providerUserKey == null) {
- providerUserKey = Guid.NewGuid ();
- } else {
- if (!(providerUserKey is Guid)) {
- status = MembershipCreateStatus.InvalidProviderUserKey;
- return null;
- }
- }
-
- using (NpgsqlConnection conn = new NpgsqlConnection (connectionString)) {
- conn.Open ();
-
- NpgsqlTransaction tran = conn.BeginTransaction();
- long prid = 0;
- using (NpgsqlCommand cmd = new NpgsqlCommand ("INSERT INTO profiles (username,applicationname,isanonymous)\n" +
- "VALUES (:uname,:app,FALSE) returning uniqueid")) {
- cmd.Connection = conn;
- cmd.Parameters.AddWithValue ("uname", username);
- cmd.Parameters.AddWithValue ("app", pApplicationName);
-
- prid = (long) cmd.ExecuteScalar();
- }
- using (NpgsqlCommand cmdpdins = conn.CreateCommand ()) {
- cmdpdins.CommandText = "insert into profiledata (uniqueid) values (@puid)";
- cmdpdins.Parameters.AddWithValue ("@puid", prid);
- cmdpdins.ExecuteNonQuery ();
- }
- using (NpgsqlCommand cmd = new NpgsqlCommand ("INSERT INTO Users " +
- " (PKID, Username, Passw, Email, PasswordQuestion, " +
- " PasswordAnswer, IsApproved," +
- " Comment, CreationDate, LastPasswordChangedDate, LastActivityDate," +
- " ApplicationName, IsLockedOut, LastLockedOutDate," +
- " FailedPasswordAttemptCount, FailedPasswordAttemptWindowStart, " +
- " FailedPasswordAnswerAttemptCount, FailedPasswordAnswerAttemptWindowStart)" +
- " Values(@PKID, @Username, @Password, @Email, @PasswordQuestion, @PasswordAnswer, @IsApproved," +
- "@Comment, @CreationDate, @LastPasswordChangedDate, @LastActivityDate, " +
- "@ApplicationName,@IsLockedOut, @LastLockedOutDate," +
- "@FailedPasswordAttemptCount , @FailedPasswordAttemptWindowStart, " +
- " @FailedPasswordAnswerAttemptCount, @FailedPasswordAnswerAttemptWindowStart)", conn)) {
- string pkid = providerUserKey.ToString ();
- cmd.Parameters.AddWithValue ("@PKID", pkid);
- cmd.Parameters.AddWithValue ("@Username", username);
- cmd.Parameters.AddWithValue ("@Password", EncodePassword (password));
- cmd.Parameters.AddWithValue ("@Email", email);
- cmd.Parameters.AddWithValue ("@PasswordQuestion", passwordQuestion);
- cmd.Parameters.AddWithValue ("@PasswordAnswer", EncodePassword (passwordAnswer));
- cmd.Parameters.AddWithValue ("@IsApproved", isApproved);
- cmd.Parameters.AddWithValue ("@Comment", "");
- cmd.Parameters.AddWithValue ("@CreationDate", createDate);
- cmd.Parameters.AddWithValue ("@LastPasswordChangedDate", createDate);
- cmd.Parameters.AddWithValue ("@LastActivityDate", createDate);
- cmd.Parameters.AddWithValue ("@ApplicationName", pApplicationName);
- cmd.Parameters.AddWithValue ("@IsLockedOut", false);
- cmd.Parameters.AddWithValue ("@LastLockedOutDate", createDate);
- cmd.Parameters.AddWithValue ("@FailedPasswordAttemptCount", 0);
- cmd.Parameters.AddWithValue ("@FailedPasswordAttemptWindowStart", createDate);
- cmd.Parameters.AddWithValue ("@FailedPasswordAnswerAttemptCount", 0);
- cmd.Parameters.AddWithValue ("@FailedPasswordAnswerAttemptWindowStart", createDate);
- int recAdded = cmd.ExecuteNonQuery ();
- if (recAdded > 0) {
- status = MembershipCreateStatus.Success;
- } else {
- status = MembershipCreateStatus.UserRejected;
- }
- }
- tran.Commit();
- conn.Close ();
- }
- return GetUser (username, false);
- } else {
- status = MembershipCreateStatus.DuplicateUserName;
- }
- return null;
- }
-
- //
- // MembershipProvider.DeleteUser
- //
- ///
- /// To be added.
- ///
- ///
- /// Delete the user from given name.
- ///
- ///
- /// The deleteAllRelatedData parameter usage has to be implemented.
- ///
- ///
- /// The user.
- ///
- ///
- /// If set to true username.
- ///
- ///
- /// If set to true delete all related data.
- ///
- public override bool DeleteUser (string username, bool deleteAllRelatedData)
- {
- int rowsAffected = 0;
- using (NpgsqlConnection conn = new NpgsqlConnection (connectionString)) {
- conn.Open ();
- NpgsqlTransaction trans = conn.BeginTransaction ();
- using (NpgsqlCommand cmd = new NpgsqlCommand ("DELETE FROM users " +
- " WHERE username = @Username AND applicationname = @ApplicationName", conn)) {
- cmd.Parameters.AddWithValue ("@Username", NpgsqlDbType.Varchar, 255).Value = username;
- cmd.Parameters.AddWithValue ("@ApplicationName", NpgsqlDbType.Varchar, 255).Value = pApplicationName;
-
- rowsAffected = cmd.ExecuteNonQuery ();
- }
-
- // TODO if (deleteAllRelatedData) { Process commands to delete all data for the user in the database. }
- // OR NOT TO DO, to me, deleting an user implies delete all of its related data in db,
- // as long they belong to him.
- //
- // So, just ignore this parameter,
- // and remove the records from the profile model, that are not
- // dropped in cascade by constraint,
- // as long as these profiles may also be anonymous
- using (NpgsqlCommand cmd = new NpgsqlCommand ("DELETE FROM profiles " +
- " WHERE username = :uname AND applicationname = :appname", conn)) {
- cmd.Parameters.AddWithValue ("uname", NpgsqlDbType.Varchar, 255).Value = username;
- cmd.Parameters.AddWithValue ("appname", NpgsqlDbType.Varchar, 255).Value = pApplicationName;
- cmd.ExecuteNonQuery ();
-
- }
- trans.Commit ();
- conn.Close ();
- }
- return (rowsAffected > 0);
- }
-
- //
- // MembershipProvider.GetAllUsers
- //
- /// To be added.
- /// To be added.
- /// To be added.
- ///
- ///
- /// Gets all users.
- ///
- /// Page index.
- /// Page size.
- public override MembershipUserCollection GetAllUsers (int pageIndex, int pageSize, out int totalRecords)
- {
- MembershipUserCollection users = new MembershipUserCollection ();
- using (NpgsqlConnection conn = new NpgsqlConnection (connectionString)) {
- using (NpgsqlCommand cmd = new NpgsqlCommand ("SELECT Count(*) FROM Users " +
- "WHERE ApplicationName = @ApplicationName", conn)) {
- cmd.Parameters.AddWithValue ("@ApplicationName", NpgsqlDbType.Varchar, 255).Value = ApplicationName;
- conn.Open ();
- totalRecords = 0;
- totalRecords = (int)((long)cmd.ExecuteScalar ());
-
- if (totalRecords > 0) {
- cmd.CommandText = "SELECT PKID, Username, Email, PasswordQuestion," +
- " Comment, IsApproved, IsLockedOut, CreationDate, LastLoginDate," +
- " LastActivityDate, LastPasswordChangedDate, LastLockedOutDate" +
- " FROM Users " +
- " WHERE ApplicationName = @ApplicationName " +
- " ORDER BY Username Asc";
- using (NpgsqlDataReader reader = cmd.ExecuteReader ()) {
-
- int counter = 0;
- int startIndex = pageSize * pageIndex;
- int endIndex = startIndex + pageSize - 1;
-
- while (reader.Read()) {
- if (counter >= startIndex) {
- MembershipUser u = GetUserFromReader (reader);
- users.Add (u);
- }
-
- if (counter >= endIndex) {
- cmd.Cancel ();
- }
-
- counter++;
- }
- reader.Close ();
-
- }
- }
- conn.Close ();
- }
- }
- return users;
- }
-
-
- //
- // MembershipProvider.GetNumberOfUsersOnline
- //
- ///
- /// Gets the number of users online.
- ///
- /// The number of users online.
- public override int GetNumberOfUsersOnline ()
- {
- int numOnline = 0;
- TimeSpan onlineSpan = new TimeSpan (0, System.Web.Security.Membership.UserIsOnlineTimeWindow, 0);
- DateTime compareTime = DateTime.Now.Subtract (onlineSpan);
-
- using (NpgsqlConnection conn = new NpgsqlConnection (connectionString)) {
- using (NpgsqlCommand cmd = new NpgsqlCommand ("SELECT Count(*) FROM Users " +
- " WHERE LastActivityDate > @CompareDate AND ApplicationName = @ApplicationName", conn)) {
-
- cmd.Parameters.AddWithValue ("@CompareDate", compareTime);
- cmd.Parameters.AddWithValue ("@ApplicationName", NpgsqlDbType.Varchar, 255).Value = pApplicationName;
-
-
-
- conn.Open ();
-
- numOnline = (int)cmd.ExecuteScalar ();
- }
- conn.Close ();
- }
-
- return numOnline;
- }
-
-
-
- //
- // MembershipProvider.GetPassword
- //
- /// To be added.
- ///
- /// Gets the password.
- ///
- /// The password.
- /// Username.
- /// Answer.
- public override string GetPassword (string username, string answer)
- {
- string password = "";
- string passwordAnswer = "";
-
- if (!EnablePasswordRetrieval) {
- throw new ProviderException ("Password Retrieval Not Enabled.");
- }
-
- if (PasswordFormat == MembershipPasswordFormat.Hashed) {
- throw new ProviderException ("Cannot retrieve Hashed passwords.");
- }
-
- using (NpgsqlConnection conn = new NpgsqlConnection (connectionString)) {
- using (NpgsqlCommand cmd = new NpgsqlCommand ("SELECT Passw, PasswordAnswer, IsLockedOut FROM Users " +
- " WHERE Username = @Username AND ApplicationName = @ApplicationName", conn)) {
-
- cmd.Parameters.AddWithValue ("@Username", NpgsqlDbType.Varchar, 255).Value = username;
- cmd.Parameters.AddWithValue ("@ApplicationName", NpgsqlDbType.Varchar, 255).Value = pApplicationName;
-
-
- NpgsqlDataReader reader = null;
-
-
- conn.Open ();
-
- using (reader = cmd.ExecuteReader ()) {
-
- if (reader.HasRows) {
- reader.Read ();
-
- if (reader.GetBoolean (2))
- throw new MembershipPasswordException ("The supplied user is locked out.");
-
- if (!reader.IsDBNull(0))
- password = reader.GetString (0);
- if (!reader.IsDBNull(1))
- passwordAnswer = reader.GetString (1);
- } else {
- throw new MembershipPasswordException ("The supplied user name is not found.");
- }
-
- reader.Close ();
- }
- }
- conn.Close ();
- }
-
- if (RequiresQuestionAndAnswer && !CheckPassword (answer, passwordAnswer)) {
- UpdateFailureCount (username, "passwordAnswer");
- throw new MembershipPasswordException ("Incorrect password answer.");
- }
- if (PasswordFormat == MembershipPasswordFormat.Encrypted) {
- password = UnEncodePassword (password);
- }
- return password;
- }
-
- //
- // MembershipProvider.GetUser(string, bool)
- //
- ///
- /// Gets the user as a MembershipUser object
- ///
- ///
- /// The user.
- ///
- ///
- /// The user name to search.
- ///
- ///
- /// Only return the user when it's online.
- ///
- public override MembershipUser GetUser (string username, bool userIsOnline)
- {
- MembershipUser u = null;
- using (NpgsqlConnection conn = new NpgsqlConnection (connectionString)) {
- using (NpgsqlCommand cmd = new NpgsqlCommand ("SELECT PKID, Username, Email, PasswordQuestion," +
- " Comment, IsApproved, IsLockedOut, CreationDate, LastLoginDate," +
- " LastActivityDate, LastPasswordChangedDate, LastLockedOutDate" +
- " FROM Users WHERE Username = @Username AND ApplicationName = @ApplicationName", conn)) {
-
- cmd.Parameters.AddWithValue ("@Username", NpgsqlDbType.Varchar, 255).Value = username;
- cmd.Parameters.AddWithValue ("@ApplicationName", NpgsqlDbType.Varchar, 255).Value = pApplicationName;
- conn.Open ();
- using (NpgsqlDataReader reader = cmd.ExecuteReader ()) {
- if (reader.HasRows) {
- reader.Read ();
- u = GetUserFromReader (reader);
- }
- reader.Close ();
- }
- }
-
- if (u != null && userIsOnline) {
- NpgsqlCommand updateCmd = new NpgsqlCommand ("UPDATE Users " +
- "SET LastActivityDate = @LastActivityDate " +
- "WHERE Username = @Username AND Applicationname = @ApplicationName", conn);
-
- updateCmd.Parameters.AddWithValue ("@LastActivityDate", DateTime.Now);
- updateCmd.Parameters.AddWithValue ("@Username", username);
- updateCmd.Parameters.AddWithValue ("@ApplicationName", pApplicationName);
-
- updateCmd.ExecuteNonQuery ();
- }
-
- conn.Close ();
- }
- return u;
- }
-
-
- //
- // MembershipProvider.GetUser(object, bool)
- //
- ///
- /// Gets the user.
- ///
- /// The user.
- /// Provider user key.
- /// If set to true user is online.
- public override MembershipUser GetUser (object providerUserKey, bool userIsOnline)
- {
- MembershipUser u = null;
-
- using (NpgsqlConnection conn = new NpgsqlConnection (connectionString)) {
- using (NpgsqlCommand cmd = new NpgsqlCommand ("SELECT PKID, Username, Email, PasswordQuestion," +
- " Comment, IsApproved, IsLockedOut, CreationDate, LastLoginDate," +
- " LastActivityDate, LastPasswordChangedDate, LastLockedOutDate" +
- " FROM Users WHERE PKID = @PKID", conn)) {
-
- cmd.Parameters.AddWithValue ("@PKID", NpgsqlDbType.Varchar).Value = providerUserKey;
- conn.Open ();
-
- using (NpgsqlDataReader reader = cmd.ExecuteReader ()) {
- if (reader.HasRows) {
- reader.Read ();
- u = GetUserFromReader (reader);
-
-
- }
- reader.Close ();
- if (u!=null && userIsOnline) {
- NpgsqlCommand updateCmd = new NpgsqlCommand ("UPDATE Users " +
- "SET LastActivityDate = @LastActivityDate " +
- "WHERE PKID = @PKID", conn);
- updateCmd.Parameters.AddWithValue ("@LastActivityDate", DateTime.Now);
- updateCmd.Parameters.AddWithValue ("@PKID", providerUserKey);
- updateCmd.ExecuteNonQuery ();
- }
- }
- }
- conn.Close ();
- }
-
- return u;
- }
-
-
- //
- // GetUserFromReader
- // A helper function that takes the current row from the NpgsqlDataReader
- // and hydrates a MembershiUser from the values. Called by the
- // MembershipUser.GetUser implementation.
- //
- private MembershipUser GetUserFromReader (NpgsqlDataReader reader)
- {
- object providerUserKey = reader.GetValue (0);
- string username = reader.GetString (1);
- string email = reader.GetString (2);
-
- string passwordQuestion = "";
- if (reader.GetValue (3) != DBNull.Value)
- passwordQuestion = reader.GetString (3);
-
- string comment = "";
- if (reader.GetValue (4) != DBNull.Value)
- comment = reader.GetString (4);
-
- bool isApproved = reader.GetBoolean (5);
- bool isLockedOut = reader.GetBoolean (6);
- DateTime creationDate = reader.GetDateTime (7);
-
- DateTime lastLoginDate = new DateTime ();
- if (reader.GetValue (8) != DBNull.Value)
- lastLoginDate = reader.GetDateTime (8);
-
- DateTime lastActivityDate = reader.GetDateTime (9);
- DateTime lastPasswordChangedDate = reader.GetDateTime (10);
-
- DateTime lastLockedOutDate = new DateTime ();
- if (reader.GetValue (11) != DBNull.Value)
- lastLockedOutDate = reader.GetDateTime (11);
-
- MembershipUser u = new MembershipUser (this.Name,
- username,
- providerUserKey,
- email,
- passwordQuestion,
- comment,
- isApproved,
- isLockedOut,
- creationDate,
- lastLoginDate,
- lastActivityDate,
- lastPasswordChangedDate,
- lastLockedOutDate);
-
- return u;
- }
-
-
- //
- // MembershipProvider.UnlockUser
- //
- ///
- /// Unlocks the user.
- ///
- /// true, if user was unlocked, false otherwise.
- /// Username.
- public override bool UnlockUser (string username)
- {
- int rowsAffected = 0;
- using (NpgsqlConnection conn = new NpgsqlConnection (connectionString)) {
- using (NpgsqlCommand cmd = new NpgsqlCommand ("UPDATE Users " +
- " SET IsLockedOut = False, LastLockedOutDate = @LastLockedOutDate " +
- " WHERE Username = @Username AND ApplicationName = @ApplicationName", conn)) {
- cmd.Parameters.AddWithValue ("@LastLockedOutDate", DateTime.Now);
- cmd.Parameters.AddWithValue ("@Username", username);
- cmd.Parameters.AddWithValue ("@ApplicationName", pApplicationName);
- conn.Open ();
- rowsAffected = cmd.ExecuteNonQuery ();
- conn.Close ();
- }
- }
- if (rowsAffected > 0)
- return true;
-
- return false;
- }
-
-
- //
- // MembershipProvider.GetUserNameByEmail
- //
- ///
- /// Gets the user name by email.
- ///
- /// The user name by email.
- /// Email.
- public override string GetUserNameByEmail (string email)
- {
- string username = "";
- using (NpgsqlConnection conn = new NpgsqlConnection (connectionString)) {
- using (NpgsqlCommand cmd = new NpgsqlCommand ("SELECT Username" +
- " FROM Users WHERE Email = @Email AND ApplicationName = @ApplicationName", conn)) {
- cmd.Parameters.AddWithValue ("@Email", NpgsqlDbType.Varchar, 128).Value = email;
- cmd.Parameters.AddWithValue ("@ApplicationName", NpgsqlDbType.Varchar, 255).Value = pApplicationName;
- conn.Open ();
- username = (string)cmd.ExecuteScalar ();
- conn.Close ();
- }
- }
- if (username == null)
- username = "";
- return username;
- }
-
- //
- // MembershipProvider.ResetPassword
- //
- /// To be added.
- ///
- /// Resets the password.
- ///
- /// The password.
- /// Username.
- /// Answer.
- public override string ResetPassword (string username, string answer)
- {
- int rowsAffected = 0;
- if (!EnablePasswordReset) {
- throw new NotSupportedException ("Password reset is not enabled.");
- }
-
- if (answer == null && RequiresQuestionAndAnswer) {
- UpdateFailureCount (username, "passwordAnswer");
- throw new ProviderException ("Password answer required for password reset.");
- }
-
- string newPassword =
- System.Web.Security.Membership.GeneratePassword (newPasswordLength, MinRequiredNonAlphanumericCharacters);
-
- ValidatePasswordEventArgs args = new ValidatePasswordEventArgs (username, newPassword, true);
-
- OnValidatingPassword (args);
-
- if (args.Cancel)
- if (args.FailureInformation != null)
- throw args.FailureInformation;
- else
- throw new MembershipPasswordException ("Reset password canceled due to password validation failure.");
-
- using (NpgsqlConnection conn = new NpgsqlConnection (connectionString)) {
- using (NpgsqlCommand cmd = new NpgsqlCommand ("SELECT PasswordAnswer, IsLockedOut FROM Users " +
- " WHERE Username = :uname AND ApplicationName = :app", conn)) {
-
- cmd.Parameters.AddWithValue ("uname", username );
- cmd.Parameters.AddWithValue ("app", pApplicationName);
-
-
- string passwordAnswer = "";
- conn.Open ();
-
- using (NpgsqlDataReader reader = cmd.ExecuteReader (CommandBehavior.SingleRow)) {
-
- if (reader.HasRows) {
- reader.Read ();
-
- if (reader.GetBoolean (1))
- throw new MembershipPasswordException ("The supplied user is locked out.");
-
- passwordAnswer = reader.GetString (0);
- } else {
- throw new MembershipPasswordException ("The supplied user name is not found.");
- }
- reader.Close ();
- if (RequiresQuestionAndAnswer && !CheckPassword (answer, passwordAnswer)) {
- UpdateFailureCount (username, "passwordAnswer");
-
- throw new MembershipPasswordException ("Incorrect password answer.");
- }
-
- NpgsqlCommand updateCmd = new NpgsqlCommand ("UPDATE Users " +
- " SET Passw = @Password, LastPasswordChangedDate = @LastPasswordChangedDate" +
- " WHERE Username = @Username AND ApplicationName = @ApplicationName AND IsLockedOut = False", conn);
-
- updateCmd.Parameters.AddWithValue ("@Password", NpgsqlDbType.Varchar, 255).Value = EncodePassword (newPassword);
- updateCmd.Parameters.AddWithValue ("@LastPasswordChangedDate", DateTime.Now);
- updateCmd.Parameters.AddWithValue ("@Username", username);
- updateCmd.Parameters.AddWithValue ("@ApplicationName", pApplicationName);
-
- rowsAffected = updateCmd.ExecuteNonQuery ();
-
- }
- conn.Close ();
- }
- }
-
- if (rowsAffected > 0) {
- return newPassword;
- } else {
- throw new MembershipPasswordException ("User not found, or user is locked out. Password not Reset.");
- }
- }
-
-
- //
- // MembershipProvider.UpdateUser
- //
- ///
- /// Updates the user.
- ///
- /// User.
- public override void UpdateUser (MembershipUser user)
- {
- using (NpgsqlConnection conn = new NpgsqlConnection (connectionString)) {
- using (NpgsqlCommand cmd = new NpgsqlCommand ("UPDATE users " +
- " SET email = :email, comment = :comment," +
- " isapproved = :isapproved" +
- " WHERE pkid = :pkid and applicationname = :appname", conn)) {
- cmd.Parameters.AddWithValue ("email", user.Email);
- cmd.Parameters.AddWithValue ("comment", user.Comment);
- cmd.Parameters.AddWithValue ("isapproved", user.IsApproved);
- cmd.Parameters.AddWithValue ("pkid", user.ProviderUserKey);
- cmd.Parameters.AddWithValue ("appname", pApplicationName);
- conn.Open ();
- cmd.ExecuteNonQuery ();
- conn.Close ();
- }
- }
- }
-
-
- //
- // MembershipProvider.ValidateUser
- //
- /// Validates an user identification by password,
- /// and, when he's approuved, updates its last login date and
- /// returns true.
- ///
- /// Validates the user at login time.
- ///
- /// true, if user was approuved and its password is valid, false otherwise.
- /// Username.
- /// Password.
- public override bool ValidateUser (string username, string password)
- {
- bool isValid = false;
-
- using (NpgsqlConnection conn = new NpgsqlConnection (connectionString)) {
- using (NpgsqlCommand cmd = new NpgsqlCommand ("SELECT Passw, IsApproved FROM Users " +
- " WHERE Username = @Username AND ApplicationName = @ApplicationName AND IsLockedOut = False", conn)) {
-
- cmd.Parameters.AddWithValue ("@Username", NpgsqlDbType.Varchar, 255).Value = username;
- cmd.Parameters.AddWithValue ("@ApplicationName", NpgsqlDbType.Varchar, 255).Value = pApplicationName;
-
-
- bool isApproved = false;
- string pwd = "";
-
- conn.Open ();
- bool userfound = false;
- using (NpgsqlDataReader reader = cmd.ExecuteReader (CommandBehavior.SingleRow)) {
- userfound = reader.HasRows;
- if (userfound) {
- reader.Read ();
- pwd = reader.GetString (0);
- isApproved = reader.GetBoolean (1);
- }
-
- reader.Close ();
- }
- if (userfound) {
- if (CheckPassword (password, pwd)) {
- if (isApproved) {
- isValid = true;
-
- NpgsqlCommand updateCmd = new NpgsqlCommand ("UPDATE Users SET LastLoginDate = @LastLoginDate" +
- " WHERE Username = @Username AND ApplicationName = @ApplicationName", conn);
-
- updateCmd.Parameters.AddWithValue ("@LastLoginDate", DateTime.Now);
- updateCmd.Parameters.AddWithValue ("@Username", NpgsqlDbType.Varchar, 255).Value = username;
- updateCmd.Parameters.AddWithValue ("@ApplicationName", NpgsqlDbType.Varchar, 255).Value = pApplicationName;
-
- updateCmd.ExecuteNonQuery ();
- }
- } else {
- UpdateFailureCount (username, "password");
- }
- }
- conn.Close ();
- }
- }
-
- return isValid;
- }
-
-
-
- ///
- /// A helper method that performs the checks and updates associated with
- /// password failure tracking.
- ///
- ///
- /// User name.
- ///
- ///
- /// Failure type, one of password, passwordAnswer
- ///
- private void UpdateFailureCount (string username, string failureType)
- {
- using (NpgsqlConnection conn = new NpgsqlConnection (connectionString)) {
- using (NpgsqlCommand cmd = new NpgsqlCommand ("SELECT FailedPasswordAttemptCount, " +
- " FailedPasswordAttemptWindowStart, " +
- " FailedPasswordAnswerAttemptCount, " +
- " FailedPasswordAnswerAttemptWindowStart " +
- " FROM Users " +
- " WHERE Username = @Username AND ApplicationName = @ApplicationName", conn)) {
-
- cmd.Parameters.AddWithValue ("@Username", NpgsqlDbType.Varchar, 255).Value = username;
- cmd.Parameters.AddWithValue ("@ApplicationName", NpgsqlDbType.Varchar, 255).Value = pApplicationName;
-
-
- DateTime windowStart = new DateTime ();
- int failureCount = 0;
-
-
- conn.Open ();
- using (NpgsqlDataReader reader = cmd.ExecuteReader (CommandBehavior.SingleRow)) {
-
- if (reader.HasRows) {
- reader.Read ();
-
- if (failureType == "password") {
- failureCount = reader.GetInt32 (0);
- windowStart = reader.GetDateTime (1);
- }
-
- if (failureType == "passwordAnswer") {
- failureCount = reader.GetInt32 (2);
- windowStart = reader.GetDateTime (3);
- }
- }
-
- reader.Close ();
- }
- DateTime windowEnd = windowStart.AddMinutes (PasswordAttemptWindow);
-
- if (failureCount == 0 || DateTime.Now > windowEnd) {
- // First password failure or outside of PasswordAttemptWindow.
- // Start a new password failure count from 1 and a new window starting now.
-
- if (failureType == "password")
- cmd.CommandText = "UPDATE Users " +
- " SET FailedPasswordAttemptCount = @Count, " +
- " FailedPasswordAttemptWindowStart = @WindowStart " +
- " WHERE Username = @Username AND ApplicationName = @ApplicationName";
-
- if (failureType == "passwordAnswer")
- cmd.CommandText = "UPDATE Users " +
- " SET FailedPasswordAnswerAttemptCount = @Count, " +
- " FailedPasswordAnswerAttemptWindowStart = @WindowStart " +
- " WHERE Username = @Username AND ApplicationName = @ApplicationName";
-
- cmd.Parameters.Clear ();
-
- cmd.Parameters.AddWithValue ("@Count", NpgsqlDbType.Integer).Value = 1;
- cmd.Parameters.AddWithValue ("@WindowStart", DateTime.Now);
- cmd.Parameters.AddWithValue ("@Username", NpgsqlDbType.Varchar, 255).Value = username;
- cmd.Parameters.AddWithValue ("@ApplicationName", NpgsqlDbType.Varchar, 255).Value = pApplicationName;
-
- cmd.ExecuteNonQuery ();
-
- } else {
- if (failureCount++ >= MaxInvalidPasswordAttempts) {
- // Password attempts have exceeded the failure threshold. Lock out
- // the user.
-
- cmd.CommandText = "UPDATE Users " +
- " SET IsLockedOut = @IsLockedOut, LastLockedOutDate = @LastLockedOutDate " +
- " WHERE Username = @Username AND ApplicationName = @ApplicationName";
-
- cmd.Parameters.Clear ();
-
- cmd.Parameters.AddWithValue ("@IsLockedOut", NpgsqlDbType.Bit).Value = true;
- cmd.Parameters.AddWithValue ("@LastLockedOutDate", DateTime.Now);
- cmd.Parameters.AddWithValue ("@Username", NpgsqlDbType.Varchar, 255).Value = username;
- cmd.Parameters.AddWithValue ("@ApplicationName", NpgsqlDbType.Varchar, 255).Value = pApplicationName;
-
- cmd.ExecuteNonQuery ();
-
- } else {
- // Password attempts have not exceeded the failure threshold. Update
- // the failure counts. Leave the window the same.
-
- if (failureType == "password")
- cmd.CommandText = "UPDATE Users " +
- " SET FailedPasswordAttemptCount = @Count" +
- " WHERE Username = @Username AND ApplicationName = @ApplicationName";
-
- if (failureType == "passwordAnswer")
- cmd.CommandText = "UPDATE Users " +
- " SET FailedPasswordAnswerAttemptCount = @Count" +
- " WHERE Username = @Username AND ApplicationName = @ApplicationName";
-
- cmd.Parameters.Clear ();
-
- cmd.Parameters.AddWithValue ("@Count", NpgsqlDbType.Integer).Value = failureCount;
- cmd.Parameters.AddWithValue ("@Username", NpgsqlDbType.Varchar, 255).Value = username;
- cmd.Parameters.AddWithValue ("@ApplicationName", NpgsqlDbType.Varchar, 255).Value = pApplicationName;
-
- cmd.ExecuteNonQuery ();
- }
- }
- }
- conn.Close ();
- }
- }
-
-
- //
- // CheckPassword
- // Compares password values based on the MembershipPasswordFormat.
- //
- ///
- /// Checks the password.
- ///
- /// true, if password was checked, false otherwise.
- /// Password.
- /// Dbpassword.
- private bool CheckPassword (string password, string dbpassword)
- {
- string pass1 = password;
- string pass2 = dbpassword;
-
- switch (PasswordFormat) {
- case MembershipPasswordFormat.Encrypted:
- pass2 = UnEncodePassword (dbpassword);
- break;
- case MembershipPasswordFormat.Hashed:
- pass1 = EncodePassword (password);
- break;
- default:
- break;
- }
- if (pass1 == pass2) {
- return true;
- }
- return false;
- }
-
-
- //
- // EncodePassword
- // Encrypts, Hashes, or leaves the password clear based on the PasswordFormat.
- //
- ///
- /// Encodes the password.
- ///
- /// The password.
- /// Password.
- private string EncodePassword (string password)
- {
- string encodedPassword = password;
-
- switch (PasswordFormat) {
- case MembershipPasswordFormat.Clear:
- break;
- case MembershipPasswordFormat.Encrypted:
- encodedPassword =
- Convert.ToBase64String (EncryptPassword (Encoding.Unicode.GetBytes (password)));
- break;
- case MembershipPasswordFormat.Hashed:
- HMACSHA1 hash = new HMACSHA1 ();
- hash.Key = HexToByte (machineKey.ValidationKey);
- encodedPassword =
- Convert.ToBase64String (hash.ComputeHash (Encoding.Unicode.GetBytes (password)));
- break;
- default:
- throw new ProviderException ("Unsupported password format.");
- }
-
- return encodedPassword;
- }
-
-
- //
- // UnEncodePassword
- // Decrypts or leaves the password clear based on the PasswordFormat.
- //
-
- private string UnEncodePassword (string encodedPassword)
- {
- string password = encodedPassword;
-
- switch (PasswordFormat) {
- case MembershipPasswordFormat.Clear:
- break;
- case MembershipPasswordFormat.Encrypted:
- password =
- Encoding.Unicode.GetString (DecryptPassword (Convert.FromBase64String (password)));
- break;
- case MembershipPasswordFormat.Hashed:
- throw new ProviderException ("Cannot unencode a hashed password.");
- default:
- throw new ProviderException ("Unsupported password format.");
- }
-
- return password;
- }
-
- //
- // HexToByte
- // Converts a hexadecimal string to a byte array. Used to convert encryption
- // key values from the configuration.
- //
-
- private byte[] HexToByte (string hexString)
- {
- byte[] returnBytes = new byte[hexString.Length / 2];
- for (int i = 0; i < returnBytes.Length; i++)
- returnBytes [i] = Convert.ToByte (hexString.Substring (i * 2, 2), 16);
- return returnBytes;
- }
-
-
- //
- // MembershipProvider.FindUsersByName
- //
- /// To be added.
- /// To be added.
- ///
- /// Finds user by their name.
- /// The name can use wilcards : % or ? (used in a Npgsql LIKE clause)
- ///
- /// An user's MembershipUser collection taching that name ...
- /// Username to match.
- /// Page index.
- /// Total records.
- public override MembershipUserCollection FindUsersByName (string usernameToMatch, int pageIndex, int pageSize, out int totalRecords)
- {
- MembershipUserCollection users = new MembershipUserCollection ();
- using (NpgsqlConnection conn = new NpgsqlConnection (connectionString)) {
- conn.Open ();
- using (NpgsqlCommand cmd = new NpgsqlCommand ("SELECT count(*)" +
- " FROM Users " +
- " WHERE Username LIKE @uns AND ApplicationName = @appn ", conn)) {
- cmd.Parameters.AddWithValue ("@uns", usernameToMatch);
- cmd.Parameters.AddWithValue ("@appn", ApplicationName);
- totalRecords = (int)((long)cmd.ExecuteScalar ());
- }
- if (totalRecords > 0)
- using (NpgsqlCommand cmd = new NpgsqlCommand ("SELECT PKID, Username, Email, PasswordQuestion," +
- " Comment, IsApproved, IsLockedOut, CreationDate, LastLoginDate," +
- " LastActivityDate, LastPasswordChangedDate, LastLockedOutDate " +
- " FROM Users " +
- " WHERE Username LIKE @UsernameSearch AND ApplicationName = @ApplicationName " +
- " ORDER BY Username Asc", conn)) {
- cmd.Parameters.AddWithValue ("@UsernameSearch", NpgsqlDbType.Varchar, 255).Value = usernameToMatch;
- cmd.Parameters.AddWithValue ("@ApplicationName", NpgsqlDbType.Varchar, 255).Value = pApplicationName;
-
- using (NpgsqlDataReader reader = cmd.ExecuteReader ()) {
- int counter = 0;
- int startIndex = pageSize * pageIndex;
- int endIndex = startIndex + pageSize - 1;
-
- while (reader.Read()) {
- if (counter >= startIndex) {
- MembershipUser u = GetUserFromReader (reader);
- users.Add (u);
- }
- if (counter >= endIndex) {
- cmd.Cancel ();
- }
- counter++;
- }
- reader.Close ();
- }
- conn.Close ();
- }
- }
- return users;
- }
-
- //
- // MembershipProvider.FindUsersByEmail
- //
-
- /// To be added.
- /// To be added.
- ///
- /// To be added.
- ///
- /// To be added.
- /// The users by email.
- /// Email to match.
- /// Page index.
- /// Total records.
- public override MembershipUserCollection FindUsersByEmail (string emailToMatch, int pageIndex, int pageSize, out int totalRecords)
- {
- MembershipUserCollection users = new MembershipUserCollection ();
- using (NpgsqlConnection conn = new NpgsqlConnection (connectionString)) {
- conn.Open ();
- using (NpgsqlCommand cmd = new NpgsqlCommand ("SELECT count(*) " +
- " FROM Users " +
- " WHERE Email LIKE @EmailSearch AND ApplicationName = @appname ", conn)) {
- cmd.Parameters.AddWithValue ("@EmailSearch", emailToMatch);
- cmd.Parameters.AddWithValue ("@appname", this.ApplicationName);
- totalRecords = (int)(long)cmd.ExecuteScalar ();
- }
-
- using (NpgsqlCommand cmd = new NpgsqlCommand ("SELECT PKID, Username, Email, PasswordQuestion," +
- " Comment, IsApproved, IsLockedOut, CreationDate, LastLoginDate," +
- " LastActivityDate, LastPasswordChangedDate, LastLockedOutDate" +
- " FROM Users " +
- " WHERE Email LIKE @EmailSearch AND ApplicationName = @ApplicationName " +
- " ORDER BY Username Asc", conn)) {
- cmd.Parameters.AddWithValue ("@EmailSearch", NpgsqlDbType.Varchar, 255).Value = emailToMatch;
- cmd.Parameters.AddWithValue ("@ApplicationName", NpgsqlDbType.Varchar, 255).Value = ApplicationName;
- using (NpgsqlDataReader reader = cmd.ExecuteReader ()) {
- int counter = 0;
- int startIndex = pageSize * pageIndex;
- int endIndex = startIndex + pageSize - 1;
-
- while (reader.Read()) {
- if (counter >= startIndex) {
- MembershipUser u = GetUserFromReader (reader);
- users.Add (u);
- }
- if (counter >= endIndex) {
- cmd.Cancel ();
- }
- counter++;
- }
- reader.Close ();
- }
-
- }
- conn.Close ();
- }
- return users;
- }
-
- }
-}
diff --git a/NpgsqlMRPProviders/NpgsqlProfileProvider.cs b/NpgsqlMRPProviders/NpgsqlProfileProvider.cs
deleted file mode 100644
index f2314b52..00000000
--- a/NpgsqlMRPProviders/NpgsqlProfileProvider.cs
+++ /dev/null
@@ -1,348 +0,0 @@
-using System;
-using System.Configuration;
-using System.Web.Profile;
-using Npgsql;
-
-namespace Npgsql.Web
-{
- ///
- /// Npgsql profile provider.
- ///
- public class NpgsqlProfileProvider: ProfileProvider
- {
- private string connectionString;
- private string applicationName;
- ///
- /// Initializes a new instance of the class.
- ///
- public NpgsqlProfileProvider ()
- {
- }
-
- ///
- /// Initialize the specified iname and config.
- ///
- /// Iname.
- /// Config.
- public override void Initialize (string iname, System.Collections.Specialized.NameValueCollection config)
- {
- // get the
- // - application name
- // - connection string name
- // - the connection string from its name
- string cnxName = config ["connectionStringName"];
- connectionString = ConfigurationManager.ConnectionStrings [cnxName].ConnectionString;
- config.Remove ("connectionStringName");
- applicationName = config ["applicationName"];
- config.Remove ("applicationName");
- base.Initialize (iname, config);
- }
-
- #region implemented abstract members of System.Web.Profile.ProfileProvider
- ///
- /// Deletes the inactive profiles.
- ///
- /// The inactive profiles.
- /// Authentication option.
- /// User inactive since date.
- public override int DeleteInactiveProfiles (ProfileAuthenticationOption authenticationOption, DateTime userInactiveSinceDate)
- {
- throw new System.NotImplementedException ();
- }
- ///
- /// Deletes the profiles.
- ///
- /// The profiles.
- /// Usernames.
- public override int DeleteProfiles (string[] usernames)
- {
- throw new System.NotImplementedException ();
- }
- ///
- /// Deletes the profiles.
- ///
- /// The profiles.
- /// Profiles.
- public override int DeleteProfiles (ProfileInfoCollection profiles)
- {
- throw new System.NotImplementedException ();
- }
- /// To be added.
- /// To be added.
- /// To be added.
- ///
- /// To be added.
- ///
- /// To be added.
- /// The inactive profiles by user name.
- /// Authentication option.
- /// Username to match.
- /// Page index.
- /// Total records.
- public override ProfileInfoCollection FindInactiveProfilesByUserName (ProfileAuthenticationOption authenticationOption, string usernameToMatch, DateTime userInactiveSinceDate, int pageIndex, int pageSize, out int totalRecords)
- {
- throw new System.NotImplementedException ();
- }
- /// To be added.
- /// To be added.
- /// To be added.
- /// To be added.
- ///
- ///
- /// Finds the name of the profiles by user.
- ///
- /// Authentication option.
- /// Username to match.
- /// Page size.
- public override ProfileInfoCollection FindProfilesByUserName (ProfileAuthenticationOption authenticationOption, string usernameToMatch, int pageIndex, int pageSize, out int totalRecords)
- {
- if (pageIndex < 0)
- throw new ArgumentException ("pageIndex");
- if (pageSize < 1)
- throw new ArgumentException ("pageSize");
-
- long lowerBound = (long)pageIndex * pageSize;
- long upperBound = lowerBound + pageSize - 1;
- if (upperBound > Int32.MaxValue)
- throw new ArgumentException ("lowerBound + pageSize*pageIndex -1 > Int32.MaxValue");
- ProfileInfoCollection c = new ProfileInfoCollection ();
- totalRecords = 0;
-
- using (NpgsqlConnection cnx = new NpgsqlConnection (connectionString)) {
- using (NpgsqlCommand cmd = cnx.CreateCommand ()) {
- cmd.CommandText = "select username, uniqueid, lastactivitydate, lastupdateddate, isanonymous from profiles where username like @username and applicationname = @appname";
- cmd.Parameters.AddWithValue ("@username", usernameToMatch);
- cmd.Parameters.AddWithValue ("@appname", applicationName);
- cnx.Open ();
- using (NpgsqlDataReader r = cmd.ExecuteReader ()) {
- if (r.HasRows) {
- while (r.Read ()) {
- if (totalRecords >= lowerBound && totalRecords <= upperBound) {
-
- object o = r.GetValue (r.GetOrdinal ("isanonymous"));
- bool isanon = o is DBNull ? true : (bool) o;
- o = r.GetValue (r.GetOrdinal ("lastactivitydate"));
- DateTime lact = o is DBNull ? new DateTime() : (DateTime) o;
- o = r.GetValue (r.GetOrdinal ("lastupdateddate"));
- DateTime lupd = o is DBNull ? new DateTime() : (DateTime) o;
- ProfileInfo pi =
- new ProfileInfo (
- r.GetString (r.GetOrdinal ("username")),
- isanon,
- lact,
- lupd,
- 0);
- c.Add (pi);
- totalRecords++;
- }
- }
- }
- }
- }
-
- }
- return c;
- }
- /// To be added.
- /// To be added.
- /// To be added.
- /// To be added.
- ///
- ///
- /// Gets all inactive profiles.
- ///
- /// Authentication option.
- /// User inactive since date.
- /// Page size.
- public override ProfileInfoCollection GetAllInactiveProfiles (ProfileAuthenticationOption authenticationOption, DateTime userInactiveSinceDate, int pageIndex, int pageSize, out int totalRecords)
- {
- throw new System.NotImplementedException ();
- }
- /// To be added.
- /// To be added.
- ///
- /// To be added.
- ///
- /// To be added.
- /// The all profiles.
- /// Authentication option.
- /// Page index.
- /// Total records.
- public override ProfileInfoCollection GetAllProfiles (ProfileAuthenticationOption authenticationOption, int pageIndex, int pageSize, out int totalRecords)
- {
- throw new System.NotImplementedException ();
- }
- ///
- /// Gets the number of inactive profiles.
- ///
- /// The number of inactive profiles.
- /// Authentication option.
- /// User inactive since date.
- public override int GetNumberOfInactiveProfiles (ProfileAuthenticationOption authenticationOption, DateTime userInactiveSinceDate)
- {
- throw new System.NotImplementedException ();
- }
-
- #endregion
-
- #region implemented abstract members of System.Configuration.SettingsProvider
- ///
- /// Gets the property values.
- ///
- /// The property values.
- /// Context.
- /// Collection.
- public override SettingsPropertyValueCollection GetPropertyValues (SettingsContext context, SettingsPropertyCollection collection)
- {// TODO get anon
- SettingsPropertyValueCollection c = new SettingsPropertyValueCollection ();
- if (collection == null || collection.Count < 1 || context == null)
- return c;
- string username = (string) context ["UserName"];
- if (String.IsNullOrEmpty (username))
- return c;
-
- using (NpgsqlConnection cnx = new NpgsqlConnection (connectionString))
- using (NpgsqlCommand cmd = cnx.CreateCommand ()) {
- cmd.CommandText = "SELECT * from profiledata, profiles where " +
- "profiledata.uniqueid = profiles.uniqueid " +
- "and profiles.username = @username " +
- "and profiles.applicationname = @appname ";
- cmd.Parameters.AddWithValue ("@username", username);
- cmd.Parameters.AddWithValue ("@appname", applicationName);
- cnx.Open ();
- using (NpgsqlDataReader r = cmd.ExecuteReader (
- System.Data.CommandBehavior.CloseConnection | System.Data.CommandBehavior.SingleRow)) {
- if (r.Read ()) {
- foreach (SettingsProperty p in collection) {
- SettingsPropertyValue v = new SettingsPropertyValue (p);
- int o = r.GetOrdinal (p.Name.ToLower ());
- var obj = r.GetValue (o);
- v.PropertyValue = (obj is DBNull) ? GetDefaultValue (p) : obj;
- c.Add (v);
- }
- } else {
- foreach (SettingsProperty p in collection) {
- SettingsPropertyValue v = new SettingsPropertyValue (p);
- v.PropertyValue = GetDefaultValue(p);
- c.Add (v);
- }
- }
- }
- }
- return c;
- }
-
- private object GetDefaultValue(SettingsProperty setting)
- {
- if (setting.PropertyType.IsEnum)
- return Enum.Parse(setting.PropertyType, setting.DefaultValue.ToString());
-
- // Return the default value if it is set
- if (setting.DefaultValue != null)
- {
- System.ComponentModel.TypeConverter tc = System.ComponentModel.TypeDescriptor.GetConverter(setting.PropertyType);
- return tc.ConvertFromString(setting.DefaultValue.ToString());
- }
- else // If there is no default value return the default object
- {
- return Activator.CreateInstance(setting.PropertyType);
- }
- }
- ///
- /// Sets the property values.
- ///
- /// Context.
- /// Collection.
- public override void SetPropertyValues (SettingsContext context, SettingsPropertyValueCollection collection)
- {
- // get the unique id of the profile
- if (collection == null)
- return;
- long puid = 0;
- string username = (string) context ["UserName"];
- bool needsAProfileDataRecord = false;
- // This user is either a authentified username, or an anonymous asp user id
- // He's anonymous when he's got no associated record in the "users" table
- // But, as long as our membership provider creates a mandatory (by db constraint) associated
- // record in the profile table, with a "isanonymous" field value to FALSE,
- // we can asume that an inexistant profile, once here, is an anonymous profile
- using (NpgsqlConnection cnx = new NpgsqlConnection (connectionString)) {
- cnx.Open ();
- using (NpgsqlCommand cmdpi = cnx.CreateCommand ()) {
- cmdpi.CommandText = "select count(uniqueid) " +
- "from profiles where username = :username " +
- "and applicationname = :appname";
- cmdpi.Parameters.AddWithValue ("username", username);
- cmdpi.Parameters.AddWithValue ("appname", applicationName);
-
- long c = (long)cmdpi.ExecuteScalar ();
- if (c == 0) {
- // This is a new anonymous profile.
- // the `isanonymous` field should be specified true by default in the ddl
- cmdpi.CommandText = "insert into profiles (username,applicationname) " +
- "values ( :username, :appname ) " +
- "returning uniqueid";
- puid = (long) cmdpi.ExecuteScalar ();
- needsAProfileDataRecord = true;
- } else {
- // here we're roughly sure to get the id
- cmdpi.CommandText = "select uniqueid from profiles where username = :username " +
- "and applicationname = :appname";
- puid = (long) cmdpi.ExecuteScalar ();
- // but still no data
- using (NpgsqlCommand cmdgetdataprid = cnx.CreateCommand ()) {
- cmdgetdataprid.CommandText = "select count(uniqueid) from profiledata where uniqueid = :puid";
- cmdgetdataprid.Parameters.AddWithValue ("puid", puid);
- long cd = (long) cmdgetdataprid.ExecuteScalar ();
- if (cd == 0) {
- needsAProfileDataRecord = true;
- }
- }
- }
- }
- if (needsAProfileDataRecord) using (NpgsqlCommand cmdpdins = cnx.CreateCommand ()) {
- cmdpdins.CommandText = "insert into profiledata (uniqueid) values (:puid)";
- cmdpdins.Parameters.AddWithValue ("puid", puid);
- cmdpdins.ExecuteNonQuery ();
- }
- foreach (SettingsPropertyValue s in collection) {
- if (s.UsingDefaultValue) {
- //TODO ? Drop the property in the profile
- } else {
- // update the property value
- // TODO update to null values (included to avoid Not Implemented columns in profiledata
- if (s.PropertyValue != null) {
- using (NpgsqlCommand cmd = cnx.CreateCommand ()) {
- cmd.CommandText = string.Format (
- "update profiledata " +
- "set {0} = @val " +
- "where uniqueid = @puid ",
- s.Name
- );
- cmd.Parameters.AddWithValue ("@puid", puid);
- cmd.Parameters.AddWithValue ("@val", s.PropertyValue);
- cmd.ExecuteNonQuery ();
- }
- }
- }
- }
- }
- }
- ///
- /// Gets or sets the name of the application.
- ///
- /// The name of the application.
- public override string ApplicationName {
- get {
- return applicationName;
- }
- set {
- applicationName = value;
- }
- }
-
- #endregion
-
- }
-}
-
diff --git a/NpgsqlMRPProviders/NpgsqlRoleProvider.cs b/NpgsqlMRPProviders/NpgsqlRoleProvider.cs
deleted file mode 100644
index e233a7e4..00000000
--- a/NpgsqlMRPProviders/NpgsqlRoleProvider.cs
+++ /dev/null
@@ -1,410 +0,0 @@
-using System;
-using System.Web.Security;
-using System.Configuration.Provider;
-using System.Configuration;
-using Npgsql;
-using System.Collections.Generic;
-
-
-using System.Linq;
-using System.Collections.Specialized;
-
-namespace Npgsql.Web
-{
- ///
- /// Npgsql role provider.
- ///
- public class NpgsqlRoleProvider: RoleProvider
- {
- ///
- /// The name.
- ///
- protected string name = "NpgsqlRoleProvider";
- ///
- /// The name of the connection string.
- ///
- protected string connectionStringName = "pgProvider";
- ///
- /// The name of the application.
- ///
- protected string applicationName = "/";
- ///
- /// The connection string.
- ///
- protected string connectionString = string.Empty;
-
- ///
- /// Initialize the specified iname and config.
- ///
- /// Iname.
- /// Config.
- public override void Initialize (string iname, NameValueCollection config)
- {
- // get the
- // - application name
- // - connection string name
- // - the connection string from its name
- string cnxName = config ["connectionStringName"];
- connectionString = ConfigurationManager.ConnectionStrings [cnxName].ConnectionString;
- config.Remove ("connectionStringName");
- applicationName = config ["applicationName"];
- config.Remove ("applicationName");
- base.Initialize (iname, config);
- }
- /// To be added.
- ///
- /// Adds the users to roles.
- ///
- /// Usernames.
- /// Role names.
- public override void AddUsersToRoles (string[] usernames, string[] roleNames)
- {
- if (usernames.Any (x => x == null) || roleNames.Any (x => x == null)) {
- throw new ArgumentNullException ();
- }
- if (usernames.Any (x => x.Trim () == string.Empty) || (roleNames.Any (x => x.Trim () == string.Empty))) {
- throw new ArgumentException ("One or more of the supplied usernames or role names are empty.");
- }
-
-
- using (var conn = new NpgsqlConnection(connectionString)) {
- conn.Open ();
- using (var comm = conn.CreateCommand()) {
- comm.CommandType = System.Data.CommandType.Text;
- comm.CommandText = "insert into usersroles (applicationname, username, rolename) values (@appname,@user,@role)";
- comm.Parameters.AddWithValue ("appname", NpgsqlTypes.NpgsqlDbType.Varchar, 250).Value = applicationName;
- NpgsqlParameter pu = comm.Parameters.AddWithValue ("user", NpgsqlTypes.NpgsqlDbType.Varchar, 250);
- NpgsqlParameter pr = comm.Parameters.AddWithValue ("role", NpgsqlTypes.NpgsqlDbType.Varchar, 250);
- foreach (string u in usernames) {
- pu.Value = u;
- foreach (string r in roleNames) {
- pr.Value = r;
- comm.ExecuteNonQuery ();
- }
- }
- }
-
- }
-
- }
-
- ///
- /// Gets or sets the name of the application.
- ///
- /// The name of the application.
- public override string ApplicationName {
- get {
- return applicationName;
- }
- set {
- applicationName = value;
- }
- }
-
- /// To be added.
- ///
- /// Creates the role.
- ///
- /// Role name.
- public override void CreateRole (string roleName)
- {
- if (roleName == null)
- throw new ArgumentNullException ();
- if (roleName.Trim () == string.Empty)
- throw new ArgumentException ("A role name cannot be empty.");
- if (roleName.Contains (","))
- throw new ArgumentException ("A role name cannot contain commas. Blame Microsoft for that rule!");
- if (roleName.Length > 250)
- throw new ArgumentException ("The maximum length for a Role name is 250 characters.");
-
-
- using (var conn = new NpgsqlConnection(connectionString)) {
- conn.Open ();
- using (var comm = conn.CreateCommand()) {
- comm.CommandType = System.Data.CommandType.Text;
- comm.CommandText = "insert into roles (rolename, applicationname, comment) values (@rolename, @appname, @comment)";
- comm.Parameters.AddWithValue ("@rolename", NpgsqlTypes.NpgsqlDbType.Varchar, 250).Value = roleName;
- comm.Parameters.AddWithValue ("@appname", NpgsqlTypes.NpgsqlDbType.Varchar, 250).Value = applicationName;
- comm.Parameters.AddWithValue ("@comment", NpgsqlTypes.NpgsqlDbType.Varchar, 250).Value = roleName;
- comm.ExecuteNonQuery ();
- }
- }
-
- }
-
- /// To be added.
- ///
- /// Deletes the role.
- ///
- /// true, if role was deleted, false otherwise.
- /// Role name.
- /// If set to true throw on populated role.
- public override bool DeleteRole (string roleName, bool throwOnPopulatedRole)
- {
- if (roleName == null)
- throw new ArgumentNullException ();
- if (roleName.Trim () == string.Empty)
- throw new ArgumentException ("The specified role name cannot be empty.");
- if (throwOnPopulatedRole)
- if (FindUsersInRole (roleName, "").Count () > 0)
- throw new ProviderException (
- string.Format ("The role {0} is populated, we cannot delete it.", roleName));
-
- using (var conn = new NpgsqlConnection(connectionString)) {
- conn.Open ();
- using (var comm = conn.CreateCommand()) {
- comm.CommandType = System.Data.CommandType.Text;
- comm.CommandText = "delete from roles where rolename = @rolename and applicationname = @appname";
- comm.Parameters.AddWithValue ("@rolename", NpgsqlTypes.NpgsqlDbType.Varchar, 250).Value = roleName;
- comm.Parameters.AddWithValue ("@appname", NpgsqlTypes.NpgsqlDbType.Varchar, 250).Value = applicationName;
- comm.Parameters.AddWithValue ("@comment", NpgsqlTypes.NpgsqlDbType.Varchar, 250).Value = roleName;
- comm.ExecuteNonQuery ();
- }
- }
- return true;
- }
-
- ///
- /// Finds the users in role.
- ///
- /// The users in role.
- /// Role name.
- /// Username to match.
- public override string[] FindUsersInRole (string roleName, string usernameToMatch)
- {
- return GetUsersInRole (roleName, usernameToMatch);
- }
-
- ///
- /// Gets the users in role.
- ///
- /// The users in role.
- /// Rolename.
- /// Username to match.
- protected string[] GetUsersInRole (string rolename, string usernameToMatch)
- {
- if (rolename == null)
- throw new ArgumentNullException ();
- if (rolename == string.Empty)
- throw new ProviderException ("Cannot look for blank role names.");
- usernameToMatch = usernameToMatch ?? string.Empty;
- using (var conn = new NpgsqlConnection(connectionString)) {
- conn.Open ();
- using (var comm = conn.CreateCommand()) {
- comm.CommandType = System.Data.CommandType.Text;
- comm.CommandText = "select username from usersroles where applicationname = @appname " +
- "and rolename = @rolename and username like @username";
- comm.Parameters.AddWithValue ("@rolename", NpgsqlTypes.NpgsqlDbType.Varchar, 250).Value = rolename;
- comm.Parameters.AddWithValue ("@appname", NpgsqlTypes.NpgsqlDbType.Varchar, 250).Value = applicationName;
- comm.Parameters.AddWithValue ("@username", NpgsqlTypes.NpgsqlDbType.Varchar, 250).Value = usernameToMatch;
- using (var reader = comm.ExecuteReader()) {
- var r = new List ();
- var usernameColumn = reader.GetOrdinal ("username");
- while (reader.Read()) {
- r.Add (reader.GetString (usernameColumn));
- }
- return r.ToArray ();
- }
- }
- }
- }
-
- ///
- /// Gets all roles.
- ///
- /// The all roles.
- public override string[] GetAllRoles ()
- {
- using (var conn = new NpgsqlConnection(connectionString)) {
- conn.Open ();
- using (var comm = conn.CreateCommand()) {
-
- comm.CommandType = System.Data.CommandType.Text;
- comm.CommandText = "select rolename from roles where applicationname = @appname";
- comm.Parameters.AddWithValue ("@appname", NpgsqlTypes.NpgsqlDbType.Varchar, 250).Value = applicationName;
- using (var reader = comm.ExecuteReader()) {
- var r = new List ();
- var rolenameColumn = reader.GetOrdinal ("rolename");
- while (reader.Read()) {
- r.Add (reader.GetString (rolenameColumn));
- }
- return r.ToArray ();
- }
- }
- }
- }
-
- ///
- /// Gets the roles for user.
- ///
- /// The roles for user.
- /// Username.
- public override string[] GetRolesForUser (string username)
- {
- if (username == null)
- throw new ArgumentNullException ();
- if (username.Trim () == string.Empty)
- throw new ArgumentException ("The specified username cannot be blank.");
- using (var conn = new NpgsqlConnection(connectionString)) {
- conn.Open ();
- using (var comm = conn.CreateCommand()) {
- comm.CommandType = System.Data.CommandType.Text;
- comm.CommandText = "select rolename from usersroles where applicationname = @appname and username = @username";
- comm.Parameters.AddWithValue ("@username", NpgsqlTypes.NpgsqlDbType.Varchar, 250).Value = username;
- comm.Parameters.AddWithValue ("@appname", NpgsqlTypes.NpgsqlDbType.Varchar, 250).Value = applicationName;
- using (var reader = comm.ExecuteReader()) {
- var r = new List ();
- var rolenameColumn = reader.GetOrdinal ("rolename");
- while (reader.Read()) {
- r.Add (reader.GetString (rolenameColumn));
- }
- return r.ToArray ();
- }
- }
- }
- }
-
-
- /// To be added.
- ///
- /// Gets the users in role.
- ///
- /// The users in role.
- /// Role name.
- public override string[] GetUsersInRole (string roleName)
- {
- if (string.IsNullOrEmpty (roleName))
- throw new ArgumentException ("The specified role name cannot be blank or null");
- using (var conn = new NpgsqlConnection(connectionString)) {
- conn.Open ();
- using (var comm = conn.CreateCommand()) {
- //
- comm.CommandType = System.Data.CommandType.Text;
- comm.CommandText = "select username from usersroles where applicationname = @appname " +
- "and rolename = @rolename";
- comm.Parameters.AddWithValue ("@rolename", NpgsqlTypes.NpgsqlDbType.Varchar, 255).Value = roleName;
- comm.Parameters.AddWithValue ("@appname", NpgsqlTypes.NpgsqlDbType.Varchar, 255).Value = applicationName;
- using (var reader = comm.ExecuteReader()) {
- var r = new List ();
- var usernameColumn = reader.GetOrdinal ("username");
- while (reader.Read()) {
- r.Add (reader.GetString (usernameColumn));
- }
- return r.ToArray ();
- }
- }
- }
- }
-
- /// To be added.
- ///
- /// Determines whether this instance is user in role the specified username roleName.
- ///
- /// true if this instance is user in role the specified username roleName; otherwise, false.
- /// Username.
- /// Role name.
- public override bool IsUserInRole (string username, string roleName)
- {
- if (username == null || roleName == null)
- throw new ArgumentNullException ();
- if (username.Trim () == string.Empty)
- throw new ArgumentException ("The specified username cannot be blank.");
- if (roleName.Trim () == string.Empty)
- throw new ArgumentException ("The specified role name cannot be blank.");
-
- using (var conn = new NpgsqlConnection(connectionString)) {
- conn.Open ();
- using (var comm = conn.CreateCommand()) {
- //
- comm.CommandType = System.Data.CommandType.Text;
- comm.CommandText = "select count(*)>0 from usersroles where applicationname = @appname " +
- "and username = @username and rolename = @rolename";
- comm.Parameters.AddWithValue ("@username", username);
- comm.Parameters.AddWithValue ("@rolename", roleName);
- comm.Parameters.AddWithValue ("@appname", applicationName);
- var retval = (bool)comm.ExecuteScalar ();
- return retval;
- }
- }
-
- }
-
- /// To be added.
- ///
- /// Removes the users from roles.
- ///
- /// Usernames.
- /// Role names.
- public override void RemoveUsersFromRoles (string[] usernames, string[] roleNames)
- {
- if (usernames.Any (x => x == null) || roleNames.Any (x => x == null)) {
- throw new ArgumentNullException ();
- }
- if (usernames.Any (x => x.Trim () == string.Empty) || (roleNames.Any (x => x.Trim () == string.Empty))) {
- throw new ArgumentException ("One or more of the supplied usernames or role names are empty.");
- }
-
- using (var conn = new NpgsqlConnection(connectionString)) {
- conn.Open ();
- using (var comm = conn.CreateCommand()) {
- comm.CommandType = System.Data.CommandType.Text;
- comm.CommandText = "delete from usersroles where applicationname = @appname and " +
- "username = @username and rolename = @rolename";
- NpgsqlParameter pu = comm.Parameters.AddWithValue ("@username", NpgsqlTypes.NpgsqlDbType.Varchar, 250);
- NpgsqlParameter pr = comm.Parameters.AddWithValue ("@rolename", NpgsqlTypes.NpgsqlDbType.Varchar, 250);
- comm.Parameters.AddWithValue ("@appname", NpgsqlTypes.NpgsqlDbType.Varchar, 250).Value = applicationName;
- foreach (string rolename in roleNames) {
- pr.Value = rolename;
- foreach (string username in usernames) {
- pu.Value = username;
- comm.ExecuteNonQuery ();
- }
- }
- }
- }
-
- }
-
- /// Tests if a given role name exists.
- ///
- /// Tests if a given role name exists.
- ///
- /// true, if exists was roled, false otherwise.
- /// Role name.
- public override bool RoleExists (string roleName)
- {
- using (var conn = new NpgsqlConnection(connectionString)) {
- conn.Open ();
- using (var comm = new NpgsqlCommand("role_exists", conn)) {
- comm.CommandType = System.Data.CommandType.Text;
- comm.CommandText = "select Count(*)>0 from roles where applicationname = @applicationname and rolename = @rolename";
- comm.Parameters.AddWithValue ("@rolename", NpgsqlTypes.NpgsqlDbType.Varchar, 250).Value = roleName;
- comm.Parameters.AddWithValue ("@applicationname", NpgsqlTypes.NpgsqlDbType.Varchar, 250).Value = applicationName;
- var retval = (bool)comm.ExecuteScalar ();
- return retval;
- }
- }
- }
- ///
- /// Gets the name of this provider,
- /// should correspond to the item key
- /// in the configuration collection of providers.
- ///
- /// The name.
- public override string Name {
- get {
- return name;
- }
- }
- ///
- /// Gets the description for this provider.
- ///
- /// The description.
- public override string Description {
- get {
- return "PostgreSQL ASP.Net Role Provider class";
- }
- }
- }
-}
-
diff --git a/NpgsqlMRPProviders/NpgsqlUserNameProvider.cs b/NpgsqlMRPProviders/NpgsqlUserNameProvider.cs
deleted file mode 100644
index d7298077..00000000
--- a/NpgsqlMRPProviders/NpgsqlUserNameProvider.cs
+++ /dev/null
@@ -1,105 +0,0 @@
-//
-// NpgsqlUserNameProvider.cs
-//
-// Author:
-// Paul Schneider
-//
-// Copyright (c) 2015 GNU GPL
-//
-// This program is free software: you can redistribute it and/or modify
-// it under the terms of the GNU Lesser General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
-//
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU Lesser General Public License for more details.
-//
-// You should have received a copy of the GNU Lesser General Public License
-// along with this program. If not, see .
-using System;
-using System.Collections.Specialized;
-using System.Configuration;
-
-namespace Npgsql.Web.RolesAndMembers
-{
- using Yavsc.Model.RolesAndMembers;
-
- ///
- /// Npgsql user name provider.
- ///
- public class NpgsqlUserNameProvider: ChangeUserNameProvider {
- private string applicationName;
- private string connectionString;
- ///
- /// Initialize the specified iname and config.
- ///
- /// Iname.
- /// Config.
- public override void Initialize (string iname, NameValueCollection config)
- {
- // get the
- // - application name
- // - connection string name
- // - the connection string from its name
- string cnxName = config ["connectionStringName"];
- connectionString = ConfigurationManager.ConnectionStrings [cnxName].ConnectionString;
- config.Remove ("connectionStringName");
- applicationName = config ["applicationName"];
- config.Remove ("applicationName");
- base.Initialize (iname, config);
-
- }
- private string GetConfigValue (string configValue, string defaultValue)
- {
- if (String.IsNullOrEmpty (configValue))
- return defaultValue;
-
- return configValue;
- }
-
- #region implemented abstract members of ChangeUserNameProvider
- ///
- /// Changes the name.
- ///
- /// Old name.
- /// New name.
- public override void ChangeName (string oldName, string newName)
- {
- using (NpgsqlConnection conn = new NpgsqlConnection (connectionString)) {
- conn.Open ();
- using (NpgsqlCommand cmd = new NpgsqlCommand (
- "UPDATE users set " +
- "username = :uname where username = :oname" +
- " AND ApplicationName = :appname ", conn)) {
- cmd.Parameters.AddWithValue ("uname", newName);
- cmd.Parameters.AddWithValue ("oname", oldName);
- cmd.Parameters.AddWithValue ("appname", this.applicationName);
- cmd.ExecuteNonQuery ();
- }
- }
- }
- ///
- /// Determines whether this instance is name available the specified name.
- ///
- /// true
- /// false
- /// Name.
- public override bool IsNameAvailable (string name)
- {
- using (NpgsqlConnection conn = new NpgsqlConnection (connectionString)) {
- conn.Open ();
- using (NpgsqlCommand cmd = new NpgsqlCommand (
- "SELECT count(*)=0 FROM users " +
- "WHERE username = :uname AND ApplicationName = :appname", conn)) {
- cmd.Parameters.AddWithValue ("uname", name);
- cmd.Parameters.AddWithValue ("appname", this.applicationName);
- return (bool) cmd.ExecuteScalar ();
- }
- }
- }
- #endregion
- }
-
-}
diff --git a/NpgsqlMRPProviders/Sql/ProfileData.sql b/NpgsqlMRPProviders/Sql/ProfileData.sql
deleted file mode 100644
index 76d63571..00000000
--- a/NpgsqlMRPProviders/Sql/ProfileData.sql
+++ /dev/null
@@ -1,28 +0,0 @@
--- Table: profiledata
-
--- DROP TABLE profiledata;
-
-CREATE TABLE profiledata
-(
- uniqueid integer,
- zipcode character varying(10),
- cityandstate character varying(255),
- avatar bytea,
- CONSTRAINT fkprofiles2 FOREIGN KEY (uniqueid)
- REFERENCES profiles (uniqueid) MATCH SIMPLE
- ON UPDATE CASCADE ON DELETE CASCADE
-)
-WITH (
- OIDS=FALSE
-);
-
--- Index: fki_fkprofiles2
-
--- DROP INDEX fki_fkprofiles2;
-
-CREATE INDEX fki_fkprofiles2
- ON profiledata
- USING btree
- (uniqueid );
-
-
diff --git a/NpgsqlMRPProviders/Sql/RolesTable.sql b/NpgsqlMRPProviders/Sql/RolesTable.sql
deleted file mode 100644
index 71e9fc0f..00000000
--- a/NpgsqlMRPProviders/Sql/RolesTable.sql
+++ /dev/null
@@ -1,18 +0,0 @@
--- Table: roles
-
--- DROP TABLE roles;
-
-CREATE TABLE roles
-(
- rolename character varying(255) NOT NULL,
- applicationname character varying(255) NOT NULL,
- comment character varying(255) NOT NULL,
- CONSTRAINT roles_pkey PRIMARY KEY (rolename , applicationname )
-)
-WITH (
- OIDS=FALSE
-);
-
-COMMENT ON TABLE roles
- IS 'Web application roles';
-
diff --git a/NpgsqlMRPProviders/Sql/StockSymbols.sql b/NpgsqlMRPProviders/Sql/StockSymbols.sql
deleted file mode 100644
index 53a88c2f..00000000
--- a/NpgsqlMRPProviders/Sql/StockSymbols.sql
+++ /dev/null
@@ -1,16 +0,0 @@
-
--- Table: stocksymbols
-
--- DROP TABLE stocksymbols;
-
-CREATE TABLE stocksymbols
-(
- uniqueid integer,
- stocksymbol character varying(10),
- CONSTRAINT fkprofiles1 FOREIGN KEY (uniqueid)
- REFERENCES profiles (uniqueid) MATCH SIMPLE
- ON UPDATE NO ACTION ON DELETE NO ACTION
-)
-WITH (
- OIDS=FALSE
-);
diff --git a/NpgsqlMRPProviders/Sql/UserRoleTable.sql b/NpgsqlMRPProviders/Sql/UserRoleTable.sql
deleted file mode 100644
index 639ee34e..00000000
--- a/NpgsqlMRPProviders/Sql/UserRoleTable.sql
+++ /dev/null
@@ -1,21 +0,0 @@
-
--- Table: usersroles
-
--- DROP TABLE usersroles;
-
-CREATE TABLE usersroles
-(
- applicationname character varying(255) NOT NULL,
- rolename character varying(255) NOT NULL,
- username character varying(255) NOT NULL,
- CONSTRAINT attrroles_pkey PRIMARY KEY (applicationname , rolename , username ),
- CONSTRAINT usersroles_fk_role FOREIGN KEY (applicationname, rolename)
- REFERENCES roles (applicationname, rolename) MATCH SIMPLE
- ON UPDATE CASCADE ON DELETE CASCADE,
- CONSTRAINT usersroles_fk_user FOREIGN KEY (applicationname, username)
- REFERENCES users (applicationname, username) MATCH SIMPLE
- ON UPDATE CASCADE ON DELETE CASCADE
-)
-WITH (
- OIDS=FALSE
-);
diff --git a/NpgsqlMRPProviders/Sql/UsersTable.sql b/NpgsqlMRPProviders/Sql/UsersTable.sql
deleted file mode 100644
index 813142da..00000000
--- a/NpgsqlMRPProviders/Sql/UsersTable.sql
+++ /dev/null
@@ -1,19 +0,0 @@
--- Table: profiles
-
--- DROP TABLE profiles;
-
-CREATE TABLE profiles
-(
- uniqueid bigserial NOT NULL,
- username character varying(255) NOT NULL,
- applicationname character varying(255) NOT NULL,
- isanonymous boolean,
- lastactivitydate timestamp with time zone,
- lastupdateddate timestamp with time zone,
- CONSTRAINT profiles_pkey PRIMARY KEY (uniqueid ),
- CONSTRAINT pkprofiles UNIQUE (username , applicationname )
-)
-WITH (
- OIDS=FALSE
-);
-
diff --git a/NpgsqlMRPProviders/packages.config b/NpgsqlMRPProviders/packages.config
deleted file mode 100644
index 440f9cbc..00000000
--- a/NpgsqlMRPProviders/packages.config
+++ /dev/null
@@ -1,4 +0,0 @@
-
-
-
-
\ No newline at end of file
diff --git a/Presta/Presta.csproj b/Presta/Presta.csproj
deleted file mode 100644
index b14c92ac..00000000
--- a/Presta/Presta.csproj
+++ /dev/null
@@ -1,75 +0,0 @@
-
-
-
- Debug
- AnyCPU
- 8.0.30703
- 2.0
- {6A312228-9641-478D-916F-4681CC65A35D}
- Library
- Presta
- Presta
- v4.5.1
-
-
- true
- full
- false
- bin\Debug
- DEBUG;
- prompt
- 4
- false
-
-
- full
- true
- bin\Release
- prompt
- 4
- false
-
-
- false
- bin\Lua
- 4
-
-
- false
- bin\TotemPre
- 4
-
-
- false
- bin\TotemProd
- 4
-
-
- false
- bin\YavscPre
- 4
-
-
- false
- bin\Yavsc
- 4
-
-
- false
- bin\Lua
- 4
-
-
-
-
-
-
-
-
-
-
- {68F5B80A-616E-4C3C-91A0-828AA40000BD}
- YavscModel
-
-
-
\ No newline at end of file
diff --git a/Presta/Properties/AssemblyInfo.cs b/Presta/Properties/AssemblyInfo.cs
deleted file mode 100644
index ada1df10..00000000
--- a/Presta/Properties/AssemblyInfo.cs
+++ /dev/null
@@ -1,47 +0,0 @@
-//
-// AssemblyInfo.cs
-//
-// Author:
-// Paul Schneider
-//
-// Copyright (c) 2015 GNU GPL
-//
-// This program is free software: you can redistribute it and/or modify
-// it under the terms of the GNU Lesser General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
-//
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU Lesser General Public License for more details.
-//
-// You should have received a copy of the GNU Lesser General Public License
-// along with this program. If not, see .
-using System.Reflection;
-using System.Runtime.CompilerServices;
-
-// Information about this assembly is defined by the following attributes.
-// Change them to the values specific to your project.
-
-[assembly: AssemblyTitle ("Presta")]
-[assembly: AssemblyDescription ("")]
-[assembly: AssemblyConfiguration ("")]
-[assembly: AssemblyCompany ("")]
-[assembly: AssemblyProduct ("")]
-[assembly: AssemblyCopyright ("GNU GPL")]
-[assembly: AssemblyTrademark ("")]
-[assembly: AssemblyCulture ("")]
-
-// The assembly version has the format "{Major}.{Minor}.{Build}.{Revision}".
-// The form "{Major}.{Minor}.*" will automatically update the build and revision,
-// and "{Major}.{Minor}.{Build}.*" will update just the revision.
-
-[assembly: AssemblyVersion ("1.0.*")]
-
-// The following attributes are used to specify the signing key for the assembly,
-// if desired. See the Mono documentation for more information about signing.
-
-//[assembly: AssemblyDelaySign(false)]
-//[assembly: AssemblyKeyFile("")]
-
diff --git a/README.md b/README.md
deleted file mode 100644
index 1cb4d1fb..00000000
--- a/README.md
+++ /dev/null
@@ -1,47 +0,0 @@
-yavsc
-=====
-
-[doc-fr](http://yavsc.pschneider.fr/Blogs/UserPost/paul/Documentation)
-
-# à faire, par ordre de priorité
-
--1) Messagerie instantanée : choisir entre directement Google Hangouts API,
- SIP, ou Signal R custom
-0) Bug fixes :
- stocker le token calendar à part
-
-1) Créer un contrôle "bouton utilisateur" `UserNameControl`
- avec
- * un acces rapide à l'ajout au cercles perso
- * pour les administrateur, une action "bloquer",
- * le compteur de ses posts publiques
- * Si c'est un préstataire, et si on est pas déjà dans un formulaire de reservation,
- un lien vers la reservation de ses services
-
-1.2) Concevoir un objet Contact listant les point d'accès par protocol (email, http, sip, irc, téléphone, adresse postale ...)
-
-2) Refabrication de l'Api :
-
- concernant la mise à jour la creation et l'edition d'un post, on
- doit pouvoir fondre tout en une seule methode :
-
- * ```long PostFile(BlogEntry be)```,
- Utilisée pour la creation quand id est à 0, auquel cas, l'identiffiant
- du post créé est renvoyé en retour (non nul).
- Sinon, c'est une mise a jour des propriétés
- du billet, et on renvoie zero.
-
- Dans tous les cas, toutes les propriétés du post sont fournies car mises à jour,
- et on effectue la reception des fichiers attachés.
-
- Dans le cas de l'edition (id non nul),
- seules les propriétés spécifiées non nulles sont mises à jour
- (NDLR:la visibilité est donc par exemple toujours mis à jour).
-
-
-4) Terminer l'édition du profile de site, avec la modification
- et la suppression des activités et compétences
-
-5) Tester le premier client Android-java libre
-
-6) Tester le premier client Android-xamarin pour iOS
diff --git a/SalesCatalog/AssemblyInfo.cs b/SalesCatalog/AssemblyInfo.cs
deleted file mode 100644
index 8bc3c1de..00000000
--- a/SalesCatalog/AssemblyInfo.cs
+++ /dev/null
@@ -1,27 +0,0 @@
-using System.Reflection;
-using System.Runtime.CompilerServices;
-
-// Information about this assembly is defined by the following attributes.
-// Change them to the values specific to your project.
-
-[assembly: AssemblyTitle("SalesCatalog")]
-[assembly: AssemblyDescription("")]
-[assembly: AssemblyConfiguration("")]
-[assembly: AssemblyCompany("")]
-[assembly: AssemblyProduct("")]
-[assembly: AssemblyCopyright("paul")]
-[assembly: AssemblyTrademark("")]
-[assembly: AssemblyCulture("")]
-
-// The assembly version has the format "{Major}.{Minor}.{Build}.{Revision}".
-// The form "{Major}.{Minor}.*" will automatically update the build and revision,
-// and "{Major}.{Minor}.{Build}.*" will update just the revision.
-
-[assembly: AssemblyVersion("1.0.*")]
-
-// The following attributes are used to specify the signing key for the assembly,
-// if desired. See the Mono documentation for more information about signing.
-
-//[assembly: AssemblyDelaySign(false)]
-//[assembly: AssemblyKeyFile("")]
-
diff --git a/SalesCatalog/SalesCatalog.csproj b/SalesCatalog/SalesCatalog.csproj
deleted file mode 100644
index dfc20dd9..00000000
--- a/SalesCatalog/SalesCatalog.csproj
+++ /dev/null
@@ -1,122 +0,0 @@
-
-
-
- Debug
- AnyCPU
- 8.0.30703
- 2.0
- {90BF2234-7252-4CD5-B2A4-17501B19279B}
- Library
- SalesCatalog
- SalesCatalog
- v4.5.1
-
-
- true
- full
- false
- bin\Debug
- DEBUG;
- prompt
- 4
- false
- bin\Debug\SalesCatalog.xml
-
-
- none
- true
- bin\Release
- prompt
- 4
- false
-
-
- false
- bin\Lua
- 4
-
-
- false
- bin\TotemPre
- 4
-
-
- false
- bin\TotemProd
- 4
-
-
- false
- bin\YavscPre
- 4
-
-
- false
- bin\Yavsc
- 4
-
-
- false
- bin\Lua
- 4
-
-
-
-
-
-
-
-
- ..\packages\Microsoft.Web.Infrastructure.1.0.0.0\lib\net40\Microsoft.Web.Infrastructure.dll
-
-
- ..\packages\Microsoft.AspNet.Razor.3.2.3\lib\net45\System.Web.Razor.dll
-
-
- ..\packages\Microsoft.AspNet.WebPages.3.2.3\lib\net45\System.Web.Helpers.dll
-
-
- ..\packages\Microsoft.AspNet.WebPages.3.2.3\lib\net45\System.Web.WebPages.dll
-
-
- ..\packages\Microsoft.AspNet.WebPages.3.2.3\lib\net45\System.Web.WebPages.Deployment.dll
-
-
- ..\packages\Microsoft.AspNet.WebPages.3.2.3\lib\net45\System.Web.WebPages.Razor.dll
-
-
- ..\packages\Microsoft.AspNet.Mvc.5.2.3\lib\net45\System.Web.Mvc.dll
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- {68F5B80A-616E-4C3C-91A0-828AA40000BD}
- YavscModel
-
-
-
\ No newline at end of file
diff --git a/SalesCatalog/Tests/TestBrands.cs b/SalesCatalog/Tests/TestBrands.cs
deleted file mode 100644
index 2523b34c..00000000
--- a/SalesCatalog/Tests/TestBrands.cs
+++ /dev/null
@@ -1,33 +0,0 @@
-
- #if TEST
-using NUnit.Framework;
-using System;
-
-namespace SalesCatalog.Tests
-{
- [TestFixture ()]
- public class TestBrands
- {
- [Test ()]
- public void TestCaseAddRemoveBrand ()
- {
- Catalog c = new Catalog ();
- c.Brands = new Brand[0];
- Brand b=c.AddBrand ("coko");
- if (c.Brands.Length != 1)
- throw new Exception ("Pas ajouté");
- if (b == null)
- throw new Exception ("Renvoyé null");
- if (b.Name != "coko")
- throw new Exception ("Pas le bon nom");
- if (c.Brands [0] != b)
- throw new Exception ("err index 0");
- if (c.GetBrand ("coko") != b)
- throw new Exception ("err get by name");
- if (!c.RemoveBrand ("coko"))
- throw new Exception ("Pas supprimé");
- }
- }
-}
-
-#endif
diff --git a/SalesCatalog/Tests/TestCatalogInit.cs b/SalesCatalog/Tests/TestCatalogInit.cs
deleted file mode 100644
index ef2bfefa..00000000
--- a/SalesCatalog/Tests/TestCatalogInit.cs
+++ /dev/null
@@ -1,108 +0,0 @@
-#if TEST
-
-using System;
-using NUnit.Framework;
-using SalesCatalog.XmlImplementation;
-using System.Xml.Serialization;
-using System.IO;
-using System.Xml;
-using System.Text;
-
-namespace SalesCatalog.Tests
-{
- [TestFixture()]
- public class TestCatalogInit
- {
- [Test()]
- public void TestSerDeserCat ()
- {
- Catalog cat = new XmlCatalog ();
- Brand b = new Brand ();
- b.Logo = new ProductImage ();
- b.Logo.Src = "/App_Themes/images/dev.png";
- b.Logo.Alt = "Dev";
- b.Name = "Developpement à la carte";
- b.Slogan = "Votre logiciel, efficace, sûr, et sur mesure";
- ProductCategory si = new ProductCategory ();
- si.Name = "Systèmes d'information et sites Web";
- ProductCategory progiciel = new ProductCategory ();
- progiciel.Name = "Progiciels";
- b.Categories = new ProductCategory[]{ si, progiciel };
- Service simaint = new Service ();
- simaint.Name = "Maintenance logicielle";
- simaint.Description = "Correction des bugs, évolution";
- Service sidev = new Service ();
- sidev.Name = "Développement logiciel";
- sidev.Description = "Votre intranet, votre site Web, sur mesure, " +
- "développé en cycles courts, et en étroite collaboration avec vous";
- Service aubb = new Service ();
- aubb.Name = "Audit de sécurité en black box";
- aubb.Description = "Je recherche les failles de sécurité de votre SI ou site Web, depuis l'exterieur de " +
- "votre système, sans avoir eu connaissance d'aucun élément sur l'architécture de votre " +
- "système";
- Service auwb = new Service ();
- auwb.Name = "Audit de sécurité en white box";
- auwb.Description = "Je me déplace chez vous, pour travailler à partir de votre code source, " +
- "et isoler ses failles de sécurités";
- si.Products = new Product[] { simaint, sidev, aubb, auwb };
- Service maint = new Service ();
- maint.Name = "Maintenance logicielle";
- maint.Description = "Correction des bugs, évolution";
- Service dev = new Service ();
- dev.Name = "Développement logiciel";
- dev.Description = "Votre progiciel, sur mesure, " +
- "développé en cycles courts, et en étroite collaboration avec vous";
- progiciel.Products = new Product[] { maint, dev };
- SaleForm f = new SaleForm ();
- f.Action = "/testAction";
- TextInput ticat = new TextInput ("Choose a Title");
- ticat.Id = "title" ;
- ticat.MultiLine = true;
- SelectInput selSize = new SelectInput ();
- selSize.Id="size";
- Option o1 = new Option ();
- o1.Value = "1m"; o1.Text = "1 mois";
- Option o2 = new Option ();
- o2.Value = "2m"; o2.Text = "2 mois";
- Option o3 = new Option ();
- o3.Value = "6m"; o3.Text = "6 mois";
- selSize.Items = new Option [] { o1, o2, o3 };
- var txt1 = new Text ();
- var txt2 = new Text ();
- txt1.Val="Choose a title : ";
- txt2.Val = "[br]Choose the size : ";
- f.Items = new FormElement[] {txt1,ticat,txt2,selSize};
- b.DefaultForm = f;
- cat.Brands = new Brand[] { b };
- b.Categories = new ProductCategory[] { si, progiciel };
- XmlSerializer ser =
- new XmlSerializer
- (typeof(XmlCatalog),
- new Type[]{typeof(Service),
- typeof(PhysicalProduct),
- typeof(Euro),
- typeof(TextInput),
- typeof(SalesCatalog.Model.Text),
- typeof(TextInput),
- typeof(SelectInput)
- });
- FileInfo fi = new FileInfo ("Catalog.xml");
- if (fi.Exists)
- fi.Delete ();
- using (FileStream ws = fi.OpenWrite()) {
- ser.Serialize (ws, cat);
- }
- using (FileStream rs = fi.OpenRead()) {
- using (XmlTextReader rdr = new XmlTextReader(rs)) {
- XmlCatalog copy = (XmlCatalog)ser.Deserialize (rdr);
- if (copy.Brands == null) throw new Exception("Null brand array!");
- if (copy.Brands.Length != cat.Brands.Length) throw new Exception("Not the same count of brands");
- if (copy.Brands[0].DefaultForm.Action != cat.Brands[0].DefaultForm.Action) throw new Exception("not the same default form");
- // ...
- }
- }
- }
- }
-}
-
-#endif
diff --git a/SalesCatalog/XmlImplementation/XmlCatalog.cs b/SalesCatalog/XmlImplementation/XmlCatalog.cs
deleted file mode 100644
index 6957769e..00000000
--- a/SalesCatalog/XmlImplementation/XmlCatalog.cs
+++ /dev/null
@@ -1,23 +0,0 @@
-using System;
-using System.Xml.Serialization;
-using Yavsc.Model.FrontOffice.Catalog;
-
-namespace SalesCatalog.XmlImplementation
-{
- ///
- /// Xml catalog.
- /// Inherits of the Catalog class,
- /// to make it serializable from and to Xml
- ///
- [XmlRoot]
- public class XmlCatalog : Catalog
- {
- ///
- /// Initializes a new instance of the class.
- ///
- public XmlCatalog ()
- {
- }
- }
-}
-
diff --git a/SalesCatalog/XmlImplementation/XmlCatalogProvider.cs b/SalesCatalog/XmlImplementation/XmlCatalogProvider.cs
deleted file mode 100644
index 19bd35f5..00000000
--- a/SalesCatalog/XmlImplementation/XmlCatalogProvider.cs
+++ /dev/null
@@ -1,135 +0,0 @@
-using System;
-using System.Xml.Serialization;
-using System.Configuration;
-using System.IO;
-using System.Xml;
-using System.Web;
-using Yavsc.Model.FrontOffice.Catalog;
-
-namespace SalesCatalog.XmlImplementation
-{
- ///
- /// Xml catalog provider.
- /// In charge of getting the catalog data,
- /// returning a Catalog object from GetCatalog
- ///
- public class XmlCatalogProvider: CatalogProvider
- {
- #region implemented abstract members of CatalogProvider
-
- ///
- /// Gets the activity.
- ///
- /// The activity.
- /// MAE code.
- public override Yavsc.Model.FrontOffice.Activity GetActivity (string MEACode)
- {
- throw new NotImplementedException ();
- }
- ///
- /// Registers the activity.
- ///
- /// Activity name.
- /// Meacode.
- /// Comment.
- public override void RegisterActivity (string activityName, string meacode, string comment)
- {
- throw new NotImplementedException ();
- }
- ///
- /// Finds the activity.
- ///
- /// The activity.
- /// Pattern.
- /// If set to true exerted.
- public override Yavsc.Model.FrontOffice.Activity[] FindActivity (string pattern, bool exerted)
- {
- throw new NotImplementedException ();
- }
- ///
- /// Finds the performer.
- ///
- /// The performer.
- /// MEA code.
- public override Yavsc.Model.FrontOffice.PerformerProfile[] FindPerformer (string MEACode)
- {
- throw new NotImplementedException ();
- }
- ///
- /// Gets the catalog, loading it from
- /// the file system at a first call,
- /// and when its last write time has changed.
- ///
- /// The catalog.
- public override Catalog GetCatalog ()
- {
- // Assert fileName != null
- FileInfo fi = new FileInfo (fileName);
- if (!fi.Exists)
- throw new ConfigurationErrorsException(
- string.Format("No catalog found ({0})",fileName));
- if (fi.LastWriteTime > lastModification)
- LoadCatalog ();
- return catInstance;
- }
- ///
- /// The catalog instance.
- ///
- protected XmlCatalog catInstance = null;
- ///
- /// The last modification date of the file loaded.
- ///
- protected DateTime lastModification = new DateTime(0);
- ///
- /// The name of the file loaded.
- ///
- protected string fileName = null;
- #endregion
- ///
- /// Initialize the catalog
- /// using the specified name and config.
- /// The config object contains under the key
- /// connection the path to the Xml Catalog file
- /// at server side.
- ///
- /// Name.
- /// Config.
- public override void Initialize (string name, System.Collections.Specialized.NameValueCollection config)
- {
- if (config ["connection"] == null)
- throw new Exception ("the 'connection' parameter is null " +
- "(it should be the absolute path to the xml catalog)");
- string cnx = (string) config ["connection"];
- fileName = HttpContext.Current.Server.MapPath(cnx);
- LoadCatalog ();
- }
-
- private void LoadCatalog ()
- {
- try {
- FileInfo fi = new FileInfo (fileName);
- if (!fi.Exists)
- throw new Exception (
- string.Format ("Le fichier Xml decrivant le catalogue n'existe pas ({0})", fi.FullName));
- XmlSerializer xsr = new XmlSerializer (typeof(XmlCatalog),new Type[]{
- typeof(Service),
- typeof(PhysicalProduct),
- typeof(Euro),
- typeof(Text),
- typeof(TextInput),
- typeof(SelectInput)});
-
- using (FileStream fs = fi.OpenRead()) {
- catInstance = (XmlCatalog) xsr.Deserialize (fs);
- }
- fileName = fi.FullName;
- lastModification = fi.LastWriteTime;
- }
- catch (Exception e) {
- lastModification = new DateTime (0);
- throw e;
- }
- }
- }
-}
-
diff --git a/SalesCatalog/catalog.xsd b/SalesCatalog/catalog.xsd
deleted file mode 100644
index 7c9e5f73..00000000
--- a/SalesCatalog/catalog.xsd
+++ /dev/null
@@ -1,151 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/SalesCatalog/packages.config b/SalesCatalog/packages.config
deleted file mode 100644
index 4d690b0f..00000000
--- a/SalesCatalog/packages.config
+++ /dev/null
@@ -1,7 +0,0 @@
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/TestAPI/AllTests.cs b/TestAPI/AllTests.cs
deleted file mode 100644
index 34def7b7..00000000
--- a/TestAPI/AllTests.cs
+++ /dev/null
@@ -1,52 +0,0 @@
-//
-// AllTests.cs
-//
-// Author:
-// Paul Schneider
-//
-// Copyright (c) 2015 GNU GPL
-//
-// This program is free software: you can redistribute it and/or modify
-// it under the terms of the GNU Lesser General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
-//
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU Lesser General Public License for more details.
-//
-// You should have received a copy of the GNU Lesser General Public License
-// along with this program. If not, see .
-
-using NUnit.Framework;
-using System;
-using Yavsc.Model.Blogs;
-using Yavsc.Controllers;
-using System.Web.Mvc;
-using System.Web.Security;
-using System.Web.Configuration;
-using System.Configuration;
-using System.IO;
-using System.Web.Http;
-using Mono.WebServer;
-using System.Net;
-using System.Collections;
-
-namespace Yavsc
-{
- public class AllTests
- {
- [Suite]
- public static IEnumerable Suite
- {
- get
- {
- ArrayList suite = new ArrayList ();
- suite.Add(new BlogUnitTestCase());
- return suite;
- }
- }
- }
-
-}
diff --git a/TestAPI/BlogUnitTestCase.cs b/TestAPI/BlogUnitTestCase.cs
deleted file mode 100644
index 386d3fbe..00000000
--- a/TestAPI/BlogUnitTestCase.cs
+++ /dev/null
@@ -1,52 +0,0 @@
-//
-// TagTestCases.cs
-//
-// Author:
-// Paul Schneider
-//
-// Copyright (c) 2015 GNU GPL
-//
-// This program is free software: you can redistribute it and/or modify
-// it under the terms of the GNU Lesser General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
-//
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU Lesser General Public License for more details.
-//
-// You should have received a copy of the GNU Lesser General Public License
-// along with this program. If not, see .
-using NUnit.Framework;
-using System;
-using Yavsc.Model.Blogs;
-
-namespace Yavsc
-{
- [TestFixture ()]
- public class BlogUnitTestCase: ServerTestCase
- {
-
- [TestFixtureSetUp]
- void NeedAPost()
- {
- Register ();
- }
-
- [Test ()]
- public void TestCase ()
- {
- long pid = BlogManager.Post (UserName, "BlogUnitTestCase", "content", true, null);
- BlogManager.Tag (pid, "test");
-
- }
-
- [TestFixtureTearDown()]
- void Cleanup()
- {
- Unregister ();
- }
- }
-}
-
diff --git a/TestAPI/DebugServer.cs b/TestAPI/DebugServer.cs
deleted file mode 100644
index 536c0cf7..00000000
--- a/TestAPI/DebugServer.cs
+++ /dev/null
@@ -1,51 +0,0 @@
-//
-// DebugServer.cs
-//
-// Author:
-// Paul Schneider
-//
-// Copyright (c) 2015 GNU GPL
-//
-// This program is free software: you can redistribute it and/or modify
-// it under the terms of the GNU Lesser General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
-//
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU Lesser General Public License for more details.
-//
-// You should have received a copy of the GNU Lesser General Public License
-// along with this program. If not, see .
-
-using System;
-using NUnit.Framework;
-using System.Net;
-using Mono.WebServer.XSP;
-
-namespace Mono.WebServer.Test
-{
-
- public class DebugServer : IDisposable
- {
- #region IDisposable implementation
-
- public void Dispose ()
- {
- // would have a sense when managing the Xsp server instance:
- // server.Stop();
- }
-
- #endregion
-
- string physicalPath = @"/home/paul/workspace/totem/web/";
-
- public int Run ()
- {
-
- return Server.Main (new [] { "--applications", "/:"+physicalPath, "--port", "8080", "--nonstop" });
- }
- }
-
-}
\ No newline at end of file
diff --git a/TestAPI/HelloWorld.cs b/TestAPI/HelloWorld.cs
deleted file mode 100644
index f6703cc7..00000000
--- a/TestAPI/HelloWorld.cs
+++ /dev/null
@@ -1,73 +0,0 @@
-//
-// HelloWorld.cs
-//
-//
-// HelloWorld.cs
-//
-// Author:
-// Leonardo Taglialegne
-//
-// Copyright (c) 2013 Leonardo Taglialegne.
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-//
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-using NUnit.Framework;
-using System.Net;
-using Mono.WebServer.XSP;
-
-namespace Mono.WebServer.Test
-{
-
-
- [TestFixture]
- public class HelloWorld
- {
-
- [Test]
- public void TestCase ()
- {
- using (var server = new DebugServer()) {
- Assert.AreEqual (0, server.Run ());
- var wc = new WebClient ();
- try {
- string downloaded = wc.DownloadString ("http://localhost:8080/");
- //Assert.AreEqual (Environment.CurrentDirectory, downloaded);
- // ResponseHeaders {
- // Date: Thu, 15 Oct 2015 16:12:00 GMT
- // Server: Mono.WebServer.XSP/3.8.0.0 Linux
- // X-AspNetMvc-Version: 3.0
- // X-AspNet-Version: 4.0.30319
- // Content-Length: 2180
- // Cache-Control: private
- // Content-Type: text/html
- // Set-Cookie: ASP.NET_SessionId=ED208D636A4312B9745E396D; path=/
- // Keep-Alive: timeout=15, max=100
- // Connection: Keep-Alive } System.Net.WebHeaderCollection
- Assert.Greater(wc.ResponseHeaders["Set-Cookie"].Length, 10);
-
- } catch (WebException e) {
- Assert.Fail (e.Message);
- }
- }
- }
- }
-}
\ No newline at end of file
diff --git a/TestAPI/Properties/AssemblyInfo.cs b/TestAPI/Properties/AssemblyInfo.cs
deleted file mode 100644
index c0e34c0f..00000000
--- a/TestAPI/Properties/AssemblyInfo.cs
+++ /dev/null
@@ -1,47 +0,0 @@
-//
-// AssemblyInfo.cs
-//
-// Author:
-// Paul Schneider
-//
-// Copyright (c) 2015 GNU GPL
-//
-// This program is free software: you can redistribute it and/or modify
-// it under the terms of the GNU Lesser General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
-//
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU Lesser General Public License for more details.
-//
-// You should have received a copy of the GNU Lesser General Public License
-// along with this program. If not, see .
-using System.Reflection;
-using System.Runtime.CompilerServices;
-
-// Information about this assembly is defined by the following attributes.
-// Change them to the values specific to your project.
-
-[assembly: AssemblyTitle ("TestAPI")]
-[assembly: AssemblyDescription ("")]
-[assembly: AssemblyConfiguration ("")]
-[assembly: AssemblyCompany ("")]
-[assembly: AssemblyProduct ("")]
-[assembly: AssemblyCopyright ("GNU GPL")]
-[assembly: AssemblyTrademark ("")]
-[assembly: AssemblyCulture ("")]
-
-// The assembly version has the format "{Major}.{Minor}.{Build}.{Revision}".
-// The form "{Major}.{Minor}.*" will automatically update the build and revision,
-// and "{Major}.{Minor}.{Build}.*" will update just the revision.
-
-[assembly: AssemblyVersion ("1.0.*")]
-
-// The following attributes are used to specify the signing key for the assembly,
-// if desired. See the Mono documentation for more information about signing.
-
-//[assembly: AssemblyDelaySign(false)]
-//[assembly: AssemblyKeyFile("")]
-
diff --git a/TestAPI/ServerTestCase.cs b/TestAPI/ServerTestCase.cs
deleted file mode 100644
index 02359035..00000000
--- a/TestAPI/ServerTestCase.cs
+++ /dev/null
@@ -1,151 +0,0 @@
-//
-// BlogUnitTest.cs
-//
-// Author:
-// Paul Schneider
-//
-// Copyright (c) 2015 GNU GPL
-//
-// This program is free software: you can redistribute it and/or modify
-// it under the terms of the GNU Lesser General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
-//
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU Lesser General Public License for more details.
-//
-// You should have received a copy of the GNU Lesser General Public License
-// along with this program. If not, see .
-using NUnit.Framework;
-using System;
-using Yavsc.Model.Blogs;
-using Yavsc.Controllers;
-using System.Web.Mvc;
-using System.Web.Security;
-using System.Web.Configuration;
-using System.Configuration;
-using System.IO;
-using System.Web.Http;
-using Mono.WebServer;
-using System.Net;
-using System.Web.Hosting;
-using Mono.Web.Util;
-using Mono.WebServer.Options;
-
-namespace Yavsc
-{
-
- [TestFixture ()]
- public class ServerTestCase
- {
-
- public string UserName { get; set; }
- public string Email { get; set; }
- public string Password { get; set; }
-
- AccountController accountController;
-
- public AccountController AccountController {
- get {
- return accountController;
- }
- }
-
- ApplicationServer WebAppServer;
-
- string defaultMembershipProvider = null;
-
- [Test]
- public virtual void Start()
- {
- // get the web config
- string physicalPath = @"/home/paul/workspace/totem/web/";
- string physicalPathToConfig = physicalPath + "/Web.config";
- ExeConfigurationFileMap exemap = new ExeConfigurationFileMap ();
- exemap.ExeConfigFilename = physicalPathToConfig ;
- Configuration config = System.Configuration.ConfigurationManager.OpenMappedExeConfiguration (exemap, ConfigurationUserLevel.None);
-
-
- string basedir = AppDomain.CurrentDomain.BaseDirectory;
- string curdir = Directory.GetCurrentDirectory ();
- string dummyVirtualPath = "/";
- int Port=8080;
- XSPWebSource websource=new XSPWebSource(IPAddress.Any,Port);
- WebAppServer=new ApplicationServer(websource,physicalPath);
-
- var broker = new XSPRequestBroker ();
- var host = new XSPApplicationHost ();
-
- host.RequestBroker = broker;
- host.Server = WebAppServer;
- broker.InitializeLifetimeService ();
- host.InitializeLifetimeService ();
- // ApplicationHost h = new XSPApplicationHost();
-
- //"[[hostname:]port:]VPath:realpath"
- string cmdLine=Port+":/:"+physicalPath;
- WebAppServer.AddApplicationsFromCommandLine (cmdLine);
-
- WebAppServer.Broker = broker;
- WebAppServer.AppHost = host;
- // WebAppServer.AddApplicationsFromConfigFile (physicalPath+"/Web.config");
-// WebConfigurationFileMap map = new WebConfigurationFileMap ();
-// map.VirtualDirectories.Add (dummyVirtualPath, new VirtualDirectoryMapping (physicalPath, true));
-// TODO why not? Configuration configuration = WebConfigurationManager.OpenMappedWebConfiguration (map, dummyVirtualPath);
-
-// string da = (string)config.AppSettings.Settings ["DefaultAvatar"].Value;
-// MembershipSection s = config.GetSection ("system.web/membership") as MembershipSection;
-// defaultMembershipProvider = s.DefaultProvider;
- // ??? WebConfigurationManager.ConfigPath
- Configuration cfg = WebConfigurationManager.OpenWebConfiguration (dummyVirtualPath);
-// WebConfigurationManager.AppSettings.Clear ();
-// WebConfigurationManager.ConnectionStrings.Clear ();
-// var mbrssect = WebConfigurationManager.GetWebApplicationSection ("system.web/membership") as MembershipSection;
-//
-// mbrssect.Providers.Clear ();
- var syswebcfg = WebConfigurationManager.GetWebApplicationSection ("system.web") as ConfigurationSection;
-
- WebAppServer.Start (true,2000);
-// System.Threading.Thread.Sleep(30000);
- }
-
- [Test ()]
- public virtual void Register ()
- {
- accountController = new AccountController ();
-
- ViewResult actionResult = accountController.Register (
- new Yavsc.Model.RolesAndMembers.RegisterViewModel () {
- UserName = UserName, Email = Email,
- Password = "tpwd", ConfirmPassword = Password,
- IsApprouved = true
- },
- "/testreturnurl") as ViewResult;
- Assert.AreSame ("",actionResult.ViewName);
- MembershipUser u = Membership.GetUser (UserName, false);
- Assert.NotNull (u);
- Assert.False (u.IsApproved);
- // TODO : check mail for test,
- // get the validation key from its body,
- // and use the accountController.Validate(username,key)
- u.IsApproved = true;
- Membership.UpdateUser (u);
- Assert.True (u.IsApproved);
- }
-
- [Test()]
- public virtual void Stop() {
- WebAppServer.Stop();
- }
-
- public virtual void Unregister()
- {
- ViewResult actionResult =
- accountController.Unregister (UserName, true) as ViewResult;
- Assert.AreEqual (actionResult.ViewName, "Index");
- }
- }
-}
-
diff --git a/TestAPI/TestAPI.csproj b/TestAPI/TestAPI.csproj
deleted file mode 100644
index 017a5ee2..00000000
--- a/TestAPI/TestAPI.csproj
+++ /dev/null
@@ -1,184 +0,0 @@
-
-
-
- Debug
- AnyCPU
- 8.0.30703
- 2.0
- {42B77C89-BF6D-4DB1-8763-6197F4030A95}
- Library
- TestAPI
- TestAPI
- v4.5.1
-
-
- true
- full
- false
- bin\Debug
- DEBUG;
- prompt
- 4
- false
-
-
- full
- true
- bin\Release
- prompt
- 4
- false
-
-
- false
- bin\Lua
- 4
-
-
- false
- bin\TotemPre
- 4
-
-
- false
- bin\TotemProd
- 4
-
-
- false
- bin\YavscPre
- 4
-
-
- false
- bin\Yavsc
- 4
-
-
- false
- bin\Lua
- 4
-
-
-
-
- ..\packages\Machine.Specifications.0.9.3\lib\net45\Machine.Specifications.dll
-
-
- ..\packages\Machine.Specifications.0.9.3\lib\net45\Machine.Specifications.Clr4.dll
-
-
- ..\packages\Machine.Specifications.Runner.Utility.0.9.0\lib\net45\Machine.Specifications.Runner.Utility.dll
-
-
- ..\packages\Machine.Specifications.Should.0.8.0\lib\net45\Machine.Specifications.Should.dll
-
-
- ..\packages\Machine.Specifications.Reporting.0.9.1\lib\net45\Machine.Specifications.Reporting.dll
-
-
- ..\packages\Machine.Specifications.Reporting.0.9.1\lib\net45\Machine.Specifications.Reporting.Templates.dll
-
-
- ..\packages\Spark.1.8.1.0\lib\NET45\Spark.dll
-
-
-
-
-
-
-
-
-
- ..\..\..\..\..\usr\lib\mono\4.5\Mono.WebServer2.dll
-
-
- ..\..\..\..\..\usr\lib\mono\4.5\xsp4.exe
-
-
-
- nuget-core
-
-
-
- ..\packages\NUnit.3.0.1\lib\net45\nunit.framework.dll
-
-
- ..\packages\Microsoft.Web.Infrastructure.1.0.0.0\lib\net40\Microsoft.Web.Infrastructure.dll
-
-
- ..\packages\Microsoft.AspNet.Razor.3.2.3\lib\net45\System.Web.Razor.dll
-
-
- ..\packages\Microsoft.AspNet.WebPages.3.2.3\lib\net45\System.Web.Helpers.dll
-
-
- ..\packages\Microsoft.AspNet.WebPages.3.2.3\lib\net45\System.Web.WebPages.dll
-
-
- ..\packages\Microsoft.AspNet.WebPages.3.2.3\lib\net45\System.Web.WebPages.Deployment.dll
-
-
- ..\packages\Microsoft.AspNet.WebPages.3.2.3\lib\net45\System.Web.WebPages.Razor.dll
-
-
- ..\packages\Microsoft.AspNet.Mvc.5.2.3\lib\net45\System.Web.Mvc.dll
-
-
- ..\packages\Microsoft.AspNet.WebApi.Client.5.2.3\lib\net45\System.Net.Http.Formatting.dll
-
-
-
- ..\packages\Microsoft.AspNet.WebApi.Core.5.2.3\lib\net45\System.Web.Http.dll
-
-
- ..\packages\Microsoft.AspNet.WebApi.WebHost.5.2.3\lib\net45\System.Web.Http.WebHost.dll
-
-
- ..\packages\Newtonsoft.Json.8.0.1\lib\net45\Newtonsoft.Json.dll
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- {68F5B80A-616E-4C3C-91A0-828AA40000BD}
- YavscModel
-
-
- {C6E9E91B-97D3-48D9-8AA7-05356929E162}
- NpgsqlBlogProvider
-
-
- {821FF72D-9F4B-4A2C-B95C-7B965291F119}
- NpgsqlContentProvider
-
-
- {BBA7175D-7F92-4278-96FC-84C495A2B5A6}
- NpgsqlMRPProviders
-
-
- {90BF2234-7252-4CD5-B2A4-17501B19279B}
- SalesCatalog
-
-
- {77044C92-D2F1-45BD-80DD-AA25B311B027}
- Yavsc
-
-
-
-
-
- False
- PreserveNewest
-
-
-
diff --git a/TestAPI/TestAutomate.cs b/TestAPI/TestAutomate.cs
deleted file mode 100644
index b83313a4..00000000
--- a/TestAPI/TestAutomate.cs
+++ /dev/null
@@ -1,69 +0,0 @@
-//
-// MyClass.cs
-//
-// Author:
-// Paul Schneider
-//
-// Copyright (c) 2015 GNU GPL
-//
-// This program is free software: you can redistribute it and/or modify
-// it under the terms of the GNU Lesser General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
-//
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU Lesser General Public License for more details.
-//
-// You should have received a copy of the GNU Lesser General Public License
-// along with this program. If not, see .
-using System;
-using Machine.Specifications;
-using Yavsc.Model.WorkFlow;
-using NUnit.Framework;
-
-namespace TestAPI
-{
- [Subject(typeof(Automate),"simple automate")]
- public class CreatingAnAutomate
- {
- static Automate Subject;
- ///
- /// The context.
- ///
- Establish context = () =>
- {
- // ... any mocking, stubbing, or other setup ...
- Subject = new Automate();
- };
-
- Because of = () => Subject.AddTransition(0,1,'a');
- ///
- /// The should be in state 0.
- ///
- It should_be_in_state_0 = () => Subject.State.ShouldEqual(0);
- ///
- /// The should not be in state 1.
- ///
- It should_not_be_in_state_1 = () => Subject.State.ShouldNotEqual(1);
- ///
- /// The state of the should not indicate o as final.
- ///
- It should_not_indicate_O_as_final_state = () => Subject.IsInFinalState().ShouldNotEqual(true);
-
- [Test]
- public void DoTheTest()
- {
- // Establish
- context.Invoke ();
- // Because
- of.Invoke ();
- should_be_in_state_0.Invoke ();
- should_not_be_in_state_1.Invoke ();
- should_not_indicate_O_as_final_state.Invoke ();
- }
-
- }
-}
-
diff --git a/TestAPI/TestByteA.cs b/TestAPI/TestByteA.cs
deleted file mode 100644
index c2e78e22..00000000
--- a/TestAPI/TestByteA.cs
+++ /dev/null
@@ -1,90 +0,0 @@
-#if TEST
-using NUnit.Framework;
-using System;
-using Npgsql;
-using System.Web.Configuration;
-
-namespace Yavsc
-{
- [TestFixture ()]
- public class TestByteA: IDisposable
- {
- string cnxName = "yavsc";
-
- string ConnectionString { get {
- return "Server=127.0.0.1;Port=5432;Database=YavscDev;User Id=yavscdev;Password=admin;Encoding=Unicode;" ;
- // Why? not this : return WebConfigurationManager.ConnectionStrings [cnxName].ConnectionString;
-
- } }
-
- [TestFixtureSetUp]
- public void Init()
- {
- // create the table
- Console.WriteLine ("cnx:"+ConnectionString);
- using (NpgsqlConnection cnx = new NpgsqlConnection (ConnectionString))
- {
- cnx.Open ();
- using (NpgsqlCommand cmd = cnx.CreateCommand ()) {
- cmd.CommandText = "drop table _testbytea";
- try { cmd.ExecuteNonQuery (); }
- catch (NpgsqlException) {
- }
- cmd.CommandText = "create table _testbytea( t bytea )";
- cmd.ExecuteNonQuery ();
- }
- }
- }
-
- [Test(Description="Test storing a byte array in a Postgresql table field")]
- public void TestStoreByteA ()
- {
- byte []a = new byte[3];
- a[0]=1;
- a[1]=2;
- a[2]=3;
- using (NpgsqlConnection cnx = new NpgsqlConnection (ConnectionString)) {
- cnx.Open ();
- using (NpgsqlCommand cmd = cnx.CreateCommand ())
- {
- cmd.CommandText = "insert into _testbytea (t) values (@tv)";
- cmd.Parameters.AddWithValue ("@tv", a);
- cmd.ExecuteNonQuery ();
- }
-
- using (NpgsqlCommand cmd = cnx.CreateCommand ())
- {
- cmd.CommandText = "select t from _testbytea";
- cmd.Parameters.AddWithValue ("@tv", a);
-
- NpgsqlDataReader rdr = cmd.ExecuteReader ();
- if (!rdr.Read ())
- throw new Exception ("Read failed");
- int i = rdr.GetOrdinal ("t");
- byte []rded = (byte[]) rdr.GetValue (i);
- if (rded.Length!=a.Length)
- throw new Exception("Lengthes don't match");
- }
- }
- }
-
- #region IDisposable implementation
-
- [TestFixtureTearDown]
- public void Dispose ()
- {
- // drop the table
- using (NpgsqlConnection cnx = new NpgsqlConnection (ConnectionString)) {
- cnx.Open ();
- using (NpgsqlCommand cmd = cnx.CreateCommand ()) {
- cmd.CommandText = "drop table _testbytea";
- cmd.ExecuteNonQuery ();
- }
- }
- }
-
- #endregion
- }
-}
-
-#endif
\ No newline at end of file
diff --git a/TestAPI/packages.config b/TestAPI/packages.config
deleted file mode 100644
index 99346f07..00000000
--- a/TestAPI/packages.config
+++ /dev/null
@@ -1,18 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/TestAPI/test-domain-TestAPI.config b/TestAPI/test-domain-TestAPI.config
deleted file mode 100644
index 02cd097f..00000000
--- a/TestAPI/test-domain-TestAPI.config
+++ /dev/null
@@ -1,124 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/WebControls/InputCircle.cs b/WebControls/InputCircle.cs
deleted file mode 100644
index 709f7b27..00000000
--- a/WebControls/InputCircle.cs
+++ /dev/null
@@ -1,174 +0,0 @@
-//
-// InputCircle.cs
-//
-// Author:
-// Paul Schneider
-//
-// Copyright (c) 2015 GNU GPL
-//
-// This program is free software: you can redistribute it and/or modify
-// it under the terms of the GNU Lesser General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
-//
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU Lesser General Public License for more details.
-//
-// You should have received a copy of the GNU Lesser General Public License
-// along with this program. If not, see .
-using System;
-using System.Web;
-using System.Security.Permissions;
-using System.Web.UI;
-using System.ComponentModel;
-using System.Web.UI.WebControls;
-using Yavsc.Model.Circles;
-using System.Web.Security;
-using System.Collections;
-using System.Collections.Generic;
-using System.Web.Mvc;
-using System.Linq;
-
-namespace Yavsc.WebControls
-{
- ///
- /// Input circle.
- ///
- [
- AspNetHostingPermission (SecurityAction.Demand,
- Level = AspNetHostingPermissionLevel.Minimal),
- AspNetHostingPermission (SecurityAction.InheritanceDemand,
- Level = AspNetHostingPermissionLevel.Minimal),
- ParseChildren (true),
- DefaultProperty ("Name"),
- ToolboxData ("<{0}:InputCircle runat=\"server\"> {0}:InputCircle>")
- ]
- public class InputCircle: WebControl
- {
- ///
- /// Initializes a new instance of the class.
- ///
- public InputCircle ()
- {
- }
- ///
- /// Gets or sets the name.
- ///
- /// The name.
- [Bindable (true), DefaultValue(""), Localizable(true)]
- public string Name {
- get {
- return (string) ViewState["Name"];
- }
- set {
- ViewState ["Name"] = value;
- }
- }
- ///
- /// Gets or sets the The CircleInfo collection.
- ///
- /// The value.
- [Bindable (true), DefaultValue(null), Localizable(true),
- Category("Behavior"),
- Description("The CircleInfo collection"),
- DesignerSerializationVisibility(
- DesignerSerializationVisibility.Content),
- PersistenceMode(PersistenceMode.InnerDefaultProperty)
- ]
- public IEnumerable Value {
- get {
- if (ViewState ["Value"] == null)
- ViewState ["Value"] = new List ();
- return (IEnumerable) ViewState["Value"];
- }
- set {
- ViewState ["Value"] = value;
- }
- }
-
- ///
- /// Gets or sets the on change.
- ///
- /// The on change.
- [Bindable (true), DefaultValue(""), Localizable(false)]
- public string OnChange {
- get {
- return (string) ViewState["OnChange"];
- }
- set {
- ViewState ["OnChange"] = value;
- }
- }
- ///
- /// Gets or sets a value indicating whether this is multiple.
- ///
- /// true if multiple; otherwise, false.
- [Bindable (true), DefaultValue(false)]
- public bool Multiple {
- get {
-
- return (bool) ViewState["Multiple"];
- }
- set {
- ViewState ["Multiple"] = value;
-
- }
- }
-
- ///
- /// Gets or sets the empty value.
- ///
- /// The empty value.
- [Bindable (true), DefaultValue(null)]
- public string EmptyValue {
- get {
- return (string) ViewState["EmptyValue"];
- }
- set {
- ViewState ["EmptyValue"] = value;
-
- }
- }
-
- ///
- /// Renders the contents.
- ///
- /// Writer.
- protected override void RenderContents (HtmlTextWriter writer)
- {
- writer.AddAttribute ("id", ID);
- writer.AddAttribute ("name", Name);
- writer.AddAttribute ("class", CssClass);
- if (!string.IsNullOrWhiteSpace(OnChange))
- writer.AddAttribute ("onchange", OnChange);
- if (Multiple)
- writer.AddAttribute ("multiple","true");
- writer.RenderBeginTag ("select");
-
- if (EmptyValue!=null) {
- writer.AddAttribute ("value", "");
- writer.RenderBeginTag ("option");
- writer.Write (EmptyValue);
- writer.RenderEndTag ();
- }
- var u = Membership.GetUser ();
- if (u != null) {
- var circles = CircleManager.DefaultProvider.List (u.UserName);
- foreach (SelectListItem sli in Value) {
- if (circles.Any( x=> x.Title == sli.Text)) {
- writer.AddAttribute ("selected", null);
- break;
- }
- writer.AddAttribute ("value", sli.Value );
- writer.RenderBeginTag ("option");
- writer.Write (sli.Text);
- writer.RenderEndTag ();
- }
- }
- writer.RenderEndTag ();
- }
- }
-}
-
diff --git a/WebControls/InputUserName.cs b/WebControls/InputUserName.cs
deleted file mode 100644
index ac9035e6..00000000
--- a/WebControls/InputUserName.cs
+++ /dev/null
@@ -1,189 +0,0 @@
-//
-// SelectUserControl.cs
-//
-// Author:
-// Paul Schneider
-//
-// Copyright (c) 2015 Paul Schneider
-//
-// This program is free software: you can redistribute it and/or modify
-// it under the terms of the GNU Lesser General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
-//
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU Lesser General Public License for more details.
-//
-// You should have received a copy of the GNU Lesser General Public License
-// along with this program. If not, see .
-using System;
-using System.Web;
-using System.Security.Permissions;
-using System.Web.UI;
-using System.Web.UI.WebControls;
-using System.ComponentModel;
-using System.Web.Security;
-
-
-namespace Yavsc.WebControls
-{
- ///
- /// Select user control.
- ///
- [
- AspNetHostingPermission (SecurityAction.Demand,
- Level = AspNetHostingPermissionLevel.Minimal),
- AspNetHostingPermission (SecurityAction.InheritanceDemand,
- Level = AspNetHostingPermissionLevel.Minimal),
- ParseChildren (true),
- DefaultProperty ("Name"),
- ToolboxData ("<{0}:InputUserName runat=\"server\"> {0}:InputUserName>")
- ]
- public class InputUserName: WebControl
- {
- ///
- /// Initializes a new instance of the class.
- ///
- public InputUserName ()
- {
- Multiple = false;
- EmptyValue = null;
- }
- ///
- /// Gets or sets the name.
- ///
- /// The name.
- [Bindable (true)]
- [DefaultValue("")]
- [Localizable(true)]
- public string Name {
- get {
- return (string) ViewState["Name"];
- }
- set {
- ViewState ["Name"] = value;
- }
- }
- ///
- /// Gets or sets the value.
- ///
- /// The value.
- [Bindable (true),DefaultValue(""),Localizable(true)]
- public string Value {
- get {
- return (string) ViewState["Value"];
- }
- set {
- ViewState ["Value"] = value;
- }
- }
-
- ///
- /// Gets or sets the client side action on change.
- ///
- /// The on change.
- [Bindable (true),DefaultValue(""),Localizable(false)]
- public string OnChange {
- get {
- return (string) ViewState["OnChange"];
- }
- set {
- ViewState ["OnChange"] = value;
- }
- }
-
-
- ///
- /// Gets or sets the in role.
- ///
- /// The in role.
- [Bindable (true),DefaultValue(""),Localizable(true)]
- public string InRole {
- get {
- return (string) ViewState["InRole"];
- }
- set {
- ViewState ["InRole"] = value;
- }
- }
-
- ///
- /// Gets or sets a value indicating whether this is multiple.
- ///
- /// true if multiple; otherwise, false.
- [Bindable (true), DefaultValue(false)]
- public bool Multiple {
- get {
-
- return (bool) ViewState["Multiple"];
- }
- set {
- ViewState ["Multiple"] = value;
-
- }
- }
-
- ///
- /// Gets or sets the empty value.
- ///
- /// The empty value.
- [Bindable (true), DefaultValue(null)]
- public string EmptyValue {
- get {
- return (string) ViewState["EmptyValue"];
- }
- set {
- ViewState ["EmptyValue"] = value;
-
- }
- }
-
-
-
- ///
- /// Renders the contents.
- ///
- /// Writer.
- protected override void RenderContents (HtmlTextWriter writer)
- {
- writer.AddAttribute ("id", ID);
- writer.AddAttribute ("name", Name);
- writer.AddAttribute ("class", CssClass);
- if (!string.IsNullOrWhiteSpace(OnChange))
- writer.AddAttribute ("onchange", OnChange);
- if (Multiple)
- writer.AddAttribute ("multiple","true");
- writer.RenderBeginTag ("select");
- string[] selected = null;
- string[] roles = null;
- if (!string.IsNullOrWhiteSpace (Value)) {
- selected = Value.Split (',');
- }
- if (!string.IsNullOrWhiteSpace (InRole)) {
- roles = InRole.Split (',');
- }
- if (EmptyValue!=null) {
- writer.AddAttribute ("value", "");
- writer.RenderBeginTag ("option");
- writer.Write (EmptyValue);
- writer.RenderEndTag ();
- }
- foreach (MembershipUser u in Membership.GetAllUsers()) {
- // if roles are specified, members must be in one of them
- if (roles != null)
- if (!Array.Exists (roles, x => Roles.IsUserInRole (x)))
- continue;
- if (selected!=null)
- if (Array.Exists(selected, x=> x == u.UserName))
- writer.AddAttribute ("selected",null);
- writer.RenderBeginTag ("option");
- writer.Write (u.UserName);
- writer.RenderEndTag ();
- }
- writer.RenderEndTag ();
- }
- }
-}
-
diff --git a/WebControls/Properties/AssemblyInfo.cs b/WebControls/Properties/AssemblyInfo.cs
deleted file mode 100644
index ee64d87a..00000000
--- a/WebControls/Properties/AssemblyInfo.cs
+++ /dev/null
@@ -1,23 +0,0 @@
-using System.Reflection;
-using System.Runtime.CompilerServices;
-using System.Web.UI;
-
-// Information about this assembly is defined by the following attributes.
-// Change them to the values specific to your project.
-[assembly: AssemblyTitle ("WebControls")]
-[assembly: AssemblyDescription ("")]
-[assembly: AssemblyConfiguration ("")]
-[assembly: AssemblyCompany ("")]
-[assembly: AssemblyProduct ("")]
-[assembly: AssemblyCopyright ("Paul Schneider")]
-[assembly: AssemblyTrademark ("")]
-[assembly: AssemblyCulture ("")]
-// The assembly version has the format "{Major}.{Minor}.{Build}.{Revision}".
-// The form "{Major}.{Minor}.*" will automatically update the build and revision,
-// and "{Major}.{Minor}.{Build}.*" will update just the revision.
-[assembly: AssemblyVersion ("1.0.*")]
-// The following attributes are used to specify the signing key for the assembly,
-// if desired. See the Mono documentation for more information about signing.
-//[assembly: AssemblyDelaySign(false)]
-//[assembly: AssemblyKeyFile("")]
-[assembly: TagPrefix("Yavsc.WebControls", "yavsc")]
diff --git a/WebControls/RateControl.cs b/WebControls/RateControl.cs
deleted file mode 100644
index 272cf8e0..00000000
--- a/WebControls/RateControl.cs
+++ /dev/null
@@ -1,90 +0,0 @@
-//
-// RateControl.cs
-//
-// Author:
-// Paul Schneider
-//
-// Copyright (c) 2015 GNU GPL
-//
-// This program is free software: you can redistribute it and/or modify
-// it under the terms of the GNU Lesser General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
-//
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU Lesser General Public License for more details.
-//
-// You should have received a copy of the GNU Lesser General Public License
-// along with this program. If not, see .
-using System;
-using System.Web.Mvc;
-using Yavsc.Model;
-
-namespace Yavsc
-{
- ///
- /// Rate control.
- ///
- public class RateControl : ViewUserControl where TModel : IRating
- {
- ///
- /// Initializes a new instance of the Yavsc.Blogs.RateControl class.
- ///
- public RateControl ()
- {
- }
-
- ///
- /// Gets or sets the rate, that is, an integer between 0 and 100
- ///
- /// The rate.
- public int Rate
- {
- get { return (int) ViewState["rate"]; }
- set {
- ViewState["rate"] = value;
- int rate = value;
- int rounded = (rate / 10);
- HasHalf = rounded % 2 == 1;
- NbFilled = (int)rounded / 2;
- NbEmpty = (5 - NbFilled) - ((HasHalf)?1:0) ;
- }
- }
-
- ///
- /// Gets the nb filed.
- ///
- /// The nb filed.
- public int NbFilled {
- set { ViewState["nbfilled"] = value; }
- get { return (int) ViewState["nbfilled"]; }
- }
-
- ///
- /// Gets the nb empty.
- ///
- /// The nb empty.
- public int NbEmpty {
- set { ViewState["nbempty"] = value; }
- get { return (int) ViewState["nbempty"]; }
- }
-
- ///
- /// Gets a value indicating whether this instance has half.
- ///
- /// true if this instance has half; otherwise, false.
- public bool HasHalf {
- set { ViewState["hashalf"] = value; }
- get { return (bool) ViewState["hashalf"]; }
- }
-
- protected override void OnInit (EventArgs e)
- {
- base.OnInit (e);
- Rate = this.Model.Rate;
- }
- }
-}
-
diff --git a/WebControls/ResultPages.cs b/WebControls/ResultPages.cs
deleted file mode 100644
index 9d58a809..00000000
--- a/WebControls/ResultPages.cs
+++ /dev/null
@@ -1,196 +0,0 @@
-using System;
-using System.Web;
-using System.Security.Permissions;
-using System.Web.UI;
-using System.Web.UI.WebControls;
-using System.ComponentModel;
-using System.Collections;
-
-namespace Yavsc.WebControls
-{
- ///
- /// Result pages.
- ///
- [
- AspNetHostingPermission (SecurityAction.Demand,
- Level = AspNetHostingPermissionLevel.Minimal),
- AspNetHostingPermission (SecurityAction.InheritanceDemand,
- Level = AspNetHostingPermissionLevel.Minimal),
- ParseChildren (true),
- ToolboxData ("<{0}:ResultPages runat=\"server\"> {0}:ResultPages>")
- ]
- public class ResultPages: WebControl
- {
- ///
- /// Initializes a new instance of the class.
- ///
- public ResultPages ()
- {
-
- }
-
- ///
- /// Gets or sets the results per page.
- ///
- /// The results per page.
- public int PageSize {
- get {
- return (int)( ViewState["PageSize"]==null?10:ViewState["PageSize"]);
- }
- set {
- ViewState["PageSize"]=value;
- }
- }
-
-
- ///
- /// Gets or sets the result count.
- ///
- /// The result count.
- public int ResultCount {
- get {
- return (int)( ViewState["ResultCount"]==null?0:ViewState["ResultCount"]);
- }
- set {
- ViewState["ResultCount"] = value;
- }
- }
-
- ///
- /// Gets or sets the text.
- ///
- /// The text.
- [DefaultValue("Pages:")]
- [Localizable(true)]
- public string Text {
- get {
-
- string s = (string)ViewState["Text"];
- return (s == null) ? "Pages:" : s;
- }
- set {
- ViewState["Text"] = value;
- }
- }
-
- ///
- /// Gets or sets the action.
- ///
- /// The action.
- [Bindable (true)]
- [DefaultValue("?pageIndex=")]
- public string Action {
- get {
-
- string s = (string)ViewState["Action"];
- return (s == null) ? "?pageIndex=" : s;
- }
- set {
- ViewState["Action"] = value;
- }
- }
-
- ///
- /// Gets or sets the Single page message.
- ///
- /// The none.
- [Bindable (true)]
- [DefaultValue("1")]
- public string SinglePage {
- get {
- return (string) ViewState["SinglePage"];
- }
- set {
- ViewState["SinglePage"] = value;
- }
- }
-
- ///
- /// Gets or sets the none.
- ///
- /// The none.
- [Bindable (true)]
- [DefaultValue("none")]
- public string None {
- get {
- return (string) ViewState["None"];
- }
- set {
- ViewState["None"] = value;
- }
- }
- ///
- /// Gets or sets the none.
- ///
- /// The none.
- [Bindable (true)]
- [DefaultValue("Pages: ")]
- public string PagesLabel {
- get {
- return (string) ViewState["PagesLabel"];
- }
- set {
- ViewState["PagesLabel"] = value;
- }
- }
- ///
- /// Gets or sets the current page.
- ///
- /// The current page.
- [Bindable (true)]
- [DefaultValue(0)]
- public int PageIndex {
- get {
- int i = (int)(ViewState["PageIndex"]==null?0:ViewState["PageIndex"]);
- return i;
- }
- set {
- ViewState["PageIndex"] = value;
- }
- }
-
- ///
- /// Renders the contents as the list of links to pages of results.
- ///
- /// Writer.
- protected override void RenderContents (HtmlTextWriter writer)
- {
- // avoids a division by zero
- if (PageSize <= 0)
- PageSize = 5;
-
- if (ResultCount > 0 && ResultCount > PageSize ) {
- writer.WriteEncodedText (Text);
- int pageCount = ((ResultCount-1) / PageSize) + 1;
- if ( pageCount > 1 ) {
- if (!string.IsNullOrWhiteSpace(CssClass))
- writer.AddAttribute ("class", this.CssClass);
- writer.RenderBeginTag ("div");
- writer.Write (PagesLabel);
- for (int pi = (PageIndex < 5) ? 0 : PageIndex - 5; pi < pageCount && pi < PageIndex + 5; pi++) {
- if (PageIndex == pi)
- writer.RenderBeginTag ("b");
- else {
- writer.AddAttribute (HtmlTextWriterAttribute.Href,
- string.Format (Action, pi));
- writer.RenderBeginTag ("a");
- }
- writer.Write (pi + 1);
- writer.RenderEndTag ();
- writer.Write (" ");
- }
- RenderChildren (writer);
- writer.RenderEndTag ();
- }
- else {
- writer.Write (SinglePage);
- }
- }
- if (ResultCount == 0) {
- writer.Write (None);
- }
- }
- }
-}
-
-
diff --git a/WebControls/UserCard.cs b/WebControls/UserCard.cs
deleted file mode 100644
index a92742de..00000000
--- a/WebControls/UserCard.cs
+++ /dev/null
@@ -1,81 +0,0 @@
-//
-// UserCard.cs
-//
-// Author:
-// Paul Schneider
-//
-// Copyright (c) 2015 GNU GPL
-//
-// This program is free software: you can redistribute it and/or modify
-// it under the terms of the GNU Lesser General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
-//
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU Lesser General Public License for more details.
-//
-// You should have received a copy of the GNU Lesser General Public License
-// along with this program. If not, see .
-using System;
-using System.Web.UI.WebControls;
-using System.Web;
-using System.Security.Permissions;
-using System.Web.UI;
-using System.ComponentModel;
-using System.Web.Security;
-
-namespace Yavsc.WebControls
-{
- ///
- /// User card.
- ///
- [
- AspNetHostingPermission (SecurityAction.Demand,
- Level = AspNetHostingPermissionLevel.Minimal),
- AspNetHostingPermission (SecurityAction.InheritanceDemand,
- Level = AspNetHostingPermissionLevel.Minimal),
- ParseChildren (true),
- DefaultProperty ("Name"),
- ToolboxData ("<{0}:UserCard runat=\"server\"> {0}:UserCard>")
- ]
- public class UserCard: WebControl
- {
- ///
- /// Initializes a new instance of the class.
- ///
- public UserCard ()
- {
- }
-
- [Bindable (true), DefaultValue(""), Localizable(false)]
- string UserName { get; set; }
-
- [Bindable (true), DefaultValue("(You)"), Localizable(true)]
- string yourTag { get; set; }
- ///
- /// Renders the contents.
- ///
- /// Writer.
- protected override void RenderContents (HtmlTextWriter writer)
- {
- if (UserName != null) {
- // icon, stats
-
- writer.AddAttribute ("id", ID);
- writer.AddAttribute ("class", CssClass);
- writer.RenderBeginTag ("div");
- writer.Write (UserName+" ");
- var vuser = Membership.GetUser();
- if (vuser != null)
- if (vuser.UserName == UserName)
- writer.Write (yourTag);
- writer.RenderEndTag ();
- }
- }
-
-
- }
-}
-
diff --git a/WebControls/WebControls.csproj b/WebControls/WebControls.csproj
deleted file mode 100644
index 2d204e82..00000000
--- a/WebControls/WebControls.csproj
+++ /dev/null
@@ -1,112 +0,0 @@
-
-
-
- Debug
- AnyCPU
- 8.0.30703
- 2.0
- {59E1DF7B-FFA0-4DEB-B5F3-76EBD98D5356}
- Library
- WebControls
- Yavsc.WebControls
- v4.5.1
-
-
- true
- full
- false
- bin\Debug
- DEBUG;
- prompt
- 4
- false
- bin\Debug\Yavsc.WebControls.xml
-
-
- full
- true
- bin\Release
- prompt
- 4
- false
-
-
- false
- bin\Lua
- 4
-
-
- false
- bin\TotemPre
- 4
-
-
- false
- bin\TotemProd
- 4
-
-
- false
- bin\YavscPre
- 4
-
-
- false
- bin\Yavsc
- 4
-
-
- false
- bin\Lua
- 4
-
-
-
-
-
-
-
-
-
-
- ..\packages\Microsoft.Web.Infrastructure.1.0.0.0\lib\net40\Microsoft.Web.Infrastructure.dll
-
-
- ..\packages\Microsoft.AspNet.Razor.3.2.3\lib\net45\System.Web.Razor.dll
-
-
- ..\packages\Microsoft.AspNet.WebPages.3.2.3\lib\net45\System.Web.Helpers.dll
-
-
- ..\packages\Microsoft.AspNet.WebPages.3.2.3\lib\net45\System.Web.WebPages.dll
-
-
- ..\packages\Microsoft.AspNet.WebPages.3.2.3\lib\net45\System.Web.WebPages.Deployment.dll
-
-
- ..\packages\Microsoft.AspNet.WebPages.3.2.3\lib\net45\System.Web.WebPages.Razor.dll
-
-
- ..\packages\Microsoft.AspNet.Mvc.5.2.3\lib\net45\System.Web.Mvc.dll
- False
-
-
-
-
-
-
-
-
-
-
-
-
-
- {68F5B80A-616E-4C3C-91A0-828AA40000BD}
- YavscModel
-
-
-
-
-
-
\ No newline at end of file
diff --git a/WebControls/packages.config b/WebControls/packages.config
deleted file mode 100644
index 4d690b0f..00000000
--- a/WebControls/packages.config
+++ /dev/null
@@ -1,7 +0,0 @@
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/Yavsc.sln b/Yavsc.sln
deleted file mode 100644
index 372ee1d8..00000000
--- a/Yavsc.sln
+++ /dev/null
@@ -1,256 +0,0 @@
-
-Microsoft Visual Studio Solution File, Format Version 11.00
-# Visual Studio 2010
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Yavsc", "web\Yavsc.csproj", "{77044C92-D2F1-45BD-80DD-AA25B311B027}"
-EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "NpgsqlMRPProviders", "NpgsqlMRPProviders\NpgsqlMRPProviders.csproj", "{BBA7175D-7F92-4278-96FC-84C495A2B5A6}"
-EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "NpgsqlBlogProvider", "NpgsqlBlogProvider\NpgsqlBlogProvider.csproj", "{C6E9E91B-97D3-48D9-8AA7-05356929E162}"
-EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SalesCatalog", "SalesCatalog\SalesCatalog.csproj", "{90BF2234-7252-4CD5-B2A4-17501B19279B}"
-EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "YavscModel", "yavscModel\YavscModel.csproj", "{68F5B80A-616E-4C3C-91A0-828AA40000BD}"
-EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "NpgsqlContentProvider", "NpgsqlContentProvider\NpgsqlContentProvider.csproj", "{821FF72D-9F4B-4A2C-B95C-7B965291F119}"
-EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "YavscClient", "yavscclient\YavscClient.csproj", "{EEFCECE6-3B7F-4BBE-B7AF-69377AF3CF39}"
-EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WebControls", "WebControls\WebControls.csproj", "{59E1DF7B-FFA0-4DEB-B5F3-76EBD98D5356}"
-EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ITContentProvider", "ITContentProvider\ITContentProvider.csproj", "{9D7D892E-9B77-4713-892D-C26E1E944119}"
-EndProject
-Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "plugins", "plugins", "{ECEC9074-ACB5-4A74-BE22-FF7B40F25A1A}"
-EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "fortune", "plugins\fortune\fortune.csproj", "{B5F49C21-7BB3-4DC0-AE65-F4ED0F6D15BD}"
-EndProject
-Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{7E3CF14D-91B6-4088-8630-7655C749130E}"
- ProjectSection(SolutionItems) = preProject
- LICENSE = LICENSE
- Makefile = Makefile
- README.md = README.md
- Features.md = Features.md
- EndProjectSection
-EndProject
-Project("{9344BDBB-3E7F-41FC-A0DD-8665D75EE146}") = "pkg", "pkg\pkg.mdproj", "{C6DBD1DC-B619-4DC7-BC92-15693508541E}"
-EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "TestAPI", "TestAPI\TestAPI.csproj", "{42B77C89-BF6D-4DB1-8763-6197F4030A95}"
-EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Presta", "Presta\Presta.csproj", "{6A312228-9641-478D-916F-4681CC65A35D}"
-EndProject
-Global
- GlobalSection(SolutionConfigurationPlatforms) = preSolution
- Debug|Any CPU = Debug|Any CPU
- Release|Any CPU = Release|Any CPU
- Lua|Any CPU = Lua|Any CPU
- TotemPre|Any CPU = TotemPre|Any CPU
- TotemProd|Any CPU = TotemProd|Any CPU
- YavscPre|Any CPU = YavscPre|Any CPU
- Yavsc|Any CPU = Yavsc|Any CPU
- LuaDebug|Any CPU = LuaDebug|Any CPU
- EndGlobalSection
- GlobalSection(ProjectConfigurationPlatforms) = postSolution
- {42B77C89-BF6D-4DB1-8763-6197F4030A95}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {42B77C89-BF6D-4DB1-8763-6197F4030A95}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {42B77C89-BF6D-4DB1-8763-6197F4030A95}.Lua|Any CPU.ActiveCfg = Lua|Any CPU
- {42B77C89-BF6D-4DB1-8763-6197F4030A95}.LuaDebug|Any CPU.ActiveCfg = Debug|Any CPU
- {42B77C89-BF6D-4DB1-8763-6197F4030A95}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {42B77C89-BF6D-4DB1-8763-6197F4030A95}.Release|Any CPU.Build.0 = Release|Any CPU
- {42B77C89-BF6D-4DB1-8763-6197F4030A95}.TotemPre|Any CPU.ActiveCfg = TotemPre|Any CPU
- {42B77C89-BF6D-4DB1-8763-6197F4030A95}.TotemProd|Any CPU.ActiveCfg = TotemProd|Any CPU
- {42B77C89-BF6D-4DB1-8763-6197F4030A95}.TotemProd|Any CPU.Build.0 = TotemProd|Any CPU
- {42B77C89-BF6D-4DB1-8763-6197F4030A95}.Yavsc|Any CPU.ActiveCfg = Yavsc|Any CPU
- {42B77C89-BF6D-4DB1-8763-6197F4030A95}.YavscPre|Any CPU.ActiveCfg = YavscPre|Any CPU
- {59E1DF7B-FFA0-4DEB-B5F3-76EBD98D5356}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {59E1DF7B-FFA0-4DEB-B5F3-76EBD98D5356}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {59E1DF7B-FFA0-4DEB-B5F3-76EBD98D5356}.Lua|Any CPU.ActiveCfg = Lua|Any CPU
- {59E1DF7B-FFA0-4DEB-B5F3-76EBD98D5356}.Lua|Any CPU.Build.0 = Lua|Any CPU
- {59E1DF7B-FFA0-4DEB-B5F3-76EBD98D5356}.LuaDebug|Any CPU.ActiveCfg = Debug|Any CPU
- {59E1DF7B-FFA0-4DEB-B5F3-76EBD98D5356}.LuaDebug|Any CPU.Build.0 = Debug|Any CPU
- {59E1DF7B-FFA0-4DEB-B5F3-76EBD98D5356}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {59E1DF7B-FFA0-4DEB-B5F3-76EBD98D5356}.Release|Any CPU.Build.0 = Release|Any CPU
- {59E1DF7B-FFA0-4DEB-B5F3-76EBD98D5356}.TotemPre|Any CPU.ActiveCfg = TotemPre|Any CPU
- {59E1DF7B-FFA0-4DEB-B5F3-76EBD98D5356}.TotemPre|Any CPU.Build.0 = TotemPre|Any CPU
- {59E1DF7B-FFA0-4DEB-B5F3-76EBD98D5356}.TotemProd|Any CPU.ActiveCfg = TotemProd|Any CPU
- {59E1DF7B-FFA0-4DEB-B5F3-76EBD98D5356}.TotemProd|Any CPU.Build.0 = TotemProd|Any CPU
- {59E1DF7B-FFA0-4DEB-B5F3-76EBD98D5356}.Yavsc|Any CPU.ActiveCfg = Yavsc|Any CPU
- {59E1DF7B-FFA0-4DEB-B5F3-76EBD98D5356}.Yavsc|Any CPU.Build.0 = Yavsc|Any CPU
- {59E1DF7B-FFA0-4DEB-B5F3-76EBD98D5356}.YavscPre|Any CPU.ActiveCfg = YavscPre|Any CPU
- {59E1DF7B-FFA0-4DEB-B5F3-76EBD98D5356}.YavscPre|Any CPU.Build.0 = YavscPre|Any CPU
- {68F5B80A-616E-4C3C-91A0-828AA40000BD}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {68F5B80A-616E-4C3C-91A0-828AA40000BD}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {68F5B80A-616E-4C3C-91A0-828AA40000BD}.Lua|Any CPU.ActiveCfg = Lua|Any CPU
- {68F5B80A-616E-4C3C-91A0-828AA40000BD}.Lua|Any CPU.Build.0 = Lua|Any CPU
- {68F5B80A-616E-4C3C-91A0-828AA40000BD}.LuaDebug|Any CPU.ActiveCfg = Debug|Any CPU
- {68F5B80A-616E-4C3C-91A0-828AA40000BD}.LuaDebug|Any CPU.Build.0 = Debug|Any CPU
- {68F5B80A-616E-4C3C-91A0-828AA40000BD}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {68F5B80A-616E-4C3C-91A0-828AA40000BD}.Release|Any CPU.Build.0 = Release|Any CPU
- {68F5B80A-616E-4C3C-91A0-828AA40000BD}.TotemPre|Any CPU.ActiveCfg = TotemPre|Any CPU
- {68F5B80A-616E-4C3C-91A0-828AA40000BD}.TotemPre|Any CPU.Build.0 = TotemPre|Any CPU
- {68F5B80A-616E-4C3C-91A0-828AA40000BD}.TotemProd|Any CPU.ActiveCfg = TotemProd|Any CPU
- {68F5B80A-616E-4C3C-91A0-828AA40000BD}.TotemProd|Any CPU.Build.0 = TotemProd|Any CPU
- {68F5B80A-616E-4C3C-91A0-828AA40000BD}.Yavsc|Any CPU.ActiveCfg = Yavsc|Any CPU
- {68F5B80A-616E-4C3C-91A0-828AA40000BD}.Yavsc|Any CPU.Build.0 = Yavsc|Any CPU
- {68F5B80A-616E-4C3C-91A0-828AA40000BD}.YavscPre|Any CPU.ActiveCfg = YavscPre|Any CPU
- {68F5B80A-616E-4C3C-91A0-828AA40000BD}.YavscPre|Any CPU.Build.0 = YavscPre|Any CPU
- {6A312228-9641-478D-916F-4681CC65A35D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {6A312228-9641-478D-916F-4681CC65A35D}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {6A312228-9641-478D-916F-4681CC65A35D}.Lua|Any CPU.ActiveCfg = Lua|Any CPU
- {6A312228-9641-478D-916F-4681CC65A35D}.Lua|Any CPU.Build.0 = Lua|Any CPU
- {6A312228-9641-478D-916F-4681CC65A35D}.LuaDebug|Any CPU.ActiveCfg = Debug|Any CPU
- {6A312228-9641-478D-916F-4681CC65A35D}.LuaDebug|Any CPU.Build.0 = Debug|Any CPU
- {6A312228-9641-478D-916F-4681CC65A35D}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {6A312228-9641-478D-916F-4681CC65A35D}.Release|Any CPU.Build.0 = Release|Any CPU
- {6A312228-9641-478D-916F-4681CC65A35D}.TotemPre|Any CPU.ActiveCfg = TotemPre|Any CPU
- {6A312228-9641-478D-916F-4681CC65A35D}.TotemProd|Any CPU.ActiveCfg = TotemProd|Any CPU
- {6A312228-9641-478D-916F-4681CC65A35D}.TotemProd|Any CPU.Build.0 = TotemProd|Any CPU
- {6A312228-9641-478D-916F-4681CC65A35D}.Yavsc|Any CPU.ActiveCfg = Yavsc|Any CPU
- {6A312228-9641-478D-916F-4681CC65A35D}.Yavsc|Any CPU.Build.0 = Yavsc|Any CPU
- {6A312228-9641-478D-916F-4681CC65A35D}.YavscPre|Any CPU.ActiveCfg = YavscPre|Any CPU
- {77044C92-D2F1-45BD-80DD-AA25B311B027}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {77044C92-D2F1-45BD-80DD-AA25B311B027}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {77044C92-D2F1-45BD-80DD-AA25B311B027}.Lua|Any CPU.ActiveCfg = Lua|Any CPU
- {77044C92-D2F1-45BD-80DD-AA25B311B027}.Lua|Any CPU.Build.0 = Lua|Any CPU
- {77044C92-D2F1-45BD-80DD-AA25B311B027}.LuaDebug|Any CPU.ActiveCfg = LuaDebug|Any CPU
- {77044C92-D2F1-45BD-80DD-AA25B311B027}.LuaDebug|Any CPU.Build.0 = LuaDebug|Any CPU
- {77044C92-D2F1-45BD-80DD-AA25B311B027}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {77044C92-D2F1-45BD-80DD-AA25B311B027}.Release|Any CPU.Build.0 = Release|Any CPU
- {77044C92-D2F1-45BD-80DD-AA25B311B027}.TotemPre|Any CPU.ActiveCfg = TotemPre|Any CPU
- {77044C92-D2F1-45BD-80DD-AA25B311B027}.TotemPre|Any CPU.Build.0 = TotemPre|Any CPU
- {77044C92-D2F1-45BD-80DD-AA25B311B027}.TotemProd|Any CPU.ActiveCfg = TotemProd|Any CPU
- {77044C92-D2F1-45BD-80DD-AA25B311B027}.TotemProd|Any CPU.Build.0 = TotemProd|Any CPU
- {77044C92-D2F1-45BD-80DD-AA25B311B027}.Yavsc|Any CPU.ActiveCfg = Yavsc|Any CPU
- {77044C92-D2F1-45BD-80DD-AA25B311B027}.Yavsc|Any CPU.Build.0 = Yavsc|Any CPU
- {77044C92-D2F1-45BD-80DD-AA25B311B027}.YavscPre|Any CPU.ActiveCfg = YavscPre|Any CPU
- {77044C92-D2F1-45BD-80DD-AA25B311B027}.YavscPre|Any CPU.Build.0 = YavscPre|Any CPU
- {821FF72D-9F4B-4A2C-B95C-7B965291F119}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {821FF72D-9F4B-4A2C-B95C-7B965291F119}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {821FF72D-9F4B-4A2C-B95C-7B965291F119}.Lua|Any CPU.ActiveCfg = Lua|Any CPU
- {821FF72D-9F4B-4A2C-B95C-7B965291F119}.Lua|Any CPU.Build.0 = Lua|Any CPU
- {821FF72D-9F4B-4A2C-B95C-7B965291F119}.LuaDebug|Any CPU.ActiveCfg = Debug|Any CPU
- {821FF72D-9F4B-4A2C-B95C-7B965291F119}.LuaDebug|Any CPU.Build.0 = Debug|Any CPU
- {821FF72D-9F4B-4A2C-B95C-7B965291F119}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {821FF72D-9F4B-4A2C-B95C-7B965291F119}.Release|Any CPU.Build.0 = Release|Any CPU
- {821FF72D-9F4B-4A2C-B95C-7B965291F119}.TotemPre|Any CPU.ActiveCfg = TotemPre|Any CPU
- {821FF72D-9F4B-4A2C-B95C-7B965291F119}.TotemPre|Any CPU.Build.0 = TotemPre|Any CPU
- {821FF72D-9F4B-4A2C-B95C-7B965291F119}.TotemProd|Any CPU.ActiveCfg = TotemProd|Any CPU
- {821FF72D-9F4B-4A2C-B95C-7B965291F119}.TotemProd|Any CPU.Build.0 = TotemProd|Any CPU
- {821FF72D-9F4B-4A2C-B95C-7B965291F119}.Yavsc|Any CPU.ActiveCfg = Yavsc|Any CPU
- {821FF72D-9F4B-4A2C-B95C-7B965291F119}.Yavsc|Any CPU.Build.0 = Yavsc|Any CPU
- {821FF72D-9F4B-4A2C-B95C-7B965291F119}.YavscPre|Any CPU.ActiveCfg = YavscPre|Any CPU
- {821FF72D-9F4B-4A2C-B95C-7B965291F119}.YavscPre|Any CPU.Build.0 = YavscPre|Any CPU
- {90BF2234-7252-4CD5-B2A4-17501B19279B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {90BF2234-7252-4CD5-B2A4-17501B19279B}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {90BF2234-7252-4CD5-B2A4-17501B19279B}.Lua|Any CPU.ActiveCfg = Lua|Any CPU
- {90BF2234-7252-4CD5-B2A4-17501B19279B}.Lua|Any CPU.Build.0 = Lua|Any CPU
- {90BF2234-7252-4CD5-B2A4-17501B19279B}.LuaDebug|Any CPU.ActiveCfg = Debug|Any CPU
- {90BF2234-7252-4CD5-B2A4-17501B19279B}.LuaDebug|Any CPU.Build.0 = Debug|Any CPU
- {90BF2234-7252-4CD5-B2A4-17501B19279B}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {90BF2234-7252-4CD5-B2A4-17501B19279B}.Release|Any CPU.Build.0 = Release|Any CPU
- {90BF2234-7252-4CD5-B2A4-17501B19279B}.TotemPre|Any CPU.ActiveCfg = TotemPre|Any CPU
- {90BF2234-7252-4CD5-B2A4-17501B19279B}.TotemProd|Any CPU.ActiveCfg = TotemProd|Any CPU
- {90BF2234-7252-4CD5-B2A4-17501B19279B}.TotemProd|Any CPU.Build.0 = TotemProd|Any CPU
- {90BF2234-7252-4CD5-B2A4-17501B19279B}.Yavsc|Any CPU.ActiveCfg = Yavsc|Any CPU
- {90BF2234-7252-4CD5-B2A4-17501B19279B}.Yavsc|Any CPU.Build.0 = Yavsc|Any CPU
- {90BF2234-7252-4CD5-B2A4-17501B19279B}.YavscPre|Any CPU.ActiveCfg = YavscPre|Any CPU
- {90BF2234-7252-4CD5-B2A4-17501B19279B}.YavscPre|Any CPU.Build.0 = YavscPre|Any CPU
- {9D7D892E-9B77-4713-892D-C26E1E944119}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {9D7D892E-9B77-4713-892D-C26E1E944119}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {9D7D892E-9B77-4713-892D-C26E1E944119}.Lua|Any CPU.ActiveCfg = Lua|Any CPU
- {9D7D892E-9B77-4713-892D-C26E1E944119}.Lua|Any CPU.Build.0 = Lua|Any CPU
- {9D7D892E-9B77-4713-892D-C26E1E944119}.LuaDebug|Any CPU.ActiveCfg = Debug|Any CPU
- {9D7D892E-9B77-4713-892D-C26E1E944119}.LuaDebug|Any CPU.Build.0 = Debug|Any CPU
- {9D7D892E-9B77-4713-892D-C26E1E944119}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {9D7D892E-9B77-4713-892D-C26E1E944119}.Release|Any CPU.Build.0 = Release|Any CPU
- {9D7D892E-9B77-4713-892D-C26E1E944119}.TotemPre|Any CPU.ActiveCfg = TotemPre|Any CPU
- {9D7D892E-9B77-4713-892D-C26E1E944119}.TotemPre|Any CPU.Build.0 = TotemPre|Any CPU
- {9D7D892E-9B77-4713-892D-C26E1E944119}.TotemProd|Any CPU.ActiveCfg = TotemProd|Any CPU
- {9D7D892E-9B77-4713-892D-C26E1E944119}.TotemProd|Any CPU.Build.0 = TotemProd|Any CPU
- {9D7D892E-9B77-4713-892D-C26E1E944119}.Yavsc|Any CPU.ActiveCfg = Yavsc|Any CPU
- {9D7D892E-9B77-4713-892D-C26E1E944119}.Yavsc|Any CPU.Build.0 = Yavsc|Any CPU
- {9D7D892E-9B77-4713-892D-C26E1E944119}.YavscPre|Any CPU.ActiveCfg = YavscPre|Any CPU
- {9D7D892E-9B77-4713-892D-C26E1E944119}.YavscPre|Any CPU.Build.0 = YavscPre|Any CPU
- {B5F49C21-7BB3-4DC0-AE65-F4ED0F6D15BD}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {B5F49C21-7BB3-4DC0-AE65-F4ED0F6D15BD}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {B5F49C21-7BB3-4DC0-AE65-F4ED0F6D15BD}.Lua|Any CPU.ActiveCfg = Lua|Any CPU
- {B5F49C21-7BB3-4DC0-AE65-F4ED0F6D15BD}.LuaDebug|Any CPU.ActiveCfg = Debug|Any CPU
- {B5F49C21-7BB3-4DC0-AE65-F4ED0F6D15BD}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {B5F49C21-7BB3-4DC0-AE65-F4ED0F6D15BD}.Release|Any CPU.Build.0 = Release|Any CPU
- {B5F49C21-7BB3-4DC0-AE65-F4ED0F6D15BD}.TotemPre|Any CPU.ActiveCfg = TotemPre|Any CPU
- {B5F49C21-7BB3-4DC0-AE65-F4ED0F6D15BD}.TotemProd|Any CPU.ActiveCfg = TotemProd|Any CPU
- {B5F49C21-7BB3-4DC0-AE65-F4ED0F6D15BD}.Yavsc|Any CPU.ActiveCfg = Yavsc|Any CPU
- {B5F49C21-7BB3-4DC0-AE65-F4ED0F6D15BD}.Yavsc|Any CPU.Build.0 = Yavsc|Any CPU
- {B5F49C21-7BB3-4DC0-AE65-F4ED0F6D15BD}.YavscPre|Any CPU.ActiveCfg = YavscPre|Any CPU
- {BBA7175D-7F92-4278-96FC-84C495A2B5A6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {BBA7175D-7F92-4278-96FC-84C495A2B5A6}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {BBA7175D-7F92-4278-96FC-84C495A2B5A6}.Lua|Any CPU.ActiveCfg = Lua|Any CPU
- {BBA7175D-7F92-4278-96FC-84C495A2B5A6}.Lua|Any CPU.Build.0 = Lua|Any CPU
- {BBA7175D-7F92-4278-96FC-84C495A2B5A6}.LuaDebug|Any CPU.ActiveCfg = Debug|Any CPU
- {BBA7175D-7F92-4278-96FC-84C495A2B5A6}.LuaDebug|Any CPU.Build.0 = Debug|Any CPU
- {BBA7175D-7F92-4278-96FC-84C495A2B5A6}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {BBA7175D-7F92-4278-96FC-84C495A2B5A6}.Release|Any CPU.Build.0 = Release|Any CPU
- {BBA7175D-7F92-4278-96FC-84C495A2B5A6}.TotemPre|Any CPU.ActiveCfg = TotemPre|Any CPU
- {BBA7175D-7F92-4278-96FC-84C495A2B5A6}.TotemPre|Any CPU.Build.0 = TotemPre|Any CPU
- {BBA7175D-7F92-4278-96FC-84C495A2B5A6}.TotemProd|Any CPU.ActiveCfg = TotemProd|Any CPU
- {BBA7175D-7F92-4278-96FC-84C495A2B5A6}.TotemProd|Any CPU.Build.0 = TotemProd|Any CPU
- {BBA7175D-7F92-4278-96FC-84C495A2B5A6}.Yavsc|Any CPU.ActiveCfg = Yavsc|Any CPU
- {BBA7175D-7F92-4278-96FC-84C495A2B5A6}.Yavsc|Any CPU.Build.0 = Yavsc|Any CPU
- {BBA7175D-7F92-4278-96FC-84C495A2B5A6}.YavscPre|Any CPU.ActiveCfg = YavscPre|Any CPU
- {BBA7175D-7F92-4278-96FC-84C495A2B5A6}.YavscPre|Any CPU.Build.0 = YavscPre|Any CPU
- {C6DBD1DC-B619-4DC7-BC92-15693508541E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {C6DBD1DC-B619-4DC7-BC92-15693508541E}.Lua|Any CPU.ActiveCfg = Lua|Any CPU
- {C6DBD1DC-B619-4DC7-BC92-15693508541E}.LuaDebug|Any CPU.ActiveCfg = LuaDebug|Any CPU
- {C6DBD1DC-B619-4DC7-BC92-15693508541E}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {C6DBD1DC-B619-4DC7-BC92-15693508541E}.TotemPre|Any CPU.ActiveCfg = TotemPre|Any CPU
- {C6DBD1DC-B619-4DC7-BC92-15693508541E}.TotemProd|Any CPU.ActiveCfg = TotemProd|Any CPU
- {C6DBD1DC-B619-4DC7-BC92-15693508541E}.Yavsc|Any CPU.ActiveCfg = Yavsc|Any CPU
- {C6DBD1DC-B619-4DC7-BC92-15693508541E}.YavscPre|Any CPU.ActiveCfg = YavscPre|Any CPU
- {C6E9E91B-97D3-48D9-8AA7-05356929E162}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {C6E9E91B-97D3-48D9-8AA7-05356929E162}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {C6E9E91B-97D3-48D9-8AA7-05356929E162}.Lua|Any CPU.ActiveCfg = Lua|Any CPU
- {C6E9E91B-97D3-48D9-8AA7-05356929E162}.Lua|Any CPU.Build.0 = Lua|Any CPU
- {C6E9E91B-97D3-48D9-8AA7-05356929E162}.LuaDebug|Any CPU.ActiveCfg = Debug|Any CPU
- {C6E9E91B-97D3-48D9-8AA7-05356929E162}.LuaDebug|Any CPU.Build.0 = Debug|Any CPU
- {C6E9E91B-97D3-48D9-8AA7-05356929E162}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {C6E9E91B-97D3-48D9-8AA7-05356929E162}.Release|Any CPU.Build.0 = Release|Any CPU
- {C6E9E91B-97D3-48D9-8AA7-05356929E162}.TotemPre|Any CPU.ActiveCfg = TotemPre|Any CPU
- {C6E9E91B-97D3-48D9-8AA7-05356929E162}.TotemPre|Any CPU.Build.0 = TotemPre|Any CPU
- {C6E9E91B-97D3-48D9-8AA7-05356929E162}.TotemProd|Any CPU.ActiveCfg = TotemProd|Any CPU
- {C6E9E91B-97D3-48D9-8AA7-05356929E162}.TotemProd|Any CPU.Build.0 = TotemProd|Any CPU
- {C6E9E91B-97D3-48D9-8AA7-05356929E162}.Yavsc|Any CPU.ActiveCfg = Yavsc|Any CPU
- {C6E9E91B-97D3-48D9-8AA7-05356929E162}.Yavsc|Any CPU.Build.0 = Yavsc|Any CPU
- {C6E9E91B-97D3-48D9-8AA7-05356929E162}.YavscPre|Any CPU.ActiveCfg = YavscPre|Any CPU
- {C6E9E91B-97D3-48D9-8AA7-05356929E162}.YavscPre|Any CPU.Build.0 = YavscPre|Any CPU
- {EEFCECE6-3B7F-4BBE-B7AF-69377AF3CF39}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {EEFCECE6-3B7F-4BBE-B7AF-69377AF3CF39}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {EEFCECE6-3B7F-4BBE-B7AF-69377AF3CF39}.Lua|Any CPU.ActiveCfg = Lua|Any CPU
- {EEFCECE6-3B7F-4BBE-B7AF-69377AF3CF39}.Lua|Any CPU.Build.0 = Lua|Any CPU
- {EEFCECE6-3B7F-4BBE-B7AF-69377AF3CF39}.LuaDebug|Any CPU.ActiveCfg = Debug|Any CPU
- {EEFCECE6-3B7F-4BBE-B7AF-69377AF3CF39}.LuaDebug|Any CPU.Build.0 = Debug|Any CPU
- {EEFCECE6-3B7F-4BBE-B7AF-69377AF3CF39}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {EEFCECE6-3B7F-4BBE-B7AF-69377AF3CF39}.Release|Any CPU.Build.0 = Release|Any CPU
- {EEFCECE6-3B7F-4BBE-B7AF-69377AF3CF39}.TotemPre|Any CPU.ActiveCfg = TotemPre|Any CPU
- {EEFCECE6-3B7F-4BBE-B7AF-69377AF3CF39}.TotemProd|Any CPU.ActiveCfg = TotemProd|Any CPU
- {EEFCECE6-3B7F-4BBE-B7AF-69377AF3CF39}.TotemProd|Any CPU.Build.0 = TotemProd|Any CPU
- {EEFCECE6-3B7F-4BBE-B7AF-69377AF3CF39}.Yavsc|Any CPU.ActiveCfg = Yavsc|Any CPU
- {EEFCECE6-3B7F-4BBE-B7AF-69377AF3CF39}.Yavsc|Any CPU.Build.0 = Yavsc|Any CPU
- {EEFCECE6-3B7F-4BBE-B7AF-69377AF3CF39}.YavscPre|Any CPU.ActiveCfg = YavscPre|Any CPU
- {EEFCECE6-3B7F-4BBE-B7AF-69377AF3CF39}.YavscPre|Any CPU.Build.0 = YavscPre|Any CPU
- EndGlobalSection
- GlobalSection(NestedProjects) = preSolution
- {B5F49C21-7BB3-4DC0-AE65-F4ED0F6D15BD} = {ECEC9074-ACB5-4A74-BE22-FF7B40F25A1A}
- EndGlobalSection
- GlobalSection(MonoDevelopProperties) = preSolution
- Policies = $0
- $0.StandardHeader = $1
- $1.Text = @\n ${FileName}\n \n Author:\n ${AuthorName} <${AuthorEmail}>\n \n Copyright (c) ${Year} ${CopyrightHolder}\n\n This program is free software: you can redistribute it and/or modify\n it under the terms of the GNU Lesser General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n This program is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU Lesser General Public License for more details.\n\n You should have received a copy of the GNU Lesser General Public License\n along with this program. If not, see .
- $1.IncludeInNewFiles = True
- $0.VersionControlPolicy = $2
- $2.inheritsSet = Mono
- $0.ChangeLogPolicy = $3
- $3.UpdateMode = ProjectRoot
- $3.VcsIntegration = RequireEntry
- $3.MessageStyle = $4
- $4.LineAlign = 0
- $3.inheritsSet = Mono
- EndGlobalSection
-EndGlobal
diff --git a/Yavsc/Dockerfile b/Yavsc/Dockerfile
new file mode 100644
index 00000000..a71646c2
--- /dev/null
+++ b/Yavsc/Dockerfile
@@ -0,0 +1,11 @@
+FROM microsoft/aspnet:1.0.0-rc1-update1
+
+RUN printf "deb http://ftp.us.debian.org/debian jessie main\n" >> /etc/apt/sources.list
+RUN apt-get -qq update && apt-get install -qqy sqlite3 libsqlite3-dev && rm -rf /var/lib/apt/lists/*
+
+COPY . /app
+WORKDIR /app
+RUN ["dnu", "restore"]
+
+EXPOSE 5001/tcp
+ENTRYPOINT ["dnx", "-p", "project.json", "web"]
diff --git a/LICENSE b/Yavsc/License.md
similarity index 90%
rename from LICENSE
rename to Yavsc/License.md
index 70566f2d..8d956f79 100644
--- a/LICENSE
+++ b/Yavsc/License.md
@@ -5,7 +5,7 @@ GNU GENERAL PUBLIC LICENSE
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
- Preamble
+ # Preamble
The GNU General Public License is a free, copyleft license for
software and other kinds of works.
@@ -70,7 +70,7 @@ modification follow.
TERMS AND CONDITIONS
- 0. Definitions.
+ ## 0. Definitions.
"This License" refers to version 3 of the GNU General Public License.
@@ -109,7 +109,7 @@ work under this License, and how to view a copy of this License. If
the interface presents a list of user commands or options, such as a
menu, a prominent item in the list meets this criterion.
- 1. Source Code.
+ ## 1. Source Code.
The "source code" for a work means the preferred form of the work
for making modifications to it. "Object code" means any non-source
@@ -151,7 +151,7 @@ Source.
The Corresponding Source for a work in source code form is that
same work.
- 2. Basic Permissions.
+## 2. Basic Permissions.
All rights granted under this License are granted for the term of
copyright on the Program, and are irrevocable provided the stated
@@ -176,7 +176,7 @@ your copyrighted material outside their relationship with you.
the conditions stated below. Sublicensing is not allowed; section 10
makes it unnecessary.
- 3. Protecting Users' Legal Rights From Anti-Circumvention Law.
+## 3. Protecting Users' Legal Rights From Anti-Circumvention Law.
No covered work shall be deemed part of an effective technological
measure under any applicable law fulfilling obligations under article
@@ -192,7 +192,7 @@ modification of the work as a means of enforcing, against the work's
users, your or third parties' legal rights to forbid circumvention of
technological measures.
- 4. Conveying Verbatim Copies.
+## 4. Conveying Verbatim Copies.
You may convey verbatim copies of the Program's source code as you
receive it, in any medium, provided that you conspicuously and
@@ -205,7 +205,7 @@ recipients a copy of this License along with the Program.
You may charge any price or no price for each copy that you convey,
and you may offer support or warranty protection for a fee.
- 5. Conveying Modified Source Versions.
+## 5. Conveying Modified Source Versions.
You may convey a work based on the Program, or the modifications to
produce it from the Program, in the form of source code under the
@@ -215,8 +215,8 @@ terms of section 4, provided that you also meet all of these conditions:
it, and giving a relevant date.
b) The work must carry prominent notices stating that it is
- released under this License and any conditions added under section
- 7. This requirement modifies the requirement in section 4 to
+ released under this License and any conditions added under section 7.
+ This requirement modifies the requirement in section 4 to
"keep intact all notices".
c) You must license the entire work, as a whole, under this
@@ -242,7 +242,7 @@ beyond what the individual works permit. Inclusion of a covered work
in an aggregate does not cause this License to apply to the other
parts of the aggregate.
- 6. Conveying Non-Source Forms.
+ ## 6. Conveying Non-Source Forms.
You may convey a covered work in object code form under the terms
of sections 4 and 5, provided that you also convey the
@@ -340,7 +340,7 @@ documented (and with an implementation available to the public in
source code form), and must require no special password or key for
unpacking, reading or copying.
- 7. Additional Terms.
+## 7. Additional Terms.
"Additional permissions" are terms that supplement the terms of this
License by making exceptions from one or more of its conditions.
@@ -404,7 +404,7 @@ where to find the applicable terms.
form of a separately written license, or stated as exceptions;
the above requirements apply either way.
- 8. Termination.
+## 8. Termination.
You may not propagate or modify a covered work except as expressly
provided under this License. Any attempt otherwise to propagate or
@@ -432,7 +432,7 @@ this License. If your rights have been terminated and not permanently
reinstated, you do not qualify to receive new licenses for the same
material under section 10.
- 9. Acceptance Not Required for Having Copies.
+## 9. Acceptance Not Required for Having Copies.
You are not required to accept this License in order to receive or
run a copy of the Program. Ancillary propagation of a covered work
@@ -443,7 +443,7 @@ modify any covered work. These actions infringe copyright if you do
not accept this License. Therefore, by modifying or propagating a
covered work, you indicate your acceptance of this License to do so.
- 10. Automatic Licensing of Downstream Recipients.
+## 10. Automatic Licensing of Downstream Recipients.
Each time you convey a covered work, the recipient automatically
receives a license from the original licensors, to run, modify and
@@ -468,7 +468,7 @@ rights granted under this License, and you may not initiate litigation
any patent claim is infringed by making, using, selling, offering for
sale, or importing the Program or any portion of it.
- 11. Patents.
+## 11. Patents.
A "contributor" is a copyright holder who authorizes use under this
License of the Program or a work on which the Program is based. The
@@ -537,7 +537,7 @@ or that patent license was granted, prior to 28 March 2007.
any implied license or other defenses to infringement that may
otherwise be available to you under applicable patent law.
- 12. No Surrender of Others' Freedom.
+## 12. No Surrender of Others' Freedom.
If conditions are imposed on you (whether by court order, agreement or
otherwise) that contradict the conditions of this License, they do not
@@ -549,7 +549,7 @@ to collect a royalty for further conveying from those to whom you convey
the Program, the only way you could satisfy both those terms and this
License would be to refrain entirely from conveying the Program.
- 13. Use with the GNU Affero General Public License.
+## 13. Use with the GNU Affero General Public License.
Notwithstanding any other provision of this License, you have
permission to link or combine any covered work with a work licensed
@@ -560,7 +560,7 @@ but the special requirements of the GNU Affero General Public License,
section 13, concerning interaction through a network will apply to the
combination as such.
- 14. Revised Versions of this License.
+## 14. Revised Versions of this License.
The Free Software Foundation may publish revised and/or new versions of
the GNU General Public License from time to time. Such new versions will
@@ -586,7 +586,7 @@ permissions. However, no additional obligations are imposed on any
author or copyright holder as a result of your choosing to follow a
later version.
- 15. Disclaimer of Warranty.
+## 15. Disclaimer of Warranty.
THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
@@ -597,7 +597,7 @@ PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
- 16. Limitation of Liability.
+## 16. Limitation of Liability.
IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
@@ -609,7 +609,7 @@ PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
SUCH DAMAGES.
- 17. Interpretation of Sections 15 and 16.
+## 17. Interpretation of Sections 15 and 16.
If the disclaimer of warranty and limitation of liability provided
above cannot be given local legal effect according to their terms,
@@ -620,55 +620,3 @@ copy of the Program in return for a fee.
END OF TERMS AND CONDITIONS
- How to Apply These Terms to Your New Programs
-
- If you develop a new program, and you want it to be of the greatest
-possible use to the public, the best way to achieve this is to make it
-free software which everyone can redistribute and change under these terms.
-
- To do so, attach the following notices to the program. It is safest
-to attach them to the start of each source file to most effectively
-state the exclusion of warranty; and each file should have at least
-the "copyright" line and a pointer to where the full notice is found.
-
- {one line to give the program's name and a brief idea of what it does.}
- Copyright (C) {year} {name of author}
-
- This program is free software: you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation, either version 3 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program. If not, see .
-
-Also add information on how to contact you by electronic and paper mail.
-
- If the program does terminal interaction, make it output a short
-notice like this when it starts in an interactive mode:
-
- {project} Copyright (C) {year} {fullname}
- This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
- This is free software, and you are welcome to redistribute it
- under certain conditions; type `show c' for details.
-
-The hypothetical commands `show w' and `show c' should show the appropriate
-parts of the General Public License. Of course, your program's commands
-might be different; for a GUI interface, you would use an "about box".
-
- You should also get your employer (if you work as a programmer) or school,
-if any, to sign a "copyright disclaimer" for the program, if necessary.
-For more information on this, and how to apply and follow the GNU GPL, see
-.
-
- The GNU General Public License does not permit incorporating your program
-into proprietary programs. If your program is a subroutine library, you
-may consider it more useful to permit linking proprietary applications with
-the library. If this is what you want to do, use the GNU Lesser General
-Public License instead of this License. But first, please read
-.
\ No newline at end of file
diff --git a/Yavsc/Migrations/20160315144017_init.Designer.cs b/Yavsc/Migrations/20160315144017_init.Designer.cs
new file mode 100644
index 00000000..884eef24
--- /dev/null
+++ b/Yavsc/Migrations/20160315144017_init.Designer.cs
@@ -0,0 +1,444 @@
+using System;
+using Microsoft.Data.Entity;
+using Microsoft.Data.Entity.Infrastructure;
+using Microsoft.Data.Entity.Migrations;
+using Yavsc.Models;
+
+namespace Yavsc.Migrations
+{
+ [DbContext(typeof(ApplicationDbContext))]
+ [Migration("20160315144017_init")]
+ partial class init
+ {
+ protected override void BuildTargetModel(ModelBuilder modelBuilder)
+ {
+ modelBuilder
+ .HasAnnotation("ProductVersion", "7.0.0-rc1-16348");
+
+ modelBuilder.Entity("Microsoft.AspNet.Identity.EntityFramework.IdentityRole", b =>
+ {
+ b.Property("Id");
+
+ b.Property("ConcurrencyStamp")
+ .IsConcurrencyToken();
+
+ b.Property("Name")
+ .HasAnnotation("MaxLength", 256);
+
+ b.Property("NormalizedName")
+ .HasAnnotation("MaxLength", 256);
+
+ b.HasKey("Id");
+
+ b.HasIndex("NormalizedName")
+ .HasAnnotation("Relational:Name", "RoleNameIndex");
+
+ b.HasAnnotation("Relational:TableName", "AspNetRoles");
+ });
+
+ modelBuilder.Entity("Microsoft.AspNet.Identity.EntityFramework.IdentityRoleClaim", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd();
+
+ b.Property("ClaimType");
+
+ b.Property("ClaimValue");
+
+ b.Property("RoleId")
+ .IsRequired();
+
+ b.HasKey("Id");
+
+ b.HasAnnotation("Relational:TableName", "AspNetRoleClaims");
+ });
+
+ modelBuilder.Entity("Microsoft.AspNet.Identity.EntityFramework.IdentityUserClaim", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd();
+
+ b.Property("ClaimType");
+
+ b.Property("ClaimValue");
+
+ b.Property("UserId")
+ .IsRequired();
+
+ b.HasKey("Id");
+
+ b.HasAnnotation("Relational:TableName", "AspNetUserClaims");
+ });
+
+ modelBuilder.Entity("Microsoft.AspNet.Identity.EntityFramework.IdentityUserLogin", b =>
+ {
+ b.Property("LoginProvider");
+
+ b.Property("ProviderKey");
+
+ b.Property("ProviderDisplayName");
+
+ b.Property("UserId")
+ .IsRequired();
+
+ b.HasKey("LoginProvider", "ProviderKey");
+
+ b.HasAnnotation("Relational:TableName", "AspNetUserLogins");
+ });
+
+ modelBuilder.Entity("Microsoft.AspNet.Identity.EntityFramework.IdentityUserRole", b =>
+ {
+ b.Property("UserId");
+
+ b.Property("RoleId");
+
+ b.HasKey("UserId", "RoleId");
+
+ b.HasAnnotation("Relational:TableName", "AspNetUserRoles");
+ });
+
+ modelBuilder.Entity("YavscWeb.Location", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd();
+
+ b.Property("Address")
+ .IsRequired();
+
+ b.Property("Latitude");
+
+ b.Property("Longitude");
+
+ b.HasKey("Id");
+ });
+
+ modelBuilder.Entity("YavscWeb.Models.AccountBalance", b =>
+ {
+ b.Property("UserId");
+
+ b.Property("Credits");
+
+ b.Property("HistoryId");
+
+ b.HasKey("UserId");
+ });
+
+ modelBuilder.Entity("YavscWeb.Models.AccountHistory", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd();
+
+ b.HasKey("Id");
+ });
+
+ modelBuilder.Entity("YavscWeb.Models.Activity", b =>
+ {
+ b.Property("Code")
+ .HasAnnotation("MaxLength", 512);
+
+ b.Property("Description");
+
+ b.Property("Name")
+ .IsRequired()
+ .HasAnnotation("MaxLength", 512);
+
+ b.Property("Photo");
+
+ b.HasKey("Code");
+ });
+
+ modelBuilder.Entity("YavscWeb.Models.ApplicationUser", b =>
+ {
+ b.Property("Id");
+
+ b.Property("AccessFailedCount");
+
+ b.Property("ConcurrencyStamp")
+ .IsConcurrencyToken();
+
+ b.Property("Email")
+ .HasAnnotation("MaxLength", 256);
+
+ b.Property("EmailConfirmed");
+
+ b.Property("LockoutEnabled");
+
+ b.Property("LockoutEnd");
+
+ b.Property("NormalizedEmail")
+ .HasAnnotation("MaxLength", 256);
+
+ b.Property("NormalizedUserName")
+ .HasAnnotation("MaxLength", 256);
+
+ b.Property("PasswordHash");
+
+ b.Property("PhoneNumber");
+
+ b.Property("PhoneNumberConfirmed");
+
+ b.Property("SecurityStamp");
+
+ b.Property("TwoFactorEnabled");
+
+ b.Property("UserName")
+ .HasAnnotation("MaxLength", 256);
+
+ b.HasKey("Id");
+
+ b.HasIndex("NormalizedEmail")
+ .HasAnnotation("Relational:Name", "EmailIndex");
+
+ b.HasIndex("NormalizedUserName")
+ .HasAnnotation("Relational:Name", "UserNameIndex");
+
+ b.HasAnnotation("Relational:TableName", "AspNetUsers");
+ });
+
+ modelBuilder.Entity("YavscWeb.Models.Blog", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd();
+
+ b.Property("AuthorId")
+ .IsRequired();
+
+ b.Property("bcontent");
+
+ b.Property("modified");
+
+ b.Property("photo");
+
+ b.Property("posted");
+
+ b.Property("rate");
+
+ b.Property("title");
+
+ b.Property("visible");
+
+ b.HasKey("Id");
+ });
+
+ modelBuilder.Entity("YavscWeb.Models.Booking.SimpleBookQuery", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd();
+
+ b.Property("ClientId")
+ .IsRequired();
+
+ b.Property("EventDate");
+
+ b.Property("LocationId")
+ .IsRequired();
+
+ b.Property("PerformerId")
+ .IsRequired();
+
+ b.Property("ValidationDate");
+
+ b.HasKey("Id");
+ });
+
+ modelBuilder.Entity("YavscWeb.Models.Circle", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd();
+
+ b.Property("Name");
+
+ b.Property("UserId");
+
+ b.HasKey("Id");
+ });
+
+ modelBuilder.Entity("YavscWeb.Models.CircleMember", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd();
+
+ b.Property("CircleId")
+ .IsRequired();
+
+ b.Property("MemberId")
+ .IsRequired();
+
+ b.HasKey("Id");
+ });
+
+ modelBuilder.Entity("YavscWeb.Models.Command", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd();
+
+ b.Property("ClientId")
+ .IsRequired();
+
+ b.Property("PerformerId")
+ .IsRequired();
+
+ b.Property("ValidationDate");
+
+ b.HasKey("Id");
+ });
+
+ modelBuilder.Entity("YavscWeb.Models.Estimate", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd();
+
+ b.Property("CommandId");
+
+ b.Property("Description");
+
+ b.Property("Status");
+
+ b.Property("Title");
+
+ b.HasKey("Id");
+ });
+
+ modelBuilder.Entity("YavscWeb.Models.PerformerProfile", b =>
+ {
+ b.Property("PerfomerId");
+
+ b.Property("AcceptGeoLocalisation");
+
+ b.Property("AcceptNotifications");
+
+ b.Property("AcceptPublicContact");
+
+ b.Property("Active");
+
+ b.Property("ActivityCode")
+ .IsRequired();
+
+ b.Property("DailyCost");
+
+ b.Property("Rate");
+
+ b.Property("WebSite");
+
+ b.HasKey("PerfomerId");
+ });
+
+ modelBuilder.Entity("YavscWeb.Models.Skill", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd();
+
+ b.Property("Name");
+
+ b.Property("Rate");
+
+ b.HasKey("Id");
+ });
+
+ modelBuilder.Entity("Microsoft.AspNet.Identity.EntityFramework.IdentityRoleClaim", b =>
+ {
+ b.HasOne("Microsoft.AspNet.Identity.EntityFramework.IdentityRole")
+ .WithMany()
+ .HasForeignKey("RoleId");
+ });
+
+ modelBuilder.Entity("Microsoft.AspNet.Identity.EntityFramework.IdentityUserClaim", b =>
+ {
+ b.HasOne("YavscWeb.Models.ApplicationUser")
+ .WithMany()
+ .HasForeignKey("UserId");
+ });
+
+ modelBuilder.Entity("Microsoft.AspNet.Identity.EntityFramework.IdentityUserLogin", b =>
+ {
+ b.HasOne("YavscWeb.Models.ApplicationUser")
+ .WithMany()
+ .HasForeignKey("UserId");
+ });
+
+ modelBuilder.Entity("Microsoft.AspNet.Identity.EntityFramework.IdentityUserRole", b =>
+ {
+ b.HasOne("Microsoft.AspNet.Identity.EntityFramework.IdentityRole")
+ .WithMany()
+ .HasForeignKey("RoleId");
+
+ b.HasOne("YavscWeb.Models.ApplicationUser")
+ .WithMany()
+ .HasForeignKey("UserId");
+ });
+
+ modelBuilder.Entity("YavscWeb.Models.AccountBalance", b =>
+ {
+ b.HasOne("YavscWeb.Models.AccountHistory")
+ .WithMany()
+ .HasForeignKey("HistoryId");
+
+ b.HasOne("YavscWeb.Models.ApplicationUser")
+ .WithOne()
+ .HasForeignKey("YavscWeb.Models.AccountBalance", "UserId");
+ });
+
+ modelBuilder.Entity("YavscWeb.Models.Blog", b =>
+ {
+ b.HasOne("YavscWeb.Models.ApplicationUser")
+ .WithMany()
+ .HasForeignKey("AuthorId");
+ });
+
+ modelBuilder.Entity("YavscWeb.Models.Booking.SimpleBookQuery", b =>
+ {
+ b.HasOne("YavscWeb.Models.ApplicationUser")
+ .WithMany()
+ .HasForeignKey("ClientId");
+
+ b.HasOne("YavscWeb.Location")
+ .WithMany()
+ .HasForeignKey("LocationId");
+
+ b.HasOne("YavscWeb.Models.ApplicationUser")
+ .WithMany()
+ .HasForeignKey("PerformerId");
+ });
+
+ modelBuilder.Entity("YavscWeb.Models.CircleMember", b =>
+ {
+ b.HasOne("YavscWeb.Models.Circle")
+ .WithMany()
+ .HasForeignKey("CircleId");
+
+ b.HasOne("YavscWeb.Models.ApplicationUser")
+ .WithMany()
+ .HasForeignKey("MemberId");
+ });
+
+ modelBuilder.Entity("YavscWeb.Models.Command", b =>
+ {
+ b.HasOne("YavscWeb.Models.ApplicationUser")
+ .WithMany()
+ .HasForeignKey("ClientId");
+
+ b.HasOne("YavscWeb.Models.ApplicationUser")
+ .WithMany()
+ .HasForeignKey("PerformerId");
+ });
+
+ modelBuilder.Entity("YavscWeb.Models.Estimate", b =>
+ {
+ b.HasOne("YavscWeb.Models.Command")
+ .WithMany()
+ .HasForeignKey("CommandId");
+ });
+
+ modelBuilder.Entity("YavscWeb.Models.PerformerProfile", b =>
+ {
+ b.HasOne("YavscWeb.Models.Activity")
+ .WithMany()
+ .HasForeignKey("ActivityCode");
+
+ b.HasOne("YavscWeb.Models.ApplicationUser")
+ .WithMany()
+ .HasForeignKey("PerfomerId");
+ });
+ }
+ }
+}
diff --git a/Yavsc/Migrations/20160315144017_init.cs b/Yavsc/Migrations/20160315144017_init.cs
new file mode 100644
index 00000000..c8e4fa71
--- /dev/null
+++ b/Yavsc/Migrations/20160315144017_init.cs
@@ -0,0 +1,414 @@
+using System;
+using Microsoft.Data.Entity.Migrations;
+
+namespace Yavsc.Migrations
+{
+ public partial class init : Migration
+ {
+ protected override void Up(MigrationBuilder migrationBuilder)
+ {
+ migrationBuilder.CreateTable(
+ name: "AspNetRoles",
+ columns: table => new
+ {
+ Id = table.Column(nullable: false),
+ ConcurrencyStamp = table.Column(nullable: true),
+ Name = table.Column(nullable: true),
+ NormalizedName = table.Column(nullable: true)
+ },
+ constraints: table =>
+ {
+ table.PrimaryKey("PK_IdentityRole", x => x.Id);
+ });
+ migrationBuilder.CreateTable(
+ name: "Location",
+ columns: table => new
+ {
+ Id = table.Column(nullable: false)
+ .Annotation("Npgsql:Serial", true),
+ Address = table.Column(nullable: false),
+ Latitude = table.Column(nullable: false),
+ Longitude = table.Column(nullable: false)
+ },
+ constraints: table =>
+ {
+ table.PrimaryKey("PK_Location", x => x.Id);
+ });
+ migrationBuilder.CreateTable(
+ name: "AccountHistory",
+ columns: table => new
+ {
+ Id = table.Column(nullable: false)
+ .Annotation("Npgsql:Serial", true)
+ },
+ constraints: table =>
+ {
+ table.PrimaryKey("PK_AccountHistory", x => x.Id);
+ });
+ migrationBuilder.CreateTable(
+ name: "Activity",
+ columns: table => new
+ {
+ Code = table.Column(nullable: false),
+ Description = table.Column(nullable: true),
+ Name = table.Column(nullable: false),
+ Photo = table.Column(nullable: true)
+ },
+ constraints: table =>
+ {
+ table.PrimaryKey("PK_Activity", x => x.Code);
+ });
+ migrationBuilder.CreateTable(
+ name: "AspNetUsers",
+ columns: table => new
+ {
+ Id = table.Column(nullable: false),
+ AccessFailedCount = table.Column(nullable: false),
+ ConcurrencyStamp = table.Column(nullable: true),
+ Email = table.Column(nullable: true),
+ EmailConfirmed = table.Column(nullable: false),
+ LockoutEnabled = table.Column(nullable: false),
+ LockoutEnd = table.Column(nullable: true),
+ NormalizedEmail = table.Column(nullable: true),
+ NormalizedUserName = table.Column(nullable: true),
+ PasswordHash = table.Column(nullable: true),
+ PhoneNumber = table.Column(nullable: true),
+ PhoneNumberConfirmed = table.Column(nullable: false),
+ SecurityStamp = table.Column(nullable: true),
+ TwoFactorEnabled = table.Column(nullable: false),
+ UserName = table.Column(nullable: true)
+ },
+ constraints: table =>
+ {
+ table.PrimaryKey("PK_ApplicationUser", x => x.Id);
+ });
+ migrationBuilder.CreateTable(
+ name: "Circle",
+ columns: table => new
+ {
+ Id = table.Column(nullable: false)
+ .Annotation("Npgsql:Serial", true),
+ Name = table.Column(nullable: true),
+ UserId = table.Column(nullable: true)
+ },
+ constraints: table =>
+ {
+ table.PrimaryKey("PK_Circle", x => x.Id);
+ });
+ migrationBuilder.CreateTable(
+ name: "Skill",
+ columns: table => new
+ {
+ Id = table.Column(nullable: false)
+ .Annotation("Npgsql:Serial", true),
+ Name = table.Column(nullable: true),
+ Rate = table.Column(nullable: false)
+ },
+ constraints: table =>
+ {
+ table.PrimaryKey("PK_Skill", x => x.Id);
+ });
+ migrationBuilder.CreateTable(
+ name: "AspNetRoleClaims",
+ columns: table => new
+ {
+ Id = table.Column(nullable: false)
+ .Annotation("Npgsql:Serial", true),
+ ClaimType = table.Column(nullable: true),
+ ClaimValue = table.Column(nullable: true),
+ RoleId = table.Column(nullable: false)
+ },
+ constraints: table =>
+ {
+ table.PrimaryKey("PK_IdentityRoleClaim", x => x.Id);
+ table.ForeignKey(
+ name: "FK_IdentityRoleClaim_IdentityRole_RoleId",
+ column: x => x.RoleId,
+ principalTable: "AspNetRoles",
+ principalColumn: "Id",
+ onDelete: ReferentialAction.Cascade);
+ });
+ migrationBuilder.CreateTable(
+ name: "AspNetUserClaims",
+ columns: table => new
+ {
+ Id = table.Column(nullable: false)
+ .Annotation("Npgsql:Serial", true),
+ ClaimType = table.Column(nullable: true),
+ ClaimValue = table.Column(nullable: true),
+ UserId = table.Column(nullable: false)
+ },
+ constraints: table =>
+ {
+ table.PrimaryKey("PK_IdentityUserClaim", x => x.Id);
+ table.ForeignKey(
+ name: "FK_IdentityUserClaim_ApplicationUser_UserId",
+ column: x => x.UserId,
+ principalTable: "AspNetUsers",
+ principalColumn: "Id",
+ onDelete: ReferentialAction.Cascade);
+ });
+ migrationBuilder.CreateTable(
+ name: "AspNetUserLogins",
+ columns: table => new
+ {
+ LoginProvider = table.Column(nullable: false),
+ ProviderKey = table.Column(nullable: false),
+ ProviderDisplayName = table.Column(nullable: true),
+ UserId = table.Column(nullable: false)
+ },
+ constraints: table =>
+ {
+ table.PrimaryKey("PK_IdentityUserLogin", x => new { x.LoginProvider, x.ProviderKey });
+ table.ForeignKey(
+ name: "FK_IdentityUserLogin_ApplicationUser_UserId",
+ column: x => x.UserId,
+ principalTable: "AspNetUsers",
+ principalColumn: "Id",
+ onDelete: ReferentialAction.Cascade);
+ });
+ migrationBuilder.CreateTable(
+ name: "AspNetUserRoles",
+ columns: table => new
+ {
+ UserId = table.Column(nullable: false),
+ RoleId = table.Column(nullable: false)
+ },
+ constraints: table =>
+ {
+ table.PrimaryKey("PK_IdentityUserRole", x => new { x.UserId, x.RoleId });
+ table.ForeignKey(
+ name: "FK_IdentityUserRole_IdentityRole_RoleId",
+ column: x => x.RoleId,
+ principalTable: "AspNetRoles",
+ principalColumn: "Id",
+ onDelete: ReferentialAction.Cascade);
+ table.ForeignKey(
+ name: "FK_IdentityUserRole_ApplicationUser_UserId",
+ column: x => x.UserId,
+ principalTable: "AspNetUsers",
+ principalColumn: "Id",
+ onDelete: ReferentialAction.Cascade);
+ });
+ migrationBuilder.CreateTable(
+ name: "AccountBalance",
+ columns: table => new
+ {
+ UserId = table.Column(nullable: false),
+ Credits = table.Column(nullable: false),
+ HistoryId = table.Column(nullable: false)
+ },
+ constraints: table =>
+ {
+ table.PrimaryKey("PK_AccountBalance", x => x.UserId);
+ table.ForeignKey(
+ name: "FK_AccountBalance_AccountHistory_HistoryId",
+ column: x => x.HistoryId,
+ principalTable: "AccountHistory",
+ principalColumn: "Id",
+ onDelete: ReferentialAction.Cascade);
+ table.ForeignKey(
+ name: "FK_AccountBalance_ApplicationUser_UserId",
+ column: x => x.UserId,
+ principalTable: "AspNetUsers",
+ principalColumn: "Id",
+ onDelete: ReferentialAction.Cascade);
+ });
+ migrationBuilder.CreateTable(
+ name: "Blog",
+ columns: table => new
+ {
+ Id = table.Column(nullable: false)
+ .Annotation("Npgsql:Serial", true),
+ AuthorId = table.Column(nullable: false),
+ bcontent = table.Column(nullable: true),
+ modified = table.Column(nullable: false),
+ photo = table.Column(nullable: true),
+ posted = table.Column(nullable: false),
+ rate = table.Column(nullable: false),
+ title = table.Column(nullable: true),
+ visible = table.Column(nullable: false)
+ },
+ constraints: table =>
+ {
+ table.PrimaryKey("PK_Blog", x => x.Id);
+ table.ForeignKey(
+ name: "FK_Blog_ApplicationUser_AuthorId",
+ column: x => x.AuthorId,
+ principalTable: "AspNetUsers",
+ principalColumn: "Id",
+ onDelete: ReferentialAction.Cascade);
+ });
+ migrationBuilder.CreateTable(
+ name: "SimpleBookQuery",
+ columns: table => new
+ {
+ Id = table.Column(nullable: false)
+ .Annotation("Npgsql:Serial", true),
+ ClientId = table.Column(nullable: false),
+ EventDate = table.Column(nullable: false),
+ LocationId = table.Column(nullable: false),
+ PerformerId = table.Column(nullable: false),
+ ValidationDate = table.Column(nullable: false)
+ },
+ constraints: table =>
+ {
+ table.PrimaryKey("PK_SimpleBookQuery", x => x.Id);
+ table.ForeignKey(
+ name: "FK_SimpleBookQuery_ApplicationUser_ClientId",
+ column: x => x.ClientId,
+ principalTable: "AspNetUsers",
+ principalColumn: "Id",
+ onDelete: ReferentialAction.Cascade);
+ table.ForeignKey(
+ name: "FK_SimpleBookQuery_Location_LocationId",
+ column: x => x.LocationId,
+ principalTable: "Location",
+ principalColumn: "Id",
+ onDelete: ReferentialAction.Cascade);
+ table.ForeignKey(
+ name: "FK_SimpleBookQuery_ApplicationUser_PerformerId",
+ column: x => x.PerformerId,
+ principalTable: "AspNetUsers",
+ principalColumn: "Id",
+ onDelete: ReferentialAction.Cascade);
+ });
+ migrationBuilder.CreateTable(
+ name: "Command",
+ columns: table => new
+ {
+ Id = table.Column(nullable: false)
+ .Annotation("Npgsql:Serial", true),
+ ClientId = table.Column