Example #1
0
 protected virtual bool HasUpdated(ClanWar stored, ClanWar fetched)
 {
     return(!(stored.EndTime == fetched.EndTime &&
              stored.StartTime == fetched.StartTime &&
              stored.State == fetched.State &&
              stored.Attacks.Count == fetched.Attacks.Count));
 }
        /// <summary>
        /// Inserts or Updates a Clan War depending on the parameters received.
        /// </summary>
        /// <param name="clanWarViewModel">A ClanWarViewModel object, if its Id is NULL then do an Insert, else Updates.</param>
        public static int Upsert(ClanWarUpsertViewModel clanWarViewModel, int userId)
        {
            Enums.Action action  = Enums.Action.Create;
            ClanWar      clanWar = ClanWarManager.ConvertViewToModel(clanWarViewModel);

            using (var dbContext = new HouseOfClansEntities())
            {
                if (clanWarViewModel.Id == null)
                {
                    clanWar.addedOn = DateTime.Now;
                    dbContext.ClanWars.Add(clanWar);

                    if (dbContext.SaveChanges() > 0)
                    {
                        ActionLogManager.Log <ClanWarUpsertViewModel>(action, userId, null, null, string.Format("Clan War Id: {0}", clanWar.id));
                    }
                }
                else
                {
                    ClanWar original = ClanWarManager.SelectByClanWarId(clanWar.id);
                    action            = Enums.Action.Update;
                    clanWar.updatedOn = DateTime.Now;
                    dbContext.Entry(clanWar).State = EntityState.Modified;

                    if (dbContext.SaveChanges() > 0)
                    {
                        List <ActionLog> changes = GetChanges(clanWar, original);
                        ActionLogManager.Log <ClanWarUpsertViewModel>(action, userId, changes);
                    }
                }
            }

            return(clanWar.id);
        }
        /// <summary>
        /// Returns a list ActionLog objects of the changed values for the passed object.
        /// </summary>
        /// <param name="current">A ClanWar object that has been updated.</param>
        /// <param name="original">A ClanWar object with the original values.</param>
        /// <returns>List of ActionLog</returns>
        private static List <ActionLog> GetChanges(ClanWar current, ClanWar original)
        {
            //vv very inefficient way, but for now should be ok since we are behind schedule!
            Type             objectType   = current.GetType();
            List <ActionLog> changes      = new List <ActionLog>();
            ActionLog        changedValue = new ActionLog();

            if (current.warTypeId != original.warTypeId)
            {
                var propName = Nameof <ClanWar> .Property(e => e.warTypeId);

                changedValue.propertyChanged = propName;
                changedValue.newValue        = current.warTypeId.ToString();
                changedValue.oldValue        = original.warTypeId.ToString();

                changes.Add(changedValue);
            }

            if (current.clanVS != original.clanVS)
            {
                changedValue = new ActionLog();
                var propName = Nameof <ClanWar> .Property(e => e.clanVS);

                changedValue.propertyChanged = propName;
                changedValue.newValue        = current.clanVS.ToString();
                changedValue.oldValue        = original.clanVS.ToString();

                changes.Add(changedValue);
            }

            if (current.warStartedOn != original.warStartedOn)
            {
                changedValue = new ActionLog();
                var propName = Nameof <ClanWar> .Property(e => e.warStartedOn);

                changedValue.propertyChanged = propName;
                changedValue.newValue        = current.warStartedOn.ToString();
                changedValue.oldValue        = original.warStartedOn.ToString();

                changes.Add(changedValue);
            }

            if (current.note != original.note)
            {
                changedValue = new ActionLog();
                var propName = Nameof <ClanWar> .Property(e => e.note);

                changedValue.propertyChanged = propName;
                changedValue.newValue        = current.note.ToString();
                changedValue.oldValue        = original.note.ToString();

                changes.Add(changedValue);
            }

            return(changes);
        }
        /// <summary>
        /// Gets the clan war information based on the clan war id
        /// </summary>
        /// <param name="clanWarId">Clan War Id</param>
        public static ClanWar SelectByClanWarId(int clanWarId)
        {
            ClanWar clanWarInfo = new ClanWar();

            using (var dbContext = new HouseOfClansEntities())
            {
                clanWarInfo = dbContext.ClanWars.Where(p => p.id == clanWarId).Select(clanWar => clanWar).FirstOrDefault();
            }

            return(clanWarInfo);
        }
        /// <summary>
        /// Deletes the current Clan War
        /// </summary>
        public static bool Delete(int warId)
        {
            bool    isDeleted = false;
            ClanWar deleteWar = ClanWarManager.SelectByClanWarId(warId);

            using (var dbContext = new HouseOfClansEntities())
            {
                dbContext.ClanWars.Attach(deleteWar);
                dbContext.ClanWars.Remove(deleteWar);
                isDeleted = dbContext.SaveChanges() > 0;
            }

            return(isDeleted);
        }
Example #6
0
        internal bool HasUpdated(CachedWar stored, CachedClanWar fetched)
        {
            if (stored.ServerExpiration > fetched.ServerExpiration)
            {
                return(false);
            }

            if (stored.Data == null ||
                fetched.Data == null ||
                ClanWar.IsSameWar(stored.Data, fetched.Data) == false)
            {
                throw new ArgumentException();
            }

            return(HasUpdated(stored.Data, fetched.Data));
        }
        private static ClanWar ConvertViewToModel(ClanWarUpsertViewModel viewModel)
        {
            ClanWar model = new ClanWar();

            model.id           = viewModel.Id ?? 0;
            model.warTypeId    = viewModel.WarTypeId;
            model.clanId       = viewModel.ClanId;
            model.clanVS       = viewModel.ClanVS;
            model.clanVSTag    = viewModel.ClanVSTag;
            model.note         = viewModel.Note;
            model.warStartedOn = viewModel.WarStartedOn;
            model.warNote      = viewModel.WarNote;
            model.isFinalized  = viewModel.IsFinalized;
            model.addedOn      = viewModel.AddedOn;
            model.updatedOn    = viewModel.UpdatedOn;

            return(model);
        }
        public static string Dump(this ClanWar clanWar)
        {
            var sb = new StringBuilder();

            sb.Append(Environment.NewLine);

            // When clan is not in war all the values are null
            if (clanWar.State != State.NotInWar)
            {
                var pse = PSE(clanWar.PreparationStartTime, clanWar.StartTime, clanWar.EndTime);
                sb.Append($"{clanWar.State} {pse}");
                sb.Append(Environment.NewLine);
                sb.Append($"{clanWar.Clan.Dump()}");
                sb.Append(Environment.NewLine);
                sb.Append($"{clanWar.Opponent.Dump()}");
            }
            else
            {
                sb.Append($"{State.NotInWar}");
            }

            return(sb.ToString());
        }
Example #9
0
File: Mains.cs Project: iodz37/Iodz
 private static bool ConquordConsole_CloseEvent(CtrlType sig)
 {
     if (MessageBox.Show("Do You Want To Close Console ...?", "Message", MessageBoxButtons.OKCancel, MessageBoxIcon.Question) == DialogResult.OK)
     {
         Save();
         foreach (Client.GameClient client in Kernel.GamePool.Values)
         {
             client.Disconnect();
         }
         GameServer.Disable();
         AuthServer.Disable();
         if (GuildWar.IsWar)
         {
             GuildWar.End();
         }
         if (EliteGuildWar.IsWar)
         {
             EliteGuildWar.End();
         }
         if (ClanWar.IsWar)
         {
             ClanWar.End();
         }
         if (CaptureTheFlag.IsWar)
         {
             CaptureTheFlag.Close();
         }
         Application.Exit();
         Environment.Exit(0);
         return(false);
     }
     else
     {
         return(true);
     }
 }
Example #10
0
 internal void OnClanWarUpdated(ClanWar stored, ClanWar fetched)
 {
     Task.Run(() => ClanWarUpdated?.Invoke(this, new ClanWarUpdatedEventArgs(stored, fetched)));
 }
Example #11
0
 internal void OnClanWarStartingSoon(ClanWar clanWar)
 {
     Task.Run(() => ClanWarStartingSoon?.Invoke(this, new ClanWarEventArgs(clanWar)));
 }
Example #12
0
 internal void OnClanWarEnded(ClanWar clanWar)
 {
     Task.Run(() => ClanWarEnded?.Invoke(this, new ClanWarEventArgs(clanWar)));
 }
Example #13
0
 public ClanWarEventArgs(ClanWar clanWar)
 {
     ClanWar = clanWar;
 }
Example #14
0
        private Task OnClanWarUpdated(object sender, ClanWarUpdatedEventArgs e)
        {
            LogService.Log(LogLevel.Information, this.GetType().Name, null, "War updated " + ClanWar.NewAttacks(e.Stored, e.Fetched).Count);

            return(Task.CompletedTask);
        }
Example #15
0
        public ClanWarUpdatedEventArgs(ClanWar stored, ClanWar fetched)
        {
            Fetched = fetched;

            Stored = stored;
        }