增加MessageBoxService服务
This commit is contained in:
1 parent
3dcb6a1c34
commit
30a6a5ea24
15 files changed
+517
-153
No files matched your search
@@ -0,0 +1,27 @@
|
||||
using MAX.Core.Commons;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
|
||||
namespace Store.Management.Framework
|
||||
{
|
||||
public interface IMessageBoxService
|
||||
{
|
||||
MessageResult Show(string messageBoxText, string caption, MessageButton button, MessageIcon icon, MessageResult defaultResult);
|
||||
|
||||
|
||||
void ShowInformation(string content);
|
||||
void ShowWarning(string content);
|
||||
void ShowError(string content);
|
||||
void ShowError(string content, Exception exception);
|
||||
bool ShowYesNoQuestion(string content);
|
||||
bool ShowYesNoWarning(string content);
|
||||
bool ShowYesNoError(string content);
|
||||
bool ShowOkCancelQuestion(string content);
|
||||
bool ShowOkCancelWarning(string content);
|
||||
bool ShowOkCancelError(string content);
|
||||
MessageResult ShowYesNoCancelQuestion(string content);
|
||||
MessageResult ShowYesNoCancelWarning(string content);
|
||||
MessageResult ShowYesNoCancelError(string content);
|
||||
}
|
||||
}
|
||||
+99
@@ -0,0 +1,99 @@
|
||||
using System.ComponentModel;
|
||||
using System.Windows;
|
||||
|
||||
namespace Store.Management.Framework
|
||||
{
|
||||
public static class MessageBoxEnumsConverter
|
||||
{
|
||||
[Browsable(false), EditorBrowsable(EditorBrowsableState.Never)]
|
||||
public static bool? ToBool(this MessageBoxResult result)
|
||||
{
|
||||
switch (result)
|
||||
{
|
||||
case MessageBoxResult.Cancel: return null;
|
||||
case MessageBoxResult.No: return false;
|
||||
default: return true;
|
||||
}
|
||||
}
|
||||
[Browsable(false), EditorBrowsable(EditorBrowsableState.Never)]
|
||||
public static bool? ToBool(this MessageResult result)
|
||||
{
|
||||
switch (result)
|
||||
{
|
||||
case MessageResult.Cancel: return null;
|
||||
case MessageResult.No: return false;
|
||||
default: return true;
|
||||
}
|
||||
}
|
||||
[Browsable(false), EditorBrowsable(EditorBrowsableState.Never)]
|
||||
public static MessageBoxResult ToMessageBoxResult(this MessageResult result)
|
||||
{
|
||||
switch (result)
|
||||
{
|
||||
case MessageResult.Cancel: return MessageBoxResult.Cancel;
|
||||
case MessageResult.No: return MessageBoxResult.No;
|
||||
case MessageResult.Yes: return MessageBoxResult.Yes;
|
||||
case MessageResult.OK: return MessageBoxResult.OK;
|
||||
default: return MessageBoxResult.None;
|
||||
}
|
||||
}
|
||||
[Browsable(false), EditorBrowsable(EditorBrowsableState.Never)]
|
||||
public static MessageResult ToMessageResult(this MessageBoxResult result)
|
||||
{
|
||||
switch (result)
|
||||
{
|
||||
case MessageBoxResult.Cancel: return MessageResult.Cancel;
|
||||
case MessageBoxResult.No: return MessageResult.No;
|
||||
case MessageBoxResult.Yes: return MessageResult.Yes;
|
||||
case MessageBoxResult.OK: return MessageResult.OK;
|
||||
default: return MessageResult.None;
|
||||
}
|
||||
}
|
||||
[Browsable(false), EditorBrowsable(EditorBrowsableState.Never)]
|
||||
public static MessageBoxButton ToMessageBoxButton(this MessageButton button)
|
||||
{
|
||||
switch (button)
|
||||
{
|
||||
case MessageButton.OKCancel: return MessageBoxButton.OKCancel;
|
||||
case MessageButton.YesNo: return MessageBoxButton.YesNo;
|
||||
case MessageButton.YesNoCancel: return MessageBoxButton.YesNoCancel;
|
||||
default: return MessageBoxButton.OK;
|
||||
}
|
||||
}
|
||||
[Browsable(false), EditorBrowsable(EditorBrowsableState.Never)]
|
||||
public static MessageButton ToMessageButton(this MessageBoxButton button)
|
||||
{
|
||||
switch (button)
|
||||
{
|
||||
case MessageBoxButton.OKCancel: return MessageButton.OKCancel;
|
||||
case MessageBoxButton.YesNo: return MessageButton.YesNo;
|
||||
case MessageBoxButton.YesNoCancel: return MessageButton.YesNoCancel;
|
||||
default: return MessageButton.OK;
|
||||
}
|
||||
}
|
||||
[Browsable(false), EditorBrowsable(EditorBrowsableState.Never)]
|
||||
public static MessageBoxImage ToMessageBoxImage(this MessageIcon icon)
|
||||
{
|
||||
switch (icon)
|
||||
{
|
||||
case MessageIcon.Error: return MessageBoxImage.Error;
|
||||
case MessageIcon.Information: return MessageBoxImage.Information;
|
||||
case MessageIcon.Question: return MessageBoxImage.Question;
|
||||
case MessageIcon.Warning: return MessageBoxImage.Warning;
|
||||
default: return MessageBoxImage.None;
|
||||
}
|
||||
}
|
||||
[Browsable(false), EditorBrowsable(EditorBrowsableState.Never)]
|
||||
public static MessageIcon ToMessageIcon(this MessageBoxImage icon)
|
||||
{
|
||||
switch (icon)
|
||||
{
|
||||
case MessageBoxImage.Error: return MessageIcon.Error;
|
||||
case MessageBoxImage.Information: return MessageIcon.Information;
|
||||
case MessageBoxImage.Question: return MessageIcon.Question;
|
||||
case MessageBoxImage.Warning: return MessageIcon.Warning;
|
||||
default: return MessageIcon.None;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,124 @@
|
||||
using MAX.Core.DependencyInjection;
|
||||
using Store.Management.Framework.Configs;
|
||||
using System.Windows;
|
||||
using MessageBox = HandyControl.Controls.MessageBox;
|
||||
|
||||
namespace Store.Management.Framework
|
||||
{
|
||||
public class MessageBoxService : IMessageBoxService, ISingletonDependency
|
||||
{
|
||||
protected readonly Guid id = Guid.NewGuid();
|
||||
|
||||
public string MessageTitle { get; set; } = string.Empty;
|
||||
|
||||
public MessageBoxService()
|
||||
{
|
||||
MessageTitle = AppConfig.AppDisplayName;
|
||||
}
|
||||
|
||||
public virtual MessageResult Show(string messageBoxText, string caption, MessageButton button, MessageIcon icon, MessageResult defaultResult)
|
||||
{
|
||||
Window? window = Application.Current?.Windows.OfType<Window>().FirstOrDefault(w => w.IsActive);
|
||||
if (window is null)
|
||||
{
|
||||
return MessageBox.Show(
|
||||
messageBoxText: messageBoxText,
|
||||
caption: caption,
|
||||
button: button.ToMessageBoxButton(),
|
||||
icon: icon.ToMessageBoxImage(),
|
||||
defaultResult: defaultResult.ToMessageBoxResult()
|
||||
).ToMessageResult();
|
||||
}
|
||||
else
|
||||
{
|
||||
return MessageBox.Show(
|
||||
owner: window,
|
||||
messageBoxText: messageBoxText,
|
||||
caption: caption,
|
||||
button: button.ToMessageBoxButton(),
|
||||
icon: icon.ToMessageBoxImage(),
|
||||
defaultResult: defaultResult.ToMessageBoxResult()
|
||||
).ToMessageResult();
|
||||
}
|
||||
}
|
||||
|
||||
public void ShowInformation(string content)
|
||||
{
|
||||
this.ShowMessage(content, MessageTitle, MessageButton.OK, MessageIcon.Information, MessageResult.OK);
|
||||
}
|
||||
|
||||
public void ShowWarning(string content)
|
||||
{
|
||||
this.ShowMessage(content, MessageTitle, MessageButton.OK, MessageIcon.Warning, MessageResult.OK);
|
||||
}
|
||||
|
||||
public void ShowError(string content, Exception exception)
|
||||
{
|
||||
if (exception is null)
|
||||
{
|
||||
ShowError(content);
|
||||
}
|
||||
else
|
||||
{
|
||||
this.ShowMessage(content + "\n" + exception.Message, MessageTitle, MessageButton.OK, MessageIcon.Error, MessageResult.OK);
|
||||
}
|
||||
}
|
||||
|
||||
public void ShowError(string content)
|
||||
{
|
||||
this.ShowMessage(content, MessageTitle, MessageButton.OK, MessageIcon.Error, MessageResult.OK);
|
||||
}
|
||||
|
||||
public bool ShowYesNoQuestion(string content)
|
||||
{
|
||||
MessageResult result = this.ShowMessage(content, MessageTitle, MessageButton.YesNo, MessageIcon.Question, MessageResult.No);
|
||||
return result == MessageResult.Yes;
|
||||
}
|
||||
|
||||
public bool ShowYesNoWarning(string content)
|
||||
{
|
||||
MessageResult result = this.ShowMessage(content, MessageTitle, MessageButton.YesNo, MessageIcon.Warning, MessageResult.No);
|
||||
return result == MessageResult.Yes;
|
||||
}
|
||||
|
||||
public bool ShowYesNoError(string content)
|
||||
{
|
||||
MessageResult result = this.ShowMessage(content, MessageTitle, MessageButton.YesNo, MessageIcon.Error, MessageResult.No);
|
||||
return result == MessageResult.Yes;
|
||||
}
|
||||
|
||||
public bool ShowOkCancelQuestion(string content)
|
||||
{
|
||||
MessageResult result = this.ShowMessage(content, MessageTitle, MessageButton.OKCancel, MessageIcon.Question, MessageResult.OK);
|
||||
return result == MessageResult.OK;
|
||||
}
|
||||
|
||||
public bool ShowOkCancelWarning(string content)
|
||||
{
|
||||
MessageResult result = this.ShowMessage(content, MessageTitle, MessageButton.OKCancel, MessageIcon.Warning, MessageResult.OK);
|
||||
return result == MessageResult.OK;
|
||||
}
|
||||
|
||||
public bool ShowOkCancelError(string content)
|
||||
{
|
||||
MessageResult result = this.ShowMessage(content, MessageTitle, MessageButton.OKCancel, MessageIcon.Error, MessageResult.OK);
|
||||
return result == MessageResult.OK;
|
||||
}
|
||||
|
||||
public MessageResult ShowYesNoCancelQuestion(string content)
|
||||
{
|
||||
return this.ShowMessage(content, MessageTitle, MessageButton.YesNoCancel, MessageIcon.Question, MessageResult.Cancel);
|
||||
}
|
||||
|
||||
public MessageResult ShowYesNoCancelWarning(string content)
|
||||
{
|
||||
return this.ShowMessage(content, MessageTitle, MessageButton.YesNoCancel, MessageIcon.Warning, MessageResult.Cancel);
|
||||
}
|
||||
|
||||
public MessageResult ShowYesNoCancelError(string content)
|
||||
{
|
||||
return this.ShowMessage(content, MessageTitle, MessageButton.YesNoCancel, MessageIcon.Error, MessageResult.Cancel);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
+37
@@ -0,0 +1,37 @@
|
||||
namespace Store.Management.Framework
|
||||
{
|
||||
public static class MessageBoxServiceExtensions
|
||||
{
|
||||
extension(IMessageBoxService service)
|
||||
{
|
||||
public MessageResult ShowMessage(string messageBoxText, string caption, MessageButton button, MessageIcon icon, MessageResult defaultResult)
|
||||
{
|
||||
VerifyService(service);
|
||||
return service.Show(messageBoxText, caption, button, icon, defaultResult);
|
||||
}
|
||||
public bool? ShowMessage(string messageBoxText)
|
||||
{
|
||||
return service.ShowMessage(messageBoxText, string.Empty);
|
||||
}
|
||||
public bool? ShowMessage(string messageBoxText, string caption)
|
||||
{
|
||||
return service.ShowMessage(messageBoxText, caption, MessageButton.OK).ToBool();
|
||||
}
|
||||
public MessageResult ShowMessage(string messageBoxText, string caption, MessageButton button)
|
||||
{
|
||||
return service.ShowMessage(messageBoxText, caption, button, MessageIcon.None);
|
||||
}
|
||||
public MessageResult ShowMessage(string messageBoxText, string caption, MessageButton button, MessageIcon icon)
|
||||
{
|
||||
VerifyService(service);
|
||||
return service.Show(messageBoxText, caption, button, icon, MessageResult.None);
|
||||
}
|
||||
}
|
||||
|
||||
static void VerifyService(IMessageBoxService service)
|
||||
{
|
||||
if (service == null)
|
||||
throw new ArgumentNullException(nameof(service));
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,7 @@
|
||||
namespace Store.Management.Framework
|
||||
{
|
||||
public enum MessageButton
|
||||
{
|
||||
OK, OKCancel, YesNoCancel, YesNo,
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,8 @@
|
||||
namespace Store.Management.Framework
|
||||
{
|
||||
public enum MessageIcon
|
||||
{
|
||||
None, Error, Question, Warning, Information,
|
||||
Hand = Error, Stop = Error, Exclamation = Warning, Asterisk = Information
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,7 @@
|
||||
namespace Store.Management.Framework
|
||||
{
|
||||
public enum MessageResult
|
||||
{
|
||||
None, OK, Cancel, Yes, No,
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,29 @@
|
||||
using MAX.Core.DependencyInjection;
|
||||
using Store.Management.Api;
|
||||
using Store.Management.Api.Models;
|
||||
using Store.Management.Api.Users;
|
||||
|
||||
namespace Store.Management.Framework.Services;
|
||||
|
||||
public interface IUserService
|
||||
{
|
||||
Task<PageResult<UserInfo>> SearchAsync(UserSearchRequest request, CancellationToken cancellationToken = default);
|
||||
Task<UserInfo> CreateAsync(UserCreateRequest request, CancellationToken cancellationToken = default);
|
||||
Task<UserInfo> UpdateAsync(UserUpdateRequest request, CancellationToken cancellationToken = default);
|
||||
Task DeleteAsync(int id, CancellationToken cancellationToken = default);
|
||||
}
|
||||
|
||||
internal sealed class UserService(StoreApiClient client) : IUserService, ISingletonDependency
|
||||
{
|
||||
public Task<PageResult<UserInfo>> SearchAsync(UserSearchRequest request, CancellationToken cancellationToken = default)
|
||||
=> client.Users.SearchAsync(request, cancellationToken);
|
||||
|
||||
public Task<UserInfo> CreateAsync(UserCreateRequest request, CancellationToken cancellationToken = default)
|
||||
=> client.Users.CreateAsync(request, cancellationToken);
|
||||
|
||||
public Task<UserInfo> UpdateAsync(UserUpdateRequest request, CancellationToken cancellationToken = default)
|
||||
=> client.Users.UpdateAsync(request, cancellationToken);
|
||||
|
||||
public Task DeleteAsync(int id, CancellationToken cancellationToken = default)
|
||||
=> client.Users.DeleteAsync(id, cancellationToken);
|
||||
}
|
||||
Reference in new issue
Block a user