|
|
|
@ -18,51 +18,155 @@ using Volo.Abp.ObjectMapping;
|
|
|
|
|
|
|
|
|
|
namespace Volo.Abp.BlazoriseUI
|
|
|
|
|
{
|
|
|
|
|
public abstract class BlazoriseCrudPageBase<TAppService, TEntityDto, TKey>
|
|
|
|
|
: BlazoriseCrudPageBase<TAppService, TEntityDto, TKey, PagedAndSortedResultRequestDto>
|
|
|
|
|
where TAppService : ICrudAppService<TEntityDto, TKey>
|
|
|
|
|
where TEntityDto : IEntityDto<TKey>, new()
|
|
|
|
|
public abstract class BlazoriseCrudPageBase<
|
|
|
|
|
TAppService,
|
|
|
|
|
TEntityDto,
|
|
|
|
|
TKey>
|
|
|
|
|
: BlazoriseCrudPageBase<
|
|
|
|
|
TAppService,
|
|
|
|
|
TEntityDto,
|
|
|
|
|
TKey,
|
|
|
|
|
PagedAndSortedResultRequestDto>
|
|
|
|
|
where TAppService : ICrudAppService<
|
|
|
|
|
TEntityDto,
|
|
|
|
|
TKey>
|
|
|
|
|
where TEntityDto : class, IEntityDto<TKey>, new()
|
|
|
|
|
{
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public abstract class BlazoriseCrudPageBase<TAppService, TEntityDto, TKey, TGetListInput>
|
|
|
|
|
: BlazoriseCrudPageBase<TAppService, TEntityDto, TKey, TGetListInput, TEntityDto>
|
|
|
|
|
where TAppService : ICrudAppService<TEntityDto, TKey, TGetListInput>
|
|
|
|
|
where TEntityDto : IEntityDto<TKey>, new()
|
|
|
|
|
public abstract class BlazoriseCrudPageBase<
|
|
|
|
|
TAppService,
|
|
|
|
|
TEntityDto,
|
|
|
|
|
TKey,
|
|
|
|
|
TGetListInput>
|
|
|
|
|
: BlazoriseCrudPageBase<
|
|
|
|
|
TAppService,
|
|
|
|
|
TEntityDto,
|
|
|
|
|
TKey,
|
|
|
|
|
TGetListInput,
|
|
|
|
|
TEntityDto>
|
|
|
|
|
where TAppService : ICrudAppService<
|
|
|
|
|
TEntityDto,
|
|
|
|
|
TKey,
|
|
|
|
|
TGetListInput>
|
|
|
|
|
where TEntityDto : class, IEntityDto<TKey>, new()
|
|
|
|
|
where TGetListInput : new()
|
|
|
|
|
{
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public abstract class BlazoriseCrudPageBase<TAppService, TEntityDto, TKey, TGetListInput, TCreateInput>
|
|
|
|
|
: BlazoriseCrudPageBase<TAppService, TEntityDto, TKey, TGetListInput, TCreateInput, TCreateInput>
|
|
|
|
|
where TAppService : ICrudAppService<TEntityDto, TKey, TGetListInput, TCreateInput>
|
|
|
|
|
public abstract class BlazoriseCrudPageBase<
|
|
|
|
|
TAppService,
|
|
|
|
|
TEntityDto,
|
|
|
|
|
TKey,
|
|
|
|
|
TGetListInput,
|
|
|
|
|
TCreateInput>
|
|
|
|
|
: BlazoriseCrudPageBase<
|
|
|
|
|
TAppService,
|
|
|
|
|
TEntityDto,
|
|
|
|
|
TKey,
|
|
|
|
|
TGetListInput,
|
|
|
|
|
TCreateInput,
|
|
|
|
|
TCreateInput>
|
|
|
|
|
where TAppService : ICrudAppService<
|
|
|
|
|
TEntityDto,
|
|
|
|
|
TKey,
|
|
|
|
|
TGetListInput,
|
|
|
|
|
TCreateInput>
|
|
|
|
|
where TEntityDto : IEntityDto<TKey>
|
|
|
|
|
where TCreateInput : new()
|
|
|
|
|
where TCreateInput : class, new()
|
|
|
|
|
where TGetListInput : new()
|
|
|
|
|
{
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public abstract class BlazoriseCrudPageBase<TAppService, TEntityDto, TKey, TGetListInput, TCreateInput,
|
|
|
|
|
public abstract class BlazoriseCrudPageBase<
|
|
|
|
|
TAppService,
|
|
|
|
|
TEntityDto,
|
|
|
|
|
TKey,
|
|
|
|
|
TGetListInput,
|
|
|
|
|
TCreateInput,
|
|
|
|
|
TUpdateInput>
|
|
|
|
|
: BlazoriseCrudPageBase<
|
|
|
|
|
TAppService,
|
|
|
|
|
TEntityDto,
|
|
|
|
|
TEntityDto,
|
|
|
|
|
TKey,
|
|
|
|
|
TGetListInput,
|
|
|
|
|
TCreateInput,
|
|
|
|
|
TUpdateInput>
|
|
|
|
|
where TAppService : ICrudAppService<
|
|
|
|
|
TEntityDto,
|
|
|
|
|
TKey,
|
|
|
|
|
TGetListInput,
|
|
|
|
|
TCreateInput,
|
|
|
|
|
TUpdateInput>
|
|
|
|
|
: BlazoriseCrudPageBase<TAppService, TEntityDto, TEntityDto, TKey, TGetListInput, TCreateInput, TUpdateInput>
|
|
|
|
|
where TAppService : ICrudAppService<TEntityDto, TKey, TGetListInput, TCreateInput, TUpdateInput>
|
|
|
|
|
where TEntityDto : IEntityDto<TKey>
|
|
|
|
|
where TCreateInput : new()
|
|
|
|
|
where TUpdateInput : new()
|
|
|
|
|
where TCreateInput : class, new()
|
|
|
|
|
where TUpdateInput : class, new()
|
|
|
|
|
where TGetListInput : new()
|
|
|
|
|
{
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public abstract class BlazoriseCrudPageBase<
|
|
|
|
|
TAppService,
|
|
|
|
|
TGetOutputDto,
|
|
|
|
|
TGetListOutputDto,
|
|
|
|
|
TKey,
|
|
|
|
|
TGetListInput,
|
|
|
|
|
TCreateInput,
|
|
|
|
|
TUpdateInput>
|
|
|
|
|
: BlazoriseCrudPageBase<
|
|
|
|
|
TAppService,
|
|
|
|
|
TGetOutputDto,
|
|
|
|
|
TGetListOutputDto,
|
|
|
|
|
TKey,
|
|
|
|
|
TGetListInput,
|
|
|
|
|
TCreateInput,
|
|
|
|
|
TUpdateInput,
|
|
|
|
|
TGetListOutputDto,
|
|
|
|
|
TCreateInput,
|
|
|
|
|
TUpdateInput>
|
|
|
|
|
where TAppService : ICrudAppService<
|
|
|
|
|
TGetOutputDto,
|
|
|
|
|
TGetListOutputDto,
|
|
|
|
|
TKey,
|
|
|
|
|
TGetListInput,
|
|
|
|
|
TCreateInput,
|
|
|
|
|
TUpdateInput>
|
|
|
|
|
where TGetOutputDto : IEntityDto<TKey>
|
|
|
|
|
where TGetListOutputDto : IEntityDto<TKey>
|
|
|
|
|
where TCreateInput : class, new()
|
|
|
|
|
where TUpdateInput : class, new()
|
|
|
|
|
where TGetListInput : new()
|
|
|
|
|
{
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public abstract class BlazoriseCrudPageBase<TAppService, TGetOutputDto, TGetListOutputDto, TKey, TGetListInput,
|
|
|
|
|
TCreateInput, TUpdateInput>
|
|
|
|
|
public abstract class BlazoriseCrudPageBase<
|
|
|
|
|
TAppService,
|
|
|
|
|
TGetOutputDto,
|
|
|
|
|
TGetListOutputDto,
|
|
|
|
|
TKey,
|
|
|
|
|
TGetListInput,
|
|
|
|
|
TCreateInput,
|
|
|
|
|
TUpdateInput,
|
|
|
|
|
TListViewModel,
|
|
|
|
|
TCreateViewModel,
|
|
|
|
|
TUpdateViewModel>
|
|
|
|
|
: OwningComponentBase
|
|
|
|
|
where TAppService : ICrudAppService<TGetOutputDto, TGetListOutputDto, TKey, TGetListInput, TCreateInput,
|
|
|
|
|
where TAppService : ICrudAppService<
|
|
|
|
|
TGetOutputDto,
|
|
|
|
|
TGetListOutputDto,
|
|
|
|
|
TKey,
|
|
|
|
|
TGetListInput,
|
|
|
|
|
TCreateInput,
|
|
|
|
|
TUpdateInput>
|
|
|
|
|
where TGetOutputDto : IEntityDto<TKey>
|
|
|
|
|
where TGetListOutputDto : IEntityDto<TKey>
|
|
|
|
|
where TCreateInput : new()
|
|
|
|
|
where TUpdateInput : new()
|
|
|
|
|
where TCreateInput : class
|
|
|
|
|
where TUpdateInput : class
|
|
|
|
|
where TGetListInput : new()
|
|
|
|
|
where TListViewModel : IEntityDto<TKey>
|
|
|
|
|
where TCreateViewModel : class, new()
|
|
|
|
|
where TUpdateViewModel : class, new()
|
|
|
|
|
{
|
|
|
|
|
[Inject] protected TAppService AppService { get; set; }
|
|
|
|
|
[Inject] protected IUiMessageService UiMessageService { get; set; }
|
|
|
|
@ -74,10 +178,10 @@ namespace Volo.Abp.BlazoriseUI
|
|
|
|
|
protected int CurrentPage;
|
|
|
|
|
protected string CurrentSorting;
|
|
|
|
|
protected int? TotalCount;
|
|
|
|
|
protected IReadOnlyList<TGetListOutputDto> Entities = Array.Empty<TGetListOutputDto>();
|
|
|
|
|
protected TCreateInput NewEntity;
|
|
|
|
|
protected IReadOnlyList<TListViewModel> Entities = Array.Empty<TListViewModel>();
|
|
|
|
|
protected TCreateViewModel NewEntity;
|
|
|
|
|
protected TKey EditingEntityId;
|
|
|
|
|
protected TUpdateInput EditingEntity;
|
|
|
|
|
protected TUpdateViewModel EditingEntity;
|
|
|
|
|
protected Modal CreateModal;
|
|
|
|
|
protected Modal EditModal;
|
|
|
|
|
|
|
|
|
@ -129,8 +233,8 @@ namespace Volo.Abp.BlazoriseUI
|
|
|
|
|
|
|
|
|
|
protected BlazoriseCrudPageBase()
|
|
|
|
|
{
|
|
|
|
|
NewEntity = new TCreateInput();
|
|
|
|
|
EditingEntity = new TUpdateInput();
|
|
|
|
|
NewEntity = new TCreateViewModel();
|
|
|
|
|
EditingEntity = new TUpdateViewModel();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
protected override async Task OnInitializedAsync()
|
|
|
|
@ -161,10 +265,20 @@ namespace Volo.Abp.BlazoriseUI
|
|
|
|
|
{
|
|
|
|
|
var input = await CreateGetListInputAsync();
|
|
|
|
|
var result = await AppService.GetListAsync(input);
|
|
|
|
|
Entities = result.Items;
|
|
|
|
|
Entities = MapToListViewModel(result.Items);
|
|
|
|
|
TotalCount = (int?) result.TotalCount;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private IReadOnlyList<TListViewModel> MapToListViewModel(IReadOnlyList<TGetListOutputDto> dtos)
|
|
|
|
|
{
|
|
|
|
|
if (typeof(TGetListOutputDto) == typeof(TListViewModel))
|
|
|
|
|
{
|
|
|
|
|
return dtos.As<IReadOnlyList<TListViewModel>>();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return ObjectMapper.Map<IReadOnlyList<TGetListOutputDto>, List<TListViewModel>>(dtos);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
protected virtual Task<TGetListInput> CreateGetListInputAsync()
|
|
|
|
|
{
|
|
|
|
|
var input = new TGetListInput();
|
|
|
|
@ -187,7 +301,7 @@ namespace Volo.Abp.BlazoriseUI
|
|
|
|
|
return Task.FromResult(input);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
protected virtual async Task OnDataGridReadAsync(DataGridReadDataEventArgs<TGetListOutputDto> e)
|
|
|
|
|
protected virtual async Task OnDataGridReadAsync(DataGridReadDataEventArgs<TListViewModel> e)
|
|
|
|
|
{
|
|
|
|
|
CurrentSorting = e.Columns
|
|
|
|
|
.Where(c => c.Direction != SortDirection.None)
|
|
|
|
@ -204,7 +318,7 @@ namespace Volo.Abp.BlazoriseUI
|
|
|
|
|
{
|
|
|
|
|
await CheckCreatePolicyAsync();
|
|
|
|
|
|
|
|
|
|
NewEntity = new TCreateInput();
|
|
|
|
|
NewEntity = new TCreateViewModel();
|
|
|
|
|
CreateModal.Show();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
@ -224,9 +338,29 @@ namespace Volo.Abp.BlazoriseUI
|
|
|
|
|
EditModal.Show();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
protected virtual TUpdateInput MapToEditingEntity(TGetOutputDto entityDto)
|
|
|
|
|
protected virtual TUpdateViewModel MapToEditingEntity(TGetOutputDto entityDto)
|
|
|
|
|
{
|
|
|
|
|
return ObjectMapper.Map<TGetOutputDto, TUpdateViewModel>(entityDto);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
protected virtual TCreateInput MapToCreateInput(TCreateViewModel createViewModel)
|
|
|
|
|
{
|
|
|
|
|
return ObjectMapper.Map<TGetOutputDto, TUpdateInput>(entityDto);
|
|
|
|
|
if (typeof(TCreateInput) == typeof(TCreateViewModel))
|
|
|
|
|
{
|
|
|
|
|
return createViewModel.As<TCreateInput>();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return ObjectMapper.Map<TCreateViewModel, TCreateInput>(createViewModel);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
protected virtual TUpdateInput MapToUpdateInput(TUpdateViewModel updateViewModel)
|
|
|
|
|
{
|
|
|
|
|
if (typeof(TUpdateInput) == typeof(TUpdateViewModel))
|
|
|
|
|
{
|
|
|
|
|
return updateViewModel.As<TUpdateInput>();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return ObjectMapper.Map<TUpdateViewModel, TUpdateInput>(updateViewModel);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
protected virtual Task CloseEditModalAsync()
|
|
|
|
@ -238,20 +372,24 @@ namespace Volo.Abp.BlazoriseUI
|
|
|
|
|
protected virtual async Task CreateEntityAsync()
|
|
|
|
|
{
|
|
|
|
|
await CheckCreatePolicyAsync();
|
|
|
|
|
await AppService.CreateAsync(NewEntity);
|
|
|
|
|
var createInput = MapToCreateInput(NewEntity);
|
|
|
|
|
await AppService.CreateAsync(createInput);
|
|
|
|
|
await GetEntitiesAsync();
|
|
|
|
|
CreateModal.Hide();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
protected virtual async Task UpdateEntityAsync()
|
|
|
|
|
{
|
|
|
|
|
await CheckUpdatePolicyAsync();
|
|
|
|
|
await AppService.UpdateAsync(EditingEntityId, EditingEntity);
|
|
|
|
|
var updateInput = MapToUpdateInput(EditingEntity);
|
|
|
|
|
await AppService.UpdateAsync(EditingEntityId, updateInput);
|
|
|
|
|
await GetEntitiesAsync();
|
|
|
|
|
EditModal.Hide();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
protected virtual async Task DeleteEntityAsync(TGetListOutputDto entity)
|
|
|
|
|
protected virtual async Task DeleteEntityAsync(TListViewModel entity)
|
|
|
|
|
{
|
|
|
|
|
await CheckDeletePolicyAsync();
|
|
|
|
|
|
|
|
|
@ -264,7 +402,7 @@ namespace Volo.Abp.BlazoriseUI
|
|
|
|
|
await GetEntitiesAsync();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
protected virtual string GetDeleteConfirmationMessage(TGetListOutputDto entity)
|
|
|
|
|
protected virtual string GetDeleteConfirmationMessage(TListViewModel entity)
|
|
|
|
|
{
|
|
|
|
|
return UiLocalizer["ItemWillBeDeletedMessage"];
|
|
|
|
|
}
|
|
|
|
|