You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

97 lines
3.7 KiB

10 years ago
  1. using Sevomin.Models.Helpers;
  2. using System;
  3. using System.Collections.Generic;
  4. using System.ComponentModel;
  5. using System.ComponentModel.DataAnnotations;
  6. using System.Linq;
  7. using System.Text;
  8. //استخدام نیروی «کنترل پروژه» با ×× سال سابقه ×× دارای ×مدرک× ×× برای کار در ×کشور×شهر×
  9. namespace Sevomin.Models
  10. {
  11. public class JobMiniViewModel
  12. {
  13. private int MaxNumberOfMiniParams = 6;
  14. [Key]
  15. public long Id { get; set; }
  16. [Required]
  17. [StringLength(128)]
  18. public string AvalinId { get; set; }
  19. public string AvalinUsername { get; set; }
  20. [DisplayName("آخرین مهلت اعلام آمادگی")]
  21. [DataType(DataType.Date)]
  22. public DateTime ExpireDate { get; set; }
  23. [DisplayName("آخرین مهلت اعلام آمادگی")]
  24. [DataType(DataType.Date)]
  25. public string JalaliExpireDate
  26. {
  27. get
  28. {
  29. return DateAssist.ToShamsi(this.ExpireDate);
  30. }
  31. set
  32. {
  33. ExpireDate = DateAssist.ValidateAndSetToMiladi(value) ?? DateTime.MinValue;
  34. }
  35. }
  36. [DisplayName("کار تمام وقت")]
  37. public bool IsFullTime { get; set; }
  38. public bool ShowCompanyLogo { get; set; }
  39. public bool ShowCompanyName { get; set; }
  40. public string CompanyName { get; set; }
  41. public string CompanyLogo { get; set; }
  42. public string JobSummary { private set; get; }
  43. public IList<Tuple<string, string>> Parameters;
  44. public JobMiniViewModel(Job job, int maxNumberOfMiniParams = 6)
  45. {
  46. this.MaxNumberOfMiniParams = maxNumberOfMiniParams;
  47. this.Id = job.Id;
  48. this.AvalinId = job.AvalinId;
  49. this.ExpireDate = job.ExpireDate == DateTime.MinValue ? DateTime.UtcNow.AddDays(14) : job.ExpireDate;
  50. this.IsFullTime = job.IsFullTime;
  51. this.AvalinUsername = job.Avalin.UserName;
  52. this.ShowCompanyLogo = job.ShowCompanyLogo;
  53. this.ShowCompanyName = job.ShowCompanyName;
  54. if (this.ShowCompanyName)
  55. this.CompanyName = job.Avalin.DisplayName;
  56. if (job.JobParameters == null)
  57. return;
  58. Parameters = new List<Tuple<string,string>>();
  59. var jpz = job.JobParameters.Where(x=>!string.IsNullOrWhiteSpace(x.StringValue)).OrderByDescending(x=>x.Moscow).Take(Math.Min(MaxNumberOfMiniParams * 3, job.JobParameters.Count()))
  60. .OrderBy(x => x.Parameter.GroupName).ThenByDescending(x => x.Moscow).Take((int)(MaxNumberOfMiniParams*1.5)).ToList();
  61. for (int i = 0; i < jpz.Count(); i++)
  62. {
  63. string format = jpz[i].Parameter.DisplayFormat;
  64. format = format.Replace("$", jpz[i].Parameter.Name);
  65. string value = jpz[i].StringValue;
  66. if (jpz[i].Parameter.DisplayMethod == 4)
  67. {
  68. value = jpz[i].Parameter.ParameterValues.ToList().Where(x =>x.NumbericValue == jpz[i].NumericValue).Select(x => x.Value)
  69. .FirstOrDefault();
  70. }
  71. Parameters.Add(new Tuple<string,string>(format, value));
  72. }
  73. StringBuilder sb = new StringBuilder("کارشناس برنامه ریزی و کنترل پروژه ");
  74. foreach (var param in Parameters)
  75. sb.Append(string.Format(param.Item1 + " ", param.Item2));
  76. this.JobSummary = sb.ToString();
  77. }
  78. }
  79. }