Exemple #1
0
        private void CreateTredDescription(UpdateTrendViewModel model, DateTime start, DateTime stop,
                                           Category cat, Cube cub, CategoryOption option, int limit)
        {
            StringBuilder sb = new StringBuilder();

            sb.Append("Chart: ");
            sb.Append("From: " + start.ToString() + " ");
            sb.Append("To: " + stop.ToString() + ", ");
            if (cat != null || cub != null || option != null)
            {
                sb.Append("For: ");
                if (cat != null)
                {
                    sb.Append("category " + cat.Name + ", ");
                }
                if (cub != null)
                {
                    sb.Append("cube: " + cub.Manufacturer.Name + " " + cub.ModelName + " " + cub.PlasticColor.Name + ", ");
                }
                if (option != null)
                {
                    sb.Append("option: " + option.Name + ", ");
                }
            }
            if (limit > 0)
            {
                sb.Append("Last " + limit + " series, ");
            }

            model.TrendDescription = sb.ToString()[0..^ 2];
Exemple #2
0
        public AddCommandBuilder(CommandLineApplication application)
        {
            _application = application;

            _yearOption        = YearOption.Create(application);
            _monthOption       = MonthOption.Create(application);
            _currencyOption    = CurrencyOption.Create(application);
            _amountOption      = AmountOption.Create(application);
            _categoryOption    = CategoryOption.Create(application);
            _descriptionOption = DescriptionOption.Create(application);
        }
        public IActionResult Category([FromRoute] string category)
        {
            ProjectOption projOpt = new ProjectOption
            {
                Category = category
            };
            CategoryOption catOpt = new CategoryOption
            {
                Category = category,
                Projects = projManager.FindProjectByCategory(projOpt)
            };

            return(View(catOpt));
        }
Exemple #4
0
        public async Task <Serie> GetBestSerieOfCubeAsync(Cube cube, CategoryOption option = null)
        {
            if (cube == null)
            {
                return(null);
            }

            if (option == null)
            {
                return(await GetBestSerieAsync(s => s.Cube == cube));
            }
            else
            {
                return(await GetBestSerieAsync(s => s.Cube == cube && s.SerieOption == option));
            }
        }
Exemple #5
0
        public async Task <Serie> GetBestSerieOfCategoryAsync(Category category, CategoryOption option = null)
        {
            if (category == null)
            {
                return(null);
            }

            if (option == null)
            {
                return(await GetBestSerieAsync(s => s.Cube.Category == category));
            }
            else
            {
                return(await GetBestSerieAsync(s => s.Cube.Category == category && s.SerieOption == option));
            }
        }
Exemple #6
0
        public async Task <Result> CreateNewSeriesAsync(string userId, Cube cube, CategoryOption option, DateTime startTime)
        {
            var canBeCreated = await CheckCreateSerieConditionsAsync(userId, cube, option);

            if (!canBeCreated.IsFaulted)
            {
                var serie = new Serie()
                {
                    UserIdentity   = userId,
                    Cube           = cube,
                    StartTimeStamp = startTime,
                    LongestResult  = TimeSpan.FromMilliseconds(0),
                    ShortestResult = TimeSpan.FromMilliseconds(0),
                    AtLeastOneDNF  = false,
                    SerieOption    = option,
                    SerieFinished  = false,
                    SolvesAmount   = 0,
                };

                _dbContext.Series.Add(serie);
                var result = await _dbContext.SaveChangesAsync();

                if (result > 0)
                {
                    return(new Result(string.Empty, false)
                    {
                        JsonData = serie.Identity
                    });
                }
                else
                {
                    return(new Result(ApplicationResources.TimerDB.Messages.SerieCreatingError));
                }
            }
            else
            {
                return(canBeCreated);
            }
        }
Exemple #7
0
        public static CategoryTypes GetCategoryType(this CategoryOption categoryOption)
        {
            switch (categoryOption)
            {
            case CategoryOption.Condition:
                return(CategoryTypes.Condition);

            case CategoryOption.StockType:
                return(CategoryTypes.StockType);

            case CategoryOption.Organization:
                return(CategoryTypes.Organization);

            case CategoryOption.Usage:
                return(CategoryTypes.Usage);

            case CategoryOption.NotSelected:
                return(CategoryTypes.InvalidType);

            default:
                return(CategoryTypes.InvalidType);
            }
        }
Exemple #8
0
        private static int Run(string[] args)
        {
            var app    = new CommandLineApplication();
            var budget = app.Command("budget", config =>
            {
                config.HelpOption(HelpFlagTemplate.Value);
            });

            budget.Command("create", config =>
            {
                config.Name        = "create";
                config.Description = "create budget providing year, month and currency";
                config.HelpOption(HelpFlagTemplate.Value);

                var yearOption     = YearOption.Create(config);
                var monthOption    = MonthOption.Create(config);
                var currencyOption = CurrencyOption.Create(config);

                config.OnExecute(() =>
                {
                    if (yearOption.NotExists || monthOption.NotExists || currencyOption.NotExists)
                    {
                        config.ShowHelp();
                        return(ErrorCode.Value);
                    }

                    var budgetFilesFactory = new BudgetFilesFactory();
                    var(plannedBudgetFile, realBudgetFile) = budgetFilesFactory.Create(yearOption, monthOption, currencyOption);

                    if (plannedBudgetFile.NotExists || realBudgetFile.NotExists)
                    {
                        plannedBudgetFile.Save();
                        realBudgetFile.Save();

                        Console.WriteLine($"Budget {plannedBudgetFile.Budget} has been created.");
                        return(OkCode.Value);
                    }

                    Console.WriteLine($"Budget {plannedBudgetFile.Budget} already exists.");

                    return(OkCode.Value);
                });
            });

            budget.Command("add", config =>
            {
                config.Name        = "add";
                config.Description = "add revenue or expense to budget";
                config.HelpOption(HelpFlagTemplate.Value);

                var yearOption        = YearOption.Create(config);
                var monthOption       = MonthOption.Create(config);
                var currencyOption    = CurrencyOption.Create(config);
                var amountOption      = AmountOption.Create(config);
                var categoryOption    = CategoryOption.Create(config);
                var descriptionOption = DescriptionOption.Create(config);

                config.OnExecute(() =>
                {
                    if (yearOption.NotExists ||
                        monthOption.NotExists ||
                        currencyOption.NotExists ||
                        amountOption.NotExists ||
                        categoryOption.NotExists ||
                        descriptionOption.NotExists)
                    {
                        config.ShowHelp();
                        return(ErrorCode.Value);
                    }

                    var budgetFilesFactory = new BudgetFilesFactory();
                    var(plannedBudgetFile, realBudgetFile) = budgetFilesFactory.Create(yearOption, monthOption, currencyOption);

                    if (realBudgetFile.NotExists)
                    {
                        Console.WriteLine($"Budget {realBudgetFile.Budget} does not exit. Created new budget first.");
                        return(ErrorCode.Value);
                    }

                    var budgetFile = realBudgetFile.Load();

                    var category    = Category.Create(categoryOption.Value);
                    var description = new Description(descriptionOption.Value);
                    var currency    = Currency.Create(currencyOption.Value);
                    var amount      = Amount.Create(amountOption.Value, currency);

                    var newBudget     = budgetFile.Budget.WithExpense(new Money(amount, category, DateTimeOffset.UtcNow, description));
                    var newBudgetFile = new BudgetFile(newBudget, budgetFile.FileName);

                    newBudgetFile.Save();

                    Console.WriteLine("Expense added.");
                    return(OkCode.Value);
                });
            });


//            var budget = new BudgetCommandBuilder(app).Build();
//
//            new CreateBudgetCommandBuilder(budget).Build();
//            new BudgetsListCommandBuilder(budget).Build();
//            new AddCommandBuilder(budget).Build();

            return(app.Execute(args));
        }
        private async Task CreateSeriesModel(TimerViewModel model, Cube cube, UserModel user,
                                             CategoryOption categoryOption, long serieId)
        {
            model.Username           = user.UserName;
            model.UserId             = user.Id;
            model.CategoryID         = cube.Category.Identity;
            model.CubeID             = cube.Identity;
            model.OptionID           = categoryOption.Identity;
            model.SeriesId           = serieId;
            model.CategoryName       = cube.Category.Name;
            model.CategoryOptionName = categoryOption.Name;
            model.CubeDescription    = string.Format("{0} {1} {2}", cube.Manufacturer.Name, cube.ModelName, cube.PlasticColor.Name);
            model.CurrentScramble    = await _scrambleService.GetDefaultCompleteScrambleAsync(cube.Category);

            if (model.CurrentScramble?.Scramble?.MovesAmount > 0)
            {
                var allScrambles = (await _scrambleService.GetAllDefinedScramblesForCategoryAsync(cube.Category.Identity))
                                   .Where(s => s.Disabled == false && s.MovesAmount > 0)
                                   .OrderBy(s => s.Name)
                                   .ToList();

                foreach (var scramble in allScrambles)
                {
                    model.ScrambleNames.Add(scramble.Identity, scramble.Name);
                }
            }

            var serie = await _seriesService.GetSpecificSerieAsync(serieId);

            var solves = (await _seriesService.GetAllSolvesOfSerieAsync(serieId))
                         .OrderBy(s => s.Identity)
                         .ToList();

            if (serieId > 0 && serie != null && solves != null)
            {
                model.StartTime      = serie.StartTimeStamp;
                model.SerieFinished  = serie.SerieFinished;
                model.AtLeastOneDNF  = serie.AtLeastOneDNF;
                model.LongestResult  = serie.LongestResult;
                model.ShortestResult = serie.ShortestResult;
                model.AverageTime    = serie.AverageTime;
                model.MeanOf3        = serie.MeanOf3;
                model.AverageOf5     = serie.AverageOf5;

                foreach (var solve in solves)
                {
                    model.Solves.Add(new TimerViewModel.SingleTimeViewModel()
                    {
                        Number   = solves.IndexOf(solve) + 1,
                        Duration = solve.Duration,
                        TimeSpan = solve.FinishTimeSpan,
                        DNF      = solve.DNF,
                        Penalty  = solve.PenaltyTwoSeconds,
                    });
                }
            }
            else
            {
                model.SerieFinished  = false;
                model.AtLeastOneDNF  = false;
                model.LongestResult  = TimeSpan.FromMilliseconds(0);
                model.ShortestResult = TimeSpan.FromMilliseconds(0);
                model.AverageTime    = TimeSpan.FromMilliseconds(0);
                model.MeanOf3        = TimeSpan.FromMilliseconds(0);
                model.AverageOf5     = TimeSpan.FromMilliseconds(0);
            }
        }
Exemple #10
0
        private async Task <Result> CheckCreateSerieConditionsAsync(string userId, Cube cube, CategoryOption option)
        {
            if (string.IsNullOrEmpty(userId) || cube == null || option == null)
            {
                return(new Result(ApplicationResources.TimerDB.Messages.NullArgument));
            }

            if (!await _dbContext.CubesCollections.Where(c => c.UserIdentity == userId).AnyAsync(c => c.Cube == cube))
            {
                return(new Result(ApplicationResources.TimerDB.Messages.CubeNotInCollection));
            }

            if (!await _dbContext.CategoryoptionsSets.Where(co => co.Category == cube.Category).AnyAsync(co => co.Option == option))
            {
                return(new Result(ApplicationResources.TimerDB.Messages.CategoryOptionNotInCategory));
            }

            return(new Result(string.Empty, false));
        }
Exemple #11
0
        public async Task <IEnumerable <Serie> > GetSeriesOfUserFilteredAsync(string userId,
                                                                              int limit         = 0, DateTime?startDate = null, DateTime?endDate      = null,
                                                                              Category category = null, Cube cube       = null, CategoryOption option = null)
        {
            var seriesCollection = await GetUserSeriesAsync(userId);

            if (seriesCollection.Any())
            {
                if (startDate.HasValue)
                {
                    seriesCollection = seriesCollection.Where(s => s.StartTimeStamp >= startDate).ToList();
                }

                if (endDate.HasValue)
                {
                    seriesCollection = seriesCollection.Where(s => s.StartTimeStamp <= endDate).ToList();
                }

                if (category != null)
                {
                    seriesCollection = seriesCollection.Where(s => s.Cube.Category == category).ToList();
                }

                if (cube != null)
                {
                    seriesCollection = seriesCollection.Where(s => s.Cube == cube).ToList();
                }

                if (option != null)
                {
                    seriesCollection = seriesCollection.Where(s => s.SerieOption == option).ToList();
                }

                if (limit > 0 && seriesCollection.Count() > limit)
                {
                    seriesCollection = seriesCollection.Take(limit).ToList();
                }
            }

            return(seriesCollection);
        }
Exemple #12
0
 public async Task <Result> CheckIfSerieCanBeCreatedAsync(string userId, Cube cube, CategoryOption option)
 {
     return(await CheckCreateSerieConditionsAsync(userId, cube, option));
 }