Compare commits
294 Commits
5f7f63689c
...
Api
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
af2c71ea09 | ||
|
|
0cb9cfe9b2 | ||
|
|
558021ac6a | ||
|
|
0b59e6af15 | ||
|
|
eecdcc11c0 | ||
|
|
a63fed8c4a | ||
|
|
5ebcbcf774 | ||
|
|
2bdfdb366e | ||
|
|
b1a5333a25 | ||
|
|
bf24b3b36d | ||
|
|
e9b115e962 | ||
|
|
6f1e651559 | ||
|
|
143cc4943c | ||
|
|
33ae219fbf | ||
|
|
8f8a971a41 | ||
|
|
94058660b6 | ||
|
|
725559e7c1 | ||
|
|
aab30b3a4b | ||
|
|
d0e05df33a | ||
|
|
8eaa739e5e | ||
|
|
358544e56c | ||
|
|
fb52e99c68 | ||
|
|
8eb74fea15 | ||
|
|
00012cef52 | ||
|
|
ba994a5802 | ||
|
|
f4ec4f43c6 | ||
|
|
030a622252 | ||
|
|
3099881416 | ||
|
|
6449776348 | ||
|
|
e8f7f6b778 | ||
|
|
513b093c66 | ||
|
|
b0b8680125 | ||
|
|
2e63c7b80a | ||
|
|
255d13049e | ||
|
|
2714732750 | ||
|
|
2a78a9dc1a | ||
|
|
60b53f6e39 | ||
|
|
87f8517afb | ||
|
|
45a4a735ca | ||
|
|
95b09278aa | ||
|
|
6e5f41ec60 | ||
|
|
f2b3a26471 | ||
|
|
629ae1f0df | ||
|
|
b9db912441 | ||
|
|
b3d339d7fb | ||
|
|
33e3efeef5 | ||
| 38171581d3 | |||
|
|
0d66a79d49 | ||
|
|
35f948484e | ||
|
|
0ed24dff45 | ||
|
|
53061f29b7 | ||
|
|
4ec744a6bd | ||
|
|
c30c460a68 | ||
|
|
861efc48e0 | ||
|
|
eb16bda0ae | ||
|
|
3285be107e | ||
|
|
4818fa32f4 | ||
|
|
79e5d98ac6 | ||
|
|
73732cfe67 | ||
|
|
f2580c8e28 | ||
|
|
6f292ddac6 | ||
|
|
5c5f3eefa6 | ||
|
|
b99c503b58 | ||
|
|
2fd1878126 | ||
|
|
a8c449c101 | ||
|
|
80c0ec28d5 | ||
|
|
b133aa67d2 | ||
|
|
8122c9d841 | ||
|
|
75e2a3c558 | ||
|
|
3fa027dfd1 | ||
|
|
6942e55823 | ||
|
|
2314fd456c | ||
|
|
4415cb8128 | ||
|
|
b9943cf460 | ||
|
|
8d490cd3fe | ||
|
|
1e3780be38 | ||
|
|
92f68d8555 | ||
|
|
f0547828a6 | ||
|
|
b5afc9eef0 | ||
|
|
83a17a7e86 | ||
|
|
8e3a5b46da | ||
|
|
b15c34373b | ||
|
|
8284ec199f | ||
|
|
fcfe7c7e58 | ||
| d27b8484a2 | |||
| 5c637e3626 | |||
|
|
9b28c63317 | ||
|
|
a861f9f21c | ||
|
|
8fd51f4e42 | ||
|
|
146ab74524 | ||
|
|
1d38420ddf | ||
|
|
fcad12d3ef | ||
|
|
285e56ce03 | ||
| b2cb3ae173 | |||
| 8afdf13863 | |||
| 524086129a | |||
| 53d44700b8 | |||
|
|
84ff2bc8f1 | ||
| 3a84c65ce1 | |||
| a6c25ec8e8 | |||
|
|
c69cc41c93 | ||
| 423f14a348 | |||
| 1bb0f1f1b2 | |||
| 7b2eefa954 | |||
|
|
c80a5dbab7 | ||
|
|
256717c6f8 | ||
|
|
0d18d9aa1a | ||
|
|
14fbf309a7 | ||
|
|
e379727606 | ||
| 3303d4b54a | |||
| dba28b4d89 | |||
|
|
41ec3fb9cf | ||
|
|
7f98cf8f12 | ||
|
|
6c8385061e | ||
|
|
a49467ee44 | ||
| e9907650e9 | |||
| fb1db062f3 | |||
|
|
0e66c5e1a0 | ||
|
|
27a92f5796 | ||
| 6e5788074c | |||
| 831b426f9f | |||
| b29b1335d3 | |||
|
|
befcc70d46 | ||
|
|
f249df5b49 | ||
| 24d41ffc68 | |||
|
|
c6d4d7d473 | ||
| c594cbf523 | |||
| 996adec188 | |||
| 6f47948e40 | |||
|
|
d135eb73ea | ||
|
|
86143a044c | ||
| 8a6d4e0af6 | |||
| 3b2fd137e4 | |||
| 52976d8965 | |||
| ec97274d5e | |||
| c9183fb57e | |||
|
|
c4d21be4aa | ||
|
|
e9386708dc | ||
|
|
d70abb60d7 | ||
| 2098e843a5 | |||
| f6b6dfa046 | |||
| 36cdde7e6a | |||
|
|
34358a36c9 | ||
|
|
babecda188 | ||
|
|
98c3e7c821 | ||
|
|
5d91b29f2b | ||
|
|
c948498307 | ||
| 87b0d248a3 | |||
| a410d0c216 | |||
| a640f91703 | |||
|
|
99c8dcb764 | ||
| f35aca8e44 | |||
| 16d45c6dc4 | |||
| 45e746b194 | |||
|
|
d44935329f | ||
|
|
3a7fc7087b | ||
| 925f43214c | |||
|
|
c2fc7dabc1 | ||
|
|
dec5666eb7 | ||
| 9271cb5c66 | |||
| aee7e5ce82 | |||
| 97b4c7dc66 | |||
| e3b6d5f1c9 | |||
| 7c1fe65cf2 | |||
| f26fcba165 | |||
|
|
de2a6203df | ||
|
|
2208834a0e | ||
| de52a0be98 | |||
|
|
5bebec3fde | ||
|
|
cad808d73c | ||
| abef053f56 | |||
| 6469bf5a50 | |||
|
|
4fd5ef52ef | ||
|
|
61e2bdaaf5 | ||
| 8ab22d9948 | |||
|
|
17b5f5fee5 | ||
| 9e7e4ca655 | |||
|
|
100c9367ed | ||
| fdb6799c65 | |||
|
|
c81da3e787 | ||
|
|
d8c0471878 | ||
|
|
8418c2edc4 | ||
|
|
e109a41b90 | ||
|
|
158fc91a67 | ||
|
|
d1fb6e933d | ||
|
|
0811482370 | ||
| 24982e11d3 | |||
| 394d65db31 | |||
| 59deae29c2 | |||
|
|
5576ee5c24 | ||
|
|
46833f93da | ||
|
|
8d78ea548a | ||
|
|
ffbadc5a96 | ||
| e889b61d27 | |||
| b492aa39e8 | |||
| 2201ade168 | |||
|
|
baeeec183b | ||
|
|
3142a80b44 | ||
|
|
7c2354b386 | ||
|
|
175158a3d7 | ||
|
|
b79abcb175 | ||
|
|
7388fd8a81 | ||
|
|
a9c489b43d | ||
|
|
66ada45d29 | ||
|
|
04e51fe3b5 | ||
|
|
e486f20a5a | ||
|
|
2db6a9695c | ||
|
|
cea68fce49 | ||
|
|
3f2c0c5531 | ||
|
|
22f13aea0b | ||
| 0ec62e5e83 | |||
|
|
86a3a21d5b | ||
|
|
e02bc9adc5 | ||
|
|
39bc95731e | ||
|
|
759792b44b | ||
|
|
1409d30dfd | ||
|
|
ad9f747027 | ||
|
|
b021636913 | ||
|
|
3007a87104 | ||
|
|
d7eb8517f7 | ||
|
|
eaaab56421 | ||
|
|
7d763715cd | ||
|
|
7d1eb780a5 | ||
|
|
3e1758d35c | ||
|
|
88a9a62dd3 | ||
|
|
7bcc052ec6 | ||
|
|
6fd9b336a9 | ||
|
|
44d5225ff3 | ||
|
|
03e4f7e8c1 | ||
|
|
2c6512faa2 | ||
|
|
406212a1f0 | ||
|
|
53e93bd410 | ||
|
|
19f109254d | ||
|
|
9311d68a91 | ||
|
|
9e91214941 | ||
|
|
aded6b2839 | ||
|
|
08d40ae299 | ||
|
|
659f647b31 | ||
|
|
0ddcb3653a | ||
|
|
3e3eccf0f0 | ||
|
|
22d7c49379 | ||
|
|
ca7e46907c | ||
|
|
ed7e6a3dee | ||
|
|
40482e167a | ||
|
|
3807b213bb | ||
| 2719639333 | |||
|
|
3aa6c6d1ed | ||
|
|
0112772d3f | ||
|
|
7eb8255215 | ||
|
|
3650caabfa | ||
|
|
faac2bf707 | ||
|
|
f04749043e | ||
|
|
e8a9a674a1 | ||
|
|
d8b6b0f5e8 | ||
|
|
3058f95e0e | ||
|
|
8fa8c33415 | ||
|
|
9393993755 | ||
|
|
4d81de755e | ||
|
|
f02aa4e217 | ||
|
|
6cce3f5321 | ||
|
|
59112d9635 | ||
|
|
987c1b51fa | ||
|
|
5e186a2352 | ||
|
|
f68739cc22 | ||
|
|
db8bb247b3 | ||
|
|
9cc3bb07f1 | ||
|
|
4fd71690d5 | ||
|
|
8078d8bfdd | ||
|
|
3b38b80a28 | ||
|
|
0cd8d5b4cf | ||
|
|
4b23448cc1 | ||
|
|
aeebb983a4 | ||
|
|
2fffa67ff6 | ||
|
|
acb6764271 | ||
|
|
c0f9fb6389 | ||
|
|
e17ca40df6 | ||
|
|
abc8f408a7 | ||
|
|
b8937ef79c | ||
|
|
789b0fbc24 | ||
|
|
65ce181001 | ||
|
|
b8e831ce4d | ||
|
|
56def568b5 | ||
|
|
f4961a46eb | ||
|
|
ffa728d05d | ||
|
|
30c70c83b2 | ||
|
|
ec0996f53c | ||
|
|
541f60d6cd | ||
|
|
0aebb8c498 | ||
|
|
dbb0b2e53a | ||
|
|
7f900755be | ||
|
|
dc39f30c21 | ||
|
|
8dd9ee508a | ||
|
|
9f42af6a23 | ||
|
|
4449195aed |
@@ -15,6 +15,8 @@
|
|||||||
<PackageReference Include="PersianTools.Core" Version="2.0.4" />
|
<PackageReference Include="PersianTools.Core" Version="2.0.4" />
|
||||||
<PackageReference Include="System.Drawing.Common" Version="9.0.0" />
|
<PackageReference Include="System.Drawing.Common" Version="9.0.0" />
|
||||||
<PackageReference Include="MD.PersianDateTime.Standard" Version="2.5.0" />
|
<PackageReference Include="MD.PersianDateTime.Standard" Version="2.5.0" />
|
||||||
|
<PackageReference Include="Swashbuckle.AspNetCore.Annotations" Version="7.2.0" />
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|||||||
6
0_Framework/Application/AppSettingConfiguration.cs
Normal file
6
0_Framework/Application/AppSettingConfiguration.cs
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
namespace _0_Framework.Application;
|
||||||
|
|
||||||
|
public class AppSettingConfiguration
|
||||||
|
{
|
||||||
|
public string Domain { get; set; }
|
||||||
|
}
|
||||||
@@ -12,65 +12,67 @@ namespace _0_Framework.Application;
|
|||||||
|
|
||||||
public class AuthHelper : IAuthHelper
|
public class AuthHelper : IAuthHelper
|
||||||
{
|
{
|
||||||
private readonly IHttpContextAccessor _contextAccessor;
|
private readonly IHttpContextAccessor _contextAccessor;
|
||||||
|
|
||||||
public AuthHelper(IHttpContextAccessor contextAccessor)
|
|
||||||
{
|
|
||||||
_contextAccessor = contextAccessor;
|
|
||||||
}
|
|
||||||
|
|
||||||
public AuthViewModel CurrentAccountInfo()
|
public AuthHelper(IHttpContextAccessor contextAccessor)
|
||||||
{
|
{
|
||||||
var result = new AuthViewModel();
|
_contextAccessor = contextAccessor;
|
||||||
if (!IsAuthenticated())
|
}
|
||||||
return result;
|
|
||||||
|
|
||||||
var claims = _contextAccessor.HttpContext.User.Claims.ToList();
|
public AuthViewModel CurrentAccountInfo()
|
||||||
result.Id = long.Parse(claims.FirstOrDefault(x => x.Type == "AccountId").Value);
|
{
|
||||||
result.Username = claims.FirstOrDefault(x => x.Type == "Username")?.Value;
|
var result = new AuthViewModel();
|
||||||
result.ProfilePhoto = claims.FirstOrDefault(x => x.Type == "ProfilePhoto")?.Value;
|
if (!IsAuthenticated())
|
||||||
result.RoleId = long.Parse(claims.FirstOrDefault(x => x.Type == ClaimTypes.Role)?.Value);
|
return result;
|
||||||
result.Fullname = claims.FirstOrDefault(x => x.Type == ClaimTypes.Name)?.Value;
|
|
||||||
result.Role = claims.FirstOrDefault(x => x.Type == "RoleName")?.Value;
|
var claims = _contextAccessor.HttpContext.User.Claims.ToList();
|
||||||
result.ClientAriaPermission =claims.FirstOrDefault(x => x.Type == "ClientAriaPermission").Value;
|
result.Id = long.Parse(claims.FirstOrDefault(x => x.Type == "AccountId").Value);
|
||||||
result.AdminAreaPermission = claims.FirstOrDefault(x => x.Type == "AdminAreaPermission").Value;
|
result.Username = claims.FirstOrDefault(x => x.Type == "Username")?.Value;
|
||||||
result.PositionValue = !string.IsNullOrWhiteSpace(claims.FirstOrDefault(x => x.Type == "PositionValue")?.Value) ? int.Parse(claims.FirstOrDefault(x => x.Type == "PositionValue")?.Value) : 0;
|
result.ProfilePhoto = claims.FirstOrDefault(x => x.Type == "ProfilePhoto")?.Value;
|
||||||
result.WorkshopList = Tools.DeserializeFromBsonList<WorkshopClaim>(claims.FirstOrDefault(x => x is { Type: "workshopList" })?.Value);
|
result.RoleId = long.Parse(claims.FirstOrDefault(x => x.Type == ClaimTypes.Role)?.Value);
|
||||||
result.WorkshopSlug = claims.FirstOrDefault(x => x is { Type: "WorkshopSlug" }).Value;
|
result.Fullname = claims.FirstOrDefault(x => x.Type == ClaimTypes.Name)?.Value;
|
||||||
result.Mobile = claims.FirstOrDefault(x => x is { Type: "Mobile" }).Value;
|
result.Role = claims.FirstOrDefault(x => x.Type == "RoleName")?.Value;
|
||||||
|
result.ClientAriaPermission = claims.FirstOrDefault(x => x.Type == "ClientAriaPermission").Value;
|
||||||
|
result.AdminAreaPermission = claims.FirstOrDefault(x => x.Type == "AdminAreaPermission").Value;
|
||||||
|
result.PositionValue = !string.IsNullOrWhiteSpace(claims.FirstOrDefault(x => x.Type == "PositionValue")?.Value) ? int.Parse(claims.FirstOrDefault(x => x.Type == "PositionValue")?.Value) : 0;
|
||||||
|
result.WorkshopList = Tools.DeserializeFromBsonList<WorkshopClaim>(claims.FirstOrDefault(x => x is { Type: "workshopList" })?.Value);
|
||||||
|
result.WorkshopSlug = claims.FirstOrDefault(x => x is { Type: "WorkshopSlug" }).Value;
|
||||||
|
result.Mobile = claims.FirstOrDefault(x => x is { Type: "Mobile" }).Value;
|
||||||
result.SubAccountId = long.Parse(claims.FirstOrDefault(x => x.Type == "SubAccountId").Value);
|
result.SubAccountId = long.Parse(claims.FirstOrDefault(x => x.Type == "SubAccountId").Value);
|
||||||
result.WorkshopName = claims.FirstOrDefault(x => x is { Type: "WorkshopName" })?.Value;
|
result.WorkshopName = claims.FirstOrDefault(x => x is { Type: "WorkshopName" })?.Value;
|
||||||
return result;
|
result.Permissions = Tools.DeserializeFromBsonList<int>(claims.FirstOrDefault(x => x is { Type: "permissions" })?.Value);
|
||||||
}
|
result.RoleName = claims.FirstOrDefault(x => x is { Type: "RoleName" })?.Value;
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
public List<int> GetPermissions()
|
public List<int> GetPermissions()
|
||||||
{
|
{
|
||||||
if (!IsAuthenticated())
|
if (!IsAuthenticated())
|
||||||
return new List<int>();
|
return new List<int>();
|
||||||
|
|
||||||
var permissions = _contextAccessor.HttpContext.User.Claims.FirstOrDefault(x => x.Type == "permissions")
|
var permissions = _contextAccessor.HttpContext.User.Claims.FirstOrDefault(x => x.Type == "permissions")
|
||||||
?.Value;
|
?.Value;
|
||||||
return Tools.DeserializeFromBsonList<int>(permissions); //Mahan
|
return Tools.DeserializeFromBsonList<int>(permissions); //Mahan
|
||||||
}
|
}
|
||||||
|
|
||||||
public long CurrentAccountId()
|
public long CurrentAccountId()
|
||||||
{
|
{
|
||||||
return IsAuthenticated()
|
return IsAuthenticated()
|
||||||
? long.Parse(_contextAccessor.HttpContext.User.Claims.First(x => x.Type == "AccountId")?.Value)
|
? long.Parse(_contextAccessor.HttpContext.User.Claims.First(x => x.Type == "AccountId")?.Value)
|
||||||
: 0;
|
: 0;
|
||||||
}
|
}
|
||||||
public long CurrentSubAccountId()
|
public long CurrentSubAccountId()
|
||||||
{
|
{
|
||||||
return IsAuthenticated()
|
return IsAuthenticated()
|
||||||
? long.Parse(_contextAccessor.HttpContext.User.Claims.First(x => x.Type == "SubAccountId")?.Value)
|
? long.Parse(_contextAccessor.HttpContext.User.Claims.First(x => x.Type == "SubAccountId")?.Value)
|
||||||
: 0;
|
: 0;
|
||||||
}
|
}
|
||||||
public string CurrentAccountMobile()
|
public string CurrentAccountMobile()
|
||||||
{
|
{
|
||||||
return IsAuthenticated()
|
return IsAuthenticated()
|
||||||
? _contextAccessor.HttpContext.User.Claims.First(x => x.Type == "Mobile")?.Value
|
? _contextAccessor.HttpContext.User.Claims.First(x => x.Type == "Mobile")?.Value
|
||||||
: "";
|
: "";
|
||||||
}
|
}
|
||||||
|
|
||||||
#region Vafa
|
#region Vafa
|
||||||
|
|
||||||
@@ -111,160 +113,166 @@ public class AuthHelper : IAuthHelper
|
|||||||
}
|
}
|
||||||
|
|
||||||
public string GetWorkshopSlug()
|
public string GetWorkshopSlug()
|
||||||
{
|
{
|
||||||
return CurrentAccountInfo().ClientAriaPermission == "true"
|
return CurrentAccountInfo().ClientAriaPermission == "true"
|
||||||
? _contextAccessor.HttpContext.User.Claims.First(x => x.Type == "WorkshopSlug")?.Value
|
? _contextAccessor.HttpContext.User.Claims.First(x => x.Type == "WorkshopSlug")?.Value
|
||||||
: "";
|
: "";
|
||||||
}
|
}
|
||||||
public string GetWorkshopName()
|
public string GetWorkshopName()
|
||||||
{
|
{
|
||||||
var workshopName = _contextAccessor.HttpContext.User.Claims.FirstOrDefault(x => x.Type == "ClientAriaPermission")?.Value == "true";
|
var workshopName = _contextAccessor.HttpContext.User.Claims.FirstOrDefault(x => x.Type == "ClientAriaPermission")?.Value == "true";
|
||||||
if (workshopName)
|
if (workshopName)
|
||||||
{
|
{
|
||||||
return _contextAccessor.HttpContext.User.Claims.First(x => x.Type == "WorkshopName")?.Value;
|
return _contextAccessor.HttpContext.User.Claims.First(x => x.Type == "WorkshopName")?.Value;
|
||||||
}
|
}
|
||||||
|
|
||||||
return "";
|
return "";
|
||||||
}
|
}
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
|
|
||||||
public string CurrentAccountRole()
|
public string CurrentAccountRole()
|
||||||
{
|
{
|
||||||
if (IsAuthenticated())
|
if (IsAuthenticated())
|
||||||
return _contextAccessor.HttpContext.User.Claims.FirstOrDefault(x => x.Type == ClaimTypes.Role)?.Value;
|
return _contextAccessor.HttpContext.User.Claims.FirstOrDefault(x => x.Type == ClaimTypes.Role)?.Value;
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
public bool IsAuthenticated()
|
public bool IsAuthenticated()
|
||||||
{
|
{
|
||||||
return _contextAccessor.HttpContext.User.Identity.IsAuthenticated;
|
return _contextAccessor.HttpContext.User.Identity.IsAuthenticated;
|
||||||
//var claims = _contextAccessor.HttpContext.User.Claims.ToList();
|
//var claims = _contextAccessor.HttpContext.User.Claims.ToList();
|
||||||
//if (claims.Count > 0)
|
//if (claims.Count > 0)
|
||||||
// return true;
|
// return true;
|
||||||
//return false;
|
//return false;
|
||||||
//return claims.Count > 0;
|
//return claims.Count > 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void Signin(AuthViewModel account)
|
public void Signin(AuthViewModel account)
|
||||||
{
|
{
|
||||||
#region MahanChanges
|
#region MahanChanges
|
||||||
|
|
||||||
var permissions = account.Permissions is { Count: > 0 } ? Tools.SerializeToBson(account.Permissions) : "";
|
if (account.Id == 322)
|
||||||
var workshopBson = account.WorkshopList is { Count: > 0 } ? Tools.SerializeToBson(account.WorkshopList) : "";
|
account.Permissions.AddRange([3060301, 30603, 30604, 30605]);
|
||||||
var slug = account.WorkshopSlug ?? "";
|
|
||||||
|
|
||||||
#endregion
|
var permissions = account.Permissions is { Count: > 0 } ? Tools.SerializeToBson(account.Permissions) : "";
|
||||||
|
|
||||||
var claims = new List<Claim>
|
|
||||||
{
|
|
||||||
new Claim("AccountId", account.Id.ToString()),
|
var workshopBson = account.WorkshopList is { Count: > 0 } ? Tools.SerializeToBson(account.WorkshopList) : "";
|
||||||
new Claim(ClaimTypes.Name, account.Fullname),
|
var slug = account.WorkshopSlug ?? "";
|
||||||
new Claim(ClaimTypes.Role, account.RoleId.ToString()),
|
|
||||||
new Claim("Username", account.Username), // Or Use ClaimTypes.NameIdentifier
|
#endregion
|
||||||
|
|
||||||
|
var claims = new List<Claim>
|
||||||
|
{
|
||||||
|
new Claim("AccountId", account.Id.ToString()),
|
||||||
|
new Claim(ClaimTypes.Name, account.Fullname),
|
||||||
|
new Claim(ClaimTypes.Role, account.RoleId.ToString()),
|
||||||
|
new Claim("Username", account.Username), // Or Use ClaimTypes.NameIdentifier
|
||||||
new Claim("permissions", permissions),
|
new Claim("permissions", permissions),
|
||||||
new Claim("Mobile", account.Mobile),
|
new Claim("Mobile", account.Mobile),
|
||||||
new Claim("ProfilePhoto", account.ProfilePhoto ),
|
new Claim("ProfilePhoto", account.ProfilePhoto ),
|
||||||
new Claim("RoleName", account.RoleName),
|
new Claim("RoleName", account.RoleName),
|
||||||
new Claim("SubAccountId", account.SubAccountId.ToString()),
|
new Claim("SubAccountId", account.SubAccountId.ToString()),
|
||||||
new Claim("AdminAreaPermission", account.AdminAreaPermission.ToString()),
|
new Claim("AdminAreaPermission", account.AdminAreaPermission.ToString()),
|
||||||
new Claim("ClientAriaPermission", account.ClientAriaPermission.ToString()),
|
new Claim("ClientAriaPermission", account.ClientAriaPermission.ToString()),
|
||||||
new Claim("IsCamera", "false"),
|
new Claim("IsCamera", "false"),
|
||||||
new Claim("PositionValue",account.PositionValue.ToString()),
|
new Claim("PositionValue",account.PositionValue.ToString()),
|
||||||
//mahanChanges
|
//mahanChanges
|
||||||
new("workshopList",workshopBson),
|
new("workshopList",workshopBson),
|
||||||
new("WorkshopSlug",slug),
|
new("WorkshopSlug",slug),
|
||||||
new("WorkshopName",account.WorkshopName??"")
|
new("WorkshopName",account.WorkshopName??"")
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
var claimsIdentity = new ClaimsIdentity(claims, CookieAuthenticationDefaults.AuthenticationScheme);
|
var claimsIdentity = new ClaimsIdentity(claims, CookieAuthenticationDefaults.AuthenticationScheme);
|
||||||
|
|
||||||
var authProperties = new AuthenticationProperties
|
var authProperties = new AuthenticationProperties
|
||||||
{
|
{
|
||||||
ExpiresUtc = DateTimeOffset.UtcNow.AddDays(1)
|
ExpiresUtc = DateTimeOffset.UtcNow.AddDays(1)
|
||||||
};
|
};
|
||||||
|
|
||||||
_contextAccessor.HttpContext.SignInAsync(CookieAuthenticationDefaults.AuthenticationScheme,
|
_contextAccessor.HttpContext.SignInAsync(CookieAuthenticationDefaults.AuthenticationScheme,
|
||||||
new ClaimsPrincipal(claimsIdentity),
|
new ClaimsPrincipal(claimsIdentity),
|
||||||
authProperties);
|
authProperties);
|
||||||
}
|
}
|
||||||
|
|
||||||
#region Camera
|
#region Camera
|
||||||
public void CameraSignIn(CameraAuthViewModel account)
|
public void CameraSignIn(CameraAuthViewModel account)
|
||||||
{
|
{
|
||||||
var claims = new List<Claim>
|
var claims = new List<Claim>
|
||||||
{
|
{
|
||||||
new Claim("AccountId", account.Id.ToString()),
|
new Claim("AccountId", account.Id.ToString()),
|
||||||
new Claim("Username", account.Username), // Or Use ClaimTypes.NameIdentifier
|
new Claim("Username", account.Username), // Or Use ClaimTypes.NameIdentifier
|
||||||
new Claim("WorkshopId", account.WorkshopId.ToString()),
|
new Claim("WorkshopId", account.WorkshopId.ToString()),
|
||||||
new Claim("WorkshopName", account.WorkshopName),
|
new Claim("WorkshopName", account.WorkshopName),
|
||||||
new Claim("Mobile", account.Mobile),
|
new Claim("Mobile", account.Mobile),
|
||||||
new Claim("AccountId", account.AccountId.ToString()),
|
new Claim("AccountId", account.AccountId.ToString()),
|
||||||
new Claim("IsActiveString", account.IsActiveString),
|
new Claim("IsActiveString", account.IsActiveString),
|
||||||
new Claim("IsCamera", "true"),
|
new Claim("IsCamera", "true"),
|
||||||
|
|
||||||
};
|
};
|
||||||
var claimsIdentity = new ClaimsIdentity(claims, CookieAuthenticationDefaults.AuthenticationScheme);
|
var claimsIdentity = new ClaimsIdentity(claims, CookieAuthenticationDefaults.AuthenticationScheme);
|
||||||
|
|
||||||
var authProperties = new AuthenticationProperties
|
var authProperties = new AuthenticationProperties
|
||||||
{
|
{
|
||||||
|
|
||||||
//ExpiresUtc = DateTimeOffset.UtcNow.AddDays(30)
|
//ExpiresUtc = DateTimeOffset.UtcNow.AddDays(30)
|
||||||
ExpiresUtc = new DateTimeOffset(year: 2100, month: 1, day: 1, hour: 0, minute: 0, second: 0, offset: TimeSpan.Zero)
|
ExpiresUtc = new DateTimeOffset(year: 2100, month: 1, day: 1, hour: 0, minute: 0, second: 0, offset: TimeSpan.Zero)
|
||||||
};
|
};
|
||||||
|
|
||||||
_contextAccessor.HttpContext.SignInAsync(CookieAuthenticationDefaults.AuthenticationScheme,
|
_contextAccessor.HttpContext.SignInAsync(CookieAuthenticationDefaults.AuthenticationScheme,
|
||||||
new ClaimsPrincipal(claimsIdentity),
|
new ClaimsPrincipal(claimsIdentity),
|
||||||
authProperties);
|
authProperties);
|
||||||
}
|
}
|
||||||
|
|
||||||
public CameraAuthViewModel CameraAccountInfo()
|
public CameraAuthViewModel CameraAccountInfo()
|
||||||
{
|
{
|
||||||
var result = new CameraAuthViewModel();
|
var result = new CameraAuthViewModel();
|
||||||
if (!IsAuthenticated())
|
if (!IsAuthenticated())
|
||||||
return result;
|
return result;
|
||||||
|
|
||||||
var claims = _contextAccessor.HttpContext.User.Claims.ToList();
|
var claims = _contextAccessor.HttpContext.User.Claims.ToList();
|
||||||
result.Id = long.Parse(claims.FirstOrDefault(x => x.Type == "AccountId").Value);
|
result.Id = long.Parse(claims.FirstOrDefault(x => x.Type == "AccountId").Value);
|
||||||
result.Username = claims.FirstOrDefault(x => x.Type == "Username")?.Value;
|
result.Username = claims.FirstOrDefault(x => x.Type == "Username")?.Value;
|
||||||
result.WorkshopId = long.Parse(claims.FirstOrDefault(x => x.Type == "WorkshopId")?.Value);
|
result.WorkshopId = long.Parse(claims.FirstOrDefault(x => x.Type == "WorkshopId")?.Value);
|
||||||
result.WorkshopName = claims.FirstOrDefault(x => x.Type == "WorkshopName").Value;
|
result.WorkshopName = claims.FirstOrDefault(x => x.Type == "WorkshopName").Value;
|
||||||
result.Mobile = claims.FirstOrDefault(x => x.Type == "Mobile").Value;
|
result.Mobile = claims.FirstOrDefault(x => x.Type == "Mobile").Value;
|
||||||
result.AccountId = long.Parse(claims.FirstOrDefault(x => x.Type == "AccountId")?.Value);
|
result.AccountId = long.Parse(claims.FirstOrDefault(x => x.Type == "AccountId")?.Value);
|
||||||
result.IsActiveString = claims.FirstOrDefault(x => x.Type == "IsActiveString").Value;
|
result.IsActiveString = claims.FirstOrDefault(x => x.Type == "IsActiveString").Value;
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
public void SignOut()
|
public void SignOut()
|
||||||
{
|
{
|
||||||
_contextAccessor.HttpContext.SignOutAsync(CookieAuthenticationDefaults.AuthenticationScheme);
|
_contextAccessor.HttpContext.SignOutAsync(CookieAuthenticationDefaults.AuthenticationScheme);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
#region Pooya
|
#region Pooya
|
||||||
|
|
||||||
public (long Id, UserType userType, long roleId) GetUserTypeWithId()
|
public (long Id, UserType userType, long roleId) GetUserTypeWithId()
|
||||||
{
|
{
|
||||||
if (!IsAuthenticated())
|
if (!IsAuthenticated())
|
||||||
return (0, UserType.Anonymous, 0);
|
return (0, UserType.Anonymous, 0);
|
||||||
var claims = _contextAccessor.HttpContext.User.Claims.ToList();
|
var claims = _contextAccessor.HttpContext.User.Claims.ToList();
|
||||||
|
|
||||||
var subAccountId = long.Parse(claims.FirstOrDefault(x => x.Type == "SubAccountId")?.Value ?? "0");
|
var subAccountId = long.Parse(claims.FirstOrDefault(x => x.Type == "SubAccountId")?.Value ?? "0");
|
||||||
if (subAccountId > 0)
|
if (subAccountId > 0)
|
||||||
return (subAccountId, UserType.SubAccount, 0);
|
return (subAccountId, UserType.SubAccount, 0);
|
||||||
|
|
||||||
var id = long.Parse(_contextAccessor.HttpContext.User.Claims.First(x => x.Type == "AccountId")?.Value);
|
var id = long.Parse(_contextAccessor.HttpContext.User.Claims.First(x => x.Type == "AccountId")?.Value);
|
||||||
if (claims.FirstOrDefault(x => x.Type == "AdminAreaPermission")?.Value == "true")
|
if (claims.FirstOrDefault(x => x.Type == "AdminAreaPermission")?.Value == "true")
|
||||||
{
|
{
|
||||||
var roleId = long.Parse(claims.FirstOrDefault(x => x.Type == ClaimTypes.Role)?.Value ?? "0");
|
var roleId = long.Parse(claims.FirstOrDefault(x => x.Type == ClaimTypes.Role)?.Value ?? "0");
|
||||||
return (id, UserType.Admin, roleId);
|
return (id, UserType.Admin, roleId);
|
||||||
}
|
}
|
||||||
|
|
||||||
return (id, UserType.Client, 0);
|
return (id, UserType.Client, 0);
|
||||||
}
|
}
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
8
0_Framework/Application/Enums/ActivationStatus.cs
Normal file
8
0_Framework/Application/Enums/ActivationStatus.cs
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
namespace _0_Framework.Application.Enums;
|
||||||
|
|
||||||
|
public enum ActivationStatus
|
||||||
|
{
|
||||||
|
None = 0,
|
||||||
|
Active = 1,
|
||||||
|
DeActive = 2
|
||||||
|
}
|
||||||
8
0_Framework/Application/Enums/LegalType.cs
Normal file
8
0_Framework/Application/Enums/LegalType.cs
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
namespace _0_Framework.Application.Enums;
|
||||||
|
|
||||||
|
public enum LegalType
|
||||||
|
{
|
||||||
|
None = 0,
|
||||||
|
Real = 1,
|
||||||
|
Legal = 2
|
||||||
|
}
|
||||||
@@ -4,5 +4,5 @@ public enum IsActive
|
|||||||
{
|
{
|
||||||
False,
|
False,
|
||||||
True,
|
True,
|
||||||
|
None
|
||||||
}
|
}
|
||||||
@@ -51,4 +51,11 @@ public class OperationResult<T>
|
|||||||
Message = message;
|
Message = message;
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
public OperationResult<T> Failed(string message, T data)
|
||||||
|
{
|
||||||
|
IsSuccedded = false;
|
||||||
|
Message = message;
|
||||||
|
Data = data;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
@@ -0,0 +1,100 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Net.Http;
|
||||||
|
using System.Net.Http.Json;
|
||||||
|
using System.Security.Policy;
|
||||||
|
using System.Security.Principal;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
using Microsoft.Extensions.Options;
|
||||||
|
|
||||||
|
namespace _0_Framework.Application.PaymentGateway;
|
||||||
|
|
||||||
|
public class AqayePardakhtPaymentGateway:IPaymentGateway
|
||||||
|
{
|
||||||
|
private static string _pin = "86EAF2C4D052F7D8759F";
|
||||||
|
private const string AccountNumber = "AP.1042276242";
|
||||||
|
private const string EncryptedKey = "130D2@D2923";
|
||||||
|
|
||||||
|
private readonly HttpClient _httpClient;
|
||||||
|
|
||||||
|
public AqayePardakhtPaymentGateway(IHttpClientFactory httpClientFactory,IOptions<AppSettingConfiguration> appSetting)
|
||||||
|
{
|
||||||
|
_httpClient = httpClientFactory.CreateClient();
|
||||||
|
|
||||||
|
if (appSetting.Value.Domain == ".dad-mehr.ir")
|
||||||
|
{
|
||||||
|
_pin = "7349F84E81AB584862D9";
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public async Task<PaymentGatewayResponse> Create(CreatePaymentGatewayRequest command,CancellationToken cancellationToken =default)
|
||||||
|
{
|
||||||
|
var response = await _httpClient.PostAsJsonAsync("https://panel.aqayepardakht.ir/api/v2/create", new
|
||||||
|
{
|
||||||
|
pin = _pin,
|
||||||
|
amount = command.Amount,
|
||||||
|
callback = command.CallBackUrl,
|
||||||
|
card_number = command.CardNumber,
|
||||||
|
invoice_id = command.InvoiceId,
|
||||||
|
mobile = command.Mobile,
|
||||||
|
email = command.Email,
|
||||||
|
description = command.Description,
|
||||||
|
}, cancellationToken: cancellationToken);
|
||||||
|
|
||||||
|
var result = await response.Content.ReadFromJsonAsync<PaymentGatewayResponse>(cancellationToken: cancellationToken);
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
public string GetStartPayUrl(string transactionId) =>
|
||||||
|
$"https://panel.aqayepardakht.ir/startpay/{transactionId}";
|
||||||
|
|
||||||
|
public async Task<PaymentGatewayResponse> Verify(VerifyPaymentGateWayRequest command, CancellationToken cancellationToken = default)
|
||||||
|
{
|
||||||
|
var response = await _httpClient.PostAsJsonAsync("https://panel.aqayepardakht.ir/api/v2/verify", new
|
||||||
|
{
|
||||||
|
pin = _pin,
|
||||||
|
amount = command.Amount,
|
||||||
|
transid = command.TransactionId,
|
||||||
|
}, cancellationToken: cancellationToken);
|
||||||
|
|
||||||
|
var result = await response.Content.ReadFromJsonAsync<PaymentGatewayResponse>(cancellationToken: cancellationToken);
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
public async Task<PaymentGatewayResponse> CreateSandBox(CreatePaymentGatewayRequest command, CancellationToken cancellationToken = default)
|
||||||
|
{
|
||||||
|
var response = await _httpClient.PostAsJsonAsync("https://panel.aqayepardakht.ir/api/v2/create", new
|
||||||
|
{
|
||||||
|
pin = "sandbox",
|
||||||
|
amount = command.Amount,
|
||||||
|
callback = command.CallBackUrl,
|
||||||
|
card_number = command.Amount,
|
||||||
|
invoice_id = command.InvoiceId,
|
||||||
|
mobile = command.Mobile,
|
||||||
|
email = command.Email,
|
||||||
|
description = command.Email,
|
||||||
|
}, cancellationToken: cancellationToken);
|
||||||
|
|
||||||
|
var result = await response.Content.ReadFromJsonAsync<PaymentGatewayResponse>(cancellationToken: cancellationToken);
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
public string GetStartPaySandBoxUrl(string transactionId) =>
|
||||||
|
$"https://panel.aqayepardakht.ir/startpay/sandbox/{transactionId}";
|
||||||
|
|
||||||
|
public async Task<WalletAmountResponse> GetWalletAmount(CancellationToken cancellationToken)
|
||||||
|
{
|
||||||
|
var response =await _httpClient.PostAsJsonAsync("https://panel.aqayepardakht.ir/api/v2/getmoney", new
|
||||||
|
{
|
||||||
|
account=AccountNumber,
|
||||||
|
code = EncryptedKey
|
||||||
|
}, cancellationToken: cancellationToken);
|
||||||
|
var jsonString = await response.Content.ReadAsStringAsync(cancellationToken);
|
||||||
|
var result = await response.Content.ReadFromJsonAsync<WalletAmountResponse>(cancellationToken);
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
}
|
||||||
60
0_Framework/Application/PaymentGateway/IPaymentGateway.cs
Normal file
60
0_Framework/Application/PaymentGateway/IPaymentGateway.cs
Normal file
@@ -0,0 +1,60 @@
|
|||||||
|
using Microsoft.AspNetCore.Server.HttpSys;
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Text.Json.Serialization;
|
||||||
|
using System.Threading;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace _0_Framework.Application.PaymentGateway;
|
||||||
|
|
||||||
|
public interface IPaymentGateway
|
||||||
|
{
|
||||||
|
Task<PaymentGatewayResponse> Create(CreatePaymentGatewayRequest command, CancellationToken cancellationToken =default);
|
||||||
|
|
||||||
|
string GetStartPayUrl(string transactionId);
|
||||||
|
Task<PaymentGatewayResponse> Verify(VerifyPaymentGateWayRequest command, CancellationToken cancellationToken=default);
|
||||||
|
Task<PaymentGatewayResponse> CreateSandBox(CreatePaymentGatewayRequest command, CancellationToken cancellationToken=default);
|
||||||
|
string GetStartPaySandBoxUrl(string transactionId);
|
||||||
|
Task<WalletAmountResponse> GetWalletAmount(CancellationToken cancellationToken);
|
||||||
|
|
||||||
|
}
|
||||||
|
public class PaymentGatewayResponse
|
||||||
|
{
|
||||||
|
[JsonPropertyName("status")]
|
||||||
|
public string Status { get; set; }
|
||||||
|
|
||||||
|
[JsonPropertyName("code")]
|
||||||
|
public int? ErrorCode { get; set; }
|
||||||
|
|
||||||
|
[JsonPropertyName("transid")]
|
||||||
|
public string TransactionId { get; set; }
|
||||||
|
}
|
||||||
|
|
||||||
|
public class WalletAmountResponse
|
||||||
|
{
|
||||||
|
[JsonPropertyName("status")]
|
||||||
|
public string Status { get; set; }
|
||||||
|
[JsonPropertyName("money")]
|
||||||
|
public double Amount { get; set; }
|
||||||
|
[JsonPropertyName("code")]
|
||||||
|
public int Code { get; set; }
|
||||||
|
}
|
||||||
|
|
||||||
|
public class CreatePaymentGatewayRequest
|
||||||
|
{
|
||||||
|
public double Amount { get; set; }
|
||||||
|
public string CallBackUrl { get; set; }
|
||||||
|
public string InvoiceId { get; set; }
|
||||||
|
public string CardNumber { get; set; }
|
||||||
|
public string Mobile { get; set; }
|
||||||
|
public string Email { get; set; }
|
||||||
|
public string Description { get; set; }
|
||||||
|
}
|
||||||
|
|
||||||
|
public class VerifyPaymentGateWayRequest
|
||||||
|
{
|
||||||
|
public string TransactionId { get; set; }
|
||||||
|
public double Amount { get; set; }
|
||||||
|
}
|
||||||
7
0_Framework/Application/SelectListViewModel.cs
Normal file
7
0_Framework/Application/SelectListViewModel.cs
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
namespace _0_Framework.Application;
|
||||||
|
|
||||||
|
public class SelectListViewModel
|
||||||
|
{
|
||||||
|
public long Id { get; set; }
|
||||||
|
public string Text { get; set; }
|
||||||
|
}
|
||||||
@@ -385,11 +385,27 @@
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
public const int SetWorkshopWorkingHoursPermissionCode = 10606;
|
public const int SetWorkshopWorkingHoursPermissionCode = 10606;
|
||||||
|
|
||||||
|
#region حساب کاربری دوربین
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// تنظیمات حساب کاربری دوربین
|
/// تنظیمات حساب کاربری دوربین
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public const int CameraAccountSettingsPermissionCode = 10607;
|
public const int CameraAccountSettingsPermissionCode = 10607;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// فعال/غیرفعال اکانت دوربین
|
||||||
|
/// </summary>
|
||||||
|
public const int CameraAccountActivationBtnPermissionCode = 1060701;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// ویرایش اکانت دوربین
|
||||||
|
/// </summary>
|
||||||
|
public const int CameraAccountEditPermissionCode = 1060702;
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
#region کارپوشه
|
#region کارپوشه
|
||||||
@@ -744,6 +760,22 @@
|
|||||||
Code = CameraAccountSettingsPermissionCode,
|
Code = CameraAccountSettingsPermissionCode,
|
||||||
ParentId = RollCallOperationsPermissionCode
|
ParentId = RollCallOperationsPermissionCode
|
||||||
};
|
};
|
||||||
|
|
||||||
|
public static SubAccountPermissionDto CameraAccountActivationBtn { get; } = new()
|
||||||
|
{
|
||||||
|
Id = CameraAccountActivationBtnPermissionCode,
|
||||||
|
Name = "فعال/غیرفعال حساب کاربری دوربین",
|
||||||
|
Code = CameraAccountActivationBtnPermissionCode,
|
||||||
|
ParentId = CameraAccountSettingsPermissionCode
|
||||||
|
};
|
||||||
|
|
||||||
|
public static SubAccountPermissionDto CameraAccountEdit { get; } = new()
|
||||||
|
{
|
||||||
|
Id = CameraAccountEditPermissionCode,
|
||||||
|
Name = "ویراش حساب کاربری دوربین",
|
||||||
|
Code = CameraAccountEditPermissionCode,
|
||||||
|
ParentId = CameraAccountSettingsPermissionCode
|
||||||
|
};
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
#region کارپوشه,ParentId = WorkFlowOperationsPermissionCode
|
#region کارپوشه,ParentId = WorkFlowOperationsPermissionCode
|
||||||
|
|||||||
@@ -897,7 +897,15 @@ public static class Tools
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
numbers = Convert.ToInt32(num);
|
try
|
||||||
|
{
|
||||||
|
numbers = Convert.ToInt32(num);
|
||||||
|
}
|
||||||
|
catch (Exception e)
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
return numbers;
|
return numbers;
|
||||||
}
|
}
|
||||||
public static string ToFarsiMonthByNumber(this string value)
|
public static string ToFarsiMonthByNumber(this string value)
|
||||||
@@ -1413,6 +1421,73 @@ public static class Tools
|
|||||||
return false;
|
return false;
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// چک میکند که در دو شیفت استاتیک تداخل زمانی وجود دارد یا خیر
|
||||||
|
/// چک میکند که آیا ساعات وارد شده ولید هستند یا خیر
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="start1"></param>
|
||||||
|
/// <param name="end1"></param>
|
||||||
|
/// <param name="start2"></param>
|
||||||
|
/// <param name="end2"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
public static bool InterferenceTime(string start1, string end1, string start2, string end2)
|
||||||
|
{
|
||||||
|
if (!CheckValidHm(start1))
|
||||||
|
return true;
|
||||||
|
|
||||||
|
if (!CheckValidHm(end1))
|
||||||
|
return true;
|
||||||
|
|
||||||
|
if (!CheckValidHm(start2))
|
||||||
|
return true;
|
||||||
|
|
||||||
|
if (!CheckValidHm(end2))
|
||||||
|
return true;
|
||||||
|
|
||||||
|
//اگه دو شیفت نبود
|
||||||
|
if (string.IsNullOrWhiteSpace(start1) || string.IsNullOrWhiteSpace(start2))
|
||||||
|
return false;
|
||||||
|
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
var start1Gr = Convert.ToDateTime(start1);
|
||||||
|
var end1Gr = Convert.ToDateTime(end1);
|
||||||
|
|
||||||
|
if (end1Gr < start1Gr)
|
||||||
|
end1Gr = end1Gr.AddDays(1);
|
||||||
|
|
||||||
|
var start2Gr = Convert.ToDateTime(start2);
|
||||||
|
var end2Gr = Convert.ToDateTime(end2);
|
||||||
|
|
||||||
|
|
||||||
|
start2Gr = new DateTime(end1Gr.Year, end1Gr.Month, end1Gr.Day, start2Gr.Hour, start2Gr.Minute,
|
||||||
|
start2Gr.Second);
|
||||||
|
|
||||||
|
|
||||||
|
end2Gr = new DateTime(end1Gr.Year, end1Gr.Month, end1Gr.Day, end2Gr.Hour, end2Gr.Minute,
|
||||||
|
end2Gr.Second);
|
||||||
|
if (end2Gr < start2Gr)
|
||||||
|
end2Gr = end2Gr.AddDays(1);
|
||||||
|
|
||||||
|
var diff = (end1Gr - start1Gr).Add((end2Gr - start2Gr));
|
||||||
|
if (diff > new TimeSpan(24,0,0))
|
||||||
|
return true;
|
||||||
|
|
||||||
|
if (start2Gr <= end1Gr)
|
||||||
|
return true;
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
catch (Exception)
|
||||||
|
{
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
public static DateTime FindFirstDayOfMonthGr(this DateTime date)
|
public static DateTime FindFirstDayOfMonthGr(this DateTime date)
|
||||||
{
|
{
|
||||||
var pc = new PersianCalendar();
|
var pc = new PersianCalendar();
|
||||||
|
|||||||
@@ -10,67 +10,70 @@ namespace _0_Framework.Application.UID;
|
|||||||
|
|
||||||
public class UidService : IUidService
|
public class UidService : IUidService
|
||||||
{
|
{
|
||||||
private readonly HttpClient _httpClient;
|
private readonly HttpClient _httpClient;
|
||||||
private const string BaseUrl= "https://json-api.uid.ir/api/inquiry/";
|
private const string BaseUrl = "https://json-api.uid.ir/api/inquiry/";
|
||||||
|
|
||||||
public UidService()
|
public UidService()
|
||||||
{
|
{
|
||||||
_httpClient = new HttpClient()
|
_httpClient = new HttpClient()
|
||||||
{
|
{
|
||||||
BaseAddress = new Uri(BaseUrl)
|
BaseAddress = new Uri(BaseUrl)
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
public async Task<PersonalInfoResponse> GetPersonalInfo(string nationalCode, string birthDate)
|
public async Task<PersonalInfoResponse> GetPersonalInfo(string nationalCode, string birthDate)
|
||||||
{
|
{
|
||||||
var request = new PersonalInfoRequest
|
var request = new PersonalInfoRequest
|
||||||
{
|
{
|
||||||
BirthDate = birthDate ,
|
BirthDate = birthDate,
|
||||||
NationalId = nationalCode,
|
NationalId = nationalCode,
|
||||||
RequestContext = new UidRequestContext()
|
RequestContext = new UidRequestContext()
|
||||||
};
|
};
|
||||||
var json = JsonConvert.SerializeObject(request);
|
var json = JsonConvert.SerializeObject(request);
|
||||||
var contentType = new StringContent(json, Encoding.UTF8, "application/json");
|
var contentType = new StringContent(json, Encoding.UTF8, "application/json");
|
||||||
|
|
||||||
var requestResult = await _httpClient.PostAsync("person/v2", contentType);
|
try
|
||||||
try
|
{
|
||||||
{
|
var requestResult = await _httpClient.PostAsync("person/v2", contentType);
|
||||||
if (!requestResult.IsSuccessStatusCode)
|
if (!requestResult.IsSuccessStatusCode)
|
||||||
return null;
|
return null;
|
||||||
var responseResult = await requestResult.Content.ReadFromJsonAsync<PersonalInfoResponse>();
|
var responseResult = await requestResult.Content.ReadFromJsonAsync<PersonalInfoResponse>();
|
||||||
if (responseResult.BasicInformation != null)
|
if (responseResult.BasicInformation != null)
|
||||||
{
|
{
|
||||||
responseResult.BasicInformation.FirstName = responseResult.BasicInformation.FirstName?.ToPersian();
|
responseResult.BasicInformation.FirstName = responseResult.BasicInformation.FirstName?.ToPersian();
|
||||||
responseResult.BasicInformation.LastName = responseResult.BasicInformation.LastName?.ToPersian();
|
responseResult.BasicInformation.LastName = responseResult.BasicInformation.LastName?.ToPersian();
|
||||||
responseResult.BasicInformation.FatherName = responseResult.BasicInformation.FatherName?.ToPersian();
|
responseResult.BasicInformation.FatherName = responseResult.BasicInformation.FatherName?.ToPersian();
|
||||||
}
|
}
|
||||||
|
|
||||||
return responseResult;
|
return responseResult;
|
||||||
}
|
}
|
||||||
catch
|
catch
|
||||||
{
|
{
|
||||||
|
|
||||||
return null;
|
return new PersonalInfoResponse(new UidBasicInformation(),
|
||||||
}
|
new IdentificationInformation(default, default, default, default, default), new RegistrationStatus(),
|
||||||
}
|
new ResponseContext(new UidStatus(14, "")));
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
public async Task<MatchMobileWithNationalCodeResponse> IsMachPhoneWithNationalCode(string nationalCode, string phoneNumber)
|
public async Task<MatchMobileWithNationalCodeResponse> IsMachPhoneWithNationalCode(string nationalCode, string phoneNumber)
|
||||||
{
|
{
|
||||||
var request = new PersonalInfoRequest
|
var request = new PersonalInfoRequest
|
||||||
{
|
{
|
||||||
MobileNumber = phoneNumber,
|
MobileNumber = phoneNumber,
|
||||||
NationalId = nationalCode,
|
NationalId = nationalCode,
|
||||||
RequestContext = new UidRequestContext()
|
RequestContext = new UidRequestContext()
|
||||||
};
|
};
|
||||||
var json = JsonConvert.SerializeObject(request);
|
var json = JsonConvert.SerializeObject(request);
|
||||||
var contentType = new StringContent(json, Encoding.UTF8, "application/json");
|
var contentType = new StringContent(json, Encoding.UTF8, "application/json");
|
||||||
|
|
||||||
var requestResult = await _httpClient.PostAsync("mobile/owner/v2", contentType);
|
var requestResult = await _httpClient.PostAsync("mobile/owner/v2", contentType);
|
||||||
if (!requestResult.IsSuccessStatusCode)
|
if (!requestResult.IsSuccessStatusCode)
|
||||||
return null;
|
return null;
|
||||||
|
|
||||||
var responseResult = await requestResult.Content.ReadFromJsonAsync<MatchMobileWithNationalCodeResponse>();
|
var responseResult = await requestResult.Content.ReadFromJsonAsync<MatchMobileWithNationalCodeResponse>();
|
||||||
return responseResult;
|
return responseResult;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1,4 +1,6 @@
|
|||||||
using System.Collections.Generic;
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
using _0_Framework.Domain.CustomizeCheckoutShared.Enums;
|
using _0_Framework.Domain.CustomizeCheckoutShared.Enums;
|
||||||
using _0_Framework.Domain.CustomizeCheckoutShared.ValueObjects;
|
using _0_Framework.Domain.CustomizeCheckoutShared.ValueObjects;
|
||||||
using Microsoft.EntityFrameworkCore.Design.Internal;
|
using Microsoft.EntityFrameworkCore.Design.Internal;
|
||||||
@@ -12,8 +14,7 @@ public class BaseCustomizeEntity : EntityBase
|
|||||||
}
|
}
|
||||||
public BaseCustomizeEntity(FridayPay fridayPay, OverTimePay overTimePay,
|
public BaseCustomizeEntity(FridayPay fridayPay, OverTimePay overTimePay,
|
||||||
BaseYearsPay baseYearsPay, BonusesPay bonusesPay, NightWorkPay nightWorkPay, MarriedAllowance marriedAllowance, ShiftPay shiftPay,
|
BaseYearsPay baseYearsPay, BonusesPay bonusesPay, NightWorkPay nightWorkPay, MarriedAllowance marriedAllowance, ShiftPay shiftPay,
|
||||||
FamilyAllowance familyAllowance, LeavePay leavePay, InsuranceDeduction insuranceDeduction, FineAbsenceDeduction fineAbsenceDeduction, LateToWork lateToWork, EarlyExit earlyExit,
|
FamilyAllowance familyAllowance, LeavePay leavePay, InsuranceDeduction insuranceDeduction, FineAbsenceDeduction fineAbsenceDeduction, LateToWork lateToWork, EarlyExit earlyExit, HolidayWork holidayWork, BreakTime breakTime,int leavePermittedDays,List<WeeklyOffDay> weeklyOffDays)
|
||||||
FridayWork fridayWork, HolidayWork holidayWork, BreakTime breakTime,int leavePermittedDays)
|
|
||||||
{
|
{
|
||||||
|
|
||||||
FridayPay = fridayPay;
|
FridayPay = fridayPay;
|
||||||
@@ -29,10 +30,10 @@ public class BaseCustomizeEntity : EntityBase
|
|||||||
FineAbsenceDeduction = fineAbsenceDeduction;
|
FineAbsenceDeduction = fineAbsenceDeduction;
|
||||||
LateToWork = lateToWork;
|
LateToWork = lateToWork;
|
||||||
EarlyExit = earlyExit;
|
EarlyExit = earlyExit;
|
||||||
FridayWork = fridayWork;
|
|
||||||
HolidayWork = holidayWork;
|
HolidayWork = holidayWork;
|
||||||
BreakTime = breakTime;
|
BreakTime = breakTime;
|
||||||
LeavePermittedDays = leavePermittedDays;
|
LeavePermittedDays = leavePermittedDays;
|
||||||
|
WeeklyOffDays = weeklyOffDays.Select(x=> new WeeklyOffDay(x.DayOfWeek)).ToList();
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@@ -117,4 +118,28 @@ public class BaseCustomizeEntity : EntityBase
|
|||||||
|
|
||||||
|
|
||||||
public BreakTime BreakTime { get; protected set; }
|
public BreakTime BreakTime { get; protected set; }
|
||||||
|
|
||||||
|
public List<WeeklyOffDay> WeeklyOffDays { get; set; }
|
||||||
|
|
||||||
|
public void FridayWorkToWeeklyDayOfWeek()
|
||||||
|
{
|
||||||
|
if (FridayWork == FridayWork.Default && !WeeklyOffDays.Any(x => x.DayOfWeek == DayOfWeek.Friday))
|
||||||
|
{
|
||||||
|
WeeklyOffDays.Add(new WeeklyOffDay(DayOfWeek.Friday));
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public class WeeklyOffDay
|
||||||
|
{
|
||||||
|
public WeeklyOffDay(DayOfWeek dayOfWeek)
|
||||||
|
{
|
||||||
|
DayOfWeek = dayOfWeek;
|
||||||
|
}
|
||||||
|
|
||||||
|
public long Id { get; set; }
|
||||||
|
public DayOfWeek DayOfWeek { get; set; }
|
||||||
|
public long ParentId { get; set; }
|
||||||
}
|
}
|
||||||
75
0_Framework/Exceptions/Handler/CustomExceptionHandler.cs
Normal file
75
0_Framework/Exceptions/Handler/CustomExceptionHandler.cs
Normal file
@@ -0,0 +1,75 @@
|
|||||||
|
using System;
|
||||||
|
using System.Threading;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
using Microsoft.AspNetCore.Diagnostics;
|
||||||
|
using Microsoft.AspNetCore.Http;
|
||||||
|
using Microsoft.AspNetCore.Mvc;
|
||||||
|
using Microsoft.Extensions.Logging;
|
||||||
|
|
||||||
|
|
||||||
|
namespace _0_Framework.Exceptions.Handler;
|
||||||
|
|
||||||
|
public class CustomExceptionHandler : IExceptionHandler
|
||||||
|
{
|
||||||
|
private readonly ILogger<CustomExceptionHandler> _logger;
|
||||||
|
|
||||||
|
public CustomExceptionHandler(ILogger<CustomExceptionHandler> logger)
|
||||||
|
{
|
||||||
|
_logger = logger;
|
||||||
|
}
|
||||||
|
|
||||||
|
public async ValueTask<bool> TryHandleAsync(HttpContext context, Exception exception, CancellationToken cancellationToken)
|
||||||
|
{
|
||||||
|
_logger.LogError(
|
||||||
|
"Error Message: {exceptionMessage}, Time of occurrence {time}",
|
||||||
|
exception.Message, DateTime.UtcNow);
|
||||||
|
|
||||||
|
(string Detail, string Title, int StatusCode) details = exception switch
|
||||||
|
{
|
||||||
|
InternalServerException =>
|
||||||
|
(
|
||||||
|
exception.Message,
|
||||||
|
exception.GetType().Name,
|
||||||
|
context.Response.StatusCode = StatusCodes.Status500InternalServerError
|
||||||
|
),
|
||||||
|
BadRequestException =>
|
||||||
|
(
|
||||||
|
exception.Message,
|
||||||
|
exception.GetType().Name,
|
||||||
|
context.Response.StatusCode = StatusCodes.Status400BadRequest
|
||||||
|
),
|
||||||
|
NotFoundException =>
|
||||||
|
(
|
||||||
|
exception.Message,
|
||||||
|
exception.GetType().Name,
|
||||||
|
context.Response.StatusCode = StatusCodes.Status404NotFound
|
||||||
|
),
|
||||||
|
UnAuthorizeException =>
|
||||||
|
(
|
||||||
|
exception.Message,
|
||||||
|
exception.GetType().Name,
|
||||||
|
context.Response.StatusCode = StatusCodes.Status401Unauthorized
|
||||||
|
),
|
||||||
|
_ =>
|
||||||
|
(
|
||||||
|
exception.Message,
|
||||||
|
exception.GetType().Name,
|
||||||
|
context.Response.StatusCode = StatusCodes.Status500InternalServerError
|
||||||
|
)
|
||||||
|
};
|
||||||
|
|
||||||
|
var problemDetails = new ProblemDetails
|
||||||
|
{
|
||||||
|
Title = details.Title,
|
||||||
|
Detail = details.Detail,
|
||||||
|
Status = details.StatusCode,
|
||||||
|
Instance = context.Request.Path
|
||||||
|
};
|
||||||
|
|
||||||
|
problemDetails.Extensions.Add("traceId", context.TraceIdentifier);
|
||||||
|
|
||||||
|
await context.Response.WriteAsJsonAsync(problemDetails, cancellationToken: cancellationToken);
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
10
0_Framework/Exceptions/UnAuthorizeException.cs
Normal file
10
0_Framework/Exceptions/UnAuthorizeException.cs
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
using System;
|
||||||
|
|
||||||
|
namespace _0_Framework.Exceptions;
|
||||||
|
|
||||||
|
public class UnAuthorizeException:Exception
|
||||||
|
{
|
||||||
|
public UnAuthorizeException(string message) : base(message)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,9 @@
|
|||||||
|
namespace AccountManagement.Application.Contracts.Account;
|
||||||
|
|
||||||
|
public class AccountSelectListViewModel
|
||||||
|
{
|
||||||
|
public long Id { get; set; }
|
||||||
|
public string Name { get; set; }
|
||||||
|
|
||||||
|
public long RoleId { get; set; }
|
||||||
|
}
|
||||||
@@ -41,6 +41,8 @@ public interface IAccountApplication
|
|||||||
List<AccountViewModel> GetAccountsByPositionId(long positionId);
|
List<AccountViewModel> GetAccountsByPositionId(long positionId);
|
||||||
|
|
||||||
List<AccountViewModel> GetAccountEqualToLowerPositionValue();
|
List<AccountViewModel> GetAccountEqualToLowerPositionValue();
|
||||||
|
Task<List<AccountSelectListViewModel>> GetAdminSelectList();
|
||||||
|
|
||||||
OperationResult ReLogin();
|
OperationResult ReLogin();
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|||||||
@@ -4,12 +4,13 @@ using System.Collections.Generic;
|
|||||||
|
|
||||||
namespace AccountManagement.Application.Contracts.Media
|
namespace AccountManagement.Application.Contracts.Media
|
||||||
{
|
{
|
||||||
public interface IMediaApplication
|
public interface IMediaApplication
|
||||||
{
|
{
|
||||||
MediaViewModel Get(long id);
|
MediaViewModel Get(long id);
|
||||||
OperationResult UploadFile(IFormFile file, string fileLabel, string relativePath, int maximumFileLength, List<string> allowedExtensions);
|
OperationResult UploadFile(IFormFile file, string fileLabel, string relativePath, int maximumFileLength,
|
||||||
OperationResult MoveFile(long mediaId, string newRelativePath);
|
List<string> allowedExtensions, string category);
|
||||||
OperationResult DeleteFile(long mediaId);
|
OperationResult MoveFile(long mediaId, string newRelativePath);
|
||||||
List<MediaViewModel> GetRange(IEnumerable<long> select);
|
OperationResult DeleteFile(long mediaId);
|
||||||
}
|
List<MediaViewModel> GetRange(IEnumerable<long> select);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
@@ -15,6 +15,6 @@ namespace AccountManagement.Application.Contracts.SubAccount
|
|||||||
public string PhoneNumber { get; set; }
|
public string PhoneNumber { get; set; }
|
||||||
public string Username { get; set; }
|
public string Username { get; set; }
|
||||||
public string ProfilePhoto { get; set; }
|
public string ProfilePhoto { get; set; }
|
||||||
public List<long> WorkshopIds { get; set; }
|
//public List<long> WorkshopIds { get; set; }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -8,5 +8,6 @@ namespace AccountManagement.Application.Contracts.SubAccount
|
|||||||
public string Title { get; set; }
|
public string Title { get; set; }
|
||||||
public long AccountId { get; set; }
|
public long AccountId { get; set; }
|
||||||
public List<int> Permissions { get; set; }
|
public List<int> Permissions { get; set; }
|
||||||
|
public List<long> WorkshopIds { get; set; }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -13,7 +13,7 @@ namespace AccountManagement.Application.Contracts.SubAccount
|
|||||||
public string PhoneNumber { get; set; }
|
public string PhoneNumber { get; set; }
|
||||||
public string RePassword { get; set; }
|
public string RePassword { get; set; }
|
||||||
public long SubAccountRoleId { get; set; }
|
public long SubAccountRoleId { get; set; }
|
||||||
public List<long> WorkshopIds { get; set; }
|
//public List<long> WorkshopIds { get; set; }
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -7,5 +7,6 @@ namespace AccountManagement.Application.Contracts.SubAccount
|
|||||||
public long Id { get; set; }
|
public long Id { get; set; }
|
||||||
public string Title { get; set; }
|
public string Title { get; set; }
|
||||||
public List<int> Permissions { get; set; }
|
public List<int> Permissions { get; set; }
|
||||||
|
public List<long> WorkshopIds { get; set; }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -21,4 +21,5 @@ public class EditTask:CreateTask
|
|||||||
public List<AccountViewModel> AssignsLists { get; set; }
|
public List<AccountViewModel> AssignsLists { get; set; }
|
||||||
public bool HasTicket { get; set; }
|
public bool HasTicket { get; set; }
|
||||||
public long TaskScheduleId { get; set; }
|
public long TaskScheduleId { get; set; }
|
||||||
|
public bool HasRequest { get; set; }
|
||||||
}
|
}
|
||||||
@@ -48,6 +48,7 @@ public class TaskViewModel
|
|||||||
public bool CanDelete { get; set; }
|
public bool CanDelete { get; set; }
|
||||||
public bool CanAssign { get; set; }
|
public bool CanAssign { get; set; }
|
||||||
public bool CanCheckRequests { get; set; }
|
public bool CanCheckRequests { get; set; }
|
||||||
|
public bool HasRequest { get; set; }
|
||||||
public AssignViewModel AssignedReceiverViewModel { get; set; }
|
public AssignViewModel AssignedReceiverViewModel { get; set; }
|
||||||
|
|
||||||
public TaskScheduleType ScheduleType { get; set; }
|
public TaskScheduleType ScheduleType { get; set; }
|
||||||
|
|||||||
@@ -15,6 +15,8 @@ public class TaskScheduleDetailsViewModel
|
|||||||
public string ContractingPartyName { get; set; }
|
public string ContractingPartyName { get; set; }
|
||||||
public string Title { get; set; }
|
public string Title { get; set; }
|
||||||
public string Description { get; set; }
|
public string Description { get; set; }
|
||||||
|
public string Count { get; set; }
|
||||||
|
public string FirstEndTaskDate { get; set; }
|
||||||
public List<MediaViewModel> Medias { get; set; }
|
public List<MediaViewModel> Medias { get; set; }
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -308,7 +308,7 @@ public class AccountApplication : IAccountApplication
|
|||||||
{
|
{
|
||||||
Slug = _passwordHasher.SlugHasher(x.WorkshopId),
|
Slug = _passwordHasher.SlugHasher(x.WorkshopId),
|
||||||
Name = x.WorkshopName,
|
Name = x.WorkshopName,
|
||||||
PersonnelCount = 0,
|
PersonnelCount = x.PersonnelCount,
|
||||||
Id = x.WorkshopId
|
Id = x.WorkshopId
|
||||||
}).ToList();
|
}).ToList();
|
||||||
|
|
||||||
@@ -627,7 +627,10 @@ public class AccountApplication : IAccountApplication
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public async Task<List<AccountSelectListViewModel>> GetAdminSelectList()
|
||||||
|
{
|
||||||
|
return await _accountRepository.GetAdminSelectList();
|
||||||
|
}
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
#region Pooya
|
#region Pooya
|
||||||
|
|||||||
@@ -9,147 +9,113 @@ using Microsoft.AspNetCore.Http;
|
|||||||
|
|
||||||
namespace AccountManagement.Application
|
namespace AccountManagement.Application
|
||||||
{
|
{
|
||||||
public class MediaApplication:IMediaApplication
|
public class MediaApplication : IMediaApplication
|
||||||
{
|
{
|
||||||
|
|
||||||
|
|
||||||
private const string _basePath = "Medias";
|
private const string _basePath = "Medias";
|
||||||
private readonly IMediaRepository _mediaRepository;
|
private readonly IMediaRepository _mediaRepository;
|
||||||
|
|
||||||
public MediaApplication(IMediaRepository mediaRepository)
|
public MediaApplication(IMediaRepository mediaRepository)
|
||||||
{
|
{
|
||||||
_mediaRepository = mediaRepository;
|
_mediaRepository = mediaRepository;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// دریافت فایل و نوشتن آن در مسیر داده شده، و ثبت مدیا
|
/// دریافت فایل و نوشتن آن در مسیر داده شده، و ثبت مدیا
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="file">فایل</param>
|
/// <param name="file">فایل</param>
|
||||||
/// <param name="fileLabel">برچسب فایل که در نام فایل ظاهر می شود</param>
|
/// <param name="fileLabel">برچسب فایل که در نام فایل ظاهر می شود</param>
|
||||||
/// <param name="relativePath">مسیر فایل</param>
|
/// <param name="relativePath">مسیر فایل</param>
|
||||||
/// <param name="allowedExtensions">[.png,.jpg,.jpeg] پسوند های مجاز مثلا </param>
|
/// <param name="maximumFileLength">حداکثر حجم فایل به مگابایت</param>
|
||||||
/// <param name="maximumFileLength">حداکثر حجم فایل به مگابایت</param>
|
/// <param name="allowedExtensions">[.png,.jpg,.jpeg] پسوند های مجاز مثلا </param>
|
||||||
/// <returns></returns>
|
/// <param name="category"></param>
|
||||||
public OperationResult UploadFile(IFormFile file, string fileLabel, string relativePath,int maximumFileLength,List<string> allowedExtensions)
|
/// <returns></returns>
|
||||||
{
|
public OperationResult UploadFile(IFormFile file, string fileLabel, string relativePath, int maximumFileLength,
|
||||||
OperationResult op = new();
|
List<string> allowedExtensions, string category)
|
||||||
var path = Path.Combine(_basePath, relativePath);
|
{
|
||||||
var fileExtension = Path.GetExtension(file.FileName);
|
return _mediaRepository.UploadFile(file, fileLabel, relativePath, maximumFileLength, allowedExtensions, category);
|
||||||
|
}
|
||||||
if (file == null || file.Length == 0)
|
|
||||||
return op.Failed("خطای سیستمی");
|
|
||||||
|
|
||||||
if (file.Length > (maximumFileLength * 1024 * 1024))
|
|
||||||
return op.Failed($"حجم فایل نمی تواند بیشتر از " +
|
|
||||||
$"{maximumFileLength}" +
|
|
||||||
$"مگابایت باشد");
|
|
||||||
|
|
||||||
if (!allowedExtensions.Contains(fileExtension.ToLower()))
|
|
||||||
{
|
|
||||||
var operationMessage = ":فرمت فایل باید یکی از موارد زیر باشد";
|
|
||||||
operationMessage += "\n";
|
|
||||||
operationMessage += string.Join(" ", allowedExtensions);
|
|
||||||
return op.Failed(operationMessage);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
Directory.CreateDirectory(path);
|
/// <summary>
|
||||||
|
/// حذف فایل
|
||||||
|
/// </summary>
|
||||||
|
public OperationResult DeleteFile(long mediaId)
|
||||||
|
{
|
||||||
|
OperationResult op = new();
|
||||||
|
var media = _mediaRepository.Get(mediaId);
|
||||||
|
if (media == null)
|
||||||
|
return op.Failed("رکورد مورد نظر یافت نشد");
|
||||||
|
try
|
||||||
|
{
|
||||||
|
if (File.Exists(media.Path))
|
||||||
|
File.Delete(media.Path);
|
||||||
|
else
|
||||||
|
return op.Failed("فایل یافت نشد");
|
||||||
|
}
|
||||||
|
catch
|
||||||
|
{
|
||||||
|
return op.Failed("خطایی در حذف فایل رخ داده است");
|
||||||
|
}
|
||||||
|
|
||||||
var extension = Path.GetExtension(file.FileName);
|
_mediaRepository.Remove(media.id);
|
||||||
|
_mediaRepository.SaveChanges();
|
||||||
|
return op.Succcedded();
|
||||||
|
}
|
||||||
|
|
||||||
var uniqueFileName = $"{fileLabel}-{DateTime.Now.Ticks}{extension}";
|
/// <summary>
|
||||||
var filePath = Path.Combine(path, uniqueFileName);
|
/// جابجا کردن فایل
|
||||||
using (var fileStream = new FileStream(filePath, FileMode.CreateNew))
|
/// </summary>
|
||||||
{
|
public OperationResult MoveFile(long mediaId, string newRelativePath)
|
||||||
file.CopyTo(fileStream);
|
{
|
||||||
}
|
OperationResult op = new();
|
||||||
var mediaEntity = new Media(filePath, extension, "فایل", "EmployeeDocuments");
|
var media = _mediaRepository.Get(mediaId);
|
||||||
_mediaRepository.Create(mediaEntity);
|
var oldPath = media.Path;
|
||||||
_mediaRepository.SaveChanges();
|
var path = Path.Combine(_basePath, newRelativePath);
|
||||||
|
Directory.CreateDirectory(path);
|
||||||
|
|
||||||
return op.Succcedded(mediaEntity.id);
|
string filepath = Path.Combine(path, Path.GetFileName(oldPath));
|
||||||
|
try
|
||||||
|
{
|
||||||
|
File.Move(oldPath, filepath);
|
||||||
|
}
|
||||||
|
catch
|
||||||
|
{
|
||||||
|
return op.Failed("در جابجایی فایل خطایی رخ داده است");
|
||||||
|
}
|
||||||
|
|
||||||
}
|
media.Edit(filepath, media.Type, media.Category);
|
||||||
|
_mediaRepository.SaveChanges();
|
||||||
|
return op.Succcedded();
|
||||||
|
}
|
||||||
|
|
||||||
|
public MediaViewModel Get(long id)
|
||||||
|
{
|
||||||
|
var media = _mediaRepository.Get(id);
|
||||||
|
if (media == null)
|
||||||
|
return new();
|
||||||
|
return new MediaViewModel()
|
||||||
|
{
|
||||||
|
Category = media.Category,
|
||||||
|
Path = media.Path,
|
||||||
|
Id = media.id,
|
||||||
|
Type = media.Type
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
public List<MediaViewModel> GetRange(IEnumerable<long> ids)
|
||||||
/// حذف فایل
|
{
|
||||||
/// </summary>
|
var medias = _mediaRepository.GetRange(ids);
|
||||||
public OperationResult DeleteFile(long mediaId)
|
return medias.Select(x => new MediaViewModel()
|
||||||
{
|
{
|
||||||
OperationResult op = new();
|
Category = x.Category,
|
||||||
var media = _mediaRepository.Get(mediaId);
|
Path = x.Path,
|
||||||
if (media == null)
|
Id = x.id,
|
||||||
return op.Failed("رکورد مورد نظر یافت نشد");
|
Type = x.Type,
|
||||||
try
|
}).ToList();
|
||||||
{
|
}
|
||||||
if (File.Exists(media.Path))
|
|
||||||
File.Delete(media.Path);
|
|
||||||
else
|
|
||||||
return op.Failed("فایل یافت نشد");
|
|
||||||
}
|
|
||||||
catch
|
|
||||||
{
|
|
||||||
return op.Failed("خطایی در حذف فایل رخ داده است");
|
|
||||||
}
|
|
||||||
|
|
||||||
_mediaRepository.Remove(media.id);
|
}
|
||||||
_mediaRepository.SaveChanges();
|
|
||||||
return op.Succcedded();
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// جابجا کردن فایل
|
|
||||||
/// </summary>
|
|
||||||
public OperationResult MoveFile(long mediaId, string newRelativePath)
|
|
||||||
{
|
|
||||||
OperationResult op = new();
|
|
||||||
var media = _mediaRepository.Get(mediaId);
|
|
||||||
var oldPath = media.Path;
|
|
||||||
var path = Path.Combine(_basePath, newRelativePath);
|
|
||||||
Directory.CreateDirectory(path);
|
|
||||||
|
|
||||||
string filepath = Path.Combine(path, Path.GetFileName(oldPath));
|
|
||||||
try
|
|
||||||
{
|
|
||||||
File.Move(oldPath, filepath);
|
|
||||||
}
|
|
||||||
catch
|
|
||||||
{
|
|
||||||
return op.Failed("در جابجایی فایل خطایی رخ داده است");
|
|
||||||
}
|
|
||||||
|
|
||||||
media.Edit(filepath, media.Type, media.Category);
|
|
||||||
_mediaRepository.SaveChanges();
|
|
||||||
return op.Succcedded();
|
|
||||||
}
|
|
||||||
|
|
||||||
public MediaViewModel Get(long id)
|
|
||||||
{
|
|
||||||
var media = _mediaRepository.Get(id);
|
|
||||||
if (media == null)
|
|
||||||
return new();
|
|
||||||
return new MediaViewModel()
|
|
||||||
{
|
|
||||||
Category = media.Category,
|
|
||||||
Path = media.Path,
|
|
||||||
Id = media.id,
|
|
||||||
Type = media.Type
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
public List<MediaViewModel> GetRange(IEnumerable<long> ids)
|
|
||||||
{
|
|
||||||
var medias = _mediaRepository.GetRange(ids);
|
|
||||||
return medias.Select(x=>new MediaViewModel()
|
|
||||||
{
|
|
||||||
Category = x.Category,
|
|
||||||
Path = x.Path,
|
|
||||||
Id = x.id,
|
|
||||||
Type = x.Type,
|
|
||||||
}).ToList();
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -113,12 +113,12 @@ namespace AccountManagement.Application
|
|||||||
if (cmd.PhoneNumber.Length != 11)
|
if (cmd.PhoneNumber.Length != 11)
|
||||||
return op.Failed("شماره تلفن همراه نامعتبر است");
|
return op.Failed("شماره تلفن همراه نامعتبر است");
|
||||||
|
|
||||||
if (!cmd.WorkshopIds.Any())
|
//if (!cmd.WorkshopIds.Any())
|
||||||
return op.Failed("حداقل یک کارگاه را انتخاب کنید");
|
// return op.Failed("حداقل یک کارگاه را انتخاب کنید");
|
||||||
|
|
||||||
|
|
||||||
if (!cmd.WorkshopIds.All(x => accountWorkshopsList.Contains(x)))
|
//if (!cmd.WorkshopIds.All(x => accountWorkshopsList.Contains(x)))
|
||||||
return op.Failed("خطای سیستمی");
|
// return op.Failed("خطای سیستمی");
|
||||||
|
|
||||||
|
|
||||||
if (cmd.SubAccountRoleId == 0 || !_subAccountRoleRepository.Exists(x => cmd.SubAccountRoleId == x.id))
|
if (cmd.SubAccountRoleId == 0 || !_subAccountRoleRepository.Exists(x => cmd.SubAccountRoleId == x.id))
|
||||||
@@ -131,6 +131,10 @@ namespace AccountManagement.Application
|
|||||||
_cameraAccountRepository.Exists(x => x.Username == cmd.Username))
|
_cameraAccountRepository.Exists(x => x.Username == cmd.Username))
|
||||||
return op.Failed("نام کاربری نمی تواند تکراری باشد");
|
return op.Failed("نام کاربری نمی تواند تکراری باشد");
|
||||||
|
|
||||||
|
var role = _subAccountRoleRepository.Get(cmd.SubAccountRoleId);
|
||||||
|
var workshopId = role.RoleWorkshops.Select(x => x.WorkshopId).ToList();
|
||||||
|
|
||||||
|
|
||||||
var entity = new SubAccount(cmd.AccountId, cmd.SubAccountRoleId, cmd.NationalCode, cmd.FName, cmd.LName, cmd.PhoneNumber, cmd.Username, _passwordHasher.Hash(cmd.Password),
|
var entity = new SubAccount(cmd.AccountId, cmd.SubAccountRoleId, cmd.NationalCode, cmd.FName, cmd.LName, cmd.PhoneNumber, cmd.Username, _passwordHasher.Hash(cmd.Password),
|
||||||
cmd.ProfilePhoto);
|
cmd.ProfilePhoto);
|
||||||
|
|
||||||
@@ -142,7 +146,7 @@ namespace AccountManagement.Application
|
|||||||
_subAccountRepository.SaveChanges();
|
_subAccountRepository.SaveChanges();
|
||||||
|
|
||||||
|
|
||||||
var workshops = cmd.WorkshopIds.Select(x => new WorkshopSubAccount(x, entity.id));
|
var workshops = workshopId.Select(x => new WorkshopSubAccount(x, entity.id));
|
||||||
|
|
||||||
foreach (var w in workshops)
|
foreach (var w in workshops)
|
||||||
_workshopSubAccountRepository.Create(w);
|
_workshopSubAccountRepository.Create(w);
|
||||||
@@ -175,22 +179,22 @@ namespace AccountManagement.Application
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
if (!cmd.WorkshopIds.All(x => accountWorkshopsList.Contains(x)))
|
//if (!cmd.WorkshopIds.All(x => accountWorkshopsList.Contains(x)))
|
||||||
return op.Failed("خطای سیستمی");
|
// return op.Failed("خطای سیستمی");
|
||||||
|
|
||||||
|
|
||||||
if (cmd.SubAccountRoleId == 0 || !_subAccountRoleRepository.Exists(x => cmd.SubAccountRoleId == x.id))
|
if (cmd.SubAccountRoleId == 0 || !_subAccountRoleRepository.Exists(x => cmd.SubAccountRoleId == x.id))
|
||||||
return op.Failed("نقش مورد نظر وجود ندارد");
|
return op.Failed("نقش مورد نظر وجود ندارد");
|
||||||
|
|
||||||
var workshopSubAccounts = _workshopSubAccountRepository.GetWorkshopsSubAccountEntityBySubAccountId(entity.id);
|
//var workshopSubAccounts = _workshopSubAccountRepository.GetWorkshopsSubAccountEntityBySubAccountId(entity.id);
|
||||||
foreach (var workshopSubAccount in workshopSubAccounts)
|
//foreach (var workshopSubAccount in workshopSubAccounts)
|
||||||
_workshopSubAccountRepository.Remove(workshopSubAccount);
|
// _workshopSubAccountRepository.Remove(workshopSubAccount);
|
||||||
|
|
||||||
|
|
||||||
var workshops = cmd.WorkshopIds.Select(x => new WorkshopSubAccount(x, entity.id));
|
//var workshops = cmd.WorkshopIds.Select(x => new WorkshopSubAccount(x, entity.id));
|
||||||
|
|
||||||
foreach (var w in workshops)
|
//foreach (var w in workshops)
|
||||||
_workshopSubAccountRepository.Create(w);
|
// _workshopSubAccountRepository.Create(w);
|
||||||
|
|
||||||
entity.Edit(cmd.SubAccountRoleId, cmd.NationalCode, cmd.FName, cmd.LName, cmd.ProfilePhoto);
|
entity.Edit(cmd.SubAccountRoleId, cmd.NationalCode, cmd.FName, cmd.LName, cmd.ProfilePhoto);
|
||||||
_workshopSubAccountRepository.SaveChanges();
|
_workshopSubAccountRepository.SaveChanges();
|
||||||
@@ -227,7 +231,8 @@ namespace AccountManagement.Application
|
|||||||
{
|
{
|
||||||
Id = entity.id,
|
Id = entity.id,
|
||||||
Title = entity.Title,
|
Title = entity.Title,
|
||||||
Permissions = entity.RolePermissions.Select(x => x.PermissionCode).ToList()
|
Permissions = entity.RolePermissions.Select(x => x.PermissionCode).ToList(),
|
||||||
|
WorkshopIds = entity.RoleWorkshops.Select(x=>x.WorkshopId).ToList()
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -241,7 +246,7 @@ namespace AccountManagement.Application
|
|||||||
OperationResult op = new();
|
OperationResult op = new();
|
||||||
if (_subAccountRoleRepository.Exists(x => x.AccountId == command.AccountId && x.Title.Trim() == command.Title.Trim()))
|
if (_subAccountRoleRepository.Exists(x => x.AccountId == command.AccountId && x.Title.Trim() == command.Title.Trim()))
|
||||||
return op.Failed("یک نقش با این عنوان وجود دارد");
|
return op.Failed("یک نقش با این عنوان وجود دارد");
|
||||||
var role = new SubAccountRole(command.Title, command.Permissions, command.AccountId);
|
var role = new SubAccountRole(command.Title, command.Permissions, command.AccountId,command.WorkshopIds);
|
||||||
_subAccountRoleRepository.Create(role);
|
_subAccountRoleRepository.Create(role);
|
||||||
_subAccountRoleRepository.SaveChanges();
|
_subAccountRoleRepository.SaveChanges();
|
||||||
return op.Succcedded(role.id);
|
return op.Succcedded(role.id);
|
||||||
@@ -254,8 +259,26 @@ namespace AccountManagement.Application
|
|||||||
var entity = _subAccountRoleRepository.Get(cmd.Id);
|
var entity = _subAccountRoleRepository.Get(cmd.Id);
|
||||||
if (entity == null)
|
if (entity == null)
|
||||||
return op.Failed(ApplicationMessages.RecordNotFound);
|
return op.Failed(ApplicationMessages.RecordNotFound);
|
||||||
entity.Edit(cmd.Title, cmd.Permissions);
|
entity.Edit(cmd.Title, cmd.Permissions,cmd.WorkshopIds);
|
||||||
_subAccountRoleRepository.SaveChanges();
|
|
||||||
|
var subAccountRoles = _subAccountRepository.GetBySubAccountRole(cmd.Id);
|
||||||
|
|
||||||
|
foreach (var subAccount in subAccountRoles)
|
||||||
|
{
|
||||||
|
var workshopSubAccounts = _workshopSubAccountRepository.GetWorkshopsSubAccountEntityBySubAccountId(subAccount.id);
|
||||||
|
foreach (var workshopSubAccount in workshopSubAccounts)
|
||||||
|
_workshopSubAccountRepository.Remove(workshopSubAccount);
|
||||||
|
|
||||||
|
|
||||||
|
var workshops = cmd.WorkshopIds.Select(x => new WorkshopSubAccount(x, subAccount.id));
|
||||||
|
|
||||||
|
foreach (var w in workshops)
|
||||||
|
_workshopSubAccountRepository.Create(w);
|
||||||
|
}
|
||||||
|
|
||||||
|
_subAccountRoleRepository.SaveChanges();
|
||||||
|
_workshopSubAccountRepository.SaveChanges();
|
||||||
|
|
||||||
return op.Succcedded();
|
return op.Succcedded();
|
||||||
}
|
}
|
||||||
public OperationResult AssignRoleToSubAccount(AssignSubAccountRole command)
|
public OperationResult AssignRoleToSubAccount(AssignSubAccountRole command)
|
||||||
|
|||||||
@@ -597,7 +597,7 @@ public class TaskApplication : ITaskApplication
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
assign.AcceptTimeRequest();
|
assign.AcceptTimeRequest();
|
||||||
message = string.IsNullOrWhiteSpace(message) ? "درخواست شما مورد تایید قرار گرفت" : message;
|
message = string.IsNullOrWhiteSpace(message) ? "درخواست شما مورد تایید قرار گرفت" : message;
|
||||||
var messageEntity = new TaskMessage(message, "تایید درخواست مهلت", assign.id);
|
var messageEntity = new TaskMessage(message, "تایید درخواست مهلت", assign.id);
|
||||||
@@ -622,6 +622,7 @@ public class TaskApplication : ITaskApplication
|
|||||||
{
|
{
|
||||||
return operation.Failed("چنین وظیفه ای درخواستی برای مهلت ندارد");
|
return operation.Failed("چنین وظیفه ای درخواستی برای مهلت ندارد");
|
||||||
}
|
}
|
||||||
|
|
||||||
assign.RejectTimeRequest();
|
assign.RejectTimeRequest();
|
||||||
if (assign.EndTaskDate.Date <= DateTime.Now.Date)
|
if (assign.EndTaskDate.Date <= DateTime.Now.Date)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -27,6 +27,8 @@ namespace AccountManagement.Domain.AccountAgg
|
|||||||
List<AccountViewModel> GetAccountEqualToLowerPositionValue();
|
List<AccountViewModel> GetAccountEqualToLowerPositionValue();
|
||||||
AccountViewModel GetAccountViewModel(long id);
|
AccountViewModel GetAccountViewModel(long id);
|
||||||
List<AccountViewModel> GetAccountsDeactivePositionValue(long Positionid);
|
List<AccountViewModel> GetAccountsDeactivePositionValue(long Positionid);
|
||||||
|
Task<List<AccountSelectListViewModel>> GetAdminSelectList();
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
List<AccountViewModel> GetAdminAccountsNew();
|
List<AccountViewModel> GetAdminAccountsNew();
|
||||||
|
|||||||
@@ -2,6 +2,7 @@
|
|||||||
using AccountManagement.Domain.TaskAgg;
|
using AccountManagement.Domain.TaskAgg;
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
using AccountManagement.Domain.TaskMessageAgg;
|
using AccountManagement.Domain.TaskMessageAgg;
|
||||||
|
|
||||||
namespace AccountManagement.Domain.AssignAgg;
|
namespace AccountManagement.Domain.AssignAgg;
|
||||||
@@ -71,14 +72,16 @@ public class Assign : EntityBase
|
|||||||
|
|
||||||
public void AcceptTimeRequest()
|
public void AcceptTimeRequest()
|
||||||
{
|
{
|
||||||
TimeRequest = false;
|
ClearRequests();
|
||||||
|
TimeRequest = false;
|
||||||
AcceptedTimeRequest++;
|
AcceptedTimeRequest++;
|
||||||
EndTaskDate = RequestDate < DateTime.Today ? DateTime.Today : RequestDate.Value;
|
EndTaskDate = RequestDate < DateTime.Today ? DateTime.Today : RequestDate.Value;
|
||||||
|
|
||||||
}
|
}
|
||||||
public void RejectTimeRequest()
|
public void RejectTimeRequest()
|
||||||
{
|
{
|
||||||
TimeRequest = false;
|
ClearRequests();
|
||||||
|
TimeRequest = false;
|
||||||
TimeRequestDescription = null;
|
TimeRequestDescription = null;
|
||||||
RequestDate = null;
|
RequestDate = null;
|
||||||
}
|
}
|
||||||
@@ -92,31 +95,36 @@ public class Assign : EntityBase
|
|||||||
}
|
}
|
||||||
public void AcceptCancelRequest()
|
public void AcceptCancelRequest()
|
||||||
{
|
{
|
||||||
IsCanceledRequest = false;
|
ClearRequests();
|
||||||
|
IsCanceledRequest = false;
|
||||||
IsCancel = true;
|
IsCancel = true;
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
public void RejectCancel()
|
public void RejectCancel()
|
||||||
{
|
{
|
||||||
CancelDescription = null;
|
ClearRequests();
|
||||||
|
CancelDescription = null;
|
||||||
IsCanceledRequest = false;
|
IsCanceledRequest = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void CompleteRequest(string? doneDescription)
|
public void CompleteRequest(string? doneDescription)
|
||||||
{
|
{
|
||||||
DoneDescription = doneDescription;
|
ClearRequests();
|
||||||
|
DoneDescription = doneDescription;
|
||||||
IsDoneRequest = true;
|
IsDoneRequest = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void RejectCompleteRequest()
|
public void RejectCompleteRequest()
|
||||||
{
|
{
|
||||||
IsDoneRequest = false;
|
ClearRequests();
|
||||||
|
IsDoneRequest = false;
|
||||||
DoneDescription = null;
|
DoneDescription = null;
|
||||||
}
|
}
|
||||||
public void Completed()
|
public void Completed()
|
||||||
{
|
{
|
||||||
IsDoneRequest = false;
|
ClearRequests();
|
||||||
|
IsDoneRequest = false;
|
||||||
IsDone = true;
|
IsDone = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -128,6 +136,13 @@ public class Assign : EntityBase
|
|||||||
TimeRequest = false;
|
TimeRequest = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void ClearRequests()
|
||||||
|
{
|
||||||
|
IsDoneRequest = false;
|
||||||
|
IsCanceledRequest = false;
|
||||||
|
TimeRequest = false;
|
||||||
|
}
|
||||||
|
|
||||||
public void InsertNewData(DateTime endTaskDate,bool timeRequest,int acceptedTimeRequest,DateTime? requestDate, string timeRequestDescription, bool isCanceledRequest,
|
public void InsertNewData(DateTime endTaskDate,bool timeRequest,int acceptedTimeRequest,DateTime? requestDate, string timeRequestDescription, bool isCanceledRequest,
|
||||||
bool isCancel,string cancelDescription,bool isDone,bool isDoneRequest,string? doneDescription)
|
bool isCancel,string cancelDescription,bool isDone,bool isDoneRequest,string? doneDescription)
|
||||||
{
|
{
|
||||||
@@ -144,4 +159,24 @@ public class Assign : EntityBase
|
|||||||
IsDoneRequest=isDoneRequest;
|
IsDoneRequest=isDoneRequest;
|
||||||
DoneDescription=doneDescription;
|
DoneDescription=doneDescription;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void ChangeAssignedId(long assignedId)
|
||||||
|
{
|
||||||
|
AssignedId = assignedId;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void SetAssignerId(long assignerId)
|
||||||
|
{
|
||||||
|
AssignerId = assignerId;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void ChangeSender(long senderId)
|
||||||
|
{
|
||||||
|
Task.SetSender(senderId);
|
||||||
|
var taskMessageItemsEnumerable =TaskMessageList.SelectMany(m => m.TaskMessageItemsList);
|
||||||
|
foreach (var taskMessageItems in taskMessageItemsEnumerable)
|
||||||
|
{
|
||||||
|
taskMessageItems.SetSenderId(senderId);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
@@ -1,12 +1,15 @@
|
|||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
|
using _0_Framework.Application;
|
||||||
using _0_Framework.Domain;
|
using _0_Framework.Domain;
|
||||||
using AccountManagement.Application.Contracts.Media;
|
using AccountManagement.Application.Contracts.Media;
|
||||||
|
using Microsoft.AspNetCore.Http;
|
||||||
|
|
||||||
|
|
||||||
namespace AccountManagement.Domain.MediaAgg;
|
namespace AccountManagement.Domain.MediaAgg;
|
||||||
|
|
||||||
public interface IMediaRepository:IRepository<long,Media>
|
public interface IMediaRepository : IRepository<long, Media>
|
||||||
{
|
{
|
||||||
|
public string BasePath { get; protected set; }
|
||||||
void CreateMediaWithTaskMedia(long taskId, long mediaId);
|
void CreateMediaWithTaskMedia(long taskId, long mediaId);
|
||||||
List<MediaViewModel> GetMediaByTaskId(long taskId);
|
List<MediaViewModel> GetMediaByTaskId(long taskId);
|
||||||
void Remove(long id);
|
void Remove(long id);
|
||||||
@@ -23,4 +26,6 @@ public interface IMediaRepository:IRepository<long,Media>
|
|||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
|
OperationResult UploadFile(IFormFile file, string fileLabel, string relativePath, int maximumFileLength,
|
||||||
|
List<string> allowedExtensions, string category);
|
||||||
}
|
}
|
||||||
@@ -2,6 +2,7 @@
|
|||||||
using _0_Framework.Domain;
|
using _0_Framework.Domain;
|
||||||
using AccountManagement.Application.Contracts.SubAccount;
|
using AccountManagement.Application.Contracts.SubAccount;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
|
using System.Collections.Specialized;
|
||||||
|
|
||||||
namespace AccountManagement.Domain.SubAccountAgg
|
namespace AccountManagement.Domain.SubAccountAgg
|
||||||
{
|
{
|
||||||
@@ -13,5 +14,6 @@ namespace AccountManagement.Domain.SubAccountAgg
|
|||||||
SubAccount GetDetails(long subAccountId);
|
SubAccount GetDetails(long subAccountId);
|
||||||
SubAccount GetBy(string commandUsername);
|
SubAccount GetBy(string commandUsername);
|
||||||
SubAccountViewModel GetByVerifyCodeAndPhoneNumber(string code, string phone);
|
SubAccountViewModel GetByVerifyCodeAndPhoneNumber(string code, string phone);
|
||||||
|
List<SubAccount> GetBySubAccountRole(long subAccountRoleId);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -13,17 +13,21 @@ namespace AccountManagement.Domain.SubAccountRoleAgg
|
|||||||
|
|
||||||
public List<SubAccountRolePermission> RolePermissions { get; private set; }
|
public List<SubAccountRolePermission> RolePermissions { get; private set; }
|
||||||
public List<SubAccount> SubAccounts { get; private set; }
|
public List<SubAccount> SubAccounts { get; private set; }
|
||||||
|
public List<SubAccountRoleWorkshop> RoleWorkshops { get; set; }
|
||||||
|
|
||||||
private SubAccountRole()
|
private SubAccountRole()
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
public SubAccountRole(string title, List<int> permissions, long accountId)
|
public SubAccountRole(string title, List<int> permissions, long accountId, List<long> workshopIds)
|
||||||
{
|
{
|
||||||
Title = title;
|
Title = title;
|
||||||
RolePermissions = permissions.Select(x => new SubAccountRolePermission(x, id)).ToList();
|
RolePermissions = permissions.Select(x => new SubAccountRolePermission(x, id)).ToList();
|
||||||
AccountId = accountId;
|
AccountId = accountId;
|
||||||
|
RoleWorkshops = workshopIds.Select(x => new SubAccountRoleWorkshop(x, id)).ToList();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void ChangeTitle(string title)
|
public void ChangeTitle(string title)
|
||||||
{
|
{
|
||||||
Title = title;
|
Title = title;
|
||||||
@@ -32,10 +36,12 @@ namespace AccountManagement.Domain.SubAccountRoleAgg
|
|||||||
{
|
{
|
||||||
RolePermissions.AddRange(permissionIds.Select(x => new SubAccountRolePermission(x, id)));
|
RolePermissions.AddRange(permissionIds.Select(x => new SubAccountRolePermission(x, id)));
|
||||||
}
|
}
|
||||||
public void Edit(string title, List<int> permissions)
|
public void Edit(string title, List<int> permissions,List<long> workshopIds)
|
||||||
{
|
{
|
||||||
Title = title;
|
Title = title;
|
||||||
RolePermissions = permissions.Select(x => new SubAccountRolePermission(x, id)).ToList();
|
RolePermissions = permissions.Select(x => new SubAccountRolePermission(x, id)).ToList();
|
||||||
}
|
RoleWorkshops = workshopIds.Select(x => new SubAccountRoleWorkshop(x, id)).ToList();
|
||||||
}
|
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
@@ -0,0 +1,16 @@
|
|||||||
|
using _0_Framework.Domain;
|
||||||
|
|
||||||
|
namespace AccountManagement.Domain.SubAccountRoleAgg;
|
||||||
|
|
||||||
|
public class SubAccountRoleWorkshop:EntityBase
|
||||||
|
{
|
||||||
|
public SubAccountRoleWorkshop(long workshopId, long subAccountId)
|
||||||
|
{
|
||||||
|
WorkshopId = workshopId;
|
||||||
|
SubAccountId = subAccountId;
|
||||||
|
}
|
||||||
|
|
||||||
|
public long WorkshopId { get; set; }
|
||||||
|
public long SubAccountId { get; set; }
|
||||||
|
public SubAccountRole SubAccountRole { get; set; }
|
||||||
|
}
|
||||||
@@ -1,10 +1,12 @@
|
|||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
using System.Security.AccessControl;
|
using System.Security.AccessControl;
|
||||||
using _0_Framework.Domain;
|
using _0_Framework.Domain;
|
||||||
using AccountManagement.Domain.AssignAgg;
|
using AccountManagement.Domain.AssignAgg;
|
||||||
using AccountManagement.Domain.TaskMediaAgg;
|
using AccountManagement.Domain.TaskMediaAgg;
|
||||||
using AccountManagement.Domain.TaskScheduleAgg;
|
using AccountManagement.Domain.TaskScheduleAgg;
|
||||||
|
using OfficeOpenXml.Style;
|
||||||
|
|
||||||
namespace AccountManagement.Domain.TaskAgg;
|
namespace AccountManagement.Domain.TaskAgg;
|
||||||
|
|
||||||
@@ -80,4 +82,40 @@ public class Tasks : EntityBase
|
|||||||
TaskScheduleId = taskScheduleId;
|
TaskScheduleId = taskScheduleId;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void ChangeSender(long senderId)
|
||||||
|
{
|
||||||
|
var prevSender = SenderId;
|
||||||
|
|
||||||
|
var assigners = Assigns.Where(x => x.AssignerId == prevSender).ToList();
|
||||||
|
|
||||||
|
foreach (var assigner in assigners)
|
||||||
|
{
|
||||||
|
assigner.SetAssignerId(senderId);
|
||||||
|
}
|
||||||
|
|
||||||
|
var senderMessageItem = Assigns
|
||||||
|
.SelectMany(x=>x.TaskMessageList
|
||||||
|
.SelectMany(m=>m.TaskMessageItemsList)).Where(x=>x.SenderAccountId == prevSender).ToList();
|
||||||
|
|
||||||
|
var receiverMessageItem = Assigns.SelectMany(x=>x.TaskMessageList
|
||||||
|
.SelectMany(m=>m.TaskMessageItemsList)).Where(x=>x.ReceiverAccountId == prevSender).ToList();
|
||||||
|
|
||||||
|
|
||||||
|
SenderId = senderId;
|
||||||
|
|
||||||
|
foreach (var taskMessageItems in senderMessageItem)
|
||||||
|
{
|
||||||
|
taskMessageItems.SetSenderId(senderId);
|
||||||
|
}
|
||||||
|
foreach (var taskMessageItems in receiverMessageItem)
|
||||||
|
{
|
||||||
|
taskMessageItems.SetReceiver(senderId);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public void SetSender(long senderId)
|
||||||
|
{
|
||||||
|
SenderId = senderId;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
@@ -19,4 +19,13 @@ public class TaskMessageItems:EntityBase
|
|||||||
public TaskMessage TaskMessage { get; set; }
|
public TaskMessage TaskMessage { get; set; }
|
||||||
|
|
||||||
|
|
||||||
|
public void SetSenderId(long senderId)
|
||||||
|
{
|
||||||
|
SenderAccountId = senderId;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void SetReceiver(long receiverId)
|
||||||
|
{
|
||||||
|
ReceiverAccountId = receiverId;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
@@ -16,7 +16,7 @@ public class TaskSchedule:EntityBase
|
|||||||
UnitType = unitType;
|
UnitType = unitType;
|
||||||
UnitNumber = unitNumber;
|
UnitNumber = unitNumber;
|
||||||
LastEndTaskDate = lastEndTaskDate;
|
LastEndTaskDate = lastEndTaskDate;
|
||||||
IsActive = IsActive.False;
|
IsActive = IsActive.True;
|
||||||
}
|
}
|
||||||
public string Count { get; private set; }
|
public string Count { get; private set; }
|
||||||
public TaskScheduleType Type { get; private set; }
|
public TaskScheduleType Type { get; private set; }
|
||||||
|
|||||||
@@ -21,6 +21,10 @@ namespace AccountMangement.Infrastructure.EFCore.Mappings
|
|||||||
opt.WithOwner(x => x.SubAccountRole);
|
opt.WithOwner(x => x.SubAccountRole);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
builder.OwnsMany(x => x.RoleWorkshops, roleWorkshop =>
|
||||||
|
{
|
||||||
|
roleWorkshop.WithOwner(x => x.SubAccountRole).HasForeignKey(x => x.SubAccountId);
|
||||||
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
1303
AccountMangement.Infrastructure.EFCore/Migrations/20250530133036_add workshop to subAccountRole.Designer.cs
generated
Normal file
1303
AccountMangement.Infrastructure.EFCore/Migrations/20250530133036_add workshop to subAccountRole.Designer.cs
generated
Normal file
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,43 @@
|
|||||||
|
using System;
|
||||||
|
using Microsoft.EntityFrameworkCore.Migrations;
|
||||||
|
|
||||||
|
#nullable disable
|
||||||
|
|
||||||
|
namespace AccountMangement.Infrastructure.EFCore.Migrations
|
||||||
|
{
|
||||||
|
/// <inheritdoc />
|
||||||
|
public partial class addworkshoptosubAccountRole : Migration
|
||||||
|
{
|
||||||
|
/// <inheritdoc />
|
||||||
|
protected override void Up(MigrationBuilder migrationBuilder)
|
||||||
|
{
|
||||||
|
migrationBuilder.CreateTable(
|
||||||
|
name: "SubAccountRoleWorkshop",
|
||||||
|
columns: table => new
|
||||||
|
{
|
||||||
|
id = table.Column<long>(type: "bigint", nullable: false)
|
||||||
|
.Annotation("SqlServer:Identity", "1, 1"),
|
||||||
|
SubAccountId = table.Column<long>(type: "bigint", nullable: false),
|
||||||
|
WorkshopId = table.Column<long>(type: "bigint", nullable: false),
|
||||||
|
CreationDate = table.Column<DateTime>(type: "datetime2", nullable: false)
|
||||||
|
},
|
||||||
|
constraints: table =>
|
||||||
|
{
|
||||||
|
table.PrimaryKey("PK_SubAccountRoleWorkshop", x => new { x.SubAccountId, x.id });
|
||||||
|
table.ForeignKey(
|
||||||
|
name: "FK_SubAccountRoleWorkshop_SubAccountRoles_SubAccountId",
|
||||||
|
column: x => x.SubAccountId,
|
||||||
|
principalTable: "SubAccountRoles",
|
||||||
|
principalColumn: "id",
|
||||||
|
onDelete: ReferentialAction.Cascade);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <inheritdoc />
|
||||||
|
protected override void Down(MigrationBuilder migrationBuilder)
|
||||||
|
{
|
||||||
|
migrationBuilder.DropTable(
|
||||||
|
name: "SubAccountRoleWorkshop");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1078,6 +1078,33 @@ namespace AccountMangement.Infrastructure.EFCore.Migrations
|
|||||||
|
|
||||||
modelBuilder.Entity("AccountManagement.Domain.SubAccountRoleAgg.SubAccountRole", b =>
|
modelBuilder.Entity("AccountManagement.Domain.SubAccountRoleAgg.SubAccountRole", b =>
|
||||||
{
|
{
|
||||||
|
b.OwnsMany("AccountManagement.Domain.SubAccountRoleAgg.SubAccountRoleWorkshop", "RoleWorkshops", b1 =>
|
||||||
|
{
|
||||||
|
b1.Property<long>("SubAccountId")
|
||||||
|
.HasColumnType("bigint");
|
||||||
|
|
||||||
|
b1.Property<long>("id")
|
||||||
|
.ValueGeneratedOnAdd()
|
||||||
|
.HasColumnType("bigint");
|
||||||
|
|
||||||
|
SqlServerPropertyBuilderExtensions.UseIdentityColumn(b1.Property<long>("id"));
|
||||||
|
|
||||||
|
b1.Property<DateTime>("CreationDate")
|
||||||
|
.HasColumnType("datetime2");
|
||||||
|
|
||||||
|
b1.Property<long>("WorkshopId")
|
||||||
|
.HasColumnType("bigint");
|
||||||
|
|
||||||
|
b1.HasKey("SubAccountId", "id");
|
||||||
|
|
||||||
|
b1.ToTable("SubAccountRoleWorkshop");
|
||||||
|
|
||||||
|
b1.WithOwner("SubAccountRole")
|
||||||
|
.HasForeignKey("SubAccountId");
|
||||||
|
|
||||||
|
b1.Navigation("SubAccountRole");
|
||||||
|
});
|
||||||
|
|
||||||
b.OwnsMany("AccountManagement.Domain.SubAccountRoleAgg.SubAccountRolePermission", "RolePermissions", b1 =>
|
b.OwnsMany("AccountManagement.Domain.SubAccountRoleAgg.SubAccountRolePermission", "RolePermissions", b1 =>
|
||||||
{
|
{
|
||||||
b1.Property<long>("id")
|
b1.Property<long>("id")
|
||||||
@@ -1105,6 +1132,8 @@ namespace AccountMangement.Infrastructure.EFCore.Migrations
|
|||||||
});
|
});
|
||||||
|
|
||||||
b.Navigation("RolePermissions");
|
b.Navigation("RolePermissions");
|
||||||
|
|
||||||
|
b.Navigation("RoleWorkshops");
|
||||||
});
|
});
|
||||||
|
|
||||||
modelBuilder.Entity("AccountManagement.Domain.TaskAgg.Tasks", b =>
|
modelBuilder.Entity("AccountManagement.Domain.TaskAgg.Tasks", b =>
|
||||||
|
|||||||
@@ -312,6 +312,17 @@ public class AccountRepository : RepositoryBase<long, Account>, IAccountReposito
|
|||||||
IsActiveString = x.IsActive ? "true" : "false",
|
IsActiveString = x.IsActive ? "true" : "false",
|
||||||
}).ToList();
|
}).ToList();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public async Task<List<AccountSelectListViewModel>> GetAdminSelectList()
|
||||||
|
{
|
||||||
|
return await _context.Accounts.Where(x => x.AdminAreaPermission == "true").Select(x => new AccountSelectListViewModel()
|
||||||
|
{
|
||||||
|
Id = x.id,
|
||||||
|
Name = x.Fullname,
|
||||||
|
RoleId = x.RoleId
|
||||||
|
}).ToListAsync();
|
||||||
|
}
|
||||||
|
|
||||||
//public List<AccountViewModel> GetAdminAccounts()
|
//public List<AccountViewModel> GetAdminAccounts()
|
||||||
//{
|
//{
|
||||||
// return _context.Accounts.Where(x=>x.AdminAreaPermission == "true" && x.IsActiveString == "true").Select(x => new AccountViewModel()
|
// return _context.Accounts.Where(x=>x.AdminAreaPermission == "true" && x.IsActiveString == "true").Select(x => new AccountViewModel()
|
||||||
|
|||||||
@@ -1,5 +1,8 @@
|
|||||||
using System.Collections.Generic;
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.IO;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
|
using _0_Framework.Application;
|
||||||
using _0_Framework.InfraStructure;
|
using _0_Framework.InfraStructure;
|
||||||
using AccountManagement.Application.Contracts.Media;
|
using AccountManagement.Application.Contracts.Media;
|
||||||
using AccountManagement.Domain.AdminResponseMediaAgg;
|
using AccountManagement.Domain.AdminResponseMediaAgg;
|
||||||
@@ -7,27 +10,35 @@ using AccountManagement.Domain.ClientResponseMediaAgg;
|
|||||||
using AccountManagement.Domain.MediaAgg;
|
using AccountManagement.Domain.MediaAgg;
|
||||||
using AccountManagement.Domain.TaskMediaAgg;
|
using AccountManagement.Domain.TaskMediaAgg;
|
||||||
using AccountManagement.Domain.TicketMediasAgg;
|
using AccountManagement.Domain.TicketMediasAgg;
|
||||||
|
using Microsoft.AspNetCore.Hosting;
|
||||||
|
using Microsoft.AspNetCore.Http;
|
||||||
using Microsoft.EntityFrameworkCore;
|
using Microsoft.EntityFrameworkCore;
|
||||||
|
|
||||||
namespace AccountMangement.Infrastructure.EFCore.Repository;
|
namespace AccountMangement.Infrastructure.EFCore.Repository;
|
||||||
|
|
||||||
public class MediaRepository:RepositoryBase<long,Media>,IMediaRepository
|
public class MediaRepository : RepositoryBase<long, Media>, IMediaRepository
|
||||||
{
|
{
|
||||||
|
private const string _basePath = "Storage/Medias";
|
||||||
|
public string BasePath { get; set; }
|
||||||
|
|
||||||
|
|
||||||
private readonly AccountContext _accountContext;
|
private readonly AccountContext _accountContext;
|
||||||
public MediaRepository( AccountContext taskManagerContext) : base(taskManagerContext)
|
public MediaRepository(AccountContext taskManagerContext, IWebHostEnvironment webHostEnvironment) : base(taskManagerContext)
|
||||||
{
|
{
|
||||||
_accountContext = taskManagerContext;
|
_accountContext = taskManagerContext;
|
||||||
|
BasePath = webHostEnvironment.ContentRootPath + "/Storage";
|
||||||
}
|
}
|
||||||
//ساخت جدول واسط بین مدیا و نسک
|
//ساخت جدول واسط بین مدیا و نسک
|
||||||
//نکته: این متد ذخیره انجام نمیدهد
|
//نکته: این متد ذخیره انجام نمیدهد
|
||||||
|
|
||||||
public void CreateMediaWithTaskMedia(long taskId, long mediaId)
|
public void CreateMediaWithTaskMedia(long taskId, long mediaId)
|
||||||
{
|
{
|
||||||
var Taskmedias = new TaskMedia(taskId,mediaId);
|
var Taskmedias = new TaskMedia(taskId, mediaId);
|
||||||
_accountContext.Add(Taskmedias);
|
_accountContext.Add(Taskmedias);
|
||||||
}
|
}
|
||||||
public void Remove(long id)
|
public void Remove(long id)
|
||||||
{
|
{
|
||||||
var media = Get(id);
|
var media = Get(id);
|
||||||
Remove(media);
|
Remove(media);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -77,6 +88,48 @@ public class MediaRepository:RepositoryBase<long,Media>,IMediaRepository
|
|||||||
{
|
{
|
||||||
return _accountContext.Medias.Where(x => mediaIds.Contains(x.id)).ToList();
|
return _accountContext.Medias.Where(x => mediaIds.Contains(x.id)).ToList();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public OperationResult UploadFile(IFormFile file, string fileLabel, string relativePath, int maximumFileLength,
|
||||||
|
List<string> allowedExtensions, string category)
|
||||||
|
{
|
||||||
|
OperationResult op = new();
|
||||||
|
var path = Path.Combine(_basePath, relativePath);
|
||||||
|
var fileExtension = Path.GetExtension(file.FileName);
|
||||||
|
|
||||||
|
if (file == null || file.Length == 0)
|
||||||
|
return op.Failed("خطای سیستمی");
|
||||||
|
|
||||||
|
if (file.Length > (maximumFileLength * 1024 * 1024))
|
||||||
|
return op.Failed($"حجم فایل نمی تواند بیشتر از " +
|
||||||
|
$"{maximumFileLength}" +
|
||||||
|
$"مگابایت باشد");
|
||||||
|
|
||||||
|
if (!allowedExtensions.Contains(fileExtension.ToLower()))
|
||||||
|
{
|
||||||
|
var operationMessage = ":فرمت فایل باید یکی از موارد زیر باشد";
|
||||||
|
operationMessage += "\n";
|
||||||
|
operationMessage += string.Join(" ", allowedExtensions);
|
||||||
|
return op.Failed(operationMessage);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
Directory.CreateDirectory(path);
|
||||||
|
|
||||||
|
var extension = Path.GetExtension(file.FileName);
|
||||||
|
|
||||||
|
var uniqueFileName = $"{fileLabel}-{DateTime.Now.Ticks}{extension}";
|
||||||
|
var filePath = Path.Combine(path, uniqueFileName);
|
||||||
|
using (var fileStream = new FileStream(filePath, FileMode.CreateNew))
|
||||||
|
{
|
||||||
|
file.CopyTo(fileStream);
|
||||||
|
}
|
||||||
|
var mediaEntity = new Media(filePath, extension, "فایل", category);
|
||||||
|
Create(mediaEntity);
|
||||||
|
SaveChanges();
|
||||||
|
|
||||||
|
return op.Succcedded(mediaEntity.id);
|
||||||
|
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|||||||
@@ -77,5 +77,10 @@ namespace AccountMangement.Infrastructure.EFCore.Repository
|
|||||||
Username = entity.Username
|
Username = entity.Username
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public List<SubAccount> GetBySubAccountRole(long subAccountRoleId)
|
||||||
|
{
|
||||||
|
return _context.SubAccounts.Where(x => x.SubAccountRoleId == subAccountRoleId).ToList();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -106,14 +106,16 @@ public class TaskRepository : RepositoryBase<long, Tasks>, ITaskRepository
|
|||||||
{
|
{
|
||||||
res.EndTaskDate = _accountContext.Assigns.First(a => a.TaskId == res.Id && a.AssignedId == userId)
|
res.EndTaskDate = _accountContext.Assigns.First(a => a.TaskId == res.Id && a.AssignedId == userId)
|
||||||
.EndTaskDate.ToFarsi();
|
.EndTaskDate.ToFarsi();
|
||||||
|
var userAssign = res.AssignViewModels.First(x => x.AssignedId == userId);
|
||||||
|
|
||||||
res.AssignViewModels = res.AssignViewModels.Where(x => x.AssignedId == userId).ToList();
|
res.AssignViewModels = res.AssignViewModels.Where(x => x.AssignedId == userId).ToList();
|
||||||
res.IsDone = res.AssignViewModels.First(x => x.AssignedId == userId).IsDone;
|
res.IsDone = userAssign.IsDone;
|
||||||
res.IsCancel = res.AssignViewModels.First(x => x.AssignedId == userId).IsCancel;
|
res.IsCancel = userAssign.IsCancel;
|
||||||
|
res.HasRequest = userAssign.IsCanceledRequest || userAssign.TimeRequest ||
|
||||||
|
userAssign.IsDoneRequest;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (res.TaskScheduleId>0)
|
if (res.TaskScheduleId > 0)
|
||||||
{
|
{
|
||||||
var taskSchedule = _accountContext.TaskSchedules.FirstOrDefault(x => x.id == res.TaskScheduleId);
|
var taskSchedule = _accountContext.TaskSchedules.FirstOrDefault(x => x.id == res.TaskScheduleId);
|
||||||
|
|
||||||
@@ -121,7 +123,7 @@ public class TaskRepository : RepositoryBase<long, Tasks>, ITaskRepository
|
|||||||
res.ScheduleType = taskSchedule.Type;
|
res.ScheduleType = taskSchedule.Type;
|
||||||
res.ScheduleCount = taskSchedule.Count;
|
res.ScheduleCount = taskSchedule.Count;
|
||||||
res.ScheduleUnitNumber = taskSchedule.UnitNumber;
|
res.ScheduleUnitNumber = taskSchedule.UnitNumber;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
//_accountContext.Tasks.Where(x => x.id == TaskId).Select(x => new EditTask()
|
//_accountContext.Tasks.Where(x => x.id == TaskId).Select(x => new EditTask()
|
||||||
@@ -160,8 +162,6 @@ public class TaskRepository : RepositoryBase<long, Tasks>, ITaskRepository
|
|||||||
Remove(task);
|
Remove(task);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
public List<TaskViewModel> GetRequestedTasks(TaskSearchModel searchModel)
|
public List<TaskViewModel> GetRequestedTasks(TaskSearchModel searchModel)
|
||||||
{
|
{
|
||||||
var accountId = long.Parse(_contextAccessor.HttpContext.User.FindFirst("AccountId").Value);
|
var accountId = long.Parse(_contextAccessor.HttpContext.User.FindFirst("AccountId").Value);
|
||||||
@@ -900,7 +900,7 @@ public class TaskRepository : RepositoryBase<long, Tasks>, ITaskRepository
|
|||||||
AcceptedTimeRequest = x.AcceptedTimeRequest,
|
AcceptedTimeRequest = x.AcceptedTimeRequest,
|
||||||
IsCancelRequest = x.IsCancelRequest,
|
IsCancelRequest = x.IsCancelRequest,
|
||||||
ContractingPartyName = x.ContractingPartyName,
|
ContractingPartyName = x.ContractingPartyName,
|
||||||
Color = x.IsDone ? "green" : SetTasksColors(x.EndTaskDateGE, x.IsCancel),
|
Color = x.IsDone ? "green" : SetTasksColors(x.EndTaskDateGE, x.IsCancel,false),
|
||||||
MediaCount = x.MediaCount,
|
MediaCount = x.MediaCount,
|
||||||
HasAttachment = x.MediaCount > 0,
|
HasAttachment = x.MediaCount > 0,
|
||||||
SelfName = x.SelfName,
|
SelfName = x.SelfName,
|
||||||
@@ -1229,7 +1229,7 @@ public class TaskRepository : RepositoryBase<long, Tasks>, ITaskRepository
|
|||||||
AcceptedTimeRequest = x.AcceptedTimeRequest,
|
AcceptedTimeRequest = x.AcceptedTimeRequest,
|
||||||
IsCancelRequest = x.IsCancelRequest,
|
IsCancelRequest = x.IsCancelRequest,
|
||||||
ContractingPartyName = x.ContractingPartyName,
|
ContractingPartyName = x.ContractingPartyName,
|
||||||
Color = x.IsDone ? "green" : SetTasksColors(x.EndTaskDateGE, x.IsCancel),
|
Color = x.IsDone ? "green" : SetTasksColors(x.EndTaskDateGE, x.IsCancel, false),
|
||||||
MediaCount = x.MediaCount,
|
MediaCount = x.MediaCount,
|
||||||
HasAttachment = x.MediaCount > 0,
|
HasAttachment = x.MediaCount > 0,
|
||||||
SelfName = x.SelfName,
|
SelfName = x.SelfName,
|
||||||
@@ -1788,7 +1788,7 @@ public class TaskRepository : RepositoryBase<long, Tasks>, ITaskRepository
|
|||||||
AcceptedTimeRequest = x.AcceptedTimeRequest,
|
AcceptedTimeRequest = x.AcceptedTimeRequest,
|
||||||
IsCancelRequest = x.IsCancelRequest,
|
IsCancelRequest = x.IsCancelRequest,
|
||||||
ContractingPartyName = x.ContractingPartyName,
|
ContractingPartyName = x.ContractingPartyName,
|
||||||
Color = x.IsDone ? "green" : SetTasksColors(x.EndTaskDateGE, x.IsCancel),
|
Color = x.IsDone ? "green" : SetTasksColors(x.EndTaskDateGE, x.IsCancel, false),
|
||||||
MediaCount = x.MediaCount,
|
MediaCount = x.MediaCount,
|
||||||
HasAttachment = x.MediaCount > 0,
|
HasAttachment = x.MediaCount > 0,
|
||||||
SelfName = x.SelfName,
|
SelfName = x.SelfName,
|
||||||
@@ -1866,7 +1866,7 @@ public class TaskRepository : RepositoryBase<long, Tasks>, ITaskRepository
|
|||||||
.Include(x => x.Task).ThenInclude(x => x.TaskSchedule)
|
.Include(x => x.Task).ThenInclude(x => x.TaskSchedule)
|
||||||
.Where(x =>
|
.Where(x =>
|
||||||
x.Task.IsActiveString == "true" && x.Task.SenderId == accountId
|
x.Task.IsActiveString == "true" && x.Task.SenderId == accountId
|
||||||
&& x.Task.TaskScheduleId != null && x.Task.TaskScheduleId > 0 && (!x.IsCanceledRequest && !x.TimeRequest && !x.IsDoneRequest) && x.Task.TaskSchedule.IsActive == IsActive.True);
|
&& x.Task.TaskScheduleId != null && x.Task.TaskScheduleId > 0 && (!x.IsCanceledRequest && !x.TimeRequest && !x.IsDoneRequest) && x.Task.TaskSchedule.IsActive== IsActive.True);
|
||||||
if (!string.IsNullOrWhiteSpace(searchModel.GeneralSearch))
|
if (!string.IsNullOrWhiteSpace(searchModel.GeneralSearch))
|
||||||
{
|
{
|
||||||
raw = raw.Where(x =>
|
raw = raw.Where(x =>
|
||||||
@@ -2056,7 +2056,7 @@ public class TaskRepository : RepositoryBase<long, Tasks>, ITaskRepository
|
|||||||
TaskScheduleId = x.TaskScheduleId
|
TaskScheduleId = x.TaskScheduleId
|
||||||
|
|
||||||
|
|
||||||
}).ToList();
|
}).ToList();
|
||||||
|
|
||||||
|
|
||||||
final = final.Select(x => new TaskViewModel()
|
final = final.Select(x => new TaskViewModel()
|
||||||
@@ -2082,7 +2082,7 @@ public class TaskRepository : RepositoryBase<long, Tasks>, ITaskRepository
|
|||||||
AcceptedTimeRequest = x.AcceptedTimeRequest,
|
AcceptedTimeRequest = x.AcceptedTimeRequest,
|
||||||
IsCancelRequest = x.IsCancelRequest,
|
IsCancelRequest = x.IsCancelRequest,
|
||||||
ContractingPartyName = x.ContractingPartyName,
|
ContractingPartyName = x.ContractingPartyName,
|
||||||
Color = x.IsDone ? "green" : SetTasksColors(x.EndTaskDateGE, x.IsCancel),
|
Color = x.IsDone ? "green" : SetTasksColors(x.EndTaskDateGE, x.IsCancel, false),
|
||||||
MediaCount = x.MediaCount,
|
MediaCount = x.MediaCount,
|
||||||
HasAttachment = x.MediaCount > 0,
|
HasAttachment = x.MediaCount > 0,
|
||||||
SelfName = x.SelfName,
|
SelfName = x.SelfName,
|
||||||
@@ -2095,7 +2095,7 @@ public class TaskRepository : RepositoryBase<long, Tasks>, ITaskRepository
|
|||||||
ScheduleUnitType = x.ScheduleUnitType,
|
ScheduleUnitType = x.ScheduleUnitType,
|
||||||
TaskScheduleId = x.TaskScheduleId
|
TaskScheduleId = x.TaskScheduleId
|
||||||
|
|
||||||
}).ToList();
|
}).ToList();
|
||||||
|
|
||||||
final = final.Select(x => new TaskViewModel()
|
final = final.Select(x => new TaskViewModel()
|
||||||
{
|
{
|
||||||
@@ -2149,12 +2149,15 @@ public class TaskRepository : RepositoryBase<long, Tasks>, ITaskRepository
|
|||||||
ScheduleUnitType = x.ScheduleUnitType,
|
ScheduleUnitType = x.ScheduleUnitType,
|
||||||
TaskScheduleId = x.TaskScheduleId
|
TaskScheduleId = x.TaskScheduleId
|
||||||
|
|
||||||
}).ToList();
|
}).ToList();
|
||||||
return final;
|
return final;
|
||||||
}
|
}
|
||||||
|
|
||||||
public string SetTasksColors(DateTime date, bool isCancel)
|
public string SetTasksColors(DateTime date, bool isCancel,bool hasRequest)
|
||||||
{
|
{
|
||||||
|
if (hasRequest)
|
||||||
|
return "red";
|
||||||
|
|
||||||
if (isCancel)
|
if (isCancel)
|
||||||
{
|
{
|
||||||
//return "brown";
|
//return "brown";
|
||||||
@@ -2390,7 +2393,7 @@ public class TaskRepository : RepositoryBase<long, Tasks>, ITaskRepository
|
|||||||
|
|
||||||
public List<Tasks> GetTasksByTaskScheduleId(long taskScheduleId)
|
public List<Tasks> GetTasksByTaskScheduleId(long taskScheduleId)
|
||||||
{
|
{
|
||||||
return _accountContext.Tasks.Include(x=>x.Assigns).Where(x => x.TaskScheduleId != null && x.TaskScheduleId == taskScheduleId).ToList();
|
return _accountContext.Tasks.Include(x => x.Assigns).Where(x => x.TaskScheduleId != null && x.TaskScheduleId == taskScheduleId).ToList();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -2658,7 +2661,7 @@ public class TaskRepository : RepositoryBase<long, Tasks>, ITaskRepository
|
|||||||
AcceptedTimeRequest = x.AcceptedTimeRequest,
|
AcceptedTimeRequest = x.AcceptedTimeRequest,
|
||||||
IsCancelRequest = x.IsCancelRequest,
|
IsCancelRequest = x.IsCancelRequest,
|
||||||
ContractingPartyName = x.ContractingPartyName,
|
ContractingPartyName = x.ContractingPartyName,
|
||||||
Color = x.IsDone ? "green" : SetTasksColors(x.EndTaskDateGE, x.IsCancel),
|
Color = x.IsDone ? "green" : SetTasksColors(x.EndTaskDateGE, x.IsCancel, false),
|
||||||
MediaCount = x.MediaCount,
|
MediaCount = x.MediaCount,
|
||||||
HasAttachment = x.MediaCount > 0,
|
HasAttachment = x.MediaCount > 0,
|
||||||
SelfName = x.SelfName,
|
SelfName = x.SelfName,
|
||||||
@@ -2722,6 +2725,7 @@ public class TaskRepository : RepositoryBase<long, Tasks>, ITaskRepository
|
|||||||
{
|
{
|
||||||
var accountId = long.Parse(_contextAccessor.HttpContext.User.FindFirst("AccountId").Value);
|
var accountId = long.Parse(_contextAccessor.HttpContext.User.FindFirst("AccountId").Value);
|
||||||
var positionValue = int.Parse(_contextAccessor.HttpContext.User.FindFirst("PositionValue").Value);
|
var positionValue = int.Parse(_contextAccessor.HttpContext.User.FindFirst("PositionValue").Value);
|
||||||
|
var today = DateTime.Today;
|
||||||
var emptyAcc = new AccountViewModel()
|
var emptyAcc = new AccountViewModel()
|
||||||
{
|
{
|
||||||
Fullname = "-",
|
Fullname = "-",
|
||||||
@@ -2731,7 +2735,7 @@ public class TaskRepository : RepositoryBase<long, Tasks>, ITaskRepository
|
|||||||
var raw = _accountContext.Assigns.Include(x => x.Task).ThenInclude(x => x.TaskMedias)
|
var raw = _accountContext.Assigns.Include(x => x.Task).ThenInclude(x => x.TaskMedias)
|
||||||
.ThenInclude(x => x.Media)
|
.ThenInclude(x => x.Media)
|
||||||
.Where(x =>
|
.Where(x =>
|
||||||
x.Task.IsActiveString == "true" && x.AssignedId == accountId && (!x.IsCanceledRequest && !x.TimeRequest && !x.IsDoneRequest) && x.Task.TicketId == null);
|
x.Task.IsActiveString == "true" && x.AssignedId == accountId && x.Task.TicketId == null &&!x.IsDoneRequest && !x.IsCanceledRequest);
|
||||||
if (!string.IsNullOrWhiteSpace(searchModel.GeneralSearch))
|
if (!string.IsNullOrWhiteSpace(searchModel.GeneralSearch))
|
||||||
{
|
{
|
||||||
raw = raw.Where(x =>
|
raw = raw.Where(x =>
|
||||||
@@ -2764,6 +2768,7 @@ public class TaskRepository : RepositoryBase<long, Tasks>, ITaskRepository
|
|||||||
MediaCount = _accountContext.TaskMedias.Count(m => m.TaskId == x.Task.id),
|
MediaCount = _accountContext.TaskMedias.Count(m => m.TaskId == x.Task.id),
|
||||||
Description = x.Task.Description,
|
Description = x.Task.Description,
|
||||||
IsDoneRequest = x.IsDoneRequest,
|
IsDoneRequest = x.IsDoneRequest,
|
||||||
|
|
||||||
});
|
});
|
||||||
if (!string.IsNullOrWhiteSpace(searchModel.GeneralSearch))
|
if (!string.IsNullOrWhiteSpace(searchModel.GeneralSearch))
|
||||||
{
|
{
|
||||||
@@ -2802,7 +2807,8 @@ public class TaskRepository : RepositoryBase<long, Tasks>, ITaskRepository
|
|||||||
ContractingPartyName = x.ContractingPartyName,
|
ContractingPartyName = x.ContractingPartyName,
|
||||||
MediaCount = x.MediaCount,
|
MediaCount = x.MediaCount,
|
||||||
Description = x.Description,
|
Description = x.Description,
|
||||||
IsDoneRequest = x.IsDoneRequest
|
IsDoneRequest = x.IsDoneRequest,
|
||||||
|
HasRequest = x.IsCancelRequest || x.RequestTime || x.IsDoneRequest
|
||||||
});
|
});
|
||||||
if (!string.IsNullOrWhiteSpace(searchModel.StartDate) && !string.IsNullOrWhiteSpace(searchModel.EndDate))
|
if (!string.IsNullOrWhiteSpace(searchModel.StartDate) && !string.IsNullOrWhiteSpace(searchModel.EndDate))
|
||||||
{
|
{
|
||||||
@@ -2871,8 +2877,10 @@ public class TaskRepository : RepositoryBase<long, Tasks>, ITaskRepository
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
var orderResult = result.OrderByDescending(x => x.IsCancel ? 0 : 1).ThenBy(x => x.IsDone ? 1 : 0)
|
var orderResult = result.OrderBy(x => x.IsDone || x.IsCancel)
|
||||||
.ThenBy(x => x.EndTaskDateGE);
|
.ThenByDescending(x => x.EndTaskDateGE <= today.AddDays(1) && !x.RequestTime)
|
||||||
|
.ThenByDescending(x => x.RequestTime)
|
||||||
|
.ThenBy(x => x.EndTaskDateGE); // مرتبسازی داخلی بر اساس تاریخ
|
||||||
|
|
||||||
|
|
||||||
var final = orderResult.Skip(searchModel.PageIndex).Take(30).ToList();
|
var final = orderResult.Skip(searchModel.PageIndex).Take(30).ToList();
|
||||||
@@ -2906,7 +2914,7 @@ public class TaskRepository : RepositoryBase<long, Tasks>, ITaskRepository
|
|||||||
MediaCount = x.MediaCount,
|
MediaCount = x.MediaCount,
|
||||||
SelfName = x.SelfName,
|
SelfName = x.SelfName,
|
||||||
Description = x.Description,
|
Description = x.Description,
|
||||||
IsDoneRequest = x.IsDoneRequest
|
IsDoneRequest = x.IsDoneRequest,
|
||||||
|
|
||||||
}).ToList();
|
}).ToList();
|
||||||
|
|
||||||
@@ -2934,7 +2942,7 @@ public class TaskRepository : RepositoryBase<long, Tasks>, ITaskRepository
|
|||||||
AcceptedTimeRequest = x.AcceptedTimeRequest,
|
AcceptedTimeRequest = x.AcceptedTimeRequest,
|
||||||
IsCancelRequest = x.IsCancelRequest,
|
IsCancelRequest = x.IsCancelRequest,
|
||||||
ContractingPartyName = x.ContractingPartyName,
|
ContractingPartyName = x.ContractingPartyName,
|
||||||
Color = x.IsDone ? "green" : SetTasksColors(x.EndTaskDateGE, x.IsCancel),
|
Color = x.IsDone ? "green" : SetTasksColors(x.EndTaskDateGE, x.IsCancel,x.RequestTime),
|
||||||
MediaCount = x.MediaCount,
|
MediaCount = x.MediaCount,
|
||||||
HasAttachment = x.MediaCount > 0,
|
HasAttachment = x.MediaCount > 0,
|
||||||
SelfName = x.SelfName,
|
SelfName = x.SelfName,
|
||||||
@@ -2993,6 +3001,8 @@ public class TaskRepository : RepositoryBase<long, Tasks>, ITaskRepository
|
|||||||
AssignedName = "-",
|
AssignedName = "-",
|
||||||
AssignedPositionValue = 0
|
AssignedPositionValue = 0
|
||||||
},
|
},
|
||||||
|
HasRequest = x.IsCancelRequest || x.RequestTime || x.IsDoneRequest
|
||||||
|
|
||||||
}).ToList();
|
}).ToList();
|
||||||
return final;
|
return final;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3,25 +3,26 @@ using System.Threading.Tasks;
|
|||||||
using _0_Framework.Application;
|
using _0_Framework.Application;
|
||||||
using _0_Framework.InfraStructure;
|
using _0_Framework.InfraStructure;
|
||||||
using AccountManagement.Application.Contracts.Media;
|
using AccountManagement.Application.Contracts.Media;
|
||||||
|
using AccountManagement.Application.Contracts.Task;
|
||||||
using AccountManagement.Application.Contracts.TaskSchedule;
|
using AccountManagement.Application.Contracts.TaskSchedule;
|
||||||
using AccountManagement.Domain.TaskScheduleAgg;
|
using AccountManagement.Domain.TaskScheduleAgg;
|
||||||
using Microsoft.EntityFrameworkCore;
|
using Microsoft.EntityFrameworkCore;
|
||||||
|
|
||||||
namespace AccountMangement.Infrastructure.EFCore.Repository;
|
namespace AccountMangement.Infrastructure.EFCore.Repository;
|
||||||
|
|
||||||
public class TaskScheduleRepository: RepositoryBase<long, TaskSchedule>, ITaskScheduleRepository
|
public class TaskScheduleRepository : RepositoryBase<long, TaskSchedule>, ITaskScheduleRepository
|
||||||
{
|
{
|
||||||
private readonly AccountContext _accountContext;
|
private readonly AccountContext _accountContext;
|
||||||
|
|
||||||
public TaskScheduleRepository(AccountContext accountContext):base(accountContext)
|
public TaskScheduleRepository(AccountContext accountContext) : base(accountContext)
|
||||||
{
|
{
|
||||||
_accountContext = accountContext;
|
_accountContext = accountContext;
|
||||||
}
|
}
|
||||||
|
|
||||||
public async Task<TaskScheduleDetailsViewModel> GetDetails(long id)
|
public async Task<TaskScheduleDetailsViewModel> GetDetails(long id)
|
||||||
{
|
{
|
||||||
var taskSchedule=await _accountContext.TaskSchedules.Include(x=>x.TasksList).ThenInclude(x=>x.Assigns)
|
var taskSchedule = await _accountContext.TaskSchedules.Include(x => x.TasksList).ThenInclude(x => x.Assigns)
|
||||||
.Include(x=>x.TasksList).ThenInclude(x=>x.TaskMedias).ThenInclude(x=>x.Media).FirstOrDefaultAsync(x => x.id == id);
|
.Include(x => x.TasksList).ThenInclude(x => x.TaskMedias).ThenInclude(x => x.Media).FirstOrDefaultAsync(x => x.id == id);
|
||||||
if (taskSchedule == null)
|
if (taskSchedule == null)
|
||||||
{
|
{
|
||||||
return null;
|
return null;
|
||||||
@@ -29,7 +30,7 @@ public class TaskScheduleRepository: RepositoryBase<long, TaskSchedule>, ITaskSc
|
|||||||
|
|
||||||
var firstTaskDetails = taskSchedule.TasksList.First();
|
var firstTaskDetails = taskSchedule.TasksList.First();
|
||||||
|
|
||||||
var firstTimeAssigns = firstTaskDetails.Assigns.Where(x=>x.FirstTimeCreation).ToList();
|
var firstTimeAssigns = firstTaskDetails.Assigns.Where(x => x.FirstTimeCreation).ToList();
|
||||||
|
|
||||||
var assignedIds = firstTimeAssigns.Select(x => x.AssignedId).ToList();
|
var assignedIds = firstTimeAssigns.Select(x => x.AssignedId).ToList();
|
||||||
|
|
||||||
@@ -46,13 +47,15 @@ public class TaskScheduleRepository: RepositoryBase<long, TaskSchedule>, ITaskSc
|
|||||||
Title = firstTaskDetails.Title,
|
Title = firstTaskDetails.Title,
|
||||||
Description = firstTaskDetails.Description,
|
Description = firstTaskDetails.Description,
|
||||||
ContractingPartyName = firstTaskDetails.ContractingPartyName,
|
ContractingPartyName = firstTaskDetails.ContractingPartyName,
|
||||||
AssignedName = assignedAccounts.Select(x=>x.Fullname).ToList(),
|
AssignedName = assignedAccounts.Select(x => x.Fullname).ToList(),
|
||||||
CreationDateFa = firstTaskDetails.CreationDate.ToFarsi(),
|
CreationDateFa = firstTaskDetails.CreationDate.ToFarsi(),
|
||||||
SenderName = sender.Fullname,
|
SenderName = sender.Fullname,
|
||||||
TaskScheduleType = taskSchedule.Type,
|
TaskScheduleType = taskSchedule.Type,
|
||||||
TaskScheduleUnitType = taskSchedule.UnitType,
|
TaskScheduleUnitType = taskSchedule.UnitType,
|
||||||
UnitNumber = taskSchedule.UnitNumber,
|
UnitNumber = taskSchedule.UnitNumber,
|
||||||
Medias = firstTaskDetails.TaskMedias.Select(x=> new MediaViewModel()
|
Count = taskSchedule.Type == TaskScheduleType.Limited ? taskSchedule.Count : "نامحدود",
|
||||||
|
FirstEndTaskDate = firstTaskDetails.Assigns.FirstOrDefault()?.EndTaskDate.ToFarsi() ?? "",
|
||||||
|
Medias = firstTaskDetails.TaskMedias.Select(x => new MediaViewModel()
|
||||||
{
|
{
|
||||||
Category = x.Media.Category,
|
Category = x.Media.Category,
|
||||||
Id = x.MediaId,
|
Id = x.MediaId,
|
||||||
|
|||||||
@@ -0,0 +1,55 @@
|
|||||||
|
using System;
|
||||||
|
using System.IO;
|
||||||
|
using System.Linq;
|
||||||
|
using _0_Framework.Domain;
|
||||||
|
using CompanyManagment.App.Contracts.AdminMonthlyOverview;
|
||||||
|
using Microsoft.AspNetCore.JsonPatch.Operations;
|
||||||
|
|
||||||
|
namespace Company.Domain.AdminMonthlyOverviewAgg;
|
||||||
|
|
||||||
|
public class AdminMonthlyOverview:EntityBase
|
||||||
|
{
|
||||||
|
public AdminMonthlyOverview(long workshopId, int month, int year, AdminMonthlyOverviewStatus status)
|
||||||
|
{
|
||||||
|
WorkshopId = workshopId;
|
||||||
|
Month = month;
|
||||||
|
Year = year;
|
||||||
|
Status = status;
|
||||||
|
}
|
||||||
|
|
||||||
|
public long WorkshopId { get; set; }
|
||||||
|
public int Month { get; set; }
|
||||||
|
public int Year { get; set; }
|
||||||
|
public AdminMonthlyOverviewStatus Status { get; set; }
|
||||||
|
|
||||||
|
public void Next()
|
||||||
|
{
|
||||||
|
var maxValue = Enum.GetValues(typeof(AdminMonthlyOverviewStatus))
|
||||||
|
.Cast<AdminMonthlyOverviewStatus>()
|
||||||
|
.Max();
|
||||||
|
|
||||||
|
if (Status >= maxValue)
|
||||||
|
{
|
||||||
|
throw new InvalidDataException("تغییر وضعیت وارد شده نامعتبر است");
|
||||||
|
}
|
||||||
|
Status += 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void Back()
|
||||||
|
{
|
||||||
|
var minValue = Enum.GetValues(typeof(AdminMonthlyOverviewStatus))
|
||||||
|
.Cast<AdminMonthlyOverviewStatus>()
|
||||||
|
.Min();
|
||||||
|
|
||||||
|
if (Status <= minValue)
|
||||||
|
{
|
||||||
|
throw new InvalidDataException("تغییر وضعیت وارد شده نامعتبر است");
|
||||||
|
}
|
||||||
|
Status -= 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void SetStatus(AdminMonthlyOverviewStatus status)
|
||||||
|
{
|
||||||
|
Status = status;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,12 @@
|
|||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
using _0_Framework.Domain;
|
||||||
|
using CompanyManagment.App.Contracts.AdminMonthlyOverview;
|
||||||
|
|
||||||
|
namespace Company.Domain.AdminMonthlyOverviewAgg;
|
||||||
|
|
||||||
|
public interface IAdminMonthlyOverviewRepository:IRepository<long, AdminMonthlyOverview>
|
||||||
|
{
|
||||||
|
Task<List<AdminMonthlyOverviewListViewModel>> GetWorkshopStatus(AdminMonthlyOverviewSearchModel searchModel);
|
||||||
|
Task<AdminMonthlyOverViewCounterVm> GetCounter(int year, int month, long accountId);
|
||||||
|
}
|
||||||
@@ -1,6 +1,11 @@
|
|||||||
using System;
|
using System;
|
||||||
|
using System.Collections;
|
||||||
|
using System.Collections.Generic;
|
||||||
using _0_Framework.Application;
|
using _0_Framework.Application;
|
||||||
using _0_Framework.Domain;
|
using _0_Framework.Domain;
|
||||||
|
using _0_Framework.Domain.CustomizeCheckoutShared.Enums;
|
||||||
|
using Company.Domain.CheckoutAgg.ValueObjects;
|
||||||
|
using Company.Domain.CustomizeCheckoutAgg.ValueObjects;
|
||||||
using Company.Domain.WorkshopAgg;
|
using Company.Domain.WorkshopAgg;
|
||||||
|
|
||||||
namespace Company.Domain.CheckoutAgg;
|
namespace Company.Domain.CheckoutAgg;
|
||||||
@@ -21,7 +26,11 @@ public class Checkout : EntityBase
|
|||||||
double salaryAidDeduction, double absenceDeduction, string sumOfWorkingDays
|
double salaryAidDeduction, double absenceDeduction, string sumOfWorkingDays
|
||||||
, string archiveCode, string personnelCode,
|
, string archiveCode, string personnelCode,
|
||||||
string totalClaims, string totalDeductions, double totalPayment, string signature, double marriedAllowance, bool leaveCheckout,
|
string totalClaims, string totalDeductions, double totalPayment, string signature, double marriedAllowance, bool leaveCheckout,
|
||||||
double creditLeaves, double absencePeriod, double averageHoursPerDay, bool hasRollCall, string overTimeWorkvalue, string overNightWorkValue, string fridayWorkValue, string rotatingShifValue, string absenceValue, string totalDayOfLeaveCompute, string totalDayOfYearsCompute, string totalDayOfBunosesCompute)
|
double creditLeaves, double absencePeriod, double averageHoursPerDay, bool hasRollCall, string overTimeWorkvalue,
|
||||||
|
string overNightWorkValue, string fridayWorkValue, string rotatingShifValue, string absenceValue,
|
||||||
|
string totalDayOfLeaveCompute, string totalDayOfYearsCompute, string totalDayOfBunosesCompute,
|
||||||
|
ICollection<CheckoutLoanInstallment> loanInstallments,
|
||||||
|
ICollection<CheckoutSalaryAid> salaryAids,CheckoutRollCall checkoutRollCall)
|
||||||
{
|
{
|
||||||
EmployeeFullName = employeeFullName;
|
EmployeeFullName = employeeFullName;
|
||||||
FathersName = fathersName;
|
FathersName = fathersName;
|
||||||
@@ -78,6 +87,9 @@ public class Checkout : EntityBase
|
|||||||
TotalDayOfLeaveCompute = totalDayOfLeaveCompute;
|
TotalDayOfLeaveCompute = totalDayOfLeaveCompute;
|
||||||
TotalDayOfYearsCompute = totalDayOfYearsCompute;
|
TotalDayOfYearsCompute = totalDayOfYearsCompute;
|
||||||
TotalDayOfBunosesCompute = totalDayOfBunosesCompute;
|
TotalDayOfBunosesCompute = totalDayOfBunosesCompute;
|
||||||
|
LoanInstallments = loanInstallments;
|
||||||
|
SalaryAids = salaryAids;
|
||||||
|
CheckoutRollCall = checkoutRollCall;
|
||||||
}
|
}
|
||||||
|
|
||||||
public string EmployeeFullName { get; private set; }
|
public string EmployeeFullName { get; private set; }
|
||||||
@@ -181,7 +193,16 @@ public class Checkout : EntityBase
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
public string TotalDayOfBunosesCompute { get; private set; }
|
public string TotalDayOfBunosesCompute { get; private set; }
|
||||||
|
|
||||||
public Workshop Workshop { get; set; }
|
|
||||||
|
#region valueObjects
|
||||||
|
|
||||||
|
public ICollection<CheckoutLoanInstallment> LoanInstallments { get; set; } = [];
|
||||||
|
public ICollection<CheckoutSalaryAid> SalaryAids { get; set; } = [];
|
||||||
|
public CheckoutRollCall CheckoutRollCall { get; private set; }
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
|
||||||
|
public Workshop Workshop { get; set; }
|
||||||
//public WorkingHours WorkingHours { get; set; }
|
//public WorkingHours WorkingHours { get; set; }
|
||||||
|
|
||||||
public void Edit(string employeeFullName, string fathersName, string nationalCode, string dateOfBirth,
|
public void Edit(string employeeFullName, string fathersName, string nationalCode, string dateOfBirth,
|
||||||
@@ -278,4 +299,161 @@ public class Checkout : EntityBase
|
|||||||
this.TotalDeductions = totalDeductions;
|
this.TotalDeductions = totalDeductions;
|
||||||
this.TotalPayment = totalPayment;
|
this.TotalPayment = totalPayment;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public void SetSalaryAid(ICollection<CheckoutSalaryAid> salaryAids,double salaryAidAmount)
|
||||||
|
{
|
||||||
|
SalaryAids = salaryAids;
|
||||||
|
SalaryAidDeduction = salaryAidAmount;
|
||||||
|
}
|
||||||
|
public void SetLoanInstallment(ICollection<CheckoutLoanInstallment> lonaInstallments, double installmentsAmount)
|
||||||
|
{
|
||||||
|
LoanInstallments = lonaInstallments;
|
||||||
|
InstallmentDeduction = installmentsAmount;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void SetCheckoutRollCall(CheckoutRollCall checkoutRollCall)
|
||||||
|
{
|
||||||
|
CheckoutRollCall = checkoutRollCall;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public class CheckoutRollCall
|
||||||
|
{
|
||||||
|
private CheckoutRollCall(){}
|
||||||
|
public CheckoutRollCall(TimeSpan totalMandatoryTimeSpan, TimeSpan totalPresentTimeSpan, TimeSpan totalBreakTimeSpan,
|
||||||
|
TimeSpan totalWorkingTimeSpan, TimeSpan totalPaidLeaveTmeSpan, TimeSpan totalSickLeaveTimeSpan,
|
||||||
|
ICollection<CheckoutRollCallDay> rollCallDaysCollection)
|
||||||
|
{
|
||||||
|
TotalMandatoryTimeSpan = totalMandatoryTimeSpan;
|
||||||
|
TotalPresentTimeSpan = totalPresentTimeSpan;
|
||||||
|
TotalBreakTimeSpan = totalBreakTimeSpan;
|
||||||
|
TotalWorkingTimeSpan = totalWorkingTimeSpan;
|
||||||
|
TotalPaidLeaveTmeSpan = totalPaidLeaveTmeSpan;
|
||||||
|
TotalSickLeaveTimeSpan = totalSickLeaveTimeSpan;
|
||||||
|
RollCallDaysCollection = rollCallDaysCollection;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// مجموع ساعت موظفی
|
||||||
|
/// </summary>
|
||||||
|
public TimeSpan TotalMandatoryTimeSpan { get; private set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// مجموع ساعت حضور
|
||||||
|
/// </summary>
|
||||||
|
public TimeSpan TotalPresentTimeSpan { get; private set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// مجموع ساعت استراحت
|
||||||
|
/// </summary>
|
||||||
|
public TimeSpan TotalBreakTimeSpan { get; private set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// مجموع ساعت کارکرد
|
||||||
|
/// </summary>
|
||||||
|
public TimeSpan TotalWorkingTimeSpan { get; private set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// مجموع ساعت مرخصی استحقاقی
|
||||||
|
/// </summary>
|
||||||
|
public TimeSpan TotalPaidLeaveTmeSpan { get; private set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// مجموع ساعت مرخصی استعلاجی
|
||||||
|
/// </summary>
|
||||||
|
public TimeSpan TotalSickLeaveTimeSpan { get; private set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// روز های حضور غیاب
|
||||||
|
/// </summary>
|
||||||
|
public ICollection<CheckoutRollCallDay> RollCallDaysCollection { get; private set; }
|
||||||
|
}
|
||||||
|
|
||||||
|
public class CheckoutRollCallDay
|
||||||
|
{
|
||||||
|
private CheckoutRollCallDay(){}
|
||||||
|
public CheckoutRollCallDay(DateTime date, string firstStartDate, string firstEndDate,
|
||||||
|
string secondStartDate, string secondEndDate, TimeSpan breakTimeSpan,
|
||||||
|
bool isSliced, TimeSpan workingTimeSpan, bool isAbsent, bool isFriday,
|
||||||
|
bool isHoliday, string leaveType)
|
||||||
|
{
|
||||||
|
Date = date;
|
||||||
|
FirstStartDate = firstStartDate;
|
||||||
|
FirstEndDate = firstEndDate;
|
||||||
|
SecondStartDate = secondStartDate;
|
||||||
|
SecondEndDate = secondEndDate;
|
||||||
|
BreakTimeSpan = breakTimeSpan;
|
||||||
|
IsSliced = isSliced;
|
||||||
|
WorkingTimeSpan = workingTimeSpan;
|
||||||
|
IsAbsent = isAbsent;
|
||||||
|
IsFriday = isFriday;
|
||||||
|
IsHoliday = isHoliday;
|
||||||
|
LeaveType = leaveType;
|
||||||
|
}
|
||||||
|
|
||||||
|
public long Id { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// تاریخ
|
||||||
|
/// </summary>
|
||||||
|
public DateTime Date { get; private set; }
|
||||||
|
/// <summary>
|
||||||
|
/// ورود اول
|
||||||
|
/// </summary>
|
||||||
|
public string FirstStartDate { get; private set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// خروج اول
|
||||||
|
/// </summary>
|
||||||
|
public string FirstEndDate { get; private set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// ورود دوم
|
||||||
|
/// </summary>
|
||||||
|
public string SecondStartDate { get; private set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// خروج دوم
|
||||||
|
/// </summary>
|
||||||
|
public string SecondEndDate { get; private set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// ساعت استراحت
|
||||||
|
/// </summary>
|
||||||
|
public TimeSpan BreakTimeSpan { get; private set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// مقدار زمان کارکرد
|
||||||
|
/// </summary>
|
||||||
|
public TimeSpan WorkingTimeSpan { get; private set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// آیا منقطع است؟
|
||||||
|
/// </summary>
|
||||||
|
public bool IsSliced { get; private set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// آیا غیبت است
|
||||||
|
/// </summary>
|
||||||
|
public bool IsAbsent { get; private set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// آیا جمعه است
|
||||||
|
/// </summary>
|
||||||
|
public bool IsFriday { get; private set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// آیا تعطیل رسمی است
|
||||||
|
/// </summary>
|
||||||
|
public bool IsHoliday { get; private set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// نوع مرخصی - درصورت نداشتن مرخصی مقدارش null میباشد
|
||||||
|
/// </summary>
|
||||||
|
public string LeaveType { get; private set; }
|
||||||
|
|
||||||
|
public long CheckoutId { get; set; }
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -22,7 +22,24 @@ public interface ICheckoutRepository : IRepository<long, Checkout>
|
|||||||
string year, string month);
|
string year, string month);
|
||||||
EditCheckout GetDetails(long id);
|
EditCheckout GetDetails(long id);
|
||||||
|
|
||||||
void CreateCkeckout(Checkout command);
|
Task CreateCkeckout(Checkout command);
|
||||||
|
/// <summary>
|
||||||
|
/// لود لیست اولیه جهت ایجاد فیش حقوقی
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="workshopId"></param>
|
||||||
|
/// <param name="employeeId"></param>
|
||||||
|
/// <param name="year"></param>
|
||||||
|
/// <param name="month"></param>
|
||||||
|
/// <param name="contractStart"></param>
|
||||||
|
/// <param name="contractEnd"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
/// <exception cref="NotImplementedException"></exception>
|
||||||
|
Task<CreateCheckoutListViewModel> GetContractResultToCreateCheckout(long workshopId, long employeeId, string year,
|
||||||
|
string month,
|
||||||
|
string contractStart, string contractEnd);
|
||||||
|
//void CreateCkeckout(Checkout command);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
Task<List<CheckoutViewModel>> Search(CheckoutSearchModel searchModel);
|
Task<List<CheckoutViewModel>> Search(CheckoutSearchModel searchModel);
|
||||||
|
|
||||||
@@ -42,6 +59,16 @@ public interface ICheckoutRepository : IRepository<long, Checkout>
|
|||||||
OperationResult DeleteAllCheckouts(List<long> ids);
|
OperationResult DeleteAllCheckouts(List<long> ids);
|
||||||
OperationResult DeleteCheckout(long id);
|
OperationResult DeleteCheckout(long id);
|
||||||
List<long> CheckHasSignature(List<long> ids);
|
List<long> CheckHasSignature(List<long> ids);
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// لیست تصفیه حساب
|
||||||
|
/// جدید
|
||||||
|
///
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="searchModel"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
Task<List<CheckoutViewModel>> SearchCheckoutOptimized(CheckoutSearchModel searchModel);
|
||||||
|
|
||||||
Task<List<CheckoutViewModel>> SearchForMainCheckout(CheckoutSearchModel searchModel);
|
Task<List<CheckoutViewModel>> SearchForMainCheckout(CheckoutSearchModel searchModel);
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,25 @@
|
|||||||
|
using _0_Framework.Application;
|
||||||
|
|
||||||
|
namespace Company.Domain.CheckoutAgg.ValueObjects;
|
||||||
|
|
||||||
|
public class CheckoutLoanInstallment
|
||||||
|
{
|
||||||
|
public CheckoutLoanInstallment(string amountForMonth, string month, string year, IsActive isActive, string loanRemaining, string loanAmount, long entityId)
|
||||||
|
{
|
||||||
|
AmountForMonth = amountForMonth;
|
||||||
|
Month = month;
|
||||||
|
Year = year;
|
||||||
|
IsActive = isActive;
|
||||||
|
LoanRemaining = loanRemaining;
|
||||||
|
LoanAmount = loanAmount;
|
||||||
|
EntityId = entityId;
|
||||||
|
}
|
||||||
|
|
||||||
|
public string AmountForMonth { get; private set; }
|
||||||
|
public string Month { get; private set; }
|
||||||
|
public string Year { get; private set; }
|
||||||
|
public string LoanRemaining { get; set; }
|
||||||
|
public IsActive IsActive { get; private set; }
|
||||||
|
public string LoanAmount { get; set; }
|
||||||
|
public long EntityId { get; set; }
|
||||||
|
}
|
||||||
24
Company.Domain/CheckoutAgg/ValueObjects/CheckoutSalaryAid.cs
Normal file
24
Company.Domain/CheckoutAgg/ValueObjects/CheckoutSalaryAid.cs
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
using System;
|
||||||
|
using AccountManagement.Domain.AccountAgg;
|
||||||
|
|
||||||
|
namespace Company.Domain.CheckoutAgg.ValueObjects;
|
||||||
|
|
||||||
|
public class CheckoutSalaryAid
|
||||||
|
{
|
||||||
|
public CheckoutSalaryAid(string amount, DateTime salaryAidDateTime, string salaryAidDateTimeFa, DateTime calculationDateTime, string calculationDateTimeFa, long entityId)
|
||||||
|
{
|
||||||
|
Amount = amount;
|
||||||
|
SalaryAidDateTime = salaryAidDateTime;
|
||||||
|
SalaryAidDateTimeFa = salaryAidDateTimeFa;
|
||||||
|
CalculationDateTime = calculationDateTime;
|
||||||
|
CalculationDateTimeFa = calculationDateTimeFa;
|
||||||
|
EntityId = entityId;
|
||||||
|
}
|
||||||
|
public string Amount { get; private set; }
|
||||||
|
public DateTime SalaryAidDateTime { get; private set; }
|
||||||
|
public string SalaryAidDateTimeFa { get; private set; }
|
||||||
|
|
||||||
|
public DateTime CalculationDateTime { get; private set; }
|
||||||
|
public string CalculationDateTimeFa { get; private set; }
|
||||||
|
public long EntityId { get; set; }
|
||||||
|
}
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
<Project Sdk="Microsoft.NET.Sdk">
|
<Project Sdk="Microsoft.NET.Sdk">
|
||||||
|
|
||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
<TargetFramework>net8.0</TargetFramework>
|
<TargetFramework>net8.0</TargetFramework>
|
||||||
@@ -14,4 +14,8 @@
|
|||||||
<ProjectReference Include="..\CompanyManagment.App.Contracts\CompanyManagment.App.Contracts.csproj" />
|
<ProjectReference Include="..\CompanyManagment.App.Contracts\CompanyManagment.App.Contracts.csproj" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
|
<ItemGroup>
|
||||||
|
<Folder Include="CheckoutAgg\ValueObjects\" />
|
||||||
|
</ItemGroup>
|
||||||
|
|
||||||
</Project>
|
</Project>
|
||||||
|
|||||||
@@ -3,6 +3,7 @@ using System.Collections.Generic;
|
|||||||
using _0_Framework.Application;
|
using _0_Framework.Application;
|
||||||
using _0_Framework.Domain;
|
using _0_Framework.Domain;
|
||||||
using AccountManagement.Application.Contracts.Account;
|
using AccountManagement.Application.Contracts.Account;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
namespace Company.Domain.ContarctingPartyAgg;
|
namespace Company.Domain.ContarctingPartyAgg;
|
||||||
|
|
||||||
@@ -42,6 +43,34 @@ public interface IPersonalContractingPartyRepository :IRepository<long, Personal
|
|||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// لیست طرف حساب ها
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="searchModel"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
Task<ICollection<ContractingPartyGetListViewModel>> GetList(ContractingPartyGetListSearchModel searchModel);
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// لیست طرف حساب برای سلکت لیست سرچ
|
||||||
|
/// </summary>
|
||||||
|
/// <returns></returns>
|
||||||
|
Task<List<ContractingPartySelectListViewModel>> GetSelectList();
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// لیستی از شماره ملی یا شناسه ملی بر اساس حقیقی یا حقوقی بودن
|
||||||
|
/// </summary>
|
||||||
|
/// <returns></returns>
|
||||||
|
Task<List<GetContractingPartyNationalCodeOrNationalIdViewModel>> GetNationalCodeOrNationalId();
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// غیرفعال کردن طرف حساب و زیرمجموعه های آن
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="id"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
Task<OperationResult<string>> DeactivateWithSubordinates(long id);
|
||||||
|
|
||||||
|
void Remove(PersonalContractingParty entity);
|
||||||
|
Task<GetRealContractingPartyDetailsViewModel> GetRealDetails(long id);
|
||||||
|
Task<GetLegalContractingPartyDetailsViewModel> GetLegalDetails(long id);
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -213,4 +213,14 @@ public class PersonalContractingParty : EntityBase
|
|||||||
this.Gender = gender;
|
this.Gender = gender;
|
||||||
this.IsAuthenticated = true;
|
this.IsAuthenticated = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void RegisterComplete(string fatherName, string idNumberSeri, string idNumberSerial, DateTime dateOfBirth, Gender gender)
|
||||||
|
{
|
||||||
|
this.FatherName = fatherName;
|
||||||
|
this.IdNumberSeri = idNumberSeri;
|
||||||
|
this.IdNumberSerial = idNumberSerial;
|
||||||
|
this.DateOfBirth = dateOfBirth;
|
||||||
|
this.Gender = gender;
|
||||||
|
this.IsAuthenticated = true;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
@@ -27,12 +27,13 @@ public class CustomizeWorkshopEmployeeSettings : BaseCustomizeEntity
|
|||||||
FineAbsenceDeduction fineAbsenceDeduction, LateToWork lateToWork, EarlyExit earlyExit, long employeeId,
|
FineAbsenceDeduction fineAbsenceDeduction, LateToWork lateToWork, EarlyExit earlyExit, long employeeId,
|
||||||
long workshopId, double salary, long customizeWorkshopGroupSettingId,
|
long workshopId, double salary, long customizeWorkshopGroupSettingId,
|
||||||
ICollection<CustomizeWorkshopEmployeeSettingsShift> customizeWorkshopEmployeeSettingsShifts,
|
ICollection<CustomizeWorkshopEmployeeSettingsShift> customizeWorkshopEmployeeSettingsShifts,
|
||||||
FridayWork fridayWork,
|
HolidayWork holidayWork, IrregularShift irregularShift, WorkshopShiftStatus workshopShiftStatus, BreakTime breakTime,
|
||||||
HolidayWork holidayWork, IrregularShift irregularShift, WorkshopShiftStatus workshopShiftStatus, BreakTime breakTime, int leavePermittedDays, ICollection<CustomizeRotatingShift> rotatingShifts) :
|
int leavePermittedDays, ICollection<CustomizeRotatingShift> rotatingShifts
|
||||||
|
, List<WeeklyOffDay> weeklyOffDays) :
|
||||||
base(fridayPay, overTimePay,
|
base(fridayPay, overTimePay,
|
||||||
baseYearsPay, bonusesPay, nightWorkPay,
|
baseYearsPay, bonusesPay, nightWorkPay,
|
||||||
marriedAllowance, shiftPay, familyAllowance, leavePay, insuranceDeduction, fineAbsenceDeduction, lateToWork,
|
marriedAllowance, shiftPay, familyAllowance, leavePay, insuranceDeduction, fineAbsenceDeduction, lateToWork,
|
||||||
earlyExit, fridayWork, holidayWork, breakTime, leavePermittedDays)
|
earlyExit, holidayWork, breakTime, leavePermittedDays,weeklyOffDays)
|
||||||
{
|
{
|
||||||
CustomizeWorkshopGroupSettingId = customizeWorkshopGroupSettingId;
|
CustomizeWorkshopGroupSettingId = customizeWorkshopGroupSettingId;
|
||||||
IsSettingChanged = false;
|
IsSettingChanged = false;
|
||||||
@@ -82,7 +83,6 @@ public class CustomizeWorkshopEmployeeSettings : BaseCustomizeEntity
|
|||||||
/// <param name="fineAbsenceDeduction">جریمه غیبت</param>
|
/// <param name="fineAbsenceDeduction">جریمه غیبت</param>
|
||||||
/// <param name="lateToWork">تاخیر در ورود</param>
|
/// <param name="lateToWork">تاخیر در ورود</param>
|
||||||
/// <param name="earlyExit">تعجیل درخروج</param>
|
/// <param name="earlyExit">تعجیل درخروج</param>
|
||||||
/// <param name="fridayWork">آیا در روز های جمعه موظف به کار است</param>
|
|
||||||
/// <param name="holidayWork">آیا در تعطیلات رسمی موظف به کار است</param>
|
/// <param name="holidayWork">آیا در تعطیلات رسمی موظف به کار است</param>
|
||||||
/// <param name="workshopIrregularShifts">نوع شیفت کاری </param>
|
/// <param name="workshopIrregularShifts">نوع شیفت کاری </param>
|
||||||
/// <param name="workshopShiftStatus">آیا شیفت منظم است یا نا منظم</param>
|
/// <param name="workshopShiftStatus">آیا شیفت منظم است یا نا منظم</param>
|
||||||
@@ -91,7 +91,7 @@ public class CustomizeWorkshopEmployeeSettings : BaseCustomizeEntity
|
|||||||
NightWorkPay nightWorkPay, MarriedAllowance marriedAllowance, ShiftPay shiftPay,
|
NightWorkPay nightWorkPay, MarriedAllowance marriedAllowance, ShiftPay shiftPay,
|
||||||
FamilyAllowance familyAllowance, LeavePay leavePay, InsuranceDeduction insuranceDeduction,
|
FamilyAllowance familyAllowance, LeavePay leavePay, InsuranceDeduction insuranceDeduction,
|
||||||
FineAbsenceDeduction fineAbsenceDeduction, LateToWork lateToWork, EarlyExit earlyExit,
|
FineAbsenceDeduction fineAbsenceDeduction, LateToWork lateToWork, EarlyExit earlyExit,
|
||||||
FridayWork fridayWork, HolidayWork holidayWork, IrregularShift irregularShift, bool isSettingChange, int leavePermittedDays)
|
HolidayWork holidayWork, IrregularShift irregularShift, bool isSettingChange, int leavePermittedDays)
|
||||||
{
|
{
|
||||||
SetValueObjects(fridayPay, overTimePay, baseYearsPay, bonusesPay
|
SetValueObjects(fridayPay, overTimePay, baseYearsPay, bonusesPay
|
||||||
, nightWorkPay, marriedAllowance, shiftPay, familyAllowance, leavePay, insuranceDeduction, fineAbsenceDeduction,
|
, nightWorkPay, marriedAllowance, shiftPay, familyAllowance, leavePay, insuranceDeduction, fineAbsenceDeduction,
|
||||||
@@ -99,7 +99,6 @@ public class CustomizeWorkshopEmployeeSettings : BaseCustomizeEntity
|
|||||||
|
|
||||||
Salary = salary;
|
Salary = salary;
|
||||||
IsSettingChanged = isSettingChange;
|
IsSettingChanged = isSettingChange;
|
||||||
FridayWork = fridayWork;
|
|
||||||
HolidayWork = holidayWork;
|
HolidayWork = holidayWork;
|
||||||
LeavePermittedDays = leavePermittedDays;
|
LeavePermittedDays = leavePermittedDays;
|
||||||
}
|
}
|
||||||
@@ -112,8 +111,8 @@ public class CustomizeWorkshopEmployeeSettings : BaseCustomizeEntity
|
|||||||
public void SimpleEdit(
|
public void SimpleEdit(
|
||||||
ICollection<CustomizeWorkshopEmployeeSettingsShift> employeeSettingsShift,
|
ICollection<CustomizeWorkshopEmployeeSettingsShift> employeeSettingsShift,
|
||||||
IrregularShift irregularShift,
|
IrregularShift irregularShift,
|
||||||
WorkshopShiftStatus workshopShiftStatus, BreakTime breakTime, bool isShiftChange, FridayWork fridayWork, HolidayWork holidayWork,
|
WorkshopShiftStatus workshopShiftStatus, BreakTime breakTime, bool isShiftChange,HolidayWork holidayWork,
|
||||||
ICollection<CustomizeRotatingShift> rotatingShifts)
|
ICollection<CustomizeRotatingShift> rotatingShifts,List<WeeklyOffDay> weeklyOffDays)
|
||||||
{
|
{
|
||||||
BreakTime = new BreakTime(breakTime.HasBreakTimeValue, breakTime.BreakTimeValue);
|
BreakTime = new BreakTime(breakTime.HasBreakTimeValue, breakTime.BreakTimeValue);
|
||||||
IsShiftChanged = isShiftChange;
|
IsShiftChanged = isShiftChange;
|
||||||
@@ -126,9 +125,8 @@ public class CustomizeWorkshopEmployeeSettings : BaseCustomizeEntity
|
|||||||
: new IrregularShift(irregularShift.StartTime, irregularShift.EndTime, irregularShift.WorkshopIrregularShifts);
|
: new IrregularShift(irregularShift.StartTime, irregularShift.EndTime, irregularShift.WorkshopIrregularShifts);
|
||||||
|
|
||||||
CustomizeRotatingShifts = workshopShiftStatus == WorkshopShiftStatus.Rotating ? rotatingShifts : [];
|
CustomizeRotatingShifts = workshopShiftStatus == WorkshopShiftStatus.Rotating ? rotatingShifts : [];
|
||||||
|
|
||||||
FridayWork = fridayWork;
|
|
||||||
HolidayWork = holidayWork;
|
HolidayWork = holidayWork;
|
||||||
|
WeeklyOffDays = weeklyOffDays;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -213,6 +211,62 @@ public class CustomizeWorkshopEmployeeSettings : BaseCustomizeEntity
|
|||||||
earlyExit.EarlyExitTimeFines.Select(x => new EarlyExitTimeFine(x.Minute, x.FineMoney))
|
earlyExit.EarlyExitTimeFines.Select(x => new EarlyExitTimeFine(x.Minute, x.FineMoney))
|
||||||
.ToList(), earlyExit.Value);
|
.ToList(), earlyExit.Value);
|
||||||
}
|
}
|
||||||
|
public void UpdateIsShiftChange()
|
||||||
|
{
|
||||||
|
var groupSetting = CustomizeWorkshopGroupSettings;
|
||||||
|
if (groupSetting == null)
|
||||||
|
return;
|
||||||
|
bool isShiftChange;
|
||||||
|
|
||||||
|
|
||||||
|
if (WorkshopShiftStatus == WorkshopShiftStatus.Regular)
|
||||||
|
{
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
if (CustomizeWorkshopEmployeeSettingsShifts.All(x => groupSetting.CustomizeWorkshopGroupSettingsShifts.Any(y => x.Equals(y)))
|
||||||
|
&& WorkshopShiftStatus == groupSetting.WorkshopShiftStatus && FridayWork == groupSetting.FridayWork &&
|
||||||
|
HolidayWork == groupSetting.HolidayWork && BreakTime == groupSetting.BreakTime)
|
||||||
|
{
|
||||||
|
isShiftChange = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
else
|
||||||
|
{
|
||||||
|
isShiftChange = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (WorkshopShiftStatus == WorkshopShiftStatus.Irregular)
|
||||||
|
{
|
||||||
|
if (WorkshopShiftStatus == groupSetting.WorkshopShiftStatus && BreakTime == groupSetting.BreakTime &&
|
||||||
|
IrregularShift == groupSetting.IrregularShift && FridayWork == groupSetting.FridayWork &&
|
||||||
|
HolidayWork == groupSetting.HolidayWork)
|
||||||
|
{
|
||||||
|
isShiftChange = false;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
isShiftChange = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (CustomizeRotatingShifts.All(x => groupSetting.CustomizeRotatingShifts.Any(y => x.Equals(y)))
|
||||||
|
&& WorkshopShiftStatus == groupSetting.WorkshopShiftStatus && FridayWork == groupSetting.FridayWork &&
|
||||||
|
HolidayWork == groupSetting.HolidayWork && BreakTime == groupSetting.BreakTime)
|
||||||
|
{
|
||||||
|
isShiftChange = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
else
|
||||||
|
{
|
||||||
|
isShiftChange = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
IsShiftChanged = isShiftChange;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -17,340 +17,344 @@ namespace Company.Domain.CustomizeWorkshopGroupSettingsAgg.Entities;
|
|||||||
|
|
||||||
public class CustomizeWorkshopGroupSettings : BaseCustomizeEntity
|
public class CustomizeWorkshopGroupSettings : BaseCustomizeEntity
|
||||||
{
|
{
|
||||||
public CustomizeWorkshopGroupSettings()
|
public CustomizeWorkshopGroupSettings()
|
||||||
{
|
{
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public CustomizeWorkshopGroupSettings(string groupName, double salary,
|
public CustomizeWorkshopGroupSettings(string groupName, double salary,
|
||||||
long customizeWorkshopSettingId, ICollection<CustomizeWorkshopGroupSettingsShift> customizeWorkshopGroupSettingsShifts,
|
long customizeWorkshopSettingId, ICollection<CustomizeWorkshopGroupSettingsShift> customizeWorkshopGroupSettingsShifts,
|
||||||
FridayPay fridayPay, OverTimePay overTimePay, BaseYearsPay baseYearsPay,
|
FridayPay fridayPay, OverTimePay overTimePay, BaseYearsPay baseYearsPay,
|
||||||
BonusesPay bonusesPay, NightWorkPay nightWorkPay, MarriedAllowance marriedAllowance, ShiftPay shiftPay,
|
BonusesPay bonusesPay, NightWorkPay nightWorkPay, MarriedAllowance marriedAllowance, ShiftPay shiftPay,
|
||||||
FamilyAllowance familyAllowance, LeavePay leavePay, InsuranceDeduction insuranceDeduction,
|
FamilyAllowance familyAllowance, LeavePay leavePay, InsuranceDeduction insuranceDeduction,
|
||||||
FineAbsenceDeduction fineAbsenceDeduction, LateToWork lateToWork, EarlyExit earlyExit, FridayWork fridayWork,
|
FineAbsenceDeduction fineAbsenceDeduction, LateToWork lateToWork, EarlyExit earlyExit,
|
||||||
HolidayWork holidayWork, BreakTime breakTime, WorkshopShiftStatus workshopShiftStatus, IrregularShift irregularShift, int leavePermittedDays, ICollection<CustomizeRotatingShift> rotatingShifts) :
|
HolidayWork holidayWork, BreakTime breakTime, WorkshopShiftStatus workshopShiftStatus, IrregularShift irregularShift, int leavePermittedDays,
|
||||||
base(fridayPay, overTimePay, baseYearsPay, bonusesPay, nightWorkPay,
|
ICollection<CustomizeRotatingShift> rotatingShifts, List<WeeklyOffDay> weeklyOffDays) :
|
||||||
marriedAllowance, shiftPay, familyAllowance, leavePay, insuranceDeduction, fineAbsenceDeduction, lateToWork,
|
base(fridayPay, overTimePay, baseYearsPay, bonusesPay, nightWorkPay,
|
||||||
earlyExit, fridayWork, holidayWork, breakTime, leavePermittedDays)
|
marriedAllowance, shiftPay, familyAllowance, leavePay, insuranceDeduction, fineAbsenceDeduction, lateToWork,
|
||||||
{
|
earlyExit, holidayWork, breakTime, leavePermittedDays, weeklyOffDays)
|
||||||
GroupName = groupName;
|
{
|
||||||
Salary = salary;
|
GroupName = groupName;
|
||||||
CustomizeWorkshopSettingId = customizeWorkshopSettingId;
|
Salary = salary;
|
||||||
GuardGroupShifts(customizeWorkshopGroupSettingsShifts);
|
CustomizeWorkshopSettingId = customizeWorkshopSettingId;
|
||||||
WorkshopShiftStatus = workshopShiftStatus;
|
GuardGroupShifts(customizeWorkshopGroupSettingsShifts);
|
||||||
|
WorkshopShiftStatus = workshopShiftStatus;
|
||||||
|
|
||||||
CustomizeRotatingShifts = workshopShiftStatus == WorkshopShiftStatus.Rotating ? rotatingShifts : [];
|
CustomizeRotatingShifts = workshopShiftStatus == WorkshopShiftStatus.Rotating ? rotatingShifts : [];
|
||||||
|
|
||||||
CustomizeWorkshopGroupSettingsShifts = workshopShiftStatus == WorkshopShiftStatus.Regular ? customizeWorkshopGroupSettingsShifts : [];
|
CustomizeWorkshopGroupSettingsShifts = workshopShiftStatus == WorkshopShiftStatus.Regular ? customizeWorkshopGroupSettingsShifts : [];
|
||||||
|
|
||||||
IrregularShift = workshopShiftStatus == WorkshopShiftStatus.Regular ?
|
IrregularShift = workshopShiftStatus == WorkshopShiftStatus.Regular ?
|
||||||
new IrregularShift(new TimeOnly(), new TimeOnly(), WorkshopIrregularShifts.None)
|
new IrregularShift(new TimeOnly(), new TimeOnly(), WorkshopIrregularShifts.None)
|
||||||
: new IrregularShift(irregularShift.StartTime, irregularShift.EndTime, irregularShift.WorkshopIrregularShifts);
|
: new IrregularShift(irregularShift.StartTime, irregularShift.EndTime, irregularShift.WorkshopIrregularShifts);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void GuardGroupShifts(ICollection<CustomizeWorkshopGroupSettingsShift> customizeWorkshopGroupSettingsShifts)
|
private void GuardGroupShifts(ICollection<CustomizeWorkshopGroupSettingsShift> customizeWorkshopGroupSettingsShifts)
|
||||||
{
|
{
|
||||||
if (customizeWorkshopGroupSettingsShifts.Count >= 4)
|
if (customizeWorkshopGroupSettingsShifts.Count >= 4)
|
||||||
{
|
{
|
||||||
throw new InvalidDataException("شما نمیتوانید بیشتر از سه ساعت کاری در کارگاه بگذارید");
|
throw new InvalidDataException("شما نمیتوانید بیشتر از سه ساعت کاری در کارگاه بگذارید");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public string GroupName { get; private set; }
|
public string GroupName { get; private set; }
|
||||||
public double Salary { get; private set; }
|
public double Salary { get; private set; }
|
||||||
public long CustomizeWorkshopSettingId { get; private set; }
|
public long CustomizeWorkshopSettingId { get; private set; }
|
||||||
public WorkshopShiftStatus WorkshopShiftStatus { get; private set; }
|
public WorkshopShiftStatus WorkshopShiftStatus { get; private set; }
|
||||||
public bool MainGroup { get; private set; }
|
public bool MainGroup { get; private set; }
|
||||||
public bool IsShiftChange { get; private set; }
|
public bool IsShiftChange { get; private set; }
|
||||||
public bool IsSettingChange { get; private set; }
|
public bool IsSettingChange { get; private set; }
|
||||||
public IrregularShift IrregularShift { get; set; }
|
public IrregularShift IrregularShift { get; set; }
|
||||||
public ICollection<CustomizeWorkshopGroupSettingsShift> CustomizeWorkshopGroupSettingsShifts { get; set; }
|
public ICollection<CustomizeWorkshopGroupSettingsShift> CustomizeWorkshopGroupSettingsShifts { get; set; }
|
||||||
public ICollection<CustomizeWorkshopEmployeeSettings> CustomizeWorkshopEmployeeSettingsCollection { get; set; }
|
public ICollection<CustomizeWorkshopEmployeeSettings> CustomizeWorkshopEmployeeSettingsCollection { get; set; }
|
||||||
public ICollection<CustomizeRotatingShift> CustomizeRotatingShifts { get; set; }
|
public ICollection<CustomizeRotatingShift> CustomizeRotatingShifts { get; set; }
|
||||||
public CustomizeWorkshopSettings CustomizeWorkshopSettings { get; set; }
|
public CustomizeWorkshopSettings CustomizeWorkshopSettings { get; set; }
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
public CustomizeWorkshopGroupSettings CreateMainGroup(FridayPay fridayPay,
|
public CustomizeWorkshopGroupSettings CreateMainGroup(FridayPay fridayPay,
|
||||||
OverTimePay overTimePay, BaseYearsPay baseYearsPay, BonusesPay bonusesPay, ShiftPay shiftPay,
|
OverTimePay overTimePay, BaseYearsPay baseYearsPay, BonusesPay bonusesPay, ShiftPay shiftPay,
|
||||||
NightWorkPay nightWorkPay, MarriedAllowance marriedAllowance, FamilyAllowance familyAllowance,
|
NightWorkPay nightWorkPay, MarriedAllowance marriedAllowance, FamilyAllowance familyAllowance,
|
||||||
LeavePay leavePay, InsuranceDeduction insuranceDeduction, FineAbsenceDeduction fineAbsenceDeduction,
|
LeavePay leavePay, InsuranceDeduction insuranceDeduction, FineAbsenceDeduction fineAbsenceDeduction,
|
||||||
LateToWork lateToWork, EarlyExit earlyExit,
|
LateToWork lateToWork, EarlyExit earlyExit,
|
||||||
ICollection<CustomizeWorkshopGroupSettingsShift> customizeWorkshopGroupSettingsShifts, FridayWork fridayWork,
|
ICollection<CustomizeWorkshopGroupSettingsShift> customizeWorkshopGroupSettingsShifts,
|
||||||
HolidayWork holidayWork, IrregularShift irregularShift, ICollection<CustomizeRotatingShift> rotatingShifts,
|
HolidayWork holidayWork, IrregularShift irregularShift, ICollection<CustomizeRotatingShift> rotatingShifts,
|
||||||
WorkshopShiftStatus workshopShiftStatus, long customizeWorkshopSettingId, BreakTime breakTime, int leavePermittedDays)
|
WorkshopShiftStatus workshopShiftStatus, long customizeWorkshopSettingId, BreakTime breakTime, int leavePermittedDays)
|
||||||
{
|
{
|
||||||
GuardGroupShifts(customizeWorkshopGroupSettingsShifts);
|
GuardGroupShifts(customizeWorkshopGroupSettingsShifts);
|
||||||
GroupName = "اصلی";
|
GroupName = "اصلی";
|
||||||
Salary = 0;
|
Salary = 0;
|
||||||
FridayPay = fridayPay;
|
FridayPay = fridayPay;
|
||||||
OverTimePay = overTimePay;
|
OverTimePay = overTimePay;
|
||||||
BaseYearsPay = baseYearsPay;
|
BaseYearsPay = baseYearsPay;
|
||||||
BonusesPay = bonusesPay;
|
BonusesPay = bonusesPay;
|
||||||
NightWorkPay = nightWorkPay;
|
NightWorkPay = nightWorkPay;
|
||||||
MarriedAllowance = marriedAllowance;
|
MarriedAllowance = marriedAllowance;
|
||||||
ShiftPay = shiftPay;
|
ShiftPay = shiftPay;
|
||||||
FamilyAllowance = familyAllowance;
|
FamilyAllowance = familyAllowance;
|
||||||
LeavePay = leavePay;
|
LeavePay = leavePay;
|
||||||
InsuranceDeduction = insuranceDeduction;
|
InsuranceDeduction = insuranceDeduction;
|
||||||
FineAbsenceDeduction = fineAbsenceDeduction;
|
FineAbsenceDeduction = fineAbsenceDeduction;
|
||||||
LateToWork = lateToWork;
|
LateToWork = lateToWork;
|
||||||
EarlyExit = earlyExit;
|
EarlyExit = earlyExit;
|
||||||
FridayWork = fridayWork;
|
HolidayWork = holidayWork;
|
||||||
HolidayWork = holidayWork;
|
LeavePermittedDays = leavePermittedDays;
|
||||||
LeavePermittedDays = leavePermittedDays;
|
CustomizeWorkshopGroupSettingsShifts = workshopShiftStatus == WorkshopShiftStatus.Regular ? customizeWorkshopGroupSettingsShifts : [];
|
||||||
CustomizeWorkshopGroupSettingsShifts = workshopShiftStatus == WorkshopShiftStatus.Regular ? customizeWorkshopGroupSettingsShifts : [];
|
|
||||||
|
|
||||||
CustomizeRotatingShifts = workshopShiftStatus == WorkshopShiftStatus.Rotating ? rotatingShifts : [];
|
CustomizeRotatingShifts = workshopShiftStatus == WorkshopShiftStatus.Rotating ? rotatingShifts : [];
|
||||||
|
|
||||||
IrregularShift = workshopShiftStatus == WorkshopShiftStatus.Regular ?
|
IrregularShift = workshopShiftStatus == WorkshopShiftStatus.Regular ?
|
||||||
new IrregularShift(new TimeOnly(), new TimeOnly(), WorkshopIrregularShifts.None)
|
new IrregularShift(new TimeOnly(), new TimeOnly(), WorkshopIrregularShifts.None)
|
||||||
: new IrregularShift(irregularShift.StartTime, irregularShift.EndTime, irregularShift.WorkshopIrregularShifts);
|
: new IrregularShift(irregularShift.StartTime, irregularShift.EndTime, irregularShift.WorkshopIrregularShifts);
|
||||||
WorkshopShiftStatus = workshopShiftStatus;
|
WorkshopShiftStatus = workshopShiftStatus;
|
||||||
CustomizeWorkshopSettingId = customizeWorkshopSettingId;
|
CustomizeWorkshopSettingId = customizeWorkshopSettingId;
|
||||||
MainGroup = true;
|
MainGroup = true;
|
||||||
BreakTime = breakTime;
|
BreakTime = breakTime;
|
||||||
CustomizeWorkshopEmployeeSettingsCollection = [];
|
CustomizeWorkshopEmployeeSettingsCollection = [];
|
||||||
|
|
||||||
return this;
|
return this;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
public void EditAndOverwriteOnEmployees(string groupName, double salary, IEnumerable<long> employeeIds,
|
public void EditAndOverwriteOnEmployees(string groupName, double salary, IEnumerable<long> employeeIds,
|
||||||
FridayPay fridayPay,
|
FridayPay fridayPay,
|
||||||
OverTimePay overTimePay, BaseYearsPay baseYearsPay, BonusesPay bonusesPay, ShiftPay shiftPay,
|
OverTimePay overTimePay, BaseYearsPay baseYearsPay, BonusesPay bonusesPay, ShiftPay shiftPay,
|
||||||
NightWorkPay nightWorkPay, MarriedAllowance marriedAllowance, FamilyAllowance familyAllowance,
|
NightWorkPay nightWorkPay, MarriedAllowance marriedAllowance, FamilyAllowance familyAllowance,
|
||||||
LeavePay leavePay, InsuranceDeduction insuranceDeduction, FineAbsenceDeduction fineAbsenceDeduction,
|
LeavePay leavePay, InsuranceDeduction insuranceDeduction, FineAbsenceDeduction fineAbsenceDeduction,
|
||||||
LateToWork lateToWork, EarlyExit earlyExit, FridayWork fridayWork, HolidayWork holidayWork, bool isSettingChange, int leavePermittedDays)
|
LateToWork lateToWork, EarlyExit earlyExit, HolidayWork holidayWork, bool isSettingChange, int leavePermittedDays)
|
||||||
{
|
{
|
||||||
GroupName = groupName;
|
GroupName = groupName;
|
||||||
Salary = salary;
|
Salary = salary;
|
||||||
FridayPay = fridayPay;
|
FridayPay = fridayPay;
|
||||||
OverTimePay = overTimePay;
|
OverTimePay = overTimePay;
|
||||||
BaseYearsPay = baseYearsPay;
|
BaseYearsPay = baseYearsPay;
|
||||||
BonusesPay = bonusesPay;
|
BonusesPay = bonusesPay;
|
||||||
NightWorkPay = nightWorkPay;
|
NightWorkPay = nightWorkPay;
|
||||||
MarriedAllowance = marriedAllowance;
|
MarriedAllowance = marriedAllowance;
|
||||||
ShiftPay = shiftPay;
|
ShiftPay = shiftPay;
|
||||||
FamilyAllowance = familyAllowance;
|
FamilyAllowance = familyAllowance;
|
||||||
LeavePay = leavePay;
|
LeavePay = leavePay;
|
||||||
InsuranceDeduction = insuranceDeduction;
|
InsuranceDeduction = insuranceDeduction;
|
||||||
FineAbsenceDeduction = fineAbsenceDeduction;
|
FineAbsenceDeduction = fineAbsenceDeduction;
|
||||||
LateToWork = lateToWork;
|
LateToWork = lateToWork;
|
||||||
EarlyExit = earlyExit;
|
EarlyExit = earlyExit;
|
||||||
FridayWork = fridayWork;
|
HolidayWork = holidayWork;
|
||||||
HolidayWork = holidayWork;
|
IsSettingChange = isSettingChange;
|
||||||
IsSettingChange = isSettingChange;
|
LeavePermittedDays = leavePermittedDays;
|
||||||
LeavePermittedDays = leavePermittedDays;
|
|
||||||
|
|
||||||
|
|
||||||
var employeeSettingsShift = CustomizeWorkshopGroupSettingsShifts
|
var employeeSettingsShift = CustomizeWorkshopGroupSettingsShifts
|
||||||
.Select(x => new CustomizeWorkshopEmployeeSettingsShift(x.StartTime, x.EndTime, x.Placement)).ToList();
|
.Select(x => new CustomizeWorkshopEmployeeSettingsShift(x.StartTime, x.EndTime, x.Placement)).ToList();
|
||||||
|
|
||||||
var permittedToOverWrite = CustomizeWorkshopEmployeeSettingsCollection.Where(x => employeeIds.Contains(x.EmployeeId));
|
var permittedToOverWrite = CustomizeWorkshopEmployeeSettingsCollection.Where(x => employeeIds.Contains(x.EmployeeId));
|
||||||
foreach (var item in permittedToOverWrite)
|
foreach (var item in permittedToOverWrite)
|
||||||
{
|
{
|
||||||
item.EditEmployees(Salary, FridayPay, OverTimePay, BaseYearsPay, BonusesPay
|
item.EditEmployees(Salary, FridayPay, OverTimePay, BaseYearsPay, BonusesPay
|
||||||
, NightWorkPay, MarriedAllowance, ShiftPay, FamilyAllowance, LeavePay, InsuranceDeduction, FineAbsenceDeduction,
|
, NightWorkPay, MarriedAllowance, ShiftPay, FamilyAllowance, LeavePay, InsuranceDeduction, FineAbsenceDeduction,
|
||||||
LateToWork, EarlyExit, FridayWork, HolidayWork, IrregularShift, false, leavePermittedDays);
|
LateToWork, EarlyExit, HolidayWork, IrregularShift, false, leavePermittedDays);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
public void EditAndOverwriteOnAllEmployees(string groupName, double salary,
|
public void EditAndOverwriteOnAllEmployees(string groupName, double salary,
|
||||||
FridayPay fridayPay,
|
FridayPay fridayPay,
|
||||||
OverTimePay overTimePay, BaseYearsPay baseYearsPay, BonusesPay bonusesPay, ShiftPay shiftPay,
|
OverTimePay overTimePay, BaseYearsPay baseYearsPay, BonusesPay bonusesPay, ShiftPay shiftPay,
|
||||||
NightWorkPay nightWorkPay, MarriedAllowance marriedAllowance, FamilyAllowance familyAllowance,
|
NightWorkPay nightWorkPay, MarriedAllowance marriedAllowance, FamilyAllowance familyAllowance,
|
||||||
LeavePay leavePay, InsuranceDeduction insuranceDeduction, FineAbsenceDeduction fineAbsenceDeduction,
|
LeavePay leavePay, InsuranceDeduction insuranceDeduction, FineAbsenceDeduction fineAbsenceDeduction,
|
||||||
LateToWork lateToWork, EarlyExit earlyExit, FridayWork fridayWork, HolidayWork holidayWork, bool isSettingChange, int leavePermittedDays)
|
LateToWork lateToWork, EarlyExit earlyExit, HolidayWork holidayWork, bool isSettingChange, int leavePermittedDays)
|
||||||
{
|
{
|
||||||
SetValueObjects(fridayPay, overTimePay, baseYearsPay, bonusesPay
|
SetValueObjects(fridayPay, overTimePay, baseYearsPay, bonusesPay
|
||||||
, nightWorkPay, marriedAllowance, shiftPay, familyAllowance, leavePay, insuranceDeduction, fineAbsenceDeduction,
|
, nightWorkPay, marriedAllowance, shiftPay, familyAllowance, leavePay, insuranceDeduction, fineAbsenceDeduction,
|
||||||
lateToWork, earlyExit);
|
lateToWork, earlyExit);
|
||||||
GroupName = groupName;
|
GroupName = groupName;
|
||||||
Salary = salary;
|
Salary = salary;
|
||||||
FridayWork = fridayWork;
|
HolidayWork = holidayWork;
|
||||||
HolidayWork = holidayWork;
|
IsSettingChange = isSettingChange;
|
||||||
IsSettingChange = isSettingChange;
|
LeavePermittedDays = leavePermittedDays;
|
||||||
LeavePermittedDays = leavePermittedDays;
|
|
||||||
|
|
||||||
|
|
||||||
var employeeSettingsShift = CustomizeWorkshopGroupSettingsShifts
|
var employeeSettingsShift = CustomizeWorkshopGroupSettingsShifts
|
||||||
.Select(x => new CustomizeWorkshopEmployeeSettingsShift(x.StartTime, x.EndTime, x.Placement)).ToList();
|
.Select(x => new CustomizeWorkshopEmployeeSettingsShift(x.StartTime, x.EndTime, x.Placement)).ToList();
|
||||||
|
|
||||||
foreach (var item in CustomizeWorkshopEmployeeSettingsCollection)
|
foreach (var item in CustomizeWorkshopEmployeeSettingsCollection)
|
||||||
{
|
{
|
||||||
item.EditEmployees(Salary, FridayPay, OverTimePay, BaseYearsPay, BonusesPay
|
item.EditEmployees(Salary, FridayPay, OverTimePay, BaseYearsPay, BonusesPay
|
||||||
, NightWorkPay, MarriedAllowance, ShiftPay, FamilyAllowance, LeavePay, InsuranceDeduction, FineAbsenceDeduction,
|
, NightWorkPay, MarriedAllowance, ShiftPay, FamilyAllowance, LeavePay, InsuranceDeduction, FineAbsenceDeduction,
|
||||||
LateToWork, EarlyExit, FridayWork, HolidayWork, IrregularShift, false, leavePermittedDays);
|
LateToWork, EarlyExit, HolidayWork, IrregularShift, false, leavePermittedDays);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void RemoveEmployeeFromGroup(long employeeId)
|
public void RemoveEmployeeFromGroup(long employeeId)
|
||||||
{
|
{
|
||||||
var currentItem = CustomizeWorkshopEmployeeSettingsCollection.FirstOrDefault(x => x.EmployeeId == employeeId);
|
var currentItem = CustomizeWorkshopEmployeeSettingsCollection.FirstOrDefault(x => x.EmployeeId == employeeId);
|
||||||
if (currentItem != null)
|
if (currentItem != null)
|
||||||
CustomizeWorkshopEmployeeSettingsCollection.Remove(currentItem);
|
CustomizeWorkshopEmployeeSettingsCollection.Remove(currentItem);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void EditSimpleAndOverwriteOnEmployee(string groupName, IEnumerable<long> employeeIds,
|
public void EditSimpleAndOverwriteOnEmployee(string groupName, IEnumerable<long> employeeIds,
|
||||||
ICollection<CustomizeWorkshopGroupSettingsShift> customizeWorkshopGroupSettingsShifts, WorkshopShiftStatus workshopShiftStatus,
|
ICollection<CustomizeWorkshopGroupSettingsShift> customizeWorkshopGroupSettingsShifts, WorkshopShiftStatus workshopShiftStatus,
|
||||||
IrregularShift irregularShift, BreakTime breakTime, bool isShiftChange, FridayWork fridayWork, HolidayWork holidayWork, ICollection<CustomizeRotatingShift> rotatingShifts)
|
IrregularShift irregularShift, BreakTime breakTime, bool isShiftChange, HolidayWork holidayWork, ICollection<CustomizeRotatingShift> rotatingShifts, List<WeeklyOffDay> weeklyOffDays)
|
||||||
{
|
{
|
||||||
GroupName = groupName;
|
GroupName = groupName;
|
||||||
CustomizeWorkshopGroupSettingsShifts = workshopShiftStatus == WorkshopShiftStatus.Regular ? customizeWorkshopGroupSettingsShifts : [];
|
CustomizeWorkshopGroupSettingsShifts = workshopShiftStatus == WorkshopShiftStatus.Regular ? customizeWorkshopGroupSettingsShifts : [];
|
||||||
WorkshopShiftStatus = workshopShiftStatus;
|
WorkshopShiftStatus = workshopShiftStatus;
|
||||||
|
|
||||||
IrregularShift = workshopShiftStatus == WorkshopShiftStatus.Regular ?
|
IrregularShift = workshopShiftStatus == WorkshopShiftStatus.Regular ?
|
||||||
new IrregularShift(new TimeOnly(), new TimeOnly(), WorkshopIrregularShifts.None)
|
new IrregularShift(new TimeOnly(), new TimeOnly(), WorkshopIrregularShifts.None)
|
||||||
: new IrregularShift(irregularShift.StartTime, irregularShift.EndTime, irregularShift.WorkshopIrregularShifts);
|
: new IrregularShift(irregularShift.StartTime, irregularShift.EndTime, irregularShift.WorkshopIrregularShifts);
|
||||||
CustomizeRotatingShifts = workshopShiftStatus == WorkshopShiftStatus.Rotating ? rotatingShifts : [];
|
CustomizeRotatingShifts = workshopShiftStatus == WorkshopShiftStatus.Rotating ? rotatingShifts : [];
|
||||||
|
|
||||||
|
|
||||||
BreakTime = new BreakTime(breakTime.HasBreakTimeValue, breakTime.BreakTimeValue);
|
BreakTime = new BreakTime(breakTime.HasBreakTimeValue, breakTime.BreakTimeValue);
|
||||||
IsShiftChange = isShiftChange;
|
IsShiftChange = isShiftChange;
|
||||||
FridayWork = fridayWork;
|
|
||||||
HolidayWork = holidayWork;
|
|
||||||
|
|
||||||
//var employeeSettingsShift = customizeWorkshopGroupSettingsShifts
|
HolidayWork = holidayWork;
|
||||||
// .Select(x => new CustomizeWorkshopEmployeeSettingsShift(x.StartTime, x.EndTime, x.Placement)).ToList();
|
|
||||||
if (isShiftChange)
|
|
||||||
{
|
|
||||||
|
|
||||||
}
|
WeeklyOffDays = weeklyOffDays;
|
||||||
|
|
||||||
var permittedToOverWrite = CustomizeWorkshopEmployeeSettingsCollection.Where(x => employeeIds.Contains(x.id));
|
//var employeeSettingsShift = customizeWorkshopGroupSettingsShifts
|
||||||
|
// .Select(x => new CustomizeWorkshopEmployeeSettingsShift(x.StartTime, x.EndTime, x.Placement)).ToList();
|
||||||
|
if (isShiftChange)
|
||||||
|
{
|
||||||
|
|
||||||
foreach (var item in permittedToOverWrite)
|
}
|
||||||
{
|
|
||||||
var newRotatingShifts = CustomizeRotatingShifts.Select(x => new CustomizeRotatingShift(x.StartTime, x.EndTime))
|
|
||||||
.ToList();
|
|
||||||
item.SimpleEdit(customizeWorkshopGroupSettingsShifts
|
|
||||||
.Select(x => new CustomizeWorkshopEmployeeSettingsShift(x.StartTime, x.EndTime, x.Placement)).ToList(),
|
|
||||||
IrregularShift, WorkshopShiftStatus, BreakTime, false, FridayWork, HolidayWork, newRotatingShifts);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
var permittedToOverWrite = CustomizeWorkshopEmployeeSettingsCollection.Where(x => employeeIds.Contains(x.EmployeeId));
|
||||||
|
|
||||||
public void EditSimpleAndOverwriteOnAllEmployees(string groupName,
|
foreach (var item in permittedToOverWrite)
|
||||||
ICollection<CustomizeWorkshopGroupSettingsShift> customizeWorkshopGroupSettingsShifts,
|
{
|
||||||
WorkshopShiftStatus workshopShiftStatus, IrregularShift irregularShift, BreakTime breakTime, bool isShiftChange,
|
var employeeWeeklyOffDays = WeeklyOffDays.Select(x => new WeeklyOffDay(x.DayOfWeek)).ToList();
|
||||||
FridayWork fridayWork, HolidayWork holidayWork, ICollection<CustomizeRotatingShift> rotatingShifts)
|
var newRotatingShifts = CustomizeRotatingShifts.Select(x => new CustomizeRotatingShift(x.StartTime, x.EndTime))
|
||||||
{
|
.ToList();
|
||||||
GroupName = groupName;
|
item.SimpleEdit(customizeWorkshopGroupSettingsShifts
|
||||||
CustomizeWorkshopGroupSettingsShifts = workshopShiftStatus == WorkshopShiftStatus.Regular ? customizeWorkshopGroupSettingsShifts : [];
|
.Select(x => new CustomizeWorkshopEmployeeSettingsShift(x.StartTime, x.EndTime, x.Placement)).ToList(),
|
||||||
WorkshopShiftStatus = workshopShiftStatus;
|
IrregularShift, WorkshopShiftStatus, BreakTime, false, HolidayWork, newRotatingShifts, employeeWeeklyOffDays);
|
||||||
|
}
|
||||||
|
|
||||||
IrregularShift = workshopShiftStatus == WorkshopShiftStatus.Regular ?
|
}
|
||||||
new IrregularShift(new TimeOnly(), new TimeOnly(), WorkshopIrregularShifts.None)
|
|
||||||
: new IrregularShift(irregularShift.StartTime, irregularShift.EndTime, irregularShift.WorkshopIrregularShifts);
|
|
||||||
|
|
||||||
CustomizeRotatingShifts = workshopShiftStatus == WorkshopShiftStatus.Rotating ? rotatingShifts : [];
|
public void EditSimpleAndOverwriteOnAllEmployees(string groupName,
|
||||||
|
ICollection<CustomizeWorkshopGroupSettingsShift> customizeWorkshopGroupSettingsShifts,
|
||||||
|
WorkshopShiftStatus workshopShiftStatus, IrregularShift irregularShift, BreakTime breakTime, bool isShiftChange,
|
||||||
|
HolidayWork holidayWork, ICollection<CustomizeRotatingShift> rotatingShifts, List<WeeklyOffDay> weeklyOffDays)
|
||||||
|
{
|
||||||
|
GroupName = groupName;
|
||||||
|
CustomizeWorkshopGroupSettingsShifts = workshopShiftStatus == WorkshopShiftStatus.Regular ? customizeWorkshopGroupSettingsShifts : [];
|
||||||
|
WorkshopShiftStatus = workshopShiftStatus;
|
||||||
|
|
||||||
|
IrregularShift = workshopShiftStatus == WorkshopShiftStatus.Regular ?
|
||||||
|
new IrregularShift(new TimeOnly(), new TimeOnly(), WorkshopIrregularShifts.None)
|
||||||
|
: new IrregularShift(irregularShift.StartTime, irregularShift.EndTime, irregularShift.WorkshopIrregularShifts);
|
||||||
|
|
||||||
|
CustomizeRotatingShifts = workshopShiftStatus == WorkshopShiftStatus.Rotating ? rotatingShifts : [];
|
||||||
|
|
||||||
|
|
||||||
BreakTime = new BreakTime(breakTime.HasBreakTimeValue, breakTime.BreakTimeValue);
|
BreakTime = new BreakTime(breakTime.HasBreakTimeValue, breakTime.BreakTimeValue);
|
||||||
IsShiftChange = isShiftChange;
|
IsShiftChange = isShiftChange;
|
||||||
HolidayWork = holidayWork;
|
HolidayWork = holidayWork;
|
||||||
FridayWork = fridayWork;
|
|
||||||
|
|
||||||
//var employeeSettingsShift = customizeWorkshopGroupSettingsShifts
|
WeeklyOffDays = weeklyOffDays;
|
||||||
// .Select(x => new CustomizeWorkshopEmployeeSettingsShift(x.StartTime, x.EndTime, x.Placement)).ToList();
|
//var employeeSettingsShift = customizeWorkshopGroupSettingsShifts
|
||||||
|
// .Select(x => new CustomizeWorkshopEmployeeSettingsShift(x.StartTime, x.EndTime, x.Placement)).ToList();
|
||||||
foreach (var item in CustomizeWorkshopEmployeeSettingsCollection)
|
|
||||||
{
|
|
||||||
var newRotatingShifts = CustomizeRotatingShifts.Select(x => new CustomizeRotatingShift(x.StartTime, x.EndTime))
|
|
||||||
.ToList();
|
|
||||||
item.SimpleEdit(customizeWorkshopGroupSettingsShifts
|
|
||||||
.Select(x => new CustomizeWorkshopEmployeeSettingsShift(x.StartTime, x.EndTime, x.Placement)).ToList(),
|
|
||||||
irregularShift, workshopShiftStatus, breakTime, false, FridayWork, HolidayWork, newRotatingShifts);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
public void AddEmployeeSettingToGroupWithGroupData(long employeeId, long workshopId)
|
|
||||||
{
|
|
||||||
var shifts = CustomizeWorkshopGroupSettingsShifts
|
|
||||||
.Select(x => new CustomizeWorkshopEmployeeSettingsShift(x.StartTime, x.EndTime, x.Placement)).ToList();
|
|
||||||
|
|
||||||
FridayPay fridayPay = new(FridayPay.FridayPayType, FridayPay.Value);
|
|
||||||
OverTimePay overTimePay = new(OverTimePay.OverTimePayType, OverTimePay.Value);
|
|
||||||
BaseYearsPay baseYearsPay = new(BaseYearsPay.BaseYearsPayType, BaseYearsPay.Value, BaseYearsPay.PaymentType);
|
|
||||||
BonusesPay bonusesPay = new(BonusesPay.BonusesPayType, BonusesPay.Value, BonusesPay.PaymentType);
|
|
||||||
NightWorkPay nightWorkPay = new(NightWorkPay.NightWorkingType, NightWorkPay.Value);
|
|
||||||
MarriedAllowance marriedAllowance = new(MarriedAllowance.MarriedAllowanceType, MarriedAllowance.Value);
|
|
||||||
ShiftPay shiftPay = new(ShiftType.None, ShiftPayType.None, 0);
|
|
||||||
FamilyAllowance familyAllowance = new(FamilyAllowance.FamilyAllowanceType, FamilyAllowance.Value);
|
|
||||||
LeavePay leavePay = new(LeavePay.LeavePayType, LeavePay.Value);
|
|
||||||
InsuranceDeduction insuranceDeduction = new(InsuranceDeduction.InsuranceDeductionType, InsuranceDeduction.Value);
|
|
||||||
FineAbsenceDeduction fineAbsenceDeduction = new(
|
|
||||||
FineAbsenceDeduction.FineAbsenceDeductionType, FineAbsenceDeduction.Value,
|
|
||||||
FineAbsenceDeduction.FineAbsenceDayOfWeekCollection
|
|
||||||
.Select(x => new FineAbsenceDayOfWeek(x.DayOfWeek)).ToList()
|
|
||||||
);
|
|
||||||
LateToWork lateToWork = new(
|
|
||||||
LateToWork.LateToWorkType,
|
|
||||||
LateToWork.LateToWorkTimeFines.Select(x => new LateToWorkTimeFine(x.Minute, x.FineMoney))
|
|
||||||
.ToList(), LateToWork.Value
|
|
||||||
);
|
|
||||||
EarlyExit earlyExit = new(EarlyExit.EarlyExitType,
|
|
||||||
EarlyExit.EarlyExitTimeFines.Select(x => new EarlyExitTimeFine(x.Minute, x.FineMoney))
|
|
||||||
.ToList(), EarlyExit.Value);
|
|
||||||
IrregularShift irregularShift = new(IrregularShift.StartTime, IrregularShift.EndTime,
|
|
||||||
IrregularShift.WorkshopIrregularShifts);
|
|
||||||
BreakTime breakTime = new(BreakTime.HasBreakTimeValue, BreakTime.BreakTimeValue);
|
|
||||||
|
|
||||||
var rotatingShift = CustomizeRotatingShifts.Select(x => new CustomizeRotatingShift(x.StartTime, x.EndTime)).ToList();
|
|
||||||
|
|
||||||
var customizeWorkshopEmployeeSettings = new CustomizeWorkshopEmployeeSettings(fridayPay, overTimePay, baseYearsPay, bonusesPay, nightWorkPay,
|
|
||||||
marriedAllowance, shiftPay, familyAllowance, leavePay, insuranceDeduction, fineAbsenceDeduction, lateToWork,
|
|
||||||
earlyExit, employeeId, workshopId, Salary, id, shifts, FridayWork, HolidayWork, irregularShift,
|
|
||||||
WorkshopShiftStatus, breakTime, LeavePermittedDays, rotatingShift);
|
|
||||||
|
|
||||||
CustomizeWorkshopEmployeeSettingsCollection.Add(customizeWorkshopEmployeeSettings);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
private void SetValueObjects(FridayPay fridayPay, OverTimePay overTimePay, BaseYearsPay baseYearsPay,
|
foreach (var item in CustomizeWorkshopEmployeeSettingsCollection)
|
||||||
BonusesPay bonusesPay
|
{
|
||||||
, NightWorkPay nightWorkPay, MarriedAllowance marriedAllowance, ShiftPay shiftPay,
|
var employeeWeeklyOffDays = WeeklyOffDays.Select(x => new WeeklyOffDay(x.DayOfWeek)).ToList();
|
||||||
FamilyAllowance familyAllowance, LeavePay leavePay, InsuranceDeduction insuranceDeduction,
|
var newRotatingShifts = CustomizeRotatingShifts.Select(x => new CustomizeRotatingShift(x.StartTime, x.EndTime))
|
||||||
FineAbsenceDeduction fineAbsenceDeduction,
|
.ToList();
|
||||||
LateToWork lateToWork, EarlyExit earlyExit)
|
item.SimpleEdit(customizeWorkshopGroupSettingsShifts
|
||||||
{
|
.Select(x => new CustomizeWorkshopEmployeeSettingsShift(x.StartTime, x.EndTime, x.Placement)).ToList(),
|
||||||
FridayPay = new(fridayPay.FridayPayType, fridayPay.Value);
|
irregularShift, workshopShiftStatus, breakTime, false, HolidayWork, newRotatingShifts, employeeWeeklyOffDays);
|
||||||
OverTimePay = new(overTimePay.OverTimePayType, overTimePay.Value);
|
}
|
||||||
BaseYearsPay = new(baseYearsPay.BaseYearsPayType, baseYearsPay.Value, baseYearsPay.PaymentType);
|
|
||||||
BonusesPay = new(bonusesPay.BonusesPayType, bonusesPay.Value, bonusesPay.PaymentType);
|
}
|
||||||
NightWorkPay = new(nightWorkPay.NightWorkingType, nightWorkPay.Value);
|
|
||||||
MarriedAllowance = new(marriedAllowance.MarriedAllowanceType, marriedAllowance.Value);
|
public void AddEmployeeSettingToGroupWithGroupData(long employeeId, long workshopId)
|
||||||
ShiftPay = new(shiftPay.ShiftType, shiftPay.ShiftPayType, shiftPay.Value);
|
{
|
||||||
FamilyAllowance = new(familyAllowance.FamilyAllowanceType, familyAllowance.Value);
|
var shifts = CustomizeWorkshopGroupSettingsShifts
|
||||||
LeavePay = new(leavePay.LeavePayType, leavePay.Value);
|
.Select(x => new CustomizeWorkshopEmployeeSettingsShift(x.StartTime, x.EndTime, x.Placement)).ToList();
|
||||||
InsuranceDeduction = new(insuranceDeduction.InsuranceDeductionType, insuranceDeduction.Value);
|
|
||||||
FineAbsenceDeduction = new(
|
FridayPay fridayPay = new(FridayPay.FridayPayType, FridayPay.Value);
|
||||||
fineAbsenceDeduction.FineAbsenceDeductionType, fineAbsenceDeduction.Value,
|
OverTimePay overTimePay = new(OverTimePay.OverTimePayType, OverTimePay.Value);
|
||||||
fineAbsenceDeduction.FineAbsenceDayOfWeekCollection
|
BaseYearsPay baseYearsPay = new(BaseYearsPay.BaseYearsPayType, BaseYearsPay.Value, BaseYearsPay.PaymentType);
|
||||||
.Select(x => new FineAbsenceDayOfWeek(x.DayOfWeek)).ToList()
|
BonusesPay bonusesPay = new(BonusesPay.BonusesPayType, BonusesPay.Value, BonusesPay.PaymentType);
|
||||||
);
|
NightWorkPay nightWorkPay = new(NightWorkPay.NightWorkingType, NightWorkPay.Value);
|
||||||
LateToWork = new(
|
MarriedAllowance marriedAllowance = new(MarriedAllowance.MarriedAllowanceType, MarriedAllowance.Value);
|
||||||
lateToWork.LateToWorkType,
|
ShiftPay shiftPay = new(ShiftType.None, ShiftPayType.None, 0);
|
||||||
lateToWork.LateToWorkTimeFines.Select(x => new LateToWorkTimeFine(x.Minute, x.FineMoney))
|
FamilyAllowance familyAllowance = new(FamilyAllowance.FamilyAllowanceType, FamilyAllowance.Value);
|
||||||
.ToList(), lateToWork.Value
|
LeavePay leavePay = new(LeavePay.LeavePayType, LeavePay.Value);
|
||||||
);
|
InsuranceDeduction insuranceDeduction = new(InsuranceDeduction.InsuranceDeductionType, InsuranceDeduction.Value);
|
||||||
EarlyExit = new(earlyExit.EarlyExitType,
|
FineAbsenceDeduction fineAbsenceDeduction = new(
|
||||||
earlyExit.EarlyExitTimeFines.Select(x => new EarlyExitTimeFine(x.Minute, x.FineMoney))
|
FineAbsenceDeduction.FineAbsenceDeductionType, FineAbsenceDeduction.Value,
|
||||||
.ToList(), earlyExit.Value);
|
FineAbsenceDeduction.FineAbsenceDayOfWeekCollection
|
||||||
}
|
.Select(x => new FineAbsenceDayOfWeek(x.DayOfWeek)).ToList()
|
||||||
|
);
|
||||||
|
LateToWork lateToWork = new(
|
||||||
|
LateToWork.LateToWorkType,
|
||||||
|
LateToWork.LateToWorkTimeFines.Select(x => new LateToWorkTimeFine(x.Minute, x.FineMoney))
|
||||||
|
.ToList(), LateToWork.Value
|
||||||
|
);
|
||||||
|
EarlyExit earlyExit = new(EarlyExit.EarlyExitType,
|
||||||
|
EarlyExit.EarlyExitTimeFines.Select(x => new EarlyExitTimeFine(x.Minute, x.FineMoney))
|
||||||
|
.ToList(), EarlyExit.Value);
|
||||||
|
IrregularShift irregularShift = new(IrregularShift.StartTime, IrregularShift.EndTime,
|
||||||
|
IrregularShift.WorkshopIrregularShifts);
|
||||||
|
BreakTime breakTime = new(BreakTime.HasBreakTimeValue, BreakTime.BreakTimeValue);
|
||||||
|
List<WeeklyOffDay> weeklyOffDays = WeeklyOffDays.Select(x => new WeeklyOffDay(x.DayOfWeek)).ToList();
|
||||||
|
|
||||||
|
var rotatingShift = CustomizeRotatingShifts.Select(x => new CustomizeRotatingShift(x.StartTime, x.EndTime)).ToList();
|
||||||
|
|
||||||
|
var customizeWorkshopEmployeeSettings = new CustomizeWorkshopEmployeeSettings(fridayPay, overTimePay, baseYearsPay, bonusesPay, nightWorkPay,
|
||||||
|
marriedAllowance, shiftPay, familyAllowance, leavePay, insuranceDeduction, fineAbsenceDeduction, lateToWork,
|
||||||
|
earlyExit, employeeId, workshopId, Salary, id, shifts, HolidayWork, irregularShift,
|
||||||
|
WorkshopShiftStatus, breakTime, LeavePermittedDays, rotatingShift, weeklyOffDays);
|
||||||
|
|
||||||
|
CustomizeWorkshopEmployeeSettingsCollection.Add(customizeWorkshopEmployeeSettings);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
//public void OverWriteEmployeesShiftAndSalary(IEnumerable<long> ids,ICollection<RollCallWorkshopEmployeeSettingsShift> employeeSettingsShifts,double salary)
|
private void SetValueObjects(FridayPay fridayPay, OverTimePay overTimePay, BaseYearsPay baseYearsPay,
|
||||||
//{
|
BonusesPay bonusesPay
|
||||||
// var permittedToOverWrite= RollCallWorkshopEmployeeSettingsCollection.Where(x => ids.Contains(x.id));
|
, NightWorkPay nightWorkPay, MarriedAllowance marriedAllowance, ShiftPay shiftPay,
|
||||||
// foreach (var item in permittedToOverWrite)
|
FamilyAllowance familyAllowance, LeavePay leavePay, InsuranceDeduction insuranceDeduction,
|
||||||
// {
|
FineAbsenceDeduction fineAbsenceDeduction,
|
||||||
// item.OverWriteSalaryAndShift(employeeSettingsShifts, salary);
|
LateToWork lateToWork, EarlyExit earlyExit)
|
||||||
// }
|
{
|
||||||
//}
|
FridayPay = new(fridayPay.FridayPayType, fridayPay.Value);
|
||||||
|
OverTimePay = new(overTimePay.OverTimePayType, overTimePay.Value);
|
||||||
|
BaseYearsPay = new(baseYearsPay.BaseYearsPayType, baseYearsPay.Value, baseYearsPay.PaymentType);
|
||||||
|
BonusesPay = new(bonusesPay.BonusesPayType, bonusesPay.Value, bonusesPay.PaymentType);
|
||||||
|
NightWorkPay = new(nightWorkPay.NightWorkingType, nightWorkPay.Value);
|
||||||
|
MarriedAllowance = new(marriedAllowance.MarriedAllowanceType, marriedAllowance.Value);
|
||||||
|
ShiftPay = new(shiftPay.ShiftType, shiftPay.ShiftPayType, shiftPay.Value);
|
||||||
|
FamilyAllowance = new(familyAllowance.FamilyAllowanceType, familyAllowance.Value);
|
||||||
|
LeavePay = new(leavePay.LeavePayType, leavePay.Value);
|
||||||
|
InsuranceDeduction = new(insuranceDeduction.InsuranceDeductionType, insuranceDeduction.Value);
|
||||||
|
FineAbsenceDeduction = new(
|
||||||
|
fineAbsenceDeduction.FineAbsenceDeductionType, fineAbsenceDeduction.Value,
|
||||||
|
fineAbsenceDeduction.FineAbsenceDayOfWeekCollection
|
||||||
|
.Select(x => new FineAbsenceDayOfWeek(x.DayOfWeek)).ToList()
|
||||||
|
);
|
||||||
|
LateToWork = new(
|
||||||
|
lateToWork.LateToWorkType,
|
||||||
|
lateToWork.LateToWorkTimeFines.Select(x => new LateToWorkTimeFine(x.Minute, x.FineMoney))
|
||||||
|
.ToList(), lateToWork.Value
|
||||||
|
);
|
||||||
|
EarlyExit = new(earlyExit.EarlyExitType,
|
||||||
|
earlyExit.EarlyExitTimeFines.Select(x => new EarlyExitTimeFine(x.Minute, x.FineMoney))
|
||||||
|
.ToList(), earlyExit.Value);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
//public void OverWriteEmployeesShiftAndSalary(IEnumerable<long> ids,ICollection<RollCallWorkshopEmployeeSettingsShift> employeeSettingsShifts,double salary)
|
||||||
|
//{
|
||||||
|
// var permittedToOverWrite= RollCallWorkshopEmployeeSettingsCollection.Where(x => ids.Contains(x.id));
|
||||||
|
// foreach (var item in permittedToOverWrite)
|
||||||
|
// {
|
||||||
|
// item.OverWriteSalaryAndShift(employeeSettingsShifts, salary);
|
||||||
|
// }
|
||||||
|
//}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -17,7 +17,7 @@ public class CustomizeWorkshopSettings : BaseCustomizeEntity
|
|||||||
|
|
||||||
public CustomizeWorkshopSettings(long workshopId,
|
public CustomizeWorkshopSettings(long workshopId,
|
||||||
ICollection<CustomizeWorkshopSettingsShift> customizeWorkshopSettingsShifts, int leavePermittedDays,
|
ICollection<CustomizeWorkshopSettingsShift> customizeWorkshopSettingsShifts, int leavePermittedDays,
|
||||||
WorkshopShiftStatus workshopShiftStatus,FridayWork fridayWork,HolidayWork holidayWork)
|
WorkshopShiftStatus workshopShiftStatus,HolidayWork holidayWork, List<WeeklyOffDay> weeklyOffDays)
|
||||||
{
|
{
|
||||||
FridayPay = new FridayPay(FridayPayType.None, 0);
|
FridayPay = new FridayPay(FridayPayType.None, 0);
|
||||||
OverTimePay = new OverTimePay(OverTimePayType.None, 0);
|
OverTimePay = new OverTimePay(OverTimePayType.None, 0);
|
||||||
@@ -38,11 +38,10 @@ public class CustomizeWorkshopSettings : BaseCustomizeEntity
|
|||||||
OverTimeThresholdMinute = 0;
|
OverTimeThresholdMinute = 0;
|
||||||
Currency = Currency.Rial;
|
Currency = Currency.Rial;
|
||||||
MaxMonthDays = MaxMonthDays.Default;
|
MaxMonthDays = MaxMonthDays.Default;
|
||||||
FridayWork = fridayWork;
|
|
||||||
HolidayWork = holidayWork;
|
|
||||||
BonusesPaysInEndOfMonth = BonusesPaysInEndOfYear.EndOfYear;
|
BonusesPaysInEndOfMonth = BonusesPaysInEndOfYear.EndOfYear;
|
||||||
WorkshopShiftStatus = workshopShiftStatus;
|
WorkshopShiftStatus = workshopShiftStatus;
|
||||||
|
WeeklyOffDays = weeklyOffDays;
|
||||||
|
HolidayWork = holidayWork;
|
||||||
if (workshopShiftStatus == WorkshopShiftStatus.Irregular)
|
if (workshopShiftStatus == WorkshopShiftStatus.Irregular)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
@@ -92,8 +91,7 @@ public class CustomizeWorkshopSettings : BaseCustomizeEntity
|
|||||||
public void Edit(FridayPay fridayPay, OverTimePay overTimePay, BaseYearsPay baseYearsPay, BonusesPay bonusesPay,
|
public void Edit(FridayPay fridayPay, OverTimePay overTimePay, BaseYearsPay baseYearsPay, BonusesPay bonusesPay,
|
||||||
NightWorkPay nightWorkPay, MarriedAllowance marriedAllowance, ShiftPay shiftPay,
|
NightWorkPay nightWorkPay, MarriedAllowance marriedAllowance, ShiftPay shiftPay,
|
||||||
FamilyAllowance familyAllowance, LeavePay leavePay, InsuranceDeduction insuranceDeduction,
|
FamilyAllowance familyAllowance, LeavePay leavePay, InsuranceDeduction insuranceDeduction,
|
||||||
FineAbsenceDeduction fineAbsenceDeduction, LateToWork lateToWork, EarlyExit earlyExit,
|
FineAbsenceDeduction fineAbsenceDeduction, LateToWork lateToWork, EarlyExit earlyExit, HolidayWork holidayWork, BonusesPaysInEndOfYear bonusesPaysInEndOfYear,
|
||||||
FridayWork fridayWork, HolidayWork holidayWork, BonusesPaysInEndOfYear bonusesPaysInEndOfYear,
|
|
||||||
int leavePermittedDays, BaseYearsPayInEndOfYear baseYearsPayInEndOfYear, int overTimeThresholdMinute)
|
int leavePermittedDays, BaseYearsPayInEndOfYear baseYearsPayInEndOfYear, int overTimeThresholdMinute)
|
||||||
{
|
{
|
||||||
FridayPay = fridayPay;
|
FridayPay = fridayPay;
|
||||||
@@ -109,7 +107,6 @@ public class CustomizeWorkshopSettings : BaseCustomizeEntity
|
|||||||
FineAbsenceDeduction = fineAbsenceDeduction;
|
FineAbsenceDeduction = fineAbsenceDeduction;
|
||||||
LateToWork = lateToWork;
|
LateToWork = lateToWork;
|
||||||
EarlyExit = earlyExit;
|
EarlyExit = earlyExit;
|
||||||
FridayWork = fridayWork;
|
|
||||||
HolidayWork = holidayWork;
|
HolidayWork = holidayWork;
|
||||||
BonusesPaysInEndOfMonth = bonusesPaysInEndOfYear;
|
BonusesPaysInEndOfMonth = bonusesPaysInEndOfYear;
|
||||||
LeavePermittedDays = leavePermittedDays;
|
LeavePermittedDays = leavePermittedDays;
|
||||||
@@ -127,19 +124,18 @@ public class CustomizeWorkshopSettings : BaseCustomizeEntity
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void ChangeWorkshopShifts(ICollection<CustomizeWorkshopSettingsShift> customizeWorkshopSettingsShifts,
|
public void ChangeWorkshopShifts(ICollection<CustomizeWorkshopSettingsShift> customizeWorkshopSettingsShifts,
|
||||||
WorkshopShiftStatus workshopShiftStatus,FridayWork fridayWork,HolidayWork holidayWork)
|
WorkshopShiftStatus workshopShiftStatus,HolidayWork holidayWork, List<WeeklyOffDay> weeklyOffDays)
|
||||||
{
|
{
|
||||||
WorkshopShiftStatus = workshopShiftStatus;
|
WorkshopShiftStatus = workshopShiftStatus;
|
||||||
HolidayWork = holidayWork;
|
HolidayWork = holidayWork;
|
||||||
FridayWork = fridayWork;
|
|
||||||
CustomizeWorkshopSettingsShifts = workshopShiftStatus == WorkshopShiftStatus.Regular ? customizeWorkshopSettingsShifts : new List<CustomizeWorkshopSettingsShift>();
|
CustomizeWorkshopSettingsShifts = workshopShiftStatus == WorkshopShiftStatus.Regular ? customizeWorkshopSettingsShifts : new List<CustomizeWorkshopSettingsShift>();
|
||||||
|
WeeklyOffDays = weeklyOffDays;
|
||||||
|
|
||||||
if (workshopShiftStatus == WorkshopShiftStatus.Regular)
|
if (workshopShiftStatus == WorkshopShiftStatus.Regular)
|
||||||
{
|
{
|
||||||
var date = new DateOnly();
|
var date = new DateOnly();
|
||||||
var firstStartShift = new DateTime(date, CustomizeWorkshopSettingsShifts.MinBy(x => x.Placement).StartTime);
|
var firstStartShift = new DateTime(date, CustomizeWorkshopSettingsShifts.MinBy(x => x.Placement).StartTime);
|
||||||
var lastEndShift = new DateTime(date, CustomizeWorkshopSettingsShifts.MaxBy(x => x.Placement).EndTime);
|
var lastEndShift = new DateTime(date, CustomizeWorkshopSettingsShifts.MaxBy(x => x.Placement).EndTime);
|
||||||
|
|
||||||
|
|
||||||
if (lastEndShift > firstStartShift)
|
if (lastEndShift > firstStartShift)
|
||||||
firstStartShift = firstStartShift.AddDays(1);
|
firstStartShift = firstStartShift.AddDays(1);
|
||||||
var offSet = (firstStartShift - lastEndShift).Divide(2);
|
var offSet = (firstStartShift - lastEndShift).Divide(2);
|
||||||
|
|||||||
@@ -71,7 +71,12 @@ public interface IEmployeeRepository : IRepository<long, Employee>
|
|||||||
Task<GetEditEmployeeInEmployeeDocumentViewModel> GetEmployeeEditInEmployeeDocumentWorkFlow(long employeeId,
|
Task<GetEditEmployeeInEmployeeDocumentViewModel> GetEmployeeEditInEmployeeDocumentWorkFlow(long employeeId,
|
||||||
long workshopId);
|
long workshopId);
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
|
#region Api
|
||||||
|
Task<List<EmployeeSelectListViewModel>> GetSelectList(string searchText);
|
||||||
|
Task<List<GetEmployeeListViewModel>> GetList(GetEmployeeListSearchModel searchModel);
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -3,36 +3,110 @@ using System.Collections.Generic;
|
|||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Text;
|
using System.Text;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
|
using _0_Framework.Application;
|
||||||
using _0_Framework.Domain;
|
using _0_Framework.Domain;
|
||||||
|
|
||||||
namespace Company.Domain.EmployeeComputeOptionsAgg
|
namespace Company.Domain.EmployeeComputeOptionsAgg
|
||||||
{
|
{
|
||||||
public class EmployeeComputeOptions : EntityBase
|
public class EmployeeComputeOptions : EntityBase
|
||||||
{
|
{
|
||||||
public EmployeeComputeOptions(long workshopId, long employeeId, string computeOptions, string bonusesOptions, string yearsOptions)
|
public EmployeeComputeOptions(long workshopId, long employeeId, string computeOptions, string bonusesOptions, string yearsOptions,
|
||||||
{
|
bool createContract, bool signContract, bool createCheckout, bool signCheckout, string contractTerm, IsActive cutContractEndOfYear)
|
||||||
WorkshopId = workshopId;
|
{
|
||||||
EmployeeId = employeeId;
|
WorkshopId = workshopId;
|
||||||
ComputeOptions = computeOptions;
|
EmployeeId = employeeId;
|
||||||
BonusesOptions = bonusesOptions;
|
ComputeOptions = computeOptions;
|
||||||
YearsOptions = yearsOptions;
|
BonusesOptions = bonusesOptions;
|
||||||
}
|
YearsOptions = yearsOptions;
|
||||||
|
ContractTerm = contractTerm;
|
||||||
|
CutContractEndOfYear = contractTerm == "1" ? IsActive.None : cutContractEndOfYear;
|
||||||
|
|
||||||
public long WorkshopId { get; private set;}
|
SetContractAndCheckoutOptions(createContract, signContract, createCheckout, signCheckout);
|
||||||
public long EmployeeId { get; private set;}
|
}
|
||||||
|
|
||||||
//نحوه محاسبه مزد مرخصی
|
|
||||||
public string ComputeOptions { get; private set; }
|
|
||||||
//نحوه محاسبه عیدی
|
|
||||||
public string BonusesOptions { get; private set; }
|
|
||||||
//نحوه محاسبه سنوات
|
|
||||||
public string YearsOptions { get; private set; }
|
|
||||||
|
|
||||||
public void Edit(string computeOptions, string bonusesOptions, string yearsOptions)
|
|
||||||
{
|
public long WorkshopId { get; private set; }
|
||||||
ComputeOptions = computeOptions;
|
public long EmployeeId { get; private set; }
|
||||||
BonusesOptions = bonusesOptions;
|
|
||||||
YearsOptions = yearsOptions;
|
//نحوه محاسبه مزد مرخصی
|
||||||
}
|
public string ComputeOptions { get; private set; }
|
||||||
}
|
//نحوه محاسبه عیدی
|
||||||
|
public string BonusesOptions { get; private set; }
|
||||||
|
//نحوه محاسبه سنوات
|
||||||
|
public string YearsOptions { get; private set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// ایجاد قرارداد
|
||||||
|
/// </summary>
|
||||||
|
public bool CreateContract { get; private set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// امضای قرارداد
|
||||||
|
/// </summary>
|
||||||
|
public bool SignContract { get; private set; }
|
||||||
|
/// <summary>
|
||||||
|
/// ایجاد تصفیه
|
||||||
|
/// </summary>
|
||||||
|
public bool CreateCheckout { get; private set; }
|
||||||
|
/// <summary>
|
||||||
|
/// امضای تصفیه
|
||||||
|
/// </summary>
|
||||||
|
public bool SignCheckout { get; private set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// مدت قرارداد
|
||||||
|
/// </summary>
|
||||||
|
public string ContractTerm { get; private set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// اگر قرارداد بیش از یک ماه باشد و گزینه انتخاب شده منتهی به پایان سال باشد
|
||||||
|
/// این آیتم
|
||||||
|
/// True
|
||||||
|
/// است
|
||||||
|
/// </summary>
|
||||||
|
public IsActive CutContractEndOfYear { get; private set; }
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
public void Edit(string computeOptions, string bonusesOptions, string yearsOptions, bool createContract, bool signContract, bool createCheckout,
|
||||||
|
bool signCheckout, string contractTerm, IsActive cutContractEndOfYear)
|
||||||
|
{
|
||||||
|
ComputeOptions = computeOptions;
|
||||||
|
BonusesOptions = bonusesOptions;
|
||||||
|
YearsOptions = yearsOptions;
|
||||||
|
|
||||||
|
ContractTerm = contractTerm;
|
||||||
|
CutContractEndOfYear = contractTerm == "1" ? IsActive.None : cutContractEndOfYear;
|
||||||
|
SetContractAndCheckoutOptions(createContract, signContract, createCheckout, signCheckout);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
private void SetContractAndCheckoutOptions(bool createContract, bool signContract, bool createCheckout,
|
||||||
|
bool signCheckout)
|
||||||
|
{
|
||||||
|
CreateContract = createContract;
|
||||||
|
if (createContract)
|
||||||
|
{
|
||||||
|
SignContract = signContract;
|
||||||
|
CreateCheckout = createCheckout;
|
||||||
|
if (createCheckout)
|
||||||
|
{
|
||||||
|
SignCheckout = signCheckout;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
SignCheckout = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
SignContract = false;
|
||||||
|
CreateCheckout = false;
|
||||||
|
SignCheckout = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -13,4 +13,8 @@ public interface IFinancialStatmentRepository : IRepository<long, FinancialStatm
|
|||||||
|
|
||||||
FinancialStatmentViewModel GetDetailsByContractingPartyId(long contractingPartyId);
|
FinancialStatmentViewModel GetDetailsByContractingPartyId(long contractingPartyId);
|
||||||
List<FinancialStatmentViewModel> Search(FinancialStatmentSearchModel searchModel);
|
List<FinancialStatmentViewModel> Search(FinancialStatmentSearchModel searchModel);
|
||||||
|
Task<ClientFinancialStatementViewModel> GetClientFinancialStatement(long accountId,
|
||||||
|
ClientFinancialStatementSearchModel searchModel);
|
||||||
|
|
||||||
|
Task<double> GetClientDebtAmount(long accountId);
|
||||||
}
|
}
|
||||||
@@ -13,7 +13,8 @@ public interface IInstitutionContractRepository : IRepository<long, InstitutionC
|
|||||||
|
|
||||||
EditInstitutionContract GetDetails(long id);
|
EditInstitutionContract GetDetails(long id);
|
||||||
EditInstitutionContract GetFirstContract(long contractingPartyId, string typeOfContract);
|
EditInstitutionContract GetFirstContract(long contractingPartyId, string typeOfContract);
|
||||||
|
List<InstitutionContractViewModel> InstitutionContractsWithoutAccount();
|
||||||
|
List<InstitutionContractViewModel> ContractWithoutValidContactInfo();
|
||||||
List<InstitutionContractViewModel> Search(InstitutionContractSearchModel searchModel);
|
List<InstitutionContractViewModel> Search(InstitutionContractSearchModel searchModel);
|
||||||
List<InstitutionContractViewModel> NewSearch(InstitutionContractSearchModel searchModel);
|
List<InstitutionContractViewModel> NewSearch(InstitutionContractSearchModel searchModel);
|
||||||
List<InstitutionContractViewModel> PrintAll(List<long> id);
|
List<InstitutionContractViewModel> PrintAll(List<long> id);
|
||||||
@@ -25,7 +26,7 @@ public interface IInstitutionContractRepository : IRepository<long, InstitutionC
|
|||||||
|
|
||||||
double GetcontractAmount(int countPerson);
|
double GetcontractAmount(int countPerson);
|
||||||
|
|
||||||
string ExpColor(DateTime contractEndGr, double contractAmount,
|
(string result, string isExpier) ExpColor(DateTime contractEndGr, double contractAmount,
|
||||||
string isActiveString);
|
string isActiveString);
|
||||||
|
|
||||||
TotalbalancViewModel TotalBalance(long contractingPartyId);
|
TotalbalancViewModel TotalBalance(long contractingPartyId);
|
||||||
|
|||||||
@@ -6,6 +6,7 @@ using System.Threading.Tasks;
|
|||||||
using _0_Framework.Application;
|
using _0_Framework.Application;
|
||||||
using _0_Framework.Domain;
|
using _0_Framework.Domain;
|
||||||
using CompanyManagment.App.Contracts.InsuranceJob;
|
using CompanyManagment.App.Contracts.InsuranceJob;
|
||||||
|
using CompanyManagment.App.Contracts.InsuranceJobItem;
|
||||||
|
|
||||||
namespace Company.Domain.InsurancJobAgg;
|
namespace Company.Domain.InsurancJobAgg;
|
||||||
|
|
||||||
@@ -13,10 +14,16 @@ public interface IInsuranceJobRepositpry:IRepository<long, InsuranceJob>
|
|||||||
{
|
{
|
||||||
//OperationResult Create(CreateInsurancJob command);
|
//OperationResult Create(CreateInsurancJob command);
|
||||||
// OperationResult Edit(EditInsurancJob command);
|
// OperationResult Edit(EditInsurancJob command);
|
||||||
EditInsuranceJob GetDetails(long id);
|
EditInsuranceJob GetDetails(long id, string year, string month);
|
||||||
List<InsuranceJobViewModel> GetInsurancJob();
|
List<InsuranceJobViewModel> GetInsurancJob();
|
||||||
List<InsuranceJobViewModel> Search(InsuranceJobSearchModel searchModel);
|
List<InsuranceJobViewModel> Search(InsuranceJobSearchModel searchModel);
|
||||||
OperationResult CreateInsuranceJob(CreateInsuranceJob command);
|
OperationResult CreateInsuranceJob(CreateInsuranceJob command);
|
||||||
|
List<(long id, string date)> GetOldYersInsuranceItemIds();
|
||||||
|
OperationResult CopyFromLastYear(CopyFromLastYearViewModel command);
|
||||||
|
OperationResult RecoveryOldData1403();
|
||||||
OperationResult Remove(long id);
|
OperationResult Remove(long id);
|
||||||
OperationResult EditInsuranceJob(EditInsuranceJob command);
|
OperationResult EditInsuranceJob(EditInsuranceJob command);
|
||||||
}
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -14,8 +14,11 @@ public interface IInsuranceJobItemRepositpry : IRepository<long, InsuranceJobIte
|
|||||||
{
|
{
|
||||||
void CreateInsuranceJobItem(InsuranceJobItemViewModel model);
|
void CreateInsuranceJobItem(InsuranceJobItemViewModel model);
|
||||||
DetailsInsuranceJobItem GetDetails(long id);
|
DetailsInsuranceJobItem GetDetails(long id);
|
||||||
List<InsuranceJobItemViewModel> GetInsuranceJobItemByInsuranceJobId(long Id);
|
List<InsuranceJobItemViewModel> GetInsuranceJobItemByInsuranceJobId(long Id, string year, string month);
|
||||||
List<InsuranceJobItemViewModel> Search(InsuranceJobItemSearchModel searchModel);
|
List<InsuranceJobItemViewModel> Search(InsuranceJobItemSearchModel searchModel);
|
||||||
InsuranceJobItemViewModel GetInsuranceJobItemByInsuranceJobIdForFixedSalary(long insuranceJobId, long jobId);
|
InsuranceJobItemViewModel GetInsuranceJobItemByInsuranceJobIdForFixedSalary(long insuranceJobId, long jobId,
|
||||||
|
string year, string month);
|
||||||
|
|
||||||
|
(List<string> workshopList, bool hasAnyWorkshop) GetWorkshopUsedThisInsuranceJob(long insuranceJobId);
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -1,4 +1,5 @@
|
|||||||
using System.Collections.Generic;
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
using _0_Framework.Domain;
|
using _0_Framework.Domain;
|
||||||
using Company.Domain.InsuranceJobAndJobsAgg;
|
using Company.Domain.InsuranceJobAndJobsAgg;
|
||||||
using Company.Domain.InsurancJobAgg;
|
using Company.Domain.InsurancJobAgg;
|
||||||
@@ -8,13 +9,15 @@ namespace Company.Domain.InsuranceJobItemAgg;
|
|||||||
|
|
||||||
public class InsuranceJobItem : EntityBase
|
public class InsuranceJobItem : EntityBase
|
||||||
{
|
{
|
||||||
public InsuranceJobItem(double percentageLessThan, double salaeyLessThan, double percentageMoreThan, double salaryMoreThan, long insuranceJobId)
|
public InsuranceJobItem(double percentageLessThan, double salaeyLessThan, double percentageMoreThan, double salaryMoreThan, long insuranceJobId, DateTime? startDate, DateTime? endDate)
|
||||||
{
|
{
|
||||||
PercentageLessThan = percentageLessThan;
|
PercentageLessThan = percentageLessThan;
|
||||||
SalaeyLessThan = salaeyLessThan;
|
SalaeyLessThan = salaeyLessThan;
|
||||||
PercentageMoreThan = percentageMoreThan;
|
PercentageMoreThan = percentageMoreThan;
|
||||||
SalaryMoreThan = salaryMoreThan;
|
SalaryMoreThan = salaryMoreThan;
|
||||||
InsuranceJobId = insuranceJobId;
|
InsuranceJobId = insuranceJobId;
|
||||||
|
StartDate = startDate;
|
||||||
|
EndDate = endDate;
|
||||||
}
|
}
|
||||||
|
|
||||||
public double PercentageLessThan { get; private set; }
|
public double PercentageLessThan { get; private set; }
|
||||||
@@ -22,6 +25,9 @@ public class InsuranceJobItem : EntityBase
|
|||||||
public double PercentageMoreThan { get; private set; }
|
public double PercentageMoreThan { get; private set; }
|
||||||
public double SalaryMoreThan { get; private set; }
|
public double SalaryMoreThan { get; private set; }
|
||||||
|
|
||||||
|
public DateTime? StartDate { get; private set; }
|
||||||
|
public DateTime? EndDate { get; private set; }
|
||||||
|
|
||||||
public long InsuranceJobId { get; private set; }
|
public long InsuranceJobId { get; private set; }
|
||||||
public InsuranceJob InsuranceJob { get; set; }
|
public InsuranceJob InsuranceJob { get; set; }
|
||||||
public List<InsuranceJobAndJobs> InsuranceJobAndJobs { get; set; }
|
public List<InsuranceJobAndJobs> InsuranceJobAndJobs { get; set; }
|
||||||
@@ -31,12 +37,14 @@ public class InsuranceJobItem : EntityBase
|
|||||||
InsuranceJobAndJobs = new List<InsuranceJobAndJobs>();
|
InsuranceJobAndJobs = new List<InsuranceJobAndJobs>();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void Edit(double percentageLessThan, double salaeyLessThan, double percentageMoreThan, double salaryMoreThan, long insuranceJobId)
|
public void Edit(double percentageLessThan, double salaeyLessThan, double percentageMoreThan, double salaryMoreThan, long insuranceJobId, DateTime? startDate, DateTime? endDate)
|
||||||
{
|
{
|
||||||
PercentageLessThan = percentageLessThan;
|
PercentageLessThan = percentageLessThan;
|
||||||
SalaeyLessThan = salaeyLessThan;
|
SalaeyLessThan = salaeyLessThan;
|
||||||
PercentageMoreThan = percentageMoreThan;
|
PercentageMoreThan = percentageMoreThan;
|
||||||
SalaryMoreThan = salaryMoreThan;
|
SalaryMoreThan = salaryMoreThan;
|
||||||
InsuranceJobId = insuranceJobId;
|
InsuranceJobId = insuranceJobId;
|
||||||
|
StartDate = startDate;
|
||||||
|
EndDate = endDate;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -60,4 +60,13 @@ public interface IInsuranceListRepository:IRepository<long, InsuranceList>
|
|||||||
#region client
|
#region client
|
||||||
List<InsuranceListViewModel> SearchForClient(InsuranceListSearchModel searchModel);
|
List<InsuranceListViewModel> SearchForClient(InsuranceListSearchModel searchModel);
|
||||||
#endregion
|
#endregion
|
||||||
}
|
|
||||||
|
#region Mahan
|
||||||
|
Task<InsuranceListConfirmOperation> GetInsuranceOperationDetails(long id);
|
||||||
|
|
||||||
|
Task<InsuranceListTabsCountViewModel> GetTabCounts(InsuranceListSearchModel searchModel);
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -4,7 +4,9 @@ using System.Linq;
|
|||||||
using System.Text;
|
using System.Text;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
using _0_Framework.Domain;
|
using _0_Framework.Domain;
|
||||||
|
using Company.Domain.InsuranceListAgg.ValueObjects;
|
||||||
using Company.Domain.InsuranceWorkshopAgg;
|
using Company.Domain.InsuranceWorkshopAgg;
|
||||||
|
using CompanyManagment.App.Contracts.InsuranceList.Enums;
|
||||||
|
|
||||||
namespace Company.Domain.InsuranceListAgg;
|
namespace Company.Domain.InsuranceListAgg;
|
||||||
|
|
||||||
@@ -151,6 +153,21 @@ public class InsuranceList : EntityBase
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
public double SumOfMarriedAllowance { get; private set; }
|
public double SumOfMarriedAllowance { get; private set; }
|
||||||
|
|
||||||
|
#region Mahan
|
||||||
|
/// <summary>
|
||||||
|
/// بازرسی
|
||||||
|
/// </summary>
|
||||||
|
public InsuranceListInspection Inspection { get; set; } =new (InsuranceListInspectionType.None,DateTime.MinValue, 0);
|
||||||
|
/// <summary>
|
||||||
|
/// بدهی
|
||||||
|
/// </summary>
|
||||||
|
public InsuranceListDebt Debt { get; set; } = new(InsuranceListDebtType.None, DateTime.MinValue, 0, 0);
|
||||||
|
/// <summary>
|
||||||
|
/// تاییدیه کارفرما
|
||||||
|
/// </summary>
|
||||||
|
public InsuranceListEmployerApproval EmployerApproval { get; set; } = new(InsuranceListEmployerApprovalStatus.None, string.Empty);
|
||||||
|
#endregion
|
||||||
|
|
||||||
public List<InsuranceListWorkshop> InsuranceListWorkshops { get; set; }
|
public List<InsuranceListWorkshop> InsuranceListWorkshops { get; set; }
|
||||||
|
|
||||||
public void Edit(int sumOfEmployees, int sumOfWorkingDays, double sumOfSalaries, double sumOfBenefitsIncluded, double included,
|
public void Edit(int sumOfEmployees, int sumOfWorkingDays, double sumOfSalaries, double sumOfBenefitsIncluded, double included,
|
||||||
@@ -174,4 +191,22 @@ public class InsuranceList : EntityBase
|
|||||||
SumOfDailyWagePlusBaseYears = sumOfDailyWage + sumOfBaseYears;
|
SumOfDailyWagePlusBaseYears = sumOfDailyWage + sumOfBaseYears;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
|
||||||
|
public void SetDebt(InsuranceListDebt debt)
|
||||||
|
{
|
||||||
|
Debt = debt;
|
||||||
|
}
|
||||||
|
public void SetInspection(InsuranceListInspection inspection)
|
||||||
|
{
|
||||||
|
Inspection = inspection;
|
||||||
|
}
|
||||||
|
public void SetEmployerApproval(InsuranceListEmployerApproval employerApproval)
|
||||||
|
{
|
||||||
|
EmployerApproval = employerApproval;
|
||||||
|
}
|
||||||
|
public void SetConfirmSentlist(bool confirmSentlist)
|
||||||
|
{
|
||||||
|
ConfirmSentlist = confirmSentlist;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|||||||
@@ -0,0 +1,31 @@
|
|||||||
|
using System;
|
||||||
|
using CompanyManagment.App.Contracts.InsuranceList.Enums;
|
||||||
|
|
||||||
|
namespace Company.Domain.InsuranceListAgg.ValueObjects;
|
||||||
|
|
||||||
|
public class InsuranceListDebt
|
||||||
|
{
|
||||||
|
public InsuranceListDebt(InsuranceListDebtType type, DateTime debtDate, double amount, long mediaId)
|
||||||
|
{
|
||||||
|
Type = type;
|
||||||
|
if (type == InsuranceListDebtType.None)
|
||||||
|
{
|
||||||
|
DebtDate = DateTime.MinValue;
|
||||||
|
Amount = 0;
|
||||||
|
MediaId = 0;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
DebtDate = debtDate;
|
||||||
|
Amount = amount;
|
||||||
|
MediaId = mediaId;
|
||||||
|
IsDone = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public InsuranceListDebtType Type { get; set; }
|
||||||
|
public DateTime DebtDate { get; set; }
|
||||||
|
public double Amount { get; set; }
|
||||||
|
public long MediaId { get; set; }
|
||||||
|
public bool IsDone { get; set; }
|
||||||
|
}
|
||||||
@@ -0,0 +1,26 @@
|
|||||||
|
using System.Security.Cryptography;
|
||||||
|
using CompanyManagment.App.Contracts.InsuranceList.Enums;
|
||||||
|
|
||||||
|
namespace Company.Domain.InsuranceListAgg.ValueObjects;
|
||||||
|
|
||||||
|
public class InsuranceListEmployerApproval
|
||||||
|
{
|
||||||
|
public InsuranceListEmployerApproval(InsuranceListEmployerApprovalStatus status, string description)
|
||||||
|
{
|
||||||
|
Status = status;
|
||||||
|
if (status == InsuranceListEmployerApprovalStatus.None)
|
||||||
|
{
|
||||||
|
Description = string.Empty;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
|
||||||
|
Description = description;
|
||||||
|
IsDone = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public InsuranceListEmployerApprovalStatus Status { get; set; }
|
||||||
|
public string Description { get; set; }
|
||||||
|
public bool IsDone { get; set; }
|
||||||
|
}
|
||||||
@@ -0,0 +1,29 @@
|
|||||||
|
using System;
|
||||||
|
using CompanyManagment.App.Contracts.InsuranceList.Enums;
|
||||||
|
|
||||||
|
namespace Company.Domain.InsuranceListAgg.ValueObjects;
|
||||||
|
|
||||||
|
public class InsuranceListInspection
|
||||||
|
{
|
||||||
|
public InsuranceListInspection(InsuranceListInspectionType type, DateTime lastInspectionDateTime, long mediaId)
|
||||||
|
{
|
||||||
|
Type = type;
|
||||||
|
if (type == InsuranceListInspectionType.None)
|
||||||
|
{
|
||||||
|
LastInspectionDateTime = DateTime.MinValue;
|
||||||
|
MediaId = 0;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
LastInspectionDateTime = lastInspectionDateTime;
|
||||||
|
MediaId = mediaId;
|
||||||
|
IsDone = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public InsuranceListInspectionType Type { get; set; }
|
||||||
|
public DateTime LastInspectionDateTime { get; set; }
|
||||||
|
public long MediaId { get; set; }
|
||||||
|
public bool IsDone { get; set; }
|
||||||
|
|
||||||
|
}
|
||||||
@@ -5,6 +5,7 @@ using _0_Framework.Application;
|
|||||||
using _0_Framework.Domain;
|
using _0_Framework.Domain;
|
||||||
using CompanyManagment.App.Contracts.LeftWork;
|
using CompanyManagment.App.Contracts.LeftWork;
|
||||||
using CompanyManagment.App.Contracts.PersonnleCode;
|
using CompanyManagment.App.Contracts.PersonnleCode;
|
||||||
|
using CompanyManagment.App.Contracts.Workshop.DTOs;
|
||||||
|
|
||||||
namespace Company.Domain.LeftWorkAgg;
|
namespace Company.Domain.LeftWorkAgg;
|
||||||
|
|
||||||
@@ -45,4 +46,12 @@ public interface ILeftWorkRepository : IRepository<long, LeftWork>
|
|||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
Task<LeftWork> GetLastLeftWork(long employeeId, long workshopId);
|
Task<LeftWork> GetLastLeftWork(long employeeId, long workshopId);
|
||||||
|
List<LeftWorkViewModel> SearchCreateContract(LeftWorkSearchModel searchModel);
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// دریافت اطلاعات کارگاه و پرسنل برای ایجاد قرارداد
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="workshopId"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
AutoExtensionDto AutoExtentionEmployees(long workshopId);
|
||||||
}
|
}
|
||||||
@@ -3,6 +3,7 @@ using System.Collections.Generic;
|
|||||||
using _0_Framework.Application;
|
using _0_Framework.Application;
|
||||||
using _0_Framework.Domain;
|
using _0_Framework.Domain;
|
||||||
using CompanyManagment.App.Contracts.InsuranceList;
|
using CompanyManagment.App.Contracts.InsuranceList;
|
||||||
|
using CompanyManagment.App.Contracts.LeftWork;
|
||||||
using CompanyManagment.App.Contracts.LeftWorkInsurance;
|
using CompanyManagment.App.Contracts.LeftWorkInsurance;
|
||||||
using CompanyManagment.App.Contracts.PersonnleCode;
|
using CompanyManagment.App.Contracts.PersonnleCode;
|
||||||
|
|
||||||
@@ -40,5 +41,19 @@ public interface ILeftWorkInsuranceRepository : IRepository<long, LeftWorkInsura
|
|||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
List<EmployeeDetailsForInsuranceListViewModel> GetEmployeeInsuranceLeftWorksAndInformation(long workshopId, DateTime startDate, DateTime endDate);
|
List<EmployeeDetailsForInsuranceListViewModel> GetEmployeeInsuranceLeftWorksAndInformation(long workshopId, DateTime startDate, DateTime endDate);
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
|
#region Mahan
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// پرسنل هایی که در قرارداد ترک کار دارند ولی در بیمه ترک کاری برایشان نخورده
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="workshopId"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
List<LeftWorkViewModel> GetEmployeesWithContractExitOnly(long workshopId);
|
||||||
|
|
||||||
|
LeftWorkInsurance GetLastLeftWorkByEmployeeIdAndWorkshopId(long workshopId, long employeeId);
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -0,0 +1,12 @@
|
|||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
using _0_Framework.Domain;
|
||||||
|
using CompanyManagment.App.Contracts.PaymentTransaction;
|
||||||
|
|
||||||
|
namespace Company.Domain.PaymentTransactionAgg;
|
||||||
|
|
||||||
|
public interface IPaymentTransactionRepository:IRepository<long,PaymentTransaction>
|
||||||
|
{
|
||||||
|
Task<List<GetPaymentTransactionListViewModel>> GetPaymentTransactionList(
|
||||||
|
GetPaymentTransactionListSearchModel searchModel);
|
||||||
|
}
|
||||||
104
Company.Domain/PaymentTransactionAgg/PaymentTransaction.cs
Normal file
104
Company.Domain/PaymentTransactionAgg/PaymentTransaction.cs
Normal file
@@ -0,0 +1,104 @@
|
|||||||
|
using System;
|
||||||
|
using _0_Framework.Domain;
|
||||||
|
using CompanyManagment.App.Contracts.PaymentTransaction;
|
||||||
|
|
||||||
|
namespace Company.Domain.PaymentTransactionAgg
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// نمایانگر یک تراکنش پرداخت شامل جزئیات طرف قرارداد، اطلاعات بانکی، وضعیت تراکنش و مبلغ.
|
||||||
|
/// </summary>
|
||||||
|
public class PaymentTransaction:EntityBase
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// سازنده کلاس PaymentTransaction با دریافت اطلاعات تراکنش.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="contractingPartyId">شناسه طرف قرارداد</param>
|
||||||
|
/// <param name="bankAccountHolderName">نام صاحب حساب بانکی</param>
|
||||||
|
/// <param name="bankName">نام بانک</param>
|
||||||
|
/// <param name="cardNumber">شماره کارت</param>
|
||||||
|
/// <param name="shebaNumber">شماره شبا</param>
|
||||||
|
/// <param name="accountNumber">شماره حساب بانکی</param>
|
||||||
|
/// <param name="status">وضعیت تراکنش پرداخت</param>
|
||||||
|
/// <param name="amount">مبلغ تراکنش</param>
|
||||||
|
/// <param name="transactionId">شناسه یکتای تراکنش</param>
|
||||||
|
/// <param name="contractingPartyName"></param>
|
||||||
|
public PaymentTransaction(long contractingPartyId,
|
||||||
|
string bankAccountHolderName,
|
||||||
|
string bankName,
|
||||||
|
string cardNumber,
|
||||||
|
string shebaNumber,
|
||||||
|
string accountNumber,
|
||||||
|
PaymentTransactionStatus status,
|
||||||
|
double amount,
|
||||||
|
string transactionId,
|
||||||
|
string contractingPartyName)
|
||||||
|
{
|
||||||
|
TransactionDate = DateTime.Now;
|
||||||
|
ContractingPartyId = contractingPartyId;
|
||||||
|
BankAccountHolderName = bankAccountHolderName;
|
||||||
|
BankName = bankName;
|
||||||
|
CardNumber = cardNumber;
|
||||||
|
ShebaNumber = shebaNumber;
|
||||||
|
AccountNumber = accountNumber;
|
||||||
|
Status = status;
|
||||||
|
Amount = amount;
|
||||||
|
TransactionId = transactionId;
|
||||||
|
ContractingPartyName = contractingPartyName;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// تاریخ و زمان انجام پرداخت
|
||||||
|
/// </summary>
|
||||||
|
public DateTime TransactionDate { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// شناسه طرف حساب
|
||||||
|
/// </summary>
|
||||||
|
public long ContractingPartyId { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// نام طرف حساب
|
||||||
|
/// </summary>
|
||||||
|
public string ContractingPartyName { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// نام صاحب حساب بانکی
|
||||||
|
/// </summary>
|
||||||
|
public string BankAccountHolderName { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// نام بانک
|
||||||
|
/// </summary>
|
||||||
|
public string BankName { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// شماره کارت
|
||||||
|
/// </summary>
|
||||||
|
public string CardNumber { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// شماره شبا
|
||||||
|
/// </summary>
|
||||||
|
public string ShebaNumber { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// شماره حساب بانکی
|
||||||
|
/// </summary>
|
||||||
|
public string AccountNumber { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// وضعیت تراکنش پرداخت
|
||||||
|
/// </summary>
|
||||||
|
public PaymentTransactionStatus Status { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// مبلغ تراکنش
|
||||||
|
/// </summary>
|
||||||
|
public double Amount { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// شناسه یکتای تراکنش
|
||||||
|
/// </summary>
|
||||||
|
public string TransactionId { get; set; }
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,4 +1,5 @@
|
|||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
|
using System.Threading.Tasks;
|
||||||
using _0_Framework.Application;
|
using _0_Framework.Application;
|
||||||
using _0_Framework.Domain;
|
using _0_Framework.Domain;
|
||||||
using CompanyManagment.App.Contracts.PersonalContractingParty;
|
using CompanyManagment.App.Contracts.PersonalContractingParty;
|
||||||
@@ -20,4 +21,10 @@ public interface IRepresentativeRepository : IRepository<long, Representative>
|
|||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
|
#region Api
|
||||||
|
Task<ICollection<RepresentativeGetListViewModel>> GetList(RepresentativeGetListSearchModel searchModel);
|
||||||
|
bool HasAnyContractingParty(long id);
|
||||||
|
Task<List<GetSelectListRepresentativeViewModel>> GetSelectList();
|
||||||
|
#endregion
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -6,15 +6,29 @@ using Company.Domain.CustomizeWorkshopEmployeeSettingsAgg.Entities;
|
|||||||
using CompanyManagment.App.Contracts.Contract;
|
using CompanyManagment.App.Contracts.Contract;
|
||||||
using CompanyManagment.App.Contracts.CustomizeCheckout;
|
using CompanyManagment.App.Contracts.CustomizeCheckout;
|
||||||
using CompanyManagment.App.Contracts.Leave;
|
using CompanyManagment.App.Contracts.Leave;
|
||||||
|
using CompanyManagment.App.Contracts.Loan;
|
||||||
using CompanyManagment.App.Contracts.RollCall;
|
using CompanyManagment.App.Contracts.RollCall;
|
||||||
|
using CompanyManagment.App.Contracts.SalaryAid;
|
||||||
using CompanyManagment.App.Contracts.WorkingHoursTemp;
|
using CompanyManagment.App.Contracts.WorkingHoursTemp;
|
||||||
|
|
||||||
namespace Company.Domain.RollCallAgg;
|
namespace Company.Domain.RollCallAgg;
|
||||||
|
|
||||||
public interface IRollCallMandatoryRepository : IRepository<long, RollCall>
|
public interface IRollCallMandatoryRepository : IRepository<long, RollCall>
|
||||||
{
|
{
|
||||||
ComputingViewModel MandatoryCompute(long employeeId, long workshopId, DateTime contractStart, DateTime contractEnd, CreateWorkingHoursTemp command, bool holidayWorking, bool isStaticCheckout);
|
ComputingViewModel MandatoryCompute(long employeeId, long workshopId, DateTime contractStart, DateTime contractEnd, CreateWorkingHoursTemp command, bool holidayWorking, bool isStaticCheckout, bool rotatingShiftCompute);
|
||||||
TimeSpan AfterSubtract(CreateWorkingHoursTemp command, TimeSpan sumOneDaySpan, DateTime creationDate);
|
|
||||||
|
/// <summary>
|
||||||
|
/// محاسبه ساعات کارکرد پرسنل در صورت داشتن حضور غیاب
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="employeeId"></param>
|
||||||
|
/// <param name="workshopId"></param>
|
||||||
|
/// <param name="contractStart"></param>
|
||||||
|
/// <param name="contractEnd"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
(bool hasRollCall, TimeSpan sumOfSpan) GetRollCallWorkingSpan(long employeeId, long workshopId,
|
||||||
|
DateTime contractStart, DateTime contractEnd);
|
||||||
|
|
||||||
|
TimeSpan AfterSubtract(CreateWorkingHoursTemp command, TimeSpan sumOneDaySpan, DateTime creationDate);
|
||||||
|
|
||||||
List<RotatingShiftViewModel> RotatingShiftCheck(List<GroupedRollCalls> rollCallList);
|
List<RotatingShiftViewModel> RotatingShiftCheck(List<GroupedRollCalls> rollCallList);
|
||||||
|
|
||||||
@@ -33,6 +47,12 @@ public interface IRollCallMandatoryRepository : IRepository<long, RollCall>
|
|||||||
/// <param name="contractEnd"></param>
|
/// <param name="contractEnd"></param>
|
||||||
/// <param name="shiftwork"></param>
|
/// <param name="shiftwork"></param>
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
|
List<LoanInstallmentViewModel> LoanInstallmentForCheckout(long employeeId, long workshopId, DateTime contractStart,
|
||||||
|
DateTime contractEnd);
|
||||||
|
|
||||||
|
List<SalaryAidViewModel> SalaryAidsForCheckout(long employeeId, long workshopId, DateTime checkoutStart,
|
||||||
|
DateTime checkoutEnd);
|
||||||
|
|
||||||
Task<ComputingViewModel> RotatingShiftReport(long workshopId, long employeeId, DateTime contractStart,
|
Task<ComputingViewModel> RotatingShiftReport(long workshopId, long employeeId, DateTime contractStart,
|
||||||
DateTime contractEnd, string shiftwork, bool hasRollCall, CreateWorkingHoursTemp command,bool holidayWorking);
|
DateTime contractEnd, string shiftwork, bool hasRollCall, CreateWorkingHoursTemp command,bool holidayWorking);
|
||||||
}
|
}
|
||||||
@@ -1,4 +1,5 @@
|
|||||||
using System.Collections.Generic;
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
using _0_Framework.Domain;
|
using _0_Framework.Domain;
|
||||||
using CompanyManagment.App.Contracts.RollCallEmployee;
|
using CompanyManagment.App.Contracts.RollCallEmployee;
|
||||||
|
|
||||||
@@ -6,6 +7,7 @@ namespace Company.Domain.RollCallEmployeeAgg;
|
|||||||
|
|
||||||
public interface IRollCallEmployeeRepository : IRepository<long, RollCallEmployee>
|
public interface IRollCallEmployeeRepository : IRepository<long, RollCallEmployee>
|
||||||
{
|
{
|
||||||
|
bool HasRollCallRecord(long employeeId, long workshopId, DateTime contractStart, DateTime contractEnd);
|
||||||
List<RollCallEmployeeViewModel> GetByWorkshopId(long workshopId);
|
List<RollCallEmployeeViewModel> GetByWorkshopId(long workshopId);
|
||||||
EditRollCallEmployee GetDetails(long id);
|
EditRollCallEmployee GetDetails(long id);
|
||||||
RollCallEmployeeViewModel GetByEmployeeIdAndWorkshopId(long employeeId, long workshopId);
|
RollCallEmployeeViewModel GetByEmployeeIdAndWorkshopId(long employeeId, long workshopId);
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
using System.Threading.Tasks;
|
using System.Collections.Generic;
|
||||||
|
using System.Threading.Tasks;
|
||||||
using _0_Framework_b.Domain;
|
using _0_Framework_b.Domain;
|
||||||
using CompanyManagment.App.Contracts.TemporaryClientRegistration;
|
using CompanyManagment.App.Contracts.TemporaryClientRegistration;
|
||||||
|
|
||||||
@@ -15,4 +16,11 @@ public interface IInstitutionContractTempRepository : IRepository<long, Institut
|
|||||||
/// <param name="contractingPartyId"></param>
|
/// <param name="contractingPartyId"></param>
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
Task<InstitutionContractTempViewModel> GetInstitutionContractTemp(long id,long contractingPartyTempId);
|
Task<InstitutionContractTempViewModel> GetInstitutionContractTemp(long id,long contractingPartyTempId);
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// دریافت لیست طرف حساب هایی که ثبت نام آنها تکمیل شده
|
||||||
|
/// جهت نمایش در کارپوشه
|
||||||
|
/// </summary>
|
||||||
|
/// <returns></returns>
|
||||||
|
Task<List<RegistrationWorkflowMainList>> GetAllCompletedRegistration();
|
||||||
}
|
}
|
||||||
@@ -131,6 +131,9 @@ public class InstitutionContractTemp : EntityBase
|
|||||||
VerifyCodeEndTime = verifyCodeEndTime;
|
VerifyCodeEndTime = verifyCodeEndTime;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void ChangeRegistrationStatus(string registrationStatus)
|
||||||
|
{
|
||||||
|
RegistrationStatus = registrationStatus;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -69,6 +69,8 @@ public interface IWorkshopRepository : IRepository<long, Workshop>
|
|||||||
Task<int> GetWorkshopsForEmployeeStartWorkCount(long accountId);
|
Task<int> GetWorkshopsForEmployeeStartWorkCount(long accountId);
|
||||||
Task<List<WorkshopWithLeftWorkTempEmployeesDto>> GetWorkshopsForLeftWorkTemp(long accountId);
|
Task<List<WorkshopWithLeftWorkTempEmployeesDto>> GetWorkshopsForLeftWorkTemp(long accountId);
|
||||||
Task<int> GetWorkshopsForLeftWorkTempCount(long accountId);
|
Task<int> GetWorkshopsForLeftWorkTempCount(long accountId);
|
||||||
|
Task<List<WorkshopSelectListViewModel>> GetSelectList(string search);
|
||||||
|
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Globalization;
|
using System.Globalization;
|
||||||
using System.Security.AccessControl;
|
using System.Security.AccessControl;
|
||||||
|
using _0_Framework.Application;
|
||||||
using _0_Framework.Domain;
|
using _0_Framework.Domain;
|
||||||
using Company.Domain.CheckoutAgg;
|
using Company.Domain.CheckoutAgg;
|
||||||
using Company.Domain.ClientEmployeeWorkshopAgg;
|
using Company.Domain.ClientEmployeeWorkshopAgg;
|
||||||
@@ -76,23 +77,13 @@ public class Workshop : EntityBase
|
|||||||
ClientEmployeeWorkshopList = new List<ClientEmployeeWorkshop>();
|
ClientEmployeeWorkshopList = new List<ClientEmployeeWorkshop>();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
//public Workshop()
|
|
||||||
//{
|
|
||||||
// Contracts2 = new List<Contract>();
|
|
||||||
// WorkshopEmployers = new List<WorkshopEmployer>();
|
|
||||||
// LeftWorks = new List<LeftWork>();
|
|
||||||
// LeftWorkInsurances = new List<LeftWorkInsurance>();
|
|
||||||
// EmployersList = new List<Employer>();
|
|
||||||
// WorkshopEmployers = new List<WorkshopEmployer>();
|
|
||||||
// EmployersList = new List<Employer>();
|
|
||||||
// PersonnelCodeList = new List<PersonnelCodeDomain>();
|
|
||||||
//}
|
|
||||||
public Workshop(string workshopName,string workshopSureName, string insuranceCode, string typeOfOwnership, string archiveCode, string agentName, string agentPhone,
|
public Workshop(string workshopName,string workshopSureName, string insuranceCode, string typeOfOwnership, string archiveCode, string agentName, string agentPhone,
|
||||||
string state, string city, string address, string typeOfInsuranceSend, string typeOfContract, string contractTerm,
|
string state, string city, string address, string typeOfInsuranceSend, string typeOfContract, string contractTerm,
|
||||||
string agreementNumber, bool fixedSalary, string population,long? insuranceJobId, string zoneName, bool addBonusesPay, bool addYearsPay, bool addLeavePay, bool totalPaymentHide,
|
string agreementNumber, bool fixedSalary, string population,long? insuranceJobId, string zoneName, bool addBonusesPay, bool addYearsPay, bool addLeavePay, bool totalPaymentHide,
|
||||||
bool isClassified, string computeOptions, string bonusesOptions, string yearsOptions, string hasRollCallFreeVip, bool workshopHolidayWorking,
|
bool isClassified, string computeOptions, string bonusesOptions, string yearsOptions, string hasRollCallFreeVip, bool workshopHolidayWorking,
|
||||||
bool insuranceCheckoutOvertime, bool insuranceCheckoutFamilyAllowance)
|
bool insuranceCheckoutOvertime, bool insuranceCheckoutFamilyAllowance, bool createContract, bool signContract, bool createCheckout, bool signCheckout, IsActive cutContractEndOfYear, bool rotatingShiftCompute, bool isStaticCheckout)
|
||||||
{
|
{
|
||||||
WorkshopName = workshopName;
|
WorkshopName = workshopName;
|
||||||
WorkshopSureName = workshopSureName;
|
WorkshopSureName = workshopSureName;
|
||||||
@@ -136,6 +127,13 @@ public class Workshop : EntityBase
|
|||||||
WorkshopHolidayWorking = workshopHolidayWorking;
|
WorkshopHolidayWorking = workshopHolidayWorking;
|
||||||
InsuranceCheckoutOvertime = insuranceCheckoutOvertime;
|
InsuranceCheckoutOvertime = insuranceCheckoutOvertime;
|
||||||
InsuranceCheckoutFamilyAllowance = insuranceCheckoutFamilyAllowance;
|
InsuranceCheckoutFamilyAllowance = insuranceCheckoutFamilyAllowance;
|
||||||
|
CreateContract = createContract;
|
||||||
|
SignContract = signContract;
|
||||||
|
CreateCheckout = createCheckout;
|
||||||
|
SignCheckout = signCheckout;
|
||||||
|
CutContractEndOfYear = cutContractEndOfYear;
|
||||||
|
RotatingShiftCompute = rotatingShiftCompute;
|
||||||
|
IsStaticCheckout = isStaticCheckout;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -210,9 +208,32 @@ public class Workshop : EntityBase
|
|||||||
/// محاسبه حق اولاد در لیست بیمه
|
/// محاسبه حق اولاد در لیست بیمه
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public bool InsuranceCheckoutFamilyAllowance { get; private set; }
|
public bool InsuranceCheckoutFamilyAllowance { get; private set; }
|
||||||
|
|
||||||
|
public bool CreateContract { get; private set; }
|
||||||
|
public bool SignContract { get; private set; }
|
||||||
|
public bool CreateCheckout { get; private set; }
|
||||||
|
public bool SignCheckout { get; private set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// اگر قرارداد بیش از یک ماه باشد و گزینه انتخاب شده منتهی به پایان سال باشد
|
||||||
|
/// این آیتم
|
||||||
|
/// True
|
||||||
|
/// است
|
||||||
|
/// </summary>
|
||||||
|
public IsActive CutContractEndOfYear { get; private set; }
|
||||||
//public Employer Employer { get; private set; }
|
//public Employer Employer { get; private set; }
|
||||||
|
|
||||||
public Workshop()
|
/// <summary>
|
||||||
|
/// محاسبه نوبت کاری در فیش حقوقی
|
||||||
|
/// </summary>
|
||||||
|
public bool RotatingShiftCompute { get; private set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// تصفیه حساب بصورت استاتیک محاصبه شود
|
||||||
|
/// </summary>
|
||||||
|
public bool IsStaticCheckout { get; private set; }
|
||||||
|
|
||||||
|
public Workshop()
|
||||||
{
|
{
|
||||||
RollCallServicesList = new List<RollCallService>();
|
RollCallServicesList = new List<RollCallService>();
|
||||||
CustomizeCheckouts = new List<CustomizeCheckout>();
|
CustomizeCheckouts = new List<CustomizeCheckout>();
|
||||||
@@ -243,7 +264,7 @@ public class Workshop : EntityBase
|
|||||||
string state, string city, string address, string typeOfInsuranceSend, string typeOfContract, string contractTerm,
|
string state, string city, string address, string typeOfInsuranceSend, string typeOfContract, string contractTerm,
|
||||||
string agreementNumber, bool fixedSalary, string population, long? insuranceJobId, string zoneName, bool addBonusesPay, bool addYearsPay, bool addLeavePay,
|
string agreementNumber, bool fixedSalary, string population, long? insuranceJobId, string zoneName, bool addBonusesPay, bool addYearsPay, bool addLeavePay,
|
||||||
bool totalPaymentHide, bool isClassified, string computeOptions, string bonusesOptions, string yearsOptions, string hasRollCallFreeVip, bool workshopHolidayWorking,
|
bool totalPaymentHide, bool isClassified, string computeOptions, string bonusesOptions, string yearsOptions, string hasRollCallFreeVip, bool workshopHolidayWorking,
|
||||||
bool insuranceCheckoutOvertime, bool insuranceCheckoutFamilyAllowance)
|
bool insuranceCheckoutOvertime, bool insuranceCheckoutFamilyAllowance, bool createContract, bool signContract, bool createCheckout, bool signCheckout, IsActive cutContractEndOfYear, bool rotatingShiftCompute, bool isStaticCheckout)
|
||||||
{
|
{
|
||||||
WorkshopName = workshopName;
|
WorkshopName = workshopName;
|
||||||
WorkshopSureName = workshopSureName;
|
WorkshopSureName = workshopSureName;
|
||||||
@@ -284,6 +305,13 @@ public class Workshop : EntityBase
|
|||||||
WorkshopHolidayWorking = workshopHolidayWorking;
|
WorkshopHolidayWorking = workshopHolidayWorking;
|
||||||
InsuranceCheckoutOvertime = insuranceCheckoutOvertime;
|
InsuranceCheckoutOvertime = insuranceCheckoutOvertime;
|
||||||
InsuranceCheckoutFamilyAllowance = insuranceCheckoutFamilyAllowance;
|
InsuranceCheckoutFamilyAllowance = insuranceCheckoutFamilyAllowance;
|
||||||
|
CreateContract = createContract;
|
||||||
|
SignContract = signContract;
|
||||||
|
CreateCheckout = createCheckout;
|
||||||
|
SignCheckout = signCheckout;
|
||||||
|
CutContractEndOfYear = cutContractEndOfYear;
|
||||||
|
RotatingShiftCompute = rotatingShiftCompute;
|
||||||
|
IsStaticCheckout = isStaticCheckout;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
|
using System.Threading.Tasks;
|
||||||
using _0_Framework.Application;
|
using _0_Framework.Application;
|
||||||
using _0_Framework.Domain;
|
using _0_Framework.Domain;
|
||||||
using CompanyManagment.App.Contracts.Checkout;
|
using CompanyManagment.App.Contracts.Checkout;
|
||||||
@@ -33,6 +34,9 @@ public interface IEmployerRepository : IRepository<long, Employer>
|
|||||||
|
|
||||||
List<EmployerViewModel> GetEmployersHasWorkshop();
|
List<EmployerViewModel> GetEmployersHasWorkshop();
|
||||||
|
|
||||||
|
Task<List<EmployerSelectListViewModel>> GetSelectList(string search);
|
||||||
|
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
#region NewByHeydari
|
#region NewByHeydari
|
||||||
@@ -52,6 +56,17 @@ public interface IEmployerRepository : IRepository<long, Employer>
|
|||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
|
#region Api
|
||||||
|
Task<List<GetEmployerListViewModel>> GetEmployerList(GetEmployerSearchModel searchModel);
|
||||||
|
|
||||||
|
Task<GetLegalEmployerDetailViewModel> GetLegalEmployerDetail(long id);
|
||||||
|
Task<GetRealEmployerDetailViewModel> GetRealEmployerDetail(long id);
|
||||||
|
//Task<List<EmployerSelectListViewModel>> GetSelectList(string search);
|
||||||
|
Task<OperationResult<string>> DeactivateWithSubordinates(long id);
|
||||||
|
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -0,0 +1,262 @@
|
|||||||
|
using _0_Framework.Application;
|
||||||
|
using CompanyManagement.Infrastructure.Excel.CWS;
|
||||||
|
using CompanyManagment.App.Contracts.InstitutionContract;
|
||||||
|
using OfficeOpenXml;
|
||||||
|
using OfficeOpenXml.Style;
|
||||||
|
using System.Drawing;
|
||||||
|
using System.Text.RegularExpressions;
|
||||||
|
|
||||||
|
namespace CompanyManagement.Infrastructure.Excel.InstitutionContract;
|
||||||
|
|
||||||
|
public class InstitutionContractExcelGenerator
|
||||||
|
{
|
||||||
|
|
||||||
|
public static byte[] GenerateExcel(List<InstitutionContractViewModel> institutionContractViewModels)
|
||||||
|
{
|
||||||
|
ExcelPackage.LicenseContext = LicenseContext.NonCommercial;
|
||||||
|
using var package = new ExcelPackage();
|
||||||
|
var allWorksheet = package.Workbook.Worksheets.Add("همه");
|
||||||
|
|
||||||
|
var blueWorksheet = package.Workbook.Worksheets.Add("آبی");
|
||||||
|
blueWorksheet.TabColor = Color.LightBlue;
|
||||||
|
|
||||||
|
var grayWorksheet = package.Workbook.Worksheets.Add("خاکستری");
|
||||||
|
grayWorksheet.TabColor = Color.LightGray;
|
||||||
|
|
||||||
|
var redWorksheet = package.Workbook.Worksheets.Add("قرمز");
|
||||||
|
redWorksheet.TabColor = Color.LightCoral;
|
||||||
|
|
||||||
|
var purpleWorksheet = package.Workbook.Worksheets.Add("بنفش");
|
||||||
|
purpleWorksheet.TabColor = Color.MediumPurple;
|
||||||
|
|
||||||
|
var blackWorksheet = package.Workbook.Worksheets.Add("مشکی");
|
||||||
|
blackWorksheet.TabColor = Color.DimGray;
|
||||||
|
|
||||||
|
var yellowWorksheet = package.Workbook.Worksheets.Add("زرد");
|
||||||
|
yellowWorksheet.TabColor = Color.Yellow;
|
||||||
|
|
||||||
|
var whiteWorksheet = package.Workbook.Worksheets.Add("سفید");
|
||||||
|
whiteWorksheet.TabColor = Color.White;
|
||||||
|
|
||||||
|
|
||||||
|
CreateExcelSheet(institutionContractViewModels, allWorksheet);
|
||||||
|
|
||||||
|
var blueContracts = institutionContractViewModels.Where(x=>x.ExpireColor == "blue").ToList();
|
||||||
|
CreateExcelSheet(blueContracts, blueWorksheet);
|
||||||
|
institutionContractViewModels = institutionContractViewModels.Except(blueContracts).ToList();
|
||||||
|
|
||||||
|
var grayContracts = institutionContractViewModels.Where(x => x.IsContractingPartyBlock == "true").ToList();
|
||||||
|
CreateExcelSheet(grayContracts, grayWorksheet);
|
||||||
|
institutionContractViewModels = institutionContractViewModels.Except(grayContracts).ToList();
|
||||||
|
|
||||||
|
var redContracts = institutionContractViewModels.Where(x=>x.ExpireColor == "red").ToList();
|
||||||
|
CreateExcelSheet(redContracts, redWorksheet);
|
||||||
|
institutionContractViewModels = institutionContractViewModels.Except(redContracts).ToList();
|
||||||
|
|
||||||
|
var purpleContracts = institutionContractViewModels.Where(x=>x.ExpireColor == "purple").ToList();
|
||||||
|
CreateExcelSheet(purpleContracts, purpleWorksheet);
|
||||||
|
institutionContractViewModels = institutionContractViewModels.Except(purpleContracts).ToList();
|
||||||
|
|
||||||
|
var blackContracts = institutionContractViewModels.Where(x=>x.ExpireColor == "black").ToList();
|
||||||
|
CreateExcelSheet(blackContracts, blackWorksheet);
|
||||||
|
institutionContractViewModels = institutionContractViewModels.Except(blackContracts).ToList();
|
||||||
|
|
||||||
|
var yellowContracts = institutionContractViewModels
|
||||||
|
.Where(x => string.IsNullOrWhiteSpace(x.ExpireColor) && x.WorkshopCount == "0").ToList();
|
||||||
|
CreateExcelSheet(yellowContracts, yellowWorksheet);
|
||||||
|
institutionContractViewModels = institutionContractViewModels.Except(yellowContracts).ToList();
|
||||||
|
|
||||||
|
var otherContracts = institutionContractViewModels;
|
||||||
|
CreateExcelSheet(otherContracts, whiteWorksheet);
|
||||||
|
|
||||||
|
return package.GetAsByteArray();
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void CreateExcelSheet(List<InstitutionContractViewModel> institutionContractViewModels, ExcelWorksheet worksheet)
|
||||||
|
{
|
||||||
|
// Headers
|
||||||
|
worksheet.Cells[1, 1].Value = "شماره قرارداد";
|
||||||
|
worksheet.Cells[1, 2].Value = "طرف حساب";
|
||||||
|
worksheet.Cells[1, 3].Value = "شماره کارفرما";
|
||||||
|
worksheet.Cells[1, 4].Value = "کارفرما ها";
|
||||||
|
worksheet.Cells[1, 5].Value = "کارگاه ها";
|
||||||
|
worksheet.Cells[1, 6].Value = "مجبوع پرسنل";
|
||||||
|
worksheet.Cells[1, 7].Value = "شروع قرارداد";
|
||||||
|
worksheet.Cells[1, 8].Value = "پایان قرارداد";
|
||||||
|
worksheet.Cells[1, 9].Value = "مبلغ قرارداد (بدون کارگاه)";
|
||||||
|
worksheet.Cells[1, 10].Value = "مبلغ قرارداد";
|
||||||
|
worksheet.Cells[1, 11].Value = "وضعیت مالی";
|
||||||
|
|
||||||
|
using (var range = worksheet.Cells[1, 1, 1, 11])
|
||||||
|
{
|
||||||
|
range.Style.HorizontalAlignment = ExcelHorizontalAlignment.Center;
|
||||||
|
range.Style.VerticalAlignment = ExcelVerticalAlignment.Center;
|
||||||
|
range.Style.Font.Bold = true;
|
||||||
|
range.Style.Fill.PatternType = ExcelFillStyle.Solid;
|
||||||
|
range.Style.Fill.BackgroundColor.SetColor(Color.LightGray); // رنگ پس زمینه خاکستری
|
||||||
|
|
||||||
|
// اعمال بوردر به همه خطوط
|
||||||
|
range.Style.Border.Top.Style = ExcelBorderStyle.Thin;
|
||||||
|
range.Style.Border.Bottom.Style = ExcelBorderStyle.Thin;
|
||||||
|
range.Style.Border.Left.Style = ExcelBorderStyle.Thin;
|
||||||
|
range.Style.Border.Right.Style = ExcelBorderStyle.Thin;
|
||||||
|
|
||||||
|
// اعمال رنگ مشکی برای بوردرها
|
||||||
|
range.Style.Border.Top.Color.SetColor(Color.Black);
|
||||||
|
range.Style.Border.Bottom.Color.SetColor(Color.Black);
|
||||||
|
range.Style.Border.Left.Color.SetColor(Color.Black);
|
||||||
|
range.Style.Border.Right.Color.SetColor(Color.Black);
|
||||||
|
}
|
||||||
|
|
||||||
|
int row = 2;
|
||||||
|
|
||||||
|
for (int i = 0; i < institutionContractViewModels.Count; i++)
|
||||||
|
{
|
||||||
|
var contract = institutionContractViewModels[i];
|
||||||
|
var employers = contract.EmployerViewModels?.ToList() ?? new();
|
||||||
|
var workshops = contract.WorkshopViewModels?.ToList() ?? new();
|
||||||
|
|
||||||
|
int maxRows = Math.Max(employers.Count, workshops.Count);
|
||||||
|
maxRows = Math.Max(1, maxRows);
|
||||||
|
|
||||||
|
int startRow = row;
|
||||||
|
int endRow = row + maxRows - 1;
|
||||||
|
|
||||||
|
// 🎨 دریافت رنگ پسزمینه از مقدار رنگ موجود در داده
|
||||||
|
string colorName = contract.ExpireColor.ToLower();
|
||||||
|
var fillColor = GetColorByName(colorName, contract.WorkshopCount, contract.IsContractingPartyBlock);
|
||||||
|
|
||||||
|
for (int j = 0; j < maxRows; j++)
|
||||||
|
{
|
||||||
|
int currentRow = row + j;
|
||||||
|
|
||||||
|
worksheet.Cells[currentRow, 4].Value = j < employers.Count ? employers[j].FullName : null;
|
||||||
|
worksheet.Cells[currentRow, 5].Value = j < workshops.Count ? workshops[j].WorkshopFullName : null;
|
||||||
|
|
||||||
|
for (int col = 1; col <= 11; col++)
|
||||||
|
{
|
||||||
|
var cell = worksheet.Cells[currentRow, col];
|
||||||
|
|
||||||
|
// 📏 بوردرهای داخلی نازک / نقطهچین
|
||||||
|
cell.Style.Border.Top.Style = ExcelBorderStyle.Dotted;
|
||||||
|
cell.Style.Border.Bottom.Style = ExcelBorderStyle.Dotted;
|
||||||
|
cell.Style.Border.Left.Style = ExcelBorderStyle.Thin;
|
||||||
|
cell.Style.Border.Right.Style = ExcelBorderStyle.Thin;
|
||||||
|
|
||||||
|
// 🎯 تراز متن
|
||||||
|
cell.Style.HorizontalAlignment = ExcelHorizontalAlignment.Center;
|
||||||
|
cell.Style.VerticalAlignment = ExcelVerticalAlignment.Center;
|
||||||
|
|
||||||
|
// 🎨 اعمال رنگ پسزمینه
|
||||||
|
cell.Style.Fill.PatternType = ExcelFillStyle.Solid;
|
||||||
|
cell.Style.Fill.BackgroundColor.SetColor(fillColor);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// 🧱 مرج و مقداردهی ستونهای اصلی
|
||||||
|
worksheet.Cells[startRow, 1, endRow, 1].Merge = true;
|
||||||
|
worksheet.Cells[startRow, 1].Value = contract.ContractNo;
|
||||||
|
|
||||||
|
worksheet.Cells[startRow, 2, endRow, 2].Merge = true;
|
||||||
|
worksheet.Cells[startRow, 2].Value = contract.ContractingPartyName;
|
||||||
|
|
||||||
|
worksheet.Cells[startRow, 3, endRow, 3].Merge = true;
|
||||||
|
worksheet.Cells[startRow, 3].Value = contract.ArchiveCode;
|
||||||
|
|
||||||
|
worksheet.Cells[startRow, 6, endRow, 6].Merge = true;
|
||||||
|
worksheet.Cells[startRow, 6].Value = contract.EmployeeCount;
|
||||||
|
|
||||||
|
worksheet.Cells[startRow, 7, endRow, 7].Merge = true;
|
||||||
|
worksheet.Cells[startRow, 7].Value = contract.ContractStartFa;
|
||||||
|
|
||||||
|
worksheet.Cells[startRow, 8, endRow, 8].Merge = true;
|
||||||
|
worksheet.Cells[startRow, 8].Value = contract.ContractEndFa;
|
||||||
|
|
||||||
|
worksheet.Cells[startRow, 9, endRow, 9].Merge = true;
|
||||||
|
var contractWithoutWorkshopAmountCell = worksheet.Cells[startRow, 9];
|
||||||
|
contractWithoutWorkshopAmountCell.Value = contract.WorkshopCount == "0" ? MoneyToDouble(contract.ContractAmount) : "";
|
||||||
|
contractWithoutWorkshopAmountCell.Style.Numberformat.Format = "#,##0";
|
||||||
|
|
||||||
|
|
||||||
|
worksheet.Cells[startRow, 10, endRow, 10].Merge = true;
|
||||||
|
var contractAmountCell = worksheet.Cells[startRow, 10];
|
||||||
|
contractAmountCell.Value = contract.WorkshopCount != "0" ? MoneyToDouble(contract.ContractAmount) : "";
|
||||||
|
contractAmountCell.Style.Numberformat.Format = "#,##0";
|
||||||
|
|
||||||
|
|
||||||
|
worksheet.Cells[startRow, 11, endRow, 11].Merge = true;
|
||||||
|
var balance = MoneyToDouble(contract.BalanceStr);
|
||||||
|
var balanceCell = worksheet.Cells[startRow, 11];
|
||||||
|
balanceCell.Value = balance;
|
||||||
|
balanceCell.Style.Numberformat.Format = "#,##0";
|
||||||
|
|
||||||
|
if (balance > 0)
|
||||||
|
balanceCell.Style.Font.Color.SetColor(Color.Red);
|
||||||
|
else if (balance < 0)
|
||||||
|
balanceCell.Style.Font.Color.SetColor(Color.Green);
|
||||||
|
|
||||||
|
// 📦 بوردر ضخیم خارجی برای هر سطر
|
||||||
|
var boldRange = worksheet.Cells[startRow, 1, endRow, 11];
|
||||||
|
boldRange.Style.Border.BorderAround(ExcelBorderStyle.Medium);
|
||||||
|
|
||||||
|
row += maxRows;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
worksheet.PrinterSettings.PaperSize = ePaperSize.A4;
|
||||||
|
worksheet.PrinterSettings.Orientation = eOrientation.Landscape;
|
||||||
|
worksheet.PrinterSettings.FitToPage = true;
|
||||||
|
worksheet.PrinterSettings.FitToWidth = 1;
|
||||||
|
worksheet.PrinterSettings.FitToHeight = 0;
|
||||||
|
worksheet.PrinterSettings.Scale = 85;
|
||||||
|
int contractNoCol = 1;
|
||||||
|
int contractingPartyNameCol = 2;
|
||||||
|
int archiveNoCol = 3;
|
||||||
|
int employersCol = 4;
|
||||||
|
int workshopsCol = 5;
|
||||||
|
int employeeCountCol = 6;
|
||||||
|
int startContractCol = 7;
|
||||||
|
int endContractCol = 8;
|
||||||
|
int contractWithoutWorkshopAmountCol = 9;
|
||||||
|
int contractAmountCol = 10;
|
||||||
|
int balanceCol = 11;
|
||||||
|
worksheet.Columns[contractNoCol].Width = 17;
|
||||||
|
worksheet.Columns[contractingPartyNameCol].Width = 40;
|
||||||
|
worksheet.Columns[archiveNoCol].Width = 10;
|
||||||
|
worksheet.Columns[employersCol].Width = 40;
|
||||||
|
worksheet.Columns[workshopsCol].Width = 45;
|
||||||
|
worksheet.Columns[employeeCountCol].Width = 12;
|
||||||
|
worksheet.Columns[startContractCol].Width = 12;
|
||||||
|
worksheet.Columns[endContractCol].Width = 12;
|
||||||
|
worksheet.Columns[contractWithoutWorkshopAmountCol].Width = 18;
|
||||||
|
worksheet.Columns[contractAmountCol].Width = 12;
|
||||||
|
worksheet.Columns[balanceCol].Width = 12;
|
||||||
|
worksheet.View.RightToLeft = true; // فارسی
|
||||||
|
//worksheet.Cells[worksheet.Dimension.Address].AutoFitColumns();
|
||||||
|
}
|
||||||
|
|
||||||
|
private static double MoneyToDouble(string value)
|
||||||
|
{
|
||||||
|
Console.WriteLine(value);
|
||||||
|
var min = value.Length > 1 ? value.Substring(0, 2) : "";
|
||||||
|
var test = min == "\u200e\u2212" ? value.MoneyToDouble() * -1 : value.MoneyToDouble();
|
||||||
|
|
||||||
|
Console.WriteLine(test);
|
||||||
|
return test;
|
||||||
|
}
|
||||||
|
private static Color GetColorByName(string name, string workshopCount, string IsContractingPartyBlock)
|
||||||
|
{
|
||||||
|
return name switch
|
||||||
|
{
|
||||||
|
"blue" => Color.LightBlue,
|
||||||
|
_ when IsContractingPartyBlock == "true" => Color.LightGray,
|
||||||
|
"red" => Color.LightCoral,
|
||||||
|
"purple" => Color.MediumPurple,
|
||||||
|
"black" => Color.DimGray,
|
||||||
|
var n when string.IsNullOrWhiteSpace(n) && workshopCount == "0" => Color.Yellow,
|
||||||
|
_ => Color.White
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,17 @@
|
|||||||
|
namespace CompanyManagment.App.Contracts.AdminMonthlyOverview;
|
||||||
|
|
||||||
|
public enum AdminMonthlyOverviewStatus
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// تنظیم مستندات - فیش و قرارداد
|
||||||
|
/// </summary>
|
||||||
|
CreateDocuments = 0,
|
||||||
|
/// <summary> در انتظار مراجعه </summary>
|
||||||
|
VisitPending = 1,
|
||||||
|
/// <summary> در حال مراجعه </summary>
|
||||||
|
VisitInProgress = 2,
|
||||||
|
/// <summary> اتمام مراجعه </summary>
|
||||||
|
VisitCompleted = 3,
|
||||||
|
/// <summary> بایگانی شد </summary>
|
||||||
|
Archived = 4
|
||||||
|
}
|
||||||
@@ -0,0 +1,82 @@
|
|||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Security.Cryptography;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
using _0_Framework.Application;
|
||||||
|
using Microsoft.EntityFrameworkCore.Metadata;
|
||||||
|
|
||||||
|
namespace CompanyManagment.App.Contracts.AdminMonthlyOverview;
|
||||||
|
|
||||||
|
public interface IAdminMonthlyOverviewApplication
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// نمایش لیست ماهانه کارگاه ها - درصورت وجود نداشتن اطلاعات در این ماه، یک رکورد جدید ایجاد میکند
|
||||||
|
/// </summary>
|
||||||
|
/// <returns></returns>
|
||||||
|
Task<List<AdminMonthlyOverviewListViewModel>> GetWorkshopListByStatus(AdminMonthlyOverviewSearchModel searchModel);
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// شمارش تعداد هر تب
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="year"></param>
|
||||||
|
/// <param name="month"></param>
|
||||||
|
/// <param name="accountId"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
Task<AdminMonthlyOverViewCounterVm> GetCounter(int year, int month, long accountId);
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// رفتن به مرحله بعدی
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="id"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
Task<OperationResult> Next(long id);
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// برگشت به مرحله قبل
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="id"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
Task<OperationResult> Back(long id);
|
||||||
|
}
|
||||||
|
|
||||||
|
public class AdminMonthlyOverViewCounterVm
|
||||||
|
{
|
||||||
|
public int CreateDocument { get; set; }
|
||||||
|
public int VisitPending { get; set; }
|
||||||
|
public int VisitInProgress { get; set; }
|
||||||
|
public int VisitCompleted { get; set; }
|
||||||
|
public int Archived { get; set; }
|
||||||
|
public int All { get; set; }
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public class AdminMonthlyOverviewSearchModel
|
||||||
|
{
|
||||||
|
public int Year { get; set; }
|
||||||
|
public int Month { get; set; }
|
||||||
|
public long WorkshopId { get; set; }
|
||||||
|
public long EmployerId { get; set; }
|
||||||
|
public long AdminAccountId { get; set; }
|
||||||
|
public IsActive ActivationStatus { get; set; }
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public class AdminMonthlyOverviewListViewModel
|
||||||
|
{
|
||||||
|
public long Id { get; set; }
|
||||||
|
public long WorkshopId { get; set; }
|
||||||
|
public string WorkshopName { get; set; }
|
||||||
|
public string WorkshopArchiveCode { get; set; }
|
||||||
|
public int WorkshopArchiveCodeInt { get; set; }
|
||||||
|
public string Province { get; set; }
|
||||||
|
public string City { get; set; }
|
||||||
|
public string Address { get; set; }
|
||||||
|
public string AgentPhoneNumber { get; set; }
|
||||||
|
public string AdminFullName { get; set; }
|
||||||
|
public string EmployerName { get; set; }
|
||||||
|
public string EmployerPhoneNumber { get; set; }
|
||||||
|
public int ContractEmployeeCount { get; set; }
|
||||||
|
public int CheckoutEmployeeCount { get; set; }
|
||||||
|
public AdminMonthlyOverviewStatus Status { get; set; }
|
||||||
|
public bool IsBlock { get; set; }
|
||||||
|
}
|
||||||
@@ -1,7 +1,9 @@
|
|||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using CompanyManagment.App.Contracts.Employer;
|
using CompanyManagment.App.Contracts.Employer;
|
||||||
|
using CompanyManagment.App.Contracts.Loan;
|
||||||
using CompanyManagment.App.Contracts.RollCall;
|
using CompanyManagment.App.Contracts.RollCall;
|
||||||
|
using CompanyManagment.App.Contracts.SalaryAid;
|
||||||
using CompanyManagment.App.Contracts.WorkingHoursTemp;
|
using CompanyManagment.App.Contracts.WorkingHoursTemp;
|
||||||
|
|
||||||
namespace CompanyManagment.App.Contracts.Checkout;
|
namespace CompanyManagment.App.Contracts.Checkout;
|
||||||
@@ -120,5 +122,128 @@ public class CheckoutViewModel
|
|||||||
/// تعداد روزهای محاسبه شده برای عیدی و پاداش
|
/// تعداد روزهای محاسبه شده برای عیدی و پاداش
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public string TotalDayOfBunosesCompute { get; set; }
|
public string TotalDayOfBunosesCompute { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// مدت مرخصی استعلاجی
|
||||||
|
/// </summary>
|
||||||
|
public string TotalSickLeave { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// مدت مرخصی استحقاقی
|
||||||
|
/// </summary>
|
||||||
|
public string TotalPaidLeave { get; set; }
|
||||||
|
|
||||||
|
|
||||||
|
public bool HasSignCheckout { get; set; }
|
||||||
|
|
||||||
|
public TimeSpan TotalHourlyLeave { get; set; }
|
||||||
public List<CheckoutDailyRollCallViewModel> MonthlyRollCall { get; set; }
|
public List<CheckoutDailyRollCallViewModel> MonthlyRollCall { get; set; }
|
||||||
|
public List<LoanInstallmentViewModel> InstallmentViewModels { get; set; }
|
||||||
|
public List<SalaryAidViewModel> SalaryAidViewModels { get; set; }
|
||||||
|
public CheckoutRollCallViewModel CheckoutRollCall { get; set; }
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public class CheckoutRollCallViewModel
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// مجموع ساعت موظفی
|
||||||
|
/// </summary>
|
||||||
|
public TimeSpan TotalMandatoryTimeSpan { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// مجموع ساعت حضور
|
||||||
|
/// </summary>
|
||||||
|
public TimeSpan TotalPresentTimeSpan { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// مجموع ساعت استراحت
|
||||||
|
/// </summary>
|
||||||
|
public TimeSpan TotalBreakTimeSpan { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// مجموع ساعت کارکرد
|
||||||
|
/// </summary>
|
||||||
|
public TimeSpan TotalWorkingTimeSpan { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// مجموع ساعت مرخصی استحقاقی
|
||||||
|
/// </summary>
|
||||||
|
public TimeSpan TotalPaidLeaveTmeSpan { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// مجموع ساعت مرخصی استعلاجی
|
||||||
|
/// </summary>
|
||||||
|
public TimeSpan TotalSickLeaveTimeSpan { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// روز های حضور غیاب
|
||||||
|
/// </summary>
|
||||||
|
public ICollection<CheckoutRollCallDayViewModel> RollCallDaysCollection { get; set; }
|
||||||
|
}
|
||||||
|
|
||||||
|
public class CheckoutRollCallDayViewModel
|
||||||
|
{
|
||||||
|
public long Id { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// تاریخ
|
||||||
|
/// </summary>
|
||||||
|
public DateTime Date { get; set; }
|
||||||
|
/// <summary>
|
||||||
|
/// ورود اول
|
||||||
|
/// </summary>
|
||||||
|
public string FirstStartDate { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// خروج اول
|
||||||
|
/// </summary>
|
||||||
|
public string FirstEndDate { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// ورود دوم
|
||||||
|
/// </summary>
|
||||||
|
public string SecondStartDate { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// خروج دوم
|
||||||
|
/// </summary>
|
||||||
|
public string SecondEndDate { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// ساعت استراحت
|
||||||
|
/// </summary>
|
||||||
|
public TimeSpan BreakTimeSpan { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// مقدار زمان کارکرد
|
||||||
|
/// </summary>
|
||||||
|
public TimeSpan WorkingTimeSpan { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// آیا منقطع است؟
|
||||||
|
/// </summary>
|
||||||
|
public bool IsSliced { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// آیا غیبت است
|
||||||
|
/// </summary>
|
||||||
|
public bool IsAbsent { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// آیا جمعه است
|
||||||
|
/// </summary>
|
||||||
|
public bool IsFriday { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// آیا تعطیل رسمی است
|
||||||
|
/// </summary>
|
||||||
|
public bool IsHoliday { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// نوع مرخصی - درصورت نداشتن مرخصی مقدارش null میباشد
|
||||||
|
/// </summary>
|
||||||
|
public string LeaveType { get; set; }
|
||||||
|
|
||||||
|
public long CheckoutId { get; set; }
|
||||||
}
|
}
|
||||||
@@ -5,6 +5,7 @@ using System.Text;
|
|||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
using CompanyManagment.App.Contracts.Contract;
|
using CompanyManagment.App.Contracts.Contract;
|
||||||
using CompanyManagment.App.Contracts.Employee;
|
using CompanyManagment.App.Contracts.Employee;
|
||||||
|
using CompanyManagment.App.Contracts.RollCall;
|
||||||
using CompanyManagment.App.Contracts.YearlySalary;
|
using CompanyManagment.App.Contracts.YearlySalary;
|
||||||
using Microsoft.AspNetCore.Mvc.Rendering;
|
using Microsoft.AspNetCore.Mvc.Rendering;
|
||||||
|
|
||||||
@@ -138,4 +139,20 @@ public class CreateCheckout
|
|||||||
|
|
||||||
public string ShiftWork { get; set; }
|
public string ShiftWork { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// محاسبه اضافه کار در بیمه
|
||||||
|
/// </summary>
|
||||||
|
public bool HasInsuranceChekoutOverTime {get; set; }
|
||||||
|
|
||||||
|
|
||||||
|
public List<GroupedRollCalls> GroupedRollCalls { get; set; }
|
||||||
|
|
||||||
|
public TimeSpan TotalWorkingTimeSpan { get; set; }
|
||||||
|
|
||||||
|
public TimeSpan TotalBreakTimeSpan { get; set; }
|
||||||
|
|
||||||
|
public TimeSpan TotalPresentTimeSpan { get; set; }
|
||||||
|
public TimeSpan TotalPaidLeave { get; set; }
|
||||||
|
public TimeSpan TotalSickLeave { get; set; }
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -0,0 +1,49 @@
|
|||||||
|
using System.Collections.Generic;
|
||||||
|
|
||||||
|
namespace CompanyManagment.App.Contracts.Checkout;
|
||||||
|
|
||||||
|
public class CreateCheckoutListViewModel
|
||||||
|
{
|
||||||
|
public long Id { get; set; }
|
||||||
|
|
||||||
|
public long PersonnelCode { get; set; }
|
||||||
|
|
||||||
|
public long EmployeeId { get; set; }
|
||||||
|
|
||||||
|
public string ContractNo { get; set; }
|
||||||
|
|
||||||
|
public string EmployerName { get; set; }
|
||||||
|
|
||||||
|
public string WorkshopName { get; set; }
|
||||||
|
public string EmployeeName { get; set; }
|
||||||
|
|
||||||
|
public string ContractStart { get; set; }
|
||||||
|
|
||||||
|
public string ContractEnd { get; set; }
|
||||||
|
|
||||||
|
public string LeftWorkDate { get; set; }
|
||||||
|
|
||||||
|
//public string NextMonthStart { get; set; }
|
||||||
|
|
||||||
|
//public bool RedColor { get; set; }
|
||||||
|
|
||||||
|
public bool LaterThanEnd { get; set; }
|
||||||
|
|
||||||
|
public bool Extension { get; set; }
|
||||||
|
|
||||||
|
public bool HasCheckout { get; set; }
|
||||||
|
|
||||||
|
//public bool MoreThanOneMonth { get; set; }
|
||||||
|
|
||||||
|
//public bool Waiting { get; set; }
|
||||||
|
|
||||||
|
|
||||||
|
public string Description { get; set; }
|
||||||
|
/// <summary>
|
||||||
|
/// آیا پرسنل اجازه ایجاد قرارداد دارد
|
||||||
|
/// </summary>
|
||||||
|
public bool EmployeeHasCreateCheckout { get; set; }
|
||||||
|
|
||||||
|
public bool HasWorkFlow { get; set; }
|
||||||
|
public List<CreateCheckoutListViewModel> CreateCheckoutList { get; set; }
|
||||||
|
}
|
||||||
@@ -13,7 +13,28 @@ public interface ICheckoutApplication
|
|||||||
OperationResult Edit(EditCheckout command);
|
OperationResult Edit(EditCheckout command);
|
||||||
EditCheckout GetDetails(long id);
|
EditCheckout GetDetails(long id);
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// لود لیست اولیه جهت ایجاد فیش حقوقی
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="workshopId"></param>
|
||||||
|
/// <param name="employeeId"></param>
|
||||||
|
/// <param name="year"></param>
|
||||||
|
/// <param name="month"></param>
|
||||||
|
/// <param name="contractStart"></param>
|
||||||
|
/// <param name="contractEnd"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
/// <exception cref="NotImplementedException"></exception>
|
||||||
|
Task<CreateCheckoutListViewModel> GetContractResultToCreateCheckout(long workshopId, long employeeId, string year,
|
||||||
|
string month,
|
||||||
|
string contractStart, string contractEnd);
|
||||||
|
/// <summary>
|
||||||
|
/// لیست تصفیه حساب
|
||||||
|
/// جدید
|
||||||
|
///
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="searchModel"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
Task<List<CheckoutViewModel>> SearchCheckoutOptimized(CheckoutSearchModel searchModel);
|
||||||
Task<List<CheckoutViewModel>> Search(CheckoutSearchModel searchModel);
|
Task<List<CheckoutViewModel>> Search(CheckoutSearchModel searchModel);
|
||||||
List<CheckoutViewModel> SimpleSearch(CheckoutSearchModel searchModel);
|
List<CheckoutViewModel> SimpleSearch(CheckoutSearchModel searchModel);
|
||||||
List<CheckoutViewModel> PrintAll(List<long> id);
|
List<CheckoutViewModel> PrintAll(List<long> id);
|
||||||
|
|||||||
@@ -1,17 +1,22 @@
|
|||||||
<Project Sdk="Microsoft.NET.Sdk">
|
<Project Sdk="Microsoft.NET.Sdk">
|
||||||
|
|
||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
<TargetFramework>net8.0</TargetFramework>
|
<TargetFramework>net8.0</TargetFramework>
|
||||||
</PropertyGroup>
|
<GenerateDocumentationFile>true</GenerateDocumentationFile>
|
||||||
|
</PropertyGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<PackageReference Include="PersianTools.Core" Version="2.0.4" />
|
<PackageReference Include="PersianTools.Core" Version="2.0.4" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<ProjectReference Include="..\0_Framework\0_Framework.csproj" />
|
<ProjectReference Include="..\0_Framework\0_Framework.csproj" />
|
||||||
<ProjectReference Include="..\AccountManagement.Application.Contracts\AccountManagement.Application.Contracts.csproj" />
|
<ProjectReference Include="..\AccountManagement.Application.Contracts\AccountManagement.Application.Contracts.csproj" />
|
||||||
<ProjectReference Include="..\_0_Framework\_0_Framework_b.csproj" />
|
<ProjectReference Include="..\_0_Framework\_0_Framework_b.csproj" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
|
<Target Name="CopyDocs" AfterTargets="Build">
|
||||||
|
<Copy SourceFiles="$(OutputPath)CompanyManagment.App.Contracts.xml" DestinationFolder="../ServiceHost\bin\Debug\net8.0\" />
|
||||||
|
</Target>
|
||||||
|
|
||||||
</Project>
|
</Project>
|
||||||
|
|||||||
@@ -1,5 +1,8 @@
|
|||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
|
using CompanyManagment.App.Contracts.Loan;
|
||||||
|
using CompanyManagment.App.Contracts.RollCall;
|
||||||
|
using CompanyManagment.App.Contracts.SalaryAid;
|
||||||
using CompanyManagment.App.Contracts.WorkingHoursTemp;
|
using CompanyManagment.App.Contracts.WorkingHoursTemp;
|
||||||
|
|
||||||
namespace CompanyManagment.App.Contracts.Contract;
|
namespace CompanyManagment.App.Contracts.Contract;
|
||||||
@@ -43,6 +46,15 @@ public class ComputingViewModel
|
|||||||
|
|
||||||
public bool HasRotatingShift { get; set; }
|
public bool HasRotatingShift { get; set; }
|
||||||
|
|
||||||
|
public List<GroupedRollCalls> GroupedRollCalls { get; set; }
|
||||||
|
|
||||||
|
public TimeSpan TotalWorkingTimeSpan { get; set; }
|
||||||
|
|
||||||
|
public TimeSpan TotalBreakTimeSpan { get; set; }
|
||||||
|
|
||||||
|
public TimeSpan TotalPresentTimeSpan { get; set; }
|
||||||
|
public TimeSpan TotalPaidLeave { get; set; }
|
||||||
|
public TimeSpan TotalSickLeave { get; set; }
|
||||||
|
|
||||||
//public List<string> holidays;
|
//public List<string> holidays;
|
||||||
}
|
}
|
||||||
@@ -63,6 +63,10 @@ public class ContractViweModel
|
|||||||
public string EmployeeLName { get; set; }
|
public string EmployeeLName { get; set; }
|
||||||
|
|
||||||
public string IsBlockCantracingParty { get; set; }
|
public string IsBlockCantracingParty { get; set; }
|
||||||
|
/// <summary>
|
||||||
|
/// آیا مجاز به امضاء قرادا می باشد
|
||||||
|
/// </summary>
|
||||||
|
public bool HasSignContract { get; set; }
|
||||||
public IQueryable<WorkshopEmployerViewModel> WorkshopEmployerList { get; set; }
|
public IQueryable<WorkshopEmployerViewModel> WorkshopEmployerList { get; set; }
|
||||||
public List<EmployerViewModel> Employers { get; set; }
|
public List<EmployerViewModel> Employers { get; set; }
|
||||||
public List<WorkshopViewModel> Workshops { get; set; }
|
public List<WorkshopViewModel> Workshops { get; set; }
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
|
|
||||||
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using _0_Framework.Domain.CustomizeCheckoutShared.Enums;
|
using _0_Framework.Domain.CustomizeCheckoutShared.Enums;
|
||||||
using _0_Framework.Domain.CustomizeCheckoutShared.ValueObjects;
|
using _0_Framework.Domain.CustomizeCheckoutShared.ValueObjects;
|
||||||
@@ -16,8 +17,9 @@ public class CreateCustomizeWorkshopGroupSettings
|
|||||||
public IrregularShift IrregularShift { get; set; }
|
public IrregularShift IrregularShift { get; set; }
|
||||||
public BreakTime BreakTime { get; set; }
|
public BreakTime BreakTime { get; set; }
|
||||||
public int LeavePermittedDays { get; set; }
|
public int LeavePermittedDays { get; set; }
|
||||||
public FridayWork FridayWork { get; set; }
|
//public FridayWork FridayWork { get; set; }
|
||||||
public HolidayWork HolidayWork { get; set; }
|
public HolidayWork HolidayWork { get; set; }
|
||||||
|
public List<DayOfWeek> OffDayOfWeeks { get; set; }
|
||||||
public ICollection<CustomizeRotatingShiftsViewModel> CustomizeRotatingShiftsViewModels { get; set; }
|
public ICollection<CustomizeRotatingShiftsViewModel> CustomizeRotatingShiftsViewModels { get; set; }
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -1,4 +1,5 @@
|
|||||||
using _0_Framework.Domain.CustomizeCheckoutShared.Enums;
|
using System;
|
||||||
|
using _0_Framework.Domain.CustomizeCheckoutShared.Enums;
|
||||||
using CompanyManagment.App.Contracts.CustomizeWorkshopSettings.ValueObjectsViewModel;
|
using CompanyManagment.App.Contracts.CustomizeWorkshopSettings.ValueObjectsViewModel;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using _0_Framework.Domain.CustomizeCheckoutShared.Enums;
|
using _0_Framework.Domain.CustomizeCheckoutShared.Enums;
|
||||||
@@ -20,16 +21,18 @@ public class CreateCustomizeWorkshopSettings
|
|||||||
public BreakTime BreakTime { get; set; }
|
public BreakTime BreakTime { get; set; }
|
||||||
|
|
||||||
|
|
||||||
/// <summary>
|
///// <summary>
|
||||||
/// آیا جمعه کار میکند یا نه
|
///// آیا جمعه کار میکند یا نه
|
||||||
/// </summary>
|
///// </summary>
|
||||||
public FridayWork FridayWork { get; set; }
|
//public FridayWork FridayWork { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// آیا در روز های تعطیل کار میکند
|
/// آیا در روز های تعطیل کار میکند
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public HolidayWork HolidayWork { get; set; }
|
public HolidayWork HolidayWork { get; set; }
|
||||||
|
|
||||||
|
public List<DayOfWeek> OffDays { get; set; }
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
using _0_Framework.Domain.CustomizeCheckoutShared.Enums;
|
using System;
|
||||||
|
using _0_Framework.Domain.CustomizeCheckoutShared.Enums;
|
||||||
using _0_Framework.Domain.CustomizeCheckoutShared.ValueObjects;
|
using _0_Framework.Domain.CustomizeCheckoutShared.ValueObjects;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
|
|
||||||
@@ -20,7 +21,8 @@ public class CustomizeWorkshopEmployeeSettingsViewModel
|
|||||||
public bool ChangeSettingEmployeeShiftIsChange { get; set; }
|
public bool ChangeSettingEmployeeShiftIsChange { get; set; }
|
||||||
public BreakTime BreakTime { get; set; }
|
public BreakTime BreakTime { get; set; }
|
||||||
public HolidayWork HolidayWork { get; set; }
|
public HolidayWork HolidayWork { get; set; }
|
||||||
public FridayWork FridayWork { get; set; }
|
//public FridayWork FridayWork { get; set; }
|
||||||
public int LeavePermittedDays { get; set; }
|
public int LeavePermittedDays { get; set; }
|
||||||
public ICollection<CustomizeRotatingShiftsViewModel> CustomizeRotatingShiftsViewModels { get; set; }
|
public ICollection<CustomizeRotatingShiftsViewModel> CustomizeRotatingShiftsViewModels { get; set; }
|
||||||
|
public List<DayOfWeek> WeeklyOffDays { get; set; }
|
||||||
}
|
}
|
||||||
@@ -1,4 +1,6 @@
|
|||||||
using System.Collections.Generic;
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using _0_Framework.Domain.CustomizeCheckoutShared.Base;
|
||||||
using _0_Framework.Domain.CustomizeCheckoutShared.Enums;
|
using _0_Framework.Domain.CustomizeCheckoutShared.Enums;
|
||||||
using _0_Framework.Domain.CustomizeCheckoutShared.ValueObjects;
|
using _0_Framework.Domain.CustomizeCheckoutShared.ValueObjects;
|
||||||
|
|
||||||
@@ -18,4 +20,5 @@ public class CustomizeWorkshopGroupSettingsViewModel
|
|||||||
public BreakTime BreakTime { get; set; }
|
public BreakTime BreakTime { get; set; }
|
||||||
public FridayWork FridayWork { get; set; }
|
public FridayWork FridayWork { get; set; }
|
||||||
public HolidayWork HolidayWork { get; set; }
|
public HolidayWork HolidayWork { get; set; }
|
||||||
|
public List<DayOfWeek> OffDayOfWeeks { get; set; }
|
||||||
}
|
}
|
||||||
@@ -1,4 +1,5 @@
|
|||||||
using _0_Framework.Domain.CustomizeCheckoutShared.Enums;
|
using System;
|
||||||
|
using _0_Framework.Domain.CustomizeCheckoutShared.Enums;
|
||||||
using CompanyManagment.App.Contracts.CustomizeWorkshopSettings.ValueObjectsViewModel;
|
using CompanyManagment.App.Contracts.CustomizeWorkshopSettings.ValueObjectsViewModel;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using _0_Framework.Domain.CustomizeCheckoutShared.ValueObjects;
|
using _0_Framework.Domain.CustomizeCheckoutShared.ValueObjects;
|
||||||
@@ -72,17 +73,19 @@ public class EditCustomizeEmployeeSettings:CreateCustomizeEmployeeSettings
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
public EarlyExitViewModel EarlyExit { get; set; }
|
public EarlyExitViewModel EarlyExit { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
///// <summary>
|
||||||
/// آیا جمعه کار میکند یا نه
|
///// آیا جمعه کار میکند یا نه
|
||||||
/// </summary>
|
///// </summary>
|
||||||
public FridayWork FridayWork { get; set; }
|
//public FridayWork FridayWork { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// آیا در روز های تعطیل کار میکند
|
/// آیا در روز های تعطیل کار میکند
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public HolidayWork HolidayWork { get; set; }
|
public HolidayWork HolidayWork { get; set; }
|
||||||
|
|
||||||
public long Id { get; set; }
|
public List<DayOfWeek> WeeklyOffDays { get; set; }
|
||||||
|
|
||||||
|
public long Id { get; set; }
|
||||||
public string Salary { get; set; }
|
public string Salary { get; set; }
|
||||||
public string NameGroup { get; set; }
|
public string NameGroup { get; set; }
|
||||||
public string EmployeeFullName { get; set; }
|
public string EmployeeFullName { get; set; }
|
||||||
@@ -91,4 +94,5 @@ public class EditCustomizeEmployeeSettings:CreateCustomizeEmployeeSettings
|
|||||||
public IEnumerable<CustomizeWorkshopShiftViewModel> ShiftViewModel { get; set; }
|
public IEnumerable<CustomizeWorkshopShiftViewModel> ShiftViewModel { get; set; }
|
||||||
public ICollection<CustomizeRotatingShiftsViewModel> CustomizeRotatingShifts{ get; set; }
|
public ICollection<CustomizeRotatingShiftsViewModel> CustomizeRotatingShifts{ get; set; }
|
||||||
public BreakTime BreakTime { get; set; }
|
public BreakTime BreakTime { get; set; }
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -1,6 +1,8 @@
|
|||||||
using _0_Framework.Domain.CustomizeCheckoutShared.Enums;
|
using System;
|
||||||
|
using _0_Framework.Domain.CustomizeCheckoutShared.Enums;
|
||||||
using CompanyManagment.App.Contracts.CustomizeWorkshopSettings.ValueObjectsViewModel;
|
using CompanyManagment.App.Contracts.CustomizeWorkshopSettings.ValueObjectsViewModel;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
|
using _0_Framework.Domain.CustomizeCheckoutShared.Base;
|
||||||
|
|
||||||
namespace CompanyManagment.App.Contracts.CustomizeWorkshopSettings;
|
namespace CompanyManagment.App.Contracts.CustomizeWorkshopSettings;
|
||||||
|
|
||||||
@@ -75,16 +77,18 @@ public class EditCustomizeWorkshopGroupSettings : CreateCustomizeWorkshopGroupSe
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
public EarlyExitViewModel EarlyExit { get; set; }
|
public EarlyExitViewModel EarlyExit { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
///// <summary>
|
||||||
/// آیا جمعه کار میکند یا نه
|
///// آیا جمعه کار میکند یا نه
|
||||||
/// </summary>
|
///// </summary>
|
||||||
public FridayWork FridayWork { get; set; }
|
//public FridayWork FridayWork { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// آیا در روز های تعطیل کار میکند
|
/// آیا در روز های تعطیل کار میکند
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public HolidayWork HolidayWork { get; set; }
|
public HolidayWork HolidayWork { get; set; }
|
||||||
|
|
||||||
|
//public List<DayOfWeek> WeeklyOffDays { get; set; }
|
||||||
|
|
||||||
public bool IsShiftChanged { get; set; }
|
public bool IsShiftChanged { get; set; }
|
||||||
public bool IsSettingChanged { get; set; }
|
public bool IsSettingChanged { 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