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.

78 lines
2.9 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. namespace Sevomin.Models
  9. {
  10. public class JobMiniExternalViewModel
  11. {
  12. private int MaxNumberOfMiniParams = 6;
  13. [Key]
  14. public long Id { get; set; }
  15. [DisplayName("آخرین مهلت اعلام آمادگی")]
  16. [DataType(DataType.Date)]
  17. public DateTime ExpireDate { get; set; }
  18. [DisplayName("آخرین مهلت اعلام آمادگی")]
  19. [DataType(DataType.Date)]
  20. public string JalaliExpireDate
  21. {
  22. get
  23. {
  24. return DateAssist.ToShamsi(this.ExpireDate);
  25. }
  26. set
  27. {
  28. ExpireDate = DateAssist.ValidateAndSetToMiladi(value) ?? DateTime.MinValue;
  29. }
  30. }
  31. [DisplayName("کار تمام وقت")]
  32. public bool IsFullTime { get; set; }
  33. public string JobSummary { private set; get; }
  34. private IList<Tuple<string, string>> Parameters;
  35. public JobMiniExternalViewModel(Job job, int maxNumberOfMiniParams = 6)
  36. {
  37. this.MaxNumberOfMiniParams = maxNumberOfMiniParams;
  38. this.Id = job.Id;
  39. this.ExpireDate = job.ExpireDate == DateTime.MinValue ? DateTime.UtcNow.AddDays(14) : job.ExpireDate;
  40. this.IsFullTime = job.IsFullTime;
  41. if (job.JobParameters == null)
  42. return;
  43. Parameters = new List<Tuple<string,string>>();
  44. var jpz = job.JobParameters.Where(x=>!string.IsNullOrWhiteSpace(x.StringValue)).OrderByDescending(x=>x.Moscow).Take(Math.Min(MaxNumberOfMiniParams * 3, job.JobParameters.Count()))
  45. .OrderBy(x => x.Parameter.GroupName).ThenByDescending(x => x.Moscow).Take((int)(MaxNumberOfMiniParams*1.5)).ToList();
  46. for (int i = 0; i < jpz.Count(); i++)
  47. {
  48. string format = jpz[i].Parameter.DisplayFormat;
  49. format = format.Replace("$", jpz[i].Parameter.Name);
  50. string value = jpz[i].StringValue;
  51. if (jpz[i].Parameter.DisplayMethod == 4)
  52. {
  53. value = jpz[i].Parameter.ParameterValues.ToList().Where(x =>x.NumbericValue == jpz[i].NumericValue).Select(x => x.Value)
  54. .FirstOrDefault();
  55. }
  56. Parameters.Add(new Tuple<string,string>(format, value));
  57. }
  58. StringBuilder sb = new StringBuilder("کارشناس برنامه ریزی و کنترل پروژه ");
  59. foreach (var param in Parameters)
  60. sb.Append(string.Format(param.Item1 + " ", param.Item2));
  61. this.JobSummary = sb.ToString();
  62. }
  63. }
  64. }