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 @@
+