private void OnDonateAllianceUnitMessageReceived(DonateAllianceUnitMessage message)
        {
            if (this.m_session.Alliance != null)
            {
                Alliance            alliance = this.m_session.Alliance;
                LogicCombatItemData unitData = message.GetAllianceUnitData();

                if (!unitData.IsDonationDisabled())
                {
                    if (message.UseQuickDonate())
                    {
                        if (!LogicDataTables.GetGlobals().EnableQuickDonate() || this.m_session.LogicClientAvatar.GetDiamonds() < unitData.GetDonateCost())
                        {
                            return;
                        }
                    }
                    else
                    {
                        if (this.m_session.LogicClientAvatar.GetUnitCount(unitData) <= 0)
                        {
                            return;
                        }
                    }

                    if (alliance.StreamEntryList.IndexOf(message.GetStreamId()) != -1)
                    {
                        StreamEntry streamEntry = StreamManager.GetAllianceStream(message.GetStreamId());

                        if (streamEntry.GetStreamEntryType() == StreamEntryType.DONATE)
                        {
                            DonateStreamEntry donateStreamEntry = (DonateStreamEntry)streamEntry;

                            if (donateStreamEntry.CanAddDonation(this.m_session.AccountId, message.GetAllianceUnitData(), alliance.Header.GetAllianceLevel()))
                            {
                                donateStreamEntry.AddDonation(this.m_session.AccountId, unitData, this.m_session.LogicClientAvatar.GetUnitUpgradeLevel(unitData));
                                donateStreamEntry.SetDonationPendingRequestCount(donateStreamEntry.GetDonationPendingRequestCount() + 1);

                                StreamManager.Save(donateStreamEntry);

                                alliance.UpdateStreamEntry(donateStreamEntry);

                                if (message.UseQuickDonate())
                                {
                                    this.m_session.LogicClientAvatar.CommodityCountChangeHelper(0, unitData, -1);
                                }

                                LogicDonateAllianceUnitCommand logicDonateAllianceUnitCommand = new LogicDonateAllianceUnitCommand();
                                logicDonateAllianceUnitCommand.SetData(unitData, streamEntry.GetId(), message.UseQuickDonate());
                                ServerMessageManager.SendMessage(new GameAllowServerCommandMessage
                                {
                                    AccountId     = this.m_session.AccountId,
                                    ServerCommand = logicDonateAllianceUnitCommand
                                }, 9);
                            }
                        }
                    }
                }
            }
        }