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