175 lines
7.2 KiB
C#
175 lines
7.2 KiB
C#
using AutoMapper;
|
||
using Complex.Application.Utility;
|
||
using Complex.Common.Dto;
|
||
using Complex.Domain.Entities;
|
||
using Microsoft.EntityFrameworkCore;
|
||
using System;
|
||
using System.Collections.Generic;
|
||
using System.Linq;
|
||
using System.Text;
|
||
using System.Threading.Tasks;
|
||
|
||
namespace Complex.Application.Complex
|
||
{
|
||
public interface IComplexService
|
||
{
|
||
ResultDto<int> InsertComplex(ComplexDto complexDto);
|
||
ResultDto<ComplexDto> EditComplex(string UserId, ComplexDto complexDto);
|
||
public ResultDto<ComplexDto> ComplexProperties(Guid Id);
|
||
public ResultDto<List<ComplexDto>> ComplexList(string PersonId);
|
||
}
|
||
public class ComplexService : IComplexService
|
||
{
|
||
private readonly IComplexDBContext _complexDBContext;
|
||
private IMapper _mapper;
|
||
public ComplexService(IComplexDBContext complexDBContext, IMapper mapper)
|
||
{
|
||
_complexDBContext = complexDBContext;
|
||
_mapper = mapper;
|
||
}
|
||
public ResultDto<ComplexDto> ComplexProperties(Guid Id)
|
||
{
|
||
var complex = _complexDBContext.ComplexEntities.Include(x => x.City).FirstOrDefault(x => x.Id == Id);
|
||
if (complex == null)
|
||
return new ResultDto<ComplexDto> { IsSuccess = false, Message = "مشخصات مجتمع یافت نشد" };
|
||
var complexDto = _mapper.Map<ComplexDto>(complex);
|
||
|
||
complexDto.CityTitle = complex.City.CityTitle;
|
||
|
||
return new ResultDto<ComplexDto> { IsSuccess = true, RowCount = 1, Data = complexDto };
|
||
}
|
||
|
||
public ResultDto<ComplexDto> EditComplex(string UserId, ComplexDto complexDto)
|
||
{
|
||
var complex = _complexDBContext.ComplexEntities.Include(c => c.ComplexManagers).FirstOrDefault(x => x.Id == complexDto.Id);
|
||
|
||
if (complex.ComplexManagers == null || !complex.ComplexManagers.Any(m => m.ManagerMobileNumberId == UserId))
|
||
return new ResultDto<ComplexDto>
|
||
{
|
||
IsSuccess = false,
|
||
Message = "عدم دسترسی"
|
||
};
|
||
|
||
complex.AreaMeter = complexDto.AreaMeter;
|
||
complex.YardMeter = complexDto.YardMeter;
|
||
complex.Address = complexDto.Address;
|
||
complex.YearMake = complexDto.YearMake;
|
||
//complex.ParentId = complexDto.ParentId;
|
||
complex.CityId = complexDto.CityId;
|
||
complex.Description = complexDto.Description;
|
||
complex.ElevatorCount = complexDto.ElevatorCount;
|
||
complex.ParentId = complexDto.ParentId;
|
||
complex.StateId = complexDto.StateId;
|
||
complex.Title = complexDto.Title;
|
||
complex.WarehouseCount = complexDto.WarehouseCount;
|
||
|
||
_complexDBContext.SaveChanges();
|
||
|
||
var result = _mapper.Map<ComplexDto>(complex);
|
||
return new ResultDto<ComplexDto>
|
||
{
|
||
Data = result,
|
||
IsSuccess = true,
|
||
Message = "ویرایش با موفقیت انجام شد"
|
||
};
|
||
}
|
||
|
||
public ResultDto<int> InsertComplex(ComplexDto complexDto)
|
||
{
|
||
throw new NotImplementedException();
|
||
}
|
||
public ResultDto<List<ComplexDto>> ComplexList(string PersonId)
|
||
{
|
||
//try
|
||
{
|
||
var today = PersianDate.GetToday();
|
||
var mangerComplexData = _complexDBContext.ComplexManagers.Include(c => c.Complex)
|
||
//.ThenInclude(c=>c.Units)
|
||
//.ThenInclude(c=>c.City)
|
||
.Where(c => (c.ManagerMobileNumberId == PersonId)
|
||
&& string.Compare(c.StartDate, today) <= 0 && string.Compare(c.EndDate, today) >= 0)
|
||
.Select(c => c.Complex)
|
||
.Where(c => c.StateId != 2);//غیرفعال شده ها نیایند
|
||
//.ToList();
|
||
//var mangerComplex = mangerComplexData.Select(c => _mapper.Map<ComplexDto>(c)).ToList();
|
||
|
||
var units = _complexDBContext.Units.ToList();
|
||
|
||
var PersonComplexData = _complexDBContext.Units.Include(c => c.Complex)
|
||
//.ThenInclude(c=>c.Units)
|
||
//.ThenInclude(c => c.City)
|
||
.Where(c => c.TenantId == PersonId || c.OwnerId == PersonId).Select(c => c.Complex)
|
||
.Where(c => c.StateId != 2);//غیرفعال شده ها نیایند
|
||
//.ToList();
|
||
|
||
var complexList = mangerComplexData.Union(PersonComplexData)
|
||
//.Include(c => c.Units);
|
||
.Select(c => new
|
||
{
|
||
complex = c,
|
||
unitCount = c.Units.Count,
|
||
managers = c.ComplexManagers.Select(m => m.ManagerMobileNumber).Select(p => p.FirstName + " " + p.LastName),
|
||
cityTitle = c.City.CityTitle
|
||
});
|
||
//.Select(c => _mapper.Map<ComplexDto>(c));
|
||
var result = new List<ComplexDto>();
|
||
foreach (var item in complexList)
|
||
{
|
||
var complexDto = _mapper.Map<ComplexDto>(item.complex);
|
||
complexDto.UnitCount = item.unitCount;
|
||
complexDto.CityTitle = item.cityTitle;
|
||
complexDto.ManagerName = String.Join(",", item.managers);
|
||
result.Add(complexDto);
|
||
}
|
||
//var PersonComplex = PersonComplexData.Select(c => _mapper.Map<ComplexDto>(c));
|
||
|
||
return new ResultDto<List<ComplexDto>>(result);
|
||
}
|
||
//catch (Exception ex)
|
||
//{
|
||
// return new ResultDto<List<ComplexDto>>
|
||
// {
|
||
// Message = ex.InnerException != null ? ex.InnerException.Message + Environment.NewLine + ex.InnerException.Data :
|
||
// ex.Message + Environment.NewLine + ex.Data,
|
||
// IsSuccess = false
|
||
// };
|
||
//}
|
||
}
|
||
|
||
}
|
||
public class ComplexDto
|
||
{
|
||
public Guid? Id { get; set; }
|
||
//public DateTime InsertTime { get; set; }
|
||
//public DateTime? UpdateTime { get; set; }
|
||
public string Title { set; get; }
|
||
public string? Address { set; get; }
|
||
/// <summary>
|
||
/// وضعیت
|
||
/// </summary>
|
||
public int? StateId { set; get; }
|
||
/// <summary>
|
||
/// متراژ کل
|
||
/// </summary>
|
||
public int? AreaMeter { set; get; }
|
||
/// <summary>
|
||
/// متراژ حیاط
|
||
/// </summary>
|
||
public int? YardMeter { set; get; }
|
||
/// <summary>
|
||
/// تعداد آسانسور
|
||
/// </summary>
|
||
public int? ElevatorCount { set; get; }
|
||
/// <summary> تعداد انباری</summary>
|
||
public int? WarehouseCount { set; get; }
|
||
public int? YearMake { set; get; }
|
||
public int CityId { set; get; }
|
||
public Guid? ParentId { set; get; }
|
||
public string? Description { set; get; }
|
||
public string? CityTitle { set; get; }
|
||
public string? ManagerName { set; get; }
|
||
public int UnitCount { set; get; }
|
||
|
||
}
|
||
}
|