From c59c85be14578972c6c82efff30d32738f0b14d8 Mon Sep 17 00:00:00 2001 From: Mehrdadmaskull Date: Tue, 10 Mar 2015 19:01:17 +0330 Subject: [PATCH] Initial Ad stuffs --- Sevomin.Models/Ad.cs | 26 ++ Sevomin.Models/AdViewModel.cs | 60 ++++ .../201503030741121_Init.Designer.cs | 29 -- .../Migrations/201503030741121_Init.cs | 268 ------------------ .../Migrations/201503030741121_Init.resx | 126 -------- .../Migrations/201503091139500_Init.resx | 126 -------- ...er.cs => 201503101336488_Init.Designer.cs} | 2 +- ...139500_Init.cs => 201503101336488_Init.cs} | 16 ++ .../Migrations/201503101336488_Init.resx | 126 ++++++++ Sevomin.Models/Repositories/AdRepository.cs | 74 +++++ Sevomin.Models/Repositories/IRepository.cs | 7 + Sevomin.Models/Sevomin.Models.csproj | 13 +- Sevomin.Models/SevominDbContext.cs | 1 + .../AdsController.cs | 29 ++ .../GodController.cs | 43 +++ .../Sevomin.WebFrontend.Controllers.csproj | 5 + .../Sevomin.WebFrontend.csproj | 1 + .../Views/God/AdManagementPanel.cshtml | 73 +++++ Sevomin.WebFrontend/Views/God/Index.cshtml | 196 ++++++++----- 19 files changed, 588 insertions(+), 633 deletions(-) create mode 100644 Sevomin.Models/Ad.cs create mode 100644 Sevomin.Models/AdViewModel.cs delete mode 100644 Sevomin.Models/Migrations/201503030741121_Init.Designer.cs delete mode 100644 Sevomin.Models/Migrations/201503030741121_Init.cs delete mode 100644 Sevomin.Models/Migrations/201503030741121_Init.resx delete mode 100644 Sevomin.Models/Migrations/201503091139500_Init.resx rename Sevomin.Models/Migrations/{201503091139500_Init.Designer.cs => 201503101336488_Init.Designer.cs} (93%) rename Sevomin.Models/Migrations/{201503091139500_Init.cs => 201503101336488_Init.cs} (95%) create mode 100644 Sevomin.Models/Migrations/201503101336488_Init.resx create mode 100644 Sevomin.Models/Repositories/AdRepository.cs create mode 100644 Sevomin.WebFrontend.Controllers/AdsController.cs create mode 100644 Sevomin.WebFrontend/Views/God/AdManagementPanel.cshtml diff --git a/Sevomin.Models/Ad.cs b/Sevomin.Models/Ad.cs new file mode 100644 index 0000000..dd035b7 --- /dev/null +++ b/Sevomin.Models/Ad.cs @@ -0,0 +1,26 @@ +using System; +using System.ComponentModel; +using System.ComponentModel.DataAnnotations; +using System.ComponentModel.DataAnnotations.Schema; + +namespace Sevomin.Models +{ + public class Ad + { + [Key] + public long Id { get; set; } + public string Title { get; set; } + public string Description { get; set; } + public int Duration { get; set; } + public long ClickCount { get; set; } + public string Link { get; set; } + public DateTime CreatedDate { get; set; } + public bool Active { get; set; } + + [NotMapped] + public bool Expired + { + get { return (CreatedDate.AddDays(Duration) < DateTime.Now); } + } + } +} diff --git a/Sevomin.Models/AdViewModel.cs b/Sevomin.Models/AdViewModel.cs new file mode 100644 index 0000000..d82e6f3 --- /dev/null +++ b/Sevomin.Models/AdViewModel.cs @@ -0,0 +1,60 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.ComponentModel.DataAnnotations; +using System.ComponentModel.DataAnnotations.Schema; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using Sevomin.Models.Helpers; + +namespace Sevomin.Models +{ + class AdViewModel + { + [Key] + public long Id { get; set; } + + [DisplayName("عنوان")] + [Required(ErrorMessage = "{0} را وارد کنید")] + public string Title { get; set; } + + [Required(ErrorMessage = "{0} را وارد کنید")] + [DisplayName("متن")] + public string Description { get; set; } + + [Required(ErrorMessage = "{0} را وارد کنید")] + [DisplayName("تعداد روز")] + public int Duration { get; set; } + + [DisplayName("تعداد کلیک")] + public long ClickCount { get; set; } + + [DisplayName("لینک")] + [Required(ErrorMessage = "{0} را وارد کنید")] + public string Link { get; set; } + + [DisplayName("تاریخ ساخته شدن")] + public DateTime CreatedDate { get; set; } + + [DisplayName("فعال")] + public bool Active { get; set; } + + [NotMapped] + public bool Expired + { + get { return (CreatedDate.AddDays(Duration) < DateTime.Now); } + } + + public AdViewModel(Ad ad) + { + Id = ad.Id; + Duration = ad.Duration; + Link = ad.Link; + ClickCount = ad.ClickCount; + CreatedDate = ad.CreatedDate; + Title = ad.Title; + Description = ad.Description; + } + } +} diff --git a/Sevomin.Models/Migrations/201503030741121_Init.Designer.cs b/Sevomin.Models/Migrations/201503030741121_Init.Designer.cs deleted file mode 100644 index 7fa6241..0000000 --- a/Sevomin.Models/Migrations/201503030741121_Init.Designer.cs +++ /dev/null @@ -1,29 +0,0 @@ -// -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 Init : IMigrationMetadata - { - private readonly ResourceManager Resources = new ResourceManager(typeof(Init)); - - string IMigrationMetadata.Id - { - get { return "201503030741121_Init"; } - } - - string IMigrationMetadata.Source - { - get { return null; } - } - - string IMigrationMetadata.Target - { - get { return Resources.GetString("Target"); } - } - } -} diff --git a/Sevomin.Models/Migrations/201503030741121_Init.cs b/Sevomin.Models/Migrations/201503030741121_Init.cs deleted file mode 100644 index 7f593d8..0000000 --- a/Sevomin.Models/Migrations/201503030741121_Init.cs +++ /dev/null @@ -1,268 +0,0 @@ -namespace Sevomin.Models.Migrations -{ - using System; - using System.Data.Entity.Migrations; - - public partial class Init : 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), - ParameterType = 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(), - OptOutEmail = c.Boolean(nullable: false), - }) - .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/201503030741121_Init.resx b/Sevomin.Models/Migrations/201503030741121_Init.resx deleted file mode 100644 index f6f23fe..0000000 --- a/Sevomin.Models/Migrations/201503030741121_Init.resx +++ /dev/null @@ -1,126 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 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 - - - H4sIAAAAAAAEAO0d2W7kuPE9QP6h0U+bYNbtY2awMexdeHxsnIwPTHsWeTPkbrotrI5eST1jI9gvy0M+Kb8QUqIkHkWKlCipPVj4pU1SxWKxWCxWFVn/+89/j356DoPJF5SkfhwdT/d2dqcTFC3ipR+tjqeb7PH7H6Y//fjnPx2dL8PnyS9luwPSDn8ZpcfTpyxbH85m6eIJhV66E/qLJE7jx2xnEYczbxnP9nd3/zbb25shDGKKYU0mR582UeaHKP8H/3saRwu0zjZecBUvUZDSclwzz6FOrr0QpWtvgY6nc/QlDv1op2g5nZwEvpeS4uBxOvGiKM68DON4+DlF8yyJo9V8jQu84O5ljXC7Ry9IEcX9sG5uOozdfTKMWf1hCWqxSbM4tAS4d0DpMhM/b0XdaUU3TLlzTOHshYw6p97x9CzOCfeP+GE6Ebs7PA0S0lQk70790ZsJX/Wm4gbMNOTvzeR0E2SbBB1HaJMlXvBmcrt5CPzFP9HLXfwrio6jTRCwOGIscR1XgItuk3iNkuzlE3qkmF8up5MZ/91M/LD6jPmmGNFllL1/O51c4869hwBVLMCMfp7FCfoZRSjxMrS89bIMJRGBgXIiSr0LfVEi1V1ixsPrZzq58p4/omiVPeGVtf/DdHLhP6NlWULR+Bz5eLnhj7JkgwA09V3jiWkeqR7EyXodvJzhgZdgyO87vDqtIZ3GWJB8RIR6Gkrgn0aUaMD68dGP8rmhSKOFH3rBdHKb4F9UmmGSzxcewX/fejBXGHy4CT+h3zZ+gkLMCWVXH+I4QF5kT+gvXuBHc4QimdImX57GIYtGf6TNeztDAap5wnjM194Xf5WvKniRTCefUJDXp0/+upDbpZS5r6UNFuwXSRx+ioP6U7b6/s5LVojQIla3mcebZGGBYi4aAfRw+T1ZJf6iqGFxE+skxKQGEFZHs1pcmwhxewnuSnxPPngpKjvCtMHbbDLVstOFn6QZ+dk74370Burog59kT7DI1H94mV5gImZ+aL+wJEi3XpLdOYB0htJF4q8LraNnwp1Hq8BPnz6hdDPANN0SDveivnprEnWFGHMj7kqhoRN3peSxRBPzEf4X79laZKtW95UIkjCW2qiktNywk1As9TQii04Dzw914vGq0qBP0vU1ynbKr3cKuBcEta9x8uuOBPbNxPjjWrzum4rXg72Hx4Mf3r33lgfv36KDd6NoygeQouROUyakHENNzqePdNq7zMl7+sULNq67slURqjVmrytUn/5x5lP2VdGo6/FrxMNj0VMfzCr3dY234MRfcJ01n9kcHi7abWCKfVe905lizCxPAGcJPrtJ12hrmklbr65tp923jaD5Q8I0SxhHJxlbs0ecLuKvnc8UfroOvJcrlD3FFck+vGT2+FBIF3ESejrTx7tdB0Lq5yTerMehOzXuFLYX3Vbw1sVAaW+VJOy5u2q55+Jfu9U5mUdio7iN/dpWptJsDdHmNEdOPhc1XY1iDUcwB7uBuI+Z7BwWZrOGAbAt7pn9gjOjAS0gYxrUrNP+xcK02MLYz/7YxZrXUFc92YGn49Xpu/q92Wg7bWXsFlY0b+3mKkFzN9/C1gqv14xbixJRAjZInLaixE6C/CE4lH0VmtAoxqIEYYydeETPn9d+4gbUkGb6wmLOaj2tdPfTOMq8RUbM8HE0iGOG6/H2KY4G7vL8yvOD3rucP8VfsQa/9qIXlqptD2sMuI/xKu7umSI+rlaeKeWewHtfu7poga0A9uEao0dPbQBiRdW96ONhiqUtlK1r4cJu1sVt9neIVrAG0GrHLClnvGkWH4znzQbW3XBGguucNl7QsCs62QFWfpo1OWtcnNVPlssEpekAcjqfuHxTwMr5wwAxSsPsBjfr7GaTnYdMX90FrtJ3bSDPRJEBybrOfl68U+nlRjs/bw52+/28OZq4+Iu/JHw8a/6ibIzBG7UvPbW2RwQBs6F1d26YQ3c+jHe71XIhK9H9aiFQt3+xwKwMNiUDasP1Y8U1lPhuCcfxdv42/sD8wxGtIrkHyFRG0lHaMkvdR1cviCW3NFk+++m1ULasTaFuZaB7+fc6ZF83K99wgqzhPLX/7r2TXpX6LhHgsMLLzvc9bVbrvXKtpP4CTTppwfkZ1Vy0kuav1sw8HAPSOINBrJRzfxV9Xju6chM9+iQ0Ak/mKUag/zNtqD/Tmq5Ug17o2NCyq0Xy1ktTLIOXf/fSp/4nFy02CV6x88wL1/2HuA9ozmD6cjY1d1/jC2+Rxcl5RL7qDO9jvPg13mTn0ZIsqc/ZwvaGRgXACToniwVK0wvMzGh5Gm+6BqQQWT72TpkHOMNbJUHvvqyv90imWNoc2Tpbq3tuatBgUtYLmBTFMCa0zhYTAkGDCK0W8MhLYTSKKjstYRNCB7HCh3eZXgTeqr79bKw8ELApH+3kzPT+OVqiJHjBDMwuCZ7iV4hIm1JWoGdMjfwYcTzdlWaHa0vDL6rme/rmxV5M2+7LJC+IyxaepGm88HPq8bFc3K0evksslSYGV3xqd0QVn3eFKeoTBxWeejIYUe+6odc1JyeL4vL5qZcuvCVwOMU42CBV+aYkpPJYBx6vv0rdYT0QJUT99chunmJu8KNMVhr9aOGvvaCZOMKnhhonGXfViVhzhtYoIip6MxVMemfC+WUkqr6ESWki09GMYTcjLpSj3RtmXRP6Lk09E3bTxAAG/ahZrFe+78KaykEMx5/K+XoNTKoLaFXxj1F0KxChO5DwNLqK0WUlteJXA6INwLIGtDHBggslHYVvpSgTFTeoQ05qFgA20J54U/1GwYC7uookA/CfavwmXdOw41HYjfW1q+YWdLzX01rG1wzCZ2BQk5bhHfEWQIQB2AoYrkmvdWDraDKMj//SiQ1FMNhYUkwRe86h0/eeqiTLQJIMpMG2izJF2L5mrrUx/G0nvLEHgKWG0STbsqJmEMPwo2aeXodSBzj4VEyj8/bVDMP7nAeRjRofI4BYHRDUi4BUU2kAjlRTwqRzOP5nIEZkzeeqiQZt6UL88jAsB1nuFbxG3+TphdkAggzAZcDgTXpVRqINxl7UJ6KdVNFBMh57Ce4YBXvRUOD+2IsnyFDsxQ/+dbBX4enSzqng9hqPuXgn2/DbpEyNoTiLG/mWMVbh3swv1flR5Z+jLsezB1KRuwElFybGkXoxU+rjFmefAJ6jjLeBFxcZaqcqYA6TzhA8IGmng+AB22EDWOCpBxWWzAmlAagWmjkY4f6YBIk/lDUDU8CwIn3p7deSnm4VFmCp714LtRASpqTPvcxa+sNxxSLAJsyMsKIBjRKQQhgLHzNLVuJT/jFLpqXmzUtRmpj5x6shVNhLYsnMp80A4pAXNxJ+2OYkAV4cU9KlwV8LjUntsZUHxq7WZmqpfbRNtG9BLO3jNjK9jF2H3MBMnIfM2AzJZeLzs5mLFtST7z3LJNN7rSQbK+i3YoYBLRI9kN4XHHcpUSaA0o/S6EmxkjWQ+6OBbi1nXNh/4SnXGPkNzfy2kw5b53korrkffAwGJEij/dnGAm06KBubs5EAakEl6AaDTKEmM6ipIZQZBdVQNBTR2C0ZOIA+1pkoXKyqTA2lLa7RGmclMiAjmmLgJa5uRl5qy4qRQ2aiRkOR/cgF+45i5CWubkZOGUgxcMCA0WTCsB82b3lwxOhlZHB1dK7qjmZFFiVacDRTpFs6uvLWaz9aMemXaMlkXuReOv1+bp+YKCxgzBYcXcWDftVTFifeCgm15KLLEuWZJM68zHvwSBTz6TKUmkmGAsXxp+xOtgXIc1cejcpvyG/OLCEnSwKsKvTrCzw68vRmPlAEakTyxxOSCMsLvAS4KHUaB5swUhuH1F8zUYAsEE1woBoW9S2zcBTuZjUMJhERC4cpNofFpSJioXEVFrhV6YY41KpSc0hXQF4hFiZUb4Enk2OIw5Qpt4VW5R2SAVZVtjDL7EIyyLJGhng0E9aQZI2U1qpkEuaXv5FwUOlCtmKhvUwYSiAwmXpYIEyxOaw6Fw8Lqi41h8Qk22FBMcXmsNj8OxydmHIbaLdVDh4eWl1uIY7ZB/44gcxWmMMTcu2wEIUqc5i3fEYdFqZQ5X752i06Gvhov+ZUH/az5LjnxPh9iqkwh8e+EMaCY8vNobGvgLHQ2HILyV++9MUJ/bLQmmbc1VeAdFy9xbIpHu3ilktRZA6De5KLhcRVDL5ELlPy++bxO+CJgL+0WCrya3k6onRUVtn7+Zx0ZCvM4bF38FlwbLkNS4rX8HmGFGst2FFmIiX7aGEwV7YlYEydxV7A3arntgKuxmJO+Kvz3LTwVRZYqqRES/EAX4JXAG5FV/lKPAtdrrXQyeTL8ZxyJle3gA3gLNZZbBny/Xlu85CrzWHXl+lZkHXp1hxAACtgB8VIjkSwF/wGMPrZBcpAFHHGLJWuOhscJ6brYktY1GEvAQMd+SNykonL1PZYq3SmmJ9vNSD6YSMu6JzfuTTR6Gp4Li1pXJIKbgtkKyxOBFwiCu5MwNVsDZO64c4ubDk4P8rbkK06W6YG4SyJtMxayS7TdgFqdlllDbNM4AXALKvMYTJ5ulh4TLHVaZJNvCUcJNkqa5hV2A8AtKprIbWqLFqg6KpqLUxsdb4szsRWF7fAUt5ghaqtkThNkRLGQoeLe7SXO/rPX8dW6MIRtD1boBtxOx5bd+Xmdkw8FO/WN6llN5LliYBJ+cMJa6bcwt7CZP3hbC1M+Xh+ATa5D2/UrcutLF9ijh/B9CVWt4RNs/kogdP6ltABqy9UbyHDxBw9nBwTK1vBLZL1KOAWlbaeMciXVZdvjWQDooMcWUSKCwLdLCIKGGrLGZcxgTecadM8qGHesmkQuF1dlwZCDc/O7rIFXKGK42rFFPlNim48AYPo18xVXmbmhLzigvP4p316LcbFkb9Q5zqc+xUAtMdRaampUwmoIQEqahtt90Gt7j5so8nH2WrtuFLtVulQNp9eJ0UKGxWbVL3Tkur/KmyUhmxysaT5qElkaD7alIaPijGcRROSBKLYlfC8vqQZCndIg535b8Fp4OfhZWWDKy/yH1GaFe/ITvd3SbKzk8D30iKIl0anHoq3Q43CVfcOSLgqWoYz8XP7oFcCJU2X3JP58lP+qpjPIZ7Wf/BXuWWnMU2r7UP6tdG76Cj64iWLJw/KWXAZLdHz8fTf+aeHk8t/Mff0Pkf+bxuUt3gzuUnw5B9O9t5MLtOi4nByl2zQ5Hc5N0CXvNIlUdSY/m6M7D6ErO374XXsa4HgEv/O2iUKYOJe+Yn5LvSe/8ICNErbV4W+UsS6JXSRO4DiYMtJyuwJycS/qilpNHA+8NUFKbm4V9Mx2uULGVy81Ku+4/oEEnN0oracfKPDmoKTb3TCj0uwAVIxf+K/BVApaUObhQTl0ug2H1C+jE4QgZwYruA5IaEq50UbWMp8F23FG5z/opXIVeW+yHfYjpkvzJWK8ku6OWv1B2FluUq+CITIDCGCe1Hv+EyHVrpd8WmlH+06UN6YkB0HC52N2bEGZ8wZ+qCX16z6cy5DU4Va1KYrIMYHgCEOKIDar0UUVP47Mjvn/XTA7rzz016N77AGvkHmN1JQzU4+1JHcfusVgnUKQJkfvbTZeoUoHY1iSvKH2rEgE7HjgnJCwI7uJPLWGlcxcMctdDl8xymhmVCe9kqYEL9jCshYKqjjX16zYOi2K7I06WtH7GACa0LPhRFs+/e9JhluJnpt1sm3szzqcB0Lbaz7wYEJ7OloBWKjejqC4iJ6HHA6G9LTTQkA4nhcHLiAAB7XYGnkjgtLlRi1015BkwJ12oNiA3Sc244bwlrM5E5DFAuUFEAXpWL8Pm2zdBMwc2y55kbhGPaYZphW3CO71s2YR/n0sNwUjm1p5oLtMmmVo2iBTfHpEDOri5Qxm1d1dAzQGH4Qt3Fi6z7aqhb8Qcto/kA9tStQIXDHicvVehm3XcJb4khs5z4ggx7BfQBnbR2U3AYCx7HoYx4acqCu1W8NOQDGvDbUzb/GvjTURemrXxjqYCZ0fNwQnhVy4XrlHxXqzykDvfrzrS834CzTzfzKPjKkFd7259j6vSEdYGuzaPX6kJNTp/zskItF5ez8yj0+1PWoqMw8rn7hX35o3izptzgsCUyeKkKG1HuG+gHTfcN38eTexs7s3Tb9vCNOYN4Al+H1nRh0eK7QXTbePt7olPV91OTu28BddnM9Bn+Nn8rTJj/7SFmMx9qyTDeQYber15Fd3SijunpvMmA2p3nQB0r8+80lOx8vrzm8sQyTy3zoNNFbLxcsU5Vvh4YyJhMNqplYs9L4WknLBOPbklO8znAI4DNgKvEhs4drbv2b+h0HYi7TpOFjpdoFEp8q2KjvLOFD84/qcVULH/c2pQXfBgai6VsVDNR3HvChGUj1Fs02MlBz4u9t4J+xtrExuMd4+xqVeaoEs3hOalj3F0kc5qrS/V3caEI25K5G47GJDXp3Z0eGtNU80d0qPZwtRscFoIfWIRMYm3peHwt0Ngs55wDhzZnKgyrm+BMniz5jwwuP3FRTeykBi2rxzszxdPlAQm0LX6cuA7HYUcFLUhdFMQT8JF1fowxOkS0CB3RgqSegjb5bRbZQBQUZC4GKjkwTDTU1eWvFrnV9NnRm0Qtv/pA64quhvvQpi4Hu4F6UwO34g6q4Wv6gbfT8ocipquu70I+0XRdN9D3DeU2V3EEjHtUsQhto+YS+LWc62oaRNo3SbISVgqFacdqF1gi+3Lsk6GUFiD/40jmcTBcK9wCy6jZGhcCaWDUc5Yih75jlJ+ZUlY4M1tmDlaEN6lE3hEG4HLok5eAEG93JoPPiA5QwdvqrjOrMaJTDGJUgktMZTj+vcUyLlnwxvfzorM+6SoHRKT2poILNIKnKrGBHjpZzJuzs8KQ1pQZoO2uQXiLnAHAyUMiZBY+20e3lbI0ONXzA9QIMvclBo3HRMKjzFZrBq5Qq+NHg7kRgXQSqvPfKvGL8+ZpBtCgwHCZ3rlGkEHM00FKzVQxU+Vy4m4FyCrriZXBHA6VqpmKcqid13QxzCLa1MQ1qFE9ry2JHMlnoce13YgNDmXqftrWydSSI8b6vIYf0SnFVdzQrDjK0AP8rvUZ8NPu0iciNm+K/M5T6qxrEEYYZoQVnoaraXEaPcWkkEzAqm4gPP6DMW3qZd5Jk/iO5hJ7E5Bk8P1pNJ/kxlDzG+ICWl9HNJltvMjxkFD4E3D1IYnDT9X80k3A+usmv8aQuhoDR9Mn1ppvow8YPlhXeF8DtAAUIYsmjb0SQuczIWxGrlwrStZSqQwWIkq8yQN6hcB1gYOlNNPe+oDa4YYb9iFbe4qW++K0C0jwRPNmPznxvhbWXlMKov8f/Yh5ehs8//h8yH8t3de8AAA== - - - dbo - - \ No newline at end of file diff --git a/Sevomin.Models/Migrations/201503091139500_Init.resx b/Sevomin.Models/Migrations/201503091139500_Init.resx deleted file mode 100644 index 0fe6998..0000000 --- a/Sevomin.Models/Migrations/201503091139500_Init.resx +++ /dev/null @@ -1,126 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 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/Migrations/201503091139500_Init.Designer.cs b/Sevomin.Models/Migrations/201503101336488_Init.Designer.cs similarity index 93% rename from Sevomin.Models/Migrations/201503091139500_Init.Designer.cs rename to Sevomin.Models/Migrations/201503101336488_Init.Designer.cs index 68e2492..01f3dc8 100644 --- a/Sevomin.Models/Migrations/201503091139500_Init.Designer.cs +++ b/Sevomin.Models/Migrations/201503101336488_Init.Designer.cs @@ -13,7 +13,7 @@ namespace Sevomin.Models.Migrations string IMigrationMetadata.Id { - get { return "201503091139500_Init"; } + get { return "201503101336488_Init"; } } string IMigrationMetadata.Source diff --git a/Sevomin.Models/Migrations/201503091139500_Init.cs b/Sevomin.Models/Migrations/201503101336488_Init.cs similarity index 95% rename from Sevomin.Models/Migrations/201503091139500_Init.cs rename to Sevomin.Models/Migrations/201503101336488_Init.cs index 312aeec..b3f68dc 100644 --- a/Sevomin.Models/Migrations/201503091139500_Init.cs +++ b/Sevomin.Models/Migrations/201503101336488_Init.cs @@ -7,6 +7,21 @@ namespace Sevomin.Models.Migrations { public override void Up() { + CreateTable( + "dbo.Ads", + c => new + { + Id = c.Long(nullable: false, identity: true), + Title = c.String(), + Description = c.String(), + Duration = c.Int(nullable: false), + ClickCount = c.Long(nullable: false), + Link = c.String(), + CreatedDate = c.DateTime(nullable: false), + Active = c.Boolean(nullable: false), + }) + .PrimaryKey(t => t.Id); + CreateTable( "dbo.DovominJobs", c => new @@ -263,6 +278,7 @@ namespace Sevomin.Models.Migrations DropTable("dbo.AspNetUserClaims"); DropTable("dbo.AspNetUsers"); DropTable("dbo.DovominJobs"); + DropTable("dbo.Ads"); } } } diff --git a/Sevomin.Models/Migrations/201503101336488_Init.resx b/Sevomin.Models/Migrations/201503101336488_Init.resx new file mode 100644 index 0000000..825d1b0 --- /dev/null +++ b/Sevomin.Models/Migrations/201503101336488_Init.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/Repositories/AdRepository.cs b/Sevomin.Models/Repositories/AdRepository.cs new file mode 100644 index 0000000..cb196d0 --- /dev/null +++ b/Sevomin.Models/Repositories/AdRepository.cs @@ -0,0 +1,74 @@ +using System.Linq; + +namespace Sevomin.Models.Repositories +{ + public class AdRepository : IAdRepository + { + #region Singleton + private static AdRepository member; + private static object locker = new object(); + + private AdRepository() + { + } + + static AdRepository() + { + lock (locker) + { + member = new AdRepository(); + } + } + public static AdRepository Current + { + get + { + return member; + } + } + #endregion + + #region AdRepository + + public IQueryable ListAll() + { + return SevominDbContext.Current.Ads; + } + + public void Add(Ad entity) + { + SevominDbContext.Current.Ads.Add(entity); + Save(); + } + + public void Delete(Ad entity) + { + SevominDbContext.Current.Ads.Remove(entity); + Save(); + } + + public Ad Find(long key) + { + return ListAll().SingleOrDefault(m => m.Id == key); + } + + public void Save() + { + SevominDbContext.Current.SaveChanges(); + } + + public void ChangeDays(Ad ad, int duration) + { + SevominDbContext.Current.Ads.Find(ad).Duration = duration; + Save(); + } + + public void ToggleActive(Ad ad) + { + SevominDbContext.Current.Ads.Find(ad).Active = !SevominDbContext.Current.Ads.Find(ad).Active; + Save(); + } + + #endregion + } +} diff --git a/Sevomin.Models/Repositories/IRepository.cs b/Sevomin.Models/Repositories/IRepository.cs index 7f6e707..e0408d5 100644 --- a/Sevomin.Models/Repositories/IRepository.cs +++ b/Sevomin.Models/Repositories/IRepository.cs @@ -28,4 +28,11 @@ namespace Sevomin.Models.Repositories IQueryable ListAll(); void AddParametersToDovomin(Dovomin dovomin); } + + public interface IAdRepository : IRepository + { + void ChangeDays(Ad ad, int duration); + void ToggleActive(Ad ad); + IQueryable ListAll(); + } } \ No newline at end of file diff --git a/Sevomin.Models/Sevomin.Models.csproj b/Sevomin.Models/Sevomin.Models.csproj index de48d3e..36f6966 100644 --- a/Sevomin.Models/Sevomin.Models.csproj +++ b/Sevomin.Models/Sevomin.Models.csproj @@ -83,6 +83,8 @@ + + @@ -91,11 +93,12 @@ - - - 201503091139500_Init.cs + + + 201503101336488_Init.cs + @@ -137,8 +140,8 @@ - - 201503091139500_Init.cs + + 201503101336488_Init.cs diff --git a/Sevomin.Models/SevominDbContext.cs b/Sevomin.Models/SevominDbContext.cs index 5c98655..6e2b0be 100644 --- a/Sevomin.Models/SevominDbContext.cs +++ b/Sevomin.Models/SevominDbContext.cs @@ -42,5 +42,6 @@ namespace Sevomin.Models public DbSet ParameterValues { get; set; } public DbSet Jobs { get; set; } public DbSet DovominJobs { get; set; } + public DbSet Ads { get; set; } } } diff --git a/Sevomin.WebFrontend.Controllers/AdsController.cs b/Sevomin.WebFrontend.Controllers/AdsController.cs new file mode 100644 index 0000000..d91a33f --- /dev/null +++ b/Sevomin.WebFrontend.Controllers/AdsController.cs @@ -0,0 +1,29 @@ +using System.Linq; +using System.Web.Mvc; +using Sevomin.Models.Repositories; + +namespace Sevomin.WebFrontend.Controllers +{ + class AdsController : Controller + { + IAdRepository _adRepository; + public AdsController() : this(AdRepository.Current) + { + } + + public AdsController(IAdRepository adRepository) + { + _adRepository = adRepository; + } + + public ActionResult Ads(int id) + { + var ad = _adRepository.ListAll().SingleOrDefault(m => m.Id == id); + if (ad == null) + { + return HttpNotFound(); + } + return Redirect(ad.Link); + } + } +} diff --git a/Sevomin.WebFrontend.Controllers/GodController.cs b/Sevomin.WebFrontend.Controllers/GodController.cs index 2a2fff1..785efd5 100644 --- a/Sevomin.WebFrontend.Controllers/GodController.cs +++ b/Sevomin.WebFrontend.Controllers/GodController.cs @@ -9,11 +9,23 @@ using System.Linq; using System.Text; using System.Threading.Tasks; using System.Web.Mvc; +using Sevomin.Models.Repositories; namespace Sevomin.WebFrontend.Controllers { public class GodController : AuthorizedController { + IAdRepository _adRepository; + + public GodController() : this(AdRepository.Current) + { + } + + public GodController(IAdRepository adRepository) + { + _adRepository = adRepository; + } + [Authorize(Roles = "God")] public ActionResult Index() { @@ -70,5 +82,36 @@ namespace Sevomin.WebFrontend.Controllers } } + [Authorize(Roles = "God")] + public ActionResult AdManagementPanel() + { + var model = _adRepository.ListAll(); + return View(model); + } + + [Authorize(Roles = "God")] + public ActionResult ChangeDays(long id, FormCollection form) + { + var ad = _adRepository.ListAll().SingleOrDefault(m => m.Id == id); + if (ad == null) + { + throw new NullReferenceException(); + } + _adRepository.ChangeDays(ad, Convert.ToInt32(form["ChangeDays"])); + return RedirectToAction("Index"); + } + + [Authorize(Roles = "God")] + public ActionResult ToggleAd(long id) + { + var ad = _adRepository.ListAll().SingleOrDefault(m => m.Id == id); + if (ad == null) + { + throw new NullReferenceException(); + } + _adRepository.ToggleActive(ad); + return RedirectToAction("Index"); + } + } } \ No newline at end of file diff --git a/Sevomin.WebFrontend.Controllers/Sevomin.WebFrontend.Controllers.csproj b/Sevomin.WebFrontend.Controllers/Sevomin.WebFrontend.Controllers.csproj index 523c884..f43a1da 100644 --- a/Sevomin.WebFrontend.Controllers/Sevomin.WebFrontend.Controllers.csproj +++ b/Sevomin.WebFrontend.Controllers/Sevomin.WebFrontend.Controllers.csproj @@ -85,6 +85,10 @@ False ..\packages\Microsoft.AspNet.Mvc.5.0.0\lib\net45\System.Web.Mvc.dll + + False + ..\packages\Microsoft.AspNet.WebPages.3.1.1\lib\net45\System.Web.WebPages.dll + @@ -93,6 +97,7 @@ + diff --git a/Sevomin.WebFrontend/Sevomin.WebFrontend.csproj b/Sevomin.WebFrontend/Sevomin.WebFrontend.csproj index d9e9017..183860e 100644 --- a/Sevomin.WebFrontend/Sevomin.WebFrontend.csproj +++ b/Sevomin.WebFrontend/Sevomin.WebFrontend.csproj @@ -339,6 +339,7 @@ + Web.config diff --git a/Sevomin.WebFrontend/Views/God/AdManagementPanel.cshtml b/Sevomin.WebFrontend/Views/God/AdManagementPanel.cshtml new file mode 100644 index 0000000..1015362 --- /dev/null +++ b/Sevomin.WebFrontend/Views/God/AdManagementPanel.cshtml @@ -0,0 +1,73 @@ +@model IQueryable + +@if (Model.Any()) +{ +
+
+
+ +
+
+
+
+ آگهی های فعال +
+
+
+ +
+
+
+ آگهی های غیر فعال +
+
+
+
    + @foreach (var ad in Model.Where(m => !m.Active)) + { +
  • +
    + @ad.Title +
    +
    + @ad.Description +
    + +
  • + } +
+
+
+
+
+
+
+} \ No newline at end of file diff --git a/Sevomin.WebFrontend/Views/God/Index.cshtml b/Sevomin.WebFrontend/Views/God/Index.cshtml index 4bfab14..23fe76f 100644 --- a/Sevomin.WebFrontend/Views/God/Index.cshtml +++ b/Sevomin.WebFrontend/Views/God/Index.cshtml @@ -55,22 +55,22 @@
- - - - - - - + + + + + + + - - - - - - - + + + + + + +
تعداد کل اعضاتعداد کارفرماهاتعداد متخصصینتعداد فرصت های شغلیتعداد اعلام آمادگی های فرصت های شغلی
تعداد کل اعضاتعداد کارفرماهاتعداد متخصصینتعداد فرصت های شغلیتعداد اعلام آمادگی های فرصت های شغلی
@Sevomin.Models.SevominDbContext.Current.Users.Count() (دو روز اخیر: @Sevomin.Models.SevominDbContext.Current.Users.ToList().Where(u => u.SignUpDate.Date > DateTime.Now.Date.AddDays(-2)).Count())@(Sevomin.Models.SevominDbContext.Current.Users.OfType().Count()) (دو روز اخیر: @(Sevomin.Models.SevominDbContext.Current.Users.OfType().ToList().Where(u => u.SignUpDate.Date > DateTime.Now.Date.AddDays(-2)).Count()))@(Sevomin.Models.SevominDbContext.Current.Users.OfType().Count()) (دو روز اخیر: @(Sevomin.Models.SevominDbContext.Current.Users.OfType().ToList().Where(u => u.SignUpDate.Date > DateTime.Now.Date.AddDays(-2)).Count()))@Sevomin.Models.SevominDbContext.Current.Jobs.Count()@Sevomin.Models.SevominDbContext.Current.DovominJobs.Count() (دو روز اخیر: @Sevomin.Models.SevominDbContext.Current.DovominJobs.ToList().Where(j => j.ApplyDate.Date > DateTime.Now.Date.AddDays(-2)).Count())
@Sevomin.Models.SevominDbContext.Current.Users.Count() (دو روز اخیر: @Sevomin.Models.SevominDbContext.Current.Users.ToList().Where(u => u.SignUpDate.Date > DateTime.Now.Date.AddDays(-2)).Count())@(Sevomin.Models.SevominDbContext.Current.Users.OfType().Count()) (دو روز اخیر: @(Sevomin.Models.SevominDbContext.Current.Users.OfType().ToList().Where(u => u.SignUpDate.Date > DateTime.Now.Date.AddDays(-2)).Count()))@(Sevomin.Models.SevominDbContext.Current.Users.OfType().Count()) (دو روز اخیر: @(Sevomin.Models.SevominDbContext.Current.Users.OfType().ToList().Where(u => u.SignUpDate.Date > DateTime.Now.Date.AddDays(-2)).Count()))@Sevomin.Models.SevominDbContext.Current.Jobs.Count()@Sevomin.Models.SevominDbContext.Current.DovominJobs.Count() (دو روز اخیر: @Sevomin.Models.SevominDbContext.Current.DovominJobs.ToList().Where(j => j.ApplyDate.Date > DateTime.Now.Date.AddDays(-2)).Count())
@@ -78,10 +78,43 @@
-
+
+
+
+
+
+ + +
+
+ + +
+
+
+
+ + +
+
+
+
+ + +
+
+ +
+
+
+
@@ -98,25 +131,25 @@
- - - - - + + + + + - - - - - - + + + + + +
پارامترتوضیح اولینتوضیح دومین
پارامترتوضیح اولینتوضیح دومین
@param.Name -
@param.CommentAvalin
-
-
@param.CommentDovomin
-
- -
@param.Name +
@param.CommentAvalin
+
+
@param.CommentDovomin
+
+ +
@@ -131,60 +164,65 @@

اعلام آمادگی های فرصت های شغلی

@foreach (Sevomin.Models.Avalin avalin in Sevomin.Models.SevominDbContext.Current.Users.OfType().ToList() - .Where(a => a.Jobs != null && a.Jobs.Any(j => j.ExpireDate.Date >= DateTime.Now.Date)) - .OrderByDescending(a => a.Jobs.OrderByDescending(j => j.CreateDate).First().CreateDate) - .ToList()) + .Where(a => a.Jobs != null && a.Jobs.Any(j => j.ExpireDate.Date >= DateTime.Now.Date)) + .OrderByDescending(a => a.Jobs.OrderByDescending(j => j.CreateDate).First().CreateDate) + .ToList()) + { + if (avalin.Jobs.Count == 0) + { + continue; + } +
+ + @foreach (var job in avalin.Jobs.OrderByDescending(a => a.CreateDate)) { - if (avalin.Jobs.Count == 0) - { continue; } -
- - @foreach (var job in avalin.Jobs.OrderByDescending(a => a.CreateDate)) + if (job.Applications.Count == 0) + { + continue; + } +
+
+

@((new Sevomin.Models.JobMiniViewModel(job)).JobSummary) @Html.ActionLink("مشاهده آگهی", "SingleJob", "Job", new {jobId = job.Id}, null)

+
+ اطلاعات فرد پاسخگو به این آگهی: (@(string.IsNullOrWhiteSpace(job.ContactPersonName) ? "نام وارد نشده" : job.ContactPersonName) + @((string.IsNullOrWhiteSpace(job.ContactPersonEMail) ? "ایمیل وارد نشده" : job.ContactPersonEMail)) + @((string.IsNullOrWhiteSpace(job.ContactPersonPhone) ? "تلفن وارد نشده" : job.ContactPersonPhone))) +
+
+ @foreach (var application in job.Applications.OrderByDescending(a => a.ApplyDate)) { - if (job.Applications.Count == 0) - { continue; } -
-
-

@((new Sevomin.Models.JobMiniViewModel(job)).JobSummary) @Html.ActionLink("مشاهده آگهی", "SingleJob", "Job", new { jobId = job.Id }, null)

-
- اطلاعات فرد پاسخگو به این آگهی: (@(string.IsNullOrWhiteSpace(job.ContactPersonName) ? "نام وارد نشده" : job.ContactPersonName) - @((string.IsNullOrWhiteSpace(job.ContactPersonEMail) ? "ایمیل وارد نشده" : job.ContactPersonEMail)) - @((string.IsNullOrWhiteSpace(job.ContactPersonPhone) ? "تلفن وارد نشده" : job.ContactPersonPhone))) -
-
- @foreach (var application in job.Applications.OrderByDescending(a => a.ApplyDate)) + Sevomin.Models.JobApplicationViewModel apply = new Sevomin.Models.JobApplicationViewModel(application); +
+ از طرف @apply.DovominDisplayName + @if (!string.IsNullOrWhiteSpace(apply.CoverLetter)) { - Sevomin.Models.JobApplicationViewModel apply = new Sevomin.Models.JobApplicationViewModel(application); -
- از طرف @apply.DovominDisplayName - @if (!string.IsNullOrWhiteSpace(apply.CoverLetter)) - { -
پیغام متخصص:
-
@apply.CoverLetter
- } - @if (apply.MinimumRequirement) - { -

این متخصص تمامی مهارت های الزامی برای این فرصت شغلی را دارد. همچنین میزان مطابقت ایشان با این فرصت شغلی، @apply.Affinity درصد است.

- } - else - { -

این متخصص برخی مهارت های الزامی برای این فرصت شغلی را ندارد. همچنین میزان مطابقت ایشان با این فرصت شغلی، @apply.Affinity درصد است.

- } -
+
پیغام متخصص:
+
@apply.CoverLetter
} -
+ @if (apply.MinimumRequirement) + { +

این متخصص تمامی مهارت های الزامی برای این فرصت شغلی را دارد. همچنین میزان مطابقت ایشان با این فرصت شغلی، @apply.Affinity درصد است.

+ } + else + { +

این متخصص برخی مهارت های الزامی برای این فرصت شغلی را ندارد. همچنین میزان مطابقت ایشان با این فرصت شغلی، @apply.Affinity درصد است.

+ } +
} -
+
} +
+ }
+ @Html.Action("AdManagementPanel") @@ -200,7 +238,9 @@ $('button.parameter-updater').bind('click', function (e) { e.preventDefault(); var vals = $('div[data-param-id="' + $(this).data('param-id') + '"]'); - var commentAvalin; var commentDovomin; var paramId = $(this).data('param-id'); + var commentAvalin; + var commentDovomin; + var paramId = $(this).data('param-id'); $.each(vals, function (index, obj) { if ($(obj).data('id') == "CommentAvalin") commentAvalin = $(obj).text();