first commit
This commit is contained in:
BIN
.vs/Complex/DesignTimeBuild/.dtbcache.v2
Normal file
BIN
.vs/Complex/DesignTimeBuild/.dtbcache.v2
Normal file
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
1026
.vs/Complex/config/applicationhost.config
Normal file
1026
.vs/Complex/config/applicationhost.config
Normal file
File diff suppressed because it is too large
Load Diff
BIN
.vs/Complex/v17/.futdcache.v1
Normal file
BIN
.vs/Complex/v17/.futdcache.v1
Normal file
Binary file not shown.
BIN
.vs/Complex/v17/.futdcache.v2
Normal file
BIN
.vs/Complex/v17/.futdcache.v2
Normal file
Binary file not shown.
BIN
.vs/Complex/v17/.suo
Normal file
BIN
.vs/Complex/v17/.suo
Normal file
Binary file not shown.
71
.vs/Complex/v17/DocumentLayout.backup.json
Normal file
71
.vs/Complex/v17/DocumentLayout.backup.json
Normal file
@@ -0,0 +1,71 @@
|
||||
{
|
||||
"Version": 1,
|
||||
"WorkspaceRootPath": "D:\\Data\\Projects\\Nabak\\Complex\\",
|
||||
"Documents": [
|
||||
{
|
||||
"AbsoluteMoniker": "D:0:0:{2D82DF39-0B01-4EE8-A123-345865CD153E}|Complex.Application\\Complex.Application.csproj|d:\\data\\projects\\nabak\\complex\\complex.application\\services\\basic\\chargecycleservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
|
||||
"RelativeMoniker": "D:0:0:{2D82DF39-0B01-4EE8-A123-345865CD153E}|Complex.Application\\Complex.Application.csproj|solutionrelative:complex.application\\services\\basic\\chargecycleservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
|
||||
},
|
||||
{
|
||||
"AbsoluteMoniker": "D:0:0:{7136066A-2238-481B-A4AD-BCE811506901}|Complex.EndPoint\\Complex.EndPoint.csproj|d:\\data\\projects\\nabak\\complex\\complex.endpoint\\controllers\\managecostcontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
|
||||
"RelativeMoniker": "D:0:0:{7136066A-2238-481B-A4AD-BCE811506901}|Complex.EndPoint\\Complex.EndPoint.csproj|solutionrelative:complex.endpoint\\controllers\\managecostcontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
|
||||
},
|
||||
{
|
||||
"AbsoluteMoniker": "D:0:0:{2D82DF39-0B01-4EE8-A123-345865CD153E}|Complex.Application\\Complex.Application.csproj|d:\\data\\projects\\nabak\\complex\\complex.application\\services\\unit\\unitservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
|
||||
"RelativeMoniker": "D:0:0:{2D82DF39-0B01-4EE8-A123-345865CD153E}|Complex.Application\\Complex.Application.csproj|solutionrelative:complex.application\\services\\unit\\unitservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
|
||||
}
|
||||
],
|
||||
"DocumentGroupContainers": [
|
||||
{
|
||||
"Orientation": 0,
|
||||
"VerticalTabListWidth": 256,
|
||||
"DocumentGroups": [
|
||||
{
|
||||
"DockedWidth": 200,
|
||||
"SelectedChildIndex": 1,
|
||||
"Children": [
|
||||
{
|
||||
"$type": "Document",
|
||||
"DocumentIndex": 2,
|
||||
"Title": "UnitService.cs",
|
||||
"DocumentMoniker": "D:\\Data\\Projects\\Nabak\\Complex\\Complex.Application\\Services\\Unit\\UnitService.cs",
|
||||
"RelativeDocumentMoniker": "Complex.Application\\Services\\Unit\\UnitService.cs",
|
||||
"ToolTip": "D:\\Data\\Projects\\Nabak\\Complex\\Complex.Application\\Services\\Unit\\UnitService.cs",
|
||||
"RelativeToolTip": "Complex.Application\\Services\\Unit\\UnitService.cs",
|
||||
"ViewState": "AgIAAIwAAAAAAAAAAAAhwJYAAAA1AAAAAAAAAA==",
|
||||
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
|
||||
"WhenOpened": "2025-08-20T06:24:55.285Z",
|
||||
"EditorCaption": ""
|
||||
},
|
||||
{
|
||||
"$type": "Document",
|
||||
"DocumentIndex": 0,
|
||||
"Title": "ChargeCycleService.cs",
|
||||
"DocumentMoniker": "D:\\Data\\Projects\\Nabak\\Complex\\Complex.Application\\Services\\Basic\\ChargeCycleService.cs",
|
||||
"RelativeDocumentMoniker": "Complex.Application\\Services\\Basic\\ChargeCycleService.cs",
|
||||
"ToolTip": "D:\\Data\\Projects\\Nabak\\Complex\\Complex.Application\\Services\\Basic\\ChargeCycleService.cs",
|
||||
"RelativeToolTip": "Complex.Application\\Services\\Basic\\ChargeCycleService.cs",
|
||||
"ViewState": "AgIAAC0BAAAAAAAAAAA7wIABAAAFAAAAAAAAAA==",
|
||||
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
|
||||
"WhenOpened": "2025-08-20T06:04:28.478Z",
|
||||
"EditorCaption": ""
|
||||
},
|
||||
{
|
||||
"$type": "Document",
|
||||
"DocumentIndex": 1,
|
||||
"Title": "ManageCostController.cs",
|
||||
"DocumentMoniker": "D:\\Data\\Projects\\Nabak\\Complex\\Complex.EndPoint\\Controllers\\ManageCostController.cs",
|
||||
"RelativeDocumentMoniker": "Complex.EndPoint\\Controllers\\ManageCostController.cs",
|
||||
"ToolTip": "D:\\Data\\Projects\\Nabak\\Complex\\Complex.EndPoint\\Controllers\\ManageCostController.cs",
|
||||
"RelativeToolTip": "Complex.EndPoint\\Controllers\\ManageCostController.cs",
|
||||
"ViewState": "AgIAACEAAAAAAAAAAAAqwCwAAAAJAAAAAAAAAA==",
|
||||
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
|
||||
"WhenOpened": "2025-08-20T06:03:33.826Z",
|
||||
"EditorCaption": ""
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
69
.vs/Complex/v17/DocumentLayout.json
Normal file
69
.vs/Complex/v17/DocumentLayout.json
Normal file
@@ -0,0 +1,69 @@
|
||||
{
|
||||
"Version": 1,
|
||||
"WorkspaceRootPath": "D:\\Data\\Projects\\Nabak\\Complex\\",
|
||||
"Documents": [
|
||||
{
|
||||
"AbsoluteMoniker": "D:0:0:{2D82DF39-0B01-4EE8-A123-345865CD153E}|Complex.Application\\Complex.Application.csproj|d:\\data\\projects\\nabak\\complex\\complex.application\\services\\basic\\chargecycleservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
|
||||
"RelativeMoniker": "D:0:0:{2D82DF39-0B01-4EE8-A123-345865CD153E}|Complex.Application\\Complex.Application.csproj|solutionrelative:complex.application\\services\\basic\\chargecycleservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
|
||||
},
|
||||
{
|
||||
"AbsoluteMoniker": "D:0:0:{7136066A-2238-481B-A4AD-BCE811506901}|Complex.EndPoint\\Complex.EndPoint.csproj|d:\\data\\projects\\nabak\\complex\\complex.endpoint\\controllers\\managecostcontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
|
||||
"RelativeMoniker": "D:0:0:{7136066A-2238-481B-A4AD-BCE811506901}|Complex.EndPoint\\Complex.EndPoint.csproj|solutionrelative:complex.endpoint\\controllers\\managecostcontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
|
||||
},
|
||||
{
|
||||
"AbsoluteMoniker": "D:0:0:{2D82DF39-0B01-4EE8-A123-345865CD153E}|Complex.Application\\Complex.Application.csproj|d:\\data\\projects\\nabak\\complex\\complex.application\\services\\unit\\unitservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
|
||||
"RelativeMoniker": "D:0:0:{2D82DF39-0B01-4EE8-A123-345865CD153E}|Complex.Application\\Complex.Application.csproj|solutionrelative:complex.application\\services\\unit\\unitservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
|
||||
}
|
||||
],
|
||||
"DocumentGroupContainers": [
|
||||
{
|
||||
"Orientation": 0,
|
||||
"VerticalTabListWidth": 256,
|
||||
"DocumentGroups": [
|
||||
{
|
||||
"DockedWidth": 200,
|
||||
"SelectedChildIndex": 1,
|
||||
"Children": [
|
||||
{
|
||||
"$type": "Document",
|
||||
"DocumentIndex": 2,
|
||||
"Title": "UnitService.cs",
|
||||
"DocumentMoniker": "D:\\Data\\Projects\\Nabak\\Complex\\Complex.Application\\Services\\Unit\\UnitService.cs",
|
||||
"RelativeDocumentMoniker": "Complex.Application\\Services\\Unit\\UnitService.cs",
|
||||
"ToolTip": "D:\\Data\\Projects\\Nabak\\Complex\\Complex.Application\\Services\\Unit\\UnitService.cs",
|
||||
"RelativeToolTip": "Complex.Application\\Services\\Unit\\UnitService.cs",
|
||||
"ViewState": "AgIAAIwAAAAAAAAAAAAhwJYAAAA1AAAAAAAAAA==",
|
||||
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
|
||||
"WhenOpened": "2025-08-20T06:24:55.285Z"
|
||||
},
|
||||
{
|
||||
"$type": "Document",
|
||||
"DocumentIndex": 0,
|
||||
"Title": "ChargeCycleService.cs",
|
||||
"DocumentMoniker": "D:\\Data\\Projects\\Nabak\\Complex\\Complex.Application\\Services\\Basic\\ChargeCycleService.cs",
|
||||
"RelativeDocumentMoniker": "Complex.Application\\Services\\Basic\\ChargeCycleService.cs",
|
||||
"ToolTip": "D:\\Data\\Projects\\Nabak\\Complex\\Complex.Application\\Services\\Basic\\ChargeCycleService.cs",
|
||||
"RelativeToolTip": "Complex.Application\\Services\\Basic\\ChargeCycleService.cs",
|
||||
"ViewState": "AgIAAAAAAAAAAAAAAAAAABQAAAAgAAAAAAAAAA==",
|
||||
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
|
||||
"WhenOpened": "2025-08-20T06:04:28.478Z",
|
||||
"EditorCaption": ""
|
||||
},
|
||||
{
|
||||
"$type": "Document",
|
||||
"DocumentIndex": 1,
|
||||
"Title": "ManageCostController.cs",
|
||||
"DocumentMoniker": "D:\\Data\\Projects\\Nabak\\Complex\\Complex.EndPoint\\Controllers\\ManageCostController.cs",
|
||||
"RelativeDocumentMoniker": "Complex.EndPoint\\Controllers\\ManageCostController.cs",
|
||||
"ToolTip": "D:\\Data\\Projects\\Nabak\\Complex\\Complex.EndPoint\\Controllers\\ManageCostController.cs",
|
||||
"RelativeToolTip": "Complex.EndPoint\\Controllers\\ManageCostController.cs",
|
||||
"ViewState": "AgIAACEAAAAAAAAAAAAqwCwAAAAJAAAAAAAAAA==",
|
||||
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
|
||||
"WhenOpened": "2025-08-20T06:03:33.826Z"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
BIN
.vs/Complex/v17/HierarchyCache.v1.txt
Normal file
BIN
.vs/Complex/v17/HierarchyCache.v1.txt
Normal file
Binary file not shown.
BIN
.vs/ProjectEvaluation/complex.metadata.v9.bin
Normal file
BIN
.vs/ProjectEvaluation/complex.metadata.v9.bin
Normal file
Binary file not shown.
BIN
.vs/ProjectEvaluation/complex.projects.v9.bin
Normal file
BIN
.vs/ProjectEvaluation/complex.projects.v9.bin
Normal file
Binary file not shown.
BIN
.vs/ProjectEvaluation/complex.strings.v9.bin
Normal file
BIN
.vs/ProjectEvaluation/complex.strings.v9.bin
Normal file
Binary file not shown.
20
Complex.Application/Complex.Application.csproj
Normal file
20
Complex.Application/Complex.Application.csproj
Normal file
@@ -0,0 +1,20 @@
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
|
||||
<PropertyGroup>
|
||||
<TargetFramework>net6.0</TargetFramework>
|
||||
<ImplicitUsings>enable</ImplicitUsings>
|
||||
<Nullable>enable</Nullable>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<PackageReference Include="AutoMapper" Version="11.0.1" />
|
||||
<PackageReference Include="Microsoft.EntityFrameworkCore" Version="6.0.3" />
|
||||
<PackageReference Include="Newtonsoft.Json" Version="13.0.1" />
|
||||
<PackageReference Include="System.Linq.Dynamic.Core" Version="1.6.7" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\Complex.Domain\Complex.Domain.csproj" />
|
||||
</ItemGroup>
|
||||
|
||||
</Project>
|
||||
36
Complex.Application/IComplexDBContext.cs
Normal file
36
Complex.Application/IComplexDBContext.cs
Normal file
@@ -0,0 +1,36 @@
|
||||
using Complex.Domain.Entities;
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
using Microsoft.EntityFrameworkCore.ChangeTracking;
|
||||
|
||||
namespace Complex.Application
|
||||
{
|
||||
public interface IComplexDBContext
|
||||
{
|
||||
DbSet<BasicTable> BasicTables { get; set; }
|
||||
DbSet<UnitState> UnitStates { get; set; }
|
||||
DbSet<Chat> Chats { get; set; }
|
||||
DbSet<ComplexEntity> ComplexEntities { get; set; }
|
||||
DbSet<ComplexManager> ComplexManagers { get; set; }
|
||||
DbSet<ComplexUnitEvent> ComplexUnitEvents { get; set; }
|
||||
DbSet<Person> Persons { get; set; }
|
||||
DbSet<ComplexPerson> ComplexPersons { get; set; }
|
||||
|
||||
DbSet<Poster> Posters { get; set; }
|
||||
DbSet<Transaction> Transactions { get; set; }
|
||||
DbSet<IncomeCostTitle> IncomeCostTitles { get; set; }
|
||||
DbSet<TransactionType> TransactionTypes { get; set; }
|
||||
DbSet<UnitCost> UnitCosts { get; set; }
|
||||
DbSet<CostCycle> CostCycles { get; set; }
|
||||
DbSet<Unit> Units { get; set; }
|
||||
DbSet<UserToken> UserTokens { get; set; }
|
||||
DbSet<SmsCode> SmsCodes { get; set; }
|
||||
|
||||
EntityEntry Add(object entity);
|
||||
object? Find(Type entityType, object keyId);
|
||||
int SaveChanges(bool acceptAllChangesOnSuccess);
|
||||
int SaveChanges();
|
||||
Task<int> SaveChangesAsync(bool acceptAllChangesOnSuccess, CancellationToken cancellationToken = new CancellationToken());
|
||||
Task<int> SaveChangesAsync(CancellationToken cancellationToken = new CancellationToken());
|
||||
EntityEntry Entry(object entity);
|
||||
}
|
||||
}
|
||||
22
Complex.Application/Other/Common/Dto/CommonRequestDto.cs
Normal file
22
Complex.Application/Other/Common/Dto/CommonRequestDto.cs
Normal file
@@ -0,0 +1,22 @@
|
||||
namespace Complex.Application.Common
|
||||
{
|
||||
public class CommonRequestDto
|
||||
{
|
||||
/// <summary>
|
||||
/// فیلد ترتیب
|
||||
/// </summary>
|
||||
public string? SortField { set; get; }
|
||||
/// <summary>
|
||||
/// نحوه ترتیب
|
||||
/// </summary>
|
||||
public SortDirection? sortDirection { set; get; } = SortDirection.asc;
|
||||
|
||||
public int Page { set; get; } = 0;
|
||||
public int Length { set; get; } = 10;
|
||||
}
|
||||
public enum SortDirection
|
||||
{
|
||||
asc,
|
||||
desc
|
||||
}
|
||||
}
|
||||
7
Complex.Application/Other/Common/Dto/IBaseResponseDto.cs
Normal file
7
Complex.Application/Other/Common/Dto/IBaseResponseDto.cs
Normal file
@@ -0,0 +1,7 @@
|
||||
namespace Complex.Application.Common
|
||||
{
|
||||
public interface IBaseResponseDto
|
||||
{
|
||||
List<string> Action { set; get; }
|
||||
}
|
||||
}
|
||||
26
Complex.Application/Other/Common/Dto/ResultDto.cs
Normal file
26
Complex.Application/Other/Common/Dto/ResultDto.cs
Normal file
@@ -0,0 +1,26 @@
|
||||
namespace Complex.Common.Dto
|
||||
{
|
||||
public class ResultDto
|
||||
{
|
||||
public bool IsSuccess { get; set; }
|
||||
public string Message { get; set; }
|
||||
}
|
||||
|
||||
public class ResultDto<T>
|
||||
{
|
||||
public ResultDto()
|
||||
{
|
||||
|
||||
}
|
||||
public ResultDto(T data,bool isSuccess=true)
|
||||
{
|
||||
Data = data;
|
||||
IsSuccess = isSuccess;
|
||||
}
|
||||
public bool IsSuccess { get; set; }
|
||||
public string Message { get; set; }
|
||||
public T Data { get; set; }
|
||||
public int RowCount { set; get; }
|
||||
}
|
||||
|
||||
}
|
||||
71
Complex.Application/Other/Common/EnumHelpers.cs
Normal file
71
Complex.Application/Other/Common/EnumHelpers.cs
Normal file
@@ -0,0 +1,71 @@
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
using System.Reflection;
|
||||
|
||||
namespace Complex.Common
|
||||
{
|
||||
public static class EnumHelpers<T>
|
||||
{
|
||||
public static IList<T> GetValues(Enum value)
|
||||
{
|
||||
var enumValues = new List<T>();
|
||||
|
||||
foreach (FieldInfo fi in value.GetType().GetFields(BindingFlags.Static | BindingFlags.Public))
|
||||
{
|
||||
enumValues.Add((T)Enum.Parse(value.GetType(), fi.Name, false));
|
||||
}
|
||||
return enumValues;
|
||||
}
|
||||
|
||||
public static T Parse(string value)
|
||||
{
|
||||
return (T)Enum.Parse(typeof(T), value, true);
|
||||
}
|
||||
|
||||
public static IList<string> GetNames(Enum value)
|
||||
{
|
||||
return value.GetType().GetFields(BindingFlags.Static | BindingFlags.Public).Select(fi => fi.Name).ToList();
|
||||
}
|
||||
|
||||
public static IList<string> GetDisplayValues(Enum value)
|
||||
{
|
||||
return GetNames(value).Select(obj => GetDisplayValue(Parse(obj))).ToList();
|
||||
}
|
||||
|
||||
private static string lookupResource(Type resourceManagerProvider, string resourceKey)
|
||||
{
|
||||
foreach (PropertyInfo staticProperty in resourceManagerProvider.GetProperties(BindingFlags.Static | BindingFlags.NonPublic | BindingFlags.Public))
|
||||
{
|
||||
if (staticProperty.PropertyType == typeof(System.Resources.ResourceManager))
|
||||
{
|
||||
System.Resources.ResourceManager resourceManager = (System.Resources.ResourceManager)staticProperty.GetValue(null, null);
|
||||
return resourceManager.GetString(resourceKey);
|
||||
}
|
||||
}
|
||||
|
||||
return resourceKey; // Fallback with the key name
|
||||
}
|
||||
|
||||
public static string GetDisplayValue(T value)
|
||||
{
|
||||
try
|
||||
{
|
||||
var fieldInfo = value.GetType().GetField(value.ToString());
|
||||
|
||||
var descriptionAttributes = fieldInfo.GetCustomAttributes(
|
||||
typeof(DisplayAttribute), false) as DisplayAttribute[];
|
||||
|
||||
if (descriptionAttributes[0].ResourceType != null)
|
||||
return lookupResource(descriptionAttributes[0].ResourceType, descriptionAttributes[0].Name);
|
||||
|
||||
if (descriptionAttributes == null) return string.Empty;
|
||||
return (descriptionAttributes.Length > 0) ? descriptionAttributes[0].Name : value.ToString();
|
||||
}
|
||||
catch (Exception)
|
||||
{
|
||||
|
||||
return "نا مشخص";
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
81
Complex.Application/Other/Common/FileIO.cs
Normal file
81
Complex.Application/Other/Common/FileIO.cs
Normal file
@@ -0,0 +1,81 @@
|
||||
using System.Text;
|
||||
|
||||
namespace Complex.Application.Common
|
||||
{
|
||||
public class FileIO
|
||||
{
|
||||
//==============================================================
|
||||
|
||||
public FileIO()
|
||||
{
|
||||
//
|
||||
// TODO: Add constructor logic here
|
||||
//
|
||||
}
|
||||
//==============================================================
|
||||
|
||||
/// <summary>
|
||||
/// ثبت محتوا در یک فایل
|
||||
/// </summary>
|
||||
/// <param name="fileName">نام فایل</param>
|
||||
/// <param name="content">محتوای فایل</param>
|
||||
public static void Write(string fileName, string content, bool activeInServer = false)
|
||||
{
|
||||
//if (!SystemDefine.IsLocal && !activeInServer)
|
||||
// return;
|
||||
//System.IO.File.AppendAllText(HttpContext.Current.Server.MapPath("/FileIO/" + fileName), content, Encoding.UTF8);
|
||||
Writeln(fileName, content, activeInServer);
|
||||
}
|
||||
//==============================================================
|
||||
|
||||
public static void Clear(string fileName)
|
||||
{
|
||||
//return;
|
||||
System.IO.File.WriteAllText(AppDomain.CurrentDomain.BaseDirectory + "/FileIO/" + fileName, "", Encoding.UTF8);
|
||||
}
|
||||
//==============================================================
|
||||
|
||||
/// <summary>
|
||||
/// ثبت محتوا در یک فایل در یک خط جدید
|
||||
/// </summary>
|
||||
/// <param name="fileName">نام فایل</param>
|
||||
/// <param name="content">محتوای فایل</param>
|
||||
public static void Writeln(string fileName, string content, bool activeInServer = false)
|
||||
{
|
||||
|
||||
//try
|
||||
{
|
||||
|
||||
System.IO.File.AppendAllText(AppDomain.CurrentDomain.BaseDirectory + "/FileIO/" + fileName, content + "\r\n", Encoding.UTF8);
|
||||
}
|
||||
//catch { }
|
||||
}
|
||||
//==============================================================
|
||||
|
||||
/// <summary>
|
||||
/// ثبت محتوا در یک فایل در یک خط جدید
|
||||
/// </summary>
|
||||
/// <param name="fileName">نام فایل</param>
|
||||
/// <param name="content">محتوای فایل</param>
|
||||
public static void Writeln(string fileName, string description, Exception exc, bool activeInServer = false)
|
||||
{
|
||||
//if (!SystemDefine.IsLocal && !activeInServer)
|
||||
// return;
|
||||
|
||||
try
|
||||
{
|
||||
Writeln(fileName, ">>>>>>");
|
||||
Writeln(fileName, description);
|
||||
while (exc != null)
|
||||
{
|
||||
Writeln(fileName, exc.Message);
|
||||
Writeln(fileName, exc.StackTrace);
|
||||
exc = exc.InnerException;
|
||||
}
|
||||
Writeln(fileName, "<<<<<<");
|
||||
}
|
||||
catch { }
|
||||
}
|
||||
//==============================================================
|
||||
}
|
||||
}
|
||||
44
Complex.Application/Other/Common/Pagination.cs
Normal file
44
Complex.Application/Other/Common/Pagination.cs
Normal file
@@ -0,0 +1,44 @@
|
||||
using System.Linq.Dynamic.Core;
|
||||
|
||||
namespace Complex.Application.Common
|
||||
{
|
||||
public static class Pagination
|
||||
{
|
||||
public static IQueryable<TSource> ToPagedByOrder<TSource>(this IQueryable<TSource> source,
|
||||
CommonRequestDto commonRequest, out int rowsCount)
|
||||
{
|
||||
if (commonRequest.Length < 0)
|
||||
commonRequest.Length = 20000;
|
||||
if (commonRequest.Length == 0)
|
||||
commonRequest.Length = 10;
|
||||
|
||||
rowsCount = source.Count();
|
||||
|
||||
if (commonRequest.sortDirection == SortDirection.desc)
|
||||
commonRequest.SortField += " DESC";
|
||||
|
||||
source = source.OrderBy(commonRequest.SortField);
|
||||
|
||||
return source.Skip(commonRequest.Page * commonRequest.Length).Take(commonRequest.Length);
|
||||
}
|
||||
public static IQueryable<TSource> ToPaged<TSource>(this IQueryable<TSource> source, int page, int pageSize, out int rowsCount)
|
||||
{
|
||||
if (pageSize == -1)
|
||||
pageSize = 20000;
|
||||
if (pageSize == 0)
|
||||
pageSize = 10;
|
||||
|
||||
rowsCount = source.Count();
|
||||
return source.Skip(page * pageSize).Take(pageSize);
|
||||
}
|
||||
public static IQueryable<TSource> ToPaged<TSource>(this IQueryable<TSource> source, int page, int pageSize)
|
||||
{
|
||||
if (pageSize == -1)
|
||||
pageSize = 20000;
|
||||
if (pageSize == 0)
|
||||
pageSize = 10;
|
||||
|
||||
return source.Skip(page * pageSize).Take(pageSize);
|
||||
}
|
||||
}
|
||||
}
|
||||
238
Complex.Application/Other/Common/PasswordHasher.cs
Normal file
238
Complex.Application/Other/Common/PasswordHasher.cs
Normal file
@@ -0,0 +1,238 @@
|
||||
//using Microsoft.AspNetCore.Cryptography.KeyDerivation;
|
||||
//using System;
|
||||
//using System.Runtime.CompilerServices;
|
||||
//using System.Security.Cryptography;
|
||||
//using System.Text;
|
||||
|
||||
//namespace Complex.Common
|
||||
//{
|
||||
// public class PasswordHasher
|
||||
// {
|
||||
// // Format Markers:
|
||||
// // IdentityV2: PBKDF2 with HMAC-SHA1, 128-bit salt, 256-bit subkey, 1000 iterations.
|
||||
// // IdentityV2 Format: { 0x00(byte), salt, subkey }
|
||||
// // IdentityV3: PBKDF2 with HMAC-SHA256, 128-bit salt, 256-bit subkey, 10000 iterations.
|
||||
// // IdentityV3 Format: { 0x01(byte), prf(UInt32), iter count(UInt32), salt length(UInt32), salt, subkey }
|
||||
// // Custom = PBKDF2 with custom configuration.
|
||||
// // Format: { 0xC0(byte), salt, subkey } OR
|
||||
// // { 0xC0(byte), prf(UInt32), iter count(UInt32), salt length(UInt32), salt, subkey }
|
||||
// // Header Info: _includeHeaderInfo
|
||||
// // IdentityV3 includes configuration in the header, IdentityV2 does not.
|
||||
// // Use AspNetCore: _useAspNetCore
|
||||
// // Microsoft.AspNetCore.Cryptography.KeyDerivation is required
|
||||
// // else use System.Security.Cryptography
|
||||
|
||||
// private readonly bool _useAspNetCore;
|
||||
// private readonly byte _formatMarker;
|
||||
// private readonly KeyDerivationPrf _prf; // Requires Microsoft.AspNetCore
|
||||
// private readonly HashAlgorithmName _hashAlgorithmName;
|
||||
// private readonly bool _includeHeaderInfo;
|
||||
// private readonly int _saltLength;
|
||||
// private readonly int _requestedLength;
|
||||
// private readonly int _iterCount;
|
||||
|
||||
// public PasswordHasher()
|
||||
// {
|
||||
// _useAspNetCore = true;
|
||||
|
||||
// // IdentityV2
|
||||
// //_formatMarker = 0x00;
|
||||
// //_prf = KeyDerivationPrf.HMACSHA1; // Requires Microsoft.AspNetCore
|
||||
// //_hashAlgorithmName = HashAlgorithmName.SHA1;
|
||||
// //_includeHeaderInfo = false;
|
||||
// //_saltLength = 128 / 8; // bits/1 byte = 16
|
||||
// //_requestedLength = 256 / 8; // bits/1 byte = 32
|
||||
// //_iterCount = 1000;
|
||||
|
||||
// // IdentityV3
|
||||
// _formatMarker = 0x01;
|
||||
// _prf = KeyDerivationPrf.HMACSHA256; // Requires Microsoft.AspNetCore
|
||||
// _hashAlgorithmName = HashAlgorithmName.SHA256;
|
||||
// _includeHeaderInfo = true;
|
||||
// _saltLength = 128 / 8; // bits/1 byte = 16
|
||||
// _requestedLength = 256 / 8; // bits/1 byte = 32
|
||||
// _iterCount = 10000;
|
||||
|
||||
// // Custom Max
|
||||
// //_formatMarker = 0xC0;
|
||||
// //_prf = KeyDerivationPrf.HMACSHA512; // Requires Microsoft.AspNetCore
|
||||
// //_hashAlgorithmName = HashAlgorithmName.SHA512;
|
||||
// //_includeHeaderInfo = true;
|
||||
// //_saltLength = 512 / 8; // bits/1 byte = 64
|
||||
// //_requestedLength = 512 / 8; // bits/1 byte = 64
|
||||
// //_iterCount = 100000;
|
||||
// }
|
||||
|
||||
// public string HashPassword(string password)
|
||||
// {
|
||||
// if (string.IsNullOrEmpty(password)) throw new ArgumentNullException(nameof(password));
|
||||
|
||||
// byte[] salt = new byte[_saltLength];
|
||||
// using (var rng = RandomNumberGenerator.Create())
|
||||
// {
|
||||
// rng.GetBytes(salt);
|
||||
// }
|
||||
|
||||
// byte[] subkey = new byte[_requestedLength];
|
||||
// if (_useAspNetCore)
|
||||
// {
|
||||
// subkey = KeyDerivation.Pbkdf2(password, salt, _prf, _iterCount, _requestedLength);
|
||||
// }
|
||||
// else
|
||||
// {
|
||||
// using var pbkdf2 = new Rfc2898DeriveBytes(password, salt, _iterCount, _hashAlgorithmName);
|
||||
// subkey = pbkdf2.GetBytes(_requestedLength);
|
||||
// }
|
||||
|
||||
// var headerByteLength = 1; // Format marker only
|
||||
// if (_includeHeaderInfo) headerByteLength = 13;
|
||||
|
||||
// var outputBytes = new byte[headerByteLength + salt.Length + subkey.Length];
|
||||
|
||||
// outputBytes[0] = (byte)_formatMarker;
|
||||
|
||||
// if (_includeHeaderInfo)
|
||||
// {
|
||||
// if (_useAspNetCore)
|
||||
// {
|
||||
// WriteNetworkByteOrder(outputBytes, 1, (uint)_prf);
|
||||
// }
|
||||
// else
|
||||
// {
|
||||
// var shaInt = 1;
|
||||
// if (_hashAlgorithmName == HashAlgorithmName.SHA1) shaInt = 0;
|
||||
// else if (_hashAlgorithmName == HashAlgorithmName.SHA256) shaInt = 1;
|
||||
// else if (_hashAlgorithmName == HashAlgorithmName.SHA512) shaInt = 2;
|
||||
|
||||
// WriteNetworkByteOrder(outputBytes, 1, (uint)shaInt);
|
||||
// }
|
||||
|
||||
// WriteNetworkByteOrder(outputBytes, 5, (uint)_iterCount);
|
||||
// WriteNetworkByteOrder(outputBytes, 9, (uint)_saltLength);
|
||||
// }
|
||||
|
||||
// Buffer.BlockCopy(salt, 0, outputBytes, headerByteLength, salt.Length);
|
||||
// Buffer.BlockCopy(subkey, 0, outputBytes, headerByteLength + _saltLength, subkey.Length);
|
||||
|
||||
// return Convert.ToBase64String(outputBytes);
|
||||
// }
|
||||
|
||||
// public bool VerifyPassword(string hashedPassword, string enteredPassword)
|
||||
// {
|
||||
// if (string.IsNullOrEmpty(enteredPassword) || string.IsNullOrEmpty(hashedPassword)) return false;
|
||||
|
||||
// byte[] decodedHashedPassword;
|
||||
// try
|
||||
// {
|
||||
// decodedHashedPassword = Convert.FromBase64String(hashedPassword);
|
||||
// }
|
||||
// catch (Exception)
|
||||
// {
|
||||
// return false;
|
||||
// }
|
||||
|
||||
// if (decodedHashedPassword.Length == 0) return false;
|
||||
|
||||
// // Read the format marker
|
||||
// var verifyMarker = (byte)decodedHashedPassword[0];
|
||||
// if (_formatMarker != verifyMarker) return false;
|
||||
|
||||
// try
|
||||
// {
|
||||
// if (_includeHeaderInfo)
|
||||
// {
|
||||
// // Read header information
|
||||
// var shaUInt = (uint)ReadNetworkByteOrder(decodedHashedPassword, 1);
|
||||
// var verifyPrf = shaUInt switch
|
||||
// {
|
||||
// 0 => KeyDerivationPrf.HMACSHA1,
|
||||
// 1 => KeyDerivationPrf.HMACSHA256,
|
||||
// 2 => KeyDerivationPrf.HMACSHA512,
|
||||
// _ => KeyDerivationPrf.HMACSHA256,
|
||||
// };
|
||||
// if (_prf != verifyPrf) return false;
|
||||
|
||||
// var verifyAlgorithmName = shaUInt switch
|
||||
// {
|
||||
// 0 => HashAlgorithmName.SHA1,
|
||||
// 1 => HashAlgorithmName.SHA256,
|
||||
// 2 => HashAlgorithmName.SHA512,
|
||||
// _ => HashAlgorithmName.SHA256,
|
||||
// };
|
||||
// if (_hashAlgorithmName != verifyAlgorithmName) return false;
|
||||
|
||||
// int iterCountRead = (int)ReadNetworkByteOrder(decodedHashedPassword, 5);
|
||||
// if (_iterCount != iterCountRead) return false;
|
||||
|
||||
// int saltLengthRead = (int)ReadNetworkByteOrder(decodedHashedPassword, 9);
|
||||
// if (_saltLength != saltLengthRead) return false;
|
||||
// }
|
||||
|
||||
// var headerByteLength = 1; // Format marker only
|
||||
// if (_includeHeaderInfo) headerByteLength = 13;
|
||||
|
||||
// // Read the salt
|
||||
// byte[] salt = new byte[_saltLength];
|
||||
// Buffer.BlockCopy(decodedHashedPassword, headerByteLength, salt, 0, salt.Length);
|
||||
|
||||
// // Read the subkey (the rest of the payload)
|
||||
// int subkeyLength = decodedHashedPassword.Length - headerByteLength - salt.Length;
|
||||
|
||||
// if (_requestedLength != subkeyLength) return false;
|
||||
|
||||
// byte[] expectedSubkey = new byte[subkeyLength];
|
||||
// Buffer.BlockCopy(decodedHashedPassword, headerByteLength + salt.Length, expectedSubkey, 0, expectedSubkey.Length);
|
||||
|
||||
// // Hash the incoming password and verify it
|
||||
// byte[] actualSubkey = new byte[_requestedLength];
|
||||
// if (_useAspNetCore)
|
||||
// {
|
||||
// actualSubkey = KeyDerivation.Pbkdf2(enteredPassword, salt, _prf, _iterCount, subkeyLength);
|
||||
// }
|
||||
// else
|
||||
// {
|
||||
// using var pbkdf2 = new Rfc2898DeriveBytes(enteredPassword, salt, _iterCount, _hashAlgorithmName);
|
||||
// actualSubkey = pbkdf2.GetBytes(_requestedLength);
|
||||
// }
|
||||
|
||||
// return ByteArraysEqual(actualSubkey, expectedSubkey);
|
||||
// }
|
||||
// catch
|
||||
// {
|
||||
// // This should never occur except in the case of a malformed payload, where
|
||||
// // we might go off the end of the array. Regardless, a malformed payload
|
||||
// // implies verification failed.
|
||||
// return false;
|
||||
// }
|
||||
// }
|
||||
|
||||
// // Compares two byte arrays for equality. The method is specifically written so that the loop is not optimized.
|
||||
// [MethodImpl(MethodImplOptions.NoInlining | MethodImplOptions.NoOptimization)]
|
||||
// private static bool ByteArraysEqual(byte[] a, byte[] b)
|
||||
// {
|
||||
// if (a == null && b == null) return true;
|
||||
// if (a == null || b == null || a.Length != b.Length) return false;
|
||||
// var areSame = true;
|
||||
// for (var i = 0; i < a.Length; i++) { areSame &= (a[i] == b[i]); }
|
||||
// return areSame;
|
||||
// }
|
||||
|
||||
// private static uint ReadNetworkByteOrder(byte[] buffer, int offset)
|
||||
// {
|
||||
// return ((uint)(buffer[offset + 0]) << 24)
|
||||
// | ((uint)(buffer[offset + 1]) << 16)
|
||||
// | ((uint)(buffer[offset + 2]) << 8)
|
||||
// | ((uint)(buffer[offset + 3]));
|
||||
// }
|
||||
|
||||
// private static void WriteNetworkByteOrder(byte[] buffer, int offset, uint value)
|
||||
// {
|
||||
// buffer[offset + 0] = (byte)(value >> 24);
|
||||
// buffer[offset + 1] = (byte)(value >> 16);
|
||||
// buffer[offset + 2] = (byte)(value >> 8);
|
||||
// buffer[offset + 3] = (byte)(value >> 0);
|
||||
// }
|
||||
// }
|
||||
|
||||
|
||||
//}
|
||||
36
Complex.Application/Other/Mapping/MappingProfile.cs
Normal file
36
Complex.Application/Other/Mapping/MappingProfile.cs
Normal file
@@ -0,0 +1,36 @@
|
||||
using AutoMapper;
|
||||
using Complex.Application.Basic;
|
||||
using Complex.Application.Complex;
|
||||
using Complex.Application.PersonService;
|
||||
using Complex.Application.Services.Basic;
|
||||
using Complex.Domain.Entities;
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
|
||||
namespace Complex.Mapping;
|
||||
|
||||
public partial class MappingProfile : Profile
|
||||
{
|
||||
public MappingProfile()
|
||||
{
|
||||
//CreateMap<ComplexEntity, ComplexDto>().ReverseMap();
|
||||
//CreateMap<ComplexEntity, ComplexDto>()
|
||||
//.ForMember(m => m.InsertTime, m => m.MapFrom(src => EF.Property<DateTime>(src, "InsertTime")))
|
||||
//.ForMember(m => m.UpdateTime, m => m.MapFrom(src => EF.Property<DateTime?>(src, "UpdateTime")));
|
||||
|
||||
CreateMap<ComplexDto, ComplexEntity>().ReverseMap();
|
||||
|
||||
//.ReverseMap();
|
||||
CreateMap<UnitDto, Unit>().ReverseMap();
|
||||
|
||||
//CreateMap<Unit, UnitDto>()
|
||||
//.ForMember(m => m.InsertTime, m => m.MapFrom(src => EF.Property<DateTime>(src, "InsertTime")))
|
||||
//.ForMember(m => m.UpdateTime, m => m.MapFrom(src => EF.Property<DateTime?>(src, "UpdateTime")));
|
||||
//.ReverseMap();
|
||||
|
||||
CreateMap<UnitStateDto, UnitState>().ReverseMap();
|
||||
|
||||
CreateMap<Person, PersonDto>().ReverseMap();
|
||||
|
||||
CreateMap<CostCycle, CostCycleDto>().ReverseMap();
|
||||
}
|
||||
}
|
||||
295
Complex.Application/Other/Utility/PersianDate.cs
Normal file
295
Complex.Application/Other/Utility/PersianDate.cs
Normal file
@@ -0,0 +1,295 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Globalization;
|
||||
using System.Linq;
|
||||
using System.Text.RegularExpressions;
|
||||
|
||||
namespace Complex.Application.Utility
|
||||
{
|
||||
public class PersianDate
|
||||
{
|
||||
public struct PDate
|
||||
{
|
||||
public int Year { set; get; }
|
||||
public int Month { set; get; }
|
||||
public int Day { set; get; }
|
||||
}
|
||||
public PersianDate()
|
||||
{
|
||||
|
||||
}
|
||||
public static DateTime CurrentDate
|
||||
{
|
||||
get
|
||||
{
|
||||
return DateTime.Now;
|
||||
}
|
||||
}//= DateTime.Now;
|
||||
public static PersianCalendar persianDate = new PersianCalendar();
|
||||
|
||||
public static DateTime ConvertToMiladi(string PersianDateString)
|
||||
{
|
||||
if (PersianDateString.IsNullOrEmpty())
|
||||
return new DateTime();
|
||||
DateTime date;
|
||||
var splitP = PersianDateString.Substring(0, 10).Split("- /".ToCharArray()).Select(d => d.ToInt().Value).ToArray();
|
||||
date = new DateTime(splitP[0], splitP[1], splitP[2], persianDate);
|
||||
return date;
|
||||
}
|
||||
|
||||
public static int CurrentPersianYear
|
||||
{
|
||||
get
|
||||
{
|
||||
return persianDate.GetYear(CurrentDate);
|
||||
}
|
||||
}
|
||||
public static int CurrentPersianMonth
|
||||
{
|
||||
get
|
||||
{
|
||||
return persianDate.GetMonth(CurrentDate);
|
||||
}
|
||||
}
|
||||
public static int CurrentPersianDay
|
||||
{
|
||||
get
|
||||
{
|
||||
return persianDate.GetDayOfMonth(CurrentDate);
|
||||
}
|
||||
}
|
||||
public static List<string> PersianWeekDay = new List<string>()
|
||||
{
|
||||
"شنبه",
|
||||
"یکشنبه",
|
||||
"دوشنبه",
|
||||
"سه شنبه",
|
||||
"چهارشنبه",
|
||||
"پنج شنبه",
|
||||
"جمعه"
|
||||
};
|
||||
public static List<string> PersianMonth = new List<string>()
|
||||
{
|
||||
"فروردین",
|
||||
"اردیبهشت",
|
||||
"خرداد",
|
||||
"تیر",
|
||||
"مرداد",
|
||||
"شهریور",
|
||||
"مهر",
|
||||
"آبان",
|
||||
"آذر",
|
||||
"دی",
|
||||
"بهمن",
|
||||
"اسفند"
|
||||
};
|
||||
public static string CurrentMonth
|
||||
{
|
||||
get
|
||||
{
|
||||
return PersianMonth[persianDate.GetMonth(DateTime.Now) - 1];
|
||||
}
|
||||
}
|
||||
public static string CurrntWeekDay
|
||||
{
|
||||
get
|
||||
{
|
||||
try
|
||||
{
|
||||
var d = (int)persianDate.GetDayOfWeek(DateTime.Now);
|
||||
if (d == 6)
|
||||
d = -1;
|
||||
return PersianWeekDay[d + 1];
|
||||
}
|
||||
catch { return persianDate.GetDayOfWeek(DateTime.Now).ToString() + "," + (int)persianDate.GetDayOfWeek(DateTime.Now); }
|
||||
}
|
||||
}
|
||||
public static int CurrentDaysInMonth
|
||||
{
|
||||
get
|
||||
{
|
||||
return persianDate.GetDaysInMonth(CurrentPersianYear, CurrentPersianMonth);
|
||||
}
|
||||
}
|
||||
public static int StartDayInWeek(int Year, int Month)
|
||||
{
|
||||
DateTime dt = ConvertToMiladi(Year + "/" + Month.ToString().PadLeft(2, '0') + "/01");
|
||||
var d = (int)dt.DayOfWeek;
|
||||
if (d == 6)
|
||||
d = -1;
|
||||
return d + 1;
|
||||
}
|
||||
public static int CurrentDayInWeek
|
||||
{
|
||||
get
|
||||
{
|
||||
try
|
||||
{
|
||||
var d = (int)persianDate.GetDayOfWeek(DateTime.Now);
|
||||
if (d == 6)
|
||||
d = -1;
|
||||
return d + 1;
|
||||
}
|
||||
catch { return 0; }
|
||||
}
|
||||
}
|
||||
|
||||
public static string GetToday()
|
||||
{
|
||||
return GetDate(DateTime.Now);
|
||||
|
||||
//return Year + "/" + ((Month < 10) ? "0" + Month : Month.ToString()) + ((Day < 10) ? "0" + Day : Day.ToString());
|
||||
}
|
||||
public static string GetDateStringFormat(string date, bool showIntervalDate = false)
|
||||
{
|
||||
if (date.IsNullOrEmpty())
|
||||
return "--";
|
||||
date = date.Trim();
|
||||
string today = GetToday();
|
||||
if (date == today)
|
||||
return "امروز";
|
||||
string yesterday = GetDate(DateTime.Now.AddDays(-1));
|
||||
if (yesterday == today)
|
||||
return "دیروز";
|
||||
string twoYesterday = GetDate(DateTime.Now.AddDays(-2));
|
||||
if (twoYesterday == today)
|
||||
return "دو روز پیش";
|
||||
string treeYesterday = GetDate(DateTime.Now.AddDays(-3));
|
||||
if (treeYesterday == today)
|
||||
return "سه روز پیش";
|
||||
if (showIntervalDate)
|
||||
{
|
||||
var m1 = ConvertToMiladi(date);
|
||||
var diff = DateTime.Now - m1;
|
||||
|
||||
return (int)diff.TotalDays + " روز پیش";
|
||||
}
|
||||
else
|
||||
return date.Substring(8).ToInt() + " " + PersianMonth[date.Substring(5, 2).ToInt().Value - 1] + " ماه " + date.Substring(0, 4);
|
||||
}
|
||||
|
||||
public static int? GetDateDiff(string date1, string date2)
|
||||
{
|
||||
if (date1.IsNullOrEmpty() || date2.IsNullOrEmpty())
|
||||
return null;
|
||||
string today = GetToday();
|
||||
var m1 = ConvertToMiladi(date1);
|
||||
var m2 = ConvertToMiladi(date2);
|
||||
var diff = m2 - m1;
|
||||
|
||||
return (int)diff.TotalDays;
|
||||
}
|
||||
|
||||
public static string GetDate(DateTime day)
|
||||
{
|
||||
int Year = persianDate.GetYear(day);
|
||||
int Month = persianDate.GetMonth(day);
|
||||
int Day = persianDate.GetDayOfMonth(day);
|
||||
|
||||
return string.Format("{0:D2}/{1:D2}/{2:D2}", Year, Month, Day);
|
||||
//return Year + "/" + ((Month < 10) ? "0" + Month : Month.ToString()) + ((Day < 10) ? "0" + Day : Day.ToString());
|
||||
}
|
||||
public static PDate GetPDate(DateTime day)
|
||||
{
|
||||
PDate pdate = new PDate();
|
||||
pdate.Year = persianDate.GetYear(day);
|
||||
pdate.Month = persianDate.GetMonth(day);
|
||||
pdate.Day = persianDate.GetDayOfMonth(day);
|
||||
return pdate;
|
||||
}
|
||||
public static string ToStandard(string _date)
|
||||
{
|
||||
if (_date.IsNullOrEmpty())
|
||||
return _date;
|
||||
try
|
||||
{
|
||||
var a = _date.Split('/').Select(i => i.ToInt().Value).ToArray();
|
||||
if (a.Count() < 2)
|
||||
return _date;
|
||||
return string.Format("{0:D2}/{1:D2}/{2:D2}", a[0], a[1], a[2]);
|
||||
}
|
||||
catch
|
||||
{
|
||||
return "";
|
||||
}
|
||||
//return Year + "/" + ((Month < 10) ? "0" + Month : Month.ToString()) + ((Day < 10) ? "0" + Day : Day.ToString());
|
||||
}
|
||||
|
||||
public static string GetNowTime(bool BySecond = false, bool ByMiliSecond = false)
|
||||
{
|
||||
DateTime dnow = DateTime.Now;
|
||||
return GetTime(dnow, BySecond, ByMiliSecond);
|
||||
}
|
||||
public static string GetTime(DateTime DT, bool BySecond = false, bool ByMiliSecond = false)
|
||||
{
|
||||
int minutes = DT.Minute;
|
||||
int Hour = DT.Hour;
|
||||
int Second = DT.Second;
|
||||
bool AN = DT.ToLongTimeString().ToLower().Contains("pm") || DT.ToLongTimeString().Contains("ب");
|
||||
|
||||
if (AN && Hour < 12)
|
||||
Hour += 12;
|
||||
|
||||
string time = string.Format("{0:D2}:{1:D2}", Hour, minutes); //((Hour < 10) ? "0" + Hour : Hour.ToString()) + ":" + ((minutes < 10) ? "0" + minutes : minutes.ToString());
|
||||
if (BySecond)
|
||||
time += ":" + (Second < 10 ? "0" + Second : Second.ToString());
|
||||
if (ByMiliSecond)
|
||||
time += ":" + DT.Millisecond;
|
||||
|
||||
return time;
|
||||
}
|
||||
|
||||
public static string GetNowDateTime(bool BySecond = false, bool ByMiliSecond = false)
|
||||
{
|
||||
return GetToday() + " - " + GetNowTime(BySecond, ByMiliSecond);
|
||||
}
|
||||
|
||||
public static string GetDateTime(DateTime DT, bool BySecond = false)
|
||||
{
|
||||
return GetDate(DT) + " - " + GetTime(DT, BySecond);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// محاسبه اختلاف دو زمان به ساعت و دقیقه
|
||||
/// </summary>
|
||||
/// <param name="beginTime">زمان شروع</param>
|
||||
/// <param name="endTime">زمان پایان</param>
|
||||
/// <returns></returns>
|
||||
public static string GetTimeDiff(string beginTime, string endTime)
|
||||
{
|
||||
var begin = beginTime.Split(':').Select(int.Parse).ToArray();
|
||||
var end = endTime.Split(':').Select(int.Parse).ToArray();
|
||||
int beginMinutes = begin[0] * 60 + begin[1];
|
||||
int endMinutes = end[0] * 60 + end[1];
|
||||
|
||||
int diffMinutes = endMinutes - beginMinutes;
|
||||
|
||||
int hour = diffMinutes / 60;
|
||||
int minute = diffMinutes % 60;
|
||||
|
||||
return string.Format("{0:D2}:{1:D2}", hour, minute);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// بررسی صحت یک رشته از نظر فرمت تاریخ
|
||||
/// </summary>
|
||||
/// <param name="date">تاریخ</param>
|
||||
/// <returns></returns>
|
||||
public static bool HasDateFormat(string date)
|
||||
{
|
||||
Regex regex = new Regex(@"^([12]\d{3}\/(0[1-9]|1[0-2])\/(0[1-9]|[12]\d|3[01]))$");
|
||||
return regex.IsMatch(date);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// بررسی صحت یک رشته از نظر فرمت زمان
|
||||
/// </summary>
|
||||
/// <param name="time">زمان</param>
|
||||
/// <returns></returns>
|
||||
public static bool HasTimeFormat(string time)
|
||||
{
|
||||
Regex regex = new Regex(@"^([01]?[0-9]|2[0-3]):[0-5][0-9]$");
|
||||
return regex.IsMatch(time);
|
||||
}
|
||||
}
|
||||
}
|
||||
484
Complex.Application/Other/Utility/Utitlity.cs
Normal file
484
Complex.Application/Other/Utility/Utitlity.cs
Normal file
@@ -0,0 +1,484 @@
|
||||
using Microsoft.Extensions.Logging;
|
||||
using Newtonsoft.Json;
|
||||
using System;
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Reflection;
|
||||
using System.Security.Cryptography;
|
||||
using System.Text;
|
||||
using System.Text.Json;
|
||||
using System.Text.RegularExpressions;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace Complex.Application.Utility
|
||||
{
|
||||
public static class ExtendFunction
|
||||
{
|
||||
public static string ObjectToJson(this object obj)
|
||||
{
|
||||
return JsonConvert.SerializeObject(obj, Formatting.Indented, new JsonSerializerSettings
|
||||
{
|
||||
ReferenceLoopHandling = ReferenceLoopHandling.Ignore,
|
||||
});
|
||||
//return System.Text.Json.JsonSerializer.Serialize(obj);
|
||||
}
|
||||
|
||||
public static byte[] ToByteArray(this Stream input)
|
||||
{
|
||||
using (MemoryStream ms = new MemoryStream())
|
||||
{
|
||||
input.CopyTo(ms);
|
||||
return ms.ToArray();
|
||||
}
|
||||
}
|
||||
|
||||
//public static void Log(this Exception ex)
|
||||
//{
|
||||
// if (ex is ThreadAbortException)
|
||||
// {
|
||||
// return;
|
||||
// }
|
||||
|
||||
// var a = new List<string>() { "[" + ex.Message + "]<br />" };
|
||||
// a.Add(ex.StackTrace);
|
||||
// while (ex.InnerException != null)
|
||||
// {
|
||||
// ex = ex.InnerException;
|
||||
// //a.Add("<br />-----------<br />[" + ex.Message + "]<br />---------<br />" + ex.StackTrace);
|
||||
// }
|
||||
// long personId = 0;
|
||||
// if (HttpContext.Current.Session != null && HttpContext.Current.Session["PersonID"] != null)
|
||||
// personId = HttpContext.Current.Session["PersonID"].ToString().ToLong().Value;
|
||||
// LogClass.SetLog(personId, -1, ex.Message, false, a, -1, 2);
|
||||
//}
|
||||
|
||||
public static string CodeID(this short ID)
|
||||
{
|
||||
return Code_ID(ID);
|
||||
}
|
||||
|
||||
public static string CodeID(this int ID)
|
||||
{
|
||||
return Code_ID(ID);
|
||||
}
|
||||
|
||||
public static string CodeID(this long ID)
|
||||
{
|
||||
return Code_ID(ID);
|
||||
}
|
||||
|
||||
static string Code_ID(long ID)
|
||||
{
|
||||
long id1 = ID ^ 0;//GetResourceLongValue("KeyCode1");
|
||||
id1 = id1 * 7 + 5;
|
||||
long id2 = id1.ToString().Length + ID % 10 ^ 0;//GetResourceLongValue("KeyCode2");
|
||||
return id1 + "_" + id2;
|
||||
}
|
||||
|
||||
public static long DeCodeID(this string ID)
|
||||
{
|
||||
string[] ids = ID.Split('_');
|
||||
long id1 = ids[0].ToLong().Value;
|
||||
id1 = (id1 - 5) / 7;
|
||||
id1 = id1 ^ 0;//GetResourceLongValue("KeyCode1");
|
||||
long id2 = ids[0].Length + id1 % 10 ^ 0;//GetResourceLongValue("KeyCode2");
|
||||
|
||||
if (ids[1] == id2.ToString())
|
||||
return id1;
|
||||
|
||||
return -1;
|
||||
}
|
||||
|
||||
public static long? ToLong(this object ID, long? defaultValue = null)
|
||||
{
|
||||
long LID;
|
||||
bool IsLong = long.TryParse(ID + "", out LID);
|
||||
if (IsLong)
|
||||
return LID;
|
||||
else
|
||||
return defaultValue;
|
||||
}
|
||||
public static int Value(this int? number, int defaultInt = 0)
|
||||
{
|
||||
if (number.HasValue)
|
||||
return number.Value;
|
||||
return defaultInt;
|
||||
}
|
||||
public static double Value(this double? number, int defaultInt = 0)
|
||||
{
|
||||
if (number.HasValue)
|
||||
return number.Value;
|
||||
return defaultInt;
|
||||
}
|
||||
public static string NumberToDate(this int? Date)
|
||||
{
|
||||
if (Date == null)
|
||||
return "";
|
||||
return Date.Value.NumberToDate();
|
||||
}
|
||||
public static string NumberToDate(this int Date)
|
||||
{
|
||||
try
|
||||
{
|
||||
var st = Date.ToString();
|
||||
return st.Substring(0, 4) + "/" + st.Substring(4, 2) + "/" + st.Substring(6, 2);
|
||||
}
|
||||
catch { return ""; }
|
||||
}
|
||||
public static int? ToInt(this object ID, int? defaultInt = null)
|
||||
{
|
||||
int LID;
|
||||
bool IsLong = int.TryParse(ID + "", out LID);
|
||||
if (IsLong)
|
||||
return LID;
|
||||
else
|
||||
return defaultInt;
|
||||
}
|
||||
|
||||
//public static string GetSql(this IQueryable<object> query)
|
||||
//{
|
||||
// return ((System.Data.Objects.ObjectQuery)query).ToTraceString();
|
||||
//}
|
||||
|
||||
public static double? ToDouble(this object ID, double? defaultValue = null)
|
||||
{
|
||||
double LID;
|
||||
bool IsDouble = double.TryParse(ID + "", out LID);
|
||||
if (IsDouble)
|
||||
return LID;
|
||||
else
|
||||
return defaultValue;
|
||||
}
|
||||
|
||||
public static short? ToShort(this object ID)
|
||||
{
|
||||
short LID;
|
||||
bool IsLong = short.TryParse(ID + "", out LID);
|
||||
if (IsLong)
|
||||
return LID;
|
||||
else
|
||||
return null;
|
||||
}
|
||||
|
||||
|
||||
public static byte? ToByte(this object ID, byte defaultValue = 0)
|
||||
{
|
||||
byte LID;
|
||||
bool IsLong = byte.TryParse(ID + "", out LID);
|
||||
if (IsLong)
|
||||
return LID;
|
||||
else
|
||||
return defaultValue;
|
||||
}
|
||||
|
||||
public static bool? ToBool(this object obj)
|
||||
{
|
||||
if (obj == null)
|
||||
return null;
|
||||
var ID = obj.ToString();
|
||||
bool b;
|
||||
if (ID.ToLower() == "false" || ID == "0")
|
||||
return false;
|
||||
|
||||
if (ID.ToLower() == "true" || ID == "1" || ID.ToLower() == "on")
|
||||
return true;
|
||||
bool isConvert = bool.TryParse(ID, out b);
|
||||
|
||||
if (!isConvert)
|
||||
return null;
|
||||
return b;
|
||||
}
|
||||
|
||||
public static string ConvertToBase64(this string str)
|
||||
{
|
||||
return Convert.ToBase64String(Encoding.UTF8.GetBytes(str));
|
||||
}
|
||||
|
||||
public static string ConvertToBase64(this byte[] bytes)
|
||||
{
|
||||
return Convert.ToBase64String(bytes);
|
||||
}
|
||||
|
||||
public static string ConvertBase64ToString(this string str)
|
||||
{
|
||||
return Encoding.UTF8.GetString(Convert.FromBase64String(str));
|
||||
}
|
||||
public static byte[] Base64ToByte(this string str)
|
||||
{
|
||||
return Convert.FromBase64String(str);
|
||||
}
|
||||
public static string[] Split(this string str, string spliter, StringSplitOptions spo = StringSplitOptions.RemoveEmptyEntries)
|
||||
{
|
||||
string[] sp = new string[] { spliter };
|
||||
return str.Split(sp, spo);
|
||||
}
|
||||
|
||||
public static bool IsNullOrEmpty(this string? str)
|
||||
{
|
||||
return string.IsNullOrEmpty(str);
|
||||
}
|
||||
public static bool IsNotNullOrEmpty(this string? str)
|
||||
{
|
||||
return !string.IsNullOrEmpty(str);
|
||||
}
|
||||
public static string CalculateMD5Hash(this string input)
|
||||
{
|
||||
// step 1, calculate MD5 hash from input
|
||||
MD5 md5 = MD5.Create();
|
||||
byte[] inputBytes = Encoding.ASCII.GetBytes(input);
|
||||
byte[] hash = md5.ComputeHash(inputBytes);
|
||||
|
||||
// step 2, convert byte array to hex string
|
||||
StringBuilder sb = new StringBuilder();
|
||||
for (int i = 0; i < hash.Length; i++)
|
||||
{
|
||||
sb.Append(hash[i].ToString("X2"));
|
||||
}
|
||||
return sb.ToString();
|
||||
}
|
||||
public static byte[] ToByte(this Stream input)
|
||||
{
|
||||
using (MemoryStream ms = new MemoryStream())
|
||||
{
|
||||
input.CopyTo(ms);
|
||||
return ms.ToArray();
|
||||
}
|
||||
}
|
||||
public static string SimpleCodeString(this string st)
|
||||
{
|
||||
if (st == null)
|
||||
return "";
|
||||
return string.Join("", st.ConvertToBase64().Reverse()).Replace("=", "*@!").Replace("1", "___").Replace("2", "_1_1_");
|
||||
}
|
||||
public static string SimpleDeCodeString(this string st)
|
||||
{
|
||||
if (st.IsNullOrEmpty())
|
||||
return "";
|
||||
return string.Join("", st.Replace("_1_1_", "2").Replace("___", "1").Replace("*@!", "=").Reverse()).ConvertBase64ToString();
|
||||
}
|
||||
public static string SetValisQueryString(this string st)
|
||||
{
|
||||
return st;
|
||||
}
|
||||
public static byte[] EnCodeString(this string str)
|
||||
{
|
||||
var bytes = Encoding.UTF8.GetBytes(str);
|
||||
for (int i = 0; i < bytes.Length; i++)
|
||||
{
|
||||
bytes[i] += 14;
|
||||
}
|
||||
return bytes;
|
||||
}
|
||||
public static byte[] EnCodeStringForSearchLike(this string str)
|
||||
{
|
||||
var bytes = Encoding.UTF8.GetBytes(str);
|
||||
for (int i = 0; i < bytes.Length; i++)
|
||||
{
|
||||
bytes[i] += 14;
|
||||
}
|
||||
var b = Encoding.UTF8.GetBytes("%");
|
||||
var finalBytes = new byte[bytes.Length + 2];
|
||||
finalBytes[0] = b[0];
|
||||
finalBytes[finalBytes.Length - 1] = b[0];
|
||||
for (int i = 0; i < bytes.Length; i++)
|
||||
finalBytes[i + 1] = bytes[i];
|
||||
return finalBytes;
|
||||
}
|
||||
public static string DeCodeString(this byte[] byteArray)
|
||||
{
|
||||
if (byteArray == null)
|
||||
return "";
|
||||
for (int i = 0; i < byteArray.Length; i++)
|
||||
{
|
||||
byteArray[i] -= 14;
|
||||
}
|
||||
var bytes = Encoding.UTF8.GetString(byteArray);
|
||||
return bytes;
|
||||
}
|
||||
public static string StripHTML(this string input)
|
||||
{
|
||||
return Regex.Replace(input, "<.*?>", string.Empty);
|
||||
}
|
||||
public static string SubStrFromStartEnd(this string str, int startindex = 0, int minesLenght = 0)
|
||||
{
|
||||
return str.Substring(startindex, str.Length - minesLenght);
|
||||
}
|
||||
|
||||
public static string SubStrWithMax(this string str, int maxLength = 50, string continueStr = "")
|
||||
{
|
||||
if (str.Length < maxLength)
|
||||
return str;
|
||||
return str.Substring(0, maxLength) + continueStr;
|
||||
}
|
||||
|
||||
public static IList<T> CastToList<T>(this IEnumerable source)
|
||||
{
|
||||
return new List<T>(source.Cast<T>());
|
||||
}
|
||||
|
||||
//public static T Cast2<T>(this object obj)
|
||||
//{
|
||||
// return (T)obj;
|
||||
//}
|
||||
public static T CastTo<T>(this object value, T targetType)
|
||||
{
|
||||
// targetType above is just for compiler magic
|
||||
// to infer the type to cast x to
|
||||
return (T)value;
|
||||
}
|
||||
public static string RemoveFirstLines(this string text, int linesCount)
|
||||
{
|
||||
var lines = Regex.Split(text, "\r\n|\r|\n").Skip(linesCount);
|
||||
return string.Join(Environment.NewLine, lines.ToArray());
|
||||
}
|
||||
public static string RemoveEndLines(this string text, int linesCount)
|
||||
{
|
||||
var lines = Regex.Split(text, "\r\n|\r|\n").Reverse().Skip(linesCount).Reverse();
|
||||
return string.Join(Environment.NewLine, lines.ToArray());
|
||||
}
|
||||
|
||||
public static string GetPropertiesValues(this object obj)
|
||||
{
|
||||
if (obj == null) return "null";
|
||||
StringBuilder sb = new StringBuilder();
|
||||
|
||||
List<PropertyInfo> props = obj.GetType().GetProperties().ToList();
|
||||
foreach (var p in props)
|
||||
{
|
||||
sb.Append(p.Name).Append(": ").Append(p.GetValue(obj, null));
|
||||
sb.AppendLine();
|
||||
}
|
||||
|
||||
return sb.ToString();
|
||||
}
|
||||
|
||||
|
||||
//public static IEnumerable<T> Filter<T>(this IEnumerable<T> source, string searchStr)
|
||||
//{
|
||||
// var propsToCheck = typeof(T).GetProperties().Where(a => a.PropertyType == typeof(string));
|
||||
|
||||
// var filter = propsToCheck.Aggregate(string.Empty, (s, p) => (s == string.Empty ? string.Empty : string.Format("{0} OR ", s)) + string.Format("{0} == @0", p.Name));
|
||||
|
||||
// var filtered = source.AsQueryable().Where(filter, searchStr);
|
||||
// return filtered;
|
||||
//}
|
||||
|
||||
/// <summary>
|
||||
/// فرمت تاریخ صحیح است؟
|
||||
/// </summary>
|
||||
/// <param name="date">تاریخ</param>
|
||||
/// <returns></returns>
|
||||
public static bool HasDateFormat(this string date)
|
||||
{
|
||||
return PersianDate.HasDateFormat(date);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// فرمت زمان معتبر است؟
|
||||
/// </summary>
|
||||
/// <param name="time">زمان</param>
|
||||
/// <returns></returns>
|
||||
public static bool HasTimeFormat(this string time)
|
||||
{
|
||||
return PersianDate.HasTimeFormat(time);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// تبدیل رشته زمان به دقیقه
|
||||
/// </summary>
|
||||
/// <param name="time">زمان</param>
|
||||
/// <returns></returns>
|
||||
public static int ConvertTimeToMinutes(this string time)
|
||||
{
|
||||
//if (!time.HasTimeFormat())
|
||||
// return 0;
|
||||
try
|
||||
{
|
||||
var hm = time.Split(':').Select(i => i.ToInt(0).Value).ToArray();
|
||||
|
||||
return hm[0] * 60 + hm[1];
|
||||
}
|
||||
catch
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// تبدیل دقیقه به رشته زمان
|
||||
/// </summary>
|
||||
/// <param name="minutes">دقیقه</param>
|
||||
/// <returns></returns>
|
||||
public static string ConvertMinutesToTime(this int minutes)
|
||||
{
|
||||
if (minutes < 0)
|
||||
return "";
|
||||
|
||||
return string.Format("{0:D2}:{1:D2}", minutes / 60, minutes % 60);
|
||||
}
|
||||
|
||||
public static object Copy(this object entity, object distEntity, List<string> excludeCopyField = null, int level = 0/*, ILogger logger*/)
|
||||
{
|
||||
if (level > 5)
|
||||
return null;
|
||||
if (excludeCopyField == null)
|
||||
excludeCopyField = new List<string>();
|
||||
|
||||
var obj1Properties = entity.GetType().GetProperties();
|
||||
var obj2Properties = distEntity.GetType().GetProperties();
|
||||
try
|
||||
{
|
||||
foreach (var obj1prop in obj1Properties)
|
||||
{
|
||||
if (excludeCopyField.Contains(obj1prop.Name))
|
||||
continue;
|
||||
var destProp = obj2Properties.FirstOrDefault(x => x.Name == obj1prop.Name);// && x.PropertyType == obj1prop.PropertyType);
|
||||
//logger.LogInformation("---> " + obj1prop.Name);
|
||||
if (destProp != null)
|
||||
{
|
||||
object srcEnt = obj1prop.GetValue(entity, null);
|
||||
//logger.LogInformation("------> srcEnt is null: " + (srcEnt == null));
|
||||
|
||||
if (srcEnt != null)
|
||||
{
|
||||
bool isNullable = destProp.PropertyType.IsGenericType;// && destProp.PropertyType.GetGenericTypeDefinition() == typeof(Nullable);
|
||||
if (isNullable || destProp.PropertyType.IsPrimitive || destProp.PropertyType == typeof(String))
|
||||
{
|
||||
destProp.SetValue(distEntity, srcEnt);
|
||||
}
|
||||
else
|
||||
{
|
||||
object destEnt = Activator.CreateInstance(destProp.PropertyType);
|
||||
//logger.LogCritical("=====> destEnt is null: " + (destEnt == null));
|
||||
if (destEnt != null)
|
||||
{
|
||||
var a = srcEnt.Copy(destEnt, excludeCopyField, level + 1);
|
||||
destProp.SetValue(distEntity, a);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
catch
|
||||
{
|
||||
return null;
|
||||
}
|
||||
return distEntity;
|
||||
}
|
||||
public static string CorrectPersianString(this string str)
|
||||
{
|
||||
return str.Replace("ك", "ک").Replace("ي", "ی").Replace("ﯼ", "ی").Replace("ى", "ی");
|
||||
}
|
||||
}
|
||||
public class SearchTokenVM
|
||||
{
|
||||
public string KeySearch { set; get; }
|
||||
}
|
||||
public class RoleParam
|
||||
{
|
||||
public int RoleId { set; get; }
|
||||
}
|
||||
}
|
||||
21
Complex.Application/Services/Basic/AppCommonService.cs
Normal file
21
Complex.Application/Services/Basic/AppCommonService.cs
Normal file
@@ -0,0 +1,21 @@
|
||||
using Complex.Common.Dto;
|
||||
using Complex.Domain.Entities;
|
||||
|
||||
namespace Complex.Application.AppCommon
|
||||
{
|
||||
public interface IAppCommonService
|
||||
{
|
||||
ResultDto<Poster> GetPoster();
|
||||
}
|
||||
public class AppCommonService : IAppCommonService
|
||||
{
|
||||
public ResultDto<Poster> GetPoster()
|
||||
{
|
||||
return new ResultDto<Poster>
|
||||
{
|
||||
Data = new Poster { ImagePath = "banner.png" },
|
||||
IsSuccess = true
|
||||
};
|
||||
}
|
||||
}
|
||||
}
|
||||
71
Complex.Application/Services/Basic/BasicService.cs
Normal file
71
Complex.Application/Services/Basic/BasicService.cs
Normal file
@@ -0,0 +1,71 @@
|
||||
using AutoMapper;
|
||||
using Complex.Common.Dto;
|
||||
using Complex.Domain.Entities;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace Complex.Application.Basic
|
||||
{
|
||||
public interface IBasicService
|
||||
{
|
||||
ResultDto<List<UnitStateDto>> UnitStateList(Guid ComplexId);
|
||||
ResultDto<int> InsertUnitState(UnitStateDto unitState);
|
||||
ResultDto<bool> EditUnitState(UnitStateDto unitState);
|
||||
}
|
||||
public class BasicService : IBasicService
|
||||
{
|
||||
private readonly IComplexDBContext _complexDBContext;
|
||||
private readonly IMapper _mapper;
|
||||
|
||||
public BasicService(IComplexDBContext complexDBContext, IMapper mapper)
|
||||
{
|
||||
_complexDBContext = complexDBContext;
|
||||
_mapper = mapper;
|
||||
}
|
||||
|
||||
public ResultDto<List<UnitStateDto>> UnitStateList(Guid ComplexId)
|
||||
{
|
||||
var UnitStates = _complexDBContext.UnitStates.Where(s => s.ComplexId == ComplexId || !s.ComplexId.HasValue).ToList()
|
||||
.Select(u=>_mapper.Map<UnitStateDto>(u)).ToList();
|
||||
return new ResultDto<List<UnitStateDto>>
|
||||
{
|
||||
Data = UnitStates,
|
||||
IsSuccess = true,
|
||||
RowCount = UnitStates.Count
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
public ResultDto<bool> EditUnitState(UnitStateDto unitStateDto)
|
||||
{
|
||||
var unitState = _complexDBContext.UnitStates.FirstOrDefault(us => us.Id == unitStateDto.Id);
|
||||
unitState.Title = unitStateDto.Title;
|
||||
unitState.Icon= unitStateDto.Icon;
|
||||
_complexDBContext.SaveChanges();
|
||||
return new ResultDto<bool> { IsSuccess = true, Message="ویرایش با موفقیت انجام شد"};
|
||||
}
|
||||
|
||||
public ResultDto<int> InsertUnitState(UnitStateDto unitStateDto)
|
||||
{
|
||||
var newUnitState = new UnitState();
|
||||
newUnitState.Title= unitStateDto.Title;
|
||||
newUnitState.Icon= unitStateDto.Icon;
|
||||
newUnitState.ComplexId= unitStateDto.ComplexId;
|
||||
_complexDBContext.UnitStates.Add(newUnitState);
|
||||
_complexDBContext.SaveChanges();
|
||||
|
||||
return new ResultDto<int> { IsSuccess = true, Data= newUnitState.Id, Message = "ثبت با موفقیت انجام شد" };
|
||||
}
|
||||
}
|
||||
public class UnitStateDto
|
||||
{
|
||||
public int Id { get; set; }
|
||||
public Guid? ComplexId { set; get; }
|
||||
public string Title { set; get; }
|
||||
public string Icon { set; get; }
|
||||
}
|
||||
|
||||
}
|
||||
414
Complex.Application/Services/Basic/ChargeCycleService.cs
Normal file
414
Complex.Application/Services/Basic/ChargeCycleService.cs
Normal file
@@ -0,0 +1,414 @@
|
||||
using AutoMapper;
|
||||
using Complex.Application.Complex;
|
||||
using Complex.Application.Utility;
|
||||
using Complex.Common.Dto;
|
||||
using Complex.Domain.Entities;
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
using Microsoft.Extensions.Logging;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace Complex.Application.Services.Basic
|
||||
{
|
||||
public class CostService
|
||||
{
|
||||
private readonly IComplexDBContext _complexDBContext;
|
||||
private IMapper _mapper;
|
||||
private ILogger _logger;
|
||||
public CostService(IComplexDBContext complexDBContext, IMapper mapper, ILogger<CostService> logger)
|
||||
{
|
||||
_complexDBContext = complexDBContext;
|
||||
_mapper = mapper;
|
||||
_logger = logger;
|
||||
}
|
||||
//public ResultDto<List<ChargeCycleDto>> ComplexChargeCycle(Guid ComplexId)
|
||||
//{
|
||||
// var chargeCycles = _complexDBContext.ChargeCycles.Include(c => c.UnitChargeTypes).ThenInclude(c => c.Unit)
|
||||
// .Where(c => c.ComplexId == ComplexId).ToList();
|
||||
|
||||
// var chargeCycleObj = chargeCycles.Select(c => _mapper.Map<ChargeCycleDto>(c)).ToList();
|
||||
// foreach (var c in chargeCycleObj)
|
||||
// {
|
||||
// c.Units = chargeCycles.Single(a => a.Id == c.Id).UnitChargeTypes.Where(t => !t.ChargeTypeId.HasValue)
|
||||
// .Select(a => a.Unit).Select(u => _mapper.Map<UnitDto>(u)).ToList();
|
||||
// }
|
||||
// return new ResultDto<List<ChargeCycleDto>>
|
||||
// {
|
||||
// Data = chargeCycleObj,
|
||||
// IsSuccess = true,
|
||||
// };
|
||||
//}
|
||||
|
||||
/// <summary>
|
||||
/// لیست مدیریت شارژ یا هر گونه درآمد و مخارج گرفته می شود
|
||||
/// </summary>
|
||||
/// <param name="ComplexId"></param>
|
||||
/// <param name="StartDate"></param>
|
||||
/// <param name="EndDate"></param>
|
||||
/// <param name="IncomeCostTitleId"></param>
|
||||
/// <returns></returns>
|
||||
public ResultDto<List<CostCycleDto>> CostCyclsList(Guid ComplexId, DateOnly? StartDate = null,
|
||||
DateOnly? EndDate = null, int? IncomeCostTitleId = null)
|
||||
{
|
||||
if (IncomeCostTitleId.HasValue && StartDate.HasValue)
|
||||
StartDate = GetStartOfMonth(StartDate.Value);
|
||||
|
||||
var ChargeCycleQuery = _complexDBContext.CostCycles.Include(c => c.Units).Where(c => c.ComplexId == ComplexId).AsQueryable();
|
||||
if (StartDate.HasValue)
|
||||
ChargeCycleQuery = ChargeCycleQuery.Where(c => c.StartDate >= StartDate);
|
||||
|
||||
if (EndDate.HasValue)
|
||||
ChargeCycleQuery = ChargeCycleQuery.Where(c => c.EndDate <= EndDate);
|
||||
|
||||
|
||||
if (IncomeCostTitleId.HasValue)
|
||||
ChargeCycleQuery = ChargeCycleQuery.Where(c => c.IncomeCostTitleId == IncomeCostTitleId);
|
||||
else/*مدیریت شارژ ها فقط*/
|
||||
ChargeCycleQuery = ChargeCycleQuery.Where(c => c.IncomeCostTitleId == null);
|
||||
|
||||
var ChargeCycleList = ChargeCycleQuery.ToList().Select(c => new CostCycleDto
|
||||
{
|
||||
ComplexId = c.ComplexId,
|
||||
Amount = c.Amount,
|
||||
EncouragementAmount = c.EncouragementAmount,
|
||||
EncouragementDay = c.EncouragementDay,
|
||||
EndDate = c.EndDate,
|
||||
StartDate = c.StartDate,
|
||||
Id = c.Id,
|
||||
Title = c.Title,
|
||||
UnitIds = c.Units?.Select(u => u.Id).ToList(),
|
||||
UnitNames = c.Units?.Select(u => u.Id + "#" + u.UnitName).ToList(),
|
||||
IncomeCostTitleId = c.IncomeCostTitleId,
|
||||
IncomeCostTitle = c.IncomeCostTitle?.Title
|
||||
}).ToList();
|
||||
return new ResultDto<List<CostCycleDto>>
|
||||
{
|
||||
IsSuccess = true,
|
||||
RowCount = ChargeCycleList.Count,
|
||||
Data = ChargeCycleList
|
||||
};
|
||||
}
|
||||
|
||||
public ResultDto<bool> EditCostCycle(CostCycleDto costCycleDto)
|
||||
{
|
||||
var cycle = _complexDBContext.CostCycles.Single(a => a.Id == costCycleDto.Id);
|
||||
var isUsed = _complexDBContext.Transactions.Any(c => c.CostCycleId == costCycleDto.Id);
|
||||
if (isUsed)
|
||||
return new ResultDto<bool>
|
||||
{
|
||||
IsSuccess = false,
|
||||
Message = "این آیتم استفاده شده است. شما می توانید این آیتم را حذف نمایید",
|
||||
Data = false
|
||||
};
|
||||
|
||||
cycle = _mapper.Map<CostCycle>(costCycleDto);
|
||||
cycle.IncomeCostTitleId = costCycleDto.IncomeCostTitleId;
|
||||
if (costCycleDto.UnitIds != null)
|
||||
cycle.Units = _complexDBContext.Units.Where(u => costCycleDto.UnitIds.Contains(u.Id)
|
||||
&& u.ComplexId == costCycleDto.ComplexId).ToList();
|
||||
|
||||
foreach (var u in cycle.Units)
|
||||
{
|
||||
var define = DefineUnitCharge(unitId: u.Id, costCycle: cycle);
|
||||
if (!define.IsSuccess)
|
||||
return new ResultDto<bool> { Data = false, IsSuccess = true, Message = define.Message };
|
||||
}
|
||||
|
||||
_complexDBContext.SaveChanges();
|
||||
|
||||
return new ResultDto<bool> { Data = true, IsSuccess = true, Message = "ویرایش با موفقیت انجام شد" };
|
||||
}
|
||||
|
||||
private DateOnly GetStartOfMonth(DateOnly date)
|
||||
{
|
||||
var persianDate = PersianDate.GetPDate(date.ToDateTime(new TimeOnly(1, 1)));
|
||||
return date.AddDays(-persianDate.Day + 1);
|
||||
}
|
||||
|
||||
public ResultDto<Guid> InsertCostCycle(CostCycleDto costCycleDto)
|
||||
{
|
||||
//اگر مدیریت شارژ هست پس تاریخ ها باید از یکم تا پایان ماه بشود
|
||||
//البته باید در نرم افزار فقط امکان انتخاب ماه را داشته باشد
|
||||
//&^*&^*&^&*^*&^*&^&*^*&^*&^&*^*&^*&^*&^&*^&*^*&&^*&^*&^&*^*^*&^*&^*&^&*^*&
|
||||
//
|
||||
if (costCycleDto.IncomeCostTitleId == null)
|
||||
costCycleDto.StartDate = GetStartOfMonth(costCycleDto.StartDate);
|
||||
|
||||
var newCycle = _mapper.Map<CostCycle>(costCycleDto);
|
||||
if (costCycleDto.UnitIds != null)
|
||||
newCycle.Units = _complexDBContext.Units.Where(u => costCycleDto.UnitIds.Contains(u.Id) && costCycleDto.ComplexId == u.ComplexId).ToList();
|
||||
|
||||
//if(newCycle.Units==null)
|
||||
//{
|
||||
// //باید چک کرد در این بازه ایا با یکی دیگر که همه واحدها را در نظر میگیرد هم پوشانی نداشته باشد
|
||||
// اما چون در پایین چک میشه پس مشکلی ندارد
|
||||
// var IsPublicCostExist=_complexDBContext.CostCycles.Where(c=>
|
||||
// c.ComplexId== newCycle.ComplexId && )
|
||||
//}
|
||||
_complexDBContext.CostCycles.Add(newCycle);
|
||||
|
||||
foreach (var u in newCycle.Units)
|
||||
{
|
||||
var define = DefineUnitCharge(unitId: u.Id, costCycle: newCycle, isNew: true);
|
||||
if (!define.IsSuccess)
|
||||
return new ResultDto<Guid> { IsSuccess = false, Message = define.Message };
|
||||
}
|
||||
|
||||
_complexDBContext.SaveChanges();
|
||||
return new ResultDto<Guid> { Data = newCycle.Id, IsSuccess = true, Message = "ثبت با موفقیت انجام شد" };
|
||||
}
|
||||
|
||||
public ResultDto DefineUnitCharge(Guid unitId, CostCycle costCycle, bool isNew = false)
|
||||
{
|
||||
//var cycle = _complexDBContext.CostCycles.Where(c => c.Id == costCycleId).FirstOrDefault();
|
||||
var currentDate = DateOnly.FromDateTime(DateTime.Now);
|
||||
///ایتم هایی که برای بعد از این تاریخ هست باید حذف شوند و مجدد محاسبه شوند
|
||||
///اما ایتم هایی که هم تاریخ مدیریت شارژ و هم تاریخ امروز به بعد
|
||||
///البته در مدیریت شارژ تعریفی نباید اجازه داد تاریخ شروع از آن روز به قبل باشد
|
||||
if (!isNew)
|
||||
{
|
||||
var validDateTimeForDel = currentDate;
|
||||
//validDateTimeForDel.AddHours(-validDateTimeForDel.Hour);
|
||||
//validDateTimeForDel.AddMinutes(-validDateTimeForDel.Minute);
|
||||
//validDateTimeForDel.AddSeconds(-validDateTimeForDel.Second);
|
||||
var itemsForDelete = _complexDBContext.UnitCosts.Where(t =>
|
||||
t.CostCycleId == costCycle.Id &&
|
||||
t.UnitId == unitId && t.Date >= validDateTimeForDel && !t.TransactionId.HasValue);
|
||||
/*
|
||||
نکته: !t.TransactionId.HasValue
|
||||
.مشکل اینجاست که اگر برای اینده باشه و پرداخت کرده باشه باید یک راهکاری اندیشید چون حذف نمیشه!مشکل دارد
|
||||
*/
|
||||
_complexDBContext.UnitCosts.RemoveRange(itemsForDelete);
|
||||
}
|
||||
//اگر شارژ باشد فقط یک بار در ماه هست اما غیر از ان به هر هزینه تعریفی میتواند
|
||||
//که در ماه میتواند چندین هزینه تعریف کند
|
||||
//اگر برای شارژ باشد
|
||||
//if (!cycle.IncomeCostTitleId.HasValue)
|
||||
// deleteCharges = deleteCharges.Where(t => t.ChargeCycleId == ChargeCycleId);
|
||||
//else
|
||||
//deleteCharges = deleteCharges.Where(t => t.ChargeCycleId == cycle.Id);
|
||||
//همه ماهانه هست و روز خاصی نگرفتیم برای اصل و پرداخت نشده ها حذف شده
|
||||
//پس روز اخر ملاک هست
|
||||
if (!costCycle.IncomeCostTitleId.HasValue)
|
||||
while (currentDate <= costCycle.EndDate)
|
||||
{
|
||||
//میبیند برای این واحد ایا چیزی ثبت شده است یا خیر با دوره واحد دیگر
|
||||
//چون بالا برای دوره واحدی که به این تابع امده حذف را انجام دادیم
|
||||
var oldUnitCost = _complexDBContext.UnitCosts.Include(uc => uc.CostCycle).ThenInclude(c => c.Units)
|
||||
.Where(uc =>
|
||||
uc.UnitId == unitId &&
|
||||
uc.CostCycle.IncomeCostTitleId == null &&
|
||||
uc.Date.Month == currentDate.Month).FirstOrDefault();
|
||||
|
||||
if (oldUnitCost != null)
|
||||
{
|
||||
//cycle.Units != null====>پس این واحد هم اختصاصیش بوده*/
|
||||
//اگر این اختصاصی هست و قبلش اختصاصی هم بوده خطا بده
|
||||
if (costCycle.Units != null && oldUnitCost.CostCycle.Units != null)
|
||||
return new ResultDto
|
||||
{
|
||||
IsSuccess = false,
|
||||
Message = "برای برخی از واحدها در این بازه زمانی قبلا به صورت اختصاصی شارژ تعیین شده است"
|
||||
};
|
||||
//اگر این اختصاصی هست و قبلش غیراختصاصی بوده باید پاک بشه البته برای همین واحد است که حذف میشه
|
||||
if (costCycle.Units != null && oldUnitCost.CostCycle.Units == null)
|
||||
_complexDBContext.UnitCosts.Remove(oldUnitCost);
|
||||
|
||||
//اگر این غیر اختصاصی هست و قبلش غیر اختصاصی بوده قبلیش باید پاک بشه یا خطا بدهیم
|
||||
//اما خطا نمیدهیم چون ممکنه بازه ها متفاوت باشند ولی اشتراک داشته باشند. بهتره جای دیگه چک بشه
|
||||
//if (cycle.Units == null && oldUnitCost.CostCycle.Units == null)
|
||||
|
||||
//اگر این غیر اختصاصی هست و قبلیش اختصاصی بوده که نباید ثبت بشه
|
||||
if (costCycle.Units == null && oldUnitCost.CostCycle.Units != null)
|
||||
return new ResultDto { IsSuccess = true, Message = "نیاز به تعریف مجدد برای این واحد نبود" };
|
||||
|
||||
if (costCycle.Units == null && oldUnitCost.CostCycle.Units == null)
|
||||
return new ResultDto { IsSuccess = false, Message = "شما در یک بازه زمانی نمیتوانید بیش از یک مورد عمومی تعریف کنید" };
|
||||
|
||||
}
|
||||
//--------------
|
||||
var newUC = new UnitCost
|
||||
{
|
||||
CostCycleId = costCycle.Id,
|
||||
UnitId = unitId,
|
||||
Date = currentDate,
|
||||
TransactionId = null
|
||||
};
|
||||
currentDate = currentDate.AddMonths(1);
|
||||
_complexDBContext.UnitCosts.Add(newUC);
|
||||
}
|
||||
else
|
||||
{
|
||||
var newUC = new UnitCost
|
||||
{
|
||||
CostCycleId = costCycle.Id,
|
||||
UnitId = unitId,
|
||||
Date = currentDate,
|
||||
TransactionId = null
|
||||
};
|
||||
_complexDBContext.UnitCosts.Add(newUC);
|
||||
}
|
||||
// _complexDBContext.SaveChanges();
|
||||
return new ResultDto
|
||||
{
|
||||
Message = "ثبت با موفقیت انجام شد",
|
||||
IsSuccess = true,
|
||||
};
|
||||
}
|
||||
/// <summary>
|
||||
/// بدهی یک واحد
|
||||
/// </summary>
|
||||
/// <param name="unitId"></param>
|
||||
/// <param name="incomeCostTitleId"></param>
|
||||
/// <returns></returns>
|
||||
public ResultDto<CostOfUnitInfoDto> CalculateCostForUnit(Guid unitId, int? incomeCostTitleId)
|
||||
{
|
||||
var currentDate = DateOnly.FromDateTime(DateTime.Now);
|
||||
var unitCost = _complexDBContext.UnitCosts.Where(uc => unitId == uc.UnitId &&
|
||||
!uc.TransactionId.HasValue
|
||||
&& uc.CostCycle.IncomeCostTitleId == incomeCostTitleId && uc.Date <= currentDate);
|
||||
|
||||
var LastPaymentDate = _complexDBContext.UnitCosts.Where(uc => unitId == uc.UnitId &&
|
||||
uc.TransactionId.HasValue/*پرداخت شده000000000000*/
|
||||
&& uc.CostCycle.IncomeCostTitleId == incomeCostTitleId && uc.Date <= currentDate)
|
||||
.OrderBy(uc => uc.Date).LastOrDefault()?.Date;
|
||||
|
||||
var costTitle = "شارژ";
|
||||
if (incomeCostTitleId.HasValue)
|
||||
costTitle = _complexDBContext.IncomeCostTitles.First(i => i.Id == incomeCostTitleId).Title;
|
||||
|
||||
|
||||
return new ResultDto<CostOfUnitInfoDto>
|
||||
{
|
||||
Data = new CostOfUnitInfoDto
|
||||
{
|
||||
CostMount = unitCost.Sum(c => c.CostCycle.Amount),
|
||||
CostTitle = costTitle,
|
||||
LastPaymentDate = LastPaymentDate,
|
||||
UnitId = unitId
|
||||
},
|
||||
IsSuccess = true
|
||||
};
|
||||
}
|
||||
/// <summary>
|
||||
/// لیست بدهی های یک واحد
|
||||
/// </summary>
|
||||
/// <param name="unitId"></param>
|
||||
/// <returns></returns>
|
||||
public ResultDto<List<CostOfUnitInfoDto>> CalculateAllCostForUnits(List<Guid> unitIds)
|
||||
{
|
||||
var currentDate = DateOnly.FromDateTime(DateTime.Now);
|
||||
var unitCharges = _complexDBContext.UnitCosts.Include(uc => uc.CostCycle).ThenInclude(cc => cc.IncomeCostTitle)
|
||||
.Where(uc => unitIds.Contains(uc.UnitId) &&
|
||||
!uc.TransactionId.HasValue
|
||||
&& uc.Date <= currentDate).ToList();
|
||||
|
||||
var resultList = new List<CostOfUnitInfoDto>();
|
||||
foreach (var unitid in unitIds)
|
||||
{
|
||||
resultList.AddRange(unitCharges.Where(u => u.UnitId == unitid).Select(uc => new CostOfUnitInfoDto
|
||||
{
|
||||
CostMount = uc.CostCycle.Amount,
|
||||
CostTitle = uc.CostCycle.IncomeCostTitleId.HasValue ? uc.CostCycle.IncomeCostTitle?.Title : "شارژ",
|
||||
Date = uc.Date,
|
||||
UnitId = unitid,
|
||||
CostCount = unitCharges.Where(u => u.UnitId == unitid).Count()
|
||||
}).ToList());
|
||||
}
|
||||
return new ResultDto<List<CostOfUnitInfoDto>>
|
||||
{
|
||||
Data = resultList,
|
||||
IsSuccess = true
|
||||
};
|
||||
//{
|
||||
// Data = unitCharges.Sum(c => c.CostCycle.Amount),
|
||||
// Message = "تمام بدهی"
|
||||
//};
|
||||
}
|
||||
/// <summary>
|
||||
/// تاریخچه پرداختی ها و باقیمانده از آن
|
||||
/// </summary>
|
||||
/// <param name="unitId"></param>
|
||||
/// <param name="incomeCostTitleId"></param>
|
||||
/// <param name="startDate"></param>
|
||||
/// <param name="endDate"></param>
|
||||
/// <returns></returns>
|
||||
public ResultDto<List<CostOfUnitInfoDto>> CostsForUnits(List<Guid> unitIds, int? incomeCostTitleId,
|
||||
DateOnly startDate, DateOnly endDate)
|
||||
{
|
||||
var unitCharges = _complexDBContext.UnitCosts.Include(uc => uc.CostCycle).ThenInclude(cc => cc.IncomeCostTitle)
|
||||
.Where(uc => unitIds.Contains(uc.UnitId)
|
||||
//!uc.TransactionId.HasValue
|
||||
&& uc.Date >= startDate
|
||||
&& uc.Date <= endDate).ToList();//.GroupBy(g => g.UnitId);
|
||||
|
||||
var resultList = new List<CostOfUnitInfoDto>();
|
||||
|
||||
foreach (var uid in unitIds)
|
||||
{
|
||||
resultList.AddRange(unitCharges.Where(u => u.UnitId == uid).Select(uc => new CostOfUnitInfoDto
|
||||
{
|
||||
UnitCostId = uc.Id,
|
||||
CostMount = uc.CostCycle.Amount,
|
||||
CostTitle = uc.CostCycle.IncomeCostTitleId.HasValue ? uc.CostCycle.IncomeCostTitle?.Title : "شارژ",
|
||||
Date = uc.Date,
|
||||
UnitId = uid,
|
||||
CostCount = unitCharges.Where(u => u.UnitId == uid).Count()
|
||||
}).ToList());
|
||||
}
|
||||
|
||||
return new ResultDto<List<CostOfUnitInfoDto>>
|
||||
{
|
||||
Data = resultList,
|
||||
IsSuccess = true
|
||||
};
|
||||
|
||||
}
|
||||
}
|
||||
public class CostOfUnitInfoDto
|
||||
{
|
||||
public long UnitCostId { set; get; }
|
||||
public Guid UnitId { get; set; }
|
||||
public int CostCount { get; set; }
|
||||
public long CostMount { get; set; }
|
||||
//public long CostCount { set; get; }
|
||||
public DateOnly? LastPaymentDate { get; set; }
|
||||
public DateOnly? Date { get; set; }
|
||||
public string? CostTitle { get; set; }
|
||||
public DateOnly? PaymentDate { set; get; }
|
||||
}
|
||||
public class CostCycleDto
|
||||
{
|
||||
public Guid Id { set; get; }
|
||||
public Guid ComplexId { set; get; }
|
||||
public string Title { set; get; }
|
||||
public DateOnly StartDate { set; get; }
|
||||
public DateOnly EndDate { set; get; }
|
||||
public long Amount { set; get; } = 0;
|
||||
/// <summary>
|
||||
/// روز از ماه برای تشویقی
|
||||
/// </summary>
|
||||
public int EncouragementDay { set; get; } = 0;
|
||||
/// <summary>
|
||||
/// مبلغ اجاره با احتساب تشویقی
|
||||
/// </summary>
|
||||
public long EncouragementAmount { set; get; } = 0;
|
||||
/// <summary>
|
||||
/// اگر برای واحدهای خاصی بود
|
||||
/// </summary>
|
||||
/// <summary>
|
||||
/// اگر برای واحدهای خاصی بود
|
||||
/// </summary>
|
||||
public virtual List<Guid>? UnitIds { set; get; }
|
||||
public virtual List<string>? UnitNames { set; get; }
|
||||
/// <summary>
|
||||
/// null یعنی شارژ
|
||||
/// </summary>
|
||||
public int? IncomeCostTitleId { set; get; }
|
||||
public string? IncomeCostTitle { set; get; }
|
||||
}
|
||||
}
|
||||
118
Complex.Application/Services/Charge/ChargeCycleService.cs
Normal file
118
Complex.Application/Services/Charge/ChargeCycleService.cs
Normal file
@@ -0,0 +1,118 @@
|
||||
// در بیسیک وجود دارد
|
||||
|
||||
|
||||
//using AutoMapper;
|
||||
//using Complex.Application.Utility;
|
||||
//using Complex.Common.Dto;
|
||||
//using Complex.Domain.Commons;
|
||||
//using Complex.Domain.Entities;
|
||||
//using Microsoft.EntityFrameworkCore;
|
||||
//using System;
|
||||
//using System.Collections.Generic;
|
||||
//using System.ComponentModel.DataAnnotations;
|
||||
//using System.Linq;
|
||||
//using System.Text;
|
||||
//using System.Threading.Tasks;
|
||||
|
||||
//namespace Complex.Application.Services.Charge
|
||||
//{
|
||||
// public class ChargeCycleService
|
||||
// {
|
||||
// /*
|
||||
// * ثبت آیتم مدیریت شارژ
|
||||
// * لیست ایتم های مدیریت شارژ
|
||||
// * ویرایش
|
||||
// */
|
||||
// private readonly IComplexDBContext _complexDBContext;
|
||||
// private readonly IMapper _mapper;
|
||||
|
||||
// public ChargeCycleService(IComplexDBContext complexDBContext, IMapper mapper)
|
||||
// {
|
||||
// _complexDBContext = complexDBContext;
|
||||
// _mapper = mapper;
|
||||
// }
|
||||
// public ResultDto<Guid> InsertManageCharge(ChargeCycleDto chargeCycleDto)
|
||||
// {
|
||||
// var CCharge = new ChargeCycle
|
||||
// {
|
||||
// Amount = chargeCycleDto.Amount,
|
||||
// ComplexId = chargeCycleDto.ComplexId,
|
||||
// EncouragementAmount = chargeCycleDto.EncouragementAmount,
|
||||
// EncouragementDay = chargeCycleDto.EncouragementDay,
|
||||
// EndDate = chargeCycleDto.EndDate,
|
||||
// InsertTime = DateTime.Now,
|
||||
// StartDate = chargeCycleDto.StartDate,
|
||||
// Title = chargeCycleDto.Title,
|
||||
// };
|
||||
// if (chargeCycleDto.UnitIds != null)
|
||||
// {
|
||||
// CCharge.UnitChargeTypes = new List<UnitChargeType>();
|
||||
// chargeCycleDto.UnitIds.ForEach(g => CCharge.UnitChargeTypes.Add(new UnitChargeType
|
||||
// {
|
||||
// ComplexId = chargeCycleDto.ComplexId,
|
||||
// ChargeTypeId = null,
|
||||
// UnitId = g
|
||||
// }));
|
||||
// }
|
||||
// _complexDBContext.ChargeCycles.Add(CCharge);
|
||||
// _complexDBContext.SaveChanges();
|
||||
// return new ResultDto<Guid>
|
||||
// {
|
||||
// IsSuccess = true,
|
||||
// Data = CCharge.Id
|
||||
// };
|
||||
// }
|
||||
// public ResultDto<List<ChargeCycleDto>> ChargeCyclsList(Guid ComplexId, DateTime? StartDate = null, DateTime? EndDate = null)
|
||||
// {
|
||||
// var ChargeCycleQuery = _complexDBContext.ChargeCycles.Include(c => c.UnitChargeTypes).ThenInclude(uc => uc.Unit).Where(c => c.ComplexId == ComplexId).AsQueryable();
|
||||
// if (StartDate != null)
|
||||
// ChargeCycleQuery = ChargeCycleQuery.Where(c => c.StartDate >= StartDate);
|
||||
|
||||
// if (EndDate != null)
|
||||
// ChargeCycleQuery = ChargeCycleQuery.Where(c => c.EndDate <= EndDate);
|
||||
|
||||
// var ChargeCycleList = ChargeCycleQuery.ToList().Select(c => new ChargeCycleDto
|
||||
// {
|
||||
// ComplexId = c.ComplexId,
|
||||
// Amount = c.Amount,
|
||||
// EncouragementAmount = c.EncouragementAmount,
|
||||
// EncouragementDay = c.EncouragementDay,
|
||||
// EndDate = c.EndDate,
|
||||
// StartDate = c.StartDate,
|
||||
// Id = c.Id,
|
||||
// Title = c.Title,
|
||||
// UnitIds = c.UnitChargeTypes?.Select(u => u.UnitId).ToList(),
|
||||
// UnitNames = c.UnitChargeTypes?.Select(u => u.Unit.UnitId + "#" + u.Unit.UnitName).ToList(),
|
||||
// }).ToList();
|
||||
// return new ResultDto<List<ChargeCycleDto>>
|
||||
// {
|
||||
// IsSuccess = true,
|
||||
// RowCount= ChargeCycleList.Count,
|
||||
// Data= ChargeCycleList
|
||||
// };
|
||||
// }
|
||||
// }
|
||||
// public class ChargeCycleDto
|
||||
// {
|
||||
// public Guid Id { get; set; }
|
||||
// public Guid ComplexId { set; get; }
|
||||
// public virtual ComplexEntity Complex { set; get; }
|
||||
// public string Title { set; get; }
|
||||
// public DateTime StartDate { set; get; }
|
||||
// public DateTime EndDate { set; get; }
|
||||
// public long Amount { set; get; } = 0;
|
||||
// /// <summary>
|
||||
// /// روز از ماه برای تشویقی
|
||||
// /// </summary>
|
||||
// public int EncouragementDay { set; get; } = 0;
|
||||
// /// <summary>
|
||||
// /// مبلغ اجاره با احتساب تشویقی
|
||||
// /// </summary>
|
||||
// public long EncouragementAmount { set; get; } = 0;
|
||||
// /// <summary>
|
||||
// /// اگر برای واحدهای خاصی بود
|
||||
// /// </summary>
|
||||
// public virtual List<Guid>? UnitIds { set; get; }
|
||||
// public virtual List<string>? UnitNames { set; get; }
|
||||
// }
|
||||
//}
|
||||
119
Complex.Application/Services/Charge/ChargeService.cs
Normal file
119
Complex.Application/Services/Charge/ChargeService.cs
Normal file
@@ -0,0 +1,119 @@
|
||||
//using AutoMapper;
|
||||
//using Complex.Application.Services.Transaction;
|
||||
//using Complex.Application.Utility;
|
||||
//using Complex.Common.Dto;
|
||||
//using Complex.Domain.Entities;
|
||||
//using Microsoft.EntityFrameworkCore;
|
||||
//using System;
|
||||
//using System.Collections.Generic;
|
||||
//using System.ComponentModel.DataAnnotations;
|
||||
//using System.Linq;
|
||||
//using System.Text;
|
||||
//using System.Threading.Tasks;
|
||||
|
||||
//namespace Complex.Application.Services.Charge
|
||||
//{
|
||||
// public class CostService
|
||||
// {
|
||||
// private readonly IComplexDBContext _complexDBContext;
|
||||
// private readonly IMapper _mapper;
|
||||
|
||||
// public CostService(IComplexDBContext complexDBContext, IMapper mapper)
|
||||
// {
|
||||
// _complexDBContext = complexDBContext;
|
||||
// _mapper = mapper;
|
||||
// }
|
||||
// public ResultDto DefineUnitCharge(Guid unitId, Guid costCycleId)
|
||||
// {
|
||||
// var cycle = _complexDBContext.CostCycles.Where(c => c.Id == costCycleId).FirstOrDefault();
|
||||
// var currentDate = DateTime.Now;
|
||||
// ///ایتم هایی که برای بعد از این تاریخ هست باید حذف شوند و مجدد محاسبه شوند
|
||||
// ///اما ایتم هایی که هم تاریخ مدیریت شارژ و هم تاریخ امروز به بعد
|
||||
// ///البته در مدیریت شارژ تعریفی نباید اجازه داد تاریخ شروع از آن روز به قبل باشد
|
||||
// var itemsForDelete = _complexDBContext.UnitCosts.Where(t =>
|
||||
// t.CostCycleId == costCycleId &&
|
||||
// t.UnitId == unitId && t.Date >= currentDate && !t.TransactionId.HasValue);
|
||||
// //اگر شارژ باشد فقط یک بار در ماه هست اما غیر از ان به هر هزینه تعریفی میتواند
|
||||
// //که در ماه میتواند چندین هزینه تعریف کند
|
||||
// //اگر برای شارژ باشد
|
||||
// //if (!cycle.IncomeCostTitleId.HasValue)
|
||||
// // deleteCharges = deleteCharges.Where(t => t.ChargeCycleId == ChargeCycleId);
|
||||
// //else
|
||||
// //deleteCharges = deleteCharges.Where(t => t.ChargeCycleId == cycle.Id);
|
||||
// _complexDBContext.UnitCosts.RemoveRange(itemsForDelete);
|
||||
// //همه ماهانه هست و روز خاصی نگرفتیم برای اصل و پرداخت نشده ها حذف شده
|
||||
// //پس روز اخر ملاک هست
|
||||
// while (currentDate < cycle.EndDate)
|
||||
// {
|
||||
// var newUC = new UnitCost
|
||||
// {
|
||||
// CostCycleId = costCycleId,
|
||||
// UnitId = unitId,
|
||||
// Date = currentDate,
|
||||
// TransactionId = null
|
||||
// };
|
||||
// currentDate.AddMonths(1);
|
||||
// _complexDBContext.UnitCosts.Add(newUC);
|
||||
// }
|
||||
// _complexDBContext.SaveChanges();
|
||||
// return new ResultDto
|
||||
// {
|
||||
// Message = "ثبت با موفقیت انجام شد",
|
||||
// IsSuccess = true,
|
||||
// };
|
||||
// }
|
||||
// public /*ResultDto<List<long>>*/ void CalculateUnitCharge(Guid unitId, int? IncomeCostTitleId)
|
||||
// {
|
||||
// var currentDate = DateTime.Now;
|
||||
// var unitCharges = _complexDBContext.UnitCosts.Where(uc => uc.UnitId == unitId && !uc.TransactionId.HasValue
|
||||
// && uc.CostCycle.IncomeCostTitleId == IncomeCostTitleId);
|
||||
// }
|
||||
// //public /*ResultDto<List<long>>*/ void CalculateUnitCharge(Guid complexId, Guid unitId)
|
||||
// //{
|
||||
// // var CurrentMonth = PersianDate.CurrentPersianMonth;
|
||||
// // var CurrentYear = PersianDate.CurrentPersianYear;
|
||||
// // var currentMonthDate = PersianDate.ConvertToMiladi(CurrentYear + "/" + CurrentMonth.ToString().PadLeft(2, '0') + "/01");
|
||||
// // var manageChargList = _complexDBContext.ChargeCycles.Include(m => m.UnitChargeTypes)
|
||||
// // .Where(m => m.ComplexId == complexId
|
||||
// // && m.StartDate <= currentMonthDate
|
||||
// // && m.EndDate >= currentMonthDate).Select(m => m).ToList();
|
||||
// // ///بدست اوردن ماه هایی که شارژ نداده است
|
||||
// // var startChargeDate = _complexDBContext.ChargeCycles
|
||||
// // .Where(m => m.ComplexId == complexId)
|
||||
// // .Min(m => m.StartDate);
|
||||
// // //for(var d=startChargeDate;d<=yearMonth;d.AddDays(1))
|
||||
// // //{
|
||||
|
||||
// // //}
|
||||
// // var startPersianDate = PersianDate.GetPDate(startChargeDate);
|
||||
// // var endPersianDate = PersianDate.GetPDate(DateTime.Now);
|
||||
|
||||
// // var paymentDatelist =
|
||||
// // for (int y = startPersianDate.Year; y <= endPersianDate.Year; y++)
|
||||
// // {
|
||||
// // for (int m = startPersianDate.Month; m <= endPersianDate.Month; m++)
|
||||
// // {
|
||||
|
||||
// // }
|
||||
// // }
|
||||
// //}
|
||||
// }
|
||||
// public class ChargeDto
|
||||
// {
|
||||
// public int TransactionTitleId { get; } = 1;
|
||||
// public string TransactionTitle { get; } = "شارژ";
|
||||
// [MaxLength(10)]
|
||||
// public string TransactionDate { set; get; }
|
||||
// public long Amount { set; get; } = 0;
|
||||
// public string? Description { set; get; }
|
||||
// public int? ChargeTypeId { set; get; } = 1;
|
||||
// public string ChargeType { set; get; } = "شارژ ماهیانه";
|
||||
// public Guid? UnitId { set; get; }
|
||||
// public string UnitTitle { set; get; }
|
||||
// /// <summary>
|
||||
// ///شماره فیش. اگر با فیش چیزی واریز شده است
|
||||
// /// </summary>
|
||||
// public string? FishId { set; get; }
|
||||
// }
|
||||
|
||||
//}
|
||||
174
Complex.Application/Services/Complex/ComplexService.cs
Normal file
174
Complex.Application/Services/Complex/ComplexService.cs
Normal file
@@ -0,0 +1,174 @@
|
||||
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; }
|
||||
|
||||
}
|
||||
}
|
||||
92
Complex.Application/Services/PersonService/PersonService.cs
Normal file
92
Complex.Application/Services/PersonService/PersonService.cs
Normal file
@@ -0,0 +1,92 @@
|
||||
using AutoMapper;
|
||||
using Complex.Application.Utility;
|
||||
using Complex.Common.Dto;
|
||||
using Complex.Domain.Entities;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace Complex.Application.PersonService
|
||||
{
|
||||
public interface IPersonService
|
||||
{
|
||||
public ResultDto<string> InsertPerson(PersonDto person);
|
||||
public ResultDto<bool> EditPerson(PersonDto person);
|
||||
public ResultDto<List<PersonDto>> GetAllPersons(PersonDto personSearchObj);
|
||||
}
|
||||
public class PersonService : IPersonService
|
||||
{
|
||||
private readonly IComplexDBContext _complexDBContext;
|
||||
private IMapper _mapper;
|
||||
public PersonService(IComplexDBContext complexDBContext, IMapper mapper)
|
||||
{
|
||||
_complexDBContext = complexDBContext;
|
||||
_mapper = mapper;
|
||||
}
|
||||
|
||||
public ResultDto<List<PersonDto>> GetAllPersons(PersonDto personSearchObj)
|
||||
{
|
||||
var persons = _complexDBContext.ComplexPersons.Where(u => u.ComplexId == personSearchObj.ComplexId).Select(cp => cp.PersonMobileNumber);
|
||||
//در تمام فیلدها با شماره تلفن میتوان جستجو کرد
|
||||
if (personSearchObj.MobileNumber.IsNotNullOrEmpty())
|
||||
{
|
||||
persons = persons.Where(p => p.Id.Contains(personSearchObj.MobileNumber));
|
||||
persons = persons.Where(p => p.FirstName.Contains(personSearchObj.MobileNumber));
|
||||
persons = persons.Where(p => p.FirstName.Contains(personSearchObj.MobileNumber));
|
||||
}
|
||||
//if (personSearchObj.FirstName.IsNotNullOrEmpty())
|
||||
// persons = persons.Where(p => p.FirstName.Contains(personSearchObj.FirstName));
|
||||
|
||||
//if (personSearchObj.LastName.IsNotNullOrEmpty())
|
||||
// persons = persons.Where(p => p.LastName.Contains(personSearchObj.LastName));
|
||||
|
||||
//var persons = _complexDBContext.Units.Where(u => u.ComplexId == personSearchObj.ComplexId).Select(p => p.Tenant);
|
||||
//persons = persons.Union(_complexDBContext.Units.Where(u => u.ComplexId == personSearchObj.ComplexId).Select(p => p.Owner));
|
||||
|
||||
//if (personSearchObj.MobileNumber.IsNotNullOrEmpty())
|
||||
// persons = persons.Where(p => p.Id.Contains(personSearchObj.MobileNumber));
|
||||
|
||||
//var personResult = persons.Distinct().ToList();
|
||||
return new ResultDto<List<PersonDto>>
|
||||
{
|
||||
Data = persons.Select(p => _mapper.Map<PersonDto>(p)).ToList(),
|
||||
IsSuccess = true
|
||||
};
|
||||
}
|
||||
|
||||
public ResultDto<bool> EditPerson(PersonDto person)
|
||||
{
|
||||
throw new NotImplementedException();
|
||||
}
|
||||
|
||||
public ResultDto<string> InsertPerson(PersonDto personDto)
|
||||
{
|
||||
var newPerson = _mapper.Map<Person>(personDto);
|
||||
var isExist = _complexDBContext.Persons.Any(p => p.Id == personDto.MobileNumber);
|
||||
if (!isExist)
|
||||
{
|
||||
newPerson.Id = personDto.MobileNumber;
|
||||
_complexDBContext.Persons.Add(newPerson);
|
||||
_complexDBContext.SaveChanges();
|
||||
}
|
||||
_complexDBContext.ComplexPersons.Add(new ComplexPerson
|
||||
{
|
||||
ComplexId = personDto.ComplexId.Value,
|
||||
PersonMobileNumberId = personDto.MobileNumber,
|
||||
});
|
||||
return new ResultDto<string> { Data = newPerson.Id, IsSuccess = true };
|
||||
}
|
||||
}
|
||||
public class PersonDto
|
||||
{
|
||||
public Guid? ComplexId { set; get; }
|
||||
public string? MobileNumber { set; get; }
|
||||
public string? FirstName { get; set; }
|
||||
public string? LastName { get; set; }
|
||||
public byte? Gender { set; get; }
|
||||
//public int? MobileCode { set; get; }
|
||||
public byte[]? Avatar { set; get; }
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,170 @@
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using Complex.Domain.Entities;
|
||||
namespace Complex.Application.PersonService
|
||||
{
|
||||
public interface ISiteAccountlService
|
||||
{
|
||||
Person FindUserWithPhonenumber(string phoneNumber);
|
||||
string GetCode(string PhoneNumber);
|
||||
Person GetUser(string mobileNumber);
|
||||
LoginDto Login(string phoneNumber, string Code);
|
||||
void Logout(string mobileNumber);
|
||||
Person RegisterUser(string PhoneNumber);
|
||||
}
|
||||
|
||||
public class SiteAccountlService : ISiteAccountlService
|
||||
//: IPortalService
|
||||
{
|
||||
// ==============================
|
||||
|
||||
private IComplexDBContext _complexDBContext;
|
||||
// ==============================
|
||||
|
||||
public SiteAccountlService(IComplexDBContext complexDBContext)
|
||||
{
|
||||
_complexDBContext = complexDBContext;
|
||||
}
|
||||
|
||||
// ==============================
|
||||
public Person GetUser(string mobileNumber)
|
||||
{
|
||||
var user = _complexDBContext.Persons.SingleOrDefault(p => p.Id == mobileNumber);
|
||||
return user;
|
||||
}
|
||||
|
||||
public string GetCode(string PhoneNumber)
|
||||
{
|
||||
Random random = new Random();
|
||||
string code = random.Next(1000, 9999).ToString();
|
||||
SmsCode smsCode = new SmsCode()
|
||||
{
|
||||
Code = code,
|
||||
InsertDate = DateTime.Now,
|
||||
PhoneNumber = PhoneNumber,
|
||||
RequestCount = 0,
|
||||
Used = false,
|
||||
};
|
||||
_complexDBContext.Add(smsCode);
|
||||
_complexDBContext.SaveChanges();
|
||||
|
||||
return code;
|
||||
}
|
||||
|
||||
public LoginDto Login(string phoneNumber, string Code)
|
||||
{
|
||||
var user = FindUserWithPhonenumber("09192530212");
|
||||
if (user != null)
|
||||
{
|
||||
return new LoginDto
|
||||
{
|
||||
IsSuccess = true,
|
||||
Person = user,
|
||||
};
|
||||
}
|
||||
var smsCode = _complexDBContext.SmsCodes.Where(p => p.PhoneNumber == phoneNumber
|
||||
&& p.Code == Code).FirstOrDefault();
|
||||
if (smsCode == null)
|
||||
{
|
||||
return new LoginDto
|
||||
{
|
||||
IsSuccess = false,
|
||||
Message = "کد وارد شده صحیح نیست!",
|
||||
|
||||
};
|
||||
}
|
||||
else
|
||||
{
|
||||
if (smsCode.Used == true)
|
||||
{
|
||||
return new LoginDto
|
||||
{
|
||||
IsSuccess = false,
|
||||
Message = "کد وارد شده صحیح نیست!",
|
||||
|
||||
};
|
||||
}
|
||||
////
|
||||
///
|
||||
smsCode.RequestCount++;
|
||||
|
||||
smsCode.Used = true;
|
||||
_complexDBContext.SaveChanges();
|
||||
user = FindUserWithPhonenumber(phoneNumber);
|
||||
if (user != null)
|
||||
{
|
||||
return new LoginDto
|
||||
{
|
||||
IsSuccess = true,
|
||||
Person = user,
|
||||
};
|
||||
}
|
||||
else
|
||||
{
|
||||
user = RegisterUser(phoneNumber);
|
||||
return new LoginDto
|
||||
{
|
||||
IsSuccess = true,
|
||||
Person = user,
|
||||
};
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public Person FindUserWithPhonenumber(string phoneNumber)
|
||||
{
|
||||
var user = _complexDBContext.Persons.SingleOrDefault(p => p.Id.Equals(phoneNumber));
|
||||
return user;
|
||||
}
|
||||
|
||||
public Person RegisterUser(string PhoneNumber)
|
||||
{
|
||||
Person user = new Person()
|
||||
{
|
||||
Id = PhoneNumber,
|
||||
IsActive = true,
|
||||
};
|
||||
return user;
|
||||
}
|
||||
public void Logout(string mobileNumber)
|
||||
{
|
||||
var userToken = _complexDBContext.UserTokens.Where(p => p.PersonId/*همان موبایل*/ == mobileNumber).ToList();
|
||||
_complexDBContext.UserTokens.RemoveRange(userToken);
|
||||
_complexDBContext.SaveChanges();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public class LoginDto
|
||||
{
|
||||
public bool IsSuccess { get; set; }
|
||||
public string Message { get; set; }
|
||||
public Person Person { get; set; }
|
||||
}
|
||||
public class LoginDataDto
|
||||
{
|
||||
public string Token { get; set; }
|
||||
public string RefreshToken { get; set; }
|
||||
}
|
||||
public class LoginResultDto
|
||||
{
|
||||
public bool IsSuccess { get; set; }
|
||||
public string Message { get; set; }
|
||||
public LoginDataDto Data { get; set; }
|
||||
}
|
||||
|
||||
//public class PersonDto
|
||||
//{
|
||||
// public long PersonId { get; set; }
|
||||
// public string FirstName { get; set; }
|
||||
// public string LastName { get; set; }
|
||||
// public string Mobile { get; set; }
|
||||
// public bool? IsActive { get; set; }
|
||||
//}
|
||||
}
|
||||
@@ -0,0 +1,60 @@
|
||||
using Complex.Domain.Entities;
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
|
||||
namespace Complex.Application.PersonService
|
||||
{
|
||||
public interface IUserTokenService
|
||||
{
|
||||
bool CheckExistToken(string Token);
|
||||
void DeleteToken(string RefreshToken);
|
||||
UserToken FindRefreshToken(string RefreshToken);
|
||||
void SaveToken(UserToken userToken);
|
||||
}
|
||||
|
||||
public class UserTokenService : IUserTokenService
|
||||
{
|
||||
|
||||
private IComplexDBContext _complexDBContext;
|
||||
public UserTokenService(IComplexDBContext complexDBContext)
|
||||
{
|
||||
_complexDBContext = complexDBContext;
|
||||
}
|
||||
|
||||
public void SaveToken(UserToken userToken)
|
||||
{
|
||||
_complexDBContext.UserTokens.Add(userToken);
|
||||
_complexDBContext.SaveChanges();
|
||||
}
|
||||
|
||||
public UserToken FindRefreshToken(string RefreshToken)
|
||||
{
|
||||
//SecurityHelper securityHelper = new SecurityHelper();
|
||||
|
||||
string RefreshTokenHash = RefreshToken;
|
||||
//string RefreshTokenHash = securityHelper.Getsha256Hash(RefreshToken);
|
||||
var usertoken = _complexDBContext.UserTokens.Include(p => p.Person)
|
||||
.SingleOrDefault(p => p.RefreshToken == RefreshTokenHash);
|
||||
return usertoken;
|
||||
}
|
||||
|
||||
public void DeleteToken(string RefreshToken)
|
||||
{
|
||||
var token = FindRefreshToken(RefreshToken);
|
||||
if (token != null)
|
||||
{
|
||||
_complexDBContext.UserTokens.Remove(token);
|
||||
_complexDBContext.SaveChanges();
|
||||
}
|
||||
}
|
||||
|
||||
public bool CheckExistToken(string Token)
|
||||
{
|
||||
//SecurityHelper securityHelper = new SecurityHelper();
|
||||
string tokenHash = Token; //securityHelper.Getsha256Hash(Token);
|
||||
var userToken = _complexDBContext.UserTokens.Where(p => p.TokenHash == tokenHash).FirstOrDefault();
|
||||
return userToken == null ? false : true;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,159 @@
|
||||
using AutoMapper;
|
||||
using Complex.Application.Common;
|
||||
using Complex.Application.Utility;
|
||||
using Complex.Common.Dto;
|
||||
using Complex.Domain.Commons;
|
||||
using Complex.Domain.Entities;
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace Complex.Application.Services.TransactionServices
|
||||
{
|
||||
public interface ITransactionService
|
||||
{
|
||||
/*
|
||||
گزارش پرداختی های یک واحد
|
||||
گزارش وضعیت پرداخت واحدهای یک مجتمع
|
||||
ثبت یک تراکنش شارژ
|
||||
|
||||
*/
|
||||
}
|
||||
|
||||
public class TransactionService : ITransactionService
|
||||
{
|
||||
private readonly IComplexDBContext _complexDBContext;
|
||||
private IMapper _mapper;
|
||||
|
||||
public TransactionService(IComplexDBContext complexDBContext, IMapper mapper)
|
||||
{
|
||||
_complexDBContext = complexDBContext;
|
||||
_mapper = mapper;
|
||||
}
|
||||
|
||||
public ResultDto<List<TransactionDto>> UnitsByTransStateList(Guid complexId, Guid? UnitId, CommonRequestDto commonRequestDto)
|
||||
{
|
||||
var trans = _complexDBContext.Transactions.Include(t => t.TransactionTitle).Include(t => t.CostCycle).Include(t => t.Person).Where(t => t.ComplexId == complexId)
|
||||
.Where(t => UnitId.HasValue ? t.UnitId == UnitId : true)
|
||||
.ToPagedByOrder(commonRequestDto, out int rowCount).ToList();
|
||||
var result = trans.Select(t => new TransactionDto
|
||||
{
|
||||
Amount = t.Amount,
|
||||
CostCycleId = t.CostCycleId,
|
||||
CostCycleTitle = t.CostCycle.Title,
|
||||
Description = t.Description,
|
||||
PersonId = t.PersonId,
|
||||
PersonName = t.Person.FirstName + " " + t.Person.LastName,
|
||||
TransactionDate = t.TransactionDate,
|
||||
TransactionPersianDate = t.TransactionPersianDate,
|
||||
TransactionTitle = t.TransactionTitle.Title,
|
||||
UnitCostDate = t.UnitCost.Date,
|
||||
UnitId = t.UnitId,
|
||||
UnitName = t.Unit.UnitName
|
||||
}).ToList();
|
||||
return new ResultDto<List<TransactionDto>>
|
||||
{
|
||||
Data = result,
|
||||
IsSuccess = true,
|
||||
};
|
||||
}
|
||||
public ResultDto PayCosts(List<long> UnitCostIds, Guid UnitId, long Amount,
|
||||
string UserPhone, string Description)
|
||||
{
|
||||
var costs = _complexDBContext.UnitCosts.Include(uc => uc.CostCycle)
|
||||
.Where(uc => UnitCostIds.Contains(uc.Id) && !uc.TransactionId.HasValue).ToList();
|
||||
var savedAmount = costs.Sum(c => c.CostCycle.Amount);
|
||||
if (savedAmount != Amount)
|
||||
return new ResultDto
|
||||
{
|
||||
IsSuccess = false,
|
||||
Message = "مبلغ صحیح نمی باشد"
|
||||
};
|
||||
|
||||
foreach (var c in costs)
|
||||
{
|
||||
var newTrans = new Transaction
|
||||
{
|
||||
PersonId = UserPhone,
|
||||
TransactionDate = DateTime.Now,
|
||||
Amount = c.CostCycle.Amount,
|
||||
CostCycleId = c.CostCycleId,
|
||||
UnitId = UnitId,
|
||||
TransactionTitleId = c.CostCycle.IncomeCostTitleId,
|
||||
ComplexId = c.CostCycle.ComplexId,
|
||||
Description = Description,
|
||||
TransactionPersianDate = PersianDate.GetDate(DateTime.Now),
|
||||
UnitCostId = c.Id
|
||||
};
|
||||
c.Transaction = newTrans;
|
||||
//_complexDBContext.Transactions.Add(newTrans);
|
||||
}
|
||||
_complexDBContext.SaveChanges();
|
||||
return new ResultDto
|
||||
{
|
||||
IsSuccess = true,
|
||||
Message = "ثبت با موفقیت انجام شد"
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
public class TransactionDto
|
||||
{
|
||||
public string TransactionTitle { set; get; }
|
||||
public string TransactionPersianDate { set; get; }
|
||||
public DateTime TransactionDate { set; get; }
|
||||
public long Amount { set; get; } = 0;
|
||||
public string? Description { set; get; }
|
||||
public Guid? CostCycleId { set; get; }
|
||||
public string CostCycleTitle { set; get; }
|
||||
public Guid? UnitId { set; get; }
|
||||
public string UnitName { set; get; }
|
||||
//public string? TrackingCode { set; get; }
|
||||
//public long Remaining { set; get; } = 0;
|
||||
|
||||
public DateOnly UnitCostDate { set; get; }
|
||||
public string PersonId { set; get; }
|
||||
public string PersonName { set; get; }
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
public class UnitTrancactionStateDto
|
||||
{
|
||||
public Guid UnitId { get; set; }
|
||||
public string UnitTitle { get; set; }
|
||||
/// <summary>
|
||||
/// مقدار شارژ پرداخت نشده
|
||||
/// </summary>
|
||||
public int ChargeNoPayAmount { get; set; }
|
||||
/// <summary>
|
||||
/// تعداد شارژ پرداخت نشده
|
||||
/// </summary>
|
||||
public int ChargeNoPayCount { get; set; }
|
||||
/// <summary>
|
||||
/// مقدار پرداخت نشده غیر شارژ
|
||||
/// </summary>
|
||||
public int OtherNoPayAmount { get; set; }
|
||||
/// <summary>
|
||||
/// میزان پرداخت کرده
|
||||
/// </summary>
|
||||
public long PayAmountInYear { set; get; }
|
||||
/// <summary>
|
||||
/// تعداد شارژ پرداخت شده
|
||||
/// </summary>
|
||||
public int ChargePayCountInYear { set; get; }
|
||||
}
|
||||
public class UnitsByTransState
|
||||
{
|
||||
public Guid UnitId { set; get; }
|
||||
public string UnitName { set; get; }
|
||||
public string UnitUserMobile { set; get; }
|
||||
public string UnitUserFullName { set; get; }
|
||||
public int ChargeReminigCount { set; get; }
|
||||
}
|
||||
*/
|
||||
}
|
||||
278
Complex.Application/Services/Unit/UnitService.cs
Normal file
278
Complex.Application/Services/Unit/UnitService.cs
Normal file
@@ -0,0 +1,278 @@
|
||||
using AutoMapper;
|
||||
using Complex.Application.Services.Basic;
|
||||
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.Numerics;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace Complex.Application.Complex
|
||||
{
|
||||
public interface IUnitService
|
||||
{
|
||||
/// <summary>
|
||||
/// ثبت توسط مدیر ساختمان
|
||||
/// </summary>
|
||||
/// <param name="unitDto"></param>
|
||||
/// <returns></returns>
|
||||
ResultDto<Guid> InsertUnit(string adminUserId, UnitDto unitDto);
|
||||
/// <summary>
|
||||
/// ویرایش توسط مدیر ساختمان
|
||||
/// </summary>
|
||||
/// <param name="unitDto"></param>
|
||||
/// <returns></returns>
|
||||
ResultDto<bool> AdminEditUnit(string adminUserId, UnitDto unitDto);
|
||||
/// <summary>
|
||||
/// ویرایش توسط مالک
|
||||
/// </summary>
|
||||
/// <param name="unitDto"></param>
|
||||
/// <returns></returns>
|
||||
ResultDto<bool> OwnerEditUnit(string UserId, UnitDto unitDto);
|
||||
/// <summary>
|
||||
/// ویرایش توسط مستاجر
|
||||
/// </summary>
|
||||
/// <param name="unitDto"></param>
|
||||
/// <returns></returns>
|
||||
ResultDto<bool> TenantEditUnit(string UserId, UnitDto unitDto);
|
||||
ResultDto<List<UnitDto>> UnitList(string userId, UnitRequestList unitRequest);
|
||||
}
|
||||
public class UnitService : IUnitService
|
||||
{
|
||||
private readonly IComplexDBContext _complexDBContext;
|
||||
private readonly CostService _costService;
|
||||
private IMapper _mapper;
|
||||
|
||||
public UnitService(IComplexDBContext complexDBContext, IMapper mapper, CostService costService)
|
||||
{
|
||||
_complexDBContext = complexDBContext;
|
||||
_costService = costService;
|
||||
_mapper = mapper;
|
||||
}
|
||||
public ResultDto<List<UnitDto>> UnitList(string userId, UnitRequestList unitRequest)
|
||||
{
|
||||
var today = PersianDate.GetToday();
|
||||
var IsUserInComplex = _complexDBContext.Units.Where(u => u.ComplexId == unitRequest.ComplexId
|
||||
&& (u.OwnerId == userId || u.TenantId == userId))
|
||||
.Select(a => a.ComplexId)
|
||||
.Union(_complexDBContext.ComplexManagers.Where(cm => cm.ComplexId == unitRequest.ComplexId
|
||||
&& string.Compare(cm.EndDate, today) >= 0
|
||||
&& string.Compare(cm.StartDate, today) <= 0)
|
||||
.Where(u => u.ManagerMobileNumberId == userId)
|
||||
.Select(u => u.ComplexId));
|
||||
|
||||
if (IsUserInComplex.Count() == 0)
|
||||
return new ResultDto<List<UnitDto>>
|
||||
{
|
||||
Data = null,
|
||||
IsSuccess = false,
|
||||
Message = "درخواست نامعتبر"
|
||||
};
|
||||
|
||||
var units = from u in _complexDBContext.Units.Include(u => u.Owner).Include(u => u.Tenant)
|
||||
.Include(u => u.State)
|
||||
where u.ComplexId == unitRequest.ComplexId
|
||||
select u;
|
||||
if (unitRequest.Id.HasValue)
|
||||
units = units.Where(u => u.Id == unitRequest.Id);
|
||||
|
||||
if (unitRequest.OwnerId.IsNotNullOrEmpty())
|
||||
units = units.Where(u => u.OwnerId == unitRequest.OwnerId);
|
||||
if (unitRequest.TenantId.IsNotNullOrEmpty())
|
||||
units = units.Where(u => u.TenantId == unitRequest.TenantId);
|
||||
|
||||
var unitObjs = units.ToList().Select(u => new UnitDto
|
||||
{
|
||||
ComplexId = u.ComplexId,
|
||||
UnitName = u.UnitName,
|
||||
Id = u.Id,
|
||||
AreaMeter = u.AreaMeter,
|
||||
TenantId = u.TenantId,
|
||||
EmergencyTels = u.EmergencyTels,
|
||||
Floor = u.Floor,
|
||||
InsertTime = Convert.ToDateTime(_complexDBContext.Entry(u).Property("InsertTime").CurrentValue),
|
||||
UpdateTime = Convert.ToDateTime(_complexDBContext.Entry(u).Property("UpdateTime").CurrentValue),
|
||||
//InsertTime = u.InsertTime,
|
||||
IsActive = u.IsActive,
|
||||
ManagerDescription = u.ManagerDescription,
|
||||
ParkingAreaMeter = u.ParkingAreaMeter,
|
||||
PublicState = u.PublicState,
|
||||
StateTitle = u.StateId.HasValue ? u.State.Title : "",
|
||||
StateId = u.StateId,
|
||||
YardMeter = u.YardMeter,
|
||||
TenantNameFamily = u.TenantId != null ? u.Tenant.FirstName + " " + u.Tenant.LastName : "",
|
||||
OwnerNameFamily = u.OwnerId != null ? u.Owner.FirstName + " " + u.Owner.LastName : "",
|
||||
OwnerId = u.OwnerId,
|
||||
});
|
||||
try
|
||||
{
|
||||
return new ResultDto<List<UnitDto>>
|
||||
{
|
||||
Data = unitObjs.ToList(),
|
||||
IsSuccess = true,
|
||||
//RowCount =
|
||||
};
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
return new ResultDto<List<UnitDto>>
|
||||
{
|
||||
Message = ex.InnerException != null ? ex.InnerException.Message + Environment.NewLine + ex.InnerException.Data :
|
||||
ex.Message + Environment.NewLine + ex.Data,
|
||||
IsSuccess = false
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
public ResultDto<Guid> InsertUnit(string adminUserId, UnitDto unitDto)
|
||||
{
|
||||
var unit = _mapper.Map<Unit>(unitDto);
|
||||
var complexManager = _complexDBContext.ComplexManagers.Where(c => c.ComplexId == unit.ComplexId)
|
||||
.Select(cm => cm.ManagerMobileNumberId).ToList();
|
||||
if (!complexManager.Any(m => m == adminUserId))
|
||||
return new ResultDto<Guid>
|
||||
{
|
||||
Message = "عدم دسترسی",
|
||||
IsSuccess = false
|
||||
};
|
||||
//unit.InsertTime = DateTime.Now;
|
||||
_complexDBContext.Units.Add(unit);
|
||||
_complexDBContext.SaveChanges();
|
||||
//محاسبه شارژهای اون یونیت
|
||||
|
||||
var nowDate = DateOnly.FromDateTime(DateTime.Now);
|
||||
|
||||
//وقتی واحد تازه ثبت شده پس در مدیریت شارژ قابلیت ثبت اختصاصی برای خودش نداشته پس باید شارژ عمومی برایش تعریف شود
|
||||
// اگر خواست میتواند برایش به صورت اختصاصی هم ثبت کند که اون موقع برایش محاسبه مجدد خواهد شد
|
||||
var costCycleDto = _costService.CostCyclsList(unit.ComplexId, nowDate, nowDate, null).Data
|
||||
.FirstOrDefault(c => c.UnitIds == null);
|
||||
if (costCycleDto != null)
|
||||
{
|
||||
//var costCycle = new CostCycle
|
||||
//{
|
||||
// Amount=costCycleDto.Amount,
|
||||
|
||||
//};
|
||||
var costCycle=_mapper.Map<CostCycle>(costCycleDto);
|
||||
_costService.DefineUnitCharge(unit.Id, costCycle, true);
|
||||
}
|
||||
//
|
||||
return new ResultDto<Guid> { Data = unit.Id, IsSuccess = true, Message = "ثبت با موفقیت انجام شد" };
|
||||
}
|
||||
public ResultDto<bool> AdminEditUnit(string adminUserId, UnitDto unitDto)
|
||||
{
|
||||
var unit = _complexDBContext.Units.Include(u => u.Complex).ThenInclude(c => c.ComplexManagers).FirstOrDefault(u => u.Id == unitDto.Id);
|
||||
if (unit == null)
|
||||
return new ResultDto<bool> { Message = "مشکل در یافتن واحد", IsSuccess = false };
|
||||
|
||||
var today = PersianDate.GetToday();
|
||||
var complex = unit.Complex;
|
||||
if (complex.ComplexManagers == null || !complex.ComplexManagers.Any(m => m.ManagerMobileNumberId == adminUserId
|
||||
&& string.Compare(m.EndDate, today) >= 0))
|
||||
return new ResultDto<bool> { Message = "عدم دسترسی", IsSuccess = false };
|
||||
|
||||
|
||||
var oldUnitState = unit.PublicState;
|
||||
unit = _mapper.Map<Unit>(unitDto);
|
||||
unit.PublicState = oldUnitState;
|
||||
_complexDBContext.SaveChanges();
|
||||
|
||||
|
||||
//oldPayment را باید چه کار کرد؟؟؟؟!!!!!!!!!!!!!!!!!!!!!!!!!!
|
||||
|
||||
return new ResultDto<bool> { Message = "ویرایش با موفقیت انجام شد", IsSuccess = true };
|
||||
}
|
||||
public ResultDto<bool> OwnerEditUnit(string UserId, UnitDto unitDto)
|
||||
{
|
||||
var unit = _complexDBContext.Units.FirstOrDefault(u => u.Id == unitDto.Id);
|
||||
if (unit == null)
|
||||
return new ResultDto<bool> { Message = "مشکل در یافتن واحد", IsSuccess = false };
|
||||
if (unit.OwnerId != UserId)
|
||||
return new ResultDto<bool> { Message = "عدم دسترسی", IsSuccess = false };
|
||||
|
||||
unit.AreaMeter = unitDto.AreaMeter;
|
||||
unit.YardMeter = unitDto.YardMeter;
|
||||
unit.ParkingAreaMeter = unitDto.ParkingAreaMeter;
|
||||
unit.EmergencyTels = unitDto.EmergencyTels;
|
||||
unit.Floor = unitDto.Floor;
|
||||
unit.ParkingAreaMeter = unitDto.ParkingAreaMeter;
|
||||
unit.PublicState = unitDto.PublicState;
|
||||
unit.YardMeter = unitDto.YardMeter;
|
||||
|
||||
|
||||
_complexDBContext.SaveChanges();
|
||||
return new ResultDto<bool> { Message = "ویرایش با موفقیت انجام شد", IsSuccess = true };
|
||||
}
|
||||
public ResultDto<bool> TenantEditUnit(string UserId, UnitDto unitDto)
|
||||
{
|
||||
var unit = _complexDBContext.Units.FirstOrDefault(u => u.Id == unitDto.Id);
|
||||
if (unit == null)
|
||||
return new ResultDto<bool> { Message = "مشکل در یافتن واحد", IsSuccess = false };
|
||||
if (unit.TenantId != UserId)
|
||||
return new ResultDto<bool> { Message = "عدم دسترسی", IsSuccess = false };
|
||||
|
||||
unit.PublicState = unitDto.PublicState;
|
||||
|
||||
_complexDBContext.SaveChanges();
|
||||
return new ResultDto<bool> { Message = "ویرایش با موفقیت انجام شد", IsSuccess = true };
|
||||
}
|
||||
}
|
||||
|
||||
public class UnitRequestList
|
||||
{
|
||||
public Guid? Id { set; get; }
|
||||
public Guid ComplexId { set; get; }
|
||||
public string? OwnerId { set; get; }
|
||||
public string? TenantId { set; get; }
|
||||
}
|
||||
|
||||
public class UnitDto
|
||||
{
|
||||
public Guid Id { get; set; }
|
||||
public Guid ComplexId { set; get; }
|
||||
public string UnitName { set; get; }
|
||||
public ComplexEntity Complex { set; get; }
|
||||
/// <summary>
|
||||
/// ساکن
|
||||
/// </summary>
|
||||
public string? OwnerId { set; get; }
|
||||
/// <summary>
|
||||
/// شماره مستاجر
|
||||
/// </summary>
|
||||
public string? TenantId { set; get; }
|
||||
public bool IsActive { set; get; }
|
||||
/// <summary>
|
||||
/// متراژ کل
|
||||
/// </summary>
|
||||
public int? AreaMeter { set; get; }
|
||||
public string? EmergencyTels { set; get; }
|
||||
public int? ParkingAreaMeter { set; get; }
|
||||
/// <summary>
|
||||
/// متراژ حیاط
|
||||
/// </summary>
|
||||
public int? YardMeter { set; get; }
|
||||
public string? PublicState { set; get; }
|
||||
public int? StateId { set; get; }
|
||||
public string StateTitle { set; get; }
|
||||
public int? Floor { set; get; }
|
||||
//public string? UnitId { set; get; }
|
||||
public string? ManagerDescription { set; get; }
|
||||
//-----------------------------------------
|
||||
|
||||
/// <summary>
|
||||
/// نام و نام خانوادگی مالک
|
||||
/// </summary>
|
||||
public string OwnerNameFamily { set; get; }
|
||||
/// <summary>
|
||||
/// نام و نام خانوادگی مستاجر
|
||||
/// </summary>
|
||||
public string TenantNameFamily { set; get; }
|
||||
//public string StateByManager { set; get; }
|
||||
public DateTime? InsertTime { get; set; }
|
||||
public DateTime? UpdateTime { get; set; }
|
||||
}
|
||||
}
|
||||
16
Complex.Application/Services/UserSecurityService.cs
Normal file
16
Complex.Application/Services/UserSecurityService.cs
Normal file
@@ -0,0 +1,16 @@
|
||||
//using System;
|
||||
//using System.Collections.Generic;
|
||||
//using System.Linq;
|
||||
//using System.Text;
|
||||
//using System.Threading.Tasks;
|
||||
|
||||
//namespace Complex.Application.Services
|
||||
//{
|
||||
// public class UserSecurityService
|
||||
// {
|
||||
// public void CheckComplexManager(string ManagerId,Guid ComplexId)
|
||||
// {
|
||||
|
||||
// }
|
||||
// }
|
||||
//}
|
||||
50
Complex.Application/Services/Utility/ISendUserMessage.cs
Normal file
50
Complex.Application/Services/Utility/ISendUserMessage.cs
Normal file
@@ -0,0 +1,50 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Text.Json;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace Complex.Application.Services.Utility
|
||||
{
|
||||
public interface ISendUserMessage
|
||||
{
|
||||
Task<Response<SendData>> Send(object message, string[] MobileNumber);
|
||||
Task<Response<SendData>> SendPattern(string patternCode, string MobileNumber, object values);
|
||||
}
|
||||
public class Response<T> where T : Data
|
||||
{
|
||||
public string status { get; set; }
|
||||
public string code { get; set; }
|
||||
public string message { get; set; }
|
||||
public T data { get; set; }
|
||||
|
||||
public override string ToString()
|
||||
{
|
||||
return JsonSerializer.Serialize(this);
|
||||
}
|
||||
|
||||
public bool IsSuccessful
|
||||
{
|
||||
get
|
||||
{
|
||||
return data != null && data.error == null;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public class Data
|
||||
{
|
||||
public string error { get; set; }
|
||||
}
|
||||
|
||||
public class SendResponse : Response<SendData>
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
public class SendData : Data
|
||||
{
|
||||
public string bulk_id { get; set; }
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,326 @@
|
||||
{
|
||||
"runtimeTarget": {
|
||||
"name": ".NETCoreApp,Version=v6.0",
|
||||
"signature": ""
|
||||
},
|
||||
"compilationOptions": {},
|
||||
"targets": {
|
||||
".NETCoreApp,Version=v6.0": {
|
||||
"Complex.Application/1.0.0": {
|
||||
"dependencies": {
|
||||
"AutoMapper": "11.0.1",
|
||||
"Complex.Domain": "1.0.0",
|
||||
"Microsoft.EntityFrameworkCore": "6.0.3",
|
||||
"Newtonsoft.Json": "13.0.1",
|
||||
"System.Linq.Dynamic.Core": "1.6.7"
|
||||
},
|
||||
"runtime": {
|
||||
"Complex.Application.dll": {}
|
||||
}
|
||||
},
|
||||
"AutoMapper/11.0.1": {
|
||||
"dependencies": {
|
||||
"Microsoft.CSharp": "4.7.0"
|
||||
},
|
||||
"runtime": {
|
||||
"lib/netstandard2.1/AutoMapper.dll": {
|
||||
"assemblyVersion": "11.0.0.0",
|
||||
"fileVersion": "11.0.1.0"
|
||||
}
|
||||
}
|
||||
},
|
||||
"Microsoft.CSharp/4.7.0": {},
|
||||
"Microsoft.EntityFrameworkCore/6.0.3": {
|
||||
"dependencies": {
|
||||
"Microsoft.EntityFrameworkCore.Abstractions": "6.0.3",
|
||||
"Microsoft.EntityFrameworkCore.Analyzers": "6.0.3",
|
||||
"Microsoft.Extensions.Caching.Memory": "6.0.1",
|
||||
"Microsoft.Extensions.DependencyInjection": "6.0.0",
|
||||
"Microsoft.Extensions.Logging": "6.0.0",
|
||||
"System.Collections.Immutable": "6.0.0",
|
||||
"System.Diagnostics.DiagnosticSource": "6.0.0"
|
||||
},
|
||||
"runtime": {
|
||||
"lib/net6.0/Microsoft.EntityFrameworkCore.dll": {
|
||||
"assemblyVersion": "6.0.3.0",
|
||||
"fileVersion": "6.0.322.12306"
|
||||
}
|
||||
}
|
||||
},
|
||||
"Microsoft.EntityFrameworkCore.Abstractions/6.0.3": {
|
||||
"runtime": {
|
||||
"lib/net6.0/Microsoft.EntityFrameworkCore.Abstractions.dll": {
|
||||
"assemblyVersion": "6.0.3.0",
|
||||
"fileVersion": "6.0.322.12306"
|
||||
}
|
||||
}
|
||||
},
|
||||
"Microsoft.EntityFrameworkCore.Analyzers/6.0.3": {},
|
||||
"Microsoft.Extensions.Caching.Abstractions/6.0.0": {
|
||||
"dependencies": {
|
||||
"Microsoft.Extensions.Primitives": "6.0.0"
|
||||
},
|
||||
"runtime": {
|
||||
"lib/netstandard2.0/Microsoft.Extensions.Caching.Abstractions.dll": {
|
||||
"assemblyVersion": "6.0.0.0",
|
||||
"fileVersion": "6.0.21.52210"
|
||||
}
|
||||
}
|
||||
},
|
||||
"Microsoft.Extensions.Caching.Memory/6.0.1": {
|
||||
"dependencies": {
|
||||
"Microsoft.Extensions.Caching.Abstractions": "6.0.0",
|
||||
"Microsoft.Extensions.DependencyInjection.Abstractions": "6.0.0",
|
||||
"Microsoft.Extensions.Logging.Abstractions": "6.0.0",
|
||||
"Microsoft.Extensions.Options": "6.0.0",
|
||||
"Microsoft.Extensions.Primitives": "6.0.0"
|
||||
},
|
||||
"runtime": {
|
||||
"lib/netstandard2.0/Microsoft.Extensions.Caching.Memory.dll": {
|
||||
"assemblyVersion": "6.0.0.0",
|
||||
"fileVersion": "6.0.222.6406"
|
||||
}
|
||||
}
|
||||
},
|
||||
"Microsoft.Extensions.DependencyInjection/6.0.0": {
|
||||
"dependencies": {
|
||||
"Microsoft.Extensions.DependencyInjection.Abstractions": "6.0.0",
|
||||
"System.Runtime.CompilerServices.Unsafe": "6.0.0"
|
||||
},
|
||||
"runtime": {
|
||||
"lib/net6.0/Microsoft.Extensions.DependencyInjection.dll": {
|
||||
"assemblyVersion": "6.0.0.0",
|
||||
"fileVersion": "6.0.21.52210"
|
||||
}
|
||||
}
|
||||
},
|
||||
"Microsoft.Extensions.DependencyInjection.Abstractions/6.0.0": {
|
||||
"runtime": {
|
||||
"lib/net6.0/Microsoft.Extensions.DependencyInjection.Abstractions.dll": {
|
||||
"assemblyVersion": "6.0.0.0",
|
||||
"fileVersion": "6.0.21.52210"
|
||||
}
|
||||
}
|
||||
},
|
||||
"Microsoft.Extensions.Logging/6.0.0": {
|
||||
"dependencies": {
|
||||
"Microsoft.Extensions.DependencyInjection": "6.0.0",
|
||||
"Microsoft.Extensions.DependencyInjection.Abstractions": "6.0.0",
|
||||
"Microsoft.Extensions.Logging.Abstractions": "6.0.0",
|
||||
"Microsoft.Extensions.Options": "6.0.0",
|
||||
"System.Diagnostics.DiagnosticSource": "6.0.0"
|
||||
},
|
||||
"runtime": {
|
||||
"lib/netstandard2.1/Microsoft.Extensions.Logging.dll": {
|
||||
"assemblyVersion": "6.0.0.0",
|
||||
"fileVersion": "6.0.21.52210"
|
||||
}
|
||||
}
|
||||
},
|
||||
"Microsoft.Extensions.Logging.Abstractions/6.0.0": {
|
||||
"runtime": {
|
||||
"lib/net6.0/Microsoft.Extensions.Logging.Abstractions.dll": {
|
||||
"assemblyVersion": "6.0.0.0",
|
||||
"fileVersion": "6.0.21.52210"
|
||||
}
|
||||
}
|
||||
},
|
||||
"Microsoft.Extensions.Options/6.0.0": {
|
||||
"dependencies": {
|
||||
"Microsoft.Extensions.DependencyInjection.Abstractions": "6.0.0",
|
||||
"Microsoft.Extensions.Primitives": "6.0.0"
|
||||
},
|
||||
"runtime": {
|
||||
"lib/netstandard2.1/Microsoft.Extensions.Options.dll": {
|
||||
"assemblyVersion": "6.0.0.0",
|
||||
"fileVersion": "6.0.21.52210"
|
||||
}
|
||||
}
|
||||
},
|
||||
"Microsoft.Extensions.Primitives/6.0.0": {
|
||||
"dependencies": {
|
||||
"System.Runtime.CompilerServices.Unsafe": "6.0.0"
|
||||
},
|
||||
"runtime": {
|
||||
"lib/net6.0/Microsoft.Extensions.Primitives.dll": {
|
||||
"assemblyVersion": "6.0.0.0",
|
||||
"fileVersion": "6.0.21.52210"
|
||||
}
|
||||
}
|
||||
},
|
||||
"Newtonsoft.Json/13.0.1": {
|
||||
"runtime": {
|
||||
"lib/netstandard2.0/Newtonsoft.Json.dll": {
|
||||
"assemblyVersion": "13.0.0.0",
|
||||
"fileVersion": "13.0.1.25517"
|
||||
}
|
||||
}
|
||||
},
|
||||
"System.Collections.Immutable/6.0.0": {
|
||||
"dependencies": {
|
||||
"System.Runtime.CompilerServices.Unsafe": "6.0.0"
|
||||
}
|
||||
},
|
||||
"System.Diagnostics.DiagnosticSource/6.0.0": {
|
||||
"dependencies": {
|
||||
"System.Runtime.CompilerServices.Unsafe": "6.0.0"
|
||||
}
|
||||
},
|
||||
"System.Linq.Dynamic.Core/1.6.7": {
|
||||
"runtime": {
|
||||
"lib/net6.0/System.Linq.Dynamic.Core.dll": {
|
||||
"assemblyVersion": "1.6.7.0",
|
||||
"fileVersion": "1.6.7.0"
|
||||
}
|
||||
}
|
||||
},
|
||||
"System.Runtime.CompilerServices.Unsafe/6.0.0": {},
|
||||
"Complex.Domain/1.0.0": {
|
||||
"runtime": {
|
||||
"Complex.Domain.dll": {
|
||||
"assemblyVersion": "1.0.0",
|
||||
"fileVersion": "1.0.0.0"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"libraries": {
|
||||
"Complex.Application/1.0.0": {
|
||||
"type": "project",
|
||||
"serviceable": false,
|
||||
"sha512": ""
|
||||
},
|
||||
"AutoMapper/11.0.1": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-WIadGC1pIwbnyTubvI577p3F++Bsj9q2Q3OaAc1I0QS+JhupN1xkdrPBhI9bPIeg63zM81tZplUNYkqU1HE5jQ==",
|
||||
"path": "automapper/11.0.1",
|
||||
"hashPath": "automapper.11.0.1.nupkg.sha512"
|
||||
},
|
||||
"Microsoft.CSharp/4.7.0": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-pTj+D3uJWyN3My70i2Hqo+OXixq3Os2D1nJ2x92FFo6sk8fYS1m1WLNTs0Dc1uPaViH0YvEEwvzddQ7y4rhXmA==",
|
||||
"path": "microsoft.csharp/4.7.0",
|
||||
"hashPath": "microsoft.csharp.4.7.0.nupkg.sha512"
|
||||
},
|
||||
"Microsoft.EntityFrameworkCore/6.0.3": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-f7ZlNOI1wPg/r0zRgvmcLAM3kwuCVGe5cZc8rYoKPDGZs5dgRFe5a43H9FnCXsyFAF6FILB08Nr9RkuNMwd3TQ==",
|
||||
"path": "microsoft.entityframeworkcore/6.0.3",
|
||||
"hashPath": "microsoft.entityframeworkcore.6.0.3.nupkg.sha512"
|
||||
},
|
||||
"Microsoft.EntityFrameworkCore.Abstractions/6.0.3": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-7c6wJtTFj7FDe20IVPDKeCzxWIMu+XDpYi7aYuUo6knu4vDeB3N3F0pjAZgXJ96GwTZYBrjOEwnbpYmfapEz/w==",
|
||||
"path": "microsoft.entityframeworkcore.abstractions/6.0.3",
|
||||
"hashPath": "microsoft.entityframeworkcore.abstractions.6.0.3.nupkg.sha512"
|
||||
},
|
||||
"Microsoft.EntityFrameworkCore.Analyzers/6.0.3": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-Ld9HyVABYor3Tq43/sG2JERL94UnDHJPg5PwpkCW4CWsf/CbxHetdecv+bCXA/Hg4q+44sov0GVl4Ywjk4PnyA==",
|
||||
"path": "microsoft.entityframeworkcore.analyzers/6.0.3",
|
||||
"hashPath": "microsoft.entityframeworkcore.analyzers.6.0.3.nupkg.sha512"
|
||||
},
|
||||
"Microsoft.Extensions.Caching.Abstractions/6.0.0": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-bcz5sSFJbganH0+YrfvIjJDIcKNW7TL07C4d1eTmXy/wOt52iz4LVogJb6pazs7W0+74j0YpXFErvp++Aq5Bsw==",
|
||||
"path": "microsoft.extensions.caching.abstractions/6.0.0",
|
||||
"hashPath": "microsoft.extensions.caching.abstractions.6.0.0.nupkg.sha512"
|
||||
},
|
||||
"Microsoft.Extensions.Caching.Memory/6.0.1": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-B4y+Cev05eMcjf1na0v9gza6GUtahXbtY1JCypIgx3B4Ea/KAgsWyXEmW4q6zMbmTMtKzmPVk09rvFJirvMwTg==",
|
||||
"path": "microsoft.extensions.caching.memory/6.0.1",
|
||||
"hashPath": "microsoft.extensions.caching.memory.6.0.1.nupkg.sha512"
|
||||
},
|
||||
"Microsoft.Extensions.DependencyInjection/6.0.0": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-k6PWQMuoBDGGHOQTtyois2u4AwyVcIwL2LaSLlTZQm2CYcJ1pxbt6jfAnpWmzENA/wfrYRI/X9DTLoUkE4AsLw==",
|
||||
"path": "microsoft.extensions.dependencyinjection/6.0.0",
|
||||
"hashPath": "microsoft.extensions.dependencyinjection.6.0.0.nupkg.sha512"
|
||||
},
|
||||
"Microsoft.Extensions.DependencyInjection.Abstractions/6.0.0": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-xlzi2IYREJH3/m6+lUrQlujzX8wDitm4QGnUu6kUXTQAWPuZY8i+ticFJbzfqaetLA6KR/rO6Ew/HuYD+bxifg==",
|
||||
"path": "microsoft.extensions.dependencyinjection.abstractions/6.0.0",
|
||||
"hashPath": "microsoft.extensions.dependencyinjection.abstractions.6.0.0.nupkg.sha512"
|
||||
},
|
||||
"Microsoft.Extensions.Logging/6.0.0": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-eIbyj40QDg1NDz0HBW0S5f3wrLVnKWnDJ/JtZ+yJDFnDj90VoPuoPmFkeaXrtu+0cKm5GRAwoDf+dBWXK0TUdg==",
|
||||
"path": "microsoft.extensions.logging/6.0.0",
|
||||
"hashPath": "microsoft.extensions.logging.6.0.0.nupkg.sha512"
|
||||
},
|
||||
"Microsoft.Extensions.Logging.Abstractions/6.0.0": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-/HggWBbTwy8TgebGSX5DBZ24ndhzi93sHUBDvP1IxbZD7FDokYzdAr6+vbWGjw2XAfR2EJ1sfKUotpjHnFWPxA==",
|
||||
"path": "microsoft.extensions.logging.abstractions/6.0.0",
|
||||
"hashPath": "microsoft.extensions.logging.abstractions.6.0.0.nupkg.sha512"
|
||||
},
|
||||
"Microsoft.Extensions.Options/6.0.0": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-dzXN0+V1AyjOe2xcJ86Qbo233KHuLEY0njf/P2Kw8SfJU+d45HNS2ctJdnEnrWbM9Ye2eFgaC5Mj9otRMU6IsQ==",
|
||||
"path": "microsoft.extensions.options/6.0.0",
|
||||
"hashPath": "microsoft.extensions.options.6.0.0.nupkg.sha512"
|
||||
},
|
||||
"Microsoft.Extensions.Primitives/6.0.0": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-9+PnzmQFfEFNR9J2aDTfJGGupShHjOuGw4VUv+JB044biSHrnmCIMD+mJHmb2H7YryrfBEXDurxQ47gJZdCKNQ==",
|
||||
"path": "microsoft.extensions.primitives/6.0.0",
|
||||
"hashPath": "microsoft.extensions.primitives.6.0.0.nupkg.sha512"
|
||||
},
|
||||
"Newtonsoft.Json/13.0.1": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-ppPFpBcvxdsfUonNcvITKqLl3bqxWbDCZIzDWHzjpdAHRFfZe0Dw9HmA0+za13IdyrgJwpkDTDA9fHaxOrt20A==",
|
||||
"path": "newtonsoft.json/13.0.1",
|
||||
"hashPath": "newtonsoft.json.13.0.1.nupkg.sha512"
|
||||
},
|
||||
"System.Collections.Immutable/6.0.0": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-l4zZJ1WU2hqpQQHXz1rvC3etVZN+2DLmQMO79FhOTZHMn8tDRr+WU287sbomD0BETlmKDn0ygUgVy9k5xkkJdA==",
|
||||
"path": "system.collections.immutable/6.0.0",
|
||||
"hashPath": "system.collections.immutable.6.0.0.nupkg.sha512"
|
||||
},
|
||||
"System.Diagnostics.DiagnosticSource/6.0.0": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-frQDfv0rl209cKm1lnwTgFPzNigy2EKk1BS3uAvHvlBVKe5cymGyHO+Sj+NLv5VF/AhHsqPIUUwya5oV4CHMUw==",
|
||||
"path": "system.diagnostics.diagnosticsource/6.0.0",
|
||||
"hashPath": "system.diagnostics.diagnosticsource.6.0.0.nupkg.sha512"
|
||||
},
|
||||
"System.Linq.Dynamic.Core/1.6.7": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-lH+YgtovXbxD6JImHl2VXUtXRUvN8BMEZB2ReZNvS+J5GnGGZV9ivxslQ2nJWmKlBjFTReAKsevnQKE4yLP2pA==",
|
||||
"path": "system.linq.dynamic.core/1.6.7",
|
||||
"hashPath": "system.linq.dynamic.core.1.6.7.nupkg.sha512"
|
||||
},
|
||||
"System.Runtime.CompilerServices.Unsafe/6.0.0": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-/iUeP3tq1S0XdNNoMz5C9twLSrM/TH+qElHkXWaPvuNOt+99G75NrV0OS2EqHx5wMN7popYjpc8oTjC1y16DLg==",
|
||||
"path": "system.runtime.compilerservices.unsafe/6.0.0",
|
||||
"hashPath": "system.runtime.compilerservices.unsafe.6.0.0.nupkg.sha512"
|
||||
},
|
||||
"Complex.Domain/1.0.0": {
|
||||
"type": "project",
|
||||
"serviceable": false,
|
||||
"sha512": ""
|
||||
}
|
||||
}
|
||||
}
|
||||
BIN
Complex.Application/bin/Debug/net6.0/Complex.Application.dll
Normal file
BIN
Complex.Application/bin/Debug/net6.0/Complex.Application.dll
Normal file
Binary file not shown.
BIN
Complex.Application/bin/Debug/net6.0/Complex.Application.pdb
Normal file
BIN
Complex.Application/bin/Debug/net6.0/Complex.Application.pdb
Normal file
Binary file not shown.
BIN
Complex.Application/bin/Debug/net6.0/Complex.Domain.dll
Normal file
BIN
Complex.Application/bin/Debug/net6.0/Complex.Domain.dll
Normal file
Binary file not shown.
BIN
Complex.Application/bin/Debug/net6.0/Complex.Domain.pdb
Normal file
BIN
Complex.Application/bin/Debug/net6.0/Complex.Domain.pdb
Normal file
Binary file not shown.
@@ -0,0 +1,323 @@
|
||||
{
|
||||
"runtimeTarget": {
|
||||
"name": ".NETCoreApp,Version=v6.0",
|
||||
"signature": ""
|
||||
},
|
||||
"compilationOptions": {},
|
||||
"targets": {
|
||||
".NETCoreApp,Version=v6.0": {
|
||||
"Complex.Application/1.0.0": {
|
||||
"dependencies": {
|
||||
"AutoMapper": "11.0.1",
|
||||
"Complex.Domain": "1.0.0",
|
||||
"Microsoft.EntityFrameworkCore": "6.0.3",
|
||||
"Newtonsoft.Json": "13.0.1",
|
||||
"System.Linq.Dynamic.Core": "1.2.18"
|
||||
},
|
||||
"runtime": {
|
||||
"Complex.Application.dll": {}
|
||||
}
|
||||
},
|
||||
"AutoMapper/11.0.1": {
|
||||
"dependencies": {
|
||||
"Microsoft.CSharp": "4.7.0"
|
||||
},
|
||||
"runtime": {
|
||||
"lib/netstandard2.1/AutoMapper.dll": {
|
||||
"assemblyVersion": "11.0.0.0",
|
||||
"fileVersion": "11.0.1.0"
|
||||
}
|
||||
}
|
||||
},
|
||||
"Microsoft.CSharp/4.7.0": {},
|
||||
"Microsoft.EntityFrameworkCore/6.0.3": {
|
||||
"dependencies": {
|
||||
"Microsoft.EntityFrameworkCore.Abstractions": "6.0.3",
|
||||
"Microsoft.EntityFrameworkCore.Analyzers": "6.0.3",
|
||||
"Microsoft.Extensions.Caching.Memory": "6.0.1",
|
||||
"Microsoft.Extensions.DependencyInjection": "6.0.0",
|
||||
"Microsoft.Extensions.Logging": "6.0.0",
|
||||
"System.Collections.Immutable": "6.0.0",
|
||||
"System.Diagnostics.DiagnosticSource": "6.0.0"
|
||||
},
|
||||
"runtime": {
|
||||
"lib/net6.0/Microsoft.EntityFrameworkCore.dll": {
|
||||
"assemblyVersion": "6.0.3.0",
|
||||
"fileVersion": "6.0.322.12306"
|
||||
}
|
||||
}
|
||||
},
|
||||
"Microsoft.EntityFrameworkCore.Abstractions/6.0.3": {
|
||||
"runtime": {
|
||||
"lib/net6.0/Microsoft.EntityFrameworkCore.Abstractions.dll": {
|
||||
"assemblyVersion": "6.0.3.0",
|
||||
"fileVersion": "6.0.322.12306"
|
||||
}
|
||||
}
|
||||
},
|
||||
"Microsoft.EntityFrameworkCore.Analyzers/6.0.3": {},
|
||||
"Microsoft.Extensions.Caching.Abstractions/6.0.0": {
|
||||
"dependencies": {
|
||||
"Microsoft.Extensions.Primitives": "6.0.0"
|
||||
},
|
||||
"runtime": {
|
||||
"lib/netstandard2.0/Microsoft.Extensions.Caching.Abstractions.dll": {
|
||||
"assemblyVersion": "6.0.0.0",
|
||||
"fileVersion": "6.0.21.52210"
|
||||
}
|
||||
}
|
||||
},
|
||||
"Microsoft.Extensions.Caching.Memory/6.0.1": {
|
||||
"dependencies": {
|
||||
"Microsoft.Extensions.Caching.Abstractions": "6.0.0",
|
||||
"Microsoft.Extensions.DependencyInjection.Abstractions": "6.0.0",
|
||||
"Microsoft.Extensions.Logging.Abstractions": "6.0.0",
|
||||
"Microsoft.Extensions.Options": "6.0.0",
|
||||
"Microsoft.Extensions.Primitives": "6.0.0"
|
||||
},
|
||||
"runtime": {
|
||||
"lib/netstandard2.0/Microsoft.Extensions.Caching.Memory.dll": {
|
||||
"assemblyVersion": "6.0.0.0",
|
||||
"fileVersion": "6.0.222.6406"
|
||||
}
|
||||
}
|
||||
},
|
||||
"Microsoft.Extensions.DependencyInjection/6.0.0": {
|
||||
"dependencies": {
|
||||
"Microsoft.Extensions.DependencyInjection.Abstractions": "6.0.0",
|
||||
"System.Runtime.CompilerServices.Unsafe": "6.0.0"
|
||||
},
|
||||
"runtime": {
|
||||
"lib/net6.0/Microsoft.Extensions.DependencyInjection.dll": {
|
||||
"assemblyVersion": "6.0.0.0",
|
||||
"fileVersion": "6.0.21.52210"
|
||||
}
|
||||
}
|
||||
},
|
||||
"Microsoft.Extensions.DependencyInjection.Abstractions/6.0.0": {
|
||||
"runtime": {
|
||||
"lib/net6.0/Microsoft.Extensions.DependencyInjection.Abstractions.dll": {
|
||||
"assemblyVersion": "6.0.0.0",
|
||||
"fileVersion": "6.0.21.52210"
|
||||
}
|
||||
}
|
||||
},
|
||||
"Microsoft.Extensions.Logging/6.0.0": {
|
||||
"dependencies": {
|
||||
"Microsoft.Extensions.DependencyInjection": "6.0.0",
|
||||
"Microsoft.Extensions.DependencyInjection.Abstractions": "6.0.0",
|
||||
"Microsoft.Extensions.Logging.Abstractions": "6.0.0",
|
||||
"Microsoft.Extensions.Options": "6.0.0",
|
||||
"System.Diagnostics.DiagnosticSource": "6.0.0"
|
||||
},
|
||||
"runtime": {
|
||||
"lib/netstandard2.1/Microsoft.Extensions.Logging.dll": {
|
||||
"assemblyVersion": "6.0.0.0",
|
||||
"fileVersion": "6.0.21.52210"
|
||||
}
|
||||
}
|
||||
},
|
||||
"Microsoft.Extensions.Logging.Abstractions/6.0.0": {
|
||||
"runtime": {
|
||||
"lib/net6.0/Microsoft.Extensions.Logging.Abstractions.dll": {
|
||||
"assemblyVersion": "6.0.0.0",
|
||||
"fileVersion": "6.0.21.52210"
|
||||
}
|
||||
}
|
||||
},
|
||||
"Microsoft.Extensions.Options/6.0.0": {
|
||||
"dependencies": {
|
||||
"Microsoft.Extensions.DependencyInjection.Abstractions": "6.0.0",
|
||||
"Microsoft.Extensions.Primitives": "6.0.0"
|
||||
},
|
||||
"runtime": {
|
||||
"lib/netstandard2.1/Microsoft.Extensions.Options.dll": {
|
||||
"assemblyVersion": "6.0.0.0",
|
||||
"fileVersion": "6.0.21.52210"
|
||||
}
|
||||
}
|
||||
},
|
||||
"Microsoft.Extensions.Primitives/6.0.0": {
|
||||
"dependencies": {
|
||||
"System.Runtime.CompilerServices.Unsafe": "6.0.0"
|
||||
},
|
||||
"runtime": {
|
||||
"lib/net6.0/Microsoft.Extensions.Primitives.dll": {
|
||||
"assemblyVersion": "6.0.0.0",
|
||||
"fileVersion": "6.0.21.52210"
|
||||
}
|
||||
}
|
||||
},
|
||||
"Newtonsoft.Json/13.0.1": {
|
||||
"runtime": {
|
||||
"lib/netstandard2.0/Newtonsoft.Json.dll": {
|
||||
"assemblyVersion": "13.0.0.0",
|
||||
"fileVersion": "13.0.1.25517"
|
||||
}
|
||||
}
|
||||
},
|
||||
"System.Collections.Immutable/6.0.0": {
|
||||
"dependencies": {
|
||||
"System.Runtime.CompilerServices.Unsafe": "6.0.0"
|
||||
}
|
||||
},
|
||||
"System.Diagnostics.DiagnosticSource/6.0.0": {
|
||||
"dependencies": {
|
||||
"System.Runtime.CompilerServices.Unsafe": "6.0.0"
|
||||
}
|
||||
},
|
||||
"System.Linq.Dynamic.Core/1.2.18": {
|
||||
"runtime": {
|
||||
"lib/net6.0/System.Linq.Dynamic.Core.dll": {
|
||||
"assemblyVersion": "1.2.18.0",
|
||||
"fileVersion": "1.2.18.0"
|
||||
}
|
||||
}
|
||||
},
|
||||
"System.Runtime.CompilerServices.Unsafe/6.0.0": {},
|
||||
"Complex.Domain/1.0.0": {
|
||||
"runtime": {
|
||||
"Complex.Domain.dll": {}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"libraries": {
|
||||
"Complex.Application/1.0.0": {
|
||||
"type": "project",
|
||||
"serviceable": false,
|
||||
"sha512": ""
|
||||
},
|
||||
"AutoMapper/11.0.1": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-WIadGC1pIwbnyTubvI577p3F++Bsj9q2Q3OaAc1I0QS+JhupN1xkdrPBhI9bPIeg63zM81tZplUNYkqU1HE5jQ==",
|
||||
"path": "automapper/11.0.1",
|
||||
"hashPath": "automapper.11.0.1.nupkg.sha512"
|
||||
},
|
||||
"Microsoft.CSharp/4.7.0": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-pTj+D3uJWyN3My70i2Hqo+OXixq3Os2D1nJ2x92FFo6sk8fYS1m1WLNTs0Dc1uPaViH0YvEEwvzddQ7y4rhXmA==",
|
||||
"path": "microsoft.csharp/4.7.0",
|
||||
"hashPath": "microsoft.csharp.4.7.0.nupkg.sha512"
|
||||
},
|
||||
"Microsoft.EntityFrameworkCore/6.0.3": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-f7ZlNOI1wPg/r0zRgvmcLAM3kwuCVGe5cZc8rYoKPDGZs5dgRFe5a43H9FnCXsyFAF6FILB08Nr9RkuNMwd3TQ==",
|
||||
"path": "microsoft.entityframeworkcore/6.0.3",
|
||||
"hashPath": "microsoft.entityframeworkcore.6.0.3.nupkg.sha512"
|
||||
},
|
||||
"Microsoft.EntityFrameworkCore.Abstractions/6.0.3": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-7c6wJtTFj7FDe20IVPDKeCzxWIMu+XDpYi7aYuUo6knu4vDeB3N3F0pjAZgXJ96GwTZYBrjOEwnbpYmfapEz/w==",
|
||||
"path": "microsoft.entityframeworkcore.abstractions/6.0.3",
|
||||
"hashPath": "microsoft.entityframeworkcore.abstractions.6.0.3.nupkg.sha512"
|
||||
},
|
||||
"Microsoft.EntityFrameworkCore.Analyzers/6.0.3": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-Ld9HyVABYor3Tq43/sG2JERL94UnDHJPg5PwpkCW4CWsf/CbxHetdecv+bCXA/Hg4q+44sov0GVl4Ywjk4PnyA==",
|
||||
"path": "microsoft.entityframeworkcore.analyzers/6.0.3",
|
||||
"hashPath": "microsoft.entityframeworkcore.analyzers.6.0.3.nupkg.sha512"
|
||||
},
|
||||
"Microsoft.Extensions.Caching.Abstractions/6.0.0": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-bcz5sSFJbganH0+YrfvIjJDIcKNW7TL07C4d1eTmXy/wOt52iz4LVogJb6pazs7W0+74j0YpXFErvp++Aq5Bsw==",
|
||||
"path": "microsoft.extensions.caching.abstractions/6.0.0",
|
||||
"hashPath": "microsoft.extensions.caching.abstractions.6.0.0.nupkg.sha512"
|
||||
},
|
||||
"Microsoft.Extensions.Caching.Memory/6.0.1": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-B4y+Cev05eMcjf1na0v9gza6GUtahXbtY1JCypIgx3B4Ea/KAgsWyXEmW4q6zMbmTMtKzmPVk09rvFJirvMwTg==",
|
||||
"path": "microsoft.extensions.caching.memory/6.0.1",
|
||||
"hashPath": "microsoft.extensions.caching.memory.6.0.1.nupkg.sha512"
|
||||
},
|
||||
"Microsoft.Extensions.DependencyInjection/6.0.0": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-k6PWQMuoBDGGHOQTtyois2u4AwyVcIwL2LaSLlTZQm2CYcJ1pxbt6jfAnpWmzENA/wfrYRI/X9DTLoUkE4AsLw==",
|
||||
"path": "microsoft.extensions.dependencyinjection/6.0.0",
|
||||
"hashPath": "microsoft.extensions.dependencyinjection.6.0.0.nupkg.sha512"
|
||||
},
|
||||
"Microsoft.Extensions.DependencyInjection.Abstractions/6.0.0": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-xlzi2IYREJH3/m6+lUrQlujzX8wDitm4QGnUu6kUXTQAWPuZY8i+ticFJbzfqaetLA6KR/rO6Ew/HuYD+bxifg==",
|
||||
"path": "microsoft.extensions.dependencyinjection.abstractions/6.0.0",
|
||||
"hashPath": "microsoft.extensions.dependencyinjection.abstractions.6.0.0.nupkg.sha512"
|
||||
},
|
||||
"Microsoft.Extensions.Logging/6.0.0": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-eIbyj40QDg1NDz0HBW0S5f3wrLVnKWnDJ/JtZ+yJDFnDj90VoPuoPmFkeaXrtu+0cKm5GRAwoDf+dBWXK0TUdg==",
|
||||
"path": "microsoft.extensions.logging/6.0.0",
|
||||
"hashPath": "microsoft.extensions.logging.6.0.0.nupkg.sha512"
|
||||
},
|
||||
"Microsoft.Extensions.Logging.Abstractions/6.0.0": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-/HggWBbTwy8TgebGSX5DBZ24ndhzi93sHUBDvP1IxbZD7FDokYzdAr6+vbWGjw2XAfR2EJ1sfKUotpjHnFWPxA==",
|
||||
"path": "microsoft.extensions.logging.abstractions/6.0.0",
|
||||
"hashPath": "microsoft.extensions.logging.abstractions.6.0.0.nupkg.sha512"
|
||||
},
|
||||
"Microsoft.Extensions.Options/6.0.0": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-dzXN0+V1AyjOe2xcJ86Qbo233KHuLEY0njf/P2Kw8SfJU+d45HNS2ctJdnEnrWbM9Ye2eFgaC5Mj9otRMU6IsQ==",
|
||||
"path": "microsoft.extensions.options/6.0.0",
|
||||
"hashPath": "microsoft.extensions.options.6.0.0.nupkg.sha512"
|
||||
},
|
||||
"Microsoft.Extensions.Primitives/6.0.0": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-9+PnzmQFfEFNR9J2aDTfJGGupShHjOuGw4VUv+JB044biSHrnmCIMD+mJHmb2H7YryrfBEXDurxQ47gJZdCKNQ==",
|
||||
"path": "microsoft.extensions.primitives/6.0.0",
|
||||
"hashPath": "microsoft.extensions.primitives.6.0.0.nupkg.sha512"
|
||||
},
|
||||
"Newtonsoft.Json/13.0.1": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-ppPFpBcvxdsfUonNcvITKqLl3bqxWbDCZIzDWHzjpdAHRFfZe0Dw9HmA0+za13IdyrgJwpkDTDA9fHaxOrt20A==",
|
||||
"path": "newtonsoft.json/13.0.1",
|
||||
"hashPath": "newtonsoft.json.13.0.1.nupkg.sha512"
|
||||
},
|
||||
"System.Collections.Immutable/6.0.0": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-l4zZJ1WU2hqpQQHXz1rvC3etVZN+2DLmQMO79FhOTZHMn8tDRr+WU287sbomD0BETlmKDn0ygUgVy9k5xkkJdA==",
|
||||
"path": "system.collections.immutable/6.0.0",
|
||||
"hashPath": "system.collections.immutable.6.0.0.nupkg.sha512"
|
||||
},
|
||||
"System.Diagnostics.DiagnosticSource/6.0.0": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-frQDfv0rl209cKm1lnwTgFPzNigy2EKk1BS3uAvHvlBVKe5cymGyHO+Sj+NLv5VF/AhHsqPIUUwya5oV4CHMUw==",
|
||||
"path": "system.diagnostics.diagnosticsource/6.0.0",
|
||||
"hashPath": "system.diagnostics.diagnosticsource.6.0.0.nupkg.sha512"
|
||||
},
|
||||
"System.Linq.Dynamic.Core/1.2.18": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-+RH90sKD6SK2c9MD2Xo2jz1hkAJYfgPVyW1VgAwiPURR+JzOJCdvsDBg2Iq97FmTymxlQBY76G1cMxsF6j+6tA==",
|
||||
"path": "system.linq.dynamic.core/1.2.18",
|
||||
"hashPath": "system.linq.dynamic.core.1.2.18.nupkg.sha512"
|
||||
},
|
||||
"System.Runtime.CompilerServices.Unsafe/6.0.0": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-/iUeP3tq1S0XdNNoMz5C9twLSrM/TH+qElHkXWaPvuNOt+99G75NrV0OS2EqHx5wMN7popYjpc8oTjC1y16DLg==",
|
||||
"path": "system.runtime.compilerservices.unsafe/6.0.0",
|
||||
"hashPath": "system.runtime.compilerservices.unsafe.6.0.0.nupkg.sha512"
|
||||
},
|
||||
"Complex.Domain/1.0.0": {
|
||||
"type": "project",
|
||||
"serviceable": false,
|
||||
"sha512": ""
|
||||
}
|
||||
}
|
||||
}
|
||||
BIN
Complex.Application/bin/Release/net6.0/Complex.Application.dll
Normal file
BIN
Complex.Application/bin/Release/net6.0/Complex.Application.dll
Normal file
Binary file not shown.
BIN
Complex.Application/bin/Release/net6.0/Complex.Application.pdb
Normal file
BIN
Complex.Application/bin/Release/net6.0/Complex.Application.pdb
Normal file
Binary file not shown.
BIN
Complex.Application/bin/Release/net6.0/Complex.Domain.dll
Normal file
BIN
Complex.Application/bin/Release/net6.0/Complex.Domain.dll
Normal file
Binary file not shown.
BIN
Complex.Application/bin/Release/net6.0/Complex.Domain.pdb
Normal file
BIN
Complex.Application/bin/Release/net6.0/Complex.Domain.pdb
Normal file
Binary file not shown.
@@ -0,0 +1,160 @@
|
||||
{
|
||||
"format": 1,
|
||||
"restore": {
|
||||
"D:\\Data\\Projects\\Nabak\\Complex\\Complex.Application\\Complex.Application.csproj": {}
|
||||
},
|
||||
"projects": {
|
||||
"D:\\Data\\Projects\\Nabak\\Complex\\Complex.Application\\Complex.Application.csproj": {
|
||||
"version": "1.0.0",
|
||||
"restore": {
|
||||
"projectUniqueName": "D:\\Data\\Projects\\Nabak\\Complex\\Complex.Application\\Complex.Application.csproj",
|
||||
"projectName": "Complex.Application",
|
||||
"projectPath": "D:\\Data\\Projects\\Nabak\\Complex\\Complex.Application\\Complex.Application.csproj",
|
||||
"packagesPath": "C:\\Users\\Mohammad\\.nuget\\packages\\",
|
||||
"outputPath": "D:\\Data\\Projects\\Nabak\\Complex\\Complex.Application\\obj\\",
|
||||
"projectStyle": "PackageReference",
|
||||
"fallbackFolders": [
|
||||
"C:\\Program Files (x86)\\Microsoft Visual Studio\\Shared\\NuGetPackages"
|
||||
],
|
||||
"configFilePaths": [
|
||||
"C:\\Users\\Mohammad\\AppData\\Roaming\\NuGet\\NuGet.Config",
|
||||
"C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.FallbackLocation.config",
|
||||
"C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.Offline.config"
|
||||
],
|
||||
"originalTargetFrameworks": [
|
||||
"net6.0"
|
||||
],
|
||||
"sources": {
|
||||
"C:\\Program Files (x86)\\Microsoft SDKs\\NuGetPackages\\": {},
|
||||
"https://api.nuget.org/v3/index.json": {}
|
||||
},
|
||||
"frameworks": {
|
||||
"net6.0": {
|
||||
"targetAlias": "net6.0",
|
||||
"projectReferences": {
|
||||
"D:\\Data\\Projects\\Nabak\\Complex\\Complex.Domain\\Complex.Domain.csproj": {
|
||||
"projectPath": "D:\\Data\\Projects\\Nabak\\Complex\\Complex.Domain\\Complex.Domain.csproj"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"warningProperties": {
|
||||
"warnAsError": [
|
||||
"NU1605"
|
||||
]
|
||||
},
|
||||
"restoreAuditProperties": {
|
||||
"enableAudit": "true",
|
||||
"auditLevel": "low",
|
||||
"auditMode": "direct"
|
||||
},
|
||||
"SdkAnalysisLevel": "9.0.100"
|
||||
},
|
||||
"frameworks": {
|
||||
"net6.0": {
|
||||
"targetAlias": "net6.0",
|
||||
"dependencies": {
|
||||
"AutoMapper": {
|
||||
"target": "Package",
|
||||
"version": "[11.0.1, )"
|
||||
},
|
||||
"Microsoft.EntityFrameworkCore": {
|
||||
"target": "Package",
|
||||
"version": "[6.0.3, )"
|
||||
},
|
||||
"Newtonsoft.Json": {
|
||||
"target": "Package",
|
||||
"version": "[13.0.1, )"
|
||||
},
|
||||
"System.Linq.Dynamic.Core": {
|
||||
"target": "Package",
|
||||
"version": "[1.6.7, )"
|
||||
}
|
||||
},
|
||||
"imports": [
|
||||
"net461",
|
||||
"net462",
|
||||
"net47",
|
||||
"net471",
|
||||
"net472",
|
||||
"net48",
|
||||
"net481"
|
||||
],
|
||||
"assetTargetFallback": true,
|
||||
"warn": true,
|
||||
"frameworkReferences": {
|
||||
"Microsoft.NETCore.App": {
|
||||
"privateAssets": "all"
|
||||
}
|
||||
},
|
||||
"runtimeIdentifierGraphPath": "C:\\Program Files\\dotnet\\sdk\\9.0.101\\RuntimeIdentifierGraph.json"
|
||||
}
|
||||
}
|
||||
},
|
||||
"D:\\Data\\Projects\\Nabak\\Complex\\Complex.Domain\\Complex.Domain.csproj": {
|
||||
"version": "1.0.0",
|
||||
"restore": {
|
||||
"projectUniqueName": "D:\\Data\\Projects\\Nabak\\Complex\\Complex.Domain\\Complex.Domain.csproj",
|
||||
"projectName": "Complex.Domain",
|
||||
"projectPath": "D:\\Data\\Projects\\Nabak\\Complex\\Complex.Domain\\Complex.Domain.csproj",
|
||||
"packagesPath": "C:\\Users\\Mohammad\\.nuget\\packages\\",
|
||||
"outputPath": "D:\\Data\\Projects\\Nabak\\Complex\\Complex.Domain\\obj\\",
|
||||
"projectStyle": "PackageReference",
|
||||
"fallbackFolders": [
|
||||
"C:\\Program Files (x86)\\Microsoft Visual Studio\\Shared\\NuGetPackages"
|
||||
],
|
||||
"configFilePaths": [
|
||||
"C:\\Users\\Mohammad\\AppData\\Roaming\\NuGet\\NuGet.Config",
|
||||
"C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.FallbackLocation.config",
|
||||
"C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.Offline.config"
|
||||
],
|
||||
"originalTargetFrameworks": [
|
||||
"net6.0"
|
||||
],
|
||||
"sources": {
|
||||
"C:\\Program Files (x86)\\Microsoft SDKs\\NuGetPackages\\": {},
|
||||
"https://api.nuget.org/v3/index.json": {}
|
||||
},
|
||||
"frameworks": {
|
||||
"net6.0": {
|
||||
"targetAlias": "net6.0",
|
||||
"projectReferences": {}
|
||||
}
|
||||
},
|
||||
"warningProperties": {
|
||||
"warnAsError": [
|
||||
"NU1605"
|
||||
]
|
||||
},
|
||||
"restoreAuditProperties": {
|
||||
"enableAudit": "true",
|
||||
"auditLevel": "low",
|
||||
"auditMode": "direct"
|
||||
},
|
||||
"SdkAnalysisLevel": "9.0.100"
|
||||
},
|
||||
"frameworks": {
|
||||
"net6.0": {
|
||||
"targetAlias": "net6.0",
|
||||
"imports": [
|
||||
"net461",
|
||||
"net462",
|
||||
"net47",
|
||||
"net471",
|
||||
"net472",
|
||||
"net48",
|
||||
"net481"
|
||||
],
|
||||
"assetTargetFallback": true,
|
||||
"warn": true,
|
||||
"frameworkReferences": {
|
||||
"Microsoft.NETCore.App": {
|
||||
"privateAssets": "all"
|
||||
}
|
||||
},
|
||||
"runtimeIdentifierGraphPath": "C:\\Program Files\\dotnet\\sdk\\9.0.101\\RuntimeIdentifierGraph.json"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,16 @@
|
||||
<?xml version="1.0" encoding="utf-8" standalone="no"?>
|
||||
<Project ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<PropertyGroup Condition=" '$(ExcludeRestorePackageImports)' != 'true' ">
|
||||
<RestoreSuccess Condition=" '$(RestoreSuccess)' == '' ">True</RestoreSuccess>
|
||||
<RestoreTool Condition=" '$(RestoreTool)' == '' ">NuGet</RestoreTool>
|
||||
<ProjectAssetsFile Condition=" '$(ProjectAssetsFile)' == '' ">$(MSBuildThisFileDirectory)project.assets.json</ProjectAssetsFile>
|
||||
<NuGetPackageRoot Condition=" '$(NuGetPackageRoot)' == '' ">$(UserProfile)\.nuget\packages\</NuGetPackageRoot>
|
||||
<NuGetPackageFolders Condition=" '$(NuGetPackageFolders)' == '' ">C:\Users\Mohammad\.nuget\packages\;C:\Program Files (x86)\Microsoft Visual Studio\Shared\NuGetPackages</NuGetPackageFolders>
|
||||
<NuGetProjectStyle Condition=" '$(NuGetProjectStyle)' == '' ">PackageReference</NuGetProjectStyle>
|
||||
<NuGetToolVersion Condition=" '$(NuGetToolVersion)' == '' ">6.12.2</NuGetToolVersion>
|
||||
</PropertyGroup>
|
||||
<ItemGroup Condition=" '$(ExcludeRestorePackageImports)' != 'true' ">
|
||||
<SourceRoot Include="C:\Users\Mohammad\.nuget\packages\" />
|
||||
<SourceRoot Include="C:\Program Files (x86)\Microsoft Visual Studio\Shared\NuGetPackages\" />
|
||||
</ItemGroup>
|
||||
</Project>
|
||||
@@ -0,0 +1,2 @@
|
||||
<?xml version="1.0" encoding="utf-8" standalone="no"?>
|
||||
<Project ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" />
|
||||
@@ -0,0 +1,4 @@
|
||||
// <autogenerated />
|
||||
using System;
|
||||
using System.Reflection;
|
||||
[assembly: global::System.Runtime.Versioning.TargetFrameworkAttribute(".NETCoreApp,Version=v6.0", FrameworkDisplayName = ".NET 6.0")]
|
||||
@@ -0,0 +1,23 @@
|
||||
//------------------------------------------------------------------------------
|
||||
// <auto-generated>
|
||||
// This code was generated by a tool.
|
||||
// Runtime Version:4.0.30319.42000
|
||||
//
|
||||
// Changes to this file may cause incorrect behavior and will be lost if
|
||||
// the code is regenerated.
|
||||
// </auto-generated>
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
using System;
|
||||
using System.Reflection;
|
||||
|
||||
[assembly: System.Reflection.AssemblyCompanyAttribute("Complex.Application")]
|
||||
[assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")]
|
||||
[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")]
|
||||
[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+76f4cde59f94d1616f39953a840a5ca7ef9213e0")]
|
||||
[assembly: System.Reflection.AssemblyProductAttribute("Complex.Application")]
|
||||
[assembly: System.Reflection.AssemblyTitleAttribute("Complex.Application")]
|
||||
[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")]
|
||||
|
||||
// Generated by the MSBuild WriteCodeFragment class.
|
||||
|
||||
@@ -0,0 +1 @@
|
||||
1eda3f8ccd818f50342015e8b87e35664c973fb402e1aa8a79d0426b367d67ca
|
||||
@@ -0,0 +1,15 @@
|
||||
is_global = true
|
||||
build_property.TargetFramework = net6.0
|
||||
build_property.TargetPlatformMinVersion =
|
||||
build_property.UsingMicrosoftNETSdkWeb =
|
||||
build_property.ProjectTypeGuids =
|
||||
build_property.InvariantGlobalization =
|
||||
build_property.PlatformNeutralAssembly =
|
||||
build_property.EnforceExtendedAnalyzerRules =
|
||||
build_property._SupportedPlatformList = Linux,macOS,Windows
|
||||
build_property.RootNamespace = Complex.Application
|
||||
build_property.ProjectDir = D:\Data\Projects\Nabak\Complex\Complex.Application\
|
||||
build_property.EnableComHosting =
|
||||
build_property.EnableGeneratedComInterfaceComImportInterop =
|
||||
build_property.EffectiveAnalysisLevelStyle = 6.0
|
||||
build_property.EnableCodeStyleSeverity =
|
||||
@@ -0,0 +1,8 @@
|
||||
// <auto-generated/>
|
||||
global using global::System;
|
||||
global using global::System.Collections.Generic;
|
||||
global using global::System.IO;
|
||||
global using global::System.Linq;
|
||||
global using global::System.Net.Http;
|
||||
global using global::System.Threading;
|
||||
global using global::System.Threading.Tasks;
|
||||
Binary file not shown.
Binary file not shown.
@@ -0,0 +1 @@
|
||||
e1b9312e8d3e324bc23b2c275d0084af903e30db2cdd7a1cd94e2abd6a084e7e
|
||||
@@ -0,0 +1,30 @@
|
||||
F:\Projects\Nabak\Complex\Complex.Application\obj\Debug\net6.0\Complex.Application.csproj.AssemblyReference.cache
|
||||
F:\Projects\Nabak\Complex\Complex.Application\obj\Debug\net6.0\Complex.Application.GeneratedMSBuildEditorConfig.editorconfig
|
||||
F:\Projects\Nabak\Complex\Complex.Application\obj\Debug\net6.0\Complex.Application.AssemblyInfoInputs.cache
|
||||
F:\Projects\Nabak\Complex\Complex.Application\obj\Debug\net6.0\Complex.Application.AssemblyInfo.cs
|
||||
F:\Projects\Nabak\Complex\Complex.Application\obj\Debug\net6.0\Complex.Application.csproj.CoreCompileInputs.cache
|
||||
F:\Projects\Nabak\Complex\Complex.Application\bin\Debug\net6.0\Complex.Application.deps.json
|
||||
F:\Projects\Nabak\Complex\Complex.Application\bin\Debug\net6.0\Complex.Application.dll
|
||||
F:\Projects\Nabak\Complex\Complex.Application\bin\Debug\net6.0\Complex.Application.pdb
|
||||
F:\Projects\Nabak\Complex\Complex.Application\bin\Debug\net6.0\Complex.Domain.dll
|
||||
F:\Projects\Nabak\Complex\Complex.Application\bin\Debug\net6.0\Complex.Domain.pdb
|
||||
F:\Projects\Nabak\Complex\Complex.Application\obj\Debug\net6.0\Complex.Application.csproj.CopyComplete
|
||||
F:\Projects\Nabak\Complex\Complex.Application\obj\Debug\net6.0\Complex.Application.dll
|
||||
F:\Projects\Nabak\Complex\Complex.Application\obj\Debug\net6.0\refint\Complex.Application.dll
|
||||
F:\Projects\Nabak\Complex\Complex.Application\obj\Debug\net6.0\Complex.Application.pdb
|
||||
F:\Projects\Nabak\Complex\Complex.Application\obj\Debug\net6.0\ref\Complex.Application.dll
|
||||
D:\Data\Projects\Nabak\Complex\Complex.Application\bin\Debug\net6.0\Complex.Application.deps.json
|
||||
D:\Data\Projects\Nabak\Complex\Complex.Application\bin\Debug\net6.0\Complex.Application.dll
|
||||
D:\Data\Projects\Nabak\Complex\Complex.Application\bin\Debug\net6.0\Complex.Application.pdb
|
||||
D:\Data\Projects\Nabak\Complex\Complex.Application\bin\Debug\net6.0\Complex.Domain.dll
|
||||
D:\Data\Projects\Nabak\Complex\Complex.Application\bin\Debug\net6.0\Complex.Domain.pdb
|
||||
D:\Data\Projects\Nabak\Complex\Complex.Application\obj\Debug\net6.0\Complex.Application.csproj.AssemblyReference.cache
|
||||
D:\Data\Projects\Nabak\Complex\Complex.Application\obj\Debug\net6.0\Complex.Application.GeneratedMSBuildEditorConfig.editorconfig
|
||||
D:\Data\Projects\Nabak\Complex\Complex.Application\obj\Debug\net6.0\Complex.Application.AssemblyInfoInputs.cache
|
||||
D:\Data\Projects\Nabak\Complex\Complex.Application\obj\Debug\net6.0\Complex.Application.AssemblyInfo.cs
|
||||
D:\Data\Projects\Nabak\Complex\Complex.Application\obj\Debug\net6.0\Complex.Application.csproj.CoreCompileInputs.cache
|
||||
D:\Data\Projects\Nabak\Complex\Complex.Application\obj\Debug\net6.0\Complex.Application.dll
|
||||
D:\Data\Projects\Nabak\Complex\Complex.Application\obj\Debug\net6.0\refint\Complex.Application.dll
|
||||
D:\Data\Projects\Nabak\Complex\Complex.Application\obj\Debug\net6.0\Complex.Application.pdb
|
||||
D:\Data\Projects\Nabak\Complex\Complex.Application\obj\Debug\net6.0\ref\Complex.Application.dll
|
||||
D:\Data\Projects\Nabak\Complex\Complex.Application\obj\Debug\net6.0\Complex..21753AE1.Up2Date
|
||||
BIN
Complex.Application/obj/Debug/net6.0/Complex.Application.dll
Normal file
BIN
Complex.Application/obj/Debug/net6.0/Complex.Application.dll
Normal file
Binary file not shown.
BIN
Complex.Application/obj/Debug/net6.0/Complex.Application.pdb
Normal file
BIN
Complex.Application/obj/Debug/net6.0/Complex.Application.pdb
Normal file
Binary file not shown.
BIN
Complex.Application/obj/Debug/net6.0/ref/Complex.Application.dll
Normal file
BIN
Complex.Application/obj/Debug/net6.0/ref/Complex.Application.dll
Normal file
Binary file not shown.
Binary file not shown.
@@ -0,0 +1,4 @@
|
||||
// <autogenerated />
|
||||
using System;
|
||||
using System.Reflection;
|
||||
[assembly: global::System.Runtime.Versioning.TargetFrameworkAttribute(".NETCoreApp,Version=v6.0", FrameworkDisplayName = "")]
|
||||
@@ -0,0 +1,23 @@
|
||||
//------------------------------------------------------------------------------
|
||||
// <auto-generated>
|
||||
// This code was generated by a tool.
|
||||
// Runtime Version:4.0.30319.42000
|
||||
//
|
||||
// Changes to this file may cause incorrect behavior and will be lost if
|
||||
// the code is regenerated.
|
||||
// </auto-generated>
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
using System;
|
||||
using System.Reflection;
|
||||
|
||||
[assembly: System.Reflection.AssemblyCompanyAttribute("Complex.Application")]
|
||||
[assembly: System.Reflection.AssemblyConfigurationAttribute("Release")]
|
||||
[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")]
|
||||
[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0")]
|
||||
[assembly: System.Reflection.AssemblyProductAttribute("Complex.Application")]
|
||||
[assembly: System.Reflection.AssemblyTitleAttribute("Complex.Application")]
|
||||
[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")]
|
||||
|
||||
// Generated by the MSBuild WriteCodeFragment class.
|
||||
|
||||
@@ -0,0 +1 @@
|
||||
f5a5886ee460af73395f17d81ba054deef236f12
|
||||
@@ -0,0 +1,10 @@
|
||||
is_global = true
|
||||
build_property.TargetFramework = net6.0
|
||||
build_property.TargetPlatformMinVersion =
|
||||
build_property.UsingMicrosoftNETSdkWeb =
|
||||
build_property.ProjectTypeGuids =
|
||||
build_property.InvariantGlobalization =
|
||||
build_property.PlatformNeutralAssembly =
|
||||
build_property._SupportedPlatformList = Linux,macOS,Windows
|
||||
build_property.RootNamespace = Complex.Application
|
||||
build_property.ProjectDir = D:\Data\Projects\Nabak\Complex\Complex.Application\
|
||||
@@ -0,0 +1,8 @@
|
||||
// <auto-generated/>
|
||||
global using global::System;
|
||||
global using global::System.Collections.Generic;
|
||||
global using global::System.IO;
|
||||
global using global::System.Linq;
|
||||
global using global::System.Net.Http;
|
||||
global using global::System.Threading;
|
||||
global using global::System.Threading.Tasks;
|
||||
Binary file not shown.
Binary file not shown.
@@ -0,0 +1 @@
|
||||
03862b89a1a3273486ee639781a415f4002d1a6b
|
||||
@@ -0,0 +1,30 @@
|
||||
F:\Projects\Nabak\Complex\Complex.Application\bin\Release\net6.0\Complex.Application.deps.json
|
||||
F:\Projects\Nabak\Complex\Complex.Application\bin\Release\net6.0\Complex.Application.dll
|
||||
F:\Projects\Nabak\Complex\Complex.Application\bin\Release\net6.0\Complex.Application.pdb
|
||||
F:\Projects\Nabak\Complex\Complex.Application\bin\Release\net6.0\Complex.Domain.dll
|
||||
F:\Projects\Nabak\Complex\Complex.Application\bin\Release\net6.0\Complex.Domain.pdb
|
||||
F:\Projects\Nabak\Complex\Complex.Application\obj\Release\net6.0\Complex.Application.csproj.AssemblyReference.cache
|
||||
F:\Projects\Nabak\Complex\Complex.Application\obj\Release\net6.0\Complex.Application.GeneratedMSBuildEditorConfig.editorconfig
|
||||
F:\Projects\Nabak\Complex\Complex.Application\obj\Release\net6.0\Complex.Application.AssemblyInfoInputs.cache
|
||||
F:\Projects\Nabak\Complex\Complex.Application\obj\Release\net6.0\Complex.Application.AssemblyInfo.cs
|
||||
F:\Projects\Nabak\Complex\Complex.Application\obj\Release\net6.0\Complex.Application.csproj.CoreCompileInputs.cache
|
||||
F:\Projects\Nabak\Complex\Complex.Application\obj\Release\net6.0\Complex.Application.csproj.CopyComplete
|
||||
F:\Projects\Nabak\Complex\Complex.Application\obj\Release\net6.0\Complex.Application.dll
|
||||
F:\Projects\Nabak\Complex\Complex.Application\obj\Release\net6.0\refint\Complex.Application.dll
|
||||
F:\Projects\Nabak\Complex\Complex.Application\obj\Release\net6.0\Complex.Application.pdb
|
||||
F:\Projects\Nabak\Complex\Complex.Application\obj\Release\net6.0\ref\Complex.Application.dll
|
||||
D:\Data\Projects\Nabak\Complex\Complex.Application\bin\Release\net6.0\Complex.Application.deps.json
|
||||
D:\Data\Projects\Nabak\Complex\Complex.Application\bin\Release\net6.0\Complex.Application.dll
|
||||
D:\Data\Projects\Nabak\Complex\Complex.Application\bin\Release\net6.0\Complex.Application.pdb
|
||||
D:\Data\Projects\Nabak\Complex\Complex.Application\bin\Release\net6.0\Complex.Domain.dll
|
||||
D:\Data\Projects\Nabak\Complex\Complex.Application\bin\Release\net6.0\Complex.Domain.pdb
|
||||
D:\Data\Projects\Nabak\Complex\Complex.Application\obj\Release\net6.0\Complex.Application.csproj.AssemblyReference.cache
|
||||
D:\Data\Projects\Nabak\Complex\Complex.Application\obj\Release\net6.0\Complex.Application.GeneratedMSBuildEditorConfig.editorconfig
|
||||
D:\Data\Projects\Nabak\Complex\Complex.Application\obj\Release\net6.0\Complex.Application.AssemblyInfoInputs.cache
|
||||
D:\Data\Projects\Nabak\Complex\Complex.Application\obj\Release\net6.0\Complex.Application.AssemblyInfo.cs
|
||||
D:\Data\Projects\Nabak\Complex\Complex.Application\obj\Release\net6.0\Complex.Application.csproj.CoreCompileInputs.cache
|
||||
D:\Data\Projects\Nabak\Complex\Complex.Application\obj\Release\net6.0\Complex.Application.csproj.CopyComplete
|
||||
D:\Data\Projects\Nabak\Complex\Complex.Application\obj\Release\net6.0\Complex.Application.dll
|
||||
D:\Data\Projects\Nabak\Complex\Complex.Application\obj\Release\net6.0\refint\Complex.Application.dll
|
||||
D:\Data\Projects\Nabak\Complex\Complex.Application\obj\Release\net6.0\Complex.Application.pdb
|
||||
D:\Data\Projects\Nabak\Complex\Complex.Application\obj\Release\net6.0\ref\Complex.Application.dll
|
||||
BIN
Complex.Application/obj/Release/net6.0/Complex.Application.dll
Normal file
BIN
Complex.Application/obj/Release/net6.0/Complex.Application.dll
Normal file
Binary file not shown.
BIN
Complex.Application/obj/Release/net6.0/Complex.Application.pdb
Normal file
BIN
Complex.Application/obj/Release/net6.0/Complex.Application.pdb
Normal file
Binary file not shown.
Binary file not shown.
Binary file not shown.
912
Complex.Application/obj/project.assets.json
Normal file
912
Complex.Application/obj/project.assets.json
Normal file
@@ -0,0 +1,912 @@
|
||||
{
|
||||
"version": 3,
|
||||
"targets": {
|
||||
"net6.0": {
|
||||
"AutoMapper/11.0.1": {
|
||||
"type": "package",
|
||||
"dependencies": {
|
||||
"Microsoft.CSharp": "4.7.0"
|
||||
},
|
||||
"compile": {
|
||||
"lib/netstandard2.1/AutoMapper.dll": {
|
||||
"related": ".xml"
|
||||
}
|
||||
},
|
||||
"runtime": {
|
||||
"lib/netstandard2.1/AutoMapper.dll": {
|
||||
"related": ".xml"
|
||||
}
|
||||
}
|
||||
},
|
||||
"Microsoft.CSharp/4.7.0": {
|
||||
"type": "package",
|
||||
"compile": {
|
||||
"ref/netcoreapp2.0/_._": {}
|
||||
},
|
||||
"runtime": {
|
||||
"lib/netcoreapp2.0/_._": {}
|
||||
}
|
||||
},
|
||||
"Microsoft.EntityFrameworkCore/6.0.3": {
|
||||
"type": "package",
|
||||
"dependencies": {
|
||||
"Microsoft.EntityFrameworkCore.Abstractions": "6.0.3",
|
||||
"Microsoft.EntityFrameworkCore.Analyzers": "6.0.3",
|
||||
"Microsoft.Extensions.Caching.Memory": "6.0.1",
|
||||
"Microsoft.Extensions.DependencyInjection": "6.0.0",
|
||||
"Microsoft.Extensions.Logging": "6.0.0",
|
||||
"System.Collections.Immutable": "6.0.0",
|
||||
"System.Diagnostics.DiagnosticSource": "6.0.0"
|
||||
},
|
||||
"compile": {
|
||||
"lib/net6.0/Microsoft.EntityFrameworkCore.dll": {
|
||||
"related": ".xml"
|
||||
}
|
||||
},
|
||||
"runtime": {
|
||||
"lib/net6.0/Microsoft.EntityFrameworkCore.dll": {
|
||||
"related": ".xml"
|
||||
}
|
||||
}
|
||||
},
|
||||
"Microsoft.EntityFrameworkCore.Abstractions/6.0.3": {
|
||||
"type": "package",
|
||||
"compile": {
|
||||
"lib/net6.0/Microsoft.EntityFrameworkCore.Abstractions.dll": {
|
||||
"related": ".xml"
|
||||
}
|
||||
},
|
||||
"runtime": {
|
||||
"lib/net6.0/Microsoft.EntityFrameworkCore.Abstractions.dll": {
|
||||
"related": ".xml"
|
||||
}
|
||||
}
|
||||
},
|
||||
"Microsoft.EntityFrameworkCore.Analyzers/6.0.3": {
|
||||
"type": "package",
|
||||
"compile": {
|
||||
"lib/netstandard2.0/_._": {}
|
||||
},
|
||||
"runtime": {
|
||||
"lib/netstandard2.0/_._": {}
|
||||
}
|
||||
},
|
||||
"Microsoft.Extensions.Caching.Abstractions/6.0.0": {
|
||||
"type": "package",
|
||||
"dependencies": {
|
||||
"Microsoft.Extensions.Primitives": "6.0.0"
|
||||
},
|
||||
"compile": {
|
||||
"lib/netstandard2.0/Microsoft.Extensions.Caching.Abstractions.dll": {
|
||||
"related": ".xml"
|
||||
}
|
||||
},
|
||||
"runtime": {
|
||||
"lib/netstandard2.0/Microsoft.Extensions.Caching.Abstractions.dll": {
|
||||
"related": ".xml"
|
||||
}
|
||||
}
|
||||
},
|
||||
"Microsoft.Extensions.Caching.Memory/6.0.1": {
|
||||
"type": "package",
|
||||
"dependencies": {
|
||||
"Microsoft.Extensions.Caching.Abstractions": "6.0.0",
|
||||
"Microsoft.Extensions.DependencyInjection.Abstractions": "6.0.0",
|
||||
"Microsoft.Extensions.Logging.Abstractions": "6.0.0",
|
||||
"Microsoft.Extensions.Options": "6.0.0",
|
||||
"Microsoft.Extensions.Primitives": "6.0.0"
|
||||
},
|
||||
"compile": {
|
||||
"lib/netstandard2.0/Microsoft.Extensions.Caching.Memory.dll": {
|
||||
"related": ".xml"
|
||||
}
|
||||
},
|
||||
"runtime": {
|
||||
"lib/netstandard2.0/Microsoft.Extensions.Caching.Memory.dll": {
|
||||
"related": ".xml"
|
||||
}
|
||||
}
|
||||
},
|
||||
"Microsoft.Extensions.DependencyInjection/6.0.0": {
|
||||
"type": "package",
|
||||
"dependencies": {
|
||||
"Microsoft.Extensions.DependencyInjection.Abstractions": "6.0.0",
|
||||
"System.Runtime.CompilerServices.Unsafe": "6.0.0"
|
||||
},
|
||||
"compile": {
|
||||
"lib/net6.0/Microsoft.Extensions.DependencyInjection.dll": {
|
||||
"related": ".xml"
|
||||
}
|
||||
},
|
||||
"runtime": {
|
||||
"lib/net6.0/Microsoft.Extensions.DependencyInjection.dll": {
|
||||
"related": ".xml"
|
||||
}
|
||||
},
|
||||
"build": {
|
||||
"buildTransitive/netcoreapp3.1/_._": {}
|
||||
}
|
||||
},
|
||||
"Microsoft.Extensions.DependencyInjection.Abstractions/6.0.0": {
|
||||
"type": "package",
|
||||
"compile": {
|
||||
"lib/net6.0/Microsoft.Extensions.DependencyInjection.Abstractions.dll": {
|
||||
"related": ".xml"
|
||||
}
|
||||
},
|
||||
"runtime": {
|
||||
"lib/net6.0/Microsoft.Extensions.DependencyInjection.Abstractions.dll": {
|
||||
"related": ".xml"
|
||||
}
|
||||
},
|
||||
"build": {
|
||||
"buildTransitive/netcoreapp3.1/_._": {}
|
||||
}
|
||||
},
|
||||
"Microsoft.Extensions.Logging/6.0.0": {
|
||||
"type": "package",
|
||||
"dependencies": {
|
||||
"Microsoft.Extensions.DependencyInjection": "6.0.0",
|
||||
"Microsoft.Extensions.DependencyInjection.Abstractions": "6.0.0",
|
||||
"Microsoft.Extensions.Logging.Abstractions": "6.0.0",
|
||||
"Microsoft.Extensions.Options": "6.0.0",
|
||||
"System.Diagnostics.DiagnosticSource": "6.0.0"
|
||||
},
|
||||
"compile": {
|
||||
"lib/netstandard2.1/Microsoft.Extensions.Logging.dll": {
|
||||
"related": ".xml"
|
||||
}
|
||||
},
|
||||
"runtime": {
|
||||
"lib/netstandard2.1/Microsoft.Extensions.Logging.dll": {
|
||||
"related": ".xml"
|
||||
}
|
||||
}
|
||||
},
|
||||
"Microsoft.Extensions.Logging.Abstractions/6.0.0": {
|
||||
"type": "package",
|
||||
"compile": {
|
||||
"lib/net6.0/Microsoft.Extensions.Logging.Abstractions.dll": {
|
||||
"related": ".xml"
|
||||
}
|
||||
},
|
||||
"runtime": {
|
||||
"lib/net6.0/Microsoft.Extensions.Logging.Abstractions.dll": {
|
||||
"related": ".xml"
|
||||
}
|
||||
},
|
||||
"build": {
|
||||
"buildTransitive/netcoreapp3.1/_._": {}
|
||||
}
|
||||
},
|
||||
"Microsoft.Extensions.Options/6.0.0": {
|
||||
"type": "package",
|
||||
"dependencies": {
|
||||
"Microsoft.Extensions.DependencyInjection.Abstractions": "6.0.0",
|
||||
"Microsoft.Extensions.Primitives": "6.0.0"
|
||||
},
|
||||
"compile": {
|
||||
"lib/netstandard2.1/Microsoft.Extensions.Options.dll": {
|
||||
"related": ".xml"
|
||||
}
|
||||
},
|
||||
"runtime": {
|
||||
"lib/netstandard2.1/Microsoft.Extensions.Options.dll": {
|
||||
"related": ".xml"
|
||||
}
|
||||
}
|
||||
},
|
||||
"Microsoft.Extensions.Primitives/6.0.0": {
|
||||
"type": "package",
|
||||
"dependencies": {
|
||||
"System.Runtime.CompilerServices.Unsafe": "6.0.0"
|
||||
},
|
||||
"compile": {
|
||||
"lib/net6.0/Microsoft.Extensions.Primitives.dll": {
|
||||
"related": ".xml"
|
||||
}
|
||||
},
|
||||
"runtime": {
|
||||
"lib/net6.0/Microsoft.Extensions.Primitives.dll": {
|
||||
"related": ".xml"
|
||||
}
|
||||
},
|
||||
"build": {
|
||||
"buildTransitive/netcoreapp3.1/_._": {}
|
||||
}
|
||||
},
|
||||
"Newtonsoft.Json/13.0.1": {
|
||||
"type": "package",
|
||||
"compile": {
|
||||
"lib/netstandard2.0/Newtonsoft.Json.dll": {
|
||||
"related": ".xml"
|
||||
}
|
||||
},
|
||||
"runtime": {
|
||||
"lib/netstandard2.0/Newtonsoft.Json.dll": {
|
||||
"related": ".xml"
|
||||
}
|
||||
}
|
||||
},
|
||||
"System.Collections.Immutable/6.0.0": {
|
||||
"type": "package",
|
||||
"dependencies": {
|
||||
"System.Runtime.CompilerServices.Unsafe": "6.0.0"
|
||||
},
|
||||
"compile": {
|
||||
"lib/net6.0/System.Collections.Immutable.dll": {
|
||||
"related": ".xml"
|
||||
}
|
||||
},
|
||||
"runtime": {
|
||||
"lib/net6.0/System.Collections.Immutable.dll": {
|
||||
"related": ".xml"
|
||||
}
|
||||
},
|
||||
"build": {
|
||||
"buildTransitive/netcoreapp3.1/_._": {}
|
||||
}
|
||||
},
|
||||
"System.Diagnostics.DiagnosticSource/6.0.0": {
|
||||
"type": "package",
|
||||
"dependencies": {
|
||||
"System.Runtime.CompilerServices.Unsafe": "6.0.0"
|
||||
},
|
||||
"compile": {
|
||||
"lib/net6.0/System.Diagnostics.DiagnosticSource.dll": {
|
||||
"related": ".xml"
|
||||
}
|
||||
},
|
||||
"runtime": {
|
||||
"lib/net6.0/System.Diagnostics.DiagnosticSource.dll": {
|
||||
"related": ".xml"
|
||||
}
|
||||
},
|
||||
"build": {
|
||||
"buildTransitive/netcoreapp3.1/_._": {}
|
||||
}
|
||||
},
|
||||
"System.Linq.Dynamic.Core/1.6.7": {
|
||||
"type": "package",
|
||||
"compile": {
|
||||
"lib/net6.0/System.Linq.Dynamic.Core.dll": {
|
||||
"related": ".pdb;.xml"
|
||||
}
|
||||
},
|
||||
"runtime": {
|
||||
"lib/net6.0/System.Linq.Dynamic.Core.dll": {
|
||||
"related": ".pdb;.xml"
|
||||
}
|
||||
}
|
||||
},
|
||||
"System.Runtime.CompilerServices.Unsafe/6.0.0": {
|
||||
"type": "package",
|
||||
"compile": {
|
||||
"lib/net6.0/System.Runtime.CompilerServices.Unsafe.dll": {
|
||||
"related": ".xml"
|
||||
}
|
||||
},
|
||||
"runtime": {
|
||||
"lib/net6.0/System.Runtime.CompilerServices.Unsafe.dll": {
|
||||
"related": ".xml"
|
||||
}
|
||||
},
|
||||
"build": {
|
||||
"buildTransitive/netcoreapp3.1/_._": {}
|
||||
}
|
||||
},
|
||||
"Complex.Domain/1.0.0": {
|
||||
"type": "project",
|
||||
"framework": ".NETCoreApp,Version=v6.0",
|
||||
"compile": {
|
||||
"bin/placeholder/Complex.Domain.dll": {}
|
||||
},
|
||||
"runtime": {
|
||||
"bin/placeholder/Complex.Domain.dll": {}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"libraries": {
|
||||
"AutoMapper/11.0.1": {
|
||||
"sha512": "WIadGC1pIwbnyTubvI577p3F++Bsj9q2Q3OaAc1I0QS+JhupN1xkdrPBhI9bPIeg63zM81tZplUNYkqU1HE5jQ==",
|
||||
"type": "package",
|
||||
"path": "automapper/11.0.1",
|
||||
"files": [
|
||||
".nupkg.metadata",
|
||||
".signature.p7s",
|
||||
"README.md",
|
||||
"automapper.11.0.1.nupkg.sha512",
|
||||
"automapper.nuspec",
|
||||
"icon.png",
|
||||
"lib/netstandard2.1/AutoMapper.dll",
|
||||
"lib/netstandard2.1/AutoMapper.xml"
|
||||
]
|
||||
},
|
||||
"Microsoft.CSharp/4.7.0": {
|
||||
"sha512": "pTj+D3uJWyN3My70i2Hqo+OXixq3Os2D1nJ2x92FFo6sk8fYS1m1WLNTs0Dc1uPaViH0YvEEwvzddQ7y4rhXmA==",
|
||||
"type": "package",
|
||||
"path": "microsoft.csharp/4.7.0",
|
||||
"files": [
|
||||
".nupkg.metadata",
|
||||
".signature.p7s",
|
||||
"LICENSE.TXT",
|
||||
"THIRD-PARTY-NOTICES.TXT",
|
||||
"lib/MonoAndroid10/_._",
|
||||
"lib/MonoTouch10/_._",
|
||||
"lib/net45/_._",
|
||||
"lib/netcore50/Microsoft.CSharp.dll",
|
||||
"lib/netcoreapp2.0/_._",
|
||||
"lib/netstandard1.3/Microsoft.CSharp.dll",
|
||||
"lib/netstandard2.0/Microsoft.CSharp.dll",
|
||||
"lib/netstandard2.0/Microsoft.CSharp.xml",
|
||||
"lib/portable-net45+win8+wp8+wpa81/_._",
|
||||
"lib/uap10.0.16299/_._",
|
||||
"lib/win8/_._",
|
||||
"lib/wp80/_._",
|
||||
"lib/wpa81/_._",
|
||||
"lib/xamarinios10/_._",
|
||||
"lib/xamarinmac20/_._",
|
||||
"lib/xamarintvos10/_._",
|
||||
"lib/xamarinwatchos10/_._",
|
||||
"microsoft.csharp.4.7.0.nupkg.sha512",
|
||||
"microsoft.csharp.nuspec",
|
||||
"ref/MonoAndroid10/_._",
|
||||
"ref/MonoTouch10/_._",
|
||||
"ref/net45/_._",
|
||||
"ref/netcore50/Microsoft.CSharp.dll",
|
||||
"ref/netcore50/Microsoft.CSharp.xml",
|
||||
"ref/netcore50/de/Microsoft.CSharp.xml",
|
||||
"ref/netcore50/es/Microsoft.CSharp.xml",
|
||||
"ref/netcore50/fr/Microsoft.CSharp.xml",
|
||||
"ref/netcore50/it/Microsoft.CSharp.xml",
|
||||
"ref/netcore50/ja/Microsoft.CSharp.xml",
|
||||
"ref/netcore50/ko/Microsoft.CSharp.xml",
|
||||
"ref/netcore50/ru/Microsoft.CSharp.xml",
|
||||
"ref/netcore50/zh-hans/Microsoft.CSharp.xml",
|
||||
"ref/netcore50/zh-hant/Microsoft.CSharp.xml",
|
||||
"ref/netcoreapp2.0/_._",
|
||||
"ref/netstandard1.0/Microsoft.CSharp.dll",
|
||||
"ref/netstandard1.0/Microsoft.CSharp.xml",
|
||||
"ref/netstandard1.0/de/Microsoft.CSharp.xml",
|
||||
"ref/netstandard1.0/es/Microsoft.CSharp.xml",
|
||||
"ref/netstandard1.0/fr/Microsoft.CSharp.xml",
|
||||
"ref/netstandard1.0/it/Microsoft.CSharp.xml",
|
||||
"ref/netstandard1.0/ja/Microsoft.CSharp.xml",
|
||||
"ref/netstandard1.0/ko/Microsoft.CSharp.xml",
|
||||
"ref/netstandard1.0/ru/Microsoft.CSharp.xml",
|
||||
"ref/netstandard1.0/zh-hans/Microsoft.CSharp.xml",
|
||||
"ref/netstandard1.0/zh-hant/Microsoft.CSharp.xml",
|
||||
"ref/netstandard2.0/Microsoft.CSharp.dll",
|
||||
"ref/netstandard2.0/Microsoft.CSharp.xml",
|
||||
"ref/portable-net45+win8+wp8+wpa81/_._",
|
||||
"ref/uap10.0.16299/_._",
|
||||
"ref/win8/_._",
|
||||
"ref/wp80/_._",
|
||||
"ref/wpa81/_._",
|
||||
"ref/xamarinios10/_._",
|
||||
"ref/xamarinmac20/_._",
|
||||
"ref/xamarintvos10/_._",
|
||||
"ref/xamarinwatchos10/_._",
|
||||
"useSharedDesignerContext.txt",
|
||||
"version.txt"
|
||||
]
|
||||
},
|
||||
"Microsoft.EntityFrameworkCore/6.0.3": {
|
||||
"sha512": "f7ZlNOI1wPg/r0zRgvmcLAM3kwuCVGe5cZc8rYoKPDGZs5dgRFe5a43H9FnCXsyFAF6FILB08Nr9RkuNMwd3TQ==",
|
||||
"type": "package",
|
||||
"path": "microsoft.entityframeworkcore/6.0.3",
|
||||
"files": [
|
||||
".nupkg.metadata",
|
||||
".signature.p7s",
|
||||
"Icon.png",
|
||||
"lib/net6.0/Microsoft.EntityFrameworkCore.dll",
|
||||
"lib/net6.0/Microsoft.EntityFrameworkCore.xml",
|
||||
"microsoft.entityframeworkcore.6.0.3.nupkg.sha512",
|
||||
"microsoft.entityframeworkcore.nuspec"
|
||||
]
|
||||
},
|
||||
"Microsoft.EntityFrameworkCore.Abstractions/6.0.3": {
|
||||
"sha512": "7c6wJtTFj7FDe20IVPDKeCzxWIMu+XDpYi7aYuUo6knu4vDeB3N3F0pjAZgXJ96GwTZYBrjOEwnbpYmfapEz/w==",
|
||||
"type": "package",
|
||||
"path": "microsoft.entityframeworkcore.abstractions/6.0.3",
|
||||
"files": [
|
||||
".nupkg.metadata",
|
||||
".signature.p7s",
|
||||
"Icon.png",
|
||||
"lib/net6.0/Microsoft.EntityFrameworkCore.Abstractions.dll",
|
||||
"lib/net6.0/Microsoft.EntityFrameworkCore.Abstractions.xml",
|
||||
"microsoft.entityframeworkcore.abstractions.6.0.3.nupkg.sha512",
|
||||
"microsoft.entityframeworkcore.abstractions.nuspec"
|
||||
]
|
||||
},
|
||||
"Microsoft.EntityFrameworkCore.Analyzers/6.0.3": {
|
||||
"sha512": "Ld9HyVABYor3Tq43/sG2JERL94UnDHJPg5PwpkCW4CWsf/CbxHetdecv+bCXA/Hg4q+44sov0GVl4Ywjk4PnyA==",
|
||||
"type": "package",
|
||||
"path": "microsoft.entityframeworkcore.analyzers/6.0.3",
|
||||
"files": [
|
||||
".nupkg.metadata",
|
||||
".signature.p7s",
|
||||
"Icon.png",
|
||||
"analyzers/dotnet/cs/Microsoft.EntityFrameworkCore.Analyzers.dll",
|
||||
"lib/netstandard2.0/_._",
|
||||
"microsoft.entityframeworkcore.analyzers.6.0.3.nupkg.sha512",
|
||||
"microsoft.entityframeworkcore.analyzers.nuspec"
|
||||
]
|
||||
},
|
||||
"Microsoft.Extensions.Caching.Abstractions/6.0.0": {
|
||||
"sha512": "bcz5sSFJbganH0+YrfvIjJDIcKNW7TL07C4d1eTmXy/wOt52iz4LVogJb6pazs7W0+74j0YpXFErvp++Aq5Bsw==",
|
||||
"type": "package",
|
||||
"path": "microsoft.extensions.caching.abstractions/6.0.0",
|
||||
"files": [
|
||||
".nupkg.metadata",
|
||||
".signature.p7s",
|
||||
"Icon.png",
|
||||
"LICENSE.TXT",
|
||||
"THIRD-PARTY-NOTICES.TXT",
|
||||
"lib/net461/Microsoft.Extensions.Caching.Abstractions.dll",
|
||||
"lib/net461/Microsoft.Extensions.Caching.Abstractions.xml",
|
||||
"lib/netstandard2.0/Microsoft.Extensions.Caching.Abstractions.dll",
|
||||
"lib/netstandard2.0/Microsoft.Extensions.Caching.Abstractions.xml",
|
||||
"microsoft.extensions.caching.abstractions.6.0.0.nupkg.sha512",
|
||||
"microsoft.extensions.caching.abstractions.nuspec",
|
||||
"useSharedDesignerContext.txt"
|
||||
]
|
||||
},
|
||||
"Microsoft.Extensions.Caching.Memory/6.0.1": {
|
||||
"sha512": "B4y+Cev05eMcjf1na0v9gza6GUtahXbtY1JCypIgx3B4Ea/KAgsWyXEmW4q6zMbmTMtKzmPVk09rvFJirvMwTg==",
|
||||
"type": "package",
|
||||
"path": "microsoft.extensions.caching.memory/6.0.1",
|
||||
"files": [
|
||||
".nupkg.metadata",
|
||||
".signature.p7s",
|
||||
"Icon.png",
|
||||
"LICENSE.TXT",
|
||||
"THIRD-PARTY-NOTICES.TXT",
|
||||
"lib/net461/Microsoft.Extensions.Caching.Memory.dll",
|
||||
"lib/net461/Microsoft.Extensions.Caching.Memory.xml",
|
||||
"lib/netstandard2.0/Microsoft.Extensions.Caching.Memory.dll",
|
||||
"lib/netstandard2.0/Microsoft.Extensions.Caching.Memory.xml",
|
||||
"microsoft.extensions.caching.memory.6.0.1.nupkg.sha512",
|
||||
"microsoft.extensions.caching.memory.nuspec",
|
||||
"useSharedDesignerContext.txt"
|
||||
]
|
||||
},
|
||||
"Microsoft.Extensions.DependencyInjection/6.0.0": {
|
||||
"sha512": "k6PWQMuoBDGGHOQTtyois2u4AwyVcIwL2LaSLlTZQm2CYcJ1pxbt6jfAnpWmzENA/wfrYRI/X9DTLoUkE4AsLw==",
|
||||
"type": "package",
|
||||
"path": "microsoft.extensions.dependencyinjection/6.0.0",
|
||||
"files": [
|
||||
".nupkg.metadata",
|
||||
".signature.p7s",
|
||||
"Icon.png",
|
||||
"LICENSE.TXT",
|
||||
"THIRD-PARTY-NOTICES.TXT",
|
||||
"buildTransitive/netcoreapp2.0/Microsoft.Extensions.DependencyInjection.targets",
|
||||
"buildTransitive/netcoreapp3.1/_._",
|
||||
"lib/net461/Microsoft.Extensions.DependencyInjection.dll",
|
||||
"lib/net461/Microsoft.Extensions.DependencyInjection.xml",
|
||||
"lib/net6.0/Microsoft.Extensions.DependencyInjection.dll",
|
||||
"lib/net6.0/Microsoft.Extensions.DependencyInjection.xml",
|
||||
"lib/netstandard2.0/Microsoft.Extensions.DependencyInjection.dll",
|
||||
"lib/netstandard2.0/Microsoft.Extensions.DependencyInjection.xml",
|
||||
"lib/netstandard2.1/Microsoft.Extensions.DependencyInjection.dll",
|
||||
"lib/netstandard2.1/Microsoft.Extensions.DependencyInjection.xml",
|
||||
"microsoft.extensions.dependencyinjection.6.0.0.nupkg.sha512",
|
||||
"microsoft.extensions.dependencyinjection.nuspec",
|
||||
"useSharedDesignerContext.txt"
|
||||
]
|
||||
},
|
||||
"Microsoft.Extensions.DependencyInjection.Abstractions/6.0.0": {
|
||||
"sha512": "xlzi2IYREJH3/m6+lUrQlujzX8wDitm4QGnUu6kUXTQAWPuZY8i+ticFJbzfqaetLA6KR/rO6Ew/HuYD+bxifg==",
|
||||
"type": "package",
|
||||
"path": "microsoft.extensions.dependencyinjection.abstractions/6.0.0",
|
||||
"files": [
|
||||
".nupkg.metadata",
|
||||
".signature.p7s",
|
||||
"Icon.png",
|
||||
"LICENSE.TXT",
|
||||
"THIRD-PARTY-NOTICES.TXT",
|
||||
"buildTransitive/netcoreapp2.0/Microsoft.Extensions.DependencyInjection.Abstractions.targets",
|
||||
"buildTransitive/netcoreapp3.1/_._",
|
||||
"lib/net461/Microsoft.Extensions.DependencyInjection.Abstractions.dll",
|
||||
"lib/net461/Microsoft.Extensions.DependencyInjection.Abstractions.xml",
|
||||
"lib/net6.0/Microsoft.Extensions.DependencyInjection.Abstractions.dll",
|
||||
"lib/net6.0/Microsoft.Extensions.DependencyInjection.Abstractions.xml",
|
||||
"lib/netstandard2.0/Microsoft.Extensions.DependencyInjection.Abstractions.dll",
|
||||
"lib/netstandard2.0/Microsoft.Extensions.DependencyInjection.Abstractions.xml",
|
||||
"lib/netstandard2.1/Microsoft.Extensions.DependencyInjection.Abstractions.dll",
|
||||
"lib/netstandard2.1/Microsoft.Extensions.DependencyInjection.Abstractions.xml",
|
||||
"microsoft.extensions.dependencyinjection.abstractions.6.0.0.nupkg.sha512",
|
||||
"microsoft.extensions.dependencyinjection.abstractions.nuspec",
|
||||
"useSharedDesignerContext.txt"
|
||||
]
|
||||
},
|
||||
"Microsoft.Extensions.Logging/6.0.0": {
|
||||
"sha512": "eIbyj40QDg1NDz0HBW0S5f3wrLVnKWnDJ/JtZ+yJDFnDj90VoPuoPmFkeaXrtu+0cKm5GRAwoDf+dBWXK0TUdg==",
|
||||
"type": "package",
|
||||
"path": "microsoft.extensions.logging/6.0.0",
|
||||
"files": [
|
||||
".nupkg.metadata",
|
||||
".signature.p7s",
|
||||
"Icon.png",
|
||||
"LICENSE.TXT",
|
||||
"THIRD-PARTY-NOTICES.TXT",
|
||||
"lib/net461/Microsoft.Extensions.Logging.dll",
|
||||
"lib/net461/Microsoft.Extensions.Logging.xml",
|
||||
"lib/netstandard2.0/Microsoft.Extensions.Logging.dll",
|
||||
"lib/netstandard2.0/Microsoft.Extensions.Logging.xml",
|
||||
"lib/netstandard2.1/Microsoft.Extensions.Logging.dll",
|
||||
"lib/netstandard2.1/Microsoft.Extensions.Logging.xml",
|
||||
"microsoft.extensions.logging.6.0.0.nupkg.sha512",
|
||||
"microsoft.extensions.logging.nuspec",
|
||||
"useSharedDesignerContext.txt"
|
||||
]
|
||||
},
|
||||
"Microsoft.Extensions.Logging.Abstractions/6.0.0": {
|
||||
"sha512": "/HggWBbTwy8TgebGSX5DBZ24ndhzi93sHUBDvP1IxbZD7FDokYzdAr6+vbWGjw2XAfR2EJ1sfKUotpjHnFWPxA==",
|
||||
"type": "package",
|
||||
"path": "microsoft.extensions.logging.abstractions/6.0.0",
|
||||
"files": [
|
||||
".nupkg.metadata",
|
||||
".signature.p7s",
|
||||
"Icon.png",
|
||||
"LICENSE.TXT",
|
||||
"THIRD-PARTY-NOTICES.TXT",
|
||||
"analyzers/dotnet/roslyn3.11/cs/Microsoft.Extensions.Logging.Generators.dll",
|
||||
"analyzers/dotnet/roslyn3.11/cs/cs/Microsoft.Extensions.Logging.Generators.resources.dll",
|
||||
"analyzers/dotnet/roslyn3.11/cs/de/Microsoft.Extensions.Logging.Generators.resources.dll",
|
||||
"analyzers/dotnet/roslyn3.11/cs/es/Microsoft.Extensions.Logging.Generators.resources.dll",
|
||||
"analyzers/dotnet/roslyn3.11/cs/fr/Microsoft.Extensions.Logging.Generators.resources.dll",
|
||||
"analyzers/dotnet/roslyn3.11/cs/it/Microsoft.Extensions.Logging.Generators.resources.dll",
|
||||
"analyzers/dotnet/roslyn3.11/cs/ja/Microsoft.Extensions.Logging.Generators.resources.dll",
|
||||
"analyzers/dotnet/roslyn3.11/cs/ko/Microsoft.Extensions.Logging.Generators.resources.dll",
|
||||
"analyzers/dotnet/roslyn3.11/cs/pl/Microsoft.Extensions.Logging.Generators.resources.dll",
|
||||
"analyzers/dotnet/roslyn3.11/cs/pt-BR/Microsoft.Extensions.Logging.Generators.resources.dll",
|
||||
"analyzers/dotnet/roslyn3.11/cs/ru/Microsoft.Extensions.Logging.Generators.resources.dll",
|
||||
"analyzers/dotnet/roslyn3.11/cs/tr/Microsoft.Extensions.Logging.Generators.resources.dll",
|
||||
"analyzers/dotnet/roslyn3.11/cs/zh-Hans/Microsoft.Extensions.Logging.Generators.resources.dll",
|
||||
"analyzers/dotnet/roslyn3.11/cs/zh-Hant/Microsoft.Extensions.Logging.Generators.resources.dll",
|
||||
"analyzers/dotnet/roslyn4.0/cs/Microsoft.Extensions.Logging.Generators.dll",
|
||||
"analyzers/dotnet/roslyn4.0/cs/cs/Microsoft.Extensions.Logging.Generators.resources.dll",
|
||||
"analyzers/dotnet/roslyn4.0/cs/de/Microsoft.Extensions.Logging.Generators.resources.dll",
|
||||
"analyzers/dotnet/roslyn4.0/cs/es/Microsoft.Extensions.Logging.Generators.resources.dll",
|
||||
"analyzers/dotnet/roslyn4.0/cs/fr/Microsoft.Extensions.Logging.Generators.resources.dll",
|
||||
"analyzers/dotnet/roslyn4.0/cs/it/Microsoft.Extensions.Logging.Generators.resources.dll",
|
||||
"analyzers/dotnet/roslyn4.0/cs/ja/Microsoft.Extensions.Logging.Generators.resources.dll",
|
||||
"analyzers/dotnet/roslyn4.0/cs/ko/Microsoft.Extensions.Logging.Generators.resources.dll",
|
||||
"analyzers/dotnet/roslyn4.0/cs/pl/Microsoft.Extensions.Logging.Generators.resources.dll",
|
||||
"analyzers/dotnet/roslyn4.0/cs/pt-BR/Microsoft.Extensions.Logging.Generators.resources.dll",
|
||||
"analyzers/dotnet/roslyn4.0/cs/ru/Microsoft.Extensions.Logging.Generators.resources.dll",
|
||||
"analyzers/dotnet/roslyn4.0/cs/tr/Microsoft.Extensions.Logging.Generators.resources.dll",
|
||||
"analyzers/dotnet/roslyn4.0/cs/zh-Hans/Microsoft.Extensions.Logging.Generators.resources.dll",
|
||||
"analyzers/dotnet/roslyn4.0/cs/zh-Hant/Microsoft.Extensions.Logging.Generators.resources.dll",
|
||||
"build/Microsoft.Extensions.Logging.Abstractions.targets",
|
||||
"buildTransitive/netcoreapp2.0/Microsoft.Extensions.Logging.Abstractions.targets",
|
||||
"buildTransitive/netcoreapp3.1/_._",
|
||||
"lib/net461/Microsoft.Extensions.Logging.Abstractions.dll",
|
||||
"lib/net461/Microsoft.Extensions.Logging.Abstractions.xml",
|
||||
"lib/net6.0/Microsoft.Extensions.Logging.Abstractions.dll",
|
||||
"lib/net6.0/Microsoft.Extensions.Logging.Abstractions.xml",
|
||||
"lib/netstandard2.0/Microsoft.Extensions.Logging.Abstractions.dll",
|
||||
"lib/netstandard2.0/Microsoft.Extensions.Logging.Abstractions.xml",
|
||||
"microsoft.extensions.logging.abstractions.6.0.0.nupkg.sha512",
|
||||
"microsoft.extensions.logging.abstractions.nuspec",
|
||||
"useSharedDesignerContext.txt"
|
||||
]
|
||||
},
|
||||
"Microsoft.Extensions.Options/6.0.0": {
|
||||
"sha512": "dzXN0+V1AyjOe2xcJ86Qbo233KHuLEY0njf/P2Kw8SfJU+d45HNS2ctJdnEnrWbM9Ye2eFgaC5Mj9otRMU6IsQ==",
|
||||
"type": "package",
|
||||
"path": "microsoft.extensions.options/6.0.0",
|
||||
"files": [
|
||||
".nupkg.metadata",
|
||||
".signature.p7s",
|
||||
"Icon.png",
|
||||
"LICENSE.TXT",
|
||||
"THIRD-PARTY-NOTICES.TXT",
|
||||
"lib/net461/Microsoft.Extensions.Options.dll",
|
||||
"lib/net461/Microsoft.Extensions.Options.xml",
|
||||
"lib/netstandard2.0/Microsoft.Extensions.Options.dll",
|
||||
"lib/netstandard2.0/Microsoft.Extensions.Options.xml",
|
||||
"lib/netstandard2.1/Microsoft.Extensions.Options.dll",
|
||||
"lib/netstandard2.1/Microsoft.Extensions.Options.xml",
|
||||
"microsoft.extensions.options.6.0.0.nupkg.sha512",
|
||||
"microsoft.extensions.options.nuspec",
|
||||
"useSharedDesignerContext.txt"
|
||||
]
|
||||
},
|
||||
"Microsoft.Extensions.Primitives/6.0.0": {
|
||||
"sha512": "9+PnzmQFfEFNR9J2aDTfJGGupShHjOuGw4VUv+JB044biSHrnmCIMD+mJHmb2H7YryrfBEXDurxQ47gJZdCKNQ==",
|
||||
"type": "package",
|
||||
"path": "microsoft.extensions.primitives/6.0.0",
|
||||
"files": [
|
||||
".nupkg.metadata",
|
||||
".signature.p7s",
|
||||
"Icon.png",
|
||||
"LICENSE.TXT",
|
||||
"THIRD-PARTY-NOTICES.TXT",
|
||||
"buildTransitive/netcoreapp2.0/Microsoft.Extensions.Primitives.targets",
|
||||
"buildTransitive/netcoreapp3.1/_._",
|
||||
"lib/net461/Microsoft.Extensions.Primitives.dll",
|
||||
"lib/net461/Microsoft.Extensions.Primitives.xml",
|
||||
"lib/net6.0/Microsoft.Extensions.Primitives.dll",
|
||||
"lib/net6.0/Microsoft.Extensions.Primitives.xml",
|
||||
"lib/netcoreapp3.1/Microsoft.Extensions.Primitives.dll",
|
||||
"lib/netcoreapp3.1/Microsoft.Extensions.Primitives.xml",
|
||||
"lib/netstandard2.0/Microsoft.Extensions.Primitives.dll",
|
||||
"lib/netstandard2.0/Microsoft.Extensions.Primitives.xml",
|
||||
"microsoft.extensions.primitives.6.0.0.nupkg.sha512",
|
||||
"microsoft.extensions.primitives.nuspec",
|
||||
"useSharedDesignerContext.txt"
|
||||
]
|
||||
},
|
||||
"Newtonsoft.Json/13.0.1": {
|
||||
"sha512": "ppPFpBcvxdsfUonNcvITKqLl3bqxWbDCZIzDWHzjpdAHRFfZe0Dw9HmA0+za13IdyrgJwpkDTDA9fHaxOrt20A==",
|
||||
"type": "package",
|
||||
"path": "newtonsoft.json/13.0.1",
|
||||
"files": [
|
||||
".nupkg.metadata",
|
||||
".signature.p7s",
|
||||
"LICENSE.md",
|
||||
"lib/net20/Newtonsoft.Json.dll",
|
||||
"lib/net20/Newtonsoft.Json.xml",
|
||||
"lib/net35/Newtonsoft.Json.dll",
|
||||
"lib/net35/Newtonsoft.Json.xml",
|
||||
"lib/net40/Newtonsoft.Json.dll",
|
||||
"lib/net40/Newtonsoft.Json.xml",
|
||||
"lib/net45/Newtonsoft.Json.dll",
|
||||
"lib/net45/Newtonsoft.Json.xml",
|
||||
"lib/netstandard1.0/Newtonsoft.Json.dll",
|
||||
"lib/netstandard1.0/Newtonsoft.Json.xml",
|
||||
"lib/netstandard1.3/Newtonsoft.Json.dll",
|
||||
"lib/netstandard1.3/Newtonsoft.Json.xml",
|
||||
"lib/netstandard2.0/Newtonsoft.Json.dll",
|
||||
"lib/netstandard2.0/Newtonsoft.Json.xml",
|
||||
"newtonsoft.json.13.0.1.nupkg.sha512",
|
||||
"newtonsoft.json.nuspec",
|
||||
"packageIcon.png"
|
||||
]
|
||||
},
|
||||
"System.Collections.Immutable/6.0.0": {
|
||||
"sha512": "l4zZJ1WU2hqpQQHXz1rvC3etVZN+2DLmQMO79FhOTZHMn8tDRr+WU287sbomD0BETlmKDn0ygUgVy9k5xkkJdA==",
|
||||
"type": "package",
|
||||
"path": "system.collections.immutable/6.0.0",
|
||||
"files": [
|
||||
".nupkg.metadata",
|
||||
".signature.p7s",
|
||||
"Icon.png",
|
||||
"LICENSE.TXT",
|
||||
"THIRD-PARTY-NOTICES.TXT",
|
||||
"buildTransitive/netcoreapp2.0/System.Collections.Immutable.targets",
|
||||
"buildTransitive/netcoreapp3.1/_._",
|
||||
"lib/net461/System.Collections.Immutable.dll",
|
||||
"lib/net461/System.Collections.Immutable.xml",
|
||||
"lib/net6.0/System.Collections.Immutable.dll",
|
||||
"lib/net6.0/System.Collections.Immutable.xml",
|
||||
"lib/netstandard2.0/System.Collections.Immutable.dll",
|
||||
"lib/netstandard2.0/System.Collections.Immutable.xml",
|
||||
"system.collections.immutable.6.0.0.nupkg.sha512",
|
||||
"system.collections.immutable.nuspec",
|
||||
"useSharedDesignerContext.txt"
|
||||
]
|
||||
},
|
||||
"System.Diagnostics.DiagnosticSource/6.0.0": {
|
||||
"sha512": "frQDfv0rl209cKm1lnwTgFPzNigy2EKk1BS3uAvHvlBVKe5cymGyHO+Sj+NLv5VF/AhHsqPIUUwya5oV4CHMUw==",
|
||||
"type": "package",
|
||||
"path": "system.diagnostics.diagnosticsource/6.0.0",
|
||||
"files": [
|
||||
".nupkg.metadata",
|
||||
".signature.p7s",
|
||||
"Icon.png",
|
||||
"LICENSE.TXT",
|
||||
"THIRD-PARTY-NOTICES.TXT",
|
||||
"buildTransitive/netcoreapp2.0/System.Diagnostics.DiagnosticSource.targets",
|
||||
"buildTransitive/netcoreapp3.1/_._",
|
||||
"lib/net461/System.Diagnostics.DiagnosticSource.dll",
|
||||
"lib/net461/System.Diagnostics.DiagnosticSource.xml",
|
||||
"lib/net5.0/System.Diagnostics.DiagnosticSource.dll",
|
||||
"lib/net5.0/System.Diagnostics.DiagnosticSource.xml",
|
||||
"lib/net6.0/System.Diagnostics.DiagnosticSource.dll",
|
||||
"lib/net6.0/System.Diagnostics.DiagnosticSource.xml",
|
||||
"lib/netstandard2.0/System.Diagnostics.DiagnosticSource.dll",
|
||||
"lib/netstandard2.0/System.Diagnostics.DiagnosticSource.xml",
|
||||
"system.diagnostics.diagnosticsource.6.0.0.nupkg.sha512",
|
||||
"system.diagnostics.diagnosticsource.nuspec",
|
||||
"useSharedDesignerContext.txt"
|
||||
]
|
||||
},
|
||||
"System.Linq.Dynamic.Core/1.6.7": {
|
||||
"sha512": "lH+YgtovXbxD6JImHl2VXUtXRUvN8BMEZB2ReZNvS+J5GnGGZV9ivxslQ2nJWmKlBjFTReAKsevnQKE4yLP2pA==",
|
||||
"type": "package",
|
||||
"path": "system.linq.dynamic.core/1.6.7",
|
||||
"files": [
|
||||
".nupkg.metadata",
|
||||
".signature.p7s",
|
||||
"PackageReadme.md",
|
||||
"lib/net35/System.Linq.Dynamic.Core.dll",
|
||||
"lib/net35/System.Linq.Dynamic.Core.pdb",
|
||||
"lib/net35/System.Linq.Dynamic.Core.xml",
|
||||
"lib/net40/System.Linq.Dynamic.Core.dll",
|
||||
"lib/net40/System.Linq.Dynamic.Core.pdb",
|
||||
"lib/net40/System.Linq.Dynamic.Core.xml",
|
||||
"lib/net45/System.Linq.Dynamic.Core.dll",
|
||||
"lib/net45/System.Linq.Dynamic.Core.pdb",
|
||||
"lib/net45/System.Linq.Dynamic.Core.xml",
|
||||
"lib/net452/System.Linq.Dynamic.Core.dll",
|
||||
"lib/net452/System.Linq.Dynamic.Core.pdb",
|
||||
"lib/net452/System.Linq.Dynamic.Core.xml",
|
||||
"lib/net46/System.Linq.Dynamic.Core.dll",
|
||||
"lib/net46/System.Linq.Dynamic.Core.pdb",
|
||||
"lib/net46/System.Linq.Dynamic.Core.xml",
|
||||
"lib/net5.0/System.Linq.Dynamic.Core.dll",
|
||||
"lib/net5.0/System.Linq.Dynamic.Core.pdb",
|
||||
"lib/net5.0/System.Linq.Dynamic.Core.xml",
|
||||
"lib/net6.0/System.Linq.Dynamic.Core.dll",
|
||||
"lib/net6.0/System.Linq.Dynamic.Core.pdb",
|
||||
"lib/net6.0/System.Linq.Dynamic.Core.xml",
|
||||
"lib/net7.0/System.Linq.Dynamic.Core.dll",
|
||||
"lib/net7.0/System.Linq.Dynamic.Core.pdb",
|
||||
"lib/net7.0/System.Linq.Dynamic.Core.xml",
|
||||
"lib/net8.0/System.Linq.Dynamic.Core.dll",
|
||||
"lib/net8.0/System.Linq.Dynamic.Core.pdb",
|
||||
"lib/net8.0/System.Linq.Dynamic.Core.xml",
|
||||
"lib/net9.0/System.Linq.Dynamic.Core.dll",
|
||||
"lib/net9.0/System.Linq.Dynamic.Core.pdb",
|
||||
"lib/net9.0/System.Linq.Dynamic.Core.xml",
|
||||
"lib/netcoreapp2.1/System.Linq.Dynamic.Core.dll",
|
||||
"lib/netcoreapp2.1/System.Linq.Dynamic.Core.pdb",
|
||||
"lib/netcoreapp2.1/System.Linq.Dynamic.Core.xml",
|
||||
"lib/netcoreapp3.1/System.Linq.Dynamic.Core.dll",
|
||||
"lib/netcoreapp3.1/System.Linq.Dynamic.Core.pdb",
|
||||
"lib/netcoreapp3.1/System.Linq.Dynamic.Core.xml",
|
||||
"lib/netstandard1.3/System.Linq.Dynamic.Core.dll",
|
||||
"lib/netstandard1.3/System.Linq.Dynamic.Core.pdb",
|
||||
"lib/netstandard1.3/System.Linq.Dynamic.Core.xml",
|
||||
"lib/netstandard2.0/System.Linq.Dynamic.Core.dll",
|
||||
"lib/netstandard2.0/System.Linq.Dynamic.Core.pdb",
|
||||
"lib/netstandard2.0/System.Linq.Dynamic.Core.xml",
|
||||
"lib/netstandard2.1/System.Linq.Dynamic.Core.dll",
|
||||
"lib/netstandard2.1/System.Linq.Dynamic.Core.pdb",
|
||||
"lib/netstandard2.1/System.Linq.Dynamic.Core.xml",
|
||||
"lib/uap10.0.10240/System.Linq.Dynamic.Core.dll",
|
||||
"lib/uap10.0.10240/System.Linq.Dynamic.Core.pdb",
|
||||
"lib/uap10.0.10240/System.Linq.Dynamic.Core.pri",
|
||||
"lib/uap10.0.10240/System.Linq.Dynamic.Core.xml",
|
||||
"logo.png",
|
||||
"system.linq.dynamic.core.1.6.7.nupkg.sha512",
|
||||
"system.linq.dynamic.core.nuspec"
|
||||
]
|
||||
},
|
||||
"System.Runtime.CompilerServices.Unsafe/6.0.0": {
|
||||
"sha512": "/iUeP3tq1S0XdNNoMz5C9twLSrM/TH+qElHkXWaPvuNOt+99G75NrV0OS2EqHx5wMN7popYjpc8oTjC1y16DLg==",
|
||||
"type": "package",
|
||||
"path": "system.runtime.compilerservices.unsafe/6.0.0",
|
||||
"files": [
|
||||
".nupkg.metadata",
|
||||
".signature.p7s",
|
||||
"Icon.png",
|
||||
"LICENSE.TXT",
|
||||
"THIRD-PARTY-NOTICES.TXT",
|
||||
"buildTransitive/netcoreapp2.0/System.Runtime.CompilerServices.Unsafe.targets",
|
||||
"buildTransitive/netcoreapp3.1/_._",
|
||||
"lib/net461/System.Runtime.CompilerServices.Unsafe.dll",
|
||||
"lib/net461/System.Runtime.CompilerServices.Unsafe.xml",
|
||||
"lib/net6.0/System.Runtime.CompilerServices.Unsafe.dll",
|
||||
"lib/net6.0/System.Runtime.CompilerServices.Unsafe.xml",
|
||||
"lib/netcoreapp3.1/System.Runtime.CompilerServices.Unsafe.dll",
|
||||
"lib/netcoreapp3.1/System.Runtime.CompilerServices.Unsafe.xml",
|
||||
"lib/netstandard2.0/System.Runtime.CompilerServices.Unsafe.dll",
|
||||
"lib/netstandard2.0/System.Runtime.CompilerServices.Unsafe.xml",
|
||||
"system.runtime.compilerservices.unsafe.6.0.0.nupkg.sha512",
|
||||
"system.runtime.compilerservices.unsafe.nuspec",
|
||||
"useSharedDesignerContext.txt"
|
||||
]
|
||||
},
|
||||
"Complex.Domain/1.0.0": {
|
||||
"type": "project",
|
||||
"path": "../Complex.Domain/Complex.Domain.csproj",
|
||||
"msbuildProject": "../Complex.Domain/Complex.Domain.csproj"
|
||||
}
|
||||
},
|
||||
"projectFileDependencyGroups": {
|
||||
"net6.0": [
|
||||
"AutoMapper >= 11.0.1",
|
||||
"Complex.Domain >= 1.0.0",
|
||||
"Microsoft.EntityFrameworkCore >= 6.0.3",
|
||||
"Newtonsoft.Json >= 13.0.1",
|
||||
"System.Linq.Dynamic.Core >= 1.6.7"
|
||||
]
|
||||
},
|
||||
"packageFolders": {
|
||||
"C:\\Users\\Mohammad\\.nuget\\packages\\": {},
|
||||
"C:\\Program Files (x86)\\Microsoft Visual Studio\\Shared\\NuGetPackages": {}
|
||||
},
|
||||
"project": {
|
||||
"version": "1.0.0",
|
||||
"restore": {
|
||||
"projectUniqueName": "D:\\Data\\Projects\\Nabak\\Complex\\Complex.Application\\Complex.Application.csproj",
|
||||
"projectName": "Complex.Application",
|
||||
"projectPath": "D:\\Data\\Projects\\Nabak\\Complex\\Complex.Application\\Complex.Application.csproj",
|
||||
"packagesPath": "C:\\Users\\Mohammad\\.nuget\\packages\\",
|
||||
"outputPath": "D:\\Data\\Projects\\Nabak\\Complex\\Complex.Application\\obj\\",
|
||||
"projectStyle": "PackageReference",
|
||||
"fallbackFolders": [
|
||||
"C:\\Program Files (x86)\\Microsoft Visual Studio\\Shared\\NuGetPackages"
|
||||
],
|
||||
"configFilePaths": [
|
||||
"C:\\Users\\Mohammad\\AppData\\Roaming\\NuGet\\NuGet.Config",
|
||||
"C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.FallbackLocation.config",
|
||||
"C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.Offline.config"
|
||||
],
|
||||
"originalTargetFrameworks": [
|
||||
"net6.0"
|
||||
],
|
||||
"sources": {
|
||||
"C:\\Program Files (x86)\\Microsoft SDKs\\NuGetPackages\\": {},
|
||||
"https://api.nuget.org/v3/index.json": {}
|
||||
},
|
||||
"frameworks": {
|
||||
"net6.0": {
|
||||
"targetAlias": "net6.0",
|
||||
"projectReferences": {
|
||||
"D:\\Data\\Projects\\Nabak\\Complex\\Complex.Domain\\Complex.Domain.csproj": {
|
||||
"projectPath": "D:\\Data\\Projects\\Nabak\\Complex\\Complex.Domain\\Complex.Domain.csproj"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"warningProperties": {
|
||||
"warnAsError": [
|
||||
"NU1605"
|
||||
]
|
||||
},
|
||||
"restoreAuditProperties": {
|
||||
"enableAudit": "true",
|
||||
"auditLevel": "low",
|
||||
"auditMode": "direct"
|
||||
},
|
||||
"SdkAnalysisLevel": "9.0.100"
|
||||
},
|
||||
"frameworks": {
|
||||
"net6.0": {
|
||||
"targetAlias": "net6.0",
|
||||
"dependencies": {
|
||||
"AutoMapper": {
|
||||
"target": "Package",
|
||||
"version": "[11.0.1, )"
|
||||
},
|
||||
"Microsoft.EntityFrameworkCore": {
|
||||
"target": "Package",
|
||||
"version": "[6.0.3, )"
|
||||
},
|
||||
"Newtonsoft.Json": {
|
||||
"target": "Package",
|
||||
"version": "[13.0.1, )"
|
||||
},
|
||||
"System.Linq.Dynamic.Core": {
|
||||
"target": "Package",
|
||||
"version": "[1.6.7, )"
|
||||
}
|
||||
},
|
||||
"imports": [
|
||||
"net461",
|
||||
"net462",
|
||||
"net47",
|
||||
"net471",
|
||||
"net472",
|
||||
"net48",
|
||||
"net481"
|
||||
],
|
||||
"assetTargetFallback": true,
|
||||
"warn": true,
|
||||
"frameworkReferences": {
|
||||
"Microsoft.NETCore.App": {
|
||||
"privateAssets": "all"
|
||||
}
|
||||
},
|
||||
"runtimeIdentifierGraphPath": "C:\\Program Files\\dotnet\\sdk\\9.0.101\\RuntimeIdentifierGraph.json"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
27
Complex.Application/obj/project.nuget.cache
Normal file
27
Complex.Application/obj/project.nuget.cache
Normal file
@@ -0,0 +1,27 @@
|
||||
{
|
||||
"version": 2,
|
||||
"dgSpecHash": "9ZzH9UTX/k0=",
|
||||
"success": true,
|
||||
"projectFilePath": "D:\\Data\\Projects\\Nabak\\Complex\\Complex.Application\\Complex.Application.csproj",
|
||||
"expectedPackageFiles": [
|
||||
"C:\\Users\\Mohammad\\.nuget\\packages\\automapper\\11.0.1\\automapper.11.0.1.nupkg.sha512",
|
||||
"C:\\Users\\Mohammad\\.nuget\\packages\\microsoft.csharp\\4.7.0\\microsoft.csharp.4.7.0.nupkg.sha512",
|
||||
"C:\\Users\\Mohammad\\.nuget\\packages\\microsoft.entityframeworkcore\\6.0.3\\microsoft.entityframeworkcore.6.0.3.nupkg.sha512",
|
||||
"C:\\Users\\Mohammad\\.nuget\\packages\\microsoft.entityframeworkcore.abstractions\\6.0.3\\microsoft.entityframeworkcore.abstractions.6.0.3.nupkg.sha512",
|
||||
"C:\\Users\\Mohammad\\.nuget\\packages\\microsoft.entityframeworkcore.analyzers\\6.0.3\\microsoft.entityframeworkcore.analyzers.6.0.3.nupkg.sha512",
|
||||
"C:\\Users\\Mohammad\\.nuget\\packages\\microsoft.extensions.caching.abstractions\\6.0.0\\microsoft.extensions.caching.abstractions.6.0.0.nupkg.sha512",
|
||||
"C:\\Users\\Mohammad\\.nuget\\packages\\microsoft.extensions.caching.memory\\6.0.1\\microsoft.extensions.caching.memory.6.0.1.nupkg.sha512",
|
||||
"C:\\Users\\Mohammad\\.nuget\\packages\\microsoft.extensions.dependencyinjection\\6.0.0\\microsoft.extensions.dependencyinjection.6.0.0.nupkg.sha512",
|
||||
"C:\\Users\\Mohammad\\.nuget\\packages\\microsoft.extensions.dependencyinjection.abstractions\\6.0.0\\microsoft.extensions.dependencyinjection.abstractions.6.0.0.nupkg.sha512",
|
||||
"C:\\Users\\Mohammad\\.nuget\\packages\\microsoft.extensions.logging\\6.0.0\\microsoft.extensions.logging.6.0.0.nupkg.sha512",
|
||||
"C:\\Users\\Mohammad\\.nuget\\packages\\microsoft.extensions.logging.abstractions\\6.0.0\\microsoft.extensions.logging.abstractions.6.0.0.nupkg.sha512",
|
||||
"C:\\Users\\Mohammad\\.nuget\\packages\\microsoft.extensions.options\\6.0.0\\microsoft.extensions.options.6.0.0.nupkg.sha512",
|
||||
"C:\\Users\\Mohammad\\.nuget\\packages\\microsoft.extensions.primitives\\6.0.0\\microsoft.extensions.primitives.6.0.0.nupkg.sha512",
|
||||
"C:\\Users\\Mohammad\\.nuget\\packages\\newtonsoft.json\\13.0.1\\newtonsoft.json.13.0.1.nupkg.sha512",
|
||||
"C:\\Users\\Mohammad\\.nuget\\packages\\system.collections.immutable\\6.0.0\\system.collections.immutable.6.0.0.nupkg.sha512",
|
||||
"C:\\Users\\Mohammad\\.nuget\\packages\\system.diagnostics.diagnosticsource\\6.0.0\\system.diagnostics.diagnosticsource.6.0.0.nupkg.sha512",
|
||||
"C:\\Users\\Mohammad\\.nuget\\packages\\system.linq.dynamic.core\\1.6.7\\system.linq.dynamic.core.1.6.7.nupkg.sha512",
|
||||
"C:\\Users\\Mohammad\\.nuget\\packages\\system.runtime.compilerservices.unsafe\\6.0.0\\system.runtime.compilerservices.unsafe.6.0.0.nupkg.sha512"
|
||||
],
|
||||
"logs": []
|
||||
}
|
||||
11
Complex.Domain/Commons/AuditableAttribute.cs
Normal file
11
Complex.Domain/Commons/AuditableAttribute.cs
Normal file
@@ -0,0 +1,11 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
|
||||
namespace Complex.Domain.Commons
|
||||
{
|
||||
[AttributeUsage(AttributeTargets.Class)]
|
||||
public class AuditableAttribute:Attribute
|
||||
{
|
||||
}
|
||||
}
|
||||
34
Complex.Domain/Commons/BaseEntity.cs
Normal file
34
Complex.Domain/Commons/BaseEntity.cs
Normal file
@@ -0,0 +1,34 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel.DataAnnotations.Schema;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Text.Json.Serialization;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace Complex.Domain.Commons
|
||||
{
|
||||
/// <summary>
|
||||
/// دارای شماره / تاریخ ثبت / تاریخ ویرایش / حذف شده یا خیر / زمان حذف
|
||||
/// </summary>
|
||||
/// <typeparam name="TKey"></typeparam>
|
||||
public abstract class BaseEntity<TKey>
|
||||
{
|
||||
//[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
|
||||
public TKey Id { get; set; }
|
||||
//public DateTime? InsertTime { get; private set; } = DateTime.Now;
|
||||
//public DateTime? UpdateTime { get; private set; }
|
||||
//[JsonIgnore]
|
||||
//public bool IsRemoved { get; private set; } = false;
|
||||
//[JsonIgnore]
|
||||
//public DateTime? RemoveTime { get; private set; }
|
||||
}
|
||||
/// <summary>
|
||||
/// دارای شماره عددی پیش فرض اینت / تاریخ ثبت / تاریخ ویرایش / حذف شده یا خیر / زمان حذف
|
||||
/// </summary>
|
||||
/// <typeparam name="TKey"></typeparam>
|
||||
public abstract class BaseEntity : BaseEntity<int>
|
||||
{
|
||||
|
||||
}
|
||||
}
|
||||
12
Complex.Domain/Commons/BaseEntityNotId.cs
Normal file
12
Complex.Domain/Commons/BaseEntityNotId.cs
Normal file
@@ -0,0 +1,12 @@
|
||||
using System;
|
||||
|
||||
namespace Complex.Domain.Commons
|
||||
{
|
||||
public abstract class BaseEntityNotId
|
||||
{
|
||||
public DateTime InsertTime { get; set; } = DateTime.Now;
|
||||
public DateTime? UpdateTime { get; set; }
|
||||
public bool IsRemoved { get; set; } = false;
|
||||
public DateTime? RemoveTime { get; set; }
|
||||
}
|
||||
}
|
||||
21
Complex.Domain/Complex.Domain.csproj
Normal file
21
Complex.Domain/Complex.Domain.csproj
Normal file
@@ -0,0 +1,21 @@
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
|
||||
<PropertyGroup>
|
||||
<TargetFramework>net6.0</TargetFramework>
|
||||
<ImplicitUsings>enable</ImplicitUsings>
|
||||
<Nullable>enable</Nullable>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<None Remove="Entities\UnitAmountTrans.c--aaas" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<Compile Include="Entities\UnitAmountTrans.c--aaas" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<Folder Include="PersonEntites\" />
|
||||
</ItemGroup>
|
||||
|
||||
</Project>
|
||||
10
Complex.Domain/Entities/BasicTable.cs
Normal file
10
Complex.Domain/Entities/BasicTable.cs
Normal file
@@ -0,0 +1,10 @@
|
||||
using Complex.Domain.Commons;
|
||||
|
||||
namespace Complex.Domain.Entities
|
||||
{
|
||||
public class BasicTable: BaseEntity
|
||||
{
|
||||
//public int Id { set; get; }
|
||||
public string Title { set; get; }
|
||||
}
|
||||
}
|
||||
37
Complex.Domain/Entities/ChargeCycle.cs
Normal file
37
Complex.Domain/Entities/ChargeCycle.cs
Normal file
@@ -0,0 +1,37 @@
|
||||
using Complex.Domain.Commons;
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
|
||||
namespace Complex.Domain.Entities
|
||||
{
|
||||
/// <summary>
|
||||
/// مدیریت شارژ
|
||||
/// </summary>
|
||||
[Auditable]//UnitCharge
|
||||
public class CostCycle:BaseEntity<Guid>
|
||||
{
|
||||
public Guid ComplexId { set; get; }
|
||||
public virtual ComplexEntity Complex { set; get; }
|
||||
public string Title { set; get; }
|
||||
public DateOnly StartDate { set; get; }
|
||||
public DateOnly EndDate { set; get; }
|
||||
public long Amount { set; get; } = 0;
|
||||
/// <summary>
|
||||
/// روز از ماه برای تشویقی
|
||||
/// </summary>
|
||||
public int EncouragementDay { set; get; } = 0;
|
||||
/// <summary>
|
||||
/// مبلغ اجاره با احتساب تشویقی
|
||||
/// </summary>
|
||||
public long EncouragementAmount { set; get; } = 0;
|
||||
/// <summary>
|
||||
/// اگر برای واحدهای خاصی بود
|
||||
/// </summary>
|
||||
//public virtual List<UnitChargeCycle>? UnitChargeCycles { set; get; }
|
||||
public virtual ICollection<Unit> Units { set; get; }
|
||||
/// <summary>
|
||||
/// null یعنی شارژ
|
||||
/// </summary>
|
||||
public int? IncomeCostTitleId { set; get; }
|
||||
public virtual IncomeCostTitle? IncomeCostTitle { set; get; }
|
||||
}
|
||||
}
|
||||
12
Complex.Domain/Entities/Chat.cs
Normal file
12
Complex.Domain/Entities/Chat.cs
Normal file
@@ -0,0 +1,12 @@
|
||||
using Complex.Domain.Commons;
|
||||
|
||||
namespace Complex.Domain.Entities
|
||||
{
|
||||
public class Chat:BaseEntity<long>
|
||||
{
|
||||
public Guid ComplexId { set; get; }
|
||||
public string PersonMobileNumber { set; get; }
|
||||
public string Body { set; get; }
|
||||
public byte ChatTypeId { set; get; }
|
||||
}
|
||||
}
|
||||
19
Complex.Domain/Entities/City.cs
Normal file
19
Complex.Domain/Entities/City.cs
Normal file
@@ -0,0 +1,19 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
|
||||
namespace Complex.Domain.Entities
|
||||
{
|
||||
public partial class City
|
||||
{
|
||||
public City()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
public int CityId { get; set; }
|
||||
public int? ProvinceId { get; set; }
|
||||
public string? CityTitle { get; set; }
|
||||
|
||||
public virtual Province? Province { get; set; }
|
||||
}
|
||||
}
|
||||
43
Complex.Domain/Entities/ComplexEntity.cs
Normal file
43
Complex.Domain/Entities/ComplexEntity.cs
Normal file
@@ -0,0 +1,43 @@
|
||||
using Complex.Domain.Commons;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Collections.ObjectModel;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace Complex.Domain.Entities
|
||||
{
|
||||
[Auditable]
|
||||
public class ComplexEntity : BaseEntity<Guid>
|
||||
{
|
||||
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 Guid? ParentId { set; get; }
|
||||
public ComplexEntity? Parent { set; get; }
|
||||
public string? Description { set; get; }
|
||||
public int CityId { set; get; }
|
||||
public virtual City City { set; get; }
|
||||
public virtual Collection<ComplexManager> ComplexManagers { set; get; }
|
||||
public virtual ICollection<Unit> Units { set; get; }
|
||||
}
|
||||
}
|
||||
22
Complex.Domain/Entities/ComplexManager.cs
Normal file
22
Complex.Domain/Entities/ComplexManager.cs
Normal file
@@ -0,0 +1,22 @@
|
||||
using Complex.Domain.Commons;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace Complex.Domain.Entities
|
||||
{
|
||||
[Auditable]
|
||||
public class ComplexManager
|
||||
{
|
||||
public int Id { set; get; }
|
||||
public Guid ComplexId { set; get; }
|
||||
public virtual ComplexEntity Complex { set; get; }
|
||||
public string? ManagerMobileNumberId { set; get; }
|
||||
public Person? ManagerMobileNumber { set; get; }
|
||||
public string StartDate { set; get; }
|
||||
public string EndDate { set; get; }
|
||||
}
|
||||
}
|
||||
28
Complex.Domain/Entities/ComplexUnitEvent.cs
Normal file
28
Complex.Domain/Entities/ComplexUnitEvent.cs
Normal file
@@ -0,0 +1,28 @@
|
||||
using Complex.Domain.Commons;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace Complex.Domain.Entities
|
||||
{
|
||||
[Auditable]
|
||||
public class ComplexUnitEvent : BaseEntity<long>
|
||||
{
|
||||
/// <summary>
|
||||
/// اگر برای واحد بود
|
||||
/// </summary>
|
||||
public Guid? UnitId { set; get; }
|
||||
/// <summary>
|
||||
/// اگر برای مجتمع بود
|
||||
/// </summary>
|
||||
public int? ComplexId { set; get; }
|
||||
[MaxLength(10)]
|
||||
public string EventDate { set; get; }
|
||||
public string RegisterMobileNumber { set; get; }
|
||||
public string Body { set; get; }
|
||||
public string? Description { set; get; }
|
||||
}
|
||||
}
|
||||
32
Complex.Domain/Entities/Person.cs
Normal file
32
Complex.Domain/Entities/Person.cs
Normal file
@@ -0,0 +1,32 @@
|
||||
using Complex.Domain.Commons;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace Complex.Domain.Entities
|
||||
{
|
||||
[Auditable]
|
||||
public class Person : BaseEntity<string>
|
||||
{
|
||||
//[Key]
|
||||
//public string MobileNumber { set; get; }
|
||||
|
||||
public ICollection<UserToken> UserTokens { get; set; }
|
||||
public string? FirstName { get; set; }
|
||||
public string? LastName { get; set; }
|
||||
public byte? Gender { set;get; }
|
||||
//public int? MobileCode { set;get; }
|
||||
public byte[]? Avatar { set; get; }
|
||||
public bool IsActive { set; get; } = true;
|
||||
}
|
||||
public class ComplexPerson : BaseEntity<int>
|
||||
{
|
||||
public Guid ComplexId { set; get; }
|
||||
//public virtual ComplexEntity Complex { set; get; }
|
||||
public string? PersonMobileNumberId { set; get; }
|
||||
public Person? PersonMobileNumber { set; get; }
|
||||
}
|
||||
}
|
||||
11
Complex.Domain/Entities/Poster.cs
Normal file
11
Complex.Domain/Entities/Poster.cs
Normal file
@@ -0,0 +1,11 @@
|
||||
using Complex.Domain.Commons;
|
||||
|
||||
namespace Complex.Domain.Entities
|
||||
{
|
||||
public class Poster:BaseEntity<int>
|
||||
{
|
||||
public string RegisterMobileNumber { set; get; }
|
||||
public bool IsActive { set; get; } = false;
|
||||
public string ImagePath { set; get; }
|
||||
}
|
||||
}
|
||||
17
Complex.Domain/Entities/Province.cs
Normal file
17
Complex.Domain/Entities/Province.cs
Normal file
@@ -0,0 +1,17 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
|
||||
namespace Complex.Domain.Entities
|
||||
{
|
||||
public partial class Province
|
||||
{
|
||||
public Province()
|
||||
{
|
||||
Cities = new HashSet<City>();
|
||||
}
|
||||
|
||||
public int ProvinceId { get; set; }
|
||||
public string? ProvinceTitle { get; set; }
|
||||
public virtual ICollection<City> Cities { get; set; }
|
||||
}
|
||||
}
|
||||
13
Complex.Domain/Entities/SmsCode.cs
Normal file
13
Complex.Domain/Entities/SmsCode.cs
Normal file
@@ -0,0 +1,13 @@
|
||||
using Complex.Domain.Commons;
|
||||
|
||||
namespace Complex.Domain.Entities
|
||||
{
|
||||
public class SmsCode:BaseEntity
|
||||
{
|
||||
public string PhoneNumber { get; set; }
|
||||
public string Code { get; set; }
|
||||
public bool Used { get; set; }
|
||||
public int RequestCount { get; set; }
|
||||
public DateTime InsertDate { get; set; }
|
||||
}
|
||||
}
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user