// GET: Orders
        public ActionResult Index()
        {
            IEnumerable <Lib.Customer> customers = CRepo.GetCustomers();
            IEnumerable <Lib.Store>    stores    = SRepo.GetStores();
            IEnumerable <Lib.Products> products  = PRepo.GetProducts();
            IEnumerable <Lib.Order>    orders    = ORepo.GetOrders();

            var viewModels = orders.Select(o => new Orders
            {
                OrderId       = o.OrderId,
                StoreId       = o.StoreId,
                CustomerId    = o.CustomerId,
                DatePurchased = o.DatePurchased,
                Total         = o.Total,
                StoreName     = stores.Single(s => s.Id == o.StoreId).Name,
                FirstName     = customers.Single(c => c.Id == o.CustomerId).FirstName,
                LastName      = customers.Single(c => c.Id == o.CustomerId).LastName,
                FullName      = customers.Single(c => c.Id == o.CustomerId).FirstName + " " + customers.Single(c => c.Id == o.CustomerId).LastName
            }).ToList();

            decimal?totalSum = 0;
            decimal?maxNum   = viewModels.Any() ? viewModels.Max(ma => ma.Total) : 0;
            decimal?minNum   = viewModels.Any() ? viewModels.Min(ma => ma.Total) : 0;

            foreach (var item in viewModels)
            {
                totalSum += item.Total;
            }
            ViewBag.totalSum   = totalSum;
            ViewBag.averageSum = totalSum / viewModels.Count();
            ViewBag.maxNum     = maxNum;
            ViewBag.minNum     = minNum;

            return(View(viewModels));
        }
        // GET: Orders/Details/5
        public ActionResult Details(int id)
        {
            IEnumerable <Lib.Customer> customers  = CRepo.GetCustomers();
            IEnumerable <Lib.Store>    stores     = SRepo.GetStores();
            IEnumerable <Lib.Order>    orders     = ORepo.GetOrders();
            List <Lib.OrderList>       orderLists = ORepo.GetOrderLists(id).OrderBy(o => o.OrderId).ToList();
            List <Lib.Products>        products   = PRepo.GetProducts().OrderBy(p => p.ItemId).ToList();

            Lib.Order order = ORepo.GetOrderByOrderId(id);



            var viewModels = orders.Select(o => new Orders
            {
                OrderId       = o.OrderId,
                StoreId       = o.StoreId,
                CustomerId    = o.CustomerId,
                DatePurchased = o.DatePurchased,
                Total         = o.Total,
                //double total = db.tblCustomerOrders.Where(x => x.CustomerID == customer.CustomerID).Select(t => t.Amount ?? 0).Sum();

                StoreName = stores.Single(s => s.Id == o.StoreId).Name,
                FirstName = customers.Single(c => c.Id == o.CustomerId).FirstName,
                LastName  = customers.Single(c => c.Id == o.CustomerId).LastName,
                FullName  = customers.Single(c => c.Id == o.CustomerId).FirstName + " " + customers.Single(c => c.Id == o.CustomerId).LastName
            }).ToList();

            return(View());
        }
        // GET: Customer/Edit/5
        public ActionResult Edit(int id)
        {
            Lib.Customer libRest = CRepo.GetCustomerById(id);
            var          webRest = new Customer
            {
                CustomerId     = libRest.Id,
                FirstName      = libRest.FirstName,
                LastName       = libRest.LastName,
                DefaultStoreId = libRest.DefaultStoreId
            };

            return(View());
        }
Example #4
0
        // GET: Customer
        public ActionResult Index()
        {
            IEnumerable <Lib.Customer> customers = CRepo.GetCustomers();
            IEnumerable <Lib.Store>    stores    = SRepo.GetStores();

            var viewModels = customers.Select(c => new Customer
            {
                CustomerId       = c.Id,
                FirstName        = c.FirstName,
                LastName         = c.LastName,
                DefaultStoreId   = c.DefaultStoreId,
                DefaultStoreName = stores.Single(s => s.Id == c.DefaultStoreId).Name
            }).ToList();

            ViewBag.numOfCustomers = customers.Count();
            ViewBag.numOfStores    = stores.Count();

            return(View(viewModels));
        }
Example #5
0
        // GET: Customer/Edit/5
        public ActionResult Edit(int id)
        {
            //Lib.Restaurant libRest = Repo.GetRestaurantById(id);
            //var webRest = new Restaurant
            //{
            //    Id = libRest.Id,
            //    Name = libRest.Name
            //};

            Lib.Customer libRest = CRepo.GetCustomerById(id);
            var          webRest = new Customer
            {
                CustomerId     = libRest.Id,
                FirstName      = libRest.FirstName,
                LastName       = libRest.LastName,
                DefaultStoreId = libRest.DefaultStoreId
            };

            return(View());
        }
Example #6
0
        public ActionResult Create(Lib.Customer customer)
        {
            try
            {
                // TODO: Add insert logic here
                var newCustomer = new Lib.Customer
                {
                    FirstName      = customer.FirstName,
                    LastName       = customer.LastName,
                    DefaultStoreId = customer.DefaultStoreId
                };

                CRepo.InsertCustomer(newCustomer);
                return(RedirectToAction(nameof(Index)));
            }
            catch (Exception ex)
            {
                _logger.LogError(ex.ToString());
                return(RedirectToAction("Error", "Home"));
            }
        }
Example #7
0
        private List <CRepo> GetBlahRepos( )
        {
            var repos = new List <CRepo>();

            var marketPlaceData = new CRepo {
                Name = "sample-repo", Url = companyGit
            };
            var marketPlaceDataSolution1 = new CSolution
            {
                SolutionName = "Company.SampleService.SyncServices",
                SolutionPath = @"Code\SyncServices"
            };

            marketPlaceDataSolution1.Project.Add(new CProject
            {
                ProjectName      = "SampleService",
                ProjectShortName = "SampleService",
                Path             = "Company.SampleService.SyncServices.csproj",
                ProjectIs        = CProjectIs.Grpc
            });

            marketPlaceData.RepoSolution.Add(marketPlaceDataSolution1);
            repos.Add(marketPlaceData);


            repos.Add(new CRepo {
                Name = "news-svc", Url = companyGit
            });
            repos.Add(new CRepo {
                Name = "weather-report-svc", Url = companyGit
            });


            repos.Add(new CRepo {
                Name = "dockerize"
            });

            return(repos);
        }
Example #8
0
        //[FromRoute] int id, [Bind("Name")]Restaurant restaurant
        public ActionResult Edit([FromRoute] int id, [Bind("Name")] Customer customer)
        {
            try
            {
                // edit does not work

                if (ModelState.IsValid)
                {
                    Lib.Customer libRest = CRepo.GetCustomerById(id);
                    libRest.FirstName      = customer.FirstName;
                    libRest.LastName       = customer.LastName;
                    libRest.DefaultStoreId = customer.DefaultStoreId;
                    CRepo.Save();

                    return(RedirectToAction(nameof(Index)));
                }
                return(View(customer));
            }
            catch
            {
                return(View(customer));
            }
        }
        // GET: Orders/Create
        public ActionResult Create()
        {
            List <Lib.Products>  products   = PRepo.GetProducts().OrderBy(p => p.ItemId).ToList();
            List <Lib.OrderList> orderLists = new List <Lib.OrderList>();
            List <Lib.Customer>  Customers  = CRepo.GetCustomers().ToList();

            foreach (var product in products)
            {
                orderLists.Add(new Lib.OrderList
                {
                    OrderId     = 0,
                    ItemId      = 0,
                    OrderListId = 0,
                    ItemBought  = 0
                });
            }

            List <SelectListItem> customerItems = new List <SelectListItem>();

            foreach (var customer in Customers)
            {
                customerItems.Add(new SelectListItem()
                {
                    Text = customer.FirstName + " " + customer.LastName, Value = customer.Id.ToString()
                });
            }

            var viewModel = new Orders
            {
                Stores        = SRepo.GetStores().ToList(),
                customerItems = customerItems,
                Products      = products,
                OrderLists    = orderLists
            };

            return(View());
        }
Example #10
0
        public List <CRepo> GetBlahBlahRepos()
        {
            var repos = new List <CRepo>();


            var marketData = new CRepo {
                Name = "market-data", Url = companyGit
            };

            repos.Add(marketData);

            repos.Add(new CRepo {
                Name = "stocks-svc", Url = companyGit
            });
            repos.Add(new CRepo {
                Name = "warehouse-svc", Url = companyGit
            });

            repos.Add(new CRepo {
                Name = "dockerize"
            });

            return(repos);
        }
 public void Visit(CRepo repo)
 {
     _repoVisitor.Visit(this, repo);
 }
Example #12
0
 public ActionResult DrillDown()
 {
     return(View(CRepo.GetList()));
 }
Example #13
0
        public void BuildSellersMegaSolution()
        {
            var tempPath = OutputDir;

            var codeWriter = new CodeWriter();

            IServiceCollection serviceCollection = new ServiceCollection();

            serviceCollection.AddTransient <IVisualStudioSolutionWriter, VisualStudioSolutionWriter>();
            serviceCollection.AddTransient <ICSolutionVisitor, FastSolutionVisitor>();

            var fileWriter = new FileWriter();

            fileWriter.RootPath = tempPath;
            serviceCollection.AddSingleton <IFileWriter>(fileWriter);

            serviceCollection.AddSingleton <ILogger <CVisualStudioVisitorBase> >(new Logger <CVisualStudioVisitorBase>(new NullLoggerFactory()));
            serviceCollection.AddSingleton <ILogger <CMetaRepoVisitor> >(new Logger <CMetaRepoVisitor>(new NullLoggerFactory()));
            serviceCollection.AddSingleton <ILogger <CRepoVisitor> >(new Logger <CRepoVisitor>(new NullLoggerFactory()));
            serviceCollection.AddSingleton <ILogger <VisualStudioSolutionWriter> >(new Logger <VisualStudioSolutionWriter>(new NullLoggerFactory()));
            serviceCollection.AddSingleton <ILogger <CProjectVisitor> >(new Logger <CProjectVisitor>(new NullLoggerFactory()));
            serviceCollection.AddSingleton <ILogger <CProjectFileVisitor> >(new Logger <CProjectFileVisitor>(new NullLoggerFactory()));
            serviceCollection.AddSingleton <ILogger <CProjectContentVisitor> >(new Logger <CProjectContentVisitor>(new NullLoggerFactory()));
            serviceCollection.AddSingleton <ILogger <CDockerComposeFileVisitor> >(new Logger <CDockerComposeFileVisitor>(new NullLoggerFactory()));
            serviceCollection.AddSingleton <ILogger <CDockerFileServiceVisitor> >(new Logger <CDockerFileServiceVisitor>(new NullLoggerFactory()));

            serviceCollection.AddSingleton <ICodeWriter>(codeWriter);
            serviceCollection.AddTransient <ICVisualStudioVisitorBase, CVisualStudioVisitorBase>();

            serviceCollection.AddTransient <IFastSolutionVisitor, FastSolutionVisitor>();
            //serviceCollection.AddTransient<ICVisualStudioVisitor, CVisualStudioVisitor>();
            serviceCollection.AddTransient <ICMetaRepoVisitor, CMetaRepoVisitor>();
            serviceCollection.AddTransient <ICRepoVisitor, CRepoVisitor>();
            serviceCollection.AddTransient <ICVisualStudioVisitor, CVisualStudioVisitor>();

            //var serviceProvider = serviceCollection.BuildServiceProvider();

            var container = new Container();

            container.Configure(config =>
            {
                config.Scan(scanner =>
                {
                    scanner.AssemblyContainingType <ILogger>();

                    scanner.AssemblyContainingType <IKickstartService>();
                    scanner.SingleImplementationsOfInterface();
                });
                config.Populate(serviceCollection);
            });
            var serviceProvider = container.GetInstance <IServiceProvider>();

            var metaRepo = new MetaRepoBuilder().BuildSampleMetaRepo();
            var visitor  = serviceProvider.GetRequiredService <ICVisualStudioVisitorBase>(); // new CVisualStudioVisitor(new Mock<ILogger>().Object, codeWriter);

            metaRepo.Accept(visitor as IVisitor);

            Directory.CreateDirectory(tempPath);

            //http://thesoftwarecondition.com/blog/2014/06/08/nuget-issues-with-nested-solutions-branches/

            //get code from repos
            CommandProcessor.ExecuteCommandWindow(codeWriter.ToString(), tempPath, true);

            UpdateLibraryPaths(tempPath);
            var compositeSolution = new CSolution()
            {
                SolutionName = metaRepo.MetaRepoName
            };

            compositeSolution.SolutionPath = Path.Combine(tempPath, $"{compositeSolution.SolutionName}.sln");
            var compositeRepo = new CRepo();

            compositeRepo.RepoSolution.Add(compositeSolution);

            metaRepo.CompositeRepo = compositeRepo;


            //todo: dockerize Asp.Net apps
            //set docker-compose to looking in the Publish folder otherwise there's way too many files
            //add docker file to project
            //set dockerfile to copy when Publish


            //find all the solutions in repos
            foreach (var repo in metaRepo.Repos)
            {
                var repoPath      = Path.Combine(tempPath, repo.Name);
                var solutionPaths = new VisualStudioScanner().ScanForSolutions(repoPath);

                var solutions = new SlnToCSolutionConverter().Convert(solutionPaths);
                repo.RepoSolution.Clear();//remove any existing
                foreach (var solution in solutions)
                {
                    if (repo.SolutionWhiteList.Count > 0 && !repo.SolutionWhiteList.Contains(solution.SolutionName))
                    {
                        continue;
                    }
                    repo.RepoSolution.Add(solution);
                }
            }

            var dockerComposeFile = new DockerComposeFileService().Build(metaRepo);

            var dockerComposeProject = new CProject()
            {
                ProjectName = "docker-compose", ProjectIs = CProjectIs.DockerCompose, ProjectType = CProjectType.DockerProj, TemplateProjectPath = @"templates\Docker\docker-compose.dcproj"
            };

            dockerComposeProject.ProjectContent.Add(new CProjectContent {
                Content = dockerComposeFile, File = new CFile {
                    FileName = "docker-compose.yml", Encoding = Encoding.ASCII
                }, BuildAction = CBuildAction.None
            });
            compositeSolution.Project.Add(dockerComposeProject);


            var writer = serviceProvider.GetRequiredService <IVisualStudioSolutionWriter>();

            writer.Write(tempPath, compositeSolution);


            //add all the projects to the composite solution
            var fastSolutionVisitor = serviceProvider.GetRequiredService <IFastSolutionVisitor>(); // new FastSolutionVisitor(codeWriter, new Mock<IFileWriter>().Object);

            foreach (var repo in metaRepo.Repos)
            {
                foreach (var solution in repo.RepoSolution)
                {
                    fastSolutionVisitor.AddAllProjectsToMasterSln(solution, tempPath, compositeSolution.SolutionName);
                }
            }


            //generate batch script to do "Nuget Restore"
            //todo: move into library
            var batchWriter = new CodeWriter();

            foreach (var repo in metaRepo.Repos)
            {
                foreach (var solution in repo.RepoSolution)
                {
                    System.Uri uri1 = new Uri(tempPath);

                    System.Uri uri2 = new Uri(Path.GetDirectoryName(solution.SolutionPath));

                    Uri relativeUri  = uri1.MakeRelativeUri(uri2);
                    var relativePath = relativeUri.ToString().Replace("%20", " ");

                    batchWriter.WriteLine($@"copy nuget.exe ""{relativePath}/nuget.exe"" /Y");
                    batchWriter.WriteLine($"cd {relativePath}");
                    batchWriter.WriteLine($@"Nuget Restore ""{solution.SolutionPath}""");
                    batchWriter.WriteLine($@"del nuget.exe");
                    batchWriter.WriteLine("cd /D  %~dp0"); //go back to where batch was run
                }
            }
            File.WriteAllText(Path.Combine(tempPath, "NugetRestore.cmd"), batchWriter.ToString());
        }
Example #14
0
 public void Visit(IVisitor visitor, CRepo repo)
 {
     CodeWriter.WriteLine($@"CMD /c "" meta project add {repo.Name} {repo.Url}{repo.Name}");
 }