Ejemplo n.º 1
0
        public ActionResult Search(ModelSearch search)
        {
            if (search.Date != null && search.Date.Value.Date < DateTime.Now.Date)
            {
                ViewBag.Message = "Необходимо ввести корректные данные для поиска";
                return(RedirectToAction("Index", "Home"));
            }
            if (search.Date != null && search.Time != null)
            {
                DateTime dateTimeSearch = DateTime.Now;
                dateTimeSearch = (DateTime)(search.Date + search.Time);
                if (dateTimeSearch.AddMinutes(5) <= DateTime.Now)
                {
                    ViewBag.Message = "Необходимо ввести корректные данные для поиска";
                    return(RedirectToAction("Index", "Home"));
                }
            }
            if (search.Time != null && search.Date == null)
            {
                ViewBag.Message = "Необходимо ввести корректные данные для поиска";
                return(RedirectToAction("Index", "Home"));
            }


            //Заполнен город
            if (search.Place != null && search.TextSearch == null)
            {
                return(RedirectToAction("ResultRestaurants", search));
            }
            //заполнено поле текста для поиска
            else if (search.TextSearch != null)
            {
                switch (search.SearchTarget)
                {
                case "Object Name":
                {
                    return(RedirectToAction("ResultRestaurants", search));
                }

                case "Dish Name":
                {
                    return(RedirectToAction("ResultDishes", search));
                }

                case "Ingredient":
                {
                    return(RedirectToAction("ResultDishes", search));
                }

                default:
                    break;
                }
            }
            //ничего не заполнено
            else
            {
                ViewBag.Message = "Необходимо ввести корректные данные для поиска";
            }
            return(RedirectToAction("Index", "Home"));
        }
Ejemplo n.º 2
0
        private void IDSearch(object obj)
        {
            ModelSearch modelSearch = new ModelSearch(this);

            modelSearch.Owner = App.Current.MainWindow;
            modelSearch.Show();
        }
Ejemplo n.º 3
0
 public ActionResult <IEnumerable <ModelSHow> > Get([FromQuery] ModelSearch query)
 {
     try
     {
         return(Ok(_getS.Execute(query)));
     }
     catch (Exception e)
     {
         Console.WriteLine(e.Message);
         return(StatusCode(500));
     }
 }
Ejemplo n.º 4
0
        public int Search(ModelSearch model, out List <CategoryViewModel> data)
        {
            CategoryViewModel        item = new CategoryViewModel();
            List <CategoryViewModel> list = new List <CategoryViewModel>();

            data = new List <CategoryViewModel>();
            int results = 0;

            data = new List <CategoryViewModel>();
            try
            {
                string strQuery = "SELECT cate.`id`, cate.`code`, cate.`name`, cate.`description`,cate_parent.`id` as parent_id,cate_parent.`name` as parent_name";
                strQuery += " FROM product_category cate LEFT JOIN(SELECT `id`, `name` FROM `product_category`) cate_parent";
                strQuery += " ON cate.`parent_id` = cate_parent.`id`";
                //string strQuery = "SELECT * FROM `product_category`";
                data = _db.Query <CategoryViewModel>(strQuery, new { parent_id = model.parent_id }).ToList();

                if (!Utilities.isNullOrEmpty(model.parent_id))
                {
                    list = data.Where(x => x.parent_id == model.parent_id).ToList();
                    data = list;
                }
                if (model.Child_id != (int)Common.ReturnCode.Succeed && !Utilities.isNullOrEmpty(model.Child_id))
                {
                    list = data.Where(x => x.id == model.Child_id).ToList();
                    data = list;
                }
                if (!Utilities.isNullOrEmpty(model.code))
                {
                    list = data.Where(x => x.code == model.code).ToList();
                    data = list;
                }
                if (!Utilities.isNullOrEmpty(model.name))
                {
                    list = data.Where(x => x.name == model.name).ToList();
                    data = list;
                }
                if (!Utilities.isNullOrEmpty(model.parent_id) && Utilities.isNullOrEmpty(model.code) && Utilities.isNullOrEmpty(model.name))
                {
                    strQuery += "   WHERE  cate_parent.`id` = @id";
                    var itemparent = _db.Query <CategoryViewModel>(strQuery, new { id = model.parent_id }).FirstOrDefault();
                    list.Add(itemparent);
                    data = list;
                }
                return(results);
            }
            catch (Exception ex)
            {
                data = null;
            }
            return(results);
        }
Ejemplo n.º 5
0
        public EFModelExplorer(EFModelExplorerToolWindowBase serviceProvider)
            : this((IServiceProvider)serviceProvider)
        {
            SuspendLayout();

            searchControl = new ModelSearch {
                Dock = DockStyle.Top
            };
            Controls.Add(searchControl);
            Controls.SetChildIndex(searchControl, 0);

            ResumeLayout(false);
            PerformLayout();
        }
        public IEnumerable <ModelSHow> Execute(ModelSearch request)
        {
            var models = Context.Models.AsQueryable();

            if (request.Name != null)
            {
                models.Where(m => m.Name.ToLower() == request.Name.ToLower());
            }
            return(models.Select(m => new ModelSHow
            {
                Id = m.Id,
                Name = m.Name
            }));
        }
Ejemplo n.º 7
0
        public PageResponse <ModelDto> Execute(ModelSearch request)
        {
            var query        = Context.Modeli.Include(m => m.Marka).AsQueryable().Skip((request.PageNumber - 1) * request.PerPage).Take(request.PerPage);
            var totalRecords = query.Count();
            var pagesCount   = (int)Math.Ceiling((double)totalRecords / request.PerPage);

            if (request != null)
            {
                if (request.Keyword != null)
                {
                    query = query.Where(m => m.Model
                                        .ToLower()
                                        .Contains(request.Keyword.ToLower()));
                }
                totalRecords = query.Count();
                var response = new PageResponse <ModelDto>
                {
                    CurrentPage = request.PageNumber,
                    TotalCount  = totalRecords,
                    PagesCount  = pagesCount,
                    Data        = query.Select(m => new ModelDto
                    {
                        Id           = m.Id,
                        Model        = m.Model,
                        Marka        = m.Marka.MarkaAutomobila,
                        DateCreated  = m.DateCreated,
                        DateModified = m.DateModified
                    })
                };

                return(response);
            }
            else
            {
                return(new PageResponse <ModelDto>
                {
                    CurrentPage = request.PageNumber,
                    TotalCount = totalRecords,
                    PagesCount = pagesCount,
                    Data = query.Select(m => new ModelDto
                    {
                        Id = m.Id,
                        Model = m.Model,
                        DateCreated = m.DateCreated,
                        DateModified = m.DateModified
                    })
                });
            }
        }
        public ActionResult Index(ModelSearch model, int?page)
        {
            var pagenumber = page ?? 1;
            List <CategoryViewModel> List = new List <CategoryViewModel>();

            int result = _categoryBL.Search(model, out List);

            if (List != null)
            {
                var ListPage = List.ToPagedList(pagenumber, 20);
                ViewBag.ListSearch = List.OrderByDescending(x => x.id);
                return(View(new Tuple <ModelSearch, IPagedList <CategoryViewModel> >(model, ListPage)));
            }
            return(View());
        }
Ejemplo n.º 9
0
 public IActionResult Get([FromQuery] ModelSearch search)
 {
     try
     {
         var model = _getModelsCommand.Execute(search);
         return(Ok(model));
     }
     catch (EntityNotFoundException e)
     {
         if (e.Message == "Model doesn't exist.")
         {
             return(NotFound(e.Message));
         }
         return(UnprocessableEntity(e.Message));
     }
 }
Ejemplo n.º 10
0
        private static List <Restaurant> FindRestaurantsByCityDate(ModelSearch search)
        {
            List <Restaurant> restaurants;
            int dayWeekSearch   = (int)search.Date.Value.DayOfWeek;
            var WorkMinutIdRest = (from ws in db.WorkSchedules
                                   join r in db.Restaurants on ws.RestaurantId equals r.Id
                                   where (ws.DayOfWeek == 8 || ws.DayOfWeek == 3) &&
                                   r.Address.City == search.Place
                                   group ws by ws.RestaurantId into g
                                   let amount = g.Sum(s => s.WorkMinutes)
                                                select new
            {
                IDRest = g.Key,
                SumWorkDay = amount
            }).ToList();

            var BookMinutTableIdRestId = (from ot in db.OrderTables.ToList()
                                          join t in db.Tables on ot.TableId equals t.Id
                                          join r in db.Restaurants on t.RestaurantId equals r.Id
                                          where ot.OrderTimeFrom.Date == DateTime.Parse(search.Date.Value.Date.ToString("MM/dd/yyyy")) &&
                                          r.Address.City == search.Place
                                          group ot by new
            {
                ot.Order.RestaurantId,
                ot.TableId,
            } into g
                                          let amount = g.Sum(s => s.BookingMinutes)
                                                       select new
            {
                IDRest = g.Key.RestaurantId,
                IDTable = g.Key.TableId,
                BookTimeTable = amount
            }).ToList();

            var idRestFreeTableOnDate = (from WorkMinutIdRestItem in WorkMinutIdRest
                                         join BookMinutTableItem in BookMinutTableIdRestId
                                         on WorkMinutIdRestItem.IDRest equals BookMinutTableItem.IDRest into ps
                                         from BookMinutTableItem in ps.DefaultIfEmpty()
                                         let FreeTableTime = WorkMinutIdRestItem.SumWorkDay - (BookMinutTableItem == null ? 0 : BookMinutTableItem.BookTimeTable)
                                                             where FreeTableTime == null || FreeTableTime >= 30
                                                             select WorkMinutIdRestItem.IDRest
                                         ).Distinct().ToList();

            restaurants = (db.Restaurants.Where(r => idRestFreeTableOnDate.Contains(r.Id))).ToList();
            return(restaurants);
        }
        public ActionResult ShowAllTable(int id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            Restaurant restaurant = db.Restaurants.Find(id);

            if (restaurant == null)
            {
                return(HttpNotFound());
            }
            RestaurantDetailsSearchViewModel model = new RestaurantDetailsSearchViewModel();
            ModelSearch search = new ModelSearch();

            model.Search         = search;
            model.Restaurant     = restaurant;
            model.TablesBySearch = restaurant.Tables.ToList();
            return(View("~/Views/Search/ViewDetailsSearchRestaurant.cshtml", model));
        }
Ejemplo n.º 12
0
 public static void SetFolderFbxType()
 {
     Object[] folds = Selection.objects;
     for (int iii = 0; iii < folds.Length; iii++)
     {
         string       relatepath  = AssetDatabase.GetAssetPath(folds[iii]);
         string       folderpath  = Path.GetFullPath(relatepath);
         AssetsSearch assetSearch = new ModelSearch(folderpath.Replace("\\", "/").Replace(Application.dataPath, "Assets"));
         assetSearch.Search();
         for (int i = 0; i < assetSearch.Assets.Count; i++)
         {
             string filepath = assetSearch.Assets[i];
             if (!Path.GetExtension(filepath).Equals(".FBX"))
             {
                 continue;
             }
             ModelImporter assets = AssetImporter.GetAtPath(filepath) as ModelImporter;
             if (assets == null)
             {
                 Debug.LogError("assetimport is null" + filepath);
                 continue;
             }
             if (filepath.Contains("@"))
             {
                 assets.isReadable           = false;
                 assets.importMaterials      = false;
                 assets.animationCompression = ModelImporterAnimationCompression.Optimal;
             }
             else
             {
                 assets.importAnimation = false;
                 assets.isReadable      = false;
             }
             assets.SaveAndReimport();
         }
     }
     AssetDatabase.Refresh();
 }
Ejemplo n.º 13
0
        public ActionResult Index(int?page)
        {
            ModelSearch ModelSearch = new ModelSearch();

            ModelSearch.code = Request.Form["code"];
            ModelSearch.name = Request.Form["name"];
            int  Out;
            bool checkparent = int.TryParse(Request.Form["parent"], out Out);

            if (checkparent == true)
            {
                ModelSearch.parent_id = int.Parse(Request.Form["parent"]);
            }
            bool checkchild = int.TryParse(Request.Form["child"], out Out);

            if (checkchild == true)
            {
                ModelSearch.Child_id = int.Parse(Request.Form["child"]);
            }
            ModelSearch.parent_id = 0;
            var pageNumber = page ?? 1;
            List <CategoryViewModel> model = new List <CategoryViewModel>();

            if (ModelSearch.name == null && ModelSearch.code == null && ModelSearch.parent_id == 0)
            {
                model = _categoryBL.GetAll();
            }
            else
            {
                int result = _categoryBL.Search(ModelSearch, out model);
            }
            var List = model.ToPagedList(pageNumber, 13);

            ViewBag.ListSearch = model.OrderByDescending(x => x.id);
            return(View(new Tuple <ModelSearch, IPagedList <CategoryViewModel> >(ModelSearch, List)));
        }
Ejemplo n.º 14
0
        private static void ParseArgs(string[] args)
        {
            var structuredArgs = StructuredArguments.FromStrings(args);

            void BatchSimulation()
            {
                var fromSeed    = structuredArgs.AsIntOrDefault("From", 1);
                var toSeed      = structuredArgs.AsIntOrDefault("To", 10);
                var td          = BatchSimulator.LinesFromSeedRange(fromSeed, toSeed);
                var outFilename = $"results_from_{fromSeed}_to_{toSeed}.bin";

                TrainingDataPersistence.SaveToDisk(td, outFilename);
            }

            void BatchSimulationOptimizationBased()
            {
                var td = OptimizationBasedGenerator.BatchGenerateTrainingData(100, 100);

                TrainingDataPersistence.SaveToDisk(td, $"new_results.bin");
            }

            void TrainNetwork()
            {
                var td    = TrainingDataPersistence.LoadFromDisk(structuredArgs.AsString("Filename"));
                var tvd   = MlUtils.Split(td, 0.5f, false);
                var model = NetworkTrainer.TrainNetworkWithData(tvd.Training, tvd.Validation);

                model.Save("model.hdf5");
            }

            void TrainNetworkOrthogonalSampling()
            {
                var td    = TrainingDataPersistence.ParseCsv(structuredArgs.AsString("Filename"));
                var tvd   = MlUtils.Split(td, 0.999f, true);
                var model = NetworkTrainer.TrainNetworkWithData(tvd.Training, tvd.Validation);

                model.Save("modelOrtho.hdf5");
            }

            void JobGeneration()
            {
                JobGenerator.GenerateJobs();
            }

            void MergeResults()
            {
                var mergedData = MergeResultFiles.MergeDataInPath(".", ".bin");

                TrainingDataPersistence.SaveToDisk(mergedData, "merged.bin");
            }

            void PrintData()
            {
                var maxCount = structuredArgs.AsIntOrDefault("NumRows", int.MaxValue);
                var samples  = TrainingDataPersistence.LoadFromDisk(structuredArgs.AsString("Filename")).Samples;

                Console.WriteLine(
                    $"Overall number of samples is {samples.Count}. Now showing up to {maxCount} samples...");
                var ctr = 0;

                foreach (var sample in samples)
                {
                    Console.WriteLine(sample);
                    if (ctr++ >= maxCount)
                    {
                        break;
                    }
                }
            }

            void Optimize()
            {
                var methodName = structuredArgs.AsStringOrDefault("Method", "LocalSolver");
                var problem    = ProblemInstanceGenerator.Generate(23);
                BaseProductionRatePredictor predictor = null;

                //predictor = new KerasNeuralProductionRatePredictor(ModelPersistence.LoadFromDisk("model.hdf5"));
                predictor = new OnnxNeuralProductionRatePredictor("converted.onnx");
                //predictor = new MlProductionRatePredictor("model.zip");
                MilkrunBufferAllocationSolution sol = null;

                switch (methodName)
                {
                case "SimulatedAnnealing":
                    sol = SimAnnealOptimizer.Solve(problem, predictor, 1000, 1.0f);
                    break;

                case "LocalSolver":
                    //var evaluator = new SimulationEvaluator(problem);
                    var evaluator = new PredictorBasedEvaluator(problem, predictor);
                    sol = LocalSolverOptimizer.Solve(problem, evaluator);
                    break;
                }

                Console.WriteLine("Solution of optimization = {0}", sol);
                Console.WriteLine("Production rate from predictor = {0}", predictor.Predict(sol.ToSample(problem.ProcessingRates)));
                Console.WriteLine("Production rate from simulation = {0}", SimulationRunner.ProductionRateForConfiguration(sol.ToFlowlineConfiguration(problem.ProcessingRates)));
                Console.WriteLine("Minimum production rate = {0}", problem.MinProductionRate);
            }

            void TrainForest()
            {
                var       td          = TrainingDataPersistence.LoadFromDisk(structuredArgs.AsString("Filename"));
                var       tvd         = MlUtils.Split(td, 0.999f, true);
                MLContext context     = new MLContext(23);
                var       transformer = ModelTrainer.TrainModelWithData(context, tvd.Training, tvd.Validation, out var schema);

                context.Model.Save(transformer, schema, "model.zip");
            }

            void AutoMl()
            {
                var       td      = TrainingDataPersistence.LoadFromDisk(structuredArgs.AsString("Filename"));
                var       tvd     = MlUtils.Split(td, 1.0f, true);
                MLContext context = new MLContext(23);

                ModelSearch.AutoMlOnDataset(context, tvd.Training, tvd.Validation);
            }

            void DumpPredictionErrors()
            {
                var td  = TrainingDataPersistence.LoadFromDisk(structuredArgs.AsString("Filename"));
                var tvd = MlUtils.Split(td, 0.5f, false);
                var dnn = new OnnxNeuralProductionRatePredictor("converted.onnx");

                PredictionSample Predict(Sample sample)
                {
                    var   predictedRate = dnn.Predict(sample);
                    float deviation     = predictedRate - sample.ProductionRate;

                    return(new PredictionSample(sample, deviation));
                }

                var psamples = tvd.Validation.Samples.Take(100).Select(Predict).ToList();

                File.WriteAllText("deviations.csv", CsvSerializer.SerializeToCsv(psamples));
            }

            void TestExhaustiveGenerator()
            {
                int numMachines = 6;
                int numBuffers  = numMachines - 1;
                var features    = new List <FeatureDescription> {
                    new FeatureDescription {
                        IsDiscrete = false,
                        LowerBound = 30,
                        UpperBound = 120,
                        Name       = DefaultFeatures.MilkRunCycleLength.ToString()
                    }
                };

                features.AddRange(Enumerable.Range(0, numMachines).Select(i =>
                                                                          new FeatureDescription {
                    IsDiscrete = false,
                    LowerBound = 0.8,
                    UpperBound = 1.2,
                    Name       = DefaultFeatures.ProcessingRate + $"{i+1}"
                }));
                features.AddRange(Enumerable.Range(0, numMachines).Select(i =>
                                                                          new FeatureDescription {
                    IsDiscrete = false,
                    LowerBound = 0.5,
                    UpperBound = 1.5,
                    Name       = DefaultFeatures.MaterialRatio + $"{i+1}"
                }));
                features.AddRange(Enumerable.Range(0, numBuffers).Select(i =>
                                                                         new FeatureDescription {
                    IsDiscrete = true,
                    LowerBound = 0,
                    UpperBound = 80,
                    Name       = DefaultFeatures.BufferSize + $"{i+1}"
                }));

                // Big ortho experiment
                //int targetSampleCount = 2000000;
                //int subCubeSplitFactor = 2;

                // Small latin only experiment
                int targetSampleCount  = 2000000;
                int subCubeSplitFactor = 1;

                int numCubes  = Utils.Pow(subCubeSplitFactor, features.Count);
                int numValues = (int)Math.Ceiling(targetSampleCount / (double)numCubes) * numCubes;
                var samples   = OrthoLatinHyperCube.PickSamples(features.ToArray(), numValues, subCubeSplitFactor);
                var lines     = new List <string> {
                    string.Join(",", samples.First().ColumnNames())
                };

                lines.AddRange(samples.Select(sample => string.Join(",", sample.ToFloats())));
                File.WriteAllText("ortholatinhypercube.csv", string.Join("\n", lines));

                Console.WriteLine("\nDistinct values");
                for (int i = 0; i < numMachines; i++)
                {
                    if (i < numBuffers)
                    {
                        Console.WriteLine($"Distinct buffer {i+1} sizes = {samples.Select(s => s.BufferSizes[i]).Distinct().Count()}");
                    }
                    Console.WriteLine($"Distinct order up to levels {i+1} = {samples.Select(s => s.OrderUpToLevels[i]).Distinct().Count()}");
                    Console.WriteLine($"Distinct processing rates {i+1} = {samples.Select(s => s.ProcessingRates[i]).Distinct().Count()}");
                }
                Console.WriteLine($"Distinct milk run cycle lengths = {samples.Select(s => s.MilkrunCycleLength).Distinct().Count()}");
            }

            void GenerateInstance()
            {
                int    seed           = structuredArgs.AsInt("Seed");
                string filename       = structuredArgs.AsStringOrDefault("Filename", "instance.json");
                var    flowLineConfig = InstanceGenerator.Generate(seed);

                Utils.SaveObjectAsJson(flowLineConfig, filename);
            }

            var availableActions = new List <Action> {
                BatchSimulation,
                TrainNetwork,
                TrainNetworkOrthogonalSampling,
                JobGeneration,
                MergeResults,
                PrintData,
                Optimize,
                TrainForest,
                AutoMl,
                BatchSimulationOptimizationBased,
                DumpPredictionErrors,
                TestExhaustiveGenerator,
                GenerateInstance
            };

            var actionMappings =
                availableActions.ToDictionary(action => Utils.NameOfLocalActionFunction("ParseArgs", action),
                                              action => action);

            if (args.Length >= 1)
            {
                var action = structuredArgs.GetAction();
                if (actionMappings.ContainsKey(action))
                {
                    actionMappings[action]();
                    return;
                }
            }

            ShowUsage(actionMappings);
        }
Ejemplo n.º 15
0
        public async System.Threading.Tasks.Task <ActionResult> ResultRestaurants(ModelSearch search)
        {
            IList <Restaurant> restaurants        = null;
            RestaurantResultSearchViewModel model = new RestaurantResultSearchViewModel {
                Restaurants = restaurants, ModelSearch = search
            };

            model.NationalCuisines = db.NationalCuisines.ToList();
            model.TargetAudiences  = db.TargetAudiences.ToList();
            model.TypeFoods        = db.TypeFoods.ToList();
            model.Attributes       = db.Attributes.ToList();
            //Заполнен город
            if (search.Place != null && search.TextSearch == null)
            {
                //введен только город для поиска (время/дата == null)
                if (search.Date == null &&
                    search.Time == null)
                {
                    if (search.NumberPersons == null || search.NumberPersons == 0)
                    {
                        //возвращаем рестораны только по городу (все)
                        model.Restaurants = (from t in db.Restaurants                                   // определяем каждый объект из teams как t
                                             where (t.Address.City.ToUpper() == search.Place.ToUpper()) //фильтрация по критерию
                                             orderby t.AverageCheckRestaurant                           // упорядочиваем по возрастанию
                                             select t).ToList();                                        // выбираем объект
                        model.TypeSearch = "City";
                    }
                    else
                    {
                        //возвращаем рестораны по городу и числу персон
                        model.Restaurants = (from t in db.Restaurants                                                                                                                                                // определяем каждый объект из teams как t
                                             where (t.Address.City.ToUpper() == search.Place.ToUpper() && t.Tables.Any(m => m.MaxNumberPeople >= search.NumberPersons && search.NumberPersons >= m.MinNumberPeople)) //фильтрация по критерию
                                             orderby t.AverageCheckRestaurant                                                                                                                                        // упорядочиваем по возрастанию
                                             select t).ToList();                                                                                                                                                     // выбираем объект
                        model.TypeSearch = "CityPerson";
                    }
                }
                //введен город, время, дата и число персон
                else if (search.Date != null &&
                         search.Time != null)
                {
                    int      dayWeekSearch  = (int)search.Date.Value.DayOfWeek;
                    DateTime dateTimeSearch = (DateTime)(search.Date + search.Time);

                    if (search.NumberPersons == null || search.NumberPersons == 0)
                    {
                        model.Restaurants = (from r in db.Restaurants.ToList()
                                             join ws in db.WorkSchedules on r.Id equals ws.RestaurantId
                                             join t in db.Tables on r.Id equals t.RestaurantId
                                             where (r.Address.City.ToUpper() == search.Place.ToUpper() &&
                                                    (ws.DayOfWeek == 8 || ws.DayOfWeek == dayWeekSearch) &&
                                                    (ws.TimeFrom <= search.Time && ws.TimeTo >= search.Time))
                                             select r).Distinct().Intersect((from r in db.Restaurants.ToList()
                                                                             join tt in db.Tables on r.Id equals tt.RestaurantId
                                                                             where !(from t in db.Tables.ToList()
                                                                                     join ot in db.OrderTables on t.Id equals ot.TableId
                                                                                     where ot.OrderTimeFrom <= dateTimeSearch && ot.OrderTimeTo > dateTimeSearch
                                                                                     select t.Id).Contains(tt.Id)
                                                                             select r).Distinct()).ToList();

                        model.TypeSearch = "CityDateTime";
                    }
                    else
                    {
                        model.Restaurants = (from r in db.Restaurants.ToList()
                                             join ws in db.WorkSchedules on r.Id equals ws.RestaurantId
                                             join t in db.Tables on r.Id equals t.RestaurantId
                                             where (r.Address.City.ToUpper() == search.Place.ToUpper() &&
                                                    (ws.DayOfWeek == 8 || ws.DayOfWeek == dayWeekSearch) &&
                                                    (ws.TimeFrom <= search.Time && ws.TimeTo >= search.Time) &&
                                                    (t.MinNumberPeople <= search.NumberPersons && t.MaxNumberPeople >= search.NumberPersons))
                                             select r).Distinct().Intersect((from r in db.Restaurants.ToList()
                                                                             join tt in db.Tables on r.Id equals tt.RestaurantId
                                                                             where !(from t in db.Tables.ToList()
                                                                                     join ot in db.OrderTables on t.Id equals ot.TableId
                                                                                     where ot.OrderTimeFrom <= dateTimeSearch &&
                                                                                     ot.OrderTimeTo > dateTimeSearch
                                                                                     select t.Id).Contains(tt.Id)
                                                                             select r).Distinct()).ToList();
                        model.TypeSearch = "CityDateTimePerson";
                    }
                }
                //введен город и дата (время == null)
                else if (search.Date != null &&
                         search.Time == null)
                {
                    int dayWeekSearch = (int)search.Date.Value.DayOfWeek;

                    if (search.NumberPersons == null || search.NumberPersons == 0)
                    {
                        model.Restaurants = FindRestaurantsByCityDate(search);
                        model.TypeSearch  = "CityDate";
                    }
                    else
                    {
                        var WorkMinutIdRest = (from ws in db.WorkSchedules
                                               join r in db.Restaurants on ws.RestaurantId equals r.Id
                                               join t in db.Tables on r.Id equals t.RestaurantId
                                               where (ws.DayOfWeek == 8 || ws.DayOfWeek == dayWeekSearch) &&
                                               r.Address.City.ToUpper() == search.Place.ToUpper() &&
                                               (t.MinNumberPeople <= search.NumberPersons && t.MaxNumberPeople >= search.NumberPersons)
                                               group ws by ws.RestaurantId into g
                                               let amount = g.Sum(s => s.WorkMinutes)
                                                            select new
                        {
                            IDRest = g.Key,
                            SumWorkDay = amount
                        }).ToList();

                        var BookMinutTableIdRestId = (from ot in db.OrderTables.ToList()
                                                      join t in db.Tables on ot.TableId equals t.Id
                                                      join r in db.Restaurants on t.RestaurantId equals r.Id
                                                      where ot.OrderTimeFrom.Date == DateTime.Parse(search.Date.Value.Date.ToString("dd/MM/yyyy")) &&
                                                      r.Address.City.ToUpper() == search.Place.ToUpper() &&
                                                      (t.MinNumberPeople <= search.NumberPersons && t.MaxNumberPeople >= search.NumberPersons)
                                                      group ot by new
                        {
                            ot.Order.RestaurantId,
                            ot.TableId,
                        } into g
                                                      let amount = g.Sum(s => s.BookingMinutes)
                                                                   select new
                        {
                            IDRest = g.Key.RestaurantId,
                            IDTable = g.Key.TableId,
                            BookTimeTable = amount
                        }).ToList();

                        var idRestFreeTableOnDate = (from WorkMinutIdRestItem in WorkMinutIdRest
                                                     join BookMinutTableItem in BookMinutTableIdRestId
                                                     on WorkMinutIdRestItem.IDRest equals BookMinutTableItem.IDRest into ps
                                                     from BookMinutTableItem in ps.DefaultIfEmpty()
                                                     let FreeTableTime = WorkMinutIdRestItem.SumWorkDay - (BookMinutTableItem == null ? 0 : BookMinutTableItem.BookTimeTable)
                                                                         where FreeTableTime == null || FreeTableTime >= 30
                                                                         select WorkMinutIdRestItem.IDRest
                                                     ).Distinct().ToList();

                        model.Restaurants = (db.Restaurants.Where(r => idRestFreeTableOnDate.Contains(r.Id))).ToList();
                        model.TypeSearch  = "CityDatePerson";
                    }
                }
                else
                {
                    ViewBag.Message = "Необходимо ввести данные для поиска";
                }
            }
            //заполнено только поле текста для поиска
            else if (search.Place == null && search.TextSearch != null)
            {
                switch (search.SearchTarget)
                {
                case "Object Name":
                {
                    //выведем все рестораны
                    if (search.NumberPersons == null || search.NumberPersons == 0)
                    {
                        model.Restaurants = (from t in db.Restaurants                                                                                          // определяем каждый объект из teams как t
                                             where (t.Name.ToUpper() == search.TextSearch.ToUpper() || t.Name.ToUpper().Contains(search.TextSearch.ToUpper())) //фильтрация по критерию
                                             orderby t.AverageCheckRestaurant                                                                                  // упорядочиваем по возрастанию
                                             select t).ToList();                                                                                               // выбираем объект
                        model.TypeSearch = "Object";
                    }
                    else
                    {
                        model.Restaurants = (from t in db.Restaurants         // определяем каждый объект из teams как t
                                             where (t.Name.ToUpper() == search.TextSearch.ToUpper() ||
                                                    t.Name.ToUpper().Contains(search.TextSearch.ToUpper()) &&
                                                    t.Tables.Any(m => m.MaxNumberPeople <= search.NumberPersons && search.NumberPersons >= m.MinNumberPeople)) //фильтрация по критерию
                                             orderby t.AverageCheckRestaurant                                                                                  // упорядочиваем по возрастанию
                                             select t).ToList();                                                                                               // выбираем объект
                        model.TypeSearch = "ObjectPerson";
                    }
                }
                break;



                default:
                    break;
                }
            }
            //заролнен город и поле для текста поиска
            else if (search.Place != null && search.TextSearch != null)
            {
                switch (search.SearchTarget)
                {
                case "Object Name":
                {
                    //выведем все рестораны
                    if (search.NumberPersons == null || search.NumberPersons == 0)
                    {
                        model.Restaurants = (from t in db.Restaurants                                       // определяем каждый объект из teams как t
                                             where (t.Address.City.ToUpper() == search.Place.ToUpper() && t.Name.ToUpper() == search.TextSearch.ToUpper() ||
                                                    t.Name.ToUpper().Contains(search.TextSearch.ToUpper())) //фильтрация по критерию
                                             orderby t.AverageCheckRestaurant                               // упорядочиваем по возрастанию
                                             select t).ToList();                                            // выбираем объект
                        model.TypeSearch = "CityObject";
                    }
                    else
                    {
                        model.Restaurants = (from t in db.Restaurants         // определяем каждый объект из teams как t
                                             where (t.Address.City.ToUpper() == search.Place.ToUpper() &&
                                                    (t.Name.ToUpper() == search.TextSearch.ToUpper() ||
                                                     t.Name.ToUpper().Contains(search.TextSearch.ToUpper()) &&
                                                     t.Tables.Any(m => m.MaxNumberPeople <= search.NumberPersons &&
                                                                  search.NumberPersons >= m.MinNumberPeople))) //фильтрация по критерию
                                             orderby t.AverageCheckRestaurant                                  // упорядочиваем по возрастанию
                                             select t).ToList();                                               // выбираем объект
                        model.TypeSearch = "CityObjectPerson";
                    }
                } break;

                default:
                    break;
                }
            }
            //ничего не заполнено
            else
            {
                ViewBag.Message = "Необходимо ввести данные для поиска";
            }

            await UpdateReviewForRestaurantsAsync(model.Restaurants);

            return(View(model));
        }
Ejemplo n.º 16
0
        private void IDSearch(object obj)
        {
            ModelSearch modelSearch = new ModelSearch(this);

            modelSearch.Show();
        }
Ejemplo n.º 17
0
 public int  Search(ModelSearch model, out List <CategoryViewModel> data)
 {
     return(_categoryDAO.Search(model, out data));
 }
Ejemplo n.º 18
0
 private void Awake()
 {
     instance = this;
 }
Ejemplo n.º 19
0
        // IdRest = item.Id, Search = Model.ModelSearch, TypeSearch = Model.TypeSearch
        //public ActionResult ViewDetailsSearch (int IdRest, ModelSearch Search, string TypeSearch)
        public ActionResult ViewDetailsSearchRestaurant(ViewDetailsSearchModel model)
        {
            Restaurant    restaurant     = db.Restaurants.Find(model.IdRest);
            IList <Table> tables         = null;
            int           dayWeekSearch  = -1;
            string        date           = String.Empty;
            DateTime      dateTimeSearch = DateTime.Now;

            if (model.Date != null)
            {
                dayWeekSearch = (int)model.Date.Value.DayOfWeek;
                date          = model.Date.Value.Date.ToString("dd/MM/yyyy");
                //date = model.Date.Value.Date.ToString("MM/dd/yyyy");
                if (model.Time != null)
                {
                    dateTimeSearch = (DateTime)(model.Date + model.Time);
                }
            }
            if (restaurant == null)
            {
                return(HttpNotFound());
            }
            switch (model.TypeSearch)
            {
            case "City":
            case "Object":
            case "CityObject":
            {
                return(RedirectToAction("Details", "Restaurant", new { id = model.IdRest }));
            }

            case "CityPerson":
            case "ObjectPerson":
            case "CityObjectPerson":
            {
                tables = restaurant.Tables.Where(t => t.MaxNumberPeople >= model.NumberPersons &&
                                                 t.MinNumberPeople <= model.NumberPersons && t.Availability == true).ToList();
            }
            break;

            case "CityDateTime":
            {
                // where ot.OrderTimeFrom <= dateTimeSearch && ot.OrderTimeTo > dateTimeSearch
                tables = restaurant.Tables.Where(t => !(t.OrderTables.Where(ot => ot.OrderTimeFrom <= dateTimeSearch && ot.OrderTimeTo > dateTimeSearch).Select(s => s.TableId)).Contains(t.Id) &&
                                                 t.Availability == true).ToList();
            } break;

            case "CityDate":
            {
                int workMinute = restaurant.WorkSchedules.Where(ws => ws.DayOfWeek == 8 || ws.DayOfWeek == dayWeekSearch).Sum(s => s.WorkMinutes);
                tables = restaurant.Tables.Where(t => (workMinute -
                                                       t.OrderTables.Where(ot => ot.OrderTimeFrom.Date == model.Date.Value.Date).Sum(m => m.BookingMinutes)) > 30 &&
                                                 t.Availability == true).ToList();
            } break;

            case "CityDatePerson":
            {
                int workMinute = restaurant.WorkSchedules.Where(ws => ws.DayOfWeek == 8 || ws.DayOfWeek == dayWeekSearch).Sum(s => s.WorkMinutes);
                tables = restaurant.Tables.Where(t => (workMinute -
                                                       t.OrderTables.Where(ot => ot.OrderTimeFrom.Date == model.Date.Value.Date).Sum(m => m.BookingMinutes)) > 30 &&
                                                 t.Availability == true &&
                                                 t.MaxNumberPeople >= model.NumberPersons &&
                                                 t.MinNumberPeople <= model.NumberPersons).ToList();
            } break;

            case "CityDateTimePerson":
            {
                tables = restaurant.Tables.Where(t =>
                                                 !(t.OrderTables.Where(ot => ot.OrderTimeFrom <= dateTimeSearch && ot.OrderTimeTo > dateTimeSearch).Select(s => s.TableId)).Contains(t.Id) &&
                                                 t.MaxNumberPeople >= model.NumberPersons &&
                                                 t.MinNumberPeople <= model.NumberPersons && t.Availability == true).ToList();
            } break;

            default:
                break;
            }
            ModelSearch search = new ModelSearch()
            {
                Place = model.Place, Date = model.Date, Time = model.Time, NumberPersons = model.NumberPersons
            };
            RestaurantDetailsSearchViewModel restaurantDetailsSearchViewModel = new RestaurantDetailsSearchViewModel()
            {
                Restaurant     = restaurant,
                Search         = search,
                TablesBySearch = tables
            };

            return(View(restaurantDetailsSearchViewModel));
        }
Ejemplo n.º 20
0
        public ActionResult ResultDishes(ModelSearch search)
        {
            DishResultSearchViewModel model = new DishResultSearchViewModel();

            model.ModelSearch = search;
            switch (search.SearchTarget)
            {
            case "Object Name":
            {
                return(RedirectToAction("ResultRestaurants", search));
            }

            case "Dish Name":
            {
                if (search.Place == null)
                {
                    IList <Dish> dishes = (from t in db.Dishes                                                                                               // определяем каждый объект из teams как t
                                           where (t.Name.ToUpper() == search.TextSearch.ToUpper() || t.Name.ToUpper().Contains(search.TextSearch.ToUpper())) //фильтрация по критерию
                                           orderby t.Price                                                                                                   // упорядочиваем по возрастанию
                                           select t).ToList();                                                                                               // выбираем объект
                    model.Dishes     = dishes;
                    model.TypeSearch = "Dish";
                }
                else
                {
                    IList <Dish> dishes = (from t in db.Dishes                                                                                                                                                // определяем каждый объект из teams как t
                                           where ((t.Restaurant.Address.City == search.Place) && (t.Name.ToUpper() == search.TextSearch.ToUpper() || t.Name.ToUpper().Contains(search.TextSearch.ToUpper()))) //фильтрация по критерию
                                           orderby t.Price                                                                                                                                                    // упорядочиваем по возрастанию
                                           select t).ToList();                                                                                                                                                // выбираем объект
                    model.Dishes     = dishes;
                    model.TypeSearch = "DishCity";
                }
            } break;

            case "Ingredient":
            {
                if (search.Place == null)
                {
                    IList <Dish> dishes = (from t in db.Dishes                                                                                                                                    // определяем каждый объект из teams как t
                                           where (t.IngredientTypes.Any(item => item.Type.ToUpper() == search.TextSearch.ToUpper() || item.Type.ToUpper().Contains(search.TextSearch.ToUpper()))) //фильтрация по критерию
                                           orderby t.Price                                                                                                                                        // упорядочиваем по возрастанию
                                           select t).ToList();                                                                                                                                    // выбираем объект

                    model.Dishes     = dishes;
                    model.TypeSearch = "Ingredient";
                }
                else
                {
                    IList <Dish> dishes = (from t in db.Dishes                                                                                                                                      // определяем каждый объект из teams как t
                                           where ((t.Restaurant.Address.City == search.Place) &&
                                                  (t.IngredientTypes.Any(item => item.Type.ToUpper() == search.TextSearch.ToUpper() || item.Type.ToUpper().Contains(search.TextSearch.ToUpper())))) //фильтрация по критерию
                                           orderby t.Price                                                                                                                                          // упорядочиваем по возрастанию
                                           select t).ToList();                                                                                                                                      // выбираем объект
                    model.Dishes     = dishes;
                    model.TypeSearch = "IngredientCity";
                }
            } break;

            default:
                break;
            }
            return(View(model));
        }
Ejemplo n.º 21
0
 public SearchController()
 {
     _modelSearch = new ModelSearch();
 }