public async Task <IHttpActionResult> Get(string request, TypeAHeadType type)
        {
            var models = await _typeAHeadDataService.GetData(request, type);

            return(Ok(models));
        }
        public async Task <List <TypeAHeadViewModel> > GetData(string request, TypeAHeadType type)
        {
            AppSession appSession = new AppSession();

            switch (type)
            {
            case TypeAHeadType.Customer:
                var customers = await _db.Customers.Where(x => x.TenantId == appSession.TenantId)
                                .Where(x => x.Id == request || x.Name.StartsWith(request) || x.Phone.Contains(request) || x.Code.Contains(request) || x.Name.Contains(request))
                                .Select(x => new { x.Id, x.Code, x.Name, x.TotalDue, x.Phone })
                                .Take(10).ToListAsync();

                return(customers.ConvertAll(x =>
                                            new TypeAHeadViewModel()
                {
                    Id = x.Id,
                    Name = x.Name,
                    Code = x.Code,
                    DisplayData = x.Name + " " + x.Code + " " + x.Phone,
                    MetaData = x.TotalDue
                }));

            case TypeAHeadType.Supplier:
                var suppliers = await _db.Suppliers.Where(x => x.TenantId == appSession.TenantId)
                                .Where(x => x.Id == request || x.Name.StartsWith(request) || x.Phone.Contains(request) || x.Code.StartsWith(request) || x.Name.Contains(request))
                                .Select(x => new { x.Id, x.Code, x.Name, x.TotalDue, x.Phone })
                                .Take(10).ToListAsync();

                return(suppliers.ConvertAll(x =>
                                            new TypeAHeadViewModel()
                {
                    Id = x.Id,
                    Name = x.Name,
                    Code = x.Code,
                    DisplayData = x.Name + " " + x.Code + " " + x.Phone,
                    MetaData = x.TotalDue
                }));


            case TypeAHeadType.Employee:
                var employees = await _db.Employees.Where(x => x.TenantId == appSession.TenantId)
                                .Where(x => x.Id == request || x.Code.StartsWith(request) || x.Name.Contains(request) || x.Surname.Contains(request))
                                .Select(x => new
                {
                    x.Id,
                    x.Code,
                    x.Name,
                    x.Surname,
                    x.MonthlyGrossSalary
                }).Take(10).ToListAsync();


                return(employees.ConvertAll(x =>
                                            new TypeAHeadViewModel()
                {
                    Id = x.Id,
                    Code = x.Code,
                    Name = x.Name,
                    DisplayData = string.IsNullOrWhiteSpace(x.Code) ? $"{x.Name} {x.Surname}" : $"{x.Name} {x.Surname}({x.Code})",
                    MetaData = x.MonthlyGrossSalary
                }));

            case TypeAHeadType.Partner:
                var partners = await _db.Partners.Where(x => x.TenantId == appSession.TenantId)
                               .Where(x => x.Id == request || x.Name.StartsWith(request) || x.Name.Contains(request)).Take(10)
                               .Select(x => new
                {
                    x.Id,
                    x.Name,
                    x.CurrentContribution
                }).ToListAsync();

                return(partners.ConvertAll(x =>
                                           new TypeAHeadViewModel()
                {
                    Id = x.Id,
                    Name = x.Name,
                    DisplayData = x.Name,
                    MetaData = x.CurrentContribution
                }));
            }

            return(new List <TypeAHeadViewModel>());
        }