private async void Save()
        {
            var lastMatch = MatchHistory.LastMatch;

            MatchRecord newMatch;

            if (lastMatch != null)
            {
                newMatch = lastMatch.NewRelativeRecord(CR.Value, DateTime.Now, SelectedMap);
            }
            else
            {
                await _dialogService.ShowMessage("Recording first game as a win, because there are no previous records to base it on", "Recording new match");

                newMatch = new MatchRecord()
                {
                    CR     = CR.Value,
                    Diff   = CR.Value,
                    Date   = DateTime.Now,
                    Map    = SelectedMap,
                    Result = MatchResult.WIN
                };
            }


            MatchHistory.Add(newMatch);
            MessengerInstance.Send(new Messages.NewMatchRecord(newMatch));

            CR          = null;
            SelectedMap = Maps.First();
        }
Esempio n. 2
0
        public async Task OnGetAsync()
        {
            CurrentUser = await _userManager.GetUserAsync(HttpContext.User);

            float totalPrice = 0;

            Maps = await _context.ProductCartMap
                   .Include(a => a.Product)
                   .Include(a => a.Cart)
                   .ThenInclude(a => a.Customer)
                   .Where(a => a.Cart.Customer.Id == CurrentUser.Id)
                   .ToListAsync();

            foreach (var map in Maps)
            {
                map.ProductTotalPrice = map.Product.Price * map.ProductQuantity;
                totalPrice           += map.ProductTotalPrice;
            }

            if (Maps.Count > 0)
            {
                Maps.First().Cart.TotalPrice = totalPrice;
                _context.Attach(Maps.First().Cart).State = EntityState.Modified;
            }
        }
Esempio n. 3
0
        public (string, string, string) GenerateVoter(Random rnd)
        {
            throw new NotImplementedException();

            if (Mode != MapSelector.MapMode.Vote)
            {
                throw new InvalidOperationException("MakeVote is only used for vote mode.");
            }

            if (Maps.Count < 3)
            {
                return(null, null, null);
            }

            var prevMap = History.LastOrDefault();

            if (prevMap == null)
            {
                prevMap = Maps.First();
            }

            var mapRnd = Maps.Where(x => x != prevMap).OrderByDescending(x => rnd.Next()).ToArray();
            var mapA   = mapRnd.First();
            var mapB   = mapRnd.Last();

            return(prevMap, mapA, mapB);
        }
Esempio n. 4
0
        /// <summary>
        /// Map transforms require the map's parameters.
        /// </summary>
        private void ModifyMapParameters()
        {
            if (Maps.Count == 0)
            {
                return;
            }

            foreach (var transform in GetAllTransforms().Where(t => t.Method == "map" && Maps.Any(m => m.Name == t.Map)))
            {
                var parameters = Maps
                                 .First(m => m.Name == transform.Map)
                                 .Items
                                 .Where(i => i.Parameter != string.Empty)
                                 .Select(p => p.Parameter)
                                 .Distinct();

                foreach (var parameter in parameters)
                {
                    if (parameter.IndexOf('.') > 0)
                    {
                        var split = parameter.Split(new[] { '.' });
                        transform.Parameters.Add(GetParameter(split[0], split[1]));
                    }
                    else
                    {
                        transform.Parameters.Add(GetParameter(parameter));
                    }
                }
            }
        }
Esempio n. 5
0
        /// <summary>
        /// clone process, remove entities, and create entity needed for calculated fields
        /// </summary>
        /// <returns>A made-up process that represents the denormalized output's fields that contribute to calculated fields</returns>
        public Process ToCalculatedFieldsProcess()
        {
            // clone process, remove entities, and create entity needed for calculated fields
            var calc = this.Clone();

            calc.LogLimit          = LogLimit;
            calc.EntityLogLimit    = EntityLogLimit;
            calc.FieldLogLimit     = FieldLogLimit;
            calc.TransformLogLimit = TransformLogLimit;

            calc.Entities.Clear();
            calc.CalculatedFields.Clear();
            calc.Relationships.Clear();

            var entity = new Entity().WithDefaults();

            entity.Name       = "Calculated";
            entity.Alias      = entity.Name;
            entity.Key        = calc.Name + entity.Alias;
            entity.Connection = "output";
            entity.Fields.Add(new Field {
                Name       = Constants.TflKey,
                Alias      = Constants.TflKey,
                PrimaryKey = true,
                Input      = true,
                Type       = "int"
            }.WithDefaults());

            // Add fields that calculated fields depend on
            entity.Fields.AddRange(CalculatedFields
                                   .SelectMany(f => f.Transforms)
                                   .SelectMany(t => t.Parameters)
                                   .Where(p => !p.HasValue() && p.IsField(this))
                                   .Select(p => p.AsField(this).Clone())
                                   .Where(f => f.Output)
                                   .Distinct()
                                   .Except(CalculatedFields)
                                   );

            var mapFields = CalculatedFields
                            .SelectMany(cf => cf.Transforms)
                            .Where(t => t.Method == "map")
                            .Select(t => Maps.First(m => m.Name == t.Map))
                            .SelectMany(m => m.Items)
                            .Where(i => i.Parameter != string.Empty)
                            .Select(i => i.AsParameter().AsField(this))
                            .Distinct()
                            .Except(entity.Fields)
                            .Select(f => f.Clone());

            entity.Fields.AddRange(mapFields);

            entity.CalculatedFields.AddRange(CalculatedFields.Select(cf => cf.Clone()));
            foreach (var parameter in entity.GetAllFields().SelectMany(f => f.Transforms).SelectMany(t => t.Parameters))
            {
                parameter.Entity = string.Empty;
            }
            entity.ModifyIndexes();
            calc.Entities.Add(entity);
            calc.ModifyKeys();
            calc.ModifyIndexes();
            return(calc);
        }
 public RecordMatchViewModel(IProfileManager profileManager, GalaSoft.MvvmLight.Views.IDialogService dialogService) : base(profileManager)
 {
     _dialogService = dialogService;
     SaveCommand    = new RelayCommand(Save, () => CR.HasValue);
     SelectedMap    = Maps.First();
 }
Esempio n. 7
0
        /// <summary>
        /// clone process, remove entities, and create entity needed for calculated fields
        /// </summary>
        /// <returns>A made-up process that represents the denormalized output's fields that contribute to calculated fields</returns>
        public Process ToCalculatedFieldsProcess()
        {
            // clone process, remove entities, and create entity needed for calculated fields
            var calc = this.Clone();

            calc.LogLimit          = LogLimit;
            calc.EntityLogLimit    = EntityLogLimit;
            calc.FieldLogLimit     = FieldLogLimit;
            calc.TransformLogLimit = TransformLogLimit;

            calc.Entities.Clear();
            calc.CalculatedFields.Clear();
            calc.Relationships.Clear();

            var entity = new Entity {
                Name = "Calculated"
            };

            entity.Alias      = entity.Name;
            entity.Key        = calc.Name + entity.Alias;
            entity.Connection = "output";
            entity.Fields.Add(new Field {
                Name       = Constants.TflKey,
                Alias      = Constants.TflKey,
                PrimaryKey = true,
                System     = true,
                Input      = true,
                Type       = "int"
            });

            // Add fields that calculated fields depend on
            entity.Fields.AddRange(CalculatedFields
                                   .SelectMany(f => f.Transforms)
                                   .SelectMany(t => t.Parameters)
                                   .Where(p => !p.HasValue() && p.IsField(this))
                                   .Select(p => p.AsField(this).Clone())
                                   .Where(f => f.Output)
                                   .Distinct()
                                   .Except(CalculatedFields)
                                   );

            var mapFields = CalculatedFields
                            .SelectMany(cf => cf.Transforms)
                            .Where(t => t.Method == "map")
                            .Select(t => Maps.First(m => m.Name == t.Map))
                            .SelectMany(m => m.Items)
                            .Where(i => i.Parameter != string.Empty)
                            .Select(i => i.AsParameter().AsField(this))
                            .Distinct()
                            .Except(entity.Fields)
                            .Select(f => f.Clone());

            entity.Fields.AddRange(mapFields);

            entity.CalculatedFields.AddRange(CalculatedFields.Select(cf => cf.Clone()));
            foreach (var parameter in entity.GetAllFields().SelectMany(f => f.Transforms).SelectMany(t => t.Parameters))
            {
                parameter.Entity = string.Empty;
            }

            foreach (var field in entity.Fields)
            {
                field.Source = Utility.GetExcelName(field.EntityIndex) + "." + field.FieldName();
            }

            foreach (var field in entity.CalculatedFields)
            {
                field.Source = Utility.GetExcelName(field.EntityIndex) + "." + field.FieldName();
            }

            entity.ModifyIndexes();
            calc.Entities.Add(entity);
            calc.ModifyKeys();
            calc.ModifyIndexes();

            // create entity field's matcher
            var pattern = string.Join("|", entity.GetAllFields().Where(f => !f.System).OrderByDescending(f => f.Alias.Length).Select(f => f.Alias));

#if NETS10
            entity.FieldMatcher = new Regex(pattern);
#else
            entity.FieldMatcher = new Regex(pattern, RegexOptions.Compiled);
#endif

            return(calc);
        }
Esempio n. 8
0
 /// <summary>
 /// Finds a map from an ID
 /// </summary>
 /// <param name="ID">The ID of the map to find</param>
 public static Map MapFromID(int ID)
 {
     return(Maps.First(m => m.ID == ID));
 }