using LifePayment.Application.Contracts;
using LifePayment.Domain.Models;
using LifePayment.Domain.Shared;
using Microsoft.EntityFrameworkCore;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Volo.Abp.Application.Services;
using Volo.Abp.Domain.Repositories;
namespace LifePayment.Application
{
public class AreaService : ApplicationService, IAreaService
{
private readonly IRepository _areaRepository;
public AreaService(
IRepository areaRepository)
{
_areaRepository = areaRepository;
}
public async Task> GetAreaList(GetAreaListInput input)
{
var query = _areaRepository.Where(s => (input.NeedTown || s.Layer != LifePaymentConstant.AreaLayerType.镇) && s.IsEnable).Select(r => new AreaDto
{
AreaCode = r.AreaCode,
ParentCode = r.ParentId,
AreaName = r.AreaName,
Layer = r.Layer,
Sort = r.Sort,
});
if (input != null)
{
if (input.Layer.HasValue)
{
query = query.Where(s => s.Layer == input.Layer);
}
if (input.ParentCode.HasValue)
{
query = query.Where(s => s.ParentCode == input.ParentCode);
}
}
return await query.ToListAsync();
}
public async Task> GetRegionalManagementList()
{
var result = new List();
var area = await _areaRepository.Where(r => r.Layer != LifePaymentConstant.AreaLayerType.镇 && r.IsEnable).Select(s => new
{
s.AreaCode,
s.AreaName,
s.Layer,
s.Sort,
s.ParentId,
s.QuickQuery,
s.SimpleSpelling
}).ToListAsync();
result = area.Where(r => r.Layer == LifePaymentConstant.AreaLayerType.省).Select(s => new AreaInfo
{
AreaCode = s.AreaCode,
AreaName = s.AreaName,
Layer = s.Layer,
Sort = s.Sort,
ParentId = s.ParentId,
QuickQuery = s.QuickQuery,
SimpleSpelling = s.SimpleSpelling,
Children = area.Where(r => r.Layer == LifePaymentConstant.AreaLayerType.市 && r.ParentId == s.AreaCode).Select(s => new AreaInfo
{
AreaCode = s.AreaCode,
AreaName = s.AreaName,
Layer = s.Layer,
Sort = s.Sort,
ParentId = s.ParentId,
QuickQuery = s.QuickQuery,
SimpleSpelling = s.SimpleSpelling,
Children = area.Where(d => d.Layer == LifePaymentConstant.AreaLayerType.区县 && d.ParentId == s.AreaCode).Select(s => new AreaInfo
{
AreaCode = s.AreaCode,
AreaName = s.AreaName,
Layer = s.Layer,
Sort = s.Sort,
ParentId = s.ParentId,
QuickQuery = s.QuickQuery,
SimpleSpelling = s.SimpleSpelling,
}).ToList()
}).ToList()
}).ToList();
return result;
}
}
}