Compare commits
544 Commits
Feature/Re
...
Feature/ad
| Author | SHA1 | Date | |
|---|---|---|---|
| 112369c2a5 | |||
| 53eab1be67 | |||
|
|
74c7b1ebbd | ||
|
|
b2c6ad2541 | ||
| 8eded713da | |||
|
|
c3cb3df3d3 | ||
|
|
f9947dc138 | ||
|
|
3b12be04b5 | ||
|
|
82d035b7e1 | ||
|
|
e80621280c | ||
|
|
1c6b0ac292 | ||
|
|
01bc8ef01b | ||
|
|
ca350aa795 | ||
|
|
58c015b151 | ||
|
|
1daaeff194 | ||
|
|
9cd00a1886 | ||
|
|
179ff95d54 | ||
|
|
b2a70bc5a9 | ||
|
|
5053b69295 | ||
|
|
df39072944 | ||
|
|
6f8ced3192 | ||
|
|
f7166ca17f | ||
|
|
a7b7bfc745 | ||
|
|
fa5e079db5 | ||
|
|
ec2defab69 | ||
|
|
5e7bfe0634 | ||
|
|
2732ec09b2 | ||
|
|
13d93b3e1d | ||
|
|
7ce2142517 | ||
|
|
98146b4aa7 | ||
|
|
5f65c13b45 | ||
|
|
da8579d2a6 | ||
|
|
41503101b6 | ||
|
|
1cd4cd4b49 | ||
|
|
7afa112e63 | ||
|
|
3aa5668696 | ||
|
|
13ebe2fc2a | ||
|
|
54fbbc964f | ||
|
|
b92aaaffa0 | ||
|
|
b82456f172 | ||
|
|
c04a8f86a4 | ||
|
|
e0f7ff5ec7 | ||
|
|
873a30ecd1 | ||
|
|
c91df337d4 | ||
|
|
b88cda4007 | ||
|
|
366ad25a3a | ||
|
|
463e4bc080 | ||
|
|
785309c731 | ||
|
|
f0126d365d | ||
|
|
b77538218f | ||
|
|
e877aca832 | ||
|
|
f66293a637 | ||
|
|
4aa710b7d6 | ||
|
|
2547fec258 | ||
|
|
acb572d94a | ||
|
|
5ff08ebb2f | ||
|
|
fd122fe582 | ||
|
|
25903856b2 | ||
|
|
d1b7e0c3e1 | ||
|
|
9c0d5b65be | ||
|
|
ac4bd3453a | ||
|
|
77e03f3d7f | ||
|
|
a9008beb24 | ||
|
|
a30d5b68d7 | ||
|
|
93c72e16e7 | ||
|
|
290e1639e8 | ||
|
|
3650b46b8e | ||
|
|
734de19bc2 | ||
|
|
398bb35815 | ||
|
|
697bd9fefe | ||
|
|
2743493a11 | ||
|
|
f9de490c13 | ||
|
|
f374ff3012 | ||
|
|
563fe563c0 | ||
|
|
c75e3464d7 | ||
|
|
e3a5fb578b | ||
|
|
8cb99b2862 | ||
|
|
57b2ad3445 | ||
|
|
3befd6f0d9 | ||
|
|
8f10aa54a8 | ||
|
|
efbd74479b | ||
|
|
8432b2660e | ||
|
|
2f9426bdaf | ||
|
|
5477519464 | ||
|
|
f92257b251 | ||
|
|
5efe58d23d | ||
|
|
648ca44ebb | ||
|
|
3232c979aa | ||
|
|
ce8a0b397d | ||
|
|
c1fcaa1726 | ||
|
|
e1fd94db04 | ||
|
|
882f38d000 | ||
|
|
29560370d8 | ||
|
|
7841e8c336 | ||
|
|
a114cc8242 | ||
|
|
473132d66a | ||
|
|
9124f50577 | ||
|
|
7a13150223 | ||
|
|
f7059bcaeb | ||
|
|
4c4e848f52 | ||
|
|
7984f18516 | ||
|
|
94aa4fda51 | ||
|
|
2d2207565e | ||
|
|
3f8b85906f | ||
|
|
346756c766 | ||
|
|
20f208ac0e | ||
|
|
2b602e4199 | ||
|
|
9557f860bb | ||
|
|
cf0dc95b5c | ||
|
|
c7f7b17866 | ||
|
|
d9259bf7c4 | ||
|
|
55dc4c891f | ||
|
|
daa2a0fdc1 | ||
|
|
6d6ce93f74 | ||
|
|
a71433f751 | ||
|
|
68d1a8d9fe | ||
|
|
a1dfc17ce9 | ||
|
|
99a8cc181d | ||
|
|
05cd8832d5 | ||
|
|
a4bcb1ac55 | ||
|
|
6cec0e39ec | ||
|
|
08bf8395c4 | ||
|
|
bc6378beca | ||
|
|
08adccb2f1 | ||
|
|
5e24071175 | ||
|
|
ebc377603a | ||
|
|
b70dbc8a6b | ||
|
|
a34d81318b | ||
|
|
00357df859 | ||
|
|
ba8e07c63a | ||
|
|
f87b203939 | ||
|
|
79807569dc | ||
|
|
bda666b989 | ||
|
|
9eca54276b | ||
|
|
de64933d06 | ||
|
|
44763da729 | ||
|
|
1f3bf123c4 | ||
|
|
7a33b7da46 | ||
|
|
da6573a147 | ||
|
|
6a6ec2610d | ||
|
|
d9717033cf | ||
|
|
beafd047bf | ||
|
|
7c3abeb463 | ||
|
|
040f40df52 | ||
|
|
ac66df98f5 | ||
|
|
8da9f09663 | ||
|
|
591de9acd8 | ||
|
|
be282fa548 | ||
|
|
1b88cebdf2 | ||
|
|
12356c927b | ||
|
|
b73898f5ea | ||
|
|
51e8686668 | ||
|
|
133b99d5fc | ||
|
|
6c814d5dce | ||
|
|
9879857a97 | ||
|
|
e3f29e5efa | ||
|
|
13278e2c24 | ||
|
|
5ca32bbbaf | ||
|
|
3ea80c1344 | ||
|
|
5ae31b9cea | ||
|
|
0d06457e1f | ||
|
|
bdc433b0a3 | ||
|
|
e87733f5cb | ||
|
|
60bd120196 | ||
|
|
0a41751c15 | ||
|
|
41f39fb6fa | ||
|
|
e8fd8bdace | ||
|
|
9f2487f8ef | ||
|
|
32dbd094e0 | ||
|
|
b97039ee15 | ||
|
|
313579cdee | ||
|
|
3bda7116a2 | ||
|
|
8bb29447e2 | ||
|
|
8dc839f561 | ||
|
|
9f9c0d64a9 | ||
|
|
751c1a4131 | ||
|
|
b96ed1c7c3 | ||
|
|
500d7fc8d4 | ||
|
|
b8cfc8eb56 | ||
|
|
4c0f4bb70c | ||
|
|
6317ebb079 | ||
|
|
91d86dbd2e | ||
|
|
aedaf84d57 | ||
|
|
b0c1f216a1 | ||
|
|
bd42a6d5e9 | ||
|
|
e924ca7049 | ||
|
|
482eb8ab0b | ||
|
|
7541abb92c | ||
|
|
91365f5aeb | ||
|
|
0664a71047 | ||
|
|
4ff2596864 | ||
|
|
744078dd6c | ||
|
|
1ebc93a1f8 | ||
|
|
a61c62a2c3 | ||
|
|
0981dc20ec | ||
|
|
e8a65e51db | ||
|
|
fb10d962a6 | ||
|
|
ad2612b60c | ||
|
|
3254db4a62 | ||
|
|
8325752355 | ||
|
|
bb3a50eb18 | ||
|
|
767022d0b8 | ||
|
|
6e7199cf6d | ||
|
|
9ab4670d68 | ||
|
|
d080b093e8 | ||
|
|
f2717de5bf | ||
|
|
e5fa554971 | ||
|
|
6932ba7b79 | ||
|
|
cc3b18bc99 | ||
|
|
194323004b | ||
|
|
5a3b99d07c | ||
|
|
aab65e07dc | ||
|
|
3c6e83a967 | ||
|
|
bfd6632940 | ||
|
|
39a91c269d | ||
|
|
29875f4870 | ||
|
|
0859cd3ba4 | ||
|
|
200f86b270 | ||
|
|
54b3d6ad2c | ||
|
|
e9ab5c40ef | ||
|
|
c7b9f2ae20 | ||
|
|
bf08af0b3d | ||
|
|
314ec82133 | ||
|
|
76448cdca4 | ||
|
|
9f33b481fa | ||
|
|
f6441f916e | ||
|
|
fe20c63baf | ||
|
|
5427782b06 | ||
|
|
0806b55dfb | ||
|
|
7f68e11f9d | ||
|
|
f550aca7f7 | ||
|
|
f1f3ff199a | ||
|
|
60252ab032 | ||
|
|
15e608a1cf | ||
|
|
f3bf66aeb0 | ||
|
|
8ac15191ad | ||
|
|
a177d6063d | ||
|
|
59f063b824 | ||
|
|
be2333cac8 | ||
|
|
f8a1aa596d | ||
|
|
64422755f2 | ||
| 8255e8679e | |||
|
|
62bcd4d6b6 | ||
|
|
af2c71ea09 | ||
|
|
0cb9cfe9b2 | ||
|
|
558021ac6a | ||
|
|
0b59e6af15 | ||
|
|
eecdcc11c0 | ||
|
|
ccbc180c96 | ||
|
|
376d9d1d78 | ||
|
|
7ddd51034a | ||
|
|
a63fed8c4a | ||
|
|
042530b6e3 | ||
|
|
0579692a55 | ||
|
|
e26df8026e | ||
|
|
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 | |||
|
|
87afbbe44c | ||
|
|
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 |
48
.github/workflows/dotnet-developPublish.yml
vendored
Normal file
48
.github/workflows/dotnet-developPublish.yml
vendored
Normal file
@@ -0,0 +1,48 @@
|
|||||||
|
name: Deploy Development ASP.NET Core App to IIS
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- Main
|
||||||
|
|
||||||
|
env:
|
||||||
|
DOTNET_ENVIRONMENT: Development
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
build-and-deploy:
|
||||||
|
runs-on: windows-latest
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- name: Checkout code
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
|
||||||
|
- name: Setup .NET SDK
|
||||||
|
uses: actions/setup-dotnet@v4
|
||||||
|
with:
|
||||||
|
dotnet-version: '8.0.x' # یا نسخه پروژهت
|
||||||
|
|
||||||
|
- name: Restore dependencies
|
||||||
|
run: dotnet restore
|
||||||
|
|
||||||
|
- name: Build
|
||||||
|
run: dotnet build --configuration Release
|
||||||
|
|
||||||
|
- name: Publish
|
||||||
|
run: dotnet publish --configuration Release --output ./publish /p:EnvironmentName=Development --no-build
|
||||||
|
|
||||||
|
- name: Deploy to IIS via Web Deploy
|
||||||
|
shell: powershell
|
||||||
|
run: |
|
||||||
|
$publishFolder = Resolve-Path ./publish
|
||||||
|
& "C:\Program Files\IIS\Microsoft Web Deploy V3\msdeploy.exe" `
|
||||||
|
-verb:sync `
|
||||||
|
-source:contentPath="$publishFolder" `
|
||||||
|
-dest:contentPath="dadmehrg",computerName="https://171.22.24.15:8172/msdeploy.axd?site=dadmehrg",userName=".\deployuser",password="R2rNpdnetP3j>q5b18",authType="Basic" `
|
||||||
|
-allowUntrusted `
|
||||||
|
-enableRule:AppOffline
|
||||||
|
|
||||||
|
|
||||||
|
env:
|
||||||
|
SERVER_HOST: your-server-ip-or-domain
|
||||||
|
DEPLOY_USER: ${{ secrets.DEPLOY_USER }}
|
||||||
|
DEPLOY_PASSWORD: ${{ secrets.DEPLOY_PASSWORD }}
|
||||||
2
.gitignore
vendored
2
.gitignore
vendored
@@ -361,4 +361,4 @@ MigrationBackup/
|
|||||||
|
|
||||||
# # Fody - auto-generated XML schema
|
# # Fody - auto-generated XML schema
|
||||||
# FodyWeavers.xsd
|
# FodyWeavers.xsd
|
||||||
|
.idea
|
||||||
|
|||||||
@@ -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,69 +12,72 @@ 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;
|
||||||
|
result.WorkshopId = long.Parse(claims.FirstOrDefault(x => x.Type == "WorkshopId")?.Value??"0");
|
||||||
|
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
|
||||||
|
|
||||||
public void UpdateWorkshopSlugClaim(string newWorkshopSlug, string newWorkshopName)
|
public void UpdateWorkshopSlugClaim(string newWorkshopSlug, string newWorkshopName,long newWorkshopId)
|
||||||
{
|
{
|
||||||
var user = _contextAccessor.HttpContext.User;
|
var user = _contextAccessor.HttpContext.User;
|
||||||
|
|
||||||
@@ -83,6 +86,7 @@ public class AuthHelper : IAuthHelper
|
|||||||
var claimsIdentity = (ClaimsIdentity)user.Identity;
|
var claimsIdentity = (ClaimsIdentity)user.Identity;
|
||||||
var existingClaimSlug = claimsIdentity.FindFirst("WorkshopSlug");
|
var existingClaimSlug = claimsIdentity.FindFirst("WorkshopSlug");
|
||||||
var existingClaimName = claimsIdentity.FindFirst("WorkshopName");
|
var existingClaimName = claimsIdentity.FindFirst("WorkshopName");
|
||||||
|
var existingWorkshopId = claimsIdentity.FindFirst("WorkshopId");
|
||||||
|
|
||||||
if (existingClaimSlug != null)
|
if (existingClaimSlug != null)
|
||||||
{
|
{
|
||||||
@@ -94,9 +98,14 @@ public class AuthHelper : IAuthHelper
|
|||||||
claimsIdentity.RemoveClaim(existingClaimName);
|
claimsIdentity.RemoveClaim(existingClaimName);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (existingWorkshopId != null)
|
||||||
|
{
|
||||||
|
claimsIdentity.RemoveClaim(existingWorkshopId);
|
||||||
|
}
|
||||||
|
|
||||||
claimsIdentity.AddClaim(new Claim("WorkshopSlug", newWorkshopSlug));
|
claimsIdentity.AddClaim(new Claim("WorkshopSlug", newWorkshopSlug));
|
||||||
claimsIdentity.AddClaim(new Claim("WorkshopName", newWorkshopName));
|
claimsIdentity.AddClaim(new Claim("WorkshopName", newWorkshopName));
|
||||||
|
claimsIdentity.AddClaim(new Claim("WorkshopId",newWorkshopId.ToString()));
|
||||||
|
|
||||||
|
|
||||||
var authProperties = new AuthenticationProperties
|
var authProperties = new AuthenticationProperties
|
||||||
@@ -111,160 +120,175 @@ 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 long GetWorkshopId()
|
||||||
|
{
|
||||||
|
return long.Parse(_contextAccessor.HttpContext?.User.Claims.FirstOrDefault(x => x.Type == "WorkshopId")?.Value ?? "0");
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
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("WorkshopId", account.WorkshopId.ToString()),
|
||||||
|
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
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -20,6 +20,7 @@ public class AuthViewModel
|
|||||||
|
|
||||||
public int? PositionValue { get; set; }
|
public int? PositionValue { get; set; }
|
||||||
public string WorkshopSlug { get; set; }
|
public string WorkshopSlug { get; set; }
|
||||||
|
public long WorkshopId { get; set; }
|
||||||
public string WorkshopName { get; set; }
|
public string WorkshopName { get; set; }
|
||||||
public List<WorkshopClaim> WorkshopList { get; set; }
|
public List<WorkshopClaim> WorkshopList { get; set; }
|
||||||
|
|
||||||
|
|||||||
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
|
||||||
|
}
|
||||||
@@ -17,11 +17,12 @@ public interface IAuthHelper
|
|||||||
|
|
||||||
#region Vafa
|
#region Vafa
|
||||||
|
|
||||||
void UpdateWorkshopSlugClaim(string workshopSlug, string workshopName);
|
void UpdateWorkshopSlugClaim(string workshopSlug, string workshopName, long workshopId);
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
long CurrentSubAccountId();
|
long CurrentSubAccountId();
|
||||||
string GetWorkshopSlug();
|
string GetWorkshopSlug();
|
||||||
string GetWorkshopName();
|
string GetWorkshopName();
|
||||||
|
long GetWorkshopId();
|
||||||
(long Id, UserType userType, long roleId) GetUserTypeWithId();
|
(long Id, UserType userType, long roleId) GetUserTypeWithId();
|
||||||
}
|
}
|
||||||
@@ -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;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
15
0_Framework/Application/PagedResult.cs
Normal file
15
0_Framework/Application/PagedResult.cs
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Diagnostics.CodeAnalysis;
|
||||||
|
|
||||||
|
namespace _0_Framework.Application;
|
||||||
|
|
||||||
|
|
||||||
|
public class PagedResult<T> where T : class
|
||||||
|
{
|
||||||
|
public int TotalCount { get; set; }
|
||||||
|
public List<T> List { get; set; }
|
||||||
|
}
|
||||||
|
public class PagedResult<T,TMeta>:PagedResult<T> where T : class
|
||||||
|
{
|
||||||
|
public TMeta? Meta { get; set; }
|
||||||
|
}
|
||||||
7
0_Framework/Application/PaginationRequest.cs
Normal file
7
0_Framework/Application/PaginationRequest.cs
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
namespace _0_Framework.Application;
|
||||||
|
|
||||||
|
public class PaginationRequest
|
||||||
|
{
|
||||||
|
public int PageIndex { get; set; } = 1;
|
||||||
|
public int PageSize { get; set; } = 30;
|
||||||
|
}
|
||||||
@@ -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 == ".dadmehrg.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 resStr = await response.Content.ReadAsStringAsync(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;
|
||||||
|
}
|
||||||
|
}
|
||||||
62
0_Framework/Application/PaymentGateway/IPaymentGateway.cs
Normal file
62
0_Framework/Application/PaymentGateway/IPaymentGateway.cs
Normal file
@@ -0,0 +1,62 @@
|
|||||||
|
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 bool IsSuccess => Status == "success";
|
||||||
|
}
|
||||||
|
|
||||||
|
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; }
|
||||||
|
}
|
||||||
@@ -30,8 +30,9 @@ public static class StaticWorkshopAccounts
|
|||||||
/// 380 - افروز نظری
|
/// 380 - افروز نظری
|
||||||
/// 381 - مهدی قربانی
|
/// 381 - مهدی قربانی
|
||||||
/// 392 - عمار حسن دوست
|
/// 392 - عمار حسن دوست
|
||||||
|
/// 20 - سمیرا الهی نیا
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public static List<long> StaticAccountIds = [2, 3, 380, 381, 392];
|
public static List<long> StaticAccountIds = [2, 3, 380, 381, 392, 20];
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// این تاریخ در جدول اکانت لفت ورک به این معنیست
|
/// این تاریخ در جدول اکانت لفت ورک به این معنیست
|
||||||
|
|||||||
@@ -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();
|
||||||
|
|||||||
@@ -38,7 +38,7 @@ public class UidBasicInformation
|
|||||||
{
|
{
|
||||||
"GENDER_MALE" => Application.Gender.Male,
|
"GENDER_MALE" => Application.Gender.Male,
|
||||||
"GENDER_FEMALE" => Application.Gender.Female,
|
"GENDER_FEMALE" => Application.Gender.Female,
|
||||||
_ => throw new ArgumentOutOfRangeException()
|
_ => Application.Gender.None
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
public record IdentificationInformation(string NationalId, string BirthDate, string ShenasnameSeri, string ShenasnameSerial, string ShenasnamehNumber);
|
public record IdentificationInformation(string NationalId, string BirthDate, string ShenasnameSeri, string ShenasnameSerial, string ShenasnamehNumber);
|
||||||
|
|||||||
@@ -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; }
|
||||||
}
|
}
|
||||||
@@ -4,6 +4,7 @@ using System.Linq;
|
|||||||
using System.Linq.Expressions;
|
using System.Linq.Expressions;
|
||||||
using System.Text;
|
using System.Text;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
|
using Microsoft.EntityFrameworkCore.Storage;
|
||||||
|
|
||||||
namespace _0_Framework.Domain;
|
namespace _0_Framework.Domain;
|
||||||
|
|
||||||
@@ -17,4 +18,6 @@ public interface IRepository<TKey, T> where T:class
|
|||||||
bool Exists(Expression<Func<T, bool>> expression);
|
bool Exists(Expression<Func<T, bool>> expression);
|
||||||
void SaveChanges();
|
void SaveChanges();
|
||||||
Task SaveChangesAsync();
|
Task SaveChangesAsync();
|
||||||
|
Task<IDbContextTransaction> BeginTransactionAsync();
|
||||||
|
|
||||||
}
|
}
|
||||||
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)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
}
|
||||||
22
0_Framework/InfraStructure/QueryableExtensions.cs
Normal file
22
0_Framework/InfraStructure/QueryableExtensions.cs
Normal file
@@ -0,0 +1,22 @@
|
|||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
|
||||||
|
namespace _0_Framework.InfraStructure;
|
||||||
|
|
||||||
|
public static class QueryableExtensions
|
||||||
|
{
|
||||||
|
public static IQueryable<T> ApplyPagination<T>(this IQueryable<T> query, int page, int pageSize)
|
||||||
|
{
|
||||||
|
if (page <= 0) page = 1;
|
||||||
|
if (pageSize <= 0) pageSize = 10;
|
||||||
|
|
||||||
|
return query.Skip((page - 1) * pageSize).Take(pageSize);
|
||||||
|
}
|
||||||
|
public static IEnumerable<T> ApplyPagination<T>(this IEnumerable<T> source, int page, int pageSize)
|
||||||
|
{
|
||||||
|
if (page <= 0) page = 1;
|
||||||
|
if (pageSize <= 0) pageSize = 10;
|
||||||
|
|
||||||
|
return source.Skip((page - 1) * pageSize).Take(pageSize);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -6,6 +6,7 @@ using System.Text;
|
|||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
using _0_Framework.Domain;
|
using _0_Framework.Domain;
|
||||||
using Microsoft.EntityFrameworkCore;
|
using Microsoft.EntityFrameworkCore;
|
||||||
|
using Microsoft.EntityFrameworkCore.Storage;
|
||||||
|
|
||||||
namespace _0_Framework.InfraStructure
|
namespace _0_Framework.InfraStructure
|
||||||
{
|
{
|
||||||
@@ -70,5 +71,10 @@ namespace _0_Framework.InfraStructure
|
|||||||
{
|
{
|
||||||
await _context.SaveChangesAsync();
|
await _context.SaveChangesAsync();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public async Task<IDbContextTransaction> BeginTransactionAsync()
|
||||||
|
{
|
||||||
|
return await _context.Database.BeginTransactionAsync();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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; }
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -259,7 +259,8 @@ public class AccountApplication : IAccountApplication
|
|||||||
var workshop = workshopList.First();
|
var workshop = workshopList.First();
|
||||||
authViewModel.WorkshopName = workshop.Name;
|
authViewModel.WorkshopName = workshop.Name;
|
||||||
authViewModel.WorkshopSlug = _passwordHasher.SlugHasher(workshop.Id);
|
authViewModel.WorkshopSlug = _passwordHasher.SlugHasher(workshop.Id);
|
||||||
}
|
authViewModel.WorkshopId = workshop.Id;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
_authHelper.Signin(authViewModel);
|
_authHelper.Signin(authViewModel);
|
||||||
@@ -308,7 +309,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();
|
||||||
|
|
||||||
@@ -317,6 +318,7 @@ public class AccountApplication : IAccountApplication
|
|||||||
var workshop = workshopList.First();
|
var workshop = workshopList.First();
|
||||||
authViewModel.WorkshopName = workshop.WorkshopName;
|
authViewModel.WorkshopName = workshop.WorkshopName;
|
||||||
authViewModel.WorkshopSlug = _passwordHasher.SlugHasher(workshop.WorkshopId);
|
authViewModel.WorkshopSlug = _passwordHasher.SlugHasher(workshop.WorkshopId);
|
||||||
|
authViewModel.WorkshopId = workshop.WorkshopId;
|
||||||
}
|
}
|
||||||
_authHelper.Signin(authViewModel);
|
_authHelper.Signin(authViewModel);
|
||||||
idAutoriz = 2;
|
idAutoriz = 2;
|
||||||
@@ -368,6 +370,7 @@ public class AccountApplication : IAccountApplication
|
|||||||
var workshop = workshopList.First();
|
var workshop = workshopList.First();
|
||||||
authViewModel.WorkshopName = workshop.Name;
|
authViewModel.WorkshopName = workshop.Name;
|
||||||
authViewModel.WorkshopSlug = _passwordHasher.SlugHasher(workshop.Id);
|
authViewModel.WorkshopSlug = _passwordHasher.SlugHasher(workshop.Id);
|
||||||
|
authViewModel.WorkshopId = workshop.Id;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -515,6 +518,7 @@ public class AccountApplication : IAccountApplication
|
|||||||
var workshop = authViewModel.WorkshopList.First();
|
var workshop = authViewModel.WorkshopList.First();
|
||||||
authViewModel.WorkshopSlug = _passwordHasher.SlugHasher(workshop.Id);
|
authViewModel.WorkshopSlug = _passwordHasher.SlugHasher(workshop.Id);
|
||||||
authViewModel.WorkshopName = workshop.Name;
|
authViewModel.WorkshopName = workshop.Name;
|
||||||
|
authViewModel.WorkshopId = workshop.Id;
|
||||||
}
|
}
|
||||||
_authHelper.Signin(authViewModel);
|
_authHelper.Signin(authViewModel);
|
||||||
return operation.Succcedded(2);
|
return operation.Succcedded(2);
|
||||||
@@ -627,7 +631,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,TimeSpan employeeMandatoryHours)
|
||||||
{
|
{
|
||||||
EmployeeFullName = employeeFullName;
|
EmployeeFullName = employeeFullName;
|
||||||
FathersName = fathersName;
|
FathersName = fathersName;
|
||||||
@@ -78,8 +87,13 @@ public class Checkout : EntityBase
|
|||||||
TotalDayOfLeaveCompute = totalDayOfLeaveCompute;
|
TotalDayOfLeaveCompute = totalDayOfLeaveCompute;
|
||||||
TotalDayOfYearsCompute = totalDayOfYearsCompute;
|
TotalDayOfYearsCompute = totalDayOfYearsCompute;
|
||||||
TotalDayOfBunosesCompute = totalDayOfBunosesCompute;
|
TotalDayOfBunosesCompute = totalDayOfBunosesCompute;
|
||||||
|
LoanInstallments = loanInstallments;
|
||||||
|
SalaryAids = salaryAids;
|
||||||
|
CheckoutRollCall = checkoutRollCall;
|
||||||
|
EmployeeMandatoryHours = employeeMandatoryHours;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public string EmployeeFullName { get; private set; }
|
public string EmployeeFullName { get; private set; }
|
||||||
public string IsActiveString { get; private set; }
|
public string IsActiveString { get; private set; }
|
||||||
public string Signature { get; private set; }
|
public string Signature { get; private set; }
|
||||||
@@ -181,7 +195,25 @@ public class Checkout : EntityBase
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
public string TotalDayOfBunosesCompute { get; private set; }
|
public string TotalDayOfBunosesCompute { get; private set; }
|
||||||
|
|
||||||
public Workshop Workshop { get; set; }
|
/// <summary>
|
||||||
|
/// دارای تداخل مبلغ است. این در زمانی اتفاق می افتد که فیش مبلغ آن تغییر کرده ولی به دلیل مسائل قانونی امکان صدور دوباره آن وجود ندارد
|
||||||
|
/// </summary>
|
||||||
|
public bool HasAmountConflict { get; private set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// ساعت موظفی پرسنل در ماه
|
||||||
|
/// </summary>
|
||||||
|
public TimeSpan EmployeeMandatoryHours { 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 +310,171 @@ 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 void SetAmountConflict(bool hasAmountConflict)
|
||||||
|
{
|
||||||
|
HasAmountConflict = hasAmountConflict;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void SetEmployeeMandatoryHours(TimeSpan employeeMandatoryHours)
|
||||||
|
{
|
||||||
|
EmployeeMandatoryHours = employeeMandatoryHours;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
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; }
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -18,11 +18,28 @@ public interface ICheckoutRepository : IRepository<long, Checkout>
|
|||||||
/// <param name="سال به صورت رشته عددی"></param>
|
/// <param name="سال به صورت رشته عددی"></param>
|
||||||
/// <param name="ماه بصورت رشته عددی"></param>
|
/// <param name="ماه بصورت رشته عددی"></param>
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
(bool hasChekout, double FamilyAlloance, double OverTimePay) HasCheckout(long workshopId, long employeId,
|
(bool hasChekout, double FamilyAlloance, double OverTimePay, double RotatingShift, double Nightwork, double Fridaywork, double YraesPay) HasCheckout(long workshopId, long employeId,
|
||||||
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
|
||||||
|
|
||||||
@@ -51,4 +78,6 @@ public interface ICheckoutRepository : IRepository<long, Checkout>
|
|||||||
long workshopId, DateTime start, DateTime end);
|
long workshopId, DateTime start, DateTime end);
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
|
Task<Checkout> GetByWorkshopIdEmployeeIdInDate(long workshopId, long employeeId, DateTime inDate);
|
||||||
}
|
}
|
||||||
@@ -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; }
|
||||||
|
}
|
||||||
@@ -10,6 +10,7 @@ namespace Company.Domain.ClassifiedSalaryAgg
|
|||||||
{
|
{
|
||||||
public class ClassifiedSalary : EntityBase
|
public class ClassifiedSalary : EntityBase
|
||||||
{
|
{
|
||||||
|
//test
|
||||||
public ClassifiedSalary(double group1, double group2, double group3, double group4, double group5, double group6, double group7, double group8, double group9, double group10, double group11, double group12, double group13, double group14, double group15, double group16, double group17, double group18, double group19, double group20, DateTime startDate, DateTime endDate, int year)
|
public ClassifiedSalary(double group1, double group2, double group3, double group4, double group5, double group6, double group7, double group8, double group9, double group10, double group11, double group12, double group13, double group14, double group15, double group16, double group17, double group18, double group19, double group20, DateTime startDate, DateTime endDate, int year)
|
||||||
{
|
{
|
||||||
Group1 = group1;
|
Group1 = group1;
|
||||||
|
|||||||
@@ -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,35 @@ public interface IPersonalContractingPartyRepository :IRepository<long, Personal
|
|||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// لیست طرف حساب ها
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="searchModel"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
Task<ICollection<ContractingPartyGetListViewModel>> GetList(ContractingPartyGetListSearchModel searchModel);
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// لیست طرف حساب برای سلکت لیست سرچ
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="search"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
Task<List<ContractingPartySelectListViewModel>> GetSelectList(string search,long id);
|
||||||
|
|
||||||
|
/// <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);
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -3,6 +3,7 @@ using System.Collections.Generic;
|
|||||||
using System.Security.Cryptography.X509Certificates;
|
using System.Security.Cryptography.X509Certificates;
|
||||||
using _0_Framework.Application;
|
using _0_Framework.Application;
|
||||||
using _0_Framework.Domain;
|
using _0_Framework.Domain;
|
||||||
|
using Company.Domain.ContractingPartyBankAccountsAgg;
|
||||||
using Company.Domain.empolyerAgg;
|
using Company.Domain.empolyerAgg;
|
||||||
using Company.Domain.RepresentativeAgg;
|
using Company.Domain.RepresentativeAgg;
|
||||||
|
|
||||||
@@ -83,6 +84,7 @@ public class PersonalContractingParty : EntityBase
|
|||||||
|
|
||||||
public List<Employer> Employers { get; private set; }
|
public List<Employer> Employers { get; private set; }
|
||||||
public Representative Representative { get; set; }
|
public Representative Representative { get; set; }
|
||||||
|
public List<ContractingPartyBankAccount> ContractingPartyBankAccounts { get; set; }
|
||||||
|
|
||||||
public PersonalContractingParty()
|
public PersonalContractingParty()
|
||||||
{
|
{
|
||||||
@@ -213,4 +215,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;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
@@ -0,0 +1,27 @@
|
|||||||
|
using _0_Framework.Domain;
|
||||||
|
using Company.Domain.ContarctingPartyAgg;
|
||||||
|
|
||||||
|
namespace Company.Domain.ContractingPartyBankAccountsAgg;
|
||||||
|
|
||||||
|
public class ContractingPartyBankAccount : EntityBase
|
||||||
|
{
|
||||||
|
public long ContractingPartyId { get; private set; }
|
||||||
|
|
||||||
|
public PersonalContractingParty ContractingParty { get; private set; }
|
||||||
|
public string CardNumber { get; private set; }
|
||||||
|
public string AccountHolderName { get; private set; }
|
||||||
|
public string AccountNumber { get; private set; }
|
||||||
|
public string IBan { get; private set; }
|
||||||
|
public bool IsAuth { get; private set; }
|
||||||
|
|
||||||
|
public ContractingPartyBankAccount(long contractingPartyId, string cardNumber, string accountHolderName,
|
||||||
|
string accountNumber, string iBan , bool isAuth)
|
||||||
|
{
|
||||||
|
ContractingPartyId = contractingPartyId;
|
||||||
|
CardNumber = cardNumber;
|
||||||
|
AccountHolderName = accountHolderName;
|
||||||
|
AccountNumber = accountNumber;
|
||||||
|
IBan = iBan;
|
||||||
|
IsAuth = isAuth;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,19 @@
|
|||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
using _0_Framework.Application;
|
||||||
|
using _0_Framework.Domain;
|
||||||
|
using CompanyManagment.App.Contracts.ContractingPartyBankAccounts;
|
||||||
|
|
||||||
|
namespace Company.Domain.ContractingPartyBankAccountsAgg;
|
||||||
|
|
||||||
|
public interface IContractingPartyBankAccountsRepository:IRepository<long,ContractingPartyBankAccount>
|
||||||
|
{
|
||||||
|
Task<GetContractingPartyBankAccountViewModel> GetList(ContractingPartyBankAccountSearchModel searchModel);
|
||||||
|
Task<List<string>> ContractingPartyOrAccountHolderNameSelectList(string search, string selected);
|
||||||
|
Task<List<string>> IBanSelectList(string search, string selected);
|
||||||
|
|
||||||
|
Task<List<string>> CardNumberSelectList(string search, string selected);
|
||||||
|
Task<List<string>> AccountNumberSelectList(string search, string selected);
|
||||||
|
Task<List<string>> GetAccountHolderNameSelectList(string search, string selected);
|
||||||
|
Task<List<string>> ContractingPartyNamesSelectList(string search, string selected);
|
||||||
|
}
|
||||||
@@ -374,6 +374,13 @@ public class CustomizeCheckout : EntityBase
|
|||||||
TotalPayment = TotalPayment - previousAmount + newAmount;
|
TotalPayment = TotalPayment - previousAmount + newAmount;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// آیا مغایرت مبلغ دارد
|
||||||
|
/// </summary>
|
||||||
|
public bool HasAmountConflict { get; private set; }
|
||||||
|
|
||||||
|
public void SetHasAmountConflict(bool hasConflict)
|
||||||
|
{
|
||||||
|
HasAmountConflict = hasConflict;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
@@ -377,4 +377,16 @@ public class CustomizeCheckoutTemp : EntityBase
|
|||||||
{
|
{
|
||||||
TotalPayment = TotalPayment - previousAmount + newAmount;
|
TotalPayment = TotalPayment - previousAmount + newAmount;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// آیا مغایرت مبلغ دارد
|
||||||
|
/// </summary>
|
||||||
|
public bool HasAmountConflict { get; private set; }
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
public void SetHasAmountConflict(bool hasConflict)
|
||||||
|
{
|
||||||
|
HasAmountConflict = hasConflict;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
@@ -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,long id);
|
||||||
|
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;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
|
using System.ComponentModel.DataAnnotations.Schema;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Text;
|
using System.Text;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
@@ -15,7 +16,7 @@ public class FinancialStatment : EntityBase
|
|||||||
{
|
{
|
||||||
ContractingPartyId = contractingPartyId;
|
ContractingPartyId = contractingPartyId;
|
||||||
ContractingPartyName = contractingPartyName;
|
ContractingPartyName = contractingPartyName;
|
||||||
|
PublicId = Guid.NewGuid();
|
||||||
}
|
}
|
||||||
|
|
||||||
public FinancialStatment()
|
public FinancialStatment()
|
||||||
@@ -24,9 +25,16 @@ public class FinancialStatment : EntityBase
|
|||||||
}
|
}
|
||||||
public long ContractingPartyId { get; private set; }
|
public long ContractingPartyId { get; private set; }
|
||||||
public string ContractingPartyName { get; private set; }
|
public string ContractingPartyName { get; private set; }
|
||||||
|
public Guid PublicId { get; private set; }
|
||||||
|
|
||||||
|
[NotMapped]
|
||||||
|
public string PublicIdStr => PublicId.ToString("N");
|
||||||
|
|
||||||
public List<FinancialTransaction> FinancialTransactionList { get; set; }
|
public List<FinancialTransaction> FinancialTransactionList { get; set; }
|
||||||
|
|
||||||
|
|
||||||
|
public void SetPublicId()
|
||||||
|
{
|
||||||
|
PublicId = Guid.NewGuid();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
@@ -3,14 +3,24 @@ 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;
|
||||||
using CompanyManagment.App.Contracts.FinancialStatment;
|
using CompanyManagment.App.Contracts.FinancialStatment;
|
||||||
|
using Microsoft.AspNetCore.Mvc;
|
||||||
|
|
||||||
namespace Company.Domain.FinancialStatmentAgg;
|
namespace Company.Domain.FinancialStatmentAgg;
|
||||||
|
|
||||||
public interface IFinancialStatmentRepository : IRepository<long, FinancialStatment>
|
public interface IFinancialStatmentRepository : IRepository<long, FinancialStatment>
|
||||||
{
|
{
|
||||||
|
|
||||||
|
[Obsolete("این متد منسوخ شده است. لطفاً از متد GetDetailsByContractingParty استفاده کنید.")]
|
||||||
FinancialStatmentViewModel GetDetailsByContractingPartyId(long contractingPartyId);
|
FinancialStatmentViewModel GetDetailsByContractingPartyId(long contractingPartyId);
|
||||||
List<FinancialStatmentViewModel> Search(FinancialStatmentSearchModel searchModel);
|
List<FinancialStatmentViewModel> Search(FinancialStatmentSearchModel searchModel);
|
||||||
|
Task<ClientFinancialStatementViewModel> GetClientFinancialStatement(long accountId,
|
||||||
|
FinancialStatementSearchModel searchModel);
|
||||||
|
|
||||||
|
Task<OperationResult<ClientFinancialStatementViewModel>> GetDetailsByPublicId(string publicId);
|
||||||
|
Task<GetFinancialStatementBalanceAmount> GetBalanceAmount(long id);
|
||||||
|
Task<double> GetClientDebtAmount(long accountId);
|
||||||
|
Task<FinancialStatmentDetailsByContractingPartyViewModel> GetDetailsByContractingParty(long contractingPartyId,FinancialStatementSearchModel searchModel);
|
||||||
}
|
}
|
||||||
@@ -3,6 +3,7 @@ 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;
|
||||||
using CompanyManagment.App.Contracts.FinancilTransaction;
|
using CompanyManagment.App.Contracts.FinancilTransaction;
|
||||||
|
|
||||||
@@ -13,4 +14,15 @@ public interface IFinancialTransactionRepository : IRepository<long, FinancialTr
|
|||||||
{
|
{
|
||||||
EditFinancialTransaction GetDetails(long id);
|
EditFinancialTransaction GetDetails(long id);
|
||||||
void RemoveFinancialTransaction(long id);
|
void RemoveFinancialTransaction(long id);
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// ایجاد بدهی استند حضور غیاب برای اکسل
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="contractingPartyId"></param>
|
||||||
|
/// <param name="transactionDate"></param>
|
||||||
|
/// <param name="debt"></param>
|
||||||
|
/// <param name="description"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
OperationResult CreateDebtFromExcel(long contractingPartyId, string transactionDate, double debt,
|
||||||
|
string description);
|
||||||
}
|
}
|
||||||
@@ -2,6 +2,7 @@
|
|||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
|
using _0_Framework.Application;
|
||||||
using _0_Framework.Domain;
|
using _0_Framework.Domain;
|
||||||
using CompanyManagment.App.Contracts.InstitutionContract;
|
using CompanyManagment.App.Contracts.InstitutionContract;
|
||||||
using CompanyManagment.App.Contracts.Workshop;
|
using CompanyManagment.App.Contracts.Workshop;
|
||||||
@@ -13,7 +14,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,11 +27,24 @@ 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);
|
||||||
|
|
||||||
int ArchiveCodeFinder(List<WorkshopViewModel> workshopViewModels);
|
int ArchiveCodeFinder(List<WorkshopViewModel> workshopViewModels);
|
||||||
InstitutionContract InstitutionContractByEmployerId(long employerId);
|
InstitutionContract InstitutionContractByEmployerId(long employerId);
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// ایجاد سند مالی حضور غیاب
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="now"></param>
|
||||||
|
/// <param name="endOfMonthGr"></param>
|
||||||
|
/// <param name="endOfMonth"></param>
|
||||||
|
/// <param name="description"></param>
|
||||||
|
void RollcallServiceCreateTransaction();
|
||||||
|
|
||||||
|
Task<PagedResult<GetInstitutionContractListItemsViewModel>> GetList(InstitutionContractListSearchModel searchModel);
|
||||||
|
Task<GetInstitutionContractListStatsViewModel> GetListStats(InstitutionContractListSearchModel searchModel);
|
||||||
}
|
}
|
||||||
@@ -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.PaymentInstrument;
|
||||||
|
|
||||||
|
namespace Company.Domain.PaymentInstrumentAgg;
|
||||||
|
|
||||||
|
public interface IPaymentInstrumentGroupRepository:IRepository<long,PaymentInstrumentGroup>
|
||||||
|
{
|
||||||
|
void Remove(PaymentInstrumentGroup paymentInstrumentGroup);
|
||||||
|
Task<List<PaymentInstrumentGroupsViewModel>> GetList();
|
||||||
|
}
|
||||||
@@ -0,0 +1,19 @@
|
|||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
using _0_Framework.Application;
|
||||||
|
using _0_Framework.Domain;
|
||||||
|
using CompanyManagment.App.Contracts.PaymentInstrument;
|
||||||
|
|
||||||
|
namespace Company.Domain.PaymentInstrumentAgg;
|
||||||
|
|
||||||
|
public interface IPaymentInstrumentRepository:IRepository<long,PaymentInstrument>
|
||||||
|
{
|
||||||
|
Task<GetPaymentInstrumentListViewModel> GetList(PaymentInstrumentSearchModel searchModel);
|
||||||
|
Task<List<PosTerminalSelectListViewModel>> GetPosTerminalSelectList(string search);
|
||||||
|
Task<List<string>> PosTerminalIdSelectList(string search, string selected);
|
||||||
|
Task<List<string>> IbanSelectList(string search, string selected);
|
||||||
|
Task<List<string>> AccountNumberSelectList(string search, string selected);
|
||||||
|
Task<List<string>> CardNumberSelectList(string search, string selected);
|
||||||
|
Task<List<string>> AccountHolderNameSelectList(string search, string selected);
|
||||||
|
|
||||||
|
}
|
||||||
52
Company.Domain/PaymentInstrumentAgg/PaymentInstrument.cs
Normal file
52
Company.Domain/PaymentInstrumentAgg/PaymentInstrument.cs
Normal file
@@ -0,0 +1,52 @@
|
|||||||
|
using _0_Framework.Domain;
|
||||||
|
using CompanyManagment.App.Contracts.PaymentInstrument;
|
||||||
|
|
||||||
|
namespace Company.Domain.PaymentInstrumentAgg;
|
||||||
|
|
||||||
|
public class PaymentInstrument:EntityBase
|
||||||
|
{
|
||||||
|
private PaymentInstrument(string cardNumber, string accountHolderName, string accountNumber,string iBan,bool isAuth,long paymentInstrumentGroupId)
|
||||||
|
{
|
||||||
|
CardNumber = cardNumber;
|
||||||
|
AccountHolderName = accountHolderName;
|
||||||
|
AccountNumber = accountNumber;
|
||||||
|
IBan = iBan;
|
||||||
|
IsAuth = isAuth;
|
||||||
|
PaymentInstrumentGroupId = paymentInstrumentGroupId;
|
||||||
|
Type = PaymentInstrumentType.BankAccount;
|
||||||
|
}
|
||||||
|
|
||||||
|
private PaymentInstrument(string posTerminalId , string description,long paymentInstrumentGroupId)
|
||||||
|
{
|
||||||
|
PosTerminalId = posTerminalId;
|
||||||
|
Description = description;
|
||||||
|
PaymentInstrumentGroupId = paymentInstrumentGroupId;
|
||||||
|
Type = PaymentInstrumentType.Pos;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static PaymentInstrument CreatePosType(string posTerminalId, string description, long paymentInstrumentGroupId)
|
||||||
|
{
|
||||||
|
return new PaymentInstrument(posTerminalId, description, paymentInstrumentGroupId);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static PaymentInstrument CreateBankAccount(string cardNumber, string accountHolderName, string accountNumber,
|
||||||
|
string iBan, bool isAuth, long paymentInstrumentGroupId)
|
||||||
|
{
|
||||||
|
return new PaymentInstrument(cardNumber, accountHolderName, accountNumber, iBan, isAuth, paymentInstrumentGroupId);
|
||||||
|
}
|
||||||
|
|
||||||
|
public string CardNumber { get; private set; }
|
||||||
|
public string AccountHolderName { get; private set; }
|
||||||
|
public string AccountNumber { get; private set; }
|
||||||
|
public string IBan { get; private set; }
|
||||||
|
|
||||||
|
public string PosTerminalId { get; private set; }
|
||||||
|
public string Description { get; set; }
|
||||||
|
|
||||||
|
public PaymentInstrumentType Type { get; private set; }
|
||||||
|
|
||||||
|
public bool IsAuth { get; private set; }
|
||||||
|
|
||||||
|
public long PaymentInstrumentGroupId { get; private set; }
|
||||||
|
public PaymentInstrumentGroup PaymentInstrumentGroup { get; private set; }
|
||||||
|
}
|
||||||
@@ -0,0 +1,28 @@
|
|||||||
|
using System.Collections.Generic;
|
||||||
|
using _0_Framework.Application;
|
||||||
|
using _0_Framework.Domain;
|
||||||
|
|
||||||
|
namespace Company.Domain.PaymentInstrumentAgg;
|
||||||
|
|
||||||
|
public class PaymentInstrumentGroup:EntityBase
|
||||||
|
{
|
||||||
|
public PaymentInstrumentGroup(string name)
|
||||||
|
{
|
||||||
|
Name = name;
|
||||||
|
IsActive = IsActive.True;
|
||||||
|
}
|
||||||
|
|
||||||
|
public string Name { get; private set; }
|
||||||
|
public IsActive IsActive { get; private set; }
|
||||||
|
public List<PaymentInstrument> PaymentInstruments { get; set; }
|
||||||
|
|
||||||
|
public void Edit(string name)
|
||||||
|
{
|
||||||
|
Name = name;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void DeActive()
|
||||||
|
{
|
||||||
|
IsActive = IsActive.False;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,14 @@
|
|||||||
|
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);
|
||||||
|
|
||||||
|
Task<PaymentTransactionDetailsViewModel> GetDetails(long id);
|
||||||
|
}
|
||||||
88
Company.Domain/PaymentTransactionAgg/PaymentTransaction.cs
Normal file
88
Company.Domain/PaymentTransactionAgg/PaymentTransaction.cs
Normal file
@@ -0,0 +1,88 @@
|
|||||||
|
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="amount">مبلغ تراکنش</param>
|
||||||
|
/// <param name="contractingPartyName"></param>
|
||||||
|
/// <param name="callBackUrl"></param>
|
||||||
|
public PaymentTransaction(long contractingPartyId,
|
||||||
|
double amount,
|
||||||
|
string contractingPartyName,string callBackUrl)
|
||||||
|
{
|
||||||
|
ContractingPartyId = contractingPartyId;
|
||||||
|
Status = PaymentTransactionStatus.Pending;
|
||||||
|
Amount = amount;
|
||||||
|
ContractingPartyName = contractingPartyName;
|
||||||
|
CallBackUrl = callBackUrl;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// تاریخ و زمان انجام پرداخت
|
||||||
|
/// </summary>
|
||||||
|
public DateTime TransactionDate { get; private set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// شناسه طرف حساب
|
||||||
|
/// </summary>
|
||||||
|
public long ContractingPartyId { get; private set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// نام طرف حساب
|
||||||
|
/// </summary>
|
||||||
|
public string ContractingPartyName { get; private set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// نام بانک
|
||||||
|
/// </summary>
|
||||||
|
public string BankName { get; private set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// شماره کارت
|
||||||
|
/// </summary>
|
||||||
|
public string CardNumber { get; private set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// وضعیت تراکنش پرداخت
|
||||||
|
/// </summary>
|
||||||
|
public PaymentTransactionStatus Status { get; private set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// مبلغ تراکنش
|
||||||
|
/// </summary>
|
||||||
|
public double Amount { get; private set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// شناسه یکتای تراکنش
|
||||||
|
/// </summary>
|
||||||
|
public string TransactionId { get; private set; }
|
||||||
|
|
||||||
|
public string CallBackUrl { get; private set; }
|
||||||
|
|
||||||
|
public void SetPaid(string cardNumber,string bankName)
|
||||||
|
{
|
||||||
|
Status = PaymentTransactionStatus.Success;
|
||||||
|
TransactionDate = DateTime.Now;
|
||||||
|
CardNumber = cardNumber;
|
||||||
|
BankName = bankName;
|
||||||
|
}
|
||||||
|
public void SetFailed()
|
||||||
|
{
|
||||||
|
Status = PaymentTransactionStatus.Failed;
|
||||||
|
TransactionDate = DateTime.Now;
|
||||||
|
}
|
||||||
|
public void SetTransactionId(string transactionId)
|
||||||
|
{
|
||||||
|
TransactionId = transactionId;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -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, bool totalLeaveCompute);
|
||||||
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);
|
||||||
}
|
}
|
||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user