Files
Complex/Complex.Application/Services/Complex/ComplexService.cs
2026-06-02 20:48:16 +03:30

175 lines
7.2 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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; }
}
}