Ejemplo n.º 1
0
        public override void ChannelClicked(object sender, PhoneEventArgs <HostPhoneViewModel> e)
        {
            ProcessMessageInController(e);
            if (e.Handled)
            {
                return;
            }
            var item = e.Item;

            if (this.HasConference == true)
            {
                e.Handled = true;
                return;
            }


            if (e.Item.Status == ePhoneStatus.Ring && this.ClientApp.Channels.PO.Status == ePOStatus.OffHook)
            {
                var list = this.Controllers.OfType <ICallController>().Where(c => c.IsHolding == false).ToList();
                foreach (var c in list)
                {
                    c.Finalise();
                }
                AddController(new InCallController(this.ClientApp, e.Item));
            }
            else
            {
                base.ChannelClicked(sender, e);
            }
        }
Ejemplo n.º 2
0
        public override void UnitClicked(object sender, PhoneEventArgs <UnitPhoneViewModel> e)
        {
            if (this.ClientApp.Channels.PO.Status == ePOStatus.OnHook)
            {
                return;
            }
            var mem = GetAllMembers().FirstOrDefault(m => m.Unit.Id == e.Item.Id);

            if (this.Issued)
            {
                var connectedMembers = GetConnectedMembers();
                if (connectedMembers.All(m => m.AlertStatus == AlertMemberStatus.ReceivingCommand))
                {
                    foreach (var m in connectedMembers)
                    {
                        m.AlertStatus = AlertMemberStatus.WaitForReport;
                    }
                }
            }

            if (mem != null && this.SelectedMember != mem && mem.AlertStatus != AlertMemberStatus.CanNotConnect)
            {
                this.SelectedMember = mem;
            }
            else
            {
                this.SelectedMember = null;
            }

            this.ActiveController = this.SelectedMember;
            e.Handled             = true;
        }
Ejemplo n.º 3
0
        public override void UnitClicked(object sender, PhoneEventArgs <UnitPhoneViewModel> e)
        {
            ProcessMessageInController(e);
            if (e.Handled)
            {
                return;
            }

            if (this.HasConference == true)
            {
                e.Handled = true;
                return;
            }

            var item = e.Item;

            switch (e.Item.Status)
            {
            case ePhoneStatus.Free:
                this.ClientApp.Service.Request(item.ResourceType, item.Id);
                break;

            case ePhoneStatus.Occupied:
                break;

            case ePhoneStatus.Selected:
                ReleaseResource(item);
                break;

            case ePhoneStatus.Dial:
                break;

            case ePhoneStatus.Speaking:
                break;

            case ePhoneStatus.Listening:
                break;

            case ePhoneStatus.Holding:
                break;

            case ePhoneStatus.Ring:
                if (this.ClientApp.Channels.PO.Status == ePOStatus.OffHook && CanReceiveCall)
                {
                    var list = this.Controllers.OfType <ICallController>().Where(c => c.IsHolding == false);
                    if (!list.Any())
                    {
                        var channel = this.ClientApp.GetChannels(c => c.Status == ePhoneStatus.Ring &&
                                                                 c.CallerId != null && c.CallerId.Contains(e.Item.GetFullNumber())).FirstOrDefault();
                        if (channel != null)
                        {
                            AddController(new InCallController(this.ClientApp, channel, e.Item));
                        }
                    }
                    return;
                }
                break;
            }
        }
Ejemplo n.º 4
0
        public override void ChannelClicked(object sender, PhoneEventArgs <HostPhoneViewModel> e)
        {
            ProcessMessageInController(e);
            if (e.Handled)
            {
                return;
            }

            var item = e.Item;

            if (this.HasConference == true)
            {
                e.Handled = true;
                return;
            }

            switch (e.Item.Status)
            {
            case ePhoneStatus.Selected:
                this.ClientApp.Service.Release(item.ResourceType, item.Id);
                break;

            case ePhoneStatus.Free:
                ReleaseAllFreeChannels();

                // Hot line
                if (item.HostPhone.HotUnitId.HasValue)
                {
                    ReleaseAllFreeUnits();
                    var hu = this.ClientApp.Units.Items.FirstOrDefault(u => u.Id == item.HostPhone.HotUnitId.Value);
                    if (hu == null)
                    {
                        this.ClientApp.Units.SetSelectContact(item.HostPhone.HotUnitId.Value);
                    }
                    else
                    {
                        this.ClientApp.Service.Request(eResourceType.UnitPhone, item.HostPhone.HotUnitId.Value);
                    }
                }
                this.ClientApp.Service.Request(item.ResourceType, item.Id);
                break;

            case ePhoneStatus.Ring:
                if (this.ClientApp.Channels.PO.Status == ePOStatus.OffHook)
                {
                    var list = this.Controllers.OfType <ICallController>().Where(c => c.IsHolding == false).ToList();
                    if (list.Count == 0)
                    {
                        AddController(new InCallController(this.ClientApp, e.Item));
                    }
                    return;
                }
                break;
            }

            CheckOutgoingCall();
        }
Ejemplo n.º 5
0
        public override void ChannelClicked(object sender, PhoneEventArgs <HostPhoneViewModel> e)
        {
            var members = GetAllMembers();
            var mem     = members.FirstOrDefault(m => m.Channel.Id == e.Item.Id);

            if (mem != null)
            {
                OnMemberClicked(members, mem);
                e.Handled = true;
            }
        }
Ejemplo n.º 6
0
 public override void ChannelClicked(object sender, PhoneEventArgs <HostPhoneViewModel> e)
 {
     if (e.Item == this.Channel)
     {
         if (this.IsHolding)
         {
             Resume();
         }
         else
         {
             Finalise();
         }
         e.Handled = true;
     }
 }
Ejemplo n.º 7
0
 public override void UnitClicked(object sender, PhoneEventArgs <UnitPhoneViewModel> e)
 {
     if (this.Unit != null && e.Item == this.Unit)
     {
         if (this.IsHolding)
         {
             Resume();
         }
         else
         {
             Finalise();
         }
         e.Handled = true;
     }
     else if (this.IsHolding == false)
     {
         e.Handled = true;
     }
 }
Ejemplo n.º 8
0
        public override void UnitClicked(object sender, PhoneEventArgs <UnitPhoneViewModel> e)
        {
            base.UnitClicked(sender, e);

            if (this.Unit == null && e.Item != null)
            {
                var unit = e.Item;
                var hc   = this.ClientApp.GetChannels(c => c.HostPhone.HotUnitId == unit.Id).FirstOrDefault();
                if (unit.Status == ePhoneStatus.Free && (hc == null || hc == this.Channel) &&
                    this.Channel.CanMakeCall(unit.AreaCode, this.ClientApp.RestrictedAreaCodes))
                {
                    this.Unit = unit;
                    this.ClientApp.Service.Request(unit.ResourceType, unit.Id);
                    Dial();
                }
                else
                {
                    this.ClientApp.ShowError(string.Format("Kênh được chọn không thể gọi đến đơn vị {0}", unit.Name));
                }
                e.Handled = true;
            }
        }
Ejemplo n.º 9
0
        public override void UnitClicked(object sender, PhoneEventArgs <UnitPhoneViewModel> e)
        {
            base.UnitClicked(sender, e);
            if (e.Handled)
            {
                return;
            }

            // Hot line
            var hotChannel = this.ClientApp.GetChannels(c => c.HostPhone.HotUnitId.HasValue && c.HostPhone.HotUnitId.Value == e.Item.Id).FirstOrDefault();

            if (hotChannel != null && IsFreeChannel(hotChannel))
            {
                var list = this.Controllers.OfType <CallController>();
                foreach (var ctrl in list)
                {
                    ctrl.Finalise();
                }

                this.ClientApp.Service.Request(eResourceType.Channel, hotChannel.Id);
            }

            CheckOutgoingCall();
        }
Ejemplo n.º 10
0
        private void View_AddInvoked(object sender, PhoneEventArgs e)
        {
            var newPhone = model.Add(e.Phone);

            view.ShowNewPhone(newPhone);
        }
Ejemplo n.º 11
0
 private void View_RemoveInvoked(object sender, PhoneEventArgs e)
 {
     model.Delete(e.Phone.Id);
     view.RemovePhone(e.Phone);
 }
Ejemplo n.º 12
0
 public virtual void UnitClicked(object sender, PhoneEventArgs <UnitPhoneViewModel> e)
 {
 }
Ejemplo n.º 13
0
 public virtual void ChannelClicked(object sender, PhoneEventArgs <HostPhoneViewModel> e)
 {
 }