AssignmentAppointment.cs 2.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Drawing;
  4. using System.Windows.Media.Imaging;
  5. using Comal.Classes;
  6. using Geocoding;
  7. using InABox.Core;
  8. using InABox.WPF;
  9. namespace PRSDesktop
  10. {
  11. public class AssignmentAppointment : CalendarAppointment<Assignment>
  12. {
  13. public CalendarAssignmentType AssignmentType { get; }
  14. public override TimeSpan StartTime => AssignmentType switch
  15. {
  16. CalendarAssignmentType.Booked => Model.Booked.Start,
  17. CalendarAssignmentType.Actual => Model.Actual.Start,
  18. _ => Model.EffectiveStartTime()
  19. };
  20. public override TimeSpan EndTime => AssignmentType switch
  21. {
  22. CalendarAssignmentType.Booked => Model.Booked.Finish,
  23. CalendarAssignmentType.Actual => Model.Actual.Finish,
  24. _ => Model.EffectiveFinishTime()
  25. };
  26. public override DateTime Date => Model.Date;
  27. public AssignmentAppointment(Assignment model, Employee employee, CalendarAssignmentType type)
  28. : base(model, employee, x => x.ActivityLink.Color)
  29. {
  30. AssignmentType = type;
  31. Notes = Model.Description;
  32. var subject = new List<string>() { model.Number.ToString() };
  33. if (model.JobLink.ID != Guid.Empty)
  34. subject.Add(
  35. model.ITP.ID != Guid.Empty
  36. ? $"{model.JobLink.JobNumber}-{model.ITP.Code}"
  37. : $"{model.JobLink.JobNumber}"
  38. );
  39. if (model.Task.ID != Guid.Empty)
  40. subject.Add($"Task {model.Task.Number}");
  41. if (model.Meeting.Link.ID != Guid.Empty)
  42. subject.Add($"Mtg {model.Meeting.Link.Number}");
  43. subject.Add(model.Title ?? "");
  44. Subject = string.Join(" ", subject);
  45. var images = new List<Bitmap>();
  46. if (!model.Completed.IsEmpty())
  47. images.Add(Resources.tick_sml.Resize(32,32));
  48. if (model.Delivery.ID != Guid.Empty)
  49. images.Add(Resources.box_sml.Resize(32,32));
  50. if (model.Meeting.Link.ID != Guid.Empty)
  51. images.Add(Resources.employees.Resize(32,32));
  52. Image = ImageUtils.MergeBitmaps(images, 10)?.AsBitmapImage();
  53. }
  54. }
  55. }