private IEnumerable<CasesWrapper> ToListCasesWrappers(ICollection<Cases> items) { if (items == null || items.Count == 0) return new List<CasesWrapper>(); var result = new List<CasesWrapper>(); var contactIDs = new List<int>(); var casesIDs = items.Select(item => item.ID).ToArray(); var customFields = DaoFactory.GetCustomFieldDao() .GetEnityFields(EntityType.Case, casesIDs) .GroupBy(item => item.EntityID) .ToDictionary(item => item.Key, item => item.Select(ToCustomFieldBaseWrapper)); var casesMembers = DaoFactory.GetCasesDao().GetMembers(casesIDs); foreach (var value in casesMembers.Values) { contactIDs.AddRange(value); } var contacts = DaoFactory .GetContactDao() .GetContacts(contactIDs.Distinct().ToArray()) .ToDictionary(item => item.ID, ToContactBaseWrapper); foreach (var cases in items) { var casesWrapper = new CasesWrapper(cases) { CustomFields = customFields.ContainsKey(cases.ID) ? customFields[cases.ID] : new List<CustomFieldBaseWrapper>(), Members = casesMembers.ContainsKey(cases.ID) ? casesMembers[cases.ID].Where(contacts.ContainsKey).Select(item => contacts[item]) : new List<ContactBaseWrapper>() }; result.Add(casesWrapper); } return result; }
private CasesWrapper ToCasesWrapper(Cases cases) { var casesWrapper = new CasesWrapper(cases) { CustomFields = DaoFactory .GetCustomFieldDao() .GetEnityFields(EntityType.Case, cases.ID, false) .ConvertAll(item => new CustomFieldBaseWrapper(item)) .ToSmartList(), Members = new List<ContactBaseWrapper>() }; var memberIDs = DaoFactory.GetCasesDao().GetMembers(cases.ID); var membersList = DaoFactory.GetContactDao().GetContacts(memberIDs); var membersWrapperList = new List<ContactBaseWrapper>(); foreach (var member in membersList) { if (member == null) continue; membersWrapperList.Add(ToContactBaseWrapper(member)); } casesWrapper.Members = membersWrapperList; return casesWrapper; }
private Cases FromCasesWrapper(CasesWrapper casesWrapper) { return new Cases { Title = casesWrapper.Title, IsClosed = casesWrapper.IsClosed, CreateOn = casesWrapper.Created, CreateBy = casesWrapper.CreateBy.Id }; }