Browse Source

final jobs

confirmation-email
Milad Karbasizadeh 11 years ago
parent
commit
ec42e31380
24 changed files with 234 additions and 32 deletions
  1. +1
    -2
      Sevomin.Models/DovominJobViewModel.cs
  2. +8
    -1
      Sevomin.Models/Helpers/SevominUserValidator.cs
  3. +7
    -0
      Sevomin.Models/Sevomin.Models.csproj
  4. +1
    -0
      Sevomin.Models/SevominDbContext.cs
  5. +2
    -0
      Sevomin.Models/packages.config
  6. +4
    -0
      Sevomin.Tests/app.config
  7. +6
    -3
      Sevomin.WebFrontend.Controllers/AccountController.cs
  8. +8
    -0
      Sevomin.WebFrontend.Controllers/App.config
  9. +17
    -0
      Sevomin.WebFrontend.Controllers/BaseController.cs
  10. +4
    -4
      Sevomin.WebFrontend.Controllers/HomeController.cs
  11. +19
    -2
      Sevomin.WebFrontend.Controllers/JobController.cs
  12. +6
    -0
      Sevomin.WebFrontend.Controllers/Sevomin.WebFrontend.Controllers.csproj
  13. +2
    -0
      Sevomin.WebFrontend.Controllers/packages.config
  14. +6
    -0
      Sevomin.WebFrontend/App_Start/RouteConfig.cs
  15. +30
    -1
      Sevomin.WebFrontend/Global.asax.cs
  16. +9
    -0
      Sevomin.WebFrontend/Sevomin.WebFrontend.csproj
  17. +27
    -0
      Sevomin.WebFrontend/Views/Account/ProfileDovomin.cshtml
  18. +6
    -0
      Sevomin.WebFrontend/Views/Home/AvalinIndex.cshtml
  19. +34
    -0
      Sevomin.WebFrontend/Views/Job/JobEditor.cshtml
  20. +1
    -0
      Sevomin.WebFrontend/Views/Shared/Intro.cshtml
  21. +8
    -5
      Sevomin.WebFrontend/Views/Shared/IntroSignup.cshtml
  22. +1
    -0
      Sevomin.WebFrontend/Views/Shared/_Layout.cshtml
  23. +26
    -14
      Sevomin.WebFrontend/Web.config
  24. +1
    -0
      Sevomin.WebFrontend/packages.config

+ 1
- 2
Sevomin.Models/DovominJobViewModel.cs View File

@ -30,8 +30,7 @@ namespace Sevomin.Models
ApplyDate = DateAssist.ValidateAndSetToMiladi(value) ?? DateTime.MinValue; ApplyDate = DateAssist.ValidateAndSetToMiladi(value) ?? DateTime.MinValue;
} }
} }
[Required(ErrorMessage = "ورود {0} الزامی است.")]
[DisplayName("یادداشت برای کارفرما")] [DisplayName("یادداشت برای کارفرما")]
public string CoverLetter { get; set; } public string CoverLetter { get; set; }


+ 8
- 1
Sevomin.Models/Helpers/SevominUserValidator.cs View File

@ -1,4 +1,6 @@
using Microsoft.AspNet.Identity;
using MailChimp;
using MailChimp.Lists;
using Microsoft.AspNet.Identity;
using Microsoft.AspNet.Identity.EntityFramework; using Microsoft.AspNet.Identity.EntityFramework;
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq; using System.Linq;
@ -24,6 +26,11 @@ namespace Sevomin.Models.Helpers
else if (await (manager.FindByNameAsync(item.UserName)) != null) else if (await (manager.FindByNameAsync(item.UserName)) != null)
errors.Add("ایمیل وارد شده قبلا در سایت استفاده شده است. کلمه عبور خود را فراموش کرده اید؟"); 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() ? return errors.Any() ?
IdentityResult.Failed(errors.ToArray()) IdentityResult.Failed(errors.ToArray())
: IdentityResult.Success; : IdentityResult.Success;


+ 7
- 0
Sevomin.Models/Sevomin.Models.csproj View File

@ -38,6 +38,9 @@
<SpecificVersion>False</SpecificVersion> <SpecificVersion>False</SpecificVersion>
<HintPath>..\packages\EntityFramework.6.1.0\lib\net45\EntityFramework.SqlServer.dll</HintPath> <HintPath>..\packages\EntityFramework.6.1.0\lib\net45\EntityFramework.SqlServer.dll</HintPath>
</Reference> </Reference>
<Reference Include="MailChimp">
<HintPath>..\packages\MailChimp.NET.1.1.0.2\lib\net40\MailChimp.dll</HintPath>
</Reference>
<Reference Include="Microsoft.AspNet.Identity.Core, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL"> <Reference Include="Microsoft.AspNet.Identity.Core, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion> <SpecificVersion>False</SpecificVersion>
<HintPath>..\packages\Microsoft.AspNet.Identity.Core.2.0.0\lib\net45\Microsoft.AspNet.Identity.Core.dll</HintPath> <HintPath>..\packages\Microsoft.AspNet.Identity.Core.2.0.0\lib\net45\Microsoft.AspNet.Identity.Core.dll</HintPath>
@ -46,6 +49,9 @@
<SpecificVersion>False</SpecificVersion> <SpecificVersion>False</SpecificVersion>
<HintPath>..\packages\Microsoft.AspNet.Identity.EntityFramework.2.0.0\lib\net45\Microsoft.AspNet.Identity.EntityFramework.dll</HintPath> <HintPath>..\packages\Microsoft.AspNet.Identity.EntityFramework.2.0.0\lib\net45\Microsoft.AspNet.Identity.EntityFramework.dll</HintPath>
</Reference> </Reference>
<Reference Include="ServiceStack.Text">
<HintPath>..\packages\ServiceStack.Text.3.9.71\lib\net35\ServiceStack.Text.dll</HintPath>
</Reference>
<Reference Include="System" /> <Reference Include="System" />
<Reference Include="System.ComponentModel.DataAnnotations" /> <Reference Include="System.ComponentModel.DataAnnotations" />
<Reference Include="System.Core" /> <Reference Include="System.Core" />
@ -77,6 +83,7 @@
<Compile Include="Helpers\SevominUserStore.cs" /> <Compile Include="Helpers\SevominUserStore.cs" />
<Compile Include="Helpers\SevominUserValidator.cs" /> <Compile Include="Helpers\SevominUserValidator.cs" />
<Compile Include="Job.cs" /> <Compile Include="Job.cs" />
<Compile Include="JobApplicationViewModel.cs" />
<Compile Include="JobMiniViewModel.cs" /> <Compile Include="JobMiniViewModel.cs" />
<Compile Include="JobParameter.cs" /> <Compile Include="JobParameter.cs" />
<Compile Include="JobParameterViewModel.cs" /> <Compile Include="JobParameterViewModel.cs" />


+ 1
- 0
Sevomin.Models/SevominDbContext.cs View File

@ -42,6 +42,7 @@ namespace Sevomin.Models
public DbSet<Parameter> Parameters { get; set; } public DbSet<Parameter> Parameters { get; set; }
public DbSet<ParameterValue> ParameterValues { get; set; } public DbSet<ParameterValue> ParameterValues { get; set; }
public DbSet<Job> Jobs { get; set; } public DbSet<Job> Jobs { get; set; }
public DbSet<DovominJob> DovominJobs { get; set; }
} }
} }

+ 2
- 0
Sevomin.Models/packages.config View File

@ -1,6 +1,8 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<packages> <packages>
<package id="EntityFramework" version="6.1.0" targetFramework="net451" /> <package id="EntityFramework" version="6.1.0" targetFramework="net451" />
<package id="MailChimp.NET" version="1.1.0.2" targetFramework="net451" />
<package id="Microsoft.AspNet.Identity.Core" version="2.0.0" targetFramework="net451" /> <package id="Microsoft.AspNet.Identity.Core" version="2.0.0" targetFramework="net451" />
<package id="Microsoft.AspNet.Identity.EntityFramework" version="2.0.0" targetFramework="net451" /> <package id="Microsoft.AspNet.Identity.EntityFramework" version="2.0.0" targetFramework="net451" />
<package id="ServiceStack.Text" version="3.9.71" targetFramework="net451" />
</packages> </packages>

+ 4
- 0
Sevomin.Tests/app.config View File

@ -26,6 +26,10 @@
<assemblyIdentity name="Microsoft.Owin.Security.Cookies" publicKeyToken="31bf3856ad364e35" culture="neutral" /> <assemblyIdentity name="Microsoft.Owin.Security.Cookies" publicKeyToken="31bf3856ad364e35" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-2.0.2.0" newVersion="2.0.2.0" /> <bindingRedirect oldVersion="0.0.0.0-2.0.2.0" newVersion="2.0.2.0" />
</dependentAssembly> </dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-6.0.0.0" newVersion="6.0.0.0" />
</dependentAssembly>
</assemblyBinding> </assemblyBinding>
</runtime> </runtime>
<entityFramework> <entityFramework>


+ 6
- 3
Sevomin.WebFrontend.Controllers/AccountController.cs View File

@ -243,10 +243,13 @@ namespace Sevomin.WebFrontend.Controllers
} }
else if (User.IsInRole("Avalin")) 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 HttpNotFound();
}
} }
return View(new DovominViewModel(user as Dovomin)); return View(new DovominViewModel(user as Dovomin));


+ 8
- 0
Sevomin.WebFrontend.Controllers/App.config View File

@ -14,4 +14,12 @@
<provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" /> <provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
</providers> </providers>
</entityFramework> </entityFramework>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-6.0.0.0" newVersion="6.0.0.0" />
</dependentAssembly>
</assemblyBinding>
</runtime>
</configuration> </configuration>

+ 17
- 0
Sevomin.WebFrontend.Controllers/BaseController.cs View File

@ -4,5 +4,22 @@ namespace Sevomin.WebFrontend.Controllers
{ {
public class BaseController : Controller 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();
}
} }
} }

+ 4
- 4
Sevomin.WebFrontend.Controllers/HomeController.cs View File

@ -27,10 +27,10 @@ namespace Sevomin.WebFrontend.Controllers
else else
{ {
User user = await UserManager.FindByNameAsync(User.Identity.Name); 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");
} }
} }


+ 19
- 2
Sevomin.WebFrontend.Controllers/JobController.cs View File

@ -148,7 +148,7 @@ namespace Sevomin.WebFrontend.Controllers
{ {
return PartialView("JobList", _jobRepository.ListAll() return PartialView("JobList", _jobRepository.ListAll()
.Where(d => d.ExpireDate >= DateTime.Now) .Where(d => d.ExpireDate >= DateTime.Now)
.OrderByDescending(d => d.ExpireDate)
.OrderByDescending(d => d.CreateDate)
.Take(count) .Take(count)
.ToList() .ToList()
.Select(j => new JobMiniViewModel(j)).ToList()); .Select(j => new JobMiniViewModel(j)).ToList());
@ -244,7 +244,24 @@ namespace Sevomin.WebFrontend.Controllers
.ToList(); .ToList();
return PartialView("JobList", retList); 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) 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)
{ {


+ 6
- 0
Sevomin.WebFrontend.Controllers/Sevomin.WebFrontend.Controllers.csproj View File

@ -30,6 +30,9 @@
<WarningLevel>4</WarningLevel> <WarningLevel>4</WarningLevel>
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>
<Reference Include="Elmah">
<HintPath>..\packages\elmah.corelibrary.1.2.2\lib\Elmah.dll</HintPath>
</Reference>
<Reference Include="EntityFramework"> <Reference Include="EntityFramework">
<HintPath>..\packages\EntityFramework.6.1.0\lib\net45\EntityFramework.dll</HintPath> <HintPath>..\packages\EntityFramework.6.1.0\lib\net45\EntityFramework.dll</HintPath>
</Reference> </Reference>
@ -105,6 +108,9 @@
<Name>Sevomin.Models</Name> <Name>Sevomin.Models</Name>
</ProjectReference> </ProjectReference>
</ItemGroup> </ItemGroup>
<ItemGroup>
<Content Include="App_Readme\Elmah.txt" />
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" /> <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<!-- To modify your build process, add your task inside one of the targets below and uncomment it. <!-- To modify your build process, add your task inside one of the targets below and uncomment it.
Other similar extension points exist, see Microsoft.Common.targets. Other similar extension points exist, see Microsoft.Common.targets.


+ 2
- 0
Sevomin.WebFrontend.Controllers/packages.config View File

@ -1,5 +1,7 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<packages> <packages>
<package id="elmah" version="1.2.2" targetFramework="net451" />
<package id="elmah.corelibrary" version="1.2.2" targetFramework="net451" />
<package id="EntityFramework" version="6.1.0" targetFramework="net451" /> <package id="EntityFramework" version="6.1.0" targetFramework="net451" />
<package id="Microsoft.AspNet.Identity.Core" version="2.0.0" targetFramework="net451" /> <package id="Microsoft.AspNet.Identity.Core" version="2.0.0" targetFramework="net451" />
<package id="Microsoft.AspNet.Identity.EntityFramework" version="2.0.0" targetFramework="net451" /> <package id="Microsoft.AspNet.Identity.EntityFramework" version="2.0.0" targetFramework="net451" />


+ 6
- 0
Sevomin.WebFrontend/App_Start/RouteConfig.cs View File

@ -9,6 +9,12 @@ namespace Sevomin.WebFrontend
{ {
routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
name: "404",
url: "404",
defaults: new { controller = "Base", action = "Error404" }
);
#region For Downloads #region For Downloads
routes.MapRoute( routes.MapRoute(
name: "EnglishResumeGrabber", name: "EnglishResumeGrabber",


+ 30
- 1
Sevomin.WebFrontend/Global.asax.cs View File

@ -1,4 +1,7 @@
using Sevomin.Models;
using Elmah;
using Sevomin.Models;
using Sevomin.WebFrontend.Controllers;
using System.Web;
using System.Web.Mvc; using System.Web.Mvc;
using System.Web.Routing; using System.Web.Routing;
@ -11,5 +14,31 @@ namespace Sevomin.WebFrontend
AreaRegistration.RegisterAllAreas(); AreaRegistration.RegisterAllAreas();
RouteConfig.RegisterRoutes(RouteTable.Routes); RouteConfig.RegisterRoutes(RouteTable.Routes);
} }
void ErrorLog_Filtering(object sender, ExceptionFilterEventArgs e)
{
if ((e.Exception.GetBaseException() is HttpException
&& ((HttpException)(e.Exception.GetBaseException())).GetHttpCode() == 404
&& e.Context is HttpContext)
|| ((HttpContext)e.Context).Request.Url.ToString().ToLower().Contains(@"favicon.ico".ToLower()))
{
e.Dismiss();
}
}
protected void Application_EndRequest()
{
if (Context.Response.StatusCode == 404)
{
Response.Clear();
var rd = new RouteData();
rd.Values["controller"] = "Base";
rd.Values["action"] = "Error404";
IController c = new BaseController();
c.Execute(new RequestContext(new HttpContextWrapper(Context), rd));
}
}
} }
} }

+ 9
- 0
Sevomin.WebFrontend/Sevomin.WebFrontend.csproj View File

@ -38,6 +38,9 @@
<WarningLevel>4</WarningLevel> <WarningLevel>4</WarningLevel>
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>
<Reference Include="Elmah">
<HintPath>..\packages\elmah.corelibrary.1.2.2\lib\Elmah.dll</HintPath>
</Reference>
<Reference Include="Microsoft.AspNet.Identity.Core, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL"> <Reference Include="Microsoft.AspNet.Identity.Core, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion> <SpecificVersion>False</SpecificVersion>
<HintPath>..\packages\Microsoft.AspNet.Identity.Core.2.0.0\lib\net45\Microsoft.AspNet.Identity.Core.dll</HintPath> <HintPath>..\packages\Microsoft.AspNet.Identity.Core.2.0.0\lib\net45\Microsoft.AspNet.Identity.Core.dll</HintPath>
@ -265,6 +268,11 @@
<Content Include="Views\Job\JobDigest.cshtml" /> <Content Include="Views\Job\JobDigest.cshtml" />
<Content Include="Views\Job\RecentJobs.cshtml" /> <Content Include="Views\Job\RecentJobs.cshtml" />
<Content Include="Views\Account\Dovomin.cshtml" /> <Content Include="Views\Account\Dovomin.cshtml" />
<Content Include="Views\Shared\Error.cshtml" />
<Content Include="Views\Shared\Error404.cshtml" />
<Content Include="Views\Job\MiniApplication.cshtml" />
<Content Include="Views\Job\JobRequests.cshtml" />
<Content Include="Views\Shared\GA.cshtml" />
<None Include="Web.Debug.config"> <None Include="Web.Debug.config">
<DependentUpon>Web.config</DependentUpon> <DependentUpon>Web.config</DependentUpon>
</None> </None>
@ -284,6 +292,7 @@
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<Folder Include="App_Data\company-logos\" /> <Folder Include="App_Data\company-logos\" />
<Folder Include="App_Data\errors\" />
<Folder Include="App_Data\resumes\" /> <Folder Include="App_Data\resumes\" />
</ItemGroup> </ItemGroup>
<PropertyGroup> <PropertyGroup>


+ 27
- 0
Sevomin.WebFrontend/Views/Account/ProfileDovomin.cshtml View File

@ -8,6 +8,33 @@
<div class="page-header rtl"> <div class="page-header rtl">
<h1>ویرایش پروفایل <small>@Model.DisplayName</small></h1> <h1>ویرایش پروفایل <small>@Model.DisplayName</small></h1>
</div> </div>
<div class="alert alert-info rtl">
<p>
<strong>متخصص گرامی،</strong>
<br />
در این صفحه می‌توانید رزومه خود را آپلود و مشخصات کلی را وارد کنید. تمام مشخصات اختیاری هستند و اگر مایل باشید می‌توانید مقداری در آن‌ها وارد نکنید. با این حال هرچه مشخصات کلی شما کامل‌تر باشد یافتن کار مناسب را ساده‌تر خواهد کرد.
</p>
<div id="learn-more" class="collapse">
<p>
این اطلاعات به سه شکل استفاده خواهند شد:
</p>
<ul>
<li>وقتی برای یک فرصت شغلی اعلام آمادگی کنید این اطلاعات در اختیار کارفرما قرار خواهد گرفت.
</li>
<li>کارفرمایان می‌توانند مستقل از آگهی استخدام پروفایل‌ها را مرور کنند و در صورتی که مشخصات کلی شما برایشان جالب باشد از شما دعوت کنند. بعد از این‌که به دعوت آن‌ها پاسخ مثبت بدهید رزومه شما در اختیارشان قرار خواهد گرفت. معمولا کارفرمایانی که عجله زیادی در یافتن نیرو دارند یا قادر به تعریف دقیق نیاز خود نیستند از این گزینه استفاده می‌کنند.
</li>
<li>
اگر مایل باشید ما نیز می‌توانید بعد از ثبت هر آگهی استخدام جدید مشخصات کلی شما را با مشخصات تعریف شده از سوی کارفرما مقایسه کنیم و در صورتی که مطابقت کافی وجود داشت به شما اطلاع دهیم تا در صورت تمایل اعلام آمادگی کنید. بله، ما قصد داریم یافتن کار مناسب را تا جای ممکن برای شما ساده کنیم.
</li>
</ul>
</div>
<button type="button" class="btn btn-danger btn-xs pull-left" data-toggle="collapse" data-target="#learn-more">
اطلاعات بیشتر
</button>
<div class="clearfix"></div>
</div>
@using (Html.BeginForm("ProfileDovomin", "Account", FormMethod.Post, new { role = "form", @class = "assess-inputs", enctype = "multipart/form-data" })) @using (Html.BeginForm("ProfileDovomin", "Account", FormMethod.Post, new { role = "form", @class = "assess-inputs", enctype = "multipart/form-data" }))
{ {
<div class="row" style="margin-bottom: 20px"> <div class="row" style="margin-bottom: 20px">


+ 6
- 0
Sevomin.WebFrontend/Views/Home/AvalinIndex.cshtml View File

@ -17,4 +17,10 @@
<h3 class="rtl">آگهی های شما</h3> <h3 class="rtl">آگهی های شما</h3>
@Html.Action("MyJobs", "Job") @Html.Action("MyJobs", "Job")
</div> </div>
<div class="col-md-6">
<h3 class="rtl">
درخواست های وارده از متخصصین
</h3>
@Html.Action("JobRequests", "Job")
</div>
</div> </div>

+ 34
- 0
Sevomin.WebFrontend/Views/Job/JobEditor.cshtml View File

@ -1,5 +1,39 @@
@model Sevomin.Models.JobViewModel @model Sevomin.Models.JobViewModel
<div class="alert alert-info rtl">
<p>
<strong>کارفرمای گرامی،</strong>
<br />
می‌توانید فرصت کاری مد نظر خود را به طور کامل در این صفحه تکمیل کنید. هیچکدام از فیلدها اجباری نیستند و می‌توانید آن‌ها را خالی بگذارید که نشان‌دهنده این است که محتوای آن بخش برای موقعیت شغل مد نظر شما اهمیتی ندارد. با این حال در نظر داشته باشید که:
</p>
<div id="learn-more" class="collapse">
<ul>
<li>اگر فرصت شغلی را با دقت کافی مشخص نکنید (به فیلدهای خیلی کمی مقدار دهید) تعداد رزومه‌هایی که دریافت خواهید کرد بی دلیل زیاد خواهند شد و باید زمان زیادی را صرف بررسی آن‌ها و حذف موارد نامناسب بکنید.
</li>
<li>اگر در ثبت مشخصات فرصت شغلی زیاد از حد سخت‌گیری کنید ممکن است تعدادی از افرادی که بالقوه برای نیاز شما مناسب هستند را از دست بدهید.
</li>
</ul>
<p>
بهترین نتیجه را با حفظ تعادل به دست خواهید آورد. مهم‌ترین عنصری که به حفظ این تعادل کمک می‌کند، استفاده از قابلیت موسکو (MoSCoW) در تعریف قابلیت‌های مد نظر شماست؛ یکی از تکنیک‌های رایج در مدیریت پروژه. در مقابل هر قابلیت کادر بازشویی قرار داد و می‌توانید بعد از مشخص کردن قابلیت یکی از اولویت‌های زیر را برای آن انتخاب کنید:
</p>
<ul>
<li>الزامی: اگر فرد آن قابلیت را نداشته باشد نمی‌تواند کار مد نظر شما را انجام دهید. به عنوان مثال اگر طبق قراردادی که با کارفرمای خود دارید ملزم هستید که فردی با مدرک PMP را برای این کار استخدام کنید، داشتن این مدرک «الزامی» خواهد بود.
</li>
<li>خیلی مهم: اگر قابلیت برای شما خیلی مهم است، ولی نبود آن کار را مختل نمی‌کند و صرفا لازم است که راه حل دیگری برای پر کردن آن خلل بیابید، این گزینه را انتخاب کنید.
</li>
<li>مفید: اگر قابلیت از نظر شما برای این کار مفید است، ولی نبود آن نیز مشکل بزرگی ایجاد نمی‌کند، این گزینه را انتخاب کنید.
</li>
</ul>
<p>
یک اشتباه رایج این است که اکثر قابلیت‌ها را «الزامی» معرفی کنید. الزامی بودن به معنای اهمیت بالا نیست، به این معنی است که نبودن آن امکان همکاری را از بین می‌برد. هرگاه خواستید عاملی را «الزامی» معرفی کنید به این فکر کنید که اگر فردی از نظر نظر عالی باشد و فقط این قابلیت را نداشته باشد حاضر به استخدام وی خواهید بود یا خیر. اگر پاسخ مثبت باشد، قابلیت از نظر شما «الزامی» نیست، «خیلی مهم» یا «مفید» است.
</p>
</div>
<button type="button" class="btn btn-danger btn-xs pull-left" data-toggle="collapse" data-target="#learn-more">
اطلاعات بیشتر
</button>
<div class="clearfix"></div>
</div>
<div class="row" style="margin-bottom: 20px"> <div class="row" style="margin-bottom: 20px">
<div class="col-md-12"> <div class="col-md-12">
<button type="submit" class="btn btn-primary pull-left">ارسال آگهی</button> <button type="submit" class="btn btn-primary pull-left">ارسال آگهی</button>


+ 1
- 0
Sevomin.WebFrontend/Views/Shared/Intro.cshtml View File

@ -46,5 +46,6 @@
<script src="@Url.Content("~/scripts/jquery.validate.unobtrusive.min.js")"></script> <script src="@Url.Content("~/scripts/jquery.validate.unobtrusive.min.js")"></script>
<script src="@Url.Content("~/scripts/bootstrap.min.js")"></script> <script src="@Url.Content("~/scripts/bootstrap.min.js")"></script>
<script src="@Url.Content("~/scripts/sevomin-ui.js")"></script> <script src="@Url.Content("~/scripts/sevomin-ui.js")"></script>
@Html.Partial("GA")
</body> </body>
</html> </html>

+ 8
- 5
Sevomin.WebFrontend/Views/Shared/IntroSignup.cshtml View File

@ -1,10 +1,13 @@
@model Sevomin.Models.SignupViewModel @model Sevomin.Models.SignupViewModel
<div class="row">
@if (!ViewData.ModelState.IsValid) {
<div class="col-md-12 rtl">
@Html.ValidationSummary(true)
@if (!ViewData.ModelState.IsValid)
{
<div class="row">
<div class="alert alert-danger rtl">
@Html.ValidationSummary(true)
</div> </div>
}
</div>
}
<div class="row">
<div class="col-md-6 rtl"> <div class="col-md-6 rtl">
<div class="introduction"> <div class="introduction">
<div class="intro-icon"> <div class="intro-icon">


+ 1
- 0
Sevomin.WebFrontend/Views/Shared/_Layout.cshtml View File

@ -23,5 +23,6 @@
<script src="@Url.Content("~/scripts/jquery.validate.unobtrusive.min.js")"></script> <script src="@Url.Content("~/scripts/jquery.validate.unobtrusive.min.js")"></script>
<script src="@Url.Content("~/scripts/bootstrap.min.js")"></script> <script src="@Url.Content("~/scripts/bootstrap.min.js")"></script>
<script src="@Url.Content("~/scripts/sevomin-ui.js")"></script> <script src="@Url.Content("~/scripts/sevomin-ui.js")"></script>
@Html.Partial("GA")
</body> </body>
</html> </html>

+ 26
- 14
Sevomin.WebFrontend/Web.config View File

@ -6,23 +6,17 @@
<configuration> <configuration>
<configSections> <configSections>
<section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" /> <section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
<sectionGroup name="elmah">
<section name="security" requirePermission="false" type="Elmah.SecuritySectionHandler, Elmah" />
<section name="errorLog" requirePermission="false" type="Elmah.ErrorLogSectionHandler, Elmah" />
<section name="errorMail" requirePermission="false" type="Elmah.ErrorMailSectionHandler, Elmah" />
<section name="errorFilter" requirePermission="false" type="Elmah.ErrorFilterSectionHandler, Elmah" />
</sectionGroup>
</configSections> </configSections>
<!--<entityFramework>
<defaultConnectionFactory type="System.Data.Entity.Infrastructure.LocalDbConnectionFactory, EntityFramework">
<parameters>
<parameter value="v11.0"/>
</parameters>
</defaultConnectionFactory>
<providers>
<provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer"/>
</providers>
</entityFramework>-->
<connectionStrings> <connectionStrings>
<clear /> <clear />
<add name="UsersConnectionString" connectionString="Data Source=codiato;Initial Catalog=Sevomin;Integrated Security=True;Pooling=False" providerName="System.Data.SqlClient" /> <add name="UsersConnectionString" connectionString="Data Source=codiato;Initial Catalog=Sevomin;Integrated Security=True;Pooling=False" providerName="System.Data.SqlClient" />
</connectionStrings>
</connectionStrings>
<appSettings> <appSettings>
<add key="webpages:Version" value="3.0.0.0" /> <add key="webpages:Version" value="3.0.0.0" />
<add key="webpages:Enabled" value="false" /> <add key="webpages:Enabled" value="false" />
@ -30,10 +24,28 @@
<add key="ClientValidationEnabled" value="true" /> <add key="ClientValidationEnabled" value="true" />
<add key="UnobtrusiveJavaScriptEnabled" value="true" /> <add key="UnobtrusiveJavaScriptEnabled" value="true" />
</appSettings> </appSettings>
<elmah>
<!--
See http://code.google.com/p/elmah/wiki/SecuringErrorLogPages for
more information on remote access and securing ELMAH.
-->
<security allowRemoteAccess="true" />
<errorLog type="Elmah.XmlFileErrorLog, Elmah" logPath="~/app_data/errors" />
</elmah>
<system.web> <system.web>
<compilation debug="true" targetFramework="4.5.1" /> <compilation debug="true" targetFramework="4.5.1" />
<httpRuntime targetFramework="4.5.1" /> <httpRuntime targetFramework="4.5.1" />
</system.web> </system.web>
<system.webServer>
<handlers>
<add name="ELMAH" verb="POST,GET,HEAD" path="errors.axd" type="Elmah.ErrorLogPageFactory, Elmah" preCondition="integratedMode" />
</handlers>
<modules runAllManagedModulesForAllRequests="true">
<add name="ErrorLog" type="Elmah.ErrorLogModule, Elmah" preCondition="managedHandler" />
<add name="ErrorMail" type="Elmah.ErrorMailModule, Elmah" preCondition="managedHandler" />
<add name="ErrorFilter" type="Elmah.ErrorFilterModule, Elmah" preCondition="managedHandler" />
</modules>
</system.webServer>
<runtime> <runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly> <dependentAssembly>
@ -66,7 +78,7 @@
</dependentAssembly> </dependentAssembly>
<dependentAssembly> <dependentAssembly>
<assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" /> <assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" />
<bindingRedirect oldVersion="1.0.0.0-5.1.0.0" newVersion="5.1.0.0" />
<bindingRedirect oldVersion="0.0.0.0-5.1.0.0" newVersion="5.1.0.0" />
</dependentAssembly> </dependentAssembly>
<dependentAssembly> <dependentAssembly>
<assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral" /> <assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral" />


+ 1
- 0
Sevomin.WebFrontend/packages.config View File

@ -1,6 +1,7 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<packages> <packages>
<package id="bootstrap" version="3.1.1" targetFramework="net451" /> <package id="bootstrap" version="3.1.1" targetFramework="net451" />
<package id="elmah.corelibrary" version="1.2.2" targetFramework="net451" />
<package id="jQuery" version="2.1.0" targetFramework="net451" /> <package id="jQuery" version="2.1.0" targetFramework="net451" />
<package id="jQuery.UI.Combined" version="1.10.4" targetFramework="net451" /> <package id="jQuery.UI.Combined" version="1.10.4" targetFramework="net451" />
<package id="jQuery.UI.i18n" version="1.10.2" targetFramework="net451" /> <package id="jQuery.UI.i18n" version="1.10.2" targetFramework="net451" />


Loading…
Cancel
Save