diff --git a/Sevomin.Models/Avalin.cs b/Sevomin.Models/Avalin.cs index e821620..05b21d6 100644 --- a/Sevomin.Models/Avalin.cs +++ b/Sevomin.Models/Avalin.cs @@ -24,9 +24,6 @@ namespace Sevomin.Models [EmailValidation(ErrorMessage="ای میل معتبر نیست")] public string EMail { get; set; } - [DefaultValue(false)] - public bool OptOutEmail { get; set; } - public virtual ICollection Jobs { get; set; } public Avalin() diff --git a/Sevomin.Models/AvalinViewModel.cs b/Sevomin.Models/AvalinViewModel.cs index e2286f6..43552c2 100644 --- a/Sevomin.Models/AvalinViewModel.cs +++ b/Sevomin.Models/AvalinViewModel.cs @@ -40,11 +40,7 @@ namespace Sevomin.Models [RegularExpression(@"^([\w\!\#$\%\&\'\*\+\-\/\=\?\^\`{\|\}\~]+\.)*[\w\!\#$\%\&\'\*\+\-\/\=\?\^\`{\|\}\~]+@((((([a-zA-Z0-9]{1}[a-zA-Z0-9\-]{0,62}[a-zA-Z0-9]{1})|[a-zA-Z])\.)+[a-zA-Z]{2,6})|(\d{1,3}\.){3}\d{1,3}(\:\d{1,5})?)$", ErrorMessage = "لطفا ایمیل معتبر وارد کنید.")] [DisplayName("ایمیل")] public string EMail { get; set; } - - [DefaultValue(false)] - [DisplayName("دریافت ایمیل")] - public bool OptOutEmail { get; set; } - + public AvalinViewModel(Avalin avalin) { CompanyName = avalin.CompanyName; diff --git a/Sevomin.Models/Dovomin.cs b/Sevomin.Models/Dovomin.cs index 1fb0315..f69ca1b 100644 --- a/Sevomin.Models/Dovomin.cs +++ b/Sevomin.Models/Dovomin.cs @@ -1,6 +1,7 @@  using System; using System.Collections.Generic; +using System.ComponentModel; using System.ComponentModel.DataAnnotations.Schema; namespace Sevomin.Models { @@ -17,6 +18,9 @@ namespace Sevomin.Models public string EnglishResume { get; set; } public string PersianResume { get; set; } + [DefaultValue(false)] + public bool OptOutEmail { get; set; } + public virtual ICollection DovominParameters { get; set; } public virtual ICollection DovominJobs { get; set; } diff --git a/Sevomin.Models/DovominViewModel.cs b/Sevomin.Models/DovominViewModel.cs index 802b40e..1ead7e1 100644 --- a/Sevomin.Models/DovominViewModel.cs +++ b/Sevomin.Models/DovominViewModel.cs @@ -19,7 +19,7 @@ namespace Sevomin.Models { get { - return string.Format("{0} {1}", this.FirstName, this.LastName); + return string.Format("{0} {1}", FirstName, LastName); } } @@ -39,8 +39,8 @@ namespace Sevomin.Models { get { - if (this.BirthDate.HasValue) - return DateAssist.ToShamsi(this.BirthDate.Value); + if (BirthDate.HasValue) + return DateAssist.ToShamsi(BirthDate.Value); else return string.Empty; } @@ -65,19 +65,23 @@ namespace Sevomin.Models [DisplayName("پاره وقت")] public bool IsPartTime { get; set; } + [DefaultValue(false)] + [DisplayName("دریافت ایمیل")] + public bool OptOutEmail { get; set; } + public IList Parameters; public DovominViewModel(Dovomin dovomin) { - this.Id = dovomin.Id; - this.FirstName = dovomin.FirstName; - this.LastName = dovomin.LastName; - this.IsFullTime = dovomin.IsFulltime; - this.IsPartTime = dovomin.IsPartTime; - this.BirthDate = dovomin.BirthDate; - this.Description = dovomin.Description; - this.EnglishResume = dovomin.EnglishResume; - this.PersianResume = dovomin.PersianResume; + Id = dovomin.Id; + FirstName = dovomin.FirstName; + LastName = dovomin.LastName; + IsFullTime = dovomin.IsFulltime; + IsPartTime = dovomin.IsPartTime; + BirthDate = dovomin.BirthDate; + Description = dovomin.Description; + EnglishResume = dovomin.EnglishResume; + PersianResume = dovomin.PersianResume; ParameterRepository.Current.AddParametersToDovomin(dovomin); diff --git a/Sevomin.Models/Helpers/ScheduledTasks/ExpiringJob.cs b/Sevomin.Models/Helpers/ScheduledTasks/ExpiringJob.cs index ebfba5b..1866318 100644 --- a/Sevomin.Models/Helpers/ScheduledTasks/ExpiringJob.cs +++ b/Sevomin.Models/Helpers/ScheduledTasks/ExpiringJob.cs @@ -15,10 +15,10 @@ namespace Sevomin.Models.Helpers.ScheduledTasks var expiringJobs = JobRepository.Current.ListAll().ToList().Where(j => j.ExpireDate.Date == DateTime.UtcNow.AddDays(-2).Date); foreach (var job in expiringJobs) { - SevominEmailer emailer = new SevominEmailer(); - emailer.EmailType = EmailType.ExpiringJob; + SevominEmailer emailer = new SevominEmailer {EmailType = EmailType.ExpiringJob}; emailer.Parameters.Add("", ""); - await emailer.SendAsync(string.IsNullOrWhiteSpace(job.ContactPersonEMail) ? job.Avalin.Email : job.ContactPersonEMail, true); + + await emailer.SendAsync(string.IsNullOrWhiteSpace(job.ContactPersonEMail) ? job.Avalin.Email : job.ContactPersonEMail, true, false); } } } diff --git a/Sevomin.Models/Helpers/ScheduledTasks/NewApplication.cs b/Sevomin.Models/Helpers/ScheduledTasks/NewApplication.cs index ff0d5cb..f7cc5e1 100644 --- a/Sevomin.Models/Helpers/ScheduledTasks/NewApplication.cs +++ b/Sevomin.Models/Helpers/ScheduledTasks/NewApplication.cs @@ -1,9 +1,6 @@ -using FluentScheduler; -using System; -using System.Collections.Generic; +using System; using System.Linq; -using System.Text; -using System.Threading.Tasks; +using FluentScheduler; namespace Sevomin.Models.Helpers.ScheduledTasks { @@ -19,18 +16,17 @@ namespace Sevomin.Models.Helpers.ScheduledTasks foreach (var apply in applies) { - SevominEmailer emailer = new SevominEmailer(); - emailer.EmailType = EmailType.NewApplication; + SevominEmailer emailer = new SevominEmailer {EmailType = EmailType.NewApplication}; emailer.Parameters.Add("avalin-name", avalin.DisplayName); emailer.Parameters.Add("avalin-contact", string.IsNullOrWhiteSpace(apply.Job.ContactPersonName) ? "" : apply.Job.ContactPersonName); emailer.Parameters.Add("dovomin-name", apply.Dovomin.DisplayName); if (string.IsNullOrWhiteSpace(apply.Job.ContactPersonEMail)) - await emailer.SendAsync(avalin.Email, true); + await emailer.SendAsync(avalin.Email, true, false); else { - await emailer.SendAsync(avalin.Email, true); - await emailer.SendAsync(apply.Job.ContactPersonEMail, true); + await emailer.SendAsync(avalin.Email, true, false); + await emailer.SendAsync(apply.Job.ContactPersonEMail, true, false); } } } diff --git a/Sevomin.Models/Helpers/ScheduledTasks/NewJob.cs b/Sevomin.Models/Helpers/ScheduledTasks/NewJob.cs index 8a3ee7a..dedfbc5 100644 --- a/Sevomin.Models/Helpers/ScheduledTasks/NewJob.cs +++ b/Sevomin.Models/Helpers/ScheduledTasks/NewJob.cs @@ -1,10 +1,7 @@ -using FluentScheduler; -using Sevomin.Models.Repositories; -using System; -using System.Collections.Generic; +using System; using System.Linq; -using System.Text; -using System.Threading.Tasks; +using FluentScheduler; +using Sevomin.Models.Repositories; namespace Sevomin.Models.Helpers.ScheduledTasks { @@ -21,7 +18,7 @@ namespace Sevomin.Models.Helpers.ScheduledTasks emailer.EmailType = EmailType.NewJob; emailer.Parameters.Add("display-name", dovomin.DisplayName); - await emailer.SendAsync(dovomin.Email, true); + await emailer.SendAsync(dovomin.Email, true, ((Dovomin) dovomin).OptOutEmail); } } } diff --git a/Sevomin.Models/Helpers/SevominEmailer.cs b/Sevomin.Models/Helpers/SevominEmailer.cs index 2908500..1bf80e5 100644 --- a/Sevomin.Models/Helpers/SevominEmailer.cs +++ b/Sevomin.Models/Helpers/SevominEmailer.cs @@ -60,7 +60,7 @@ namespace Sevomin.Models.Helpers EmailType = emailType; } - public async Task SendAsync(string to, bool isHtml) + public async Task SendAsync(string to, bool isHtml, bool optedOut) { SmtpClient client = new SmtpClient(); MailMessage msg = new MailMessage(); @@ -71,7 +71,7 @@ namespace Sevomin.Models.Helpers case EmailType.EmailConfirmation: template = File.ReadAllText(EmailConfirmationFilePath, Encoding.UTF8); - msg.Subject = "تایید عضویت در سومین"; + msg.Subject = "تایید عضویت"; break; case EmailType.PasswordReset: template = @@ -86,12 +86,12 @@ namespace Sevomin.Models.Helpers case EmailType.NewApplication: template = File.ReadAllText(NewApplicationFilePath, Encoding.UTF8); - msg.Subject = "اعلام آمادگی جدید برای فرصت شغلی اعلام شده در سومین"; + msg.Subject = "اعلام آمادگی جدید برای فرصت شغلی اعلام شده"; break; case EmailType.NewJob: template = File.ReadAllText(NewJobFilePath, Encoding.UTF8); - msg.Subject = "آگهی استخدام جدید در سومین"; + msg.Subject = "آگهی استخدام جدید"; break; default: template = string.Empty; @@ -99,44 +99,37 @@ namespace Sevomin.Models.Helpers break; } - //Working - - //msg.To.Add("Mehrdad_maskull@hotmail.com"); - //msg.Bcc.Add("Mehrdad2maskull@gmail.com"); - - //string subj = subject; - //string subj2 = "asdasd"; + if (!optedOut) + { + foreach (var address in to.Split(',')) + msg.To.Add(address); + //msg.Bcc.Add("info@sevom.in"); + Func getBody = () => + { + foreach (var param in Parameters) + template = template.Replace(string.Format("[{0}]", param.Key), param.Value); - //Not Working + return template; + }; - foreach (var address in to.Split(',')) - msg.To.Add(address); - //msg.Bcc.Add("info@sevom.in"); - Func getBody = () => - { - foreach (var param in Parameters) - template = template.Replace(string.Format("[{0}]", param.Key), param.Value); + msg.Body = getBody(); - return template; - }; - - msg.Body = getBody(); - - msg.From = new MailAddress("no-reply@sevom.in"); + msg.From = new MailAddress("no-reply@sevom.in"); - msg.SubjectEncoding = Encoding.UTF8; - msg.BodyEncoding = Encoding.UTF8; + msg.SubjectEncoding = Encoding.UTF8; + msg.BodyEncoding = Encoding.UTF8; - msg.IsBodyHtml = isHtml; + msg.IsBodyHtml = isHtml; - client.Port = 587; - client.Credentials = new System.Net.NetworkCredential("miladkdz@gmail.com", "4XdWMRVFBO-pow4I1md1Bw"); - client.EnableSsl = true; + client.Port = 587; + client.Credentials = new System.Net.NetworkCredential("miladkdz@gmail.com", "4XdWMRVFBO-pow4I1md1Bw"); + client.EnableSsl = true; - await Task.Run(() => - { - client.Send(msg); - }); + await Task.Run(() => + { + client.Send(msg); + }); + } } } } diff --git a/Sevomin.Models/Migrations/201503091139500_Init.Designer.cs b/Sevomin.Models/Migrations/201503091139500_Init.Designer.cs new file mode 100644 index 0000000..68e2492 --- /dev/null +++ b/Sevomin.Models/Migrations/201503091139500_Init.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 Init : IMigrationMetadata + { + private readonly ResourceManager Resources = new ResourceManager(typeof(Init)); + + string IMigrationMetadata.Id + { + get { return "201503091139500_Init"; } + } + + string IMigrationMetadata.Source + { + get { return null; } + } + + string IMigrationMetadata.Target + { + get { return Resources.GetString("Target"); } + } + } +} diff --git a/Sevomin.Models/Migrations/201503091139500_Init.cs b/Sevomin.Models/Migrations/201503091139500_Init.cs new file mode 100644 index 0000000..312aeec --- /dev/null +++ b/Sevomin.Models/Migrations/201503091139500_Init.cs @@ -0,0 +1,268 @@ +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(), + OptOutEmail = c.Boolean(nullable: false), + }) + .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/201503091139500_Init.resx b/Sevomin.Models/Migrations/201503091139500_Init.resx new file mode 100644 index 0000000..0fe6998 --- /dev/null +++ b/Sevomin.Models/Migrations/201503091139500_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/Sevomin.Models.csproj b/Sevomin.Models/Sevomin.Models.csproj index 3035000..de48d3e 100644 --- a/Sevomin.Models/Sevomin.Models.csproj +++ b/Sevomin.Models/Sevomin.Models.csproj @@ -91,9 +91,9 @@ - - - 201503030741121_Init.cs + + + 201503091139500_Init.cs @@ -137,8 +137,8 @@ - - 201503030741121_Init.cs + + 201503091139500_Init.cs diff --git a/Sevomin.WebFrontend.Controllers/AccountController.cs b/Sevomin.WebFrontend.Controllers/AccountController.cs index ebeb4f3..56e0718 100644 --- a/Sevomin.WebFrontend.Controllers/AccountController.cs +++ b/Sevomin.WebFrontend.Controllers/AccountController.cs @@ -76,7 +76,7 @@ namespace Sevomin.WebFrontend.Controllers emailer.EmailType = EmailType.EmailConfirmation; emailer.Parameters.Add("display-name", user.DisplayName); emailer.Parameters.Add("confirmation-code", user.ConfirmationCode); - await emailer.SendAsync(user.Email, true); + await emailer.SendAsync(user.Email, true, false); #endif await SignInAsync(user, isPersistent: false); @@ -179,12 +179,13 @@ namespace Sevomin.WebFrontend.Controllers user.ConfirmationCode = Sevomin.Models.User.GetConfirmationCode(); UserRepository.Current.Save(); + + #if !DEBUG - SevominEmailer emailer = new SevominEmailer(); - emailer.EmailType = EmailType.PasswordReset; + SevominEmailer emailer = new SevominEmailer {EmailType = EmailType.PasswordReset}; emailer.Parameters.Add("display-name", user.DisplayName); emailer.Parameters.Add("reset-code", user.ConfirmationCode); - await emailer.SendAsync(user.Email, true); + await emailer.SendAsync(user.Email, true, false); #endif ViewBag.Result = new PostResultViewModel(true, "آدرس بازنشانی رمز عبور برای شما ارسال شد."); @@ -258,14 +259,13 @@ namespace Sevomin.WebFrontend.Controllers User u = await UserManager.FindByNameAsync(User.Identity.Name); if (u is Avalin) { - Avalin avvalin = u as Avalin; - ViewBag.OptOutEmail = avvalin.OptOutEmail; - return View("ProfileAvalin", new AvalinViewModel(avvalin)); + return View("ProfileAvalin", new AvalinViewModel((Avalin)u)); } else { Dovomin dovomin = (Dovomin)u; DovominViewModel dvm = new DovominViewModel(dovomin); + ViewBag.OptOutEmail = dovomin.OptOutEmail; return View("ProfileDovomin", dvm); } } @@ -274,7 +274,7 @@ namespace Sevomin.WebFrontend.Controllers [HttpPost] public async Task ProfileDovomin(string JalaliBirthDate, string FirstName, string LastName, string ContactPersonEMail, bool IsFullTime, - bool IsPartTime, string Description, HttpPostedFileBase EnglishResume, HttpPostedFileBase PersianResume, FormCollection form) + bool IsPartTime, string Description, bool OptOutEmail, HttpPostedFileBase EnglishResume, HttpPostedFileBase PersianResume, FormCollection form) { User u = await UserManager.FindByNameAsync(User.Identity.Name); if (u == null || !(u is Dovomin)) @@ -289,6 +289,7 @@ namespace Sevomin.WebFrontend.Controllers dovomin.LastName = LastName; dovomin.IsFulltime = IsFullTime; dovomin.IsPartTime = IsPartTime; + dovomin.OptOutEmail = OptOutEmail; ParameterRepository.Current.AddParametersToDovomin(dovomin); foreach (var jp in dovomin.DovominParameters) @@ -321,7 +322,7 @@ namespace Sevomin.WebFrontend.Controllers [Authorize(Roles = "Avalin")] [HttpPost] public async Task ProfileAvalin(string CompanyName, string NationalId, string RegisterId, - string Address, string CompanyPhoneNumber, string EMail, bool OptOutEmail) + string Address, string CompanyPhoneNumber, string EMail) { User u = await UserManager.FindByNameAsync(User.Identity.Name); try @@ -335,7 +336,6 @@ namespace Sevomin.WebFrontend.Controllers avalin.Address = Address; avalin.CompanyPhoneNumber = CompanyPhoneNumber; avalin.Email = EMail; - avalin.OptOutEmail = OptOutEmail; SevominDbContext.Current.SaveChanges(); diff --git a/Sevomin.WebFrontend.Controllers/JobController.cs b/Sevomin.WebFrontend.Controllers/JobController.cs index 27dbeca..b8473db 100644 --- a/Sevomin.WebFrontend.Controllers/JobController.cs +++ b/Sevomin.WebFrontend.Controllers/JobController.cs @@ -93,28 +93,25 @@ namespace Sevomin.WebFrontend.Controllers Description, ShowCompanyLogo, ResumeType, form, job); JobRepository.Current.Save(); - if (!u.OptOutEmail) + try { - try - { - foreach (var dovomin in UserRepository.Current.ListAll().Where(user => user is Dovomin && user.EmailConfirmed)) - { - SevominEmailer emailer = new SevominEmailer(); - emailer.EmailType = EmailType.NewJob; - emailer.Parameters.Add("display-name", dovomin.DisplayName); - - await emailer.SendAsync(dovomin.Email, true); - } - } - catch (Exception e) - { - var elmah = new Elmah.Error(e); - - Elmah.ErrorLog.GetDefault(System.Web.HttpContext.Current).Log(elmah); - } + foreach ( + var dovomin in UserRepository.Current.ListAll().Where(user => user is Dovomin && user.EmailConfirmed)) + { + SevominEmailer emailer = new SevominEmailer {EmailType = EmailType.NewJob}; + emailer.Parameters.Add("display-name", dovomin.DisplayName); + + await emailer.SendAsync(dovomin.Email, true, ((Dovomin)dovomin).OptOutEmail); + } } - - ViewBag.Result = new PostResultViewModel(true, "آگهی شما با موفقیت منتشر شد."); + catch (Exception e) + { + var elmah = new Elmah.Error(e); + + Elmah.ErrorLog.GetDefault(System.Web.HttpContext.Current).Log(elmah); + } + + ViewBag.Result = new PostResultViewModel(true, "آگهی شما با موفقیت منتشر شد."); return RedirectToAction("SingleJob", new { jobId = job.Id }); } @@ -275,11 +272,11 @@ namespace Sevomin.WebFrontend.Controllers emailer.Parameters.Add("avalin-contact", string.IsNullOrWhiteSpace(dj.Job.ContactPersonName) ? "" : dj.Job.ContactPersonName); emailer.Parameters.Add("dovomin-name", dj.Dovomin.DisplayName); - await emailer.SendAsync(job.Avalin.Email, true); + await emailer.SendAsync(job.Avalin.Email, true, true); if (!string.IsNullOrWhiteSpace(dj.Job.ContactPersonEMail)) { - await emailer.SendAsync(dj.Job.ContactPersonEMail, true); + await emailer.SendAsync(dj.Job.ContactPersonEMail, true, user.OptOutEmail); } } catch (Exception e) diff --git a/Sevomin.WebFrontend/Content/common.css b/Sevomin.WebFrontend/Content/common.css index 9dc7367..ec1b7ef 100644 --- a/Sevomin.WebFrontend/Content/common.css +++ b/Sevomin.WebFrontend/Content/common.css @@ -5,11 +5,11 @@ url('/fonts/BKoodakBold.ttf') format('truetype'); /* Saf3—5, Chrome4+, FF3.5, Opera 10+ */ } -@font-face { - font-family: "nasim"; - src: url(/fonts/sevomin-nasim.woff) format("woff"); - font-weight: normal; - font-style: normal; +@font-face { + font-family: "nasim"; + src: url(/fonts/sevomin-nasim.woff) format("woff"); + font-weight: normal; + font-style: normal; } @font-face { diff --git a/Sevomin.WebFrontend/Views/Account/ProfileAvalin.cshtml b/Sevomin.WebFrontend/Views/Account/ProfileAvalin.cshtml index 13d4cbc..6d59a53 100644 --- a/Sevomin.WebFrontend/Views/Account/ProfileAvalin.cshtml +++ b/Sevomin.WebFrontend/Views/Account/ProfileAvalin.cshtml @@ -1,10 +1,10 @@ -@using System.Collections.Concurrent -@model Sevomin.Models.AvalinViewModel +@using Sevomin.Models +@model AvalinViewModel @{ ViewBag.Title = "ویرایش پروفایل"; } -@Html.Partial("PostResult", ViewBag.Result as Sevomin.Models.PostResultViewModel) +@Html.Partial("PostResult", ViewBag.Result as PostResultViewModel) -
-
- @Html.LabelFor(model => model.OptOutEmail, new { @class = "col-md-3 col-md-push-9" }) - @Html.CheckBox("OptOutEmail", (bool)ViewBag.OptOutEmail, new {@class = "col-md-2 col-md-push-5" }) -
-
diff --git a/Sevomin.WebFrontend/Views/Account/ProfileDovomin.cshtml b/Sevomin.WebFrontend/Views/Account/ProfileDovomin.cshtml index 1fa04f7..5495008 100644 --- a/Sevomin.WebFrontend/Views/Account/ProfileDovomin.cshtml +++ b/Sevomin.WebFrontend/Views/Account/ProfileDovomin.cshtml @@ -90,6 +90,12 @@ @Html.DisplayNameFor(model => model.IsPartTime) @Html.CheckBoxFor(model => model.IsPartTime) +
+
+ @Html.LabelFor(model => model.OptOutEmail, new { @class = "col-md-3 col-md-push-9" }) + @Html.CheckBox("OptOutEmail", (bool)ViewBag.OptOutEmail, new { @class = "col-md-2 col-md-push-5 checkbox" }) +
+
@@ -109,7 +115,6 @@ } - }