/// <summary> /// Creates an <see cref="OrderNoteSummary"/> from a <see cref="OrderNote"/>. /// </summary> /// <param name="orderNote"></param> /// <param name="context"></param> /// <returns></returns> public OrderNoteSummary CreateOrderNoteSummary(OrderNote orderNote, IPersistenceContext context) { StaffAssembler staffAssembler = new StaffAssembler(); StaffGroupAssembler groupAssembler = new StaffGroupAssembler(); return(new OrderNoteSummary( orderNote.OID == null ? null : orderNote.GetRef(), // may be a virtual order note, which is transient orderNote.Category, orderNote.CreationTime, orderNote.PostTime, staffAssembler.CreateStaffSummary(orderNote.Author, context), orderNote.OnBehalfOfGroup == null ? null : groupAssembler.CreateSummary(orderNote.OnBehalfOfGroup), orderNote.IsFullyAcknowledged, orderNote.Urgent, orderNote.Body)); }
/// <summary> /// Creates an <see cref="OrderNoteDetail"/> from a <see cref="OrderNote"/>. /// </summary> /// <param name="orderNote"></param> /// <param name="currentUserStaff"></param> /// <param name="context"></param> /// <returns></returns> public OrderNoteDetail CreateOrderNoteDetail(OrderNote orderNote, Staff currentUserStaff, IPersistenceContext context) { List <OrderNoteDetail.StaffRecipientDetail> staffRecipients = new List <OrderNoteDetail.StaffRecipientDetail>(); List <OrderNoteDetail.GroupRecipientDetail> groupRecipients = new List <OrderNoteDetail.GroupRecipientDetail>(); // if the note has been posted, construct the recipients list from the postings, so we can get the ACK status if (orderNote.IsPosted) { foreach (NotePosting posting in orderNote.Postings) { if (posting is GroupNotePosting) { groupRecipients.Add( CreateGroupRecipientDetail(((GroupNotePosting)posting).Recipient, posting.IsAcknowledged, posting.AcknowledgedBy, context)); } else { staffRecipients.Add( CreateStaffRecipientDetail(((StaffNotePosting)posting).Recipient, posting.IsAcknowledged, posting.AcknowledgedBy, context)); } } } StaffAssembler staffAssembler = new StaffAssembler(); StaffGroupAssembler groupAssembler = new StaffGroupAssembler(); return(new OrderNoteDetail( orderNote.GetRef(), orderNote.Category, orderNote.CreationTime, orderNote.PostTime, staffAssembler.CreateStaffSummary(orderNote.Author, context), orderNote.OnBehalfOfGroup == null ? null : groupAssembler.CreateSummary(orderNote.OnBehalfOfGroup), orderNote.Urgent, staffRecipients, groupRecipients, orderNote.Body, currentUserStaff == null ? false : orderNote.CanAcknowledge(currentUserStaff))); }