Example #1
0
        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();
        }
Example #2
0
        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();
        }
Example #3
0
 public CompanyDirectoryForm()
 {
     InitializeComponent();
     companies     = new CompanyDirectory();
     bindingSource = new BindingSource();
 }
Example #4
0
        /// <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);
        }