From ec42e3138040f503935e4105a9ac3f7e4990d08c Mon Sep 17 00:00:00 2001 From: Milad Karbasizadeh Date: Mon, 7 Apr 2014 16:47:57 +0430 Subject: [PATCH] final jobs --- Sevomin.Models/DovominJobViewModel.cs | 3 +- .../Helpers/SevominUserValidator.cs | 9 ++++- Sevomin.Models/Sevomin.Models.csproj | 7 ++++ Sevomin.Models/SevominDbContext.cs | 1 + Sevomin.Models/packages.config | 2 + Sevomin.Tests/app.config | 4 ++ .../AccountController.cs | 9 +++-- Sevomin.WebFrontend.Controllers/App.config | 8 ++++ .../BaseController.cs | 17 ++++++++ .../HomeController.cs | 8 ++-- .../JobController.cs | 21 +++++++++- .../Sevomin.WebFrontend.Controllers.csproj | 6 +++ .../packages.config | 2 + Sevomin.WebFrontend/App_Start/RouteConfig.cs | 6 +++ Sevomin.WebFrontend/Global.asax.cs | 31 +++++++++++++- .../Sevomin.WebFrontend.csproj | 9 +++++ .../Views/Account/ProfileDovomin.cshtml | 27 +++++++++++++ .../Views/Home/AvalinIndex.cshtml | 6 +++ .../Views/Job/JobEditor.cshtml | 34 ++++++++++++++++ Sevomin.WebFrontend/Views/Shared/Intro.cshtml | 1 + .../Views/Shared/IntroSignup.cshtml | 13 +++--- .../Views/Shared/_Layout.cshtml | 1 + Sevomin.WebFrontend/Web.config | 40 ++++++++++++------- Sevomin.WebFrontend/packages.config | 1 + 24 files changed, 234 insertions(+), 32 deletions(-) diff --git a/Sevomin.Models/DovominJobViewModel.cs b/Sevomin.Models/DovominJobViewModel.cs index 2b3b981..bc4f30a 100644 --- a/Sevomin.Models/DovominJobViewModel.cs +++ b/Sevomin.Models/DovominJobViewModel.cs @@ -30,8 +30,7 @@ namespace Sevomin.Models ApplyDate = DateAssist.ValidateAndSetToMiladi(value) ?? DateTime.MinValue; } } - - [Required(ErrorMessage = "ورود {0} الزامی است.")] + [DisplayName("یادداشت برای کارفرما")] public string CoverLetter { get; set; } diff --git a/Sevomin.Models/Helpers/SevominUserValidator.cs b/Sevomin.Models/Helpers/SevominUserValidator.cs index a986260..728f35b 100644 --- a/Sevomin.Models/Helpers/SevominUserValidator.cs +++ b/Sevomin.Models/Helpers/SevominUserValidator.cs @@ -1,4 +1,6 @@ -using Microsoft.AspNet.Identity; +using MailChimp; +using MailChimp.Lists; +using Microsoft.AspNet.Identity; using Microsoft.AspNet.Identity.EntityFramework; using System.Collections.Generic; using System.Linq; @@ -24,6 +26,11 @@ namespace Sevomin.Models.Helpers else if (await (manager.FindByNameAsync(item.UserName)) != null) errors.Add("ایمیل وارد شده قبلا در سایت استفاده شده است. کلمه عبور خود را فراموش کرده اید؟"); + MailChimpManager mc = new MailChimpManager("c754265c9000101952cc0d6b129c7505-us6"); + MembersResult members = mc.GetAllMembersForList("ed06303ad4", "subscribed"); + if (!members.Data.Any(m => m.Email == item.UserName)) + errors.Add("شما در خبرنامه سومین عضو نیستید. به زودی عضویت برای عموم باز می شود، لطفا کمی شکیبا باشید."); + return errors.Any() ? IdentityResult.Failed(errors.ToArray()) : IdentityResult.Success; diff --git a/Sevomin.Models/Sevomin.Models.csproj b/Sevomin.Models/Sevomin.Models.csproj index 11ea09c..432821e 100644 --- a/Sevomin.Models/Sevomin.Models.csproj +++ b/Sevomin.Models/Sevomin.Models.csproj @@ -38,6 +38,9 @@ False ..\packages\EntityFramework.6.1.0\lib\net45\EntityFramework.SqlServer.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 @@ -46,6 +49,9 @@ False ..\packages\Microsoft.AspNet.Identity.EntityFramework.2.0.0\lib\net45\Microsoft.AspNet.Identity.EntityFramework.dll + + ..\packages\ServiceStack.Text.3.9.71\lib\net35\ServiceStack.Text.dll + @@ -77,6 +83,7 @@ + diff --git a/Sevomin.Models/SevominDbContext.cs b/Sevomin.Models/SevominDbContext.cs index 64eacc7..e2fe75a 100644 --- a/Sevomin.Models/SevominDbContext.cs +++ b/Sevomin.Models/SevominDbContext.cs @@ -42,6 +42,7 @@ namespace Sevomin.Models public DbSet Parameters { get; set; } public DbSet ParameterValues { get; set; } public DbSet Jobs { get; set; } + public DbSet DovominJobs { get; set; } } } diff --git a/Sevomin.Models/packages.config b/Sevomin.Models/packages.config index 255d553..1e9ae2a 100644 --- a/Sevomin.Models/packages.config +++ b/Sevomin.Models/packages.config @@ -1,6 +1,8 @@  + + \ No newline at end of file diff --git a/Sevomin.Tests/app.config b/Sevomin.Tests/app.config index ddbdbbe..0568159 100644 --- a/Sevomin.Tests/app.config +++ b/Sevomin.Tests/app.config @@ -26,6 +26,10 @@ + + + + diff --git a/Sevomin.WebFrontend.Controllers/AccountController.cs b/Sevomin.WebFrontend.Controllers/AccountController.cs index 5fb9fda..558eb8d 100644 --- a/Sevomin.WebFrontend.Controllers/AccountController.cs +++ b/Sevomin.WebFrontend.Controllers/AccountController.cs @@ -243,10 +243,13 @@ namespace Sevomin.WebFrontend.Controllers } else if (User.IsInRole("Avalin")) { - if (!(user as Avalin).Jobs.Any(j => j.Applications.Any(c => c.DovominId == userId))) - { + Avalin avalin = (await UserManager.FindByNameAsync(User.Identity.Name)) as Avalin; + bool showIt = avalin.Jobs.Any(j => { + bool ret = j.Applications.Any(c => c.DovominId == userId); + return ret; + }); + if (!showIt) return HttpNotFound(); - } } return View(new DovominViewModel(user as Dovomin)); diff --git a/Sevomin.WebFrontend.Controllers/App.config b/Sevomin.WebFrontend.Controllers/App.config index 1e94b1b..6cc7a0a 100644 --- a/Sevomin.WebFrontend.Controllers/App.config +++ b/Sevomin.WebFrontend.Controllers/App.config @@ -14,4 +14,12 @@ + + + + + + + + \ No newline at end of file diff --git a/Sevomin.WebFrontend.Controllers/BaseController.cs b/Sevomin.WebFrontend.Controllers/BaseController.cs index 6b34ef9..82183e3 100644 --- a/Sevomin.WebFrontend.Controllers/BaseController.cs +++ b/Sevomin.WebFrontend.Controllers/BaseController.cs @@ -4,5 +4,22 @@ namespace Sevomin.WebFrontend.Controllers { public class BaseController : Controller { + protected override void OnException(ExceptionContext filterContext) + { + filterContext.ExceptionHandled = true; + var e = new Elmah.Error(filterContext.Exception); + + Elmah.ErrorLog.GetDefault(System.Web.HttpContext.Current).Log(e); + + // Redirect + filterContext.Result = View("Error"); + base.OnException(filterContext); + } + + public ActionResult Error404() + { + return View(); + } + } } diff --git a/Sevomin.WebFrontend.Controllers/HomeController.cs b/Sevomin.WebFrontend.Controllers/HomeController.cs index 958e01a..5c2d086 100644 --- a/Sevomin.WebFrontend.Controllers/HomeController.cs +++ b/Sevomin.WebFrontend.Controllers/HomeController.cs @@ -27,10 +27,10 @@ namespace Sevomin.WebFrontend.Controllers else { User user = await UserManager.FindByNameAsync(User.Identity.Name); - if(user is Avalin) - return View("AvalinIndex"); - else - return View("DovominIndex"); + if (user is Avalin) + return View("AvalinIndex"); + else + return View("DovominIndex"); } } diff --git a/Sevomin.WebFrontend.Controllers/JobController.cs b/Sevomin.WebFrontend.Controllers/JobController.cs index d8b53aa..1649513 100644 --- a/Sevomin.WebFrontend.Controllers/JobController.cs +++ b/Sevomin.WebFrontend.Controllers/JobController.cs @@ -148,7 +148,7 @@ namespace Sevomin.WebFrontend.Controllers { return PartialView("JobList", _jobRepository.ListAll() .Where(d => d.ExpireDate >= DateTime.Now) - .OrderByDescending(d => d.ExpireDate) + .OrderByDescending(d => d.CreateDate) .Take(count) .ToList() .Select(j => new JobMiniViewModel(j)).ToList()); @@ -244,7 +244,24 @@ namespace Sevomin.WebFrontend.Controllers .ToList(); return PartialView("JobList", retList); - } + } + + [Authorize(Roles = "Avalin")] + public ActionResult JobRequests() + { + Avalin user = UserManager.FindByName(User.Identity.Name) as Avalin; + + if (user == null) + return HttpNotFound(); + + var applications = SevominDbContext.Current.DovominJobs + .Where(a => a.Job.AvalinId == user.Id) + .OrderByDescending(a => a.ApplyDate) + .ToList() + .Select(a => new JobApplicationViewModel(a)); + + return PartialView(applications); + } private static void UpdateFields(string JalaliExpireDate, string ContactPersonName, string ContactPersonPhone, string ContactPersonEMail, bool IsFullTime, bool ShowCompanyName, string Description, bool ShowCompanyLogo, ResumeTypes ResumeType, FormCollection form, Job job) { diff --git a/Sevomin.WebFrontend.Controllers/Sevomin.WebFrontend.Controllers.csproj b/Sevomin.WebFrontend.Controllers/Sevomin.WebFrontend.Controllers.csproj index 48c6466..575fd6f 100644 --- a/Sevomin.WebFrontend.Controllers/Sevomin.WebFrontend.Controllers.csproj +++ b/Sevomin.WebFrontend.Controllers/Sevomin.WebFrontend.Controllers.csproj @@ -30,6 +30,9 @@ 4 + + ..\packages\elmah.corelibrary.1.2.2\lib\Elmah.dll + ..\packages\EntityFramework.6.1.0\lib\net45\EntityFramework.dll @@ -105,6 +108,9 @@ Sevomin.Models + + + - + @@ -30,10 +24,28 @@ + + + + + + + + + + + + + + + @@ -66,7 +78,7 @@ - + diff --git a/Sevomin.WebFrontend/packages.config b/Sevomin.WebFrontend/packages.config index 15bc6cb..7acf250 100644 --- a/Sevomin.WebFrontend/packages.config +++ b/Sevomin.WebFrontend/packages.config @@ -1,6 +1,7 @@  +