diff --git a/Sevomin.Models/DovominJob.cs b/Sevomin.Models/DovominJob.cs
index 9deb58c..fde65e1 100644
--- a/Sevomin.Models/DovominJob.cs
+++ b/Sevomin.Models/DovominJob.cs
@@ -1,96 +1,106 @@
-using System;
-using System.ComponentModel.DataAnnotations;
-using System.ComponentModel.DataAnnotations.Schema;
-using System.Linq;
-
-namespace Sevomin.Models
-{
- public class DovominJob
- {
- [Key]
- public long Id { get; set; }
-
- [Index("IX_DovominJobUniqueIndex", Order = 1, IsUnique = true)]
- [Required]
- [StringLength(128)]
- public string DovominId { get; set; }
-
- [Index]
- [Index("IX_DovominJobUniqueIndex", Order = 2, IsUnique = true)]
- [Required]
- public long JobId { get; set; }
-
- [Required]
- public DateTime ApplyDate { get; set; }
-
- public string CoverLetter { get; set; }
-
- public decimal Affinity { get; set; }
-
- public bool MinimumRequirement { get; set; }
-
- public DateTime? AvalinSeen { get; set; }
-
- public string AvalinComment { get; set; }
-
- public bool AvalinDelete { get; set; }
-
- public virtual Dovomin Dovomin { get; set; }
- public virtual Job Job { get; set; }
-
- public DovominJob(Dovomin dovomin, Job job)
- {
- this.Dovomin = dovomin;
- this.Job = job;
- CalculateAffinity();
- }
-
- public DovominJob()
- {
- }
-
- public void CalculateAffinity()
- {
- if (Dovomin == null || Job == null)
- return;
-
- MinimumRequirement = true;
- decimal sum = 0;
- decimal count = 0;
- Affinity = 0;
- foreach (var jp in
- Job.JobParameters.Where(x=>x.Moscow != 0 && !string.IsNullOrWhiteSpace(x.StringValue) ))
- {
- count++;
- DovominParameter dp = Dovomin.DovominParameters.SingleOrDefault(x=>x.ParameterId == jp.ParameterId);
- if (dp == null)
- continue;
- if (jp.Moscow == 4)
- {
- if ((jp.StringValue != dp.StringValue && jp.NumericValue == 0)
- || (jp.NumericValue > 0 && jp.NumericValue > dp.NumericValue))
- {
- MinimumRequirement = false;
- }
- }
-
- decimal? dpv = dp.NumericValue;
- decimal? jpv = jp.NumericValue;
- decimal m = jp.Moscow / 4;
- if (jpv == null)
- {
- if (jp.StringValue == dp.StringValue)
- sum += m;
- continue;
- }
- if (dpv == null)
- continue;
- if (jpv <= dpv)
- sum += m;
- else
- sum += m * ((jpv.Value - dpv.Value) / (jpv.Value == 0 ? (decimal)0.000001 : jpv.Value));
- }
- this.Affinity = sum / (count == 0 ? (decimal)0.000001 : count);
- }
- }
-}
+using System;
+using System.ComponentModel.DataAnnotations;
+using System.ComponentModel.DataAnnotations.Schema;
+using System.Linq;
+
+namespace Sevomin.Models
+{
+ public class DovominJob
+ {
+ [Key]
+ public long Id { get; set; }
+
+ [Index("IX_DovominJobUniqueIndex", Order = 1, IsUnique = true)]
+ [Required]
+ [StringLength(128)]
+ public string DovominId { get; set; }
+
+ [Index]
+ [Index("IX_DovominJobUniqueIndex", Order = 2, IsUnique = true)]
+ [Required]
+ public long JobId { get; set; }
+
+ [Required]
+ public DateTime ApplyDate { get; set; }
+
+ public string CoverLetter { get; set; }
+
+ public decimal Affinity { get; set; }
+
+ public bool MinimumRequirement { get; set; }
+
+ public DateTime? AvalinSeen { get; set; }
+
+ public string AvalinComment { get; set; }
+
+ public bool AvalinDelete { get; set; }
+
+ public virtual Dovomin Dovomin { get; set; }
+ public virtual Job Job { get; set; }
+
+ public DovominJob(Dovomin dovomin, Job job)
+ {
+ this.Dovomin = dovomin;
+ this.Job = job;
+ CalculateAffinity();
+ }
+
+ public DovominJob()
+ {
+ }
+
+ public void CalculateAffinity()
+ {
+ if (Dovomin == null || Job == null)
+ return;
+
+ MinimumRequirement = true;
+ decimal sum = 0;
+ decimal count = 0;
+ decimal maxPoint = 0;
+ Affinity = 0;
+ foreach (var jp in
+ Job.JobParameters.Where(x=>x.Moscow != 0 && !string.IsNullOrWhiteSpace(x.StringValue) ))
+ {
+ count++;
+ decimal m = jp.Moscow - 1 ;
+ maxPoint += jp.Parameter.BasePoint * m;
+ DovominParameter dp = Dovomin.DovominParameters.SingleOrDefault(x=>x.ParameterId == jp.ParameterId);
+ if (dp == null)
+ continue;
+ if (jp.Moscow == 4)
+ {
+ if ((jp.StringValue != dp.StringValue && jp.NumericValue == 0)
+ || (jp.NumericValue > 0 && jp.NumericValue > dp.NumericValue))
+ {
+ MinimumRequirement = false;
+ }
+ }
+
+ decimal? dpv = dp.NumericValue;
+ decimal? jpv = jp.NumericValue;
+ if (jpv == null)
+ {
+ if (jp.StringValue == dp.StringValue)
+ sum += m * jp.Parameter.BasePoint;
+ continue;
+ }
+ if (dpv == null)
+ continue;
+
+ if (jpv <= dpv)
+ sum += m * jp.Parameter.BasePoint;
+
+ //v2
+ //if (jpv <= dpv)
+ // sum += m;
+ //else
+ // sum += m * ((jpv.Value - dpv.Value) / (jpv.Value == 0 ? (decimal)0.000001 : jpv.Value));
+ }
+ if (maxPoint == 0)
+ this.Affinity = 100;
+
+ this.Affinity = Math.Round( sum / maxPoint, 2, MidpointRounding.ToEven) * 100;
+ }
+ }
+}
diff --git a/Sevomin.Models/Migrations/201409010546480_basepoint.Designer.cs b/Sevomin.Models/Migrations/201409010546480_basepoint.Designer.cs
new file mode 100644
index 0000000..3b7177d
--- /dev/null
+++ b/Sevomin.Models/Migrations/201409010546480_basepoint.Designer.cs
@@ -0,0 +1,29 @@
+//
+namespace Sevomin.Models.Migrations
+{
+ using System.CodeDom.Compiler;
+ using System.Data.Entity.Migrations;
+ using System.Data.Entity.Migrations.Infrastructure;
+ using System.Resources;
+
+ [GeneratedCode("EntityFramework.Migrations", "6.1.0-30225")]
+ public sealed partial class basepoint : IMigrationMetadata
+ {
+ private readonly ResourceManager Resources = new ResourceManager(typeof(basepoint));
+
+ string IMigrationMetadata.Id
+ {
+ get { return "201409010546480_basepoint"; }
+ }
+
+ string IMigrationMetadata.Source
+ {
+ get { return null; }
+ }
+
+ string IMigrationMetadata.Target
+ {
+ get { return Resources.GetString("Target"); }
+ }
+ }
+}
diff --git a/Sevomin.Models/Migrations/201409010546480_basepoint.cs b/Sevomin.Models/Migrations/201409010546480_basepoint.cs
new file mode 100644
index 0000000..393bcb7
--- /dev/null
+++ b/Sevomin.Models/Migrations/201409010546480_basepoint.cs
@@ -0,0 +1,266 @@
+namespace Sevomin.Models.Migrations
+{
+ using System;
+ using System.Data.Entity.Migrations;
+
+ public partial class basepoint : DbMigration
+ {
+ public override void Up()
+ {
+ CreateTable(
+ "dbo.DovominJobs",
+ c => new
+ {
+ Id = c.Long(nullable: false, identity: true),
+ DovominId = c.String(nullable: false, maxLength: 128),
+ JobId = c.Long(nullable: false),
+ ApplyDate = c.DateTime(nullable: false),
+ CoverLetter = c.String(),
+ Affinity = c.Decimal(nullable: false, precision: 18, scale: 2),
+ MinimumRequirement = c.Boolean(nullable: false),
+ AvalinSeen = c.DateTime(),
+ AvalinComment = c.String(),
+ AvalinDelete = c.Boolean(nullable: false),
+ })
+ .PrimaryKey(t => t.Id)
+ .ForeignKey("dbo.Dovomin", t => t.DovominId)
+ .ForeignKey("dbo.Jobs", t => t.JobId, cascadeDelete: true)
+ .Index(t => new { t.DovominId, t.JobId }, unique: true, name: "IX_DovominJobUniqueIndex")
+ .Index(t => t.JobId);
+
+ CreateTable(
+ "dbo.AspNetUsers",
+ c => new
+ {
+ Id = c.String(nullable: false, maxLength: 128),
+ DisplayName = c.String(),
+ SignUpDate = c.DateTime(nullable: false),
+ ConfirmationCode = c.String(),
+ Email = c.String(maxLength: 256),
+ EmailConfirmed = c.Boolean(nullable: false),
+ PasswordHash = c.String(),
+ SecurityStamp = c.String(),
+ PhoneNumber = c.String(),
+ PhoneNumberConfirmed = c.Boolean(nullable: false),
+ TwoFactorEnabled = c.Boolean(nullable: false),
+ LockoutEndDateUtc = c.DateTime(),
+ LockoutEnabled = c.Boolean(nullable: false),
+ AccessFailedCount = c.Int(nullable: false),
+ UserName = c.String(nullable: false, maxLength: 256),
+ })
+ .PrimaryKey(t => t.Id)
+ .Index(t => t.UserName, unique: true, name: "UserNameIndex");
+
+ CreateTable(
+ "dbo.AspNetUserClaims",
+ c => new
+ {
+ Id = c.Int(nullable: false, identity: true),
+ UserId = c.String(nullable: false, maxLength: 128),
+ ClaimType = c.String(),
+ ClaimValue = c.String(),
+ })
+ .PrimaryKey(t => t.Id)
+ .ForeignKey("dbo.AspNetUsers", t => t.UserId, cascadeDelete: true)
+ .Index(t => t.UserId);
+
+ CreateTable(
+ "dbo.DovominParameters",
+ c => new
+ {
+ Id = c.Long(nullable: false, identity: true),
+ ParameterId = c.Long(nullable: false),
+ DovominId = c.String(nullable: false, maxLength: 128),
+ StringValue = c.String(),
+ NumericValue = c.Decimal(precision: 18, scale: 2),
+ })
+ .PrimaryKey(t => t.Id)
+ .ForeignKey("dbo.Dovomin", t => t.DovominId)
+ .ForeignKey("dbo.Parameters", t => t.ParameterId, cascadeDelete: true)
+ .Index(t => new { t.ParameterId, t.DovominId }, unique: true, name: "IX_DovominParameterUniqueIndex")
+ .Index(t => t.DovominId);
+
+ CreateTable(
+ "dbo.Parameters",
+ c => new
+ {
+ Id = c.Long(nullable: false, identity: true),
+ Name = c.String(nullable: false),
+ Moscow = c.Boolean(nullable: false),
+ DisplayMethod = c.Byte(nullable: false),
+ DisplayFormat = c.String(maxLength: 50),
+ GroupName = c.String(nullable: false),
+ CommentAvalin = c.String(maxLength: 140),
+ CommentDovomin = c.String(maxLength: 140),
+ ParameterValueId = c.String(maxLength: 50),
+ BasePoint = c.Int(nullable: false),
+ })
+ .PrimaryKey(t => t.Id);
+
+ CreateTable(
+ "dbo.JobParameters",
+ c => new
+ {
+ Id = c.Long(nullable: false, identity: true),
+ ParameterId = c.Long(nullable: false),
+ JobId = c.Long(nullable: false),
+ StringValue = c.String(),
+ NumericValue = c.Decimal(precision: 18, scale: 2),
+ Moscow = c.Byte(nullable: false),
+ })
+ .PrimaryKey(t => t.Id)
+ .ForeignKey("dbo.Jobs", t => t.JobId, cascadeDelete: true)
+ .ForeignKey("dbo.Parameters", t => t.ParameterId, cascadeDelete: true)
+ .Index(t => new { t.ParameterId, t.JobId }, unique: true, name: "IX_JobParameterUniqueIndex")
+ .Index(t => t.JobId);
+
+ CreateTable(
+ "dbo.Jobs",
+ c => new
+ {
+ Id = c.Long(nullable: false, identity: true),
+ AvalinId = c.String(nullable: false, maxLength: 128),
+ CreateDate = c.DateTime(nullable: false),
+ ExpireDate = c.DateTime(nullable: false),
+ Description = c.String(),
+ ResumeType = c.Byte(nullable: false),
+ ContactPersonName = c.String(),
+ ContactPersonPhone = c.String(),
+ ContactPersonEMail = c.String(),
+ ShowCompanyName = c.Boolean(nullable: false),
+ ShowCompanyLogo = c.Boolean(nullable: false),
+ IsFullTime = c.Boolean(nullable: false),
+ })
+ .PrimaryKey(t => t.Id)
+ .ForeignKey("dbo.Avalin", t => t.AvalinId)
+ .Index(t => t.AvalinId);
+
+ CreateTable(
+ "dbo.AspNetUserLogins",
+ c => new
+ {
+ LoginProvider = c.String(nullable: false, maxLength: 128),
+ ProviderKey = c.String(nullable: false, maxLength: 128),
+ UserId = c.String(nullable: false, maxLength: 128),
+ })
+ .PrimaryKey(t => new { t.LoginProvider, t.ProviderKey, t.UserId })
+ .ForeignKey("dbo.AspNetUsers", t => t.UserId, cascadeDelete: true)
+ .Index(t => t.UserId);
+
+ CreateTable(
+ "dbo.AspNetUserRoles",
+ c => new
+ {
+ UserId = c.String(nullable: false, maxLength: 128),
+ RoleId = c.String(nullable: false, maxLength: 128),
+ })
+ .PrimaryKey(t => new { t.UserId, t.RoleId })
+ .ForeignKey("dbo.AspNetRoles", t => t.RoleId, cascadeDelete: true)
+ .ForeignKey("dbo.AspNetUsers", t => t.UserId, cascadeDelete: true)
+ .Index(t => t.UserId)
+ .Index(t => t.RoleId);
+
+ CreateTable(
+ "dbo.ParameterValues",
+ c => new
+ {
+ GroupKey = c.String(nullable: false, maxLength: 50),
+ Value = c.String(nullable: false, maxLength: 50),
+ NumbericValue = c.Decimal(nullable: false, precision: 18, scale: 2),
+ })
+ .PrimaryKey(t => new { t.GroupKey, t.Value })
+ .Index(t => t.GroupKey);
+
+ CreateTable(
+ "dbo.AspNetRoles",
+ c => new
+ {
+ Id = c.String(nullable: false, maxLength: 128),
+ Name = c.String(nullable: false, maxLength: 256),
+ })
+ .PrimaryKey(t => t.Id)
+ .Index(t => t.Name, unique: true, name: "RoleNameIndex");
+
+ CreateTable(
+ "dbo.Dovomin",
+ c => new
+ {
+ Id = c.String(nullable: false, maxLength: 128),
+ FirstName = c.String(),
+ LastName = c.String(),
+ BirthDate = c.DateTime(),
+ IsFulltime = c.Boolean(nullable: false),
+ IsPartTime = c.Boolean(nullable: false),
+ Description = c.String(),
+ EnglishResume = c.String(),
+ PersianResume = c.String(),
+ })
+ .PrimaryKey(t => t.Id)
+ .ForeignKey("dbo.AspNetUsers", t => t.Id)
+ .Index(t => t.Id);
+
+ CreateTable(
+ "dbo.Avalin",
+ c => new
+ {
+ Id = c.String(nullable: false, maxLength: 128),
+ CompanyName = c.String(nullable: false),
+ NationalId = c.String(maxLength: 12),
+ RegisterId = c.String(maxLength: 10),
+ Address = c.String(),
+ CompanyPhoneNumber = c.String(),
+ EMail = c.String(),
+ })
+ .PrimaryKey(t => t.Id)
+ .ForeignKey("dbo.AspNetUsers", t => t.Id)
+ .Index(t => t.Id);
+
+ }
+
+ public override void Down()
+ {
+ DropForeignKey("dbo.Avalin", "Id", "dbo.AspNetUsers");
+ DropForeignKey("dbo.Dovomin", "Id", "dbo.AspNetUsers");
+ DropForeignKey("dbo.AspNetUserRoles", "UserId", "dbo.AspNetUsers");
+ DropForeignKey("dbo.AspNetUserLogins", "UserId", "dbo.AspNetUsers");
+ DropForeignKey("dbo.AspNetUserClaims", "UserId", "dbo.AspNetUsers");
+ DropForeignKey("dbo.AspNetUserRoles", "RoleId", "dbo.AspNetRoles");
+ DropForeignKey("dbo.JobParameters", "ParameterId", "dbo.Parameters");
+ DropForeignKey("dbo.JobParameters", "JobId", "dbo.Jobs");
+ DropForeignKey("dbo.Jobs", "AvalinId", "dbo.Avalin");
+ DropForeignKey("dbo.DovominJobs", "JobId", "dbo.Jobs");
+ DropForeignKey("dbo.DovominParameters", "ParameterId", "dbo.Parameters");
+ DropForeignKey("dbo.DovominParameters", "DovominId", "dbo.Dovomin");
+ DropForeignKey("dbo.DovominJobs", "DovominId", "dbo.Dovomin");
+ DropIndex("dbo.Avalin", new[] { "Id" });
+ DropIndex("dbo.Dovomin", new[] { "Id" });
+ DropIndex("dbo.AspNetRoles", "RoleNameIndex");
+ DropIndex("dbo.ParameterValues", new[] { "GroupKey" });
+ DropIndex("dbo.AspNetUserRoles", new[] { "RoleId" });
+ DropIndex("dbo.AspNetUserRoles", new[] { "UserId" });
+ DropIndex("dbo.AspNetUserLogins", new[] { "UserId" });
+ DropIndex("dbo.Jobs", new[] { "AvalinId" });
+ DropIndex("dbo.JobParameters", new[] { "JobId" });
+ DropIndex("dbo.JobParameters", "IX_JobParameterUniqueIndex");
+ DropIndex("dbo.DovominParameters", new[] { "DovominId" });
+ DropIndex("dbo.DovominParameters", "IX_DovominParameterUniqueIndex");
+ DropIndex("dbo.AspNetUserClaims", new[] { "UserId" });
+ DropIndex("dbo.AspNetUsers", "UserNameIndex");
+ DropIndex("dbo.DovominJobs", new[] { "JobId" });
+ DropIndex("dbo.DovominJobs", "IX_DovominJobUniqueIndex");
+ DropTable("dbo.Avalin");
+ DropTable("dbo.Dovomin");
+ DropTable("dbo.AspNetRoles");
+ DropTable("dbo.ParameterValues");
+ DropTable("dbo.AspNetUserRoles");
+ DropTable("dbo.AspNetUserLogins");
+ DropTable("dbo.Jobs");
+ DropTable("dbo.JobParameters");
+ DropTable("dbo.Parameters");
+ DropTable("dbo.DovominParameters");
+ DropTable("dbo.AspNetUserClaims");
+ DropTable("dbo.AspNetUsers");
+ DropTable("dbo.DovominJobs");
+ }
+ }
+}
diff --git a/Sevomin.Models/Migrations/201409010546480_basepoint.resx b/Sevomin.Models/Migrations/201409010546480_basepoint.resx
new file mode 100644
index 0000000..b64e8a5
--- /dev/null
+++ b/Sevomin.Models/Migrations/201409010546480_basepoint.resx
@@ -0,0 +1,126 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ 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
+
+
+ dbo
+
+
\ No newline at end of file
diff --git a/Sevomin.Models/Parameter.cs b/Sevomin.Models/Parameter.cs
index e812c9d..4678af3 100644
--- a/Sevomin.Models/Parameter.cs
+++ b/Sevomin.Models/Parameter.cs
@@ -1,50 +1,51 @@
-using System.Collections.Generic;
-using System.ComponentModel.DataAnnotations;
-using System.ComponentModel.DataAnnotations.Schema;
-using System.Linq;
-
-
-namespace Sevomin.Models
-{
- public class Parameter
- {
- [Key]
- public long Id { get; set; }
-
- [Required]
- public string Name { get; set; }
-
- [Required]
- public bool Moscow { get; set; }
-
- [Required]
- public byte DisplayMethod { get; set; }
-
- [StringLength(50)]
- public string DisplayFormat { get; set; }
-
- [Required]
- public string GroupName { get; set; }
-
- [StringLength(140)]
- public string CommentAvalin { get; set; }
-
- [StringLength(140)]
- public string CommentDovomin { get; set; }
-
- [StringLength(50)]
- public string ParameterValueId { get; set; }
-
- [NotMapped]
- public IQueryable ParameterValues
- {
- get
- {
- return SevominDbContext.Current.ParameterValues.Where(x => x.GroupKey == ParameterValueId);
- }
- }
-
- public virtual ICollection JobParameters { get; set; }
- public virtual ICollection DovominParameters { get; set; }
- }
-}
+using System.Collections.Generic;
+using System.ComponentModel.DataAnnotations;
+using System.ComponentModel.DataAnnotations.Schema;
+using System.Linq;
+
+
+namespace Sevomin.Models
+{
+ public class Parameter
+ {
+ [Key]
+ public long Id { get; set; }
+
+ [Required]
+ public string Name { get; set; }
+
+ [Required]
+ public bool Moscow { get; set; }
+
+ [Required]
+ public byte DisplayMethod { get; set; }
+
+ [StringLength(50)]
+ public string DisplayFormat { get; set; }
+
+ [Required]
+ public string GroupName { get; set; }
+
+ [StringLength(140)]
+ public string CommentAvalin { get; set; }
+
+ [StringLength(140)]
+ public string CommentDovomin { get; set; }
+
+ [StringLength(50)]
+ public string ParameterValueId { get; set; }
+
+ [NotMapped]
+ public IQueryable ParameterValues
+ {
+ get
+ {
+ return SevominDbContext.Current.ParameterValues.Where(x => x.GroupKey == ParameterValueId);
+ }
+ }
+ public int BasePoint { get; set; }
+
+ public virtual ICollection JobParameters { get; set; }
+ public virtual ICollection DovominParameters { get; set; }
+ }
+}
diff --git a/Sevomin.Models/Sevomin.Models.csproj b/Sevomin.Models/Sevomin.Models.csproj
index 20bfa2e..effe160 100644
--- a/Sevomin.Models/Sevomin.Models.csproj
+++ b/Sevomin.Models/Sevomin.Models.csproj
@@ -1,141 +1,150 @@
-
-
-
-
- Debug
- AnyCPU
- {CB5D89BC-10D1-44D6-857B-A94B5CFCFB11}
- Library
- Properties
- Sevomin.Models
- Sevomin.Models
- v4.5.1
- 512
-
-
- true
- full
- false
- bin\Debug\
- DEBUG;TRACE
- prompt
- 4
-
-
- pdbonly
- true
- bin\Release\
- TRACE
- prompt
- 4
-
-
-
- False
- ..\packages\EntityFramework.6.1.0\lib\net45\EntityFramework.dll
-
-
- False
- ..\packages\EntityFramework.6.1.0\lib\net45\EntityFramework.SqlServer.dll
-
-
- ..\packages\FluentScheduler.3.1.42\lib\net40\FluentScheduler.dll
-
-
- ..\packages\MailChimp.NET.1.1.0.2\lib\net40\MailChimp.dll
-
-
- False
- ..\packages\Microsoft.AspNet.Identity.Core.2.0.0\lib\net45\Microsoft.AspNet.Identity.Core.dll
-
-
- False
- ..\packages\Microsoft.AspNet.Identity.EntityFramework.2.0.0\lib\net45\Microsoft.AspNet.Identity.EntityFramework.dll
-
-
- ..\packages\Microsoft.Owin.2.1.0\lib\net45\Microsoft.Owin.dll
-
-
- ..\packages\Microsoft.Owin.Host.SystemWeb.2.1.0\lib\net45\Microsoft.Owin.Host.SystemWeb.dll
-
-
- ..\packages\Owin.1.0\lib\net40\Owin.dll
-
-
- ..\packages\ServiceStack.Text.3.9.71\lib\net35\ServiceStack.Text.dll
-
-
- ..\packages\ShortGuid.1.0.0\lib\net45\ShortGuid.dll
-
-
-
-
-
-
- False
- ..\packages\Microsoft.AspNet.Mvc.5.0.0\lib\net45\System.Web.Mvc.dll
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+ Debug
+ AnyCPU
+ {CB5D89BC-10D1-44D6-857B-A94B5CFCFB11}
+ Library
+ Properties
+ Sevomin.Models
+ Sevomin.Models
+ v4.5.1
+ 512
+
+
+ true
+ full
+ false
+ bin\Debug\
+ DEBUG;TRACE
+ prompt
+ 4
+
+
+ pdbonly
+ true
+ bin\Release\
+ TRACE
+ prompt
+ 4
+
+
+
+ False
+ ..\packages\EntityFramework.6.1.0\lib\net45\EntityFramework.dll
+
+
+ False
+ ..\packages\EntityFramework.6.1.0\lib\net45\EntityFramework.SqlServer.dll
+
+
+ ..\packages\FluentScheduler.3.1.42\lib\net40\FluentScheduler.dll
+
+
+ ..\packages\MailChimp.NET.1.1.0.2\lib\net40\MailChimp.dll
+
+
+ False
+ ..\packages\Microsoft.AspNet.Identity.Core.2.0.0\lib\net45\Microsoft.AspNet.Identity.Core.dll
+
+
+ False
+ ..\packages\Microsoft.AspNet.Identity.EntityFramework.2.0.0\lib\net45\Microsoft.AspNet.Identity.EntityFramework.dll
+
+
+ ..\packages\Microsoft.Owin.2.1.0\lib\net45\Microsoft.Owin.dll
+
+
+ ..\packages\Microsoft.Owin.Host.SystemWeb.2.1.0\lib\net45\Microsoft.Owin.Host.SystemWeb.dll
+
+
+ ..\packages\Owin.1.0\lib\net40\Owin.dll
+
+
+ ..\packages\ServiceStack.Text.3.9.71\lib\net35\ServiceStack.Text.dll
+
+
+ ..\packages\ShortGuid.1.0.0\lib\net45\ShortGuid.dll
+
+
+
+
+
+
+ False
+ ..\packages\Microsoft.AspNet.Mvc.5.0.0\lib\net45\System.Web.Mvc.dll
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 201409010546480_basepoint.cs
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 201409010546480_basepoint.cs
+
+
+
+
\ No newline at end of file
diff --git a/Sevomin.Models/SevominDbContext.cs b/Sevomin.Models/SevominDbContext.cs
index c9663af..5c98655 100644
--- a/Sevomin.Models/SevominDbContext.cs
+++ b/Sevomin.Models/SevominDbContext.cs
@@ -1,46 +1,46 @@
-using Microsoft.AspNet.Identity.EntityFramework;
-using System;
-using System.Data.Entity;
-using System.Web;
-
-namespace Sevomin.Models
-{
- public class SevominDbContext : IdentityDbContext
- {
- #region Singleton
- private static object locker = new object();
-
- public SevominDbContext() : base("SevominConnectionString") { }
-
- public static SevominDbContext Current
- {
- get
- {
- lock (locker)
- {
- if (HttpContext.Current.Items["DataContexMember"] != null &&
- HttpContext.Current.Items["DataContexMember"] is SevominDbContext)
- return (SevominDbContext)HttpContext.Current.Items["DataContexMember"];
- RenewMember();
- return (SevominDbContext)HttpContext.Current.Items["DataContexMember"];
- }
- }
-
- }
-
- public static void RenewMember()
- {
- SevominDbContext pe =
- new SevominDbContext();
- HttpContext.Current.Items["DataContexMember"] = pe;
- GC.Collect();
- }
-
- #endregion
-
- public DbSet Parameters { get; set; }
- public DbSet ParameterValues { get; set; }
- public DbSet Jobs { get; set; }
- public DbSet DovominJobs { get; set; }
- }
-}
+using Microsoft.AspNet.Identity.EntityFramework;
+using System;
+using System.Data.Entity;
+using System.Web;
+
+namespace Sevomin.Models
+{
+ public class SevominDbContext : IdentityDbContext
+ {
+ #region Singleton
+ private static object locker = new object();
+
+ public SevominDbContext() : base("SevominConnectionString") { }
+
+ public static SevominDbContext Current
+ {
+ get
+ {
+ lock (locker)
+ {
+ if (HttpContext.Current.Items["DataContexMember"] != null &&
+ HttpContext.Current.Items["DataContexMember"] is SevominDbContext)
+ return (SevominDbContext)HttpContext.Current.Items["DataContexMember"];
+ RenewMember();
+ return (SevominDbContext)HttpContext.Current.Items["DataContexMember"];
+ }
+ }
+
+ }
+
+ public static void RenewMember()
+ {
+ SevominDbContext pe =
+ new SevominDbContext();
+ HttpContext.Current.Items["DataContexMember"] = pe;
+ GC.Collect();
+ }
+
+ #endregion
+
+ public DbSet Parameters { get; set; }
+ public DbSet ParameterValues { get; set; }
+ public DbSet Jobs { get; set; }
+ public DbSet DovominJobs { get; set; }
+ }
+}