コード例 #1
0
        public async Task <IActionResult> Edit(int id, [Bind("Id,SpecData")] Specializations specializations)
        {
            if (id != specializations.Id)
            {
                return(NotFound());
            }

            if (ModelState.IsValid)
            {
                try
                {
                    _context.Update(specializations);
                    await _context.SaveChangesAsync();
                }
                catch (DbUpdateConcurrencyException)
                {
                    if (!SpecializationsExists(specializations.Id))
                    {
                        return(NotFound());
                    }
                    else
                    {
                        throw;
                    }
                }
                return(RedirectToAction(nameof(Index)));
            }
            return(View(specializations));
        }
コード例 #2
0
ファイル: Game.cs プロジェクト: Ploug/BOD-Server
 public void AddPlayer(Player player, Specializations clientSpecialization)
 {
     if (_players.TryAdd(player.Id, player))
     {
         player.CurrentCharacter = Map.AddCharacter(player.Nickname, clientSpecialization);
     }
 }
コード例 #3
0
ファイル: Hero.cs プロジェクト: JakubCisowski/ClickQuest
    public Hero(HeroClass heroClass, HeroRace heroRace, string heroName)
    {
        Materials         = new List <Material>();
        Recipes           = new List <Recipe>();
        Artifacts         = new List <Artifact>();
        EquippedArtifacts = new List <Artifact>();
        Quests            = new List <Quest>();

        Specializations = new Specializations();

        ArtifactSets = new List <ArtifactSet>
        {
            new ArtifactSet
            {
                Id   = 0,
                Name = "Default set"
            }
        };

        HeroClass           = heroClass;
        HeroRace            = heroRace;
        Experience          = 0;
        Level               = 0;
        Name                = heroName;
        ClickDamagePerLevel = 1;
        AuraDamage          = 0.084;
        CritDamage          = 2.0;
        AuraAttackSpeed     = AuraSpeedBase;

        Id = ++User.Instance.LastHeroId;

        SetClassSpecificValues();
        RefreshHeroExperience();
    }
コード例 #4
0
ファイル: Game.cs プロジェクト: msjaelland/BOD-Server
        public GameObjectDTO Respawn(int playerId, Specializations clientSpecialization)
        {
            Player p;
            if (!_players.TryGetValue(playerId, out p))
            {
                return new GameObjectDTO();
                Console.WriteLine($"Player: {playerId} could not respawn.");
            }
            p.CurrentCharacter = Map.AddCharacter(p.Nickname, clientSpecialization);
            Body b = p.CurrentCharacter.Body;

            return new GameObjectDTO()
            {
                Id = p.CurrentCharacter.Id,
                Body = new BodyDTO
                {
                    Position = new PointDTO
                    {
                        X = b.Position.X,
                        Y = b.Position.Y
                    },
                    Width = b.Width,
                    Height = b.Height,
                    Type = (int)b.Type
                }
            };
        }
コード例 #5
0
        public ScheduleOperation()
        {
            InitializeComponent();
            DataContext = this;

            String[] foundRecordSpec;
            String[] linesSpec = File.ReadAllLines("C:/Users/Andjela Paunovic/Desktop/projekat2/project/zdravoCorporationBackend/HCI_wpf_Andjela_Paunovic/HCI_wpf_Andjela_Paunovic/CSV/specializations.csv");

            for (int i = 1; i < linesSpec.Length; i++)
            {
                Specialization spec = new Specialization();
                foundRecordSpec = linesSpec[i].Split(',');
                spec.SpecName   = foundRecordSpec[1];

                Specializations.Add(spec);
            }

            String[] foundRecordDoc;
            String[] linesDoc = File.ReadAllLines("C:/Users/Andjela Paunovic/Desktop/projekat2/project/zdravoCorporationBackend/HCI_wpf_Andjela_Paunovic/HCI_wpf_Andjela_Paunovic/CSV/doctors.csv");

            for (int i = 1; i < linesDoc.Length; i++)
            {
                //Na osnovu unete specijalizacije treba da se izlistaju odredjeni doktori
                Doctor doc = new Doctor();
                foundRecordDoc = linesDoc[i].Split(',');
                doc.FirstName  = foundRecordDoc[0] + " " + foundRecordDoc[1] + " " + foundRecordDoc[2];

                Doctors.Add(doc);
            }
        }
コード例 #6
0
        public void AddSpecialization(string name)
        {
            if (!CharacterObject.CanAffordSpecialization)
            {
                return;
            }


            int price = CharacterObject.Options.KarmaSpecialization;

            //If data file contains {4} this crashes but...
            string upgradetext =             //TODO WRONG
                                 $"{LanguageManager.Instance.GetString("String_ExpenseLearnSpecialization")} {DisplayName} ({name})";

            SkillSpecialization nspec = new SkillSpecialization(name, false);

            ExpenseLogEntry entry = new ExpenseLogEntry();

            entry.Create(price * -1, upgradetext, ExpenseType.Karma, DateTime.Now);
            entry.Undo = new ExpenseUndo().CreateKarma(KarmaExpenseType.AddSpecialization, nspec.InternalId);

            CharacterObject.ExpenseEntries.Add(entry);

            Specializations.Add(nspec);
            CharacterObject.Karma -= price;
        }
コード例 #7
0
        public ActionResult DeleteConfirmed(int id)
        {
            Specializations specializations = db.Specializations.Find(id);

            db.Specializations.Remove(specializations);
            db.SaveChanges();
            return(RedirectToAction("Index"));
        }
コード例 #8
0
      public List<Specializations> GetUserSpecializationList(Specializations? userSpecializations)
      {
         var userSpecializationList = userSpecializations.HasValue && userSpecializations != Specializations.AllSpecializations
               ? new List<Specializations>(userSpecializations.Value.GetFlags())
               : new List<Specializations>();

         return userSpecializationList;
      }
コード例 #9
0
 protected override sealed ItemDetermination MakeDetermination(Item item, Specializations spec)
 {
     if (!IsAllowed(item, spec))
     {
         return(new ItemDetermination(spec, DisallowLevel, DisallowReason));
     }
     return(new ItemDetermination(spec, DeterminationLevel.Allowed, string.Empty));
 }
コード例 #10
0
 public static CourseSpecialization Create(Course course, Specializations specialization)
 {
     return(new CourseSpecialization
     {
         CourseId = course.Id,
         Course = course,
         Specialization = specialization
     });
 }
コード例 #11
0
        public async Task <ActionResult> DeleteConfirmed(int id)
        {
            Specializations specializations = await db.Specializations.FindAsync(id);

            db.Specializations.Remove(specializations);
            await db.SaveChangesAsync();

            return(RedirectToAction("Index"));
        }
コード例 #12
0
 public async Task <IEnumerable <Doctor> > GetAllBySpecialization(Specializations specialization)
 {
     await using var context = ContextFactory.CreateDbContext();
     return(await context.Doctors
            .Where(d => d.IsActive)
            .Where(d => d.Specializations
                   .Any(s => s.SingleSpecialization == specialization))
            .ToListAsync());
 }
コード例 #13
0
ファイル: Game.cs プロジェクト: msjaelland/BOD-Server
        public void AddPlayer(Player player, string clientIp, int clientUdpPort, int clientTcpPort,
            Specializations clientSpecialization)
        {
            _players.Add(player.Id, player);
            player.CurrentCharacter = Map.AddCharacter(player.Nickname, clientSpecialization);
            // TODO data to character creation should be dynamic

            Map.Broker.AddTarget(player.Id, clientIp, clientUdpPort, clientTcpPort);
        }
コード例 #14
0
    public static bool IsClass(this Specializations spec, Classes playerClass)
    {
        if (!IsSingleSpecialization(spec))
        {
            throw new ArgumentOutOfRangeException(nameof(spec), "Parameter must be a single defined specialization.");
        }

        return((spec & playerClass.ToSpecializations()) != 0);
    }
コード例 #15
0
 public static CourseSpecialization Create(Course course, Specializations specialization)
 {
    return new CourseSpecialization
    {
       CourseId = course.Id,
       Course = course,
       Specialization = specialization
    };
 }
コード例 #16
0
 public void FinishQuest()
 {
     _timer.Stop();
     TicksCountText = "";
     Specializations.UpdateSpecializationAmountAndUi(SpecializationType.Questing);
     AssignRewards();
     (GameAssets.Pages["QuestMenu"] as QuestMenuPage).RerollQuests();
     CombatTimersHelper.StartAuraTimerOnCurrentRegion();
 }
コード例 #17
0
 public SpecializationGroup SpecializationGroup()
 {
     return(new SpecializationGroup
     {
         Id = Id,
         SqlSetId = SqlSetId,
         UiDefaultText = UiDefaultText,
         Specializations = Specializations.Select(s => s.Specialization())
     });
 }
コード例 #18
0
        public void Add(Program type)
        {
            lock (type)
            {
                if (Count == ProgramId.Length)
                {
                    var newLength  = ProgramId.Length + 4;
                    var _ProgramId = new string[newLength];
                    ProgramId.CopyTo(_ProgramId);
                    ProgramId = _ProgramId;
                    var _Name = new string[newLength];
                    Name.CopyTo(_Name);
                    Name = _Name;
                    var _Duration = new string[newLength];
                    Duration.CopyTo(_Duration);
                    Duration = _Duration;
                    var _Limit = new int[newLength];
                    Limit.CopyTo(_Limit);
                    Limit = _Limit;
                    var _DepartmentId = new string[newLength];
                    DepartmentId.CopyTo(_DepartmentId);
                    DepartmentId = _DepartmentId;
                    var _Specializations = new SpecializationDM[newLength];
                    Specializations.CopyTo(_Specializations);
                    Specializations = _Specializations;
                    var _mountedCourseDM = new MountedCourseDM[newLength];
                    MountedCourses.CopyTo(_mountedCourseDM);
                    MountedCourses = _mountedCourseDM;
                }
                ProgramId.Span[Count]    = type.ProgramId;
                Name.Span[Count]         = type.Name;
                Duration.Span[Count]     = type.Duration;
                Limit.Span[Count]        = type.Limit;
                DepartmentId.Span[Count] = type.DepartmentId;

                Specializations.Span[Count] = new SpecializationDM(length);
                if (type.Specializations?.Count > 0)
                {
                    foreach (var t in type.Specializations)
                    {
                        Specializations.Span[Count].Add(t);
                    }
                }

                MountedCourses.Span[Count] = new MountedCourseDM(length);
                if (type.MountedCourses?.Count > 0)
                {
                    foreach (var t in type.MountedCourses)
                    {
                        MountedCourses.Span[Count].Add(t);
                    }
                }
                Count++;
            }
        }
コード例 #19
0
        public async Task <ActionResult> Edit([Bind(Include = "Id,Title")] Specializations specializations)
        {
            if (ModelState.IsValid)
            {
                db.Entry(specializations).State = EntityState.Modified;
                await db.SaveChangesAsync();

                return(RedirectToAction("Index"));
            }
            return(View(specializations));
        }
コード例 #20
0
        public string GetNameAndDescription()
        {
            var result = $"{(IsMain ? "**Main: **" : CurrentMembershipState.State == GuildMemberState.Left ? "**Nicht in Gilde: **" : string.Empty)}{Name}: {Class}";

            if (Specializations.Any())
            {
                result = $"{result} {string.Join(",", Specializations.Select(s => s.GetDescription()))}";
            }

            return(result);
        }
コード例 #21
0
        public async Task <IActionResult> Create([Bind("Id,SpecData")] Specializations specializations)
        {
            if (ModelState.IsValid)
            {
                _context.Add(specializations);
                await _context.SaveChangesAsync();

                return(RedirectToAction(nameof(Index)));
            }
            return(View(specializations));
        }
コード例 #22
0
 protected override bool IsAllowed(Item item, Specializations spec)
 {
     if (spec == Specializations.BearDruid)
     {
         return(item.Type == ItemType.Leather);
     }
     else
     {
         return(item.Type == ItemType.Plate);
     }
 }
コード例 #23
0
 public void RemoveSpecialization(Specialization specialization)
 {
     Specializations.Remove(specialization);
     foreach (var @group in Groups)
     {
         if (group.Specialization == specialization)
         {
             group.Specialization = null;
         }
     }
 }
コード例 #24
0
    private void BuyButton_Click(object sender, RoutedEventArgs e)
    {
        var b      = sender as Button;
        var recipe = b.CommandParameter as Recipe;

        if (User.Instance.Gold >= recipe.Value)
        {
            var buyRecipeInlines = new List <Inline>
            {
                new Run("Are you sure you want to buy "),
                new Run($"{recipe.Name}")
                {
                    FontFamily = (FontFamily)FindResource("FontRegularDemiBold")
                },
                new Run(" for "),
                new Run($"{recipe.Value} gold")
                {
                    Foreground = (SolidColorBrush)FindResource("BrushGold"),
                    FontFamily = (FontFamily)FindResource("FontRegularDemiBold")
                },
                new Run("?")
            };

            var result = AlertBox.Show(buyRecipeInlines);
            if (result == MessageBoxResult.No)
            {
                return;
            }

            (Application.Current.MainWindow as GameWindow).CreateFloatingTextUtility($"-{recipe.Value}", (SolidColorBrush)FindResource("BrushGold"), FloatingTextHelper.GoldPositionPoint);

            recipe.AddItem();
            User.Instance.Gold -= recipe.Value;

            Specializations.UpdateSpecializationAmountAndUi(SpecializationType.Trading);

            UpdateShop();
        }
        else
        {
            var notEnoughGoldInlines = new List <Inline>
            {
                new Run("You do not have enough gold to buy this item.\nIt costs "),
                new Run($"{recipe.Value} gold")
                {
                    Foreground = (SolidColorBrush)FindResource("BrushGold"),
                    FontFamily = (FontFamily)FindResource("FontRegularDemiBold")
                },
                new Run(".\nYou can get more gold by completing quests and selling loot from monsters and bosses.")
            };

            AlertBox.Show(notEnoughGoldInlines, MessageBoxButton.OK);
        }
    }
コード例 #25
0
 public ActionResult Edit([Bind(Include = "SpecializationId,SpecializationName,IsDelete,IsActive,LastUpdate,IndustryId")] Specializations specializations)
 {
     specializations.LastUpdate = DateTime.Now;
     if (ModelState.IsValid)
     {
         db.Entry(specializations).State = EntityState.Modified;
         db.SaveChanges();
         return(RedirectToAction("Index"));
     }
     ViewBag.IndustryId = new SelectList(db.Industries, "IndustryId", "IndustryName", specializations.IndustryId);
     return(View(specializations));
 }
コード例 #26
0
    public static IEnumerable <Specializations> Split(this Specializations specs)
    {
        for (int i = 1; i <= 1 << 27; i <<= 1)
        {
            Specializations spec = (Specializations)i;

            if ((specs & spec) == spec)
            {
                yield return(spec);
            }
        }
    }
コード例 #27
0
        TreeNode CreateTreeNodeCore(bool displayUnsetFields)
        {
            var configuration = new TreeNodeObjectExplorerConfiguration {
                ShowUnsetFields = displayUnsetFields
            };

            using var stream = item.OpenStream();

            var rawEMsg = PeekUInt(stream);
            var node    = BuildInfoNode(rawEMsg);

            node.Expand();

            var header = ReadHeader(rawEMsg, stream);

            node.Nodes.Add(new TreeNodeObjectExplorer("Header", header, configuration).TreeNode);

            var body     = ReadBody(rawEMsg, stream, header);
            var bodyNode = new TreeNodeObjectExplorer("Body", body, configuration).TreeNode;

            node.Nodes.Add(bodyNode);

            var payload = ReadPayload(stream);

            if (payload != null && payload.Length > 0)
            {
                node.Nodes.Add(new TreeNodeObjectExplorer("Payload", payload, configuration).TreeNode);
            }

            if (Specializations != null)
            {
                var objectsToSpecialize = new[] { body };
                while (objectsToSpecialize.Any())
                {
                    var specializations = objectsToSpecialize.SelectMany(o => Specializations.SelectMany(x => x.ReadExtraObjects(o)));

                    if (!specializations.Any())
                    {
                        break;
                    }

                    bodyNode.Collapse(ignoreChildren: true);

                    var extraNodes = specializations.Select(x => new TreeNodeObjectExplorer(x.Key, x.Value, configuration).TreeNode).ToArray();
                    node.Nodes.AddRange(extraNodes);

                    // Let the specializers examine any new message objects.
                    objectsToSpecialize = specializations.Select(x => x.Value).ToArray();
                }
            }

            return(node);
        }
コード例 #28
0
ファイル: Skill.core.cs プロジェクト: jedmitten/chummer5a
        public void AddSpecialization(string name)
        {
            int price = IsKnowledgeSkill ? CharacterObject.Options.KarmaKnowledgeSpecialization : CharacterObject.Options.KarmaSpecialization;

            int     intExtraSpecCost      = 0;
            int     intTotalBaseRating    = TotalBaseRating;
            decimal decSpecCostMultiplier = 1.0m;

            foreach (Improvement objLoopImprovement in CharacterObject.Improvements)
            {
                if (objLoopImprovement.Minimum <= intTotalBaseRating &&
                    (string.IsNullOrEmpty(objLoopImprovement.Condition) || (objLoopImprovement.Condition == "career") == CharacterObject.Created || (objLoopImprovement.Condition == "create") != CharacterObject.Created) && objLoopImprovement.Enabled)
                {
                    if (objLoopImprovement.ImprovedName == SkillCategory)
                    {
                        if (objLoopImprovement.ImproveType == Improvement.ImprovementType.SkillCategorySpecializationKarmaCost)
                        {
                            intExtraSpecCost += objLoopImprovement.Value;
                        }
                        else if (objLoopImprovement.ImproveType == Improvement.ImprovementType.SkillCategorySpecializationKarmaCostMultiplier)
                        {
                            decSpecCostMultiplier *= objLoopImprovement.Value / 100.0m;
                        }
                    }
                }
            }
            if (decSpecCostMultiplier != 1.0m)
            {
                price = decimal.ToInt32(decimal.Ceiling(price * decSpecCostMultiplier));
            }
            price += intExtraSpecCost; //Spec

            if (price > CharacterObject.Karma)
            {
                return;
            }

            //If data file contains {4} this crashes but...
            string upgradetext = //TODO WRONG
                                 $"{LanguageManager.GetString("String_ExpenseLearnSpecialization", GlobalOptions.Language)} {DisplayNameMethod(GlobalOptions.Language)} ({name})";

            SkillSpecialization nspec = new SkillSpecialization(name, false, this);

            ExpenseLogEntry entry = new ExpenseLogEntry(CharacterObject);

            entry.Create(price * -1, upgradetext, ExpenseType.Karma, DateTime.Now);
            entry.Undo = new ExpenseUndo().CreateKarma(KarmaExpenseType.AddSpecialization, nspec.InternalId);

            CharacterObject.ExpenseEntries.Add(entry);

            Specializations.Add(nspec);
            CharacterObject.Karma -= price;
        }
コード例 #29
0
        public async Task <ActionResult> Create([Bind(Include = "Id,Title")] Specializations specializations)
        {
            if (ModelState.IsValid)
            {
                db.Specializations.Add(specializations);
                await db.SaveChangesAsync();

                return(RedirectToAction("Index"));
            }

            return(View(specializations));
        }
コード例 #30
0
        // GET: Admin/Specialization_Ad/Details/5
        public ActionResult Details(int?id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            Specializations specializations = db.Specializations.Find(id);

            if (specializations == null)
            {
                return(HttpNotFound());
            }
            return(View(specializations));
        }
コード例 #31
0
        public static IEnumerable <Specializations> GetFlags(this Specializations specializations)
        {
            var bitCount = GetEnumUnderlineTypeBitCount(specializations);

            for (var i = 0; i < bitCount; i++)
            {
                var number = 1 << i;
                var numberAsSpecializations = (Specializations)number;
                if ((specializations & numberAsSpecializations) == numberAsSpecializations)
                {
                    yield return(numberAsSpecializations);
                }
            }
        }
コード例 #32
0
      public IQueryable<Course> GetCoursesQueryForSpecializations(Specializations? specializations)
      {
         ThrowIfDisposed();

         var userSpecializationList = GetUserSpecializationList(specializations);

         var coursesQuery = from course in _context.Courses
                            where (!userSpecializationList.Any() ||
                                   course.CourseSpecializations.Any(x => userSpecializationList.Contains(x.Specialization)))
                                   && !course.IsDeleted
                            select course;

         return coursesQuery;
      }
コード例 #33
0
        // GET: Specializations/Delete/5
        public async Task <ActionResult> Delete(int?id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            Specializations specializations = await db.Specializations.FindAsync(id);

            if (specializations == null)
            {
                return(HttpNotFound());
            }
            return(View(specializations));
        }
コード例 #34
0
    private void HandleCrafting <T>(Recipe recipe)
    {
        if (!MeetsCraftingRequirement(recipe))
        {
            var listOfInlines = new List <Inline>
            {
                new Run("You dont meet Craftsman specialization requirements to craft "),
                new Run($"{recipe.Rarity.ToString()}")
                {
                    Foreground = ColorsHelper.GetRarityColor(recipe.Rarity),
                    FontFamily = (FontFamily)FindResource("FontRegularDemiBold")
                },
                new Run(" artifacts.\nCraft more common items in order to master it.")
            };

            AlertBox.Show(listOfInlines, MessageBoxButton.OK);
            return;
        }

        bool enoughIngredients;

        if (typeof(T) == typeof(Material))
        {
            enoughIngredients = CheckAndRemoveMaterials(recipe);
        }
        else
        {
            enoughIngredients = CheckAndRemoveIngots(recipe);
        }

        if (enoughIngredients)
        {
            recipe.Artifact.CreateMythicTag();

            recipe.Artifact.AddItem();
            recipe.RemoveItem();

            Specializations.UpdateSpecializationAmountAndUi(SpecializationType.Crafting);

            UpdateBlacksmithItems();

            // If hero has all other artifacts, grant Transcendence.
            if (User.Instance.CurrentHero.Artifacts.Select(x => x.Name).Distinct().Count() == GameAssets.Artifacts.Count - 1)
            {
                var transcendence = GameAssets.Artifacts.FirstOrDefault(x => x.Name == "Transcendence");
                transcendence?.AddItem();
            }
        }
    }
コード例 #35
0
 public static string GetClassName(this Specializations spec)
 {
     return(spec switch
     {
         Specializations.BalanceDruid or Specializations.BearDruid or Specializations.CatDruid or Specializations.RestoDruid => "Druid",
         Specializations.BeastMasterHunter or Specializations.MarksmanHunter or Specializations.SurvivalHunter => "Hunter",
         Specializations.ArcaneMage or Specializations.FireMage or Specializations.FrostMage => "Mage",
         Specializations.HolyPaladin or Specializations.ProtPaladin or Specializations.RetPaladin => "Paladin",
         Specializations.DiscPriest or Specializations.ShadowPriest or Specializations.HolyPriest => "Priest",
         Specializations.AssassinationRogue or Specializations.CombatRogue or Specializations.SubtletyRogue => "Rogue",
         Specializations.EleShaman or Specializations.EnhanceShaman or Specializations.RestoShaman => "Shaman",
         Specializations.AfflictionWarlock or Specializations.DemoWarlock or Specializations.DestroWarlock => "Warlock",
         Specializations.ProtWarrior or Specializations.ArmsWarrior or Specializations.FuryWarrior => "Warrior",
         _ => throw new ArgumentOutOfRangeException(nameof(spec))
     });
コード例 #36
0
    protected override bool IsAllowed(Item item, Specializations spec)
    {
        var equippableSpecs = item.Type switch
        {
            ItemType.Axe => SpecializationGroups.Paladin | SpecializationGroups.Shaman | SpecializationGroups.Warrior | SpecializationGroups.Hunter,
            ItemType.Mace => SpecializationGroups.Druid | SpecializationGroups.Paladin | SpecializationGroups.Shaman | SpecializationGroups.Warrior,
            ItemType.Sword => SpecializationGroups.Paladin | SpecializationGroups.Warrior | SpecializationGroups.Hunter,
            ItemType.Polearm => SpecializationGroups.Paladin | SpecializationGroups.Warrior | SpecializationGroups.Hunter,
            ItemType.Stave => SpecializationGroups.All & ~(SpecializationGroups.Paladin | SpecializationGroups.Rogue),
            _ => throw new ArgumentException("Item is not a two-handed weapon.", nameof(item))
        };

        return((spec & equippableSpecs) == spec);
    }
}
コード例 #37
0
         public async Task<CatalogStatistic> GetCatalogStatisticAsync(Specializations? specializations)
         {
            var coursesQuery = GetCoursesQueryForSpecializations(specializations);

            var statistic = await (from needForBatch in coursesQuery
               select new CatalogStatistic
               {
                  TrainingProviderCount =
                     CatalogContext.TrainingProviders.Count(
                        tp => coursesQuery.Any(q => q.TrainingProviderId == tp.Id) && !tp.IsDeleted),
                  CategoryCount =
                     CatalogContext.Categories.Count(cat => coursesQuery.Any(q => q.CategoryId == cat.Id) && !cat.IsDeleted),
                  CourseCount = coursesQuery.Count(),
                  AuthorCount = CatalogContext.CourseAuthors
                     .Where(ca => coursesQuery.Any(q => q.Id == ca.CourseId) && !ca.IsDeleted)
                     .GroupBy(ca => ca.AuthorId).Count()
               }).FirstAsync();

            return statistic;
         }
コード例 #38
0
         public async Task<List<CatalogEntryViewModel>> GetTrainingProviderCatalogAsync(Specializations? specializations)
         {
            ThrowIfDisposed();

            var coursesQuery = GetCoursesQueryForSpecializations(specializations);

            var catalog = await CatalogContext.TrainingProviders
               .Where(x => !x.IsDeleted)
               .Select(x => new CatalogEntryViewModel
               {
                  Name = x.Name,
                  SiteUrl = x.SiteUrl,
                  LogoFileName = x.LogoFileName,
                  CategoryCount = x.Categories
                     .Count(category => coursesQuery.Any(q => q.CategoryId == category.Id) && !category.IsDeleted),
                  CourseCount = x.Courses
                     .Count(course => coursesQuery.Any(q => q.Id == course.Id)),
                  AuthorsCount = CatalogContext.CourseAuthors
                     .Where(ca => x.Id == ca.TrainingProviderId && !ca.IsDeleted && coursesQuery.Any(q => q.Id == ca.CourseId))
                     .GroupBy(ca => ca.AuthorId).Count()
               }).ToListAsync();

            return catalog;
         }
コード例 #39
0
         public async Task<AuthorInfoViewModel> GetAuthorInfoAsync(string authorUrlName, string trainingProviderName, Specializations? specializations)
         {
            var authorIdentity = await CatalogContext.TrainingProviderAuthors
               .Where(x => x.UrlName == authorUrlName &&
                           x.TrainingProvider.Name == trainingProviderName &&
                           !x.IsDeleted)
               .Select(x => new { x.AuthorId, x.TrainingProviderId })
               .SingleOrDefaultAsync();

            if (authorIdentity == null)
            {
               return null;
            }

            var coursesQuery = GetCoursesQueryForSpecializations(specializations);

            var authorInfoViewModel = await CatalogContext.TrainingProviderAuthors
               .Where(x => x.AuthorId == authorIdentity.AuthorId &&
                           x.TrainingProviderId == authorIdentity.TrainingProviderId &&
                           !x.IsDeleted)
               .Select(x => new AuthorInfoViewModel
               {
                  TrainingProvider = new TrainingProviderViewModel
                  {
                     Name = x.TrainingProvider.Name,
                     SiteUrl = x.TrainingProvider.SiteUrl,
                     LogoFileName = x.TrainingProvider.LogoFileName
                  },

                  FirstName = x.Author.FirstName,
                  LastName = x.Author.LastName,
                  Bio = x.Author.Bio,
                  Social = x.Author.Social,
                  Badge = x.Author.Badge,
                  Avatar = x.Author.Avatar,

                  SiteUrl = x.SiteUrl,
                  UrlName = x.UrlName,

                  Participations = x.Author.AuthorTrainingProviders
                     .Where(tpa => tpa.TrainingProviderId != authorIdentity.TrainingProviderId &&
                                   coursesQuery.Any(q => q.TrainingProviderId == tpa.TrainingProviderId))
                     .Select(tpa => new ParticipationViewModel
                     {
                        TrainingProvider = new TrainingProviderViewModel
                        {
                           Name = tpa.TrainingProvider.Name,
                           SiteUrl = tpa.TrainingProvider.SiteUrl,
                           LogoFileName = tpa.TrainingProvider.LogoFileName
                        },
                        UrlName = tpa.UrlName
                     })
               }).SingleOrDefaultAsync();
            

            return authorInfoViewModel;
         }
コード例 #40
0
 public SpecializationsListViewModel(Specializations selectedSpecializations)
 {
    SelectedSpecializationTitles = selectedSpecializations.GetFlags().Select(x => x.ToString());
 }
コード例 #41
0
         public async Task<CourseCatalogViewModel> GetCoursesForCategoryAsync(string trainingProviderName, string categoryUrlName,
            string userId, Specializations? specializations)
         {
            var courseQuery = GetCoursesQueryForSpecializations(specializations);

            courseQuery = courseQuery.Where(x => x.Category.UrlName == categoryUrlName &&
                                                 !x.Category.IsDeleted &&
                                                 x.TrainingProvider.Name == trainingProviderName);

            var courses = await ProjectToCourseCatalogEntry(courseQuery, userId).ToListAsync();

            if (courses.Any())
            {
               var courseList = new CourseCatalogViewModel
               {
                  CourseListFor = CourseListFor.Category,
                  Courses = courses
               };

               return courseList;
            }

            return null;
         }
コード例 #42
0
 public static Character CreateCharacter(Specializations specialization)
 {
     return _specializations[specialization]();
 }
コード例 #43
0
         public async Task<InfoViewModel> GetTrainingProviderInfoAsync(string trainingProviderName, Specializations? specializations)
         {
            var coursesQuery = GetCoursesQueryForSpecializations(specializations);

            var trainingProviderInfo = await CatalogContext.TrainingProviders
               .Where(tp => tp.Name == trainingProviderName && !tp.IsDeleted)
               .Select(tp => new InfoViewModel
               {
                  Name = tp.Name,
                  Description = tp.Description,
                  SiteUrl = tp.SiteUrl,
                  LogoFileName = tp.LogoFileName,

                  CategoryCount = tp.Categories
                     .Count(cat => coursesQuery.Any(cq => cq.CategoryId == cat.Id) && !cat.IsDeleted),
                  CourseCount = tp.Courses
                     .Count(course => coursesQuery.Any(cq => cq.Id == course.Id)),
                  AuthorsCount = UpdateContext.CourseAuthors
                     .Where(
                        ca =>
                           tp.Id == ca.TrainingProviderId && !ca.IsDeleted &&
                           coursesQuery.Any(cq => cq.Id == ca.CourseId))
                     .GroupBy(ca => ca.AuthorId).Count(),

                  UpdateDates = UpdateContext.UpdateEvents
                     .Where(ue => ue.TrainingProviderId == tp.Id &&
                                  (ue.UpdateResult == UpdateResult.Success ||
                                   ue.UpdateResult == UpdateResult.Resolved) &&
                                  ue.CoursesUpdates.Any(
                                     c =>
                                        c.OperationType == OperationType.Add &&
                                        coursesQuery.Any(cq => cq.Id == c.CourseId)))

                     .Select(ue => DbFunctions.TruncateTime(ue.StartedOn).Value)
                     .Distinct()
                     .OrderBy(ue => ue)
                     .ToList()
               }).SingleOrDefaultAsync();

            return trainingProviderInfo;
         }
コード例 #44
0
         public async Task<IEnumerable<CourseLinkViewModel>> GetTop5MonthPopularCoursesAsync(Specializations? specializations)
         {
            var courseQuery = GetCoursesQueryForSpecializations(specializations);
            var utcDateNow = DateTime.UtcNow.Date;

            var top5MonthPopularCourses = await courseQuery
               .Where(x => DbFunctions.DiffDays(x.ReleaseDate, utcDateNow) <= 30)
               .OrderByDescending(x => x.Rating.Raters)
               .Take(5)
               .Select(x => new CourseLinkViewModel
               {
                  CourseTitle = x.Title,
                  CourseUrlName = x.UrlName,
                  TrainingProviderName = x.TrainingProvider.Name,
                  CategoryUrlName = x.Category.UrlName
               }).ToListAsync();

            return top5MonthPopularCourses;
         }
コード例 #45
0
         public async Task<IEnumerable<CourseLinkViewModel>> GetTop5NewCoursesAsync(Specializations? specializations)
         {
            var courseQuery = GetCoursesQueryForSpecializations(specializations);

            var top5NewCourses = await courseQuery
               .OrderByDescending(x => x.ReleaseDate)
               .Take(5)
               .Select(x => new CourseLinkViewModel
               {
                  CourseTitle = x.Title,
                  CourseUrlName = x.UrlName,
                  TrainingProviderName = x.TrainingProvider.Name,
                  CategoryUrlName = x.Category.UrlName
               }).ToListAsync();

            return top5NewCourses;
         }
コード例 #46
0
         public async Task<AuthorCatalogViewModel> GetAuthorsCatalogAsync( string trainingProviderName, Specializations? specializations)
         {
            var coursesQuery = GetCoursesQueryForSpecializations(specializations);

            var authorsQuery = trainingProviderName != null
               ? CatalogContext.TrainingProviderAuthors
                  .Where(x => x.TrainingProvider.Name == trainingProviderName &&
                              x.AuthorCourses.Any(ca => coursesQuery.Any(q => q.Id == ca.CourseId)) && !x.IsDeleted)
               : CatalogContext.TrainingProviderAuthors
                  .Where(x => x.AuthorCourses.Any(ca => coursesQuery.Any(q => q.Id == ca.CourseId)) && !x.IsDeleted);

            var catalogModel = await authorsQuery
              .Select(x => new CatalogEntryViewModel
              {
                 TrainingProvider = new TrainingProviderViewModel
                 {
                    Name = x.TrainingProvider.Name,
                    LogoFileName = x.TrainingProvider.LogoFileName,
                    SiteUrl = x.TrainingProvider.SiteUrl
                 },
                 Author = new TrainingProviderAuthorViewModel
                 {
                    FullName = x.FullName,
                    UrlName = x.UrlName
                 }
              }).ToListAsync();

            if (!catalogModel.Any())
            {
               return null;
            }

            var catalog = catalogModel
               .GroupBy(x => char.ToUpperInvariant(x.Author.LastName[0]), x => x)
               .OrderBy(group => group.Key)
               .AsEnumerable();

            var tokenCatalog = GetTokenCatalog();

            var authorCatalogViewModel = new AuthorCatalogViewModel
            {
               Navigation = new NavigationViewModel
               {
                  SelectedToken = trainingProviderName != null
                     ? trainingProviderName.ToTitleCaseInvariant()
                     : NavigationViewModel.ALLToken,
                  TokenCatalog = tokenCatalog
               },
               
               Catalog = catalog
            };

            return authorCatalogViewModel;
         }
コード例 #47
0
ファイル: Map.cs プロジェクト: ChrisDaBang/BOD-Server
        public Character AddCharacter(string nickname, Specializations specialization)
        {
            Character c = CharacterFactory.CreateCharacter(specialization);

            if (GameObjects.TryAdd(c.Id, c))
            {
                c.Register(Observation.KILLING, this, ExterminationNotification);
                c.Register(Observation.EXTERMINATION, this, ExterminationNotification);

                Body b = c.Body;
                GameObjectDAO data = new GameObjectDAO
                {
                    X = b.Position.X,
                    Y = b.Position.Y,
                    Width = b.Width,
                    Height = b.Height,
                    Id = c.Id,
                    Specialization = (int)c.Specialization
                };

                Broker.WriteCreateCharacter(nickname, data);
            }
            return c;
        }
コード例 #48
0
         public async Task<CourseCatalogSearchResult> GetCourseCatalogSearchResultAsync(CourseCatalogSearchRequest request, string userId, Specializations? specializations)
         {

            var courseQuery = GetCoursesQueryForSpecializations(specializations);

            if (!string.IsNullOrWhiteSpace(request.trainingProviderName) &&
                request.trainingProviderName != NavigationViewModel.ALLToken)
            {
               courseQuery = courseQuery
                  .Where(x => x.TrainingProvider.Name == request.trainingProviderName);
            }

            var recordsTotal = await courseQuery.CountAsync();

            var recordsFiltered = recordsTotal;
            if (!string.IsNullOrWhiteSpace(request.searchTerm))
            {
               courseQuery = courseQuery
                  .Where(x => x.Title.Contains(request.searchTerm));
               recordsFiltered = await courseQuery.CountAsync();
            }

            var catalog = await courseQuery
               .SortCourses(request.order)
               .Skip(request.start)
               .Take(request.length)
               .Select(x => new CourseCatalogEntryViewModel
               {
                  TrainingProvider = new TrainingProviderViewModel
                  {
                     Name = x.TrainingProvider.Name,
                     LogoFileName = x.TrainingProvider.LogoFileName,
                     SiteUrl = x.TrainingProvider.SiteUrl
                  },
                  Category = new CategoryViewModel
                  {
                     Title = x.Category.Title,
                     UrlName = x.Category.UrlName,
                     LogoFileName = x.Category.LogoFileName
                  },
                  Course = new CourseViewModel
                  {
                     Id = x.Id,
                     Title = x.Title,
                     SiteUrl = x.SiteUrl,
                     UrlName = x.UrlName,
                     HasClosedCaptions = x.HasClosedCaptions,
                     Level = x.Level,
                     Rating = x.Rating,
                     Duration = x.Duration,
                     ReleaseDate = x.ReleaseDate,
                     LearningState = x.Subscriptions
                        .Where(s => s.UserId == userId)
                        .Select(s => s.State)
                        .FirstOrDefault(),
                     Authors = x.CourseAuthors
                     .Where(a => (!a.IsDeleted))
                     .Select(a => new CourseAuthorViewModel
                     {
                        FullName = a.TrainingProviderAuthor.FullName,
                        UrlName = a.TrainingProviderAuthor.UrlName,
                        IsCoAuthor = a.IsAuthorCoAuthor
                     }).ToList()
                  }
               }).ToListAsync();

            foreach (var entry in catalog)
            {
               entry.Category.TrainingProvider = entry.TrainingProvider;
            }

            var searchResult = new CourseCatalogSearchResult
            {
               draw = request.draw,
               recordsTotal = recordsTotal,
               recordsFiltered = recordsFiltered,
               catalog = catalog
            };
            return searchResult;
         }
コード例 #49
0
         public async Task<CatalogViewModel> GetCategoriesCatalogAsync(Specializations? specializations, string trainingProviderName)
         {
            var coursesQuery = GetCoursesQueryForSpecializations(specializations);

            var categoriesQuery = string.IsNullOrWhiteSpace(trainingProviderName)
               ? CatalogContext.Categories
                  .Where(x => coursesQuery.Any(q => q.CategoryId == x.Id) && !x.IsDeleted)
               : CatalogContext.Categories
                  .Where(x => x.TrainingProvider.Name == trainingProviderName &&
                              coursesQuery.Any(q => q.CategoryId == x.Id) && !x.IsDeleted);


            var catalog = await categoriesQuery
               .Select(x => new CatalogEntryViewModel
               {
                  TrainingProvider = new TrainingProviderViewModel
                  {
                     Name = x.TrainingProvider.Name,
                     LogoFileName = x.TrainingProvider.LogoFileName,
                     SiteUrl = x.TrainingProvider.SiteUrl
                  },

                  Title = x.Title,
                  UrlName = x.UrlName,
                  LogoFileName = x.LogoFileName,
                  CourseCount = coursesQuery.Count(q => q.CategoryId == x.Id),

                  LastCourseDate = coursesQuery
                     .Where(q => q.CategoryId == x.Id)
                     .OrderByDescending(d => d.ReleaseDate)
                     .FirstOrDefault().ReleaseDate
               })
               .OrderBy(x => x.Title)
               .ToListAsync();

            if (!catalog.Any()) return null;

            var tokenCatalog = GetTokenCatalog();

            var categoryCatalogViewModel = new CatalogViewModel
            {
               Navigation = new NavigationViewModel
               {
                  SelectedToken = string.IsNullOrWhiteSpace(trainingProviderName)
                     ? NavigationViewModel.ALLToken
                     : trainingProviderName.ToTitleCaseInvariant(),
                  TokenCatalog = tokenCatalog
               },

               Categories = catalog
            };

            return categoryCatalogViewModel;
         }
コード例 #50
0
         public async Task<CourseCatalogViewModel> GetCoursesForAuthorAsync(string authorUrlName, string trainingProviderName, string userId,
            Specializations? specializations)
         {
            var authorIdentity = await CatalogContext.TrainingProviderAuthors
               .Where(x => x.UrlName == authorUrlName &&
                           x.TrainingProvider.Name == trainingProviderName &&
                           !x.IsDeleted)
               .Select(x => new { x.AuthorId, x.TrainingProviderId })
               .SingleOrDefaultAsync();

            if (authorIdentity == null)
            {
               return null;
            }

            var courseQuery = GetCoursesQueryForSpecializations(specializations);

            courseQuery = courseQuery.Where(x => x.CourseAuthors.Any(ca => ca.AuthorId == authorIdentity.AuthorId) &&
            x.TrainingProviderId == authorIdentity.TrainingProviderId);

            var courses = await ProjectToCourseCatalogEntry(courseQuery, userId).ToListAsync();

            if (courses.Any())
            {
               var courseList = new CourseCatalogViewModel
               {
                  CourseListFor = CourseListFor.Author,
                  Courses = courses
               };

               return courseList;
            }

            return null;
         }
コード例 #51
0
         public async Task<CourseCatalogViewModel> GetAddedCoursesForDateAsync(DateTime addDate, string trainingProviderName, string userId,
            Specializations? specializations)
         {
            var userSpecializationList = GetUserSpecializationList(specializations);

            var courseQuery = UpdateContext.UpdateEvents
               .Where(x => DbFunctions.TruncateTime(x.StartedOn) == DbFunctions.TruncateTime(addDate) &&
                           x.TrainingProvider.Name == trainingProviderName &&
                           x.CoursesUpdates.Any(cu => cu.OperationType == OperationType.Add))
               .SelectMany(x => x.CoursesUpdates)
               .Where(x => x.OperationType == OperationType.Add)
               .Select(x => x.Course)
               .Where(x => !x.IsDeleted &&
                           (!userSpecializationList.Any() ||
                            x.CourseSpecializations.Any(cs => userSpecializationList.Contains(cs.Specialization))));

            var courses = await ProjectToCourseCatalogEntry(courseQuery, userId).ToListAsync();

            if (courses.Any())
            {
               var courseList = new CourseCatalogViewModel
               {
                  CourseListFor = CourseListFor.Author,
                  Courses = courses
               };

               return courseList;
            }

            return null;
         }