private static void Main() { var dev1 = new Developer(100, "Lokesh Sharma"); var dev2 = new Developer(101, "Vinay Sharma"); var engDirectory = new CompanyDirectory("Engineering"); var webDirectory = new CompanyDirectory("Web"); engDirectory.AddEmployee(webDirectory); webDirectory.AddEmployee(dev1); engDirectory.AddEmployee(dev2); engDirectory.AddEmployee(dev1); var man1 = new Manager(200, "Kushagra Garg"); var man2 = new Manager(201, "Vikram Sharma "); var accDirectory = new CompanyDirectory("Managers"); accDirectory.AddEmployee(man1); accDirectory.AddEmployee(man2); var directory = new CompanyDirectory("Rey Automation"); directory.AddEmployee(engDirectory); directory.AddEmployee(accDirectory); directory.ShowEmployeeDetails(); }
private static void Main() { IEmployee employeeGerman = new CompanyDirectory("Test German"); employeeGerman.ShowEmployeeDetails(); employeeGerman = new GermanLoggingDecorator(employeeGerman); employeeGerman.ShowEmployeeDetails(); IEmployee employeeEnglish = new CompanyDirectory("Test English"); employeeEnglish = new EnglishLoggingDecorator(employeeEnglish); employeeEnglish.ShowEmployeeDetails(); }
public CompanyDirectoryForm() { InitializeComponent(); companies = new CompanyDirectory(); bindingSource = new BindingSource(); }
/// <summary> /// Main function used for returning data. All parameters are optional. This /// function will use the other GetDirectory functions as needed to produce the /// final filter, sorted, paginated results. /// </summary> /// <param name="page">Which page of data to return, based on pageSize. Default is page 1.</param> /// <param name="pageSize">How many items are considered a page. Default is ALL items (1 page).</param> /// <param name="sort">Comma delimeted list of sort values that can contain ASC/DESC if needed: "RegionName DESC,Name". Default is LastNamePCName,FirstName. Field names must match DirectoryItem properties!</param> /// <param name="filter">Space delimited list of items to filter: "joe green 610".</param> /// <param name="viewType">directoryViewType to indicate a filter at the ViewType leverl. Default is "All".</param> /// <returns>List of filtered, sorted, paginated Directory Items in a Directory object which will also contain information about what data was returned.</returns> public static CompanyDirectory GetDirectory(int?page, int?pageSize, string sort = "", string filter = "", directoryViewType viewType = directoryViewType.All, bool includeMobile = false) { CompanyDirectory returnData = new CompanyDirectory(); List <DirectoryItem> returnItems; if (filter.Length > 0) { returnItems = GetDirectory(filter, includeMobile); } else { returnItems = GetDirectory(includeMobile); } switch (viewType) { case directoryViewType.All: break; case directoryViewType.ProfitCenter: returnItems.RemoveAll(x => x.IsProfitCenter == false); break; case directoryViewType.RegionManager: returnItems.RemoveAll(x => x.IsRegionManager == false); break; case directoryViewType.RegionSupport: returnItems.RemoveAll(x => x.IsRegionSupport == false); break; case directoryViewType.ServiceCenter: returnItems.RemoveAll(x => x.IsServiceCenter == false); break; case directoryViewType.ShowRoom: returnItems.RemoveAll(x => x.HasShowroom == false); break; default: break; } List <Tuple <string, string> > sortTuple = new List <Tuple <string, string> >(); if (sort == null || sort.Trim().Length == 0) { sort = "RegionNumberSort,PCSort,Name"; } foreach (string sortValue in sort.Split(',')) { if (sortValue.Contains(' ')) { sortTuple.Add(new Tuple <string, string>(sortValue.Split(' ')[0].Trim(), sortValue.Split(' ')[1].Trim())); } else { sortTuple.Add(new Tuple <string, string>(sortValue.Trim(), "asc")); } } if (page == null) { page = 1; } if ((pageSize == null) || (pageSize == 0)) { pageSize = returnItems.Count(); } int skip = (int)pageSize * ((int)page - 1); returnData.page = page ?? 1; // ?? Used to for clean conversion from nullable type even though we know it can't be null because of the code above. returnData.pageSize = pageSize ?? returnItems.Count(); // ?? Used to for clean conversion from nullable type even though we know it can't be null because of the code above. if (returnData.pageSize == 0) { returnData.pageSize = returnItems.Count(); } if (returnData.pageSize == 0) { returnData.pageSize = 1; // Incase count was 0 too! } returnData.totalPages = (int)Math.Ceiling(((decimal)returnItems.Count() / returnData.pageSize)); returnData.totalRecords = returnItems.Count(); returnData.showMobile = includeMobile; if (skip < returnItems.Count()) { returnData.DirectoryItems = returnItems.MultipleSort(sortTuple).Skip(skip).Take((int)pageSize).ToList(); } return(returnData); }