using System.Diagnostics; using DevExpress.DevAV.Common.ViewModel; using DevExpress.Mvvm; using DevExpress.Mvvm.DataAnnotations; using DevExpress.Mvvm.POCO; namespace DevExpress.DevAV.ViewModels { public class EmployeeContactsViewModel : SingleObjectChildViewModel { public new static EmployeeContactsViewModel Create() { return ViewModelSource.Create(() => new EmployeeContactsViewModel()); } public EmployeeContactsViewModel() { } protected IMessageBoxService MessageBoxService { get { return this.GetRequiredService(); } } [Command] public void Message() { MessageBoxService.Show("Send an IM to: " + Entity.Skype); } public bool CanMessage() { return Entity != null && !string.IsNullOrEmpty(Entity.Skype); } [Command] public void Phone() { MessageBoxService.Show("Phone Call: " + Entity.MobilePhone); } public bool CanPhone() { return Entity != null && !string.IsNullOrEmpty(Entity.MobilePhone); } [Command] public void HomeCall() { MessageBoxService.Show("Home Call: " + Entity.HomePhone); } public bool CanHomeCall() { return Entity != null && !string.IsNullOrEmpty(Entity.HomePhone); } [Command] public void MobileCall() { MessageBoxService.Show("Mobile Call: " + Entity.MobilePhone); } public bool CanMobileCall() { return Entity != null && !string.IsNullOrEmpty(Entity.MobilePhone); } [Command] public void Call() { MessageBoxService.Show("Call: " + Entity.Skype); } public bool CanCall() { return Entity != null && !string.IsNullOrEmpty(Entity.Skype); } [Command] public void VideoCall() { MessageBoxService.Show("Video Call: " + Entity.Skype); } public bool CanVideoCall() { return Entity != null && !string.IsNullOrEmpty(Entity.Skype); } [Command] public void MailTo() { ExecuteMailTo(MessageBoxService, Entity.Email); } public bool CanMailTo() { return Entity != null && !string.IsNullOrEmpty(Entity.Email); } protected override void OnEntityChanged() { base.OnEntityChanged(); this.RaiseCanExecuteChanged(x => x.Message()); this.RaiseCanExecuteChanged(x => x.Phone()); this.RaiseCanExecuteChanged(x => x.MobileCall()); this.RaiseCanExecuteChanged(x => x.HomeCall()); this.RaiseCanExecuteChanged(x => x.Call()); this.RaiseCanExecuteChanged(x => x.VideoCall()); this.RaiseCanExecuteChanged(x => x.MailTo()); } public static void ExecuteMailTo(IMessageBoxService messageBoxService, string email) { if(Data.Utils.SafeProcess.Start("mailto://" + email) == null && messageBoxService != null) messageBoxService.Show("Mail To: " + email); } } }