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.6 KiB

11 years ago
11 years ago
11 years ago
11 years ago
11 years ago
11 years ago
11 years ago
11 years ago
11 years ago
11 years ago
11 years ago
11 years ago
11 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.Now.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. }