public void AddSyndicate(Character pSender, MsgSynRecuitAdvertising pMsg)
        {
            if (pSender == null || pSender.Syndicate == null)
            {
                return;
            }

            string szMessage = pMsg.Description;

            if (pSender.SyndicateRank != SyndicateRank.GUILD_LEADER)
            {
                return;
            }

            if (szMessage.Length > 255)
            {
                szMessage = szMessage.Substring(0, 255);
            }

            if (m_pSyndicateAdvertisings.Values.FirstOrDefault(x => x.SyndicateIdentity == pSender.SyndicateIdentity) != null)
            {
                EditSyndicate(pSender, pMsg);
                return;
            }

            if (pMsg.LevelRequirement <= 0)
            {
                pMsg.LevelRequirement = 1;
            }

            if (pSender.Syndicate.SilverDonation < pMsg.Amount)
            {
                pSender.Send(ServerString.STR_SYNRECRUIT_NOT_ENOUGH_MONEY);
                return;
            }

            if (pMsg.Amount < _MIN_MONEY_AMOUNT)
            {
                pSender.Send(ServerString.STR_SYNRECRUIT_NOT_ENOUGH_DONATION);
                return;
            }

            pSender.Syndicate.ChangeFunds((int)pMsg.Amount * -1);

            DbSyndicateAdvertising dbSyn = new DbSyndicateAdvertising
            {
                AutoRecruit            = (byte)(pMsg.IsAutoRecruit ? 1 : 0),
                Donation               = (uint)pMsg.Amount,
                Message                = szMessage,
                RequiredLevel          = pMsg.LevelRequirement,
                RequiredMetempsychosis = pMsg.RebornRequirement,
                RequiredProfession     = pMsg.ProfessionForbid,
                SyndicateIdentity      = pSender.SyndicateIdentity,
                SyndicateName          = pSender.SyndicateName,
                Timestamp              = (uint)UnixTimestamp.Timestamp()
            };

            if (m_pRepo.SaveOrUpdate(dbSyn))
            {
                m_pSyndicateAdvertisings.TryAdd(dbSyn.SyndicateIdentity, dbSyn);
            }
            else
            {
                pSender.Send("Oops! Something went wrong.");
            }
        }
 private bool IsValid(DbSyndicateAdvertising pSyn)
 {
     return(pSyn.Timestamp + 60 * 60 * 24 * 7 > UnixTimestamp.Timestamp());
 }