Compare commits
746 Commits
ServiceAmo
...
Main
| Author | SHA1 | Date | |
|---|---|---|---|
| dd89e5a04d | |||
| c844867cab | |||
|
|
59d73d5ca8 | ||
|
|
ce146d9733 | ||
| cb3d4b711a | |||
| 779514f5c0 | |||
|
|
ec8dfe4799 | ||
| b69d450a3a | |||
| bc491eec18 | |||
| c980c627ba | |||
| 67910d2fa5 | |||
| 8cf960ebd7 | |||
| ad167ea1f4 | |||
| 9475c786d3 | |||
| db32b1e6ea | |||
| b30a8b0e4d | |||
| 0ba0043751 | |||
| 79a9d72b86 | |||
| dddc4b143a | |||
| 127d9f7a46 | |||
| a8cb226d20 | |||
| 793b10c6cc | |||
| ffe8fa67e2 | |||
| a0d2023a6c | |||
|
|
8ff6d8ecc0 | ||
|
|
c466b68c9a | ||
| 332f58de9b | |||
| db0047d3d3 | |||
|
|
2c305e1d7a | ||
|
|
da966e49c3 | ||
|
|
7d35a65f35 | ||
| ddeb6a7182 | |||
| 77b5c8168e | |||
|
|
1343d9a2a7 | ||
| d7731cd7ad | |||
| cd2c770a9f | |||
|
|
734d0ca692 | ||
|
|
d07a78a637 | ||
|
|
1ac73f9689 | ||
| c28bb46aaf | |||
|
|
d2d95b4fbe | ||
|
|
f067d5a7b4 | ||
|
|
fe8e94f121 | ||
|
|
c493718452 | ||
| dc56df5e0f | |||
| d6e60e2cab | |||
| fa4c39904a | |||
|
|
a14a78309e | ||
|
|
4ccade4c7a | ||
| 085d138bc5 | |||
|
|
6e74447ccb | ||
|
|
b65c33c43a | ||
| 0b1cc34008 | |||
| 3dace574ff | |||
| bf2a102a55 | |||
| 88744bd4cf | |||
| 0705823157 | |||
| 5942075dd6 | |||
| 61015ae5c1 | |||
| 57a5000124 | |||
|
|
734fd9ebca | ||
| 7cbb9eef69 | |||
|
|
add04f854e | ||
|
|
debb54bafc | ||
|
|
7a065e9d16 | ||
| 3bd20d528f | |||
| b850ab1206 | |||
| 33a2c0be95 | |||
| fedfc372d0 | |||
|
|
a2c1fd30bf | ||
| 170f30f162 | |||
| db26c29057 | |||
| 0e7787dd56 | |||
|
|
1e9f864c1e | ||
|
|
e2bab8c1ce | ||
|
|
3f23d1dac0 | ||
|
|
6f0a579c33 | ||
|
|
b088d3089d | ||
|
|
45b4690066 | ||
|
|
26517c20d8 | ||
|
|
7ce3224d69 | ||
|
|
5a9bfde922 | ||
|
|
64746fa3c3 | ||
|
|
bc3bc17a61 | ||
|
|
a678b92c39 | ||
|
|
4c513191b6 | ||
|
|
33ae28f0e5 | ||
|
|
2f45d519b9 | ||
| 179de86840 | |||
| 3840d89433 | |||
| e0d10510e0 | |||
| 23d42bd8f5 | |||
| 25aa76b16c | |||
| d6a9c5e87d | |||
|
|
34d336f43e | ||
|
|
6b81f383f6 | ||
|
|
54ff59de48 | ||
| 411363555f | |||
| a55492b16a | |||
|
|
faeb5e11a5 | ||
|
|
50b56d928d | ||
|
|
9f09b6af97 | ||
|
|
63e169b82d | ||
| 9596c8f8b6 | |||
|
|
7339eaaadf | ||
|
|
e5c96c8bcb | ||
| 8622f12f12 | |||
| a20a847065 | |||
| 258a809451 | |||
|
|
187b7406d2 | ||
|
|
c51bb90a2b | ||
|
|
6285c7320e | ||
|
|
17f117726e | ||
|
|
13fb6fec5d | ||
| 5bead0cc86 | |||
| 9bca1b81d6 | |||
| 9ff6b5cf56 | |||
|
|
bef21edf22 | ||
|
|
04642b7257 | ||
|
|
c151e2d3f7 | ||
|
|
1e36966767 | ||
| c1c9fe51cb | |||
|
|
0d2ac58bbb | ||
| 64693b2ca3 | |||
| 43ccb3a1dd | |||
| 0134111aba | |||
|
|
3cc7adae35 | ||
|
|
c97ea5356f | ||
| 64cb4baba9 | |||
| 03657b6848 | |||
| 69f4819bf6 | |||
|
|
1257e15b62 | ||
|
|
331fb24a99 | ||
| 3be1547137 | |||
|
|
1324baa9c7 | ||
| ce836476a1 | |||
| 15f1c938f7 | |||
| 7e563a0f01 | |||
|
|
48cc07bf2a | ||
| 900b4b3f4d | |||
|
|
be319f6286 | ||
|
|
d3dacceab1 | ||
| bdc6f95af8 | |||
| 7a73e69afa | |||
| a3fd3e6920 | |||
|
|
8db161f960 | ||
|
|
3bb16c02b4 | ||
| 025c59e695 | |||
|
|
7a79343b2f | ||
| 36ccd96352 | |||
| a7c97b22b4 | |||
| 4c143d6bbc | |||
| 0e5a0a16ac | |||
|
|
dfc392f07a | ||
| 88f54b6310 | |||
| a68b879e95 | |||
| 161f3a92a7 | |||
| 5a1ec104a1 | |||
|
|
7fc5ac7ccd | ||
|
|
5b6f967fca | ||
| d4694e7e1c | |||
|
|
3317bde6d6 | ||
| 4bde4ade2d | |||
|
|
5cd30e5910 | ||
| 5c3c9739d1 | |||
| bd12ff0506 | |||
|
|
d51e4c462a | ||
|
|
4463fdc177 | ||
|
|
2ce63d1e0f | ||
|
|
21302803b6 | ||
|
|
38603b2249 | ||
|
|
037723ef70 | ||
|
|
7bb507c841 | ||
|
|
bf03247f81 | ||
| cb2c6b9ad1 | |||
| 355ec72140 | |||
| 21b3467517 | |||
| e9d0efc52f | |||
| 301a8f06f4 | |||
| 63a3027a17 | |||
| b22aa86aea | |||
| f0feac9601 | |||
| 8faddedd46 | |||
|
|
12af5dcb56 | ||
| 1382305433 | |||
|
|
8ec13ffae1 | ||
|
|
5508d4e88f | ||
| 43abb74c61 | |||
| 73e6681baa | |||
| 90fa0ac8f8 | |||
| 90b2fd2eab | |||
| eb8352e8fc | |||
| 4c7599b568 | |||
| d179c90c48 | |||
|
|
ae2427473b | ||
|
|
2fc124bf6d | ||
|
|
068d34b4b4 | ||
|
|
1d88ca0fbb | ||
|
|
e2911dfc2a | ||
|
|
377f95561c | ||
|
|
cfb96d1277 | ||
|
|
b5c5be2cb6 | ||
| 8850328fd4 | |||
| b7172630e2 | |||
|
|
b66dc81688 | ||
|
|
f5c8888137 | ||
|
|
20ff66da2f | ||
|
|
4d7923936e | ||
| 0604514190 | |||
| 915f16c7c0 | |||
|
|
2e95846336 | ||
| ad91383e86 | |||
| 6281a024ca | |||
| 0ef4ead292 | |||
| b286923dfe | |||
|
|
532065e3a8 | ||
|
|
f7bfa37a77 | ||
| 18867b4929 | |||
| a9df0669c6 | |||
| 5c75316f40 | |||
| 8839b54dd3 | |||
| 87c3cebb60 | |||
| d9c431e20e | |||
| ff5180eb75 | |||
| a1c9335487 | |||
|
|
2746bf69ea | ||
|
|
77dbb50512 | ||
|
|
1c7e8824c7 | ||
| 20ece4886c | |||
| 0eff1b9a66 | |||
| 0d72392701 | |||
|
|
0d33d79620 | ||
|
|
e4355faffc | ||
| 8f6007835c | |||
| 05d860795e | |||
|
|
577fe5db76 | ||
| 607c0780b6 | |||
| 587fa40d81 | |||
| b741ab9ed2 | |||
| b6fde4903a | |||
| 0772604432 | |||
|
|
ec8333c715 | ||
|
|
8aa93e089a | ||
| 59891d1199 | |||
| 7cb39b1b92 | |||
|
|
5580d56874 | ||
|
|
423b49e6e7 | ||
|
|
0ab3052251 | ||
| 38027352d6 | |||
| 43562fb49c | |||
|
|
5202779d9f | ||
| 791c8f91b7 | |||
| 80a58f8cdc | |||
| c980354c6b | |||
| 7c611825a4 | |||
| 22a5564ba0 | |||
| ef49302f8a | |||
| d8d2c34de7 | |||
|
|
67a85735f0 | ||
|
|
bf46dfd1dc | ||
|
|
a1ed3ad648 | ||
|
|
3a343a19e1 | ||
|
|
e65852c829 | ||
|
|
35e6355069 | ||
| 8679abb1e7 | |||
| 7f1939390c | |||
| c8dddabdff | |||
| 6f076bdc77 | |||
|
|
07a4ce1f64 | ||
|
|
4de2e12ac5 | ||
| 380ed8f6b1 | |||
| 7423391003 | |||
|
|
23b65cfbfe | ||
| 572f66f905 | |||
|
|
7207172ce0 | ||
|
|
48b75d2baa | ||
| 048da40f3c | |||
| 140414b866 | |||
| 7ba85fe1aa | |||
| 4ade9e12a6 | |||
|
|
63edb33bf5 | ||
| dd7e816767 | |||
| 1deeff996f | |||
|
|
3280202644 | ||
| 1a334c22b8 | |||
|
|
a1bda5bc54 | ||
| c80be16807 | |||
| 2bea265989 | |||
| ef9b78b924 | |||
|
|
f6a285b6ea | ||
| 8ad296fe61 | |||
| 68b1f89ef0 | |||
| 18fe6a5c6a | |||
|
|
56fc69f99f | ||
|
|
823110ea74 | ||
| 061058cbeb | |||
| d6096b232d | |||
| 95d66c2d89 | |||
| 609daf4353 | |||
| a81e01ce2b | |||
| 6d5c032802 | |||
| 71c0cff03a | |||
| 2cd838a5e3 | |||
| c6ed46d8b7 | |||
| 3da7453ece | |||
|
|
9a591fabff | ||
| 9d09ef60f8 | |||
|
|
ebcb7530e0 | ||
|
|
9ff9b0be18 | ||
|
|
ceb328cfa7 | ||
| 0757ac7e74 | |||
| a9789023ac | |||
| 5a7d65427d | |||
| 8adb0f567c | |||
| 34bd7ba444 | |||
|
|
7aaf161718 | ||
|
|
2f408a6cc1 | ||
| 16b11a8bb8 | |||
|
|
3ef717583f | ||
|
|
dd5455d80a | ||
| 9360dcad71 | |||
| 1971252713 | |||
|
|
551f5a754c | ||
|
|
ba88a012ff | ||
| 02cc099104 | |||
|
|
e4c41bb704 | ||
|
|
dee55f8854 | ||
|
|
802c79812b | ||
| e2e7aa1989 | |||
| 43b124664e | |||
| b82e831991 | |||
|
|
44cbdbaa1c | ||
|
|
94466bbb27 | ||
| 931d41c446 | |||
|
|
9614e44003 | ||
| d2dd67343b | |||
|
|
f097be54aa | ||
| 3d2b5ff6bd | |||
| 209aa5912d | |||
| 5ba72e2281 | |||
| 340685a06c | |||
| b20a56df26 | |||
| 8d93fa4fc6 | |||
|
|
be4bc2c900 | ||
| 0b42546666 | |||
| a35a51370a | |||
| 8f10f7057c | |||
| 00b5066f6f | |||
| abd221cb55 | |||
| 33833a408c | |||
|
|
ef86c6d07d | ||
| c2fca9f9eb | |||
|
|
1b284b51b9 | ||
|
|
5b15596696 | ||
| a16c20440b | |||
| 1f365f3642 | |||
| 0bfcde6a3f | |||
| f290a71dd3 | |||
| 4ada29a98a | |||
| 0d0f643058 | |||
| 6f64ee1ce4 | |||
|
|
5ad5fdcca0 | ||
|
|
fb1601db77 | ||
| 582da511c6 | |||
|
|
b39b58b21e | ||
| 3340edcc17 | |||
|
|
2a3e733eb6 | ||
| 5d2a917168 | |||
| 4ab9f60932 | |||
| cbcd42db85 | |||
| 385a885c93 | |||
|
|
76aabc3a45 | ||
| a22dbd8811 | |||
| f99f199a77 | |||
| 9cfae54db3 | |||
| 287b31e356 | |||
|
|
3cdd5e7ac7 | ||
| de4e2de2e7 | |||
| d7dd91eaba | |||
|
|
d6e3c48770 | ||
|
|
946024d81e | ||
| 5f8232809a | |||
| 3c72311096 | |||
| 250d17eba2 | |||
| 5db8e7d319 | |||
|
|
3300f60845 | ||
|
|
7537cfe5b8 | ||
|
|
3c1bf7dff0 | ||
| 6909fcf715 | |||
| fe66ff5aa3 | |||
| ce305edac4 | |||
| a49b825ce9 | |||
| fb62523a23 | |||
|
|
e171a4749c | ||
| 9b6c0d4cc4 | |||
| f8126b4000 | |||
|
|
cf62d75f0e | ||
|
|
f93e59b77c | ||
|
|
8f37d9f388 | ||
| 8e72b56758 | |||
| a6e1251445 | |||
| 490a1a69d5 | |||
| 7e3ea39d5b | |||
| 66a6c411d6 | |||
|
|
b03a806dfb | ||
| 14ff0a2e59 | |||
| 58f695fe95 | |||
| b4ccacd37e | |||
| 1fef8e355a | |||
| 147621de34 | |||
| e7ce947342 | |||
| d663857de1 | |||
|
|
4d326b1983 | ||
| 796a13cdcc | |||
| aa37ca4b28 | |||
| 2b7871c582 | |||
| 9bbdff9bc6 | |||
| 45615684ed | |||
| 8f0c707647 | |||
| d11fdcf106 | |||
| eb9a3e52fe | |||
| a835663e5c | |||
| 94955ea1b4 | |||
| 16c1ae04a9 | |||
| 0bceed55d1 | |||
| 656bb49fab | |||
| 946e980324 | |||
| cf3f0564f9 | |||
| fb5b98bf25 | |||
| 93847e6aa8 | |||
| b329e40930 | |||
| 12318a6a51 | |||
|
|
6e34ba79e0 | ||
| 1e733f3f20 | |||
| 5f21b59cb3 | |||
| 836e721b6f | |||
| 8fca1f3a91 | |||
| e0ea5aec53 | |||
| 2feca1f7f8 | |||
|
|
43000bde7e | ||
|
|
0a7d80c2fe | ||
| 2984d2a3cf | |||
| bc6854f8a7 | |||
| 4f66270cb0 | |||
|
|
6b6ec79faa | ||
| 4e9cecbb74 | |||
| adf297455f | |||
|
|
1304a3e8ef | ||
|
|
57881af130 | ||
|
|
6154c2c7f5 | ||
|
|
647909319f | ||
|
|
d5b70d1545 | ||
| 4ed1907075 | |||
| 1d656a590f | |||
| efcf40eea8 | |||
|
|
d2acf59eba | ||
|
|
a33d7c019c | ||
|
|
d62b5ca155 | ||
|
|
18a4334d8a | ||
|
|
3139552217 | ||
| 84416fe1f5 | |||
|
|
8e6defb29e | ||
|
|
fe4e81a60c | ||
|
|
098233fd1b | ||
| 61062dba7b | |||
|
|
bd1c1fa814 | ||
| 5581e7e013 | |||
| d855684cd7 | |||
|
|
47d8f7156c | ||
| 9e5e8d8e5d | |||
| 0b704da21f | |||
|
|
8496b52013 | ||
| e8059f98d5 | |||
| 9eefdd8fd1 | |||
|
|
df5b820782 | ||
|
|
ed8f9558d6 | ||
|
|
5c1547dced | ||
|
|
c09321d89d | ||
| 219e64c0f7 | |||
| 60a1d1cd8e | |||
| b42217ed94 | |||
| 8b6786c09a | |||
| 45c5d20323 | |||
|
|
dc4c8e9a26 | ||
| 0721467abf | |||
| ad6f872145 | |||
| d22805892a | |||
| 4da496cab8 | |||
| aa0eae6c83 | |||
| 2159901614 | |||
|
|
4b40580658 | ||
|
|
8bc9e044ae | ||
|
|
0e7cb00a9f | ||
|
|
cddaf2f709 | ||
|
|
337cd40a4e | ||
| 7ce7854091 | |||
|
|
a98300cacd | ||
|
|
ba4c00c012 | ||
|
|
b3b3b14ebf | ||
|
|
ee486eb706 | ||
|
|
daded35ab1 | ||
|
|
ba778bb519 | ||
| 4c638cbdae | |||
|
|
27e8d302d9 | ||
|
|
54c67fe8f7 | ||
| 92e1d6de5c | |||
| c488f61a09 | |||
|
|
dc703fad3c | ||
| 54e5904951 | |||
|
|
a638913172 | ||
| a986212834 | |||
| 649242fc76 | |||
|
|
d254da1393 | ||
| ad4b0be033 | |||
| 733f39db9f | |||
| 94237434c5 | |||
| 2da8bc8a20 | |||
| 39a5918a11 | |||
| 8b217f6cd0 | |||
|
|
74bd802a3d | ||
| b58481a36f | |||
|
|
3fd17299f9 | ||
|
|
fc315cc908 | ||
|
|
abe07e1c4b | ||
|
|
6046f55ece | ||
| c60af8d248 | |||
| d80a36ec35 | |||
|
|
7b648b135e | ||
|
|
5998bd212f | ||
|
|
d77bffabdd | ||
| 4f0e5a34a4 | |||
| 5faa2062b9 | |||
|
|
57d13b9bed | ||
|
|
6d0a6085a5 | ||
|
|
69476f3f2d | ||
|
|
4bc65e500d | ||
| 2e274dd280 | |||
| 07587d162f | |||
| be7fad2cf5 | |||
| a79f9a28fb | |||
| 0d4b5774b6 | |||
| 30b4f52896 | |||
| 134466547e | |||
| a191968c15 | |||
|
|
59bbb7aae6 | ||
| d740c36dc6 | |||
|
|
a623044b93 | ||
|
|
89de3162de | ||
|
|
76408c48cf | ||
|
|
4ac51f24b5 | ||
|
|
132c8ac5a4 | ||
| b9e271de1a | |||
| e661bc2dcb | |||
|
|
f00fde4084 | ||
|
|
e8b3700cdf | ||
| 0ca35e3295 | |||
| ed121e9ade | |||
| 548aefb8e1 | |||
| a1736fa3cc | |||
| 62f6817640 | |||
| 1a91743916 | |||
|
|
dd68473150 | ||
|
|
72e3859d2c | ||
| 46d193b45e | |||
| 1bfe41418b | |||
| 6a446d5972 | |||
|
|
acec101c4c | ||
|
|
27edcc5f7b | ||
|
|
7d92321d1c | ||
|
|
19f78a230c | ||
| 0e91e6f287 | |||
| 9df56ee19b | |||
| 8750604d96 | |||
| f27ce460fd | |||
|
|
934019c6c6 | ||
|
|
21b69edf93 | ||
|
|
68b42c98d6 | ||
|
|
f13688ccb2 | ||
|
|
bb9074df34 | ||
| 1a6248f15d | |||
| 8e5d4c312e | |||
| a9511ffa82 | |||
| 6f3d6e986c | |||
| 18da3221d7 | |||
| 186cb95c70 | |||
| b1f9bc98ba | |||
| 93ee88ba46 | |||
| 4b39994de6 | |||
| 5c6af6184c | |||
| 0dd2dc7c43 | |||
| e81a3ea7aa | |||
| 20c00893b6 | |||
| b0d174a575 | |||
| 7d92ae6658 | |||
| 5de90be51e | |||
| a1ead80a42 | |||
| 293ea0f6f4 | |||
| 3ce4cf3966 | |||
| a121e62102 | |||
| 5d20238904 | |||
| 4b35c3e443 | |||
|
|
c8d6644116 | ||
|
|
fff5bb3706 | ||
|
|
74597c0ad5 | ||
|
|
cccccf084e | ||
| 54b3745276 | |||
| b50ad83144 | |||
| d2e832d52e | |||
| cdeba2009f | |||
| 65adbda73f | |||
|
|
c137c9e78e | ||
|
|
4801d593b7 | ||
|
|
582e140726 | ||
| ff04dff0ca | |||
|
|
c04089b68a | ||
|
|
d9ee96c057 | ||
| fc45e46502 | |||
| 8015e583bf | |||
| 524660d7b4 | |||
| c2d9d809f1 | |||
| b5d52feee4 | |||
| 4c58942e15 | |||
| edf8c8c92d | |||
|
|
8eaeefecc8 | ||
|
|
911c29ea6b | ||
| 8fc798746f | |||
| 3526fdbf2f | |||
|
|
9d0bb7df0e | ||
|
|
a1d0c3ba5b | ||
| 409fc0df96 | |||
| 7533bc821a | |||
|
|
ca520c7291 | ||
| 0a3bdb2720 | |||
| 1eb3b7d066 | |||
| bc3cb5b115 | |||
| c9f519d7ec | |||
| aabb53c6d2 | |||
|
|
0fe0c05e5c | ||
|
|
62349c0a54 | ||
|
|
cb08e11593 | ||
|
|
7eba632f1c | ||
| de37555db9 | |||
| 6102ec3be8 | |||
| aaea658e58 | |||
|
|
e704258c23 | ||
| ea153d17b7 | |||
| dce24e3849 | |||
| f112bab021 | |||
| 00ffb08e2e | |||
| 8b39eed7bb | |||
| 58e30eb297 | |||
| 07851ff7c8 | |||
| 0fbd5c9d3e | |||
| 8436f70aa0 | |||
|
|
17eb5832fe | ||
|
|
8b8b5c3e76 | ||
|
|
db761ceba8 | ||
| 58499d6837 | |||
| d2df27320f | |||
| f4c73a418b | |||
|
|
daf0a366ef | ||
| b36919e0b6 | |||
| 87d47fa0d9 | |||
| c7d4481a6d | |||
| 4b52d144e0 | |||
|
|
91b72fdf8f | ||
| 38184b8d1b | |||
| 90a1683047 | |||
|
|
f93991db96 | ||
|
|
bca3e1dd42 | ||
|
|
c7e22e4ca6 | ||
|
|
7386bd5750 | ||
|
|
5c8a521f8e | ||
|
|
22973fe47b | ||
|
|
48c83e648d | ||
| 36b60555f3 | |||
|
|
494b80c461 | ||
|
|
7cdb431d98 | ||
|
|
f7ae463544 | ||
|
|
1913147f89 | ||
|
|
77798eaccb | ||
|
|
f17c1f0d8e | ||
|
|
bd4f2d18f5 | ||
|
|
0bbed013d2 | ||
|
|
3455c8a786 | ||
|
|
9981116caa | ||
| 9cf8447a83 | |||
| e124a4d5d9 | |||
| 7b9e7881c6 | |||
|
|
10e7400611 | ||
| 379126c513 | |||
| d078feccf9 | |||
| fb2d67c069 | |||
| d1ac8e49ba | |||
| c596bf78f4 | |||
| c6a7e0a0bd | |||
| d0fa1b2f58 | |||
| c10ae17f8c | |||
| e612150f1d | |||
| f3c391582c | |||
| c13ad3a8a7 | |||
|
|
2803c34591 | ||
| f76a12d45c | |||
| 2d5efb62be | |||
| ef3338c648 | |||
| fcf2b38457 | |||
|
|
82bb932cfc | ||
|
|
82c2b641fe | ||
| 7b71bd36b1 | |||
| bdc142d577 | |||
| 62900a22a1 | |||
|
|
23c99e60d5 | ||
| f7b9389f55 | |||
| 1c2ff03c90 | |||
| e6977b29fc | |||
| 6e902011ca | |||
| 7cce903f6e | |||
| 4d6077c93d | |||
| 83c1985ad9 | |||
| e0c247d07b | |||
| 1a3558df52 | |||
| c36e81e263 | |||
|
|
490393acbc | ||
| d3cd7e5b3c | |||
| 818d88d859 | |||
| 1a70569a36 | |||
| 8d24339f04 | |||
| bea858d4e7 | |||
|
|
c6874b33cf | ||
|
|
596e21b712 | ||
|
|
e9c3176dfc | ||
|
|
4a956a1397 | ||
|
|
fc3053dd17 | ||
|
|
bb79380ce5 | ||
|
|
849369fea3 | ||
|
|
283f66ab32 | ||
|
|
abf00884a4 | ||
|
|
50718eda93 | ||
|
|
a3dc27f08e | ||
|
|
055ce2b2a7 | ||
|
|
8171e06965 | ||
|
|
bfa8688c38 | ||
|
|
66c903045f | ||
|
|
b245023dd2 | ||
|
|
8044d64d5e | ||
|
|
1ef86d5e9c |
28
.github/workflows/dotnet-developPublish.yml
vendored
28
.github/workflows/dotnet-developPublish.yml
vendored
@@ -19,30 +19,36 @@ jobs:
|
|||||||
- name: Setup .NET SDK
|
- name: Setup .NET SDK
|
||||||
uses: actions/setup-dotnet@v4
|
uses: actions/setup-dotnet@v4
|
||||||
with:
|
with:
|
||||||
dotnet-version: '8.0.x' # یا نسخه پروژهت
|
dotnet-version: '10.0.x'
|
||||||
|
|
||||||
- name: Restore dependencies
|
- name: Restore dependencies
|
||||||
run: dotnet restore
|
run: dotnet restore ServiceHost/ServiceHost.csproj
|
||||||
|
|
||||||
- name: Build
|
- name: Build
|
||||||
run: dotnet build --configuration Release
|
run: dotnet build ServiceHost/ServiceHost.csproj --configuration Release
|
||||||
|
|
||||||
- name: Publish
|
- name: Publish
|
||||||
run: dotnet publish --configuration Release --output ./publish /p:EnvironmentName=Development --no-build
|
run: dotnet publish ServiceHost/ServiceHost.csproj --configuration Release --output ./publish /p:EnvironmentName=Development --no-build
|
||||||
|
|
||||||
- name: Deploy to IIS via Web Deploy
|
- name: Deploy to IIS via Web Deploy
|
||||||
shell: powershell
|
shell: powershell
|
||||||
run: |
|
run: |
|
||||||
$publishFolder = Resolve-Path ./publish
|
$publishFolder = Resolve-Path ./publish
|
||||||
|
$server = $env:SERVER_HOST
|
||||||
|
$user = $env:DEPLOY_USER
|
||||||
|
$pass = $env:DEPLOY_PASSWORD
|
||||||
|
|
||||||
& "C:\Program Files\IIS\Microsoft Web Deploy V3\msdeploy.exe" `
|
& "C:\Program Files\IIS\Microsoft Web Deploy V3\msdeploy.exe" `
|
||||||
-verb:sync `
|
-verb:sync `
|
||||||
-source:contentPath="$publishFolder" `
|
-source:contentPath="$publishFolder" `
|
||||||
-dest:contentPath="dadmehrg",computerName="https://171.22.24.15:8172/msdeploy.axd?site=dadmehrg",userName="Administrator",password="R2rNpdnetP3j>q5b18",authType="Basic" `
|
-dest:contentPath="dadmehrg",computerName="https://${server}:8172/msdeploy.axd?site=dadmehrg",userName="$user",password="$pass",authType="Basic" `
|
||||||
-allowUntrusted `
|
-allowUntrusted `
|
||||||
-enableRule:AppOffline
|
-enableRule:AppOffline
|
||||||
|
-disableRule:DeleteRule `
|
||||||
|
-useChecksum `
|
||||||
|
-retryAttempts:3 `
|
||||||
|
-retryInterval:2000
|
||||||
|
|
||||||
|
env:
|
||||||
env:
|
SERVER_HOST: ${{ secrets.DEV_HOST }}
|
||||||
SERVER_HOST: your-server-ip-or-domain
|
DEPLOY_USER: ${{ secrets.DEV_USER }}
|
||||||
DEPLOY_USER: ${{ secrets.DEPLOY_USER }}
|
DEPLOY_PASSWORD: ${{ secrets.DEV_PASS }}
|
||||||
DEPLOY_PASSWORD: ${{ secrets.DEPLOY_PASSWORD }}
|
|
||||||
|
|||||||
10
.gitignore
vendored
10
.gitignore
vendored
@@ -362,3 +362,13 @@ MigrationBackup/
|
|||||||
# # Fody - auto-generated XML schema
|
# # Fody - auto-generated XML schema
|
||||||
# FodyWeavers.xsd
|
# FodyWeavers.xsd
|
||||||
.idea
|
.idea
|
||||||
|
/ServiceHost/appsettings.Development.json
|
||||||
|
/ServiceHost/appsettings.json
|
||||||
|
/ServiceHost/web.config
|
||||||
|
|
||||||
|
# Storage folder - ignore all uploaded files, thumbnails, and temporary files
|
||||||
|
ServiceHost/Storage
|
||||||
|
|
||||||
|
.env
|
||||||
|
.env.*
|
||||||
|
|
||||||
|
|||||||
@@ -21,6 +21,7 @@
|
|||||||
<PackageReference Include="MD.PersianDateTime.Standard" Version="2.6.0" />
|
<PackageReference Include="MD.PersianDateTime.Standard" Version="2.6.0" />
|
||||||
<PackageReference Include="Swashbuckle.AspNetCore.Annotations" Version="10.0.1" />
|
<PackageReference Include="Swashbuckle.AspNetCore.Annotations" Version="10.0.1" />
|
||||||
<PackageReference Include="System.Security.Cryptography.Xml" Version="10.0.1" />
|
<PackageReference Include="System.Security.Cryptography.Xml" Version="10.0.1" />
|
||||||
|
<!--<PackageReference Include="DNTPersianUtils.Core" Version="6.7.1" />-->
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
237
0_Framework/Application/ClassificationRangeOfGroupRate.cs
Normal file
237
0_Framework/Application/ClassificationRangeOfGroupRate.cs
Normal file
@@ -0,0 +1,237 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace _0_Framework.Application;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// دامنه امتیازات گروه های طبقه بندی مشاغل
|
||||||
|
/// </summary>
|
||||||
|
public static class ClassificationRangeOfGroupRate
|
||||||
|
{
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// دریافت فاصله امتیاز گروه
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="groupNo"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
public static ClassificationGroupRate GetGroupDistanceRate(string groupNo)
|
||||||
|
{
|
||||||
|
|
||||||
|
switch (groupNo)
|
||||||
|
{
|
||||||
|
case "1":
|
||||||
|
return new ClassificationGroupRate()
|
||||||
|
{
|
||||||
|
GroupNo = groupNo,
|
||||||
|
LowRate = 0,
|
||||||
|
HighRate = 80,
|
||||||
|
DistanceRate = 0,
|
||||||
|
};
|
||||||
|
break;
|
||||||
|
case "2":
|
||||||
|
return new ClassificationGroupRate()
|
||||||
|
{
|
||||||
|
GroupNo = groupNo,
|
||||||
|
LowRate = 81,
|
||||||
|
HighRate = 95,
|
||||||
|
DistanceRate = 15,
|
||||||
|
};
|
||||||
|
break;
|
||||||
|
case "3":
|
||||||
|
return new ClassificationGroupRate()
|
||||||
|
{
|
||||||
|
GroupNo = groupNo,
|
||||||
|
LowRate = 96,
|
||||||
|
HighRate = 110,
|
||||||
|
DistanceRate = 30, //فاصله سقف این گروه تا سقف گروه یک
|
||||||
|
};
|
||||||
|
break;
|
||||||
|
case "4":
|
||||||
|
return new ClassificationGroupRate()
|
||||||
|
{
|
||||||
|
GroupNo = groupNo,
|
||||||
|
LowRate = 111,
|
||||||
|
HighRate = 125,
|
||||||
|
DistanceRate = 45, //فاصله سقف این گروه تا سقف گروه یک
|
||||||
|
};
|
||||||
|
break;
|
||||||
|
case "5":
|
||||||
|
return new ClassificationGroupRate()
|
||||||
|
{
|
||||||
|
GroupNo = groupNo,
|
||||||
|
LowRate = 126,
|
||||||
|
HighRate = 145,
|
||||||
|
DistanceRate = 65, //فاصله سقف این گروه تا سقف گروه یک
|
||||||
|
};
|
||||||
|
break;
|
||||||
|
case "6":
|
||||||
|
return new ClassificationGroupRate()
|
||||||
|
{
|
||||||
|
GroupNo = groupNo,
|
||||||
|
LowRate = 146,
|
||||||
|
HighRate = 165,
|
||||||
|
DistanceRate = 85,
|
||||||
|
};
|
||||||
|
break;
|
||||||
|
case "7":
|
||||||
|
return new ClassificationGroupRate()
|
||||||
|
{
|
||||||
|
GroupNo = groupNo,
|
||||||
|
LowRate = 166,
|
||||||
|
HighRate = 185,
|
||||||
|
DistanceRate = 105,
|
||||||
|
};
|
||||||
|
break;
|
||||||
|
case "8":
|
||||||
|
return new ClassificationGroupRate()
|
||||||
|
{
|
||||||
|
GroupNo = groupNo,
|
||||||
|
LowRate = 186,
|
||||||
|
HighRate = 210,
|
||||||
|
DistanceRate = 130,
|
||||||
|
};
|
||||||
|
break;
|
||||||
|
case "9":
|
||||||
|
return new ClassificationGroupRate()
|
||||||
|
{
|
||||||
|
GroupNo = groupNo,
|
||||||
|
LowRate = 211,
|
||||||
|
HighRate = 235,
|
||||||
|
DistanceRate = 155,
|
||||||
|
};
|
||||||
|
break;
|
||||||
|
case "10":
|
||||||
|
return new ClassificationGroupRate()
|
||||||
|
{
|
||||||
|
GroupNo = groupNo,
|
||||||
|
LowRate = 236,
|
||||||
|
HighRate = 265,
|
||||||
|
DistanceRate = 185,
|
||||||
|
};
|
||||||
|
break;
|
||||||
|
case "11":
|
||||||
|
return new ClassificationGroupRate()
|
||||||
|
{
|
||||||
|
GroupNo = groupNo,
|
||||||
|
LowRate = 266,
|
||||||
|
HighRate = 295,
|
||||||
|
DistanceRate = 215,
|
||||||
|
};
|
||||||
|
break;
|
||||||
|
case "12":
|
||||||
|
return new ClassificationGroupRate()
|
||||||
|
{
|
||||||
|
GroupNo = groupNo,
|
||||||
|
LowRate = 296,
|
||||||
|
HighRate = 325,
|
||||||
|
DistanceRate = 245,
|
||||||
|
};
|
||||||
|
break;
|
||||||
|
case "13":
|
||||||
|
return new ClassificationGroupRate()
|
||||||
|
{
|
||||||
|
GroupNo = groupNo,
|
||||||
|
LowRate = 326,
|
||||||
|
HighRate = 365,
|
||||||
|
DistanceRate = 285,
|
||||||
|
};
|
||||||
|
break;
|
||||||
|
case "14":
|
||||||
|
return new ClassificationGroupRate()
|
||||||
|
{
|
||||||
|
GroupNo = groupNo,
|
||||||
|
LowRate = 366,
|
||||||
|
HighRate = 405,
|
||||||
|
DistanceRate = 325,
|
||||||
|
};
|
||||||
|
break;
|
||||||
|
case "15":
|
||||||
|
return new ClassificationGroupRate()
|
||||||
|
{
|
||||||
|
GroupNo = groupNo,
|
||||||
|
LowRate = 406,
|
||||||
|
HighRate = 445,
|
||||||
|
DistanceRate = 365,
|
||||||
|
};
|
||||||
|
break;
|
||||||
|
case "16":
|
||||||
|
return new ClassificationGroupRate()
|
||||||
|
{
|
||||||
|
GroupNo = groupNo,
|
||||||
|
LowRate = 446,
|
||||||
|
HighRate = 495,
|
||||||
|
DistanceRate = 415,
|
||||||
|
};
|
||||||
|
break;
|
||||||
|
case "17":
|
||||||
|
return new ClassificationGroupRate()
|
||||||
|
{
|
||||||
|
GroupNo = groupNo,
|
||||||
|
LowRate = 496,
|
||||||
|
HighRate = 545,
|
||||||
|
DistanceRate = 465,
|
||||||
|
};
|
||||||
|
break;
|
||||||
|
case "18":
|
||||||
|
return new ClassificationGroupRate()
|
||||||
|
{
|
||||||
|
GroupNo = groupNo,
|
||||||
|
LowRate = 546,
|
||||||
|
HighRate = 605,
|
||||||
|
DistanceRate = 525,
|
||||||
|
};
|
||||||
|
break;
|
||||||
|
case "19":
|
||||||
|
return new ClassificationGroupRate()
|
||||||
|
{
|
||||||
|
GroupNo = groupNo,
|
||||||
|
LowRate = 606,
|
||||||
|
HighRate = 665,
|
||||||
|
DistanceRate = 585,
|
||||||
|
};
|
||||||
|
break;
|
||||||
|
case "20":
|
||||||
|
return new ClassificationGroupRate()
|
||||||
|
{
|
||||||
|
GroupNo = groupNo,
|
||||||
|
LowRate = 666,
|
||||||
|
HighRate = 740,
|
||||||
|
DistanceRate = 660,
|
||||||
|
};
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
return new ClassificationGroupRate();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// دیتای امتیازات هر گرو
|
||||||
|
/// </summary>
|
||||||
|
public class ClassificationGroupRate
|
||||||
|
{
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// شمازه گروه
|
||||||
|
/// </summary>
|
||||||
|
public string GroupNo { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// امتیاز کف
|
||||||
|
/// </summary>
|
||||||
|
public int LowRate { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// امتیاز سقف
|
||||||
|
/// </summary>
|
||||||
|
public int HighRate { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// فاصله امتیاز
|
||||||
|
/// </summary>
|
||||||
|
public int DistanceRate { get; set; }
|
||||||
|
}
|
||||||
14
0_Framework/Application/Enums/TypeOfCoefficient.cs
Normal file
14
0_Framework/Application/Enums/TypeOfCoefficient.cs
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
namespace _0_Framework.Application.Enums;
|
||||||
|
|
||||||
|
public enum TypeOfCoefficient
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// ضریب ریالی طرح
|
||||||
|
/// </summary>
|
||||||
|
RialCoefficient,
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// ضریب ریالی اداره کار
|
||||||
|
/// </summary>
|
||||||
|
JobOrganization,
|
||||||
|
}
|
||||||
@@ -2,6 +2,8 @@
|
|||||||
|
|
||||||
public enum TypeOfSmsSetting
|
public enum TypeOfSmsSetting
|
||||||
{
|
{
|
||||||
|
//همه انواع پیامک
|
||||||
|
All = 0,
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// پیامک
|
/// پیامک
|
||||||
@@ -23,7 +25,7 @@ public enum TypeOfSmsSetting
|
|||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// پیامک
|
/// پیامک
|
||||||
/// هشدار اول
|
/// هشدار بدهی
|
||||||
/// </summary>
|
/// </summary>
|
||||||
Warning,
|
Warning,
|
||||||
|
|
||||||
@@ -38,4 +40,19 @@ public enum TypeOfSmsSetting
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
InstitutionContractConfirm,
|
InstitutionContractConfirm,
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// ارسال کد تاییدیه قرارداد مالی
|
||||||
|
/// </summary>
|
||||||
|
SendInstitutionContractConfirmationCode,
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// لینک تاییدیه ایجاد قرارداد مالی
|
||||||
|
/// </summary>
|
||||||
|
SendInstitutionContractConfirmationLink,
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// یادآور وظایف
|
||||||
|
/// </summary>
|
||||||
|
TaskReminder,
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -7,7 +7,7 @@ namespace _0_Framework.Application;
|
|||||||
public class PagedResult<T> where T : class
|
public class PagedResult<T> where T : class
|
||||||
{
|
{
|
||||||
public int TotalCount { get; set; }
|
public int TotalCount { get; set; }
|
||||||
public List<T> List { get; set; }
|
public List<T> List { get; set; } = [];
|
||||||
}
|
}
|
||||||
public class PagedResult<T,TMeta>:PagedResult<T> where T : class
|
public class PagedResult<T,TMeta>:PagedResult<T> where T : class
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -4,6 +4,7 @@ using System.Net.Http;
|
|||||||
using System.Net.Http.Json;
|
using System.Net.Http.Json;
|
||||||
using System.Threading;
|
using System.Threading;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
|
using Microsoft.Extensions.Logging;
|
||||||
using Newtonsoft.Json;
|
using Newtonsoft.Json;
|
||||||
|
|
||||||
namespace _0_Framework.Application.PaymentGateway;
|
namespace _0_Framework.Application.PaymentGateway;
|
||||||
@@ -12,18 +13,24 @@ public class SepehrPaymentGateway:IPaymentGateway
|
|||||||
{
|
{
|
||||||
private readonly HttpClient _httpClient;
|
private readonly HttpClient _httpClient;
|
||||||
private const long TerminalId = 99213700;
|
private const long TerminalId = 99213700;
|
||||||
|
private readonly ILogger<SepehrPaymentGateway> _logger;
|
||||||
|
|
||||||
public SepehrPaymentGateway(IHttpClientFactory httpClient)
|
public SepehrPaymentGateway(IHttpClientFactory httpClient, ILogger<SepehrPaymentGateway> logger)
|
||||||
{
|
{
|
||||||
|
_logger = logger;
|
||||||
_httpClient = httpClient.CreateClient();
|
_httpClient = httpClient.CreateClient();
|
||||||
_httpClient.BaseAddress = new Uri("https://sepehr.shaparak.ir/Rest/V1/PeymentApi/");
|
_httpClient.BaseAddress = new Uri("https://sepehr.shaparak.ir/Rest/V1/PeymentApi/");
|
||||||
}
|
}
|
||||||
|
|
||||||
public async Task<PaymentGatewayResponse> Create(CreatePaymentGatewayRequest command, CancellationToken cancellationToken = default)
|
public async Task<PaymentGatewayResponse> Create(CreatePaymentGatewayRequest command, CancellationToken cancellationToken = default)
|
||||||
{
|
{
|
||||||
|
_logger.LogInformation("Create payment started. TransactionId: {TransactionId}, Amount: {Amount}", command.TransactionId, command.Amount);
|
||||||
command.ExtraData ??= new Dictionary<string, object>();
|
command.ExtraData ??= new Dictionary<string, object>();
|
||||||
|
_logger.LogInformation("Initializing extra data with FinancialInvoiceId: {FinancialInvoiceId}", command.FinancialInvoiceId);
|
||||||
command.ExtraData.Add("financialInvoiceId", command.FinancialInvoiceId);
|
command.ExtraData.Add("financialInvoiceId", command.FinancialInvoiceId);
|
||||||
var extraData = JsonConvert.SerializeObject(command.ExtraData);
|
var extraData = JsonConvert.SerializeObject(command.ExtraData);
|
||||||
|
_logger.LogInformation("Serialized extra data payload: {Payload}", extraData);
|
||||||
|
|
||||||
var res = await _httpClient.PostAsJsonAsync("GetToken", new
|
var res = await _httpClient.PostAsJsonAsync("GetToken", new
|
||||||
{
|
{
|
||||||
TerminalID = TerminalId,
|
TerminalID = TerminalId,
|
||||||
@@ -32,21 +39,25 @@ public class SepehrPaymentGateway:IPaymentGateway
|
|||||||
callbackURL = command.CallBackUrl,
|
callbackURL = command.CallBackUrl,
|
||||||
payload = extraData
|
payload = extraData
|
||||||
}, cancellationToken: cancellationToken);
|
}, cancellationToken: cancellationToken);
|
||||||
|
_logger.LogInformation("Create payment request sent. StatusCode: {StatusCode}", res.StatusCode);
|
||||||
// خواندن محتوای پاسخ
|
// خواندن محتوای پاسخ
|
||||||
var content = await res.Content.ReadAsStringAsync(cancellationToken);
|
var content = await res.Content.ReadAsStringAsync(cancellationToken);
|
||||||
|
_logger.LogInformation("Create payment response content: {Content}", content);
|
||||||
|
|
||||||
// تبدیل پاسخ JSON به آبجکت داتنت
|
// تبدیل پاسخ JSON به آبجکت داتنت
|
||||||
var json = System.Text.Json.JsonDocument.Parse(content);
|
var json = System.Text.Json.JsonDocument.Parse(content);
|
||||||
|
_logger.LogInformation("Create payment JSON parsed successfully.");
|
||||||
|
|
||||||
// گرفتن مقدار AccessToken
|
// گرفتن مقدار AccessToken
|
||||||
var accessToken = json.RootElement.GetProperty("Accesstoken").ToString();
|
var accessToken = json.RootElement.GetProperty("Accesstoken").ToString();
|
||||||
var status = json.RootElement.GetProperty("Status").ToString();
|
var status = json.RootElement.GetProperty("Status").ToString();
|
||||||
|
_logger.LogInformation("Create payment parsed values. Status: {Status}, AccessToken: {AccessToken}", status, accessToken);
|
||||||
|
|
||||||
return new PaymentGatewayResponse
|
return new PaymentGatewayResponse
|
||||||
{
|
{
|
||||||
Status = status,
|
Status = status,
|
||||||
IsSuccess = status == "0",
|
IsSuccess = status == "0",
|
||||||
Token = accessToken
|
Token = accessToken,
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -55,21 +66,24 @@ public class SepehrPaymentGateway:IPaymentGateway
|
|||||||
|
|
||||||
public async Task<PaymentGatewayResponse> Verify(VerifyPaymentGateWayRequest command, CancellationToken cancellationToken = default)
|
public async Task<PaymentGatewayResponse> Verify(VerifyPaymentGateWayRequest command, CancellationToken cancellationToken = default)
|
||||||
{
|
{
|
||||||
|
_logger.LogInformation("Verify payment started. DigitalReceipt: {DigitalReceipt}", command.DigitalReceipt);
|
||||||
var res = await _httpClient.PostAsJsonAsync("Advice", new
|
var res = await _httpClient.PostAsJsonAsync("Advice", new
|
||||||
{
|
{
|
||||||
digitalreceipt = command.DigitalReceipt,
|
digitalreceipt = command.DigitalReceipt,
|
||||||
Tid = TerminalId,
|
Tid = TerminalId,
|
||||||
}, cancellationToken: cancellationToken);
|
}, cancellationToken: cancellationToken);
|
||||||
|
_logger.LogInformation("Verify payment request sent. StatusCode: {StatusCode}", res.StatusCode);
|
||||||
// خواندن محتوای پاسخ
|
// خواندن محتوای پاسخ
|
||||||
var content = await res.Content.ReadAsStringAsync(cancellationToken);
|
var content = await res.Content.ReadAsStringAsync(cancellationToken);
|
||||||
|
_logger.LogInformation("Verify payment response content: {Content}", content);
|
||||||
|
|
||||||
// تبدیل پاسخ JSON به آبجکت داتنت
|
// تبدیل پاسخ JSON به آبجکت داتنت
|
||||||
var json = System.Text.Json.JsonDocument.Parse(content);
|
var json = System.Text.Json.JsonDocument.Parse(content);
|
||||||
|
_logger.LogInformation("Verify payment JSON parsed successfully.");
|
||||||
|
|
||||||
var message = json.RootElement.GetProperty("Message").GetString();
|
var message = json.RootElement.GetProperty("Message").GetString();
|
||||||
var status = json.RootElement.GetProperty("Status").GetString();
|
var status = json.RootElement.GetProperty("Status").GetString();
|
||||||
|
_logger.LogInformation("Verify payment parsed values. Status: {Status}, Message: {Message}", status, message);
|
||||||
return new PaymentGatewayResponse
|
return new PaymentGatewayResponse
|
||||||
{
|
{
|
||||||
Status = status,
|
Status = status,
|
||||||
|
|||||||
@@ -18,3 +18,34 @@ public class ApiResultViewModel
|
|||||||
public string DeliveryColor { get; set; }
|
public string DeliveryColor { get; set; }
|
||||||
public string FullName { get; set; }
|
public string FullName { get; set; }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public class ApiReportDto
|
||||||
|
{
|
||||||
|
public int MessageId { get; set; }
|
||||||
|
|
||||||
|
public long Mobile { get; set; }
|
||||||
|
|
||||||
|
public string SendUnixTime { get; set; }
|
||||||
|
public string DeliveryState { get; set; }
|
||||||
|
public string DeliveryUnixTime { get; set; }
|
||||||
|
public string DeliveryColor { get; set; }
|
||||||
|
public string FullName { get; set; }
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public class SmsDetailsDto
|
||||||
|
{
|
||||||
|
|
||||||
|
|
||||||
|
public string MessageText { get; set; }
|
||||||
|
|
||||||
|
public long Mobile { get; set; }
|
||||||
|
|
||||||
|
public string SendUnixTime { get; set; }
|
||||||
|
public string DeliveryState { get; set; }
|
||||||
|
public string DeliveryUnixTime { get; set; }
|
||||||
|
public string DeliveryColor { get; set; }
|
||||||
|
public string FullName { get; set; }
|
||||||
|
|
||||||
|
}
|
||||||
@@ -16,9 +16,22 @@ public interface ISmsService
|
|||||||
/// <param name="code"></param>
|
/// <param name="code"></param>
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
Task<SentSmsViewModel> SendVerifyCodeToClient(string number, string code);
|
Task<SentSmsViewModel> SendVerifyCodeToClient(string number, string code);
|
||||||
bool SendAccountsInfo(string number,string fullName, string userName);
|
bool SendAccountsInfo(string number, string fullName, string userName);
|
||||||
Task<ApiResultViewModel> GetByMessageId(int messId);
|
Task<ApiResultViewModel> GetByMessageId(int messId);
|
||||||
Task<List<ApiResultViewModel>> GetApiResult(string startDate, string endDate);
|
Task<List<ApiResultViewModel>> GetApiResult(string startDate, string endDate);
|
||||||
|
|
||||||
|
#region ForApi
|
||||||
|
|
||||||
|
Task<List<ApiReportDto>> GetApiReport(string startDate, string endDate);
|
||||||
|
/// <summary>
|
||||||
|
/// دریافت جزئیات پیامک
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="messId"></param>
|
||||||
|
/// <param name="fullName"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
Task<SmsDetailsDto> GetSmsDetailsByMessageId(int messId, string fullName);
|
||||||
|
#endregion
|
||||||
|
|
||||||
string DeliveryStatus(byte? dv);
|
string DeliveryStatus(byte? dv);
|
||||||
string DeliveryColorStatus(byte? dv);
|
string DeliveryColorStatus(byte? dv);
|
||||||
string UnixTimeStampToDateTime(int? unixTimeStamp);
|
string UnixTimeStampToDateTime(int? unixTimeStamp);
|
||||||
@@ -64,6 +77,7 @@ public interface ISmsService
|
|||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// پیامک مسدودی طرف حساب
|
/// پیامک مسدودی طرف حساب
|
||||||
|
/// قراردادهای قدیم
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="number"></param>
|
/// <param name="number"></param>
|
||||||
/// <param name="fullname"></param>
|
/// <param name="fullname"></param>
|
||||||
@@ -74,6 +88,19 @@ public interface ISmsService
|
|||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
Task<(byte status, string message, int messaeId, bool isSucceded)> BlockMessage(string number, string fullname, string amount, string accountType, string id, string aprove);
|
Task<(byte status, string message, int messaeId, bool isSucceded)> BlockMessage(string number, string fullname, string amount, string accountType, string id, string aprove);
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// پیامک مسدودی طرف حساب
|
||||||
|
/// قرارداد های جدید
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="number"></param>
|
||||||
|
/// <param name="fullname"></param>
|
||||||
|
/// <param name="amount"></param>
|
||||||
|
/// <param name="code1"></param>
|
||||||
|
/// <param name="code2"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
Task<(byte status, string message, int messaeId, bool isSucceded)> BlockMessageForElectronicContract(string number,
|
||||||
|
string fullname,
|
||||||
|
string amount, string code1, string code2);
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
#region AlarmMessage
|
#region AlarmMessage
|
||||||
|
|||||||
@@ -31,12 +31,24 @@ public static class StaticWorkshopAccounts
|
|||||||
/// 381 - مهدی قربانی
|
/// 381 - مهدی قربانی
|
||||||
/// 392 - عمار حسن دوست
|
/// 392 - عمار حسن دوست
|
||||||
/// 20 - سمیرا الهی نیا
|
/// 20 - سمیرا الهی نیا
|
||||||
|
/// 322 - ماهان چمنی
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public static List<long> StaticAccountIds = [2, 3, 380, 381, 392, 20, 476];
|
public static List<long> StaticAccountIds = [2, 3, 380, 381, 392, 20, 476,322];
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// این تاریخ در جدول اکانت لفت ورک به این معنیست
|
/// این تاریخ در جدول اکانت لفت ورک به این معنیست
|
||||||
/// که کاربر همچنان به کارگاه دسترسی دارد
|
/// که کاربر همچنان به کارگاه دسترسی دارد
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public static DateTime ContinuesWorkingDate = new DateTime(2150, 1, 1);
|
public static DateTime ContinuesWorkingDate = new DateTime(2150, 1, 1);
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// لیستی آی دی نقش هایی که مسئول بیمه کارگاه هستند
|
||||||
|
/// 7 : بیمه ارشد
|
||||||
|
/// 8 : بیمه ساده
|
||||||
|
/// </summary>
|
||||||
|
public static List<long> InsuranceAccountsRoleIds = [7, 8];
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -33,6 +33,35 @@ public static class Tools
|
|||||||
public static string[] DayNames = { "شنبه", "یکشنبه", "دو شنبه", "سه شنبه", "چهار شنبه", "پنج شنبه", "جمعه" };
|
public static string[] DayNames = { "شنبه", "یکشنبه", "دو شنبه", "سه شنبه", "چهار شنبه", "پنج شنبه", "جمعه" };
|
||||||
public static string[] DayNamesG = { "یکشنبه", "دو شنبه", "سه شنبه", "چهار شنبه", "پنج شنبه", "جمعه", "شنبه" };
|
public static string[] DayNamesG = { "یکشنبه", "دو شنبه", "سه شنبه", "چهار شنبه", "پنج شنبه", "جمعه", "شنبه" };
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// نام ستون از جدول مزد سنوات طبثه بندی را میگیرد و دیتای داخل آن ستون را برمیگرداند
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="obj"></param>
|
||||||
|
/// <param name="propertyName"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
public static double? GetDynamicDouble(object obj, string propertyName)
|
||||||
|
{
|
||||||
|
if (obj == null || string.IsNullOrWhiteSpace(propertyName))
|
||||||
|
return null;
|
||||||
|
|
||||||
|
var propertyInfo = obj.GetType().GetProperty(propertyName);
|
||||||
|
if (propertyInfo == null)
|
||||||
|
return null;
|
||||||
|
|
||||||
|
var value = propertyInfo.GetValue(obj);
|
||||||
|
if (value == null)
|
||||||
|
return null;
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
return Convert.ToDouble(value);
|
||||||
|
}
|
||||||
|
catch
|
||||||
|
{
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
public static bool IsMobileValid(this string mobileNo)
|
public static bool IsMobileValid(this string mobileNo)
|
||||||
{
|
{
|
||||||
@@ -41,6 +70,33 @@ public static class Tools
|
|||||||
return Regex.IsMatch(mobileNo, "^((09))(\\d{9})$");
|
return Regex.IsMatch(mobileNo, "^((09))(\\d{9})$");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// متد رند کننده مبلغ
|
||||||
|
/// استفاده شده در بیمه
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="value"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
public static double GetRoundDoubleValue(double value)
|
||||||
|
{
|
||||||
|
string strValue = value.ToString();
|
||||||
|
if (strValue.IndexOf('.') > -1)
|
||||||
|
{
|
||||||
|
|
||||||
|
|
||||||
|
string a = strValue.Substring(strValue.IndexOf('.') + 1, 1);
|
||||||
|
if (int.Parse(a) > 5)
|
||||||
|
{
|
||||||
|
return (Math.Round(value, MidpointRounding.ToPositiveInfinity));
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
return (Math.Round(value, MidpointRounding.ToNegativeInfinity));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return value;
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// تاریخ شروع و تعداد ماه را میگیرد و تاریخ پایان قراردا را بر میگرداند
|
/// تاریخ شروع و تعداد ماه را میگیرد و تاریخ پایان قراردا را بر میگرداند
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@@ -445,6 +501,30 @@ public static class Tools
|
|||||||
|
|
||||||
return myMoney.ToString("N0", CultureInfo.CreateSpecificCulture("fa-ir"));
|
return myMoney.ToString("N0", CultureInfo.CreateSpecificCulture("fa-ir"));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// اگر مبلغ صفر باشد خط تیره برمیگرداند
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="myMoney"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
public static string ToMoneyCheckZero(this double myMoney)
|
||||||
|
{
|
||||||
|
if (myMoney == 0)
|
||||||
|
return "-";
|
||||||
|
return myMoney.ToString("N0", CultureInfo.CreateSpecificCulture("fa-ir"));
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// اگر مبلغ صفر یا نال باشد خط تیره برمیگرداند
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="myMoney"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
public static string ToMoneyCheckZeroNullable(this double? myMoney)
|
||||||
|
{
|
||||||
|
if (myMoney == 0 || myMoney == null)
|
||||||
|
return "-";
|
||||||
|
return myMoney?.ToString("N0", CultureInfo.CreateSpecificCulture("fa-ir"));
|
||||||
|
}
|
||||||
public static string ToMoneyNullable(this double? myMoney)
|
public static string ToMoneyNullable(this double? myMoney)
|
||||||
{
|
{
|
||||||
|
|
||||||
@@ -626,7 +706,115 @@ public static class Tools
|
|||||||
return y2;
|
return y2;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// تاریخ شمسی میگیرد و پایان ماه را به میلادی برمیگرداند
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="date"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
public static DateTime FindeEndOfMonthReturnGr(this string date)
|
||||||
|
{
|
||||||
|
string y2 = string.Empty;
|
||||||
|
var year = Convert.ToInt32(date.Substring(0, 4));
|
||||||
|
var month = Convert.ToInt32(date.Substring(5, 2));
|
||||||
|
var YearD = date.Substring(0, 4);
|
||||||
|
var MonthD = date.Substring(5, 2);
|
||||||
|
if (month <= 6)
|
||||||
|
{
|
||||||
|
y2 = $"{YearD}/{MonthD}/31";
|
||||||
|
}
|
||||||
|
else if (month > 6 && month < 12)
|
||||||
|
{
|
||||||
|
y2 = $"{YearD}/{MonthD}/30";
|
||||||
|
}
|
||||||
|
else if (month == 12)
|
||||||
|
{
|
||||||
|
switch (year)
|
||||||
|
{
|
||||||
|
case 1346:
|
||||||
|
y2 = $"{YearD}/{MonthD}/30";
|
||||||
|
break;
|
||||||
|
case 1350:
|
||||||
|
y2 = $"{YearD}/{MonthD}/30";
|
||||||
|
break;
|
||||||
|
case 1354:
|
||||||
|
y2 = $"{YearD}/{MonthD}/30";
|
||||||
|
break;
|
||||||
|
case 1358:
|
||||||
|
y2 = $"{YearD}/{MonthD}/30";
|
||||||
|
break;
|
||||||
|
case 1362:
|
||||||
|
y2 = $"{YearD}/{MonthD}/30";
|
||||||
|
break;
|
||||||
|
case 1366:
|
||||||
|
y2 = $"{YearD}/{MonthD}/30";
|
||||||
|
break;
|
||||||
|
case 1370:
|
||||||
|
y2 = $"{YearD}/{MonthD}/30";
|
||||||
|
break;
|
||||||
|
case 1375:
|
||||||
|
y2 = $"{YearD}/{MonthD}/30";
|
||||||
|
break;
|
||||||
|
case 1379:
|
||||||
|
y2 = $"{YearD}/{MonthD}/30";
|
||||||
|
break;
|
||||||
|
case 1383:
|
||||||
|
y2 = $"{YearD}/{MonthD}/30";
|
||||||
|
break;
|
||||||
|
case 1387:
|
||||||
|
y2 = $"{YearD}/{MonthD}/30";
|
||||||
|
break;
|
||||||
|
case 1391:
|
||||||
|
y2 = $"{YearD}/{MonthD}/30";
|
||||||
|
break;
|
||||||
|
case 1395:
|
||||||
|
y2 = $"{YearD}/{MonthD}/30";
|
||||||
|
break;
|
||||||
|
case 1399:
|
||||||
|
y2 = $"{YearD}/{MonthD}/30";
|
||||||
|
break;
|
||||||
|
case 1403:
|
||||||
|
y2 = $"{YearD}/{MonthD}/30";
|
||||||
|
break;
|
||||||
|
case 1408:
|
||||||
|
y2 = $"{YearD}/{MonthD}/30";
|
||||||
|
break;
|
||||||
|
case 1412:
|
||||||
|
y2 = $"{YearD}/{MonthD}/30";
|
||||||
|
break;
|
||||||
|
case 1416:
|
||||||
|
y2 = $"{YearD}/{MonthD}/30";
|
||||||
|
break;
|
||||||
|
case 1420:
|
||||||
|
y2 = $"{YearD}/{MonthD}/30";
|
||||||
|
break;
|
||||||
|
case 1424:
|
||||||
|
y2 = $"{YearD}/{MonthD}/30";
|
||||||
|
break;
|
||||||
|
case 1428:
|
||||||
|
y2 = $"{YearD}/{MonthD}/30";
|
||||||
|
break;
|
||||||
|
case 1432:
|
||||||
|
y2 = $"{YearD}/{MonthD}/30";
|
||||||
|
break;
|
||||||
|
case 1436:
|
||||||
|
y2 = $"{YearD}/{MonthD}/30";
|
||||||
|
break;
|
||||||
|
case 1441:
|
||||||
|
y2 = $"{YearD}/{MonthD}/30";
|
||||||
|
break;
|
||||||
|
case 1445:
|
||||||
|
y2 = $"{YearD}/{MonthD}/30";
|
||||||
|
break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
y2 = $"{YearD}/{MonthD}/29";
|
||||||
|
break;
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return y2.ToGeorgianDateTime();
|
||||||
|
}
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// تعداد روزهای سال را برمیگرداند
|
/// تعداد روزهای سال را برمیگرداند
|
||||||
/// اگر کبیسهد بود سال 366 روزه برمیگرداند
|
/// اگر کبیسهد بود سال 366 روزه برمیگرداند
|
||||||
|
|||||||
@@ -12,6 +12,7 @@ public interface IRepository<TKey, T> where T:class
|
|||||||
{
|
{
|
||||||
T Get(TKey id);
|
T Get(TKey id);
|
||||||
List<T> Get();
|
List<T> Get();
|
||||||
|
Task<List<T>> GetListByIdList(List<TKey> ids);
|
||||||
void Create(T entity);
|
void Create(T entity);
|
||||||
Task CreateAsync(T entity);
|
Task CreateAsync(T entity);
|
||||||
bool ExistsIgnoreQueryFilter(Expression<Func<T, bool>> expression);
|
bool ExistsIgnoreQueryFilter(Expression<Func<T, bool>> expression);
|
||||||
|
|||||||
@@ -24,9 +24,13 @@ public class CustomExceptionHandler : IExceptionHandler
|
|||||||
|
|
||||||
public async ValueTask<bool> TryHandleAsync(HttpContext context, Exception exception, CancellationToken cancellationToken)
|
public async ValueTask<bool> TryHandleAsync(HttpContext context, Exception exception, CancellationToken cancellationToken)
|
||||||
{
|
{
|
||||||
_logger.LogError(
|
_logger.LogError(exception,
|
||||||
"Error Message: {exceptionMessage}, Time of occurrence {time}",
|
"Error Message: {exceptionMessage}, Type: {exceptionType}, Time: {time}, Path: {path}, TraceId: {traceId}",
|
||||||
exception.Message, DateTime.UtcNow);
|
exception.Message,
|
||||||
|
exception.GetType().FullName,
|
||||||
|
DateTime.UtcNow,
|
||||||
|
context.Request.Path,
|
||||||
|
context.TraceIdentifier);
|
||||||
|
|
||||||
(string Detail, string Title, int StatusCode, Dictionary<string, object>? Extra) details = exception switch
|
(string Detail, string Title, int StatusCode, Dictionary<string, object>? Extra) details = exception switch
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -53,6 +53,11 @@ namespace _0_Framework.InfraStructure
|
|||||||
{
|
{
|
||||||
return _context.Set<T>().ToList();
|
return _context.Set<T>().ToList();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public async Task<List<T>> GetListByIdList(List<TKey> ids)
|
||||||
|
{
|
||||||
|
return await _context.Set<T>().Where(e => ids.Contains(EF.Property<TKey>(e, "id"))).ToListAsync();
|
||||||
|
}
|
||||||
public void Remove(T entity)
|
public void Remove(T entity)
|
||||||
{
|
{
|
||||||
_context.Set<T>().Remove(entity);
|
_context.Set<T>().Remove(entity);
|
||||||
|
|||||||
@@ -34,7 +34,7 @@ public interface IAccountApplication
|
|||||||
OperationResult DeActive(long id);
|
OperationResult DeActive(long id);
|
||||||
OperationResult DirectLogin(long id);
|
OperationResult DirectLogin(long id);
|
||||||
|
|
||||||
AccountLeftWorkViewModel WorkshopList(long accountId);
|
// AccountLeftWorkViewModel WorkshopList(long accountId);
|
||||||
OperationResult SaveWorkshopAccount(
|
OperationResult SaveWorkshopAccount(
|
||||||
List<WorkshopAccountlistViewModel> workshopAccountList,
|
List<WorkshopAccountlistViewModel> workshopAccountList,
|
||||||
string startDate,
|
string startDate,
|
||||||
@@ -75,7 +75,6 @@ public interface IAccountApplication
|
|||||||
void CameraLogin(CameraLoginRequest request);
|
void CameraLogin(CameraLoginRequest request);
|
||||||
|
|
||||||
Task<GetPmUserDto> GetPmUserAsync(long accountId);
|
Task<GetPmUserDto> GetPmUserAsync(long accountId);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public class CameraLoginRequest
|
public class CameraLoginRequest
|
||||||
|
|||||||
@@ -2,6 +2,7 @@
|
|||||||
|
|
||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
<TargetFramework>net10.0</TargetFramework>
|
<TargetFramework>net10.0</TargetFramework>
|
||||||
|
<NuGetAudit>false</NuGetAudit>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
|
|||||||
@@ -18,7 +18,6 @@ using System;
|
|||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
using Shared.Contracts.PmUser.Commands;
|
using Shared.Contracts.PmUser.Commands;
|
||||||
using Shared.Contracts.PmUser.Queries;
|
using Shared.Contracts.PmUser.Queries;
|
||||||
|
|
||||||
@@ -48,7 +47,13 @@ public class AccountApplication : IAccountApplication
|
|||||||
private readonly IPmUserCommandService _pmUserCommandService;
|
private readonly IPmUserCommandService _pmUserCommandService;
|
||||||
|
|
||||||
public AccountApplication(IAccountRepository accountRepository, IPasswordHasher passwordHasher,
|
public AccountApplication(IAccountRepository accountRepository, IPasswordHasher passwordHasher,
|
||||||
IFileUploader fileUploader, IAuthHelper authHelper, IRoleRepository roleRepository, IWorker worker, ISmsService smsService, ICameraAccountRepository cameraAccountRepository, IPositionRepository positionRepository, IAccountLeftworkRepository accountLeftworkRepository, IWorkshopRepository workshopRepository, ISubAccountRepository subAccountRepository, ISubAccountRoleRepository subAccountRoleRepository, IWorkshopSubAccountRepository workshopSubAccountRepository, ISubAccountPermissionSubtitle1Repository accountPermissionSubtitle1Repository, IUnitOfWork unitOfWork, IPmUserQueryService pmUserQueryService, IPmUserCommandService pmUserCommandService)
|
IFileUploader fileUploader, IAuthHelper authHelper, IRoleRepository roleRepository, IWorker worker,
|
||||||
|
ISmsService smsService, ICameraAccountRepository cameraAccountRepository,
|
||||||
|
IPositionRepository positionRepository, IAccountLeftworkRepository accountLeftworkRepository,
|
||||||
|
IWorkshopRepository workshopRepository, ISubAccountRepository subAccountRepository,
|
||||||
|
ISubAccountRoleRepository subAccountRoleRepository, IWorkshopSubAccountRepository workshopSubAccountRepository,
|
||||||
|
ISubAccountPermissionSubtitle1Repository accountPermissionSubtitle1Repository, IUnitOfWork unitOfWork,
|
||||||
|
IPmUserQueryService pmUserQueryService, IPmUserCommandService pmUserCommandService)
|
||||||
{
|
{
|
||||||
_authHelper = authHelper;
|
_authHelper = authHelper;
|
||||||
_roleRepository = roleRepository;
|
_roleRepository = roleRepository;
|
||||||
@@ -68,7 +73,6 @@ public class AccountApplication : IAccountApplication
|
|||||||
_fileUploader = fileUploader;
|
_fileUploader = fileUploader;
|
||||||
_passwordHasher = passwordHasher;
|
_passwordHasher = passwordHasher;
|
||||||
_accountRepository = accountRepository;
|
_accountRepository = accountRepository;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public OperationResult EditClient(EditClientAccount command)
|
public OperationResult EditClient(EditClientAccount command)
|
||||||
@@ -89,7 +93,8 @@ public class AccountApplication : IAccountApplication
|
|||||||
(x.Mobile == command.Mobile && x.id != command.Id)))
|
(x.Mobile == command.Mobile && x.id != command.Id)))
|
||||||
return opreation.Failed("شماره موبایل تکراری است");
|
return opreation.Failed("شماره موبایل تکراری است");
|
||||||
if (_accountRepository.Exists(x =>
|
if (_accountRepository.Exists(x =>
|
||||||
(x.NationalCode == command.NationalCode && !string.IsNullOrWhiteSpace(x.NationalCode) && x.id != command.Id)))
|
(x.NationalCode == command.NationalCode && !string.IsNullOrWhiteSpace(x.NationalCode) &&
|
||||||
|
x.id != command.Id)))
|
||||||
return opreation.Failed("کد ملی تکراری است");
|
return opreation.Failed("کد ملی تکراری است");
|
||||||
if (_accountRepository.Exists(x =>
|
if (_accountRepository.Exists(x =>
|
||||||
(x.Email == command.Email && !string.IsNullOrWhiteSpace(x.Email) && x.id != command.Id)))
|
(x.Email == command.Email && !string.IsNullOrWhiteSpace(x.Email) && x.id != command.Id)))
|
||||||
@@ -97,7 +102,8 @@ public class AccountApplication : IAccountApplication
|
|||||||
|
|
||||||
var path = $"profilePhotos";
|
var path = $"profilePhotos";
|
||||||
var picturePath = _fileUploader.Upload(command.ProfilePhoto, path);
|
var picturePath = _fileUploader.Upload(command.ProfilePhoto, path);
|
||||||
editAccount.EditClient(command.Fullname, command.Username, command.Mobile, picturePath, command.Email, command.NationalCode);
|
editAccount.EditClient(command.Fullname, command.Username, command.Mobile, picturePath, command.Email,
|
||||||
|
command.NationalCode);
|
||||||
_accountRepository.SaveChanges();
|
_accountRepository.SaveChanges();
|
||||||
return opreation.Succcedded();
|
return opreation.Succcedded();
|
||||||
}
|
}
|
||||||
@@ -142,8 +148,8 @@ public class AccountApplication : IAccountApplication
|
|||||||
if (_fileUploader != null)
|
if (_fileUploader != null)
|
||||||
{
|
{
|
||||||
picturePath = _fileUploader.Upload(command.ProfilePhoto, path);
|
picturePath = _fileUploader.Upload(command.ProfilePhoto, path);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
var account = new Account(command.Fullname, command.Username, password, command.Mobile, command.RoleId,
|
var account = new Account(command.Fullname, command.Username, password, command.Mobile, command.RoleId,
|
||||||
picturePath, roleName.Name, "true", "false");
|
picturePath, roleName.Name, "true", "false");
|
||||||
|
|
||||||
@@ -158,7 +164,8 @@ public class AccountApplication : IAccountApplication
|
|||||||
if (command.UserRoles == null)
|
if (command.UserRoles == null)
|
||||||
return operation.Failed("حداقل یک نقش برای کاربر مدیریت پروژه لازم است");
|
return operation.Failed("حداقل یک نقش برای کاربر مدیریت پروژه لازم است");
|
||||||
var pmUserRoles = command.UserRoles.Where(x => x > 0).ToList();
|
var pmUserRoles = command.UserRoles.Where(x => x > 0).ToList();
|
||||||
var createPm = await _pmUserCommandService.Create(new CreatePmUserDto(command.Fullname, command.Username, account.Password, command.Mobile,
|
var createPm = await _pmUserCommandService.Create(new CreatePmUserDto(command.Fullname, command.Username,
|
||||||
|
account.Password, command.Mobile,
|
||||||
null, account.id, pmUserRoles));
|
null, account.id, pmUserRoles));
|
||||||
if (!createPm.isSuccess)
|
if (!createPm.isSuccess)
|
||||||
{
|
{
|
||||||
@@ -167,7 +174,6 @@ public class AccountApplication : IAccountApplication
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
//var url = "api/user/create";
|
//var url = "api/user/create";
|
||||||
//var key = SecretKeys.ProgramManagerInternalApi;
|
//var key = SecretKeys.ProgramManagerInternalApi;
|
||||||
|
|
||||||
@@ -252,14 +258,14 @@ public class AccountApplication : IAccountApplication
|
|||||||
// $"api/user/{account.id}",
|
// $"api/user/{account.id}",
|
||||||
// key
|
// key
|
||||||
//);
|
//);
|
||||||
var userResult =await _pmUserQueryService.GetPmUserDataByAccountId(account.id);
|
var userResult = await _pmUserQueryService.GetPmUserDataByAccountId(account.id);
|
||||||
|
|
||||||
if (command.UserRoles == null)
|
if (command.UserRoles == null)
|
||||||
return operation.Failed("حداقل یک نقش برای کاربر مدیریت پروژه لازم است");
|
return operation.Failed("حداقل یک نقش برای کاربر مدیریت پروژه لازم است");
|
||||||
var pmUserRoles = command.UserRoles.Where(x => x > 0).ToList();
|
var pmUserRoles = command.UserRoles.Where(x => x > 0).ToList();
|
||||||
|
|
||||||
//اگر کاربر در پروگرام منیجر قبلا ایجاد شده
|
//اگر کاربر در پروگرام منیجر قبلا ایجاد شده
|
||||||
if (userResult.Id >0)
|
if (userResult.Id > 0)
|
||||||
{
|
{
|
||||||
if (!command.UserRoles.Any())
|
if (!command.UserRoles.Any())
|
||||||
{
|
{
|
||||||
@@ -267,7 +273,8 @@ public class AccountApplication : IAccountApplication
|
|||||||
return operation.Failed("حداقل یک نقش باید انتخاب شود");
|
return operation.Failed("حداقل یک نقش باید انتخاب شود");
|
||||||
}
|
}
|
||||||
|
|
||||||
var editPm =await _pmUserCommandService.Edit(new EditPmUserDto(command.Fullname, command.Username, command.Mobile, account.id, pmUserRoles,
|
var editPm = await _pmUserCommandService.Edit(new EditPmUserDto(command.Fullname, command.Username,
|
||||||
|
command.Mobile, account.id, pmUserRoles,
|
||||||
command.IsProgramManagerUser));
|
command.IsProgramManagerUser));
|
||||||
if (!editPm.isSuccess)
|
if (!editPm.isSuccess)
|
||||||
{
|
{
|
||||||
@@ -302,7 +309,6 @@ public class AccountApplication : IAccountApplication
|
|||||||
// _unitOfWork.RollbackAccountContext();
|
// _unitOfWork.RollbackAccountContext();
|
||||||
// return operation.Failed(response.Error);
|
// return operation.Failed(response.Error);
|
||||||
//}
|
//}
|
||||||
|
|
||||||
}
|
}
|
||||||
else //اگر کاربر قبلا ایجاد نشده
|
else //اگر کاربر قبلا ایجاد نشده
|
||||||
{
|
{
|
||||||
@@ -316,11 +322,8 @@ public class AccountApplication : IAccountApplication
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
var createPm = await _pmUserCommandService.Create(new CreatePmUserDto(command.Fullname,
|
||||||
|
command.Username, account.Password, command.Mobile,
|
||||||
|
|
||||||
|
|
||||||
var createPm = await _pmUserCommandService.Create(new CreatePmUserDto(command.Fullname, command.Username, account.Password, command.Mobile,
|
|
||||||
null, account.id, pmUserRoles));
|
null, account.id, pmUserRoles));
|
||||||
if (!createPm.isSuccess)
|
if (!createPm.isSuccess)
|
||||||
{
|
{
|
||||||
@@ -329,7 +332,6 @@ public class AccountApplication : IAccountApplication
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
//var parameters = new CreateProgramManagerUser(
|
//var parameters = new CreateProgramManagerUser(
|
||||||
// command.Fullname,
|
// command.Fullname,
|
||||||
// command.Username,
|
// command.Username,
|
||||||
@@ -362,7 +364,6 @@ public class AccountApplication : IAccountApplication
|
|||||||
// return operation.Failed(response.Error);
|
// return operation.Failed(response.Error);
|
||||||
//}
|
//}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
_unitOfWork.CommitAccountContext();
|
_unitOfWork.CommitAccountContext();
|
||||||
@@ -376,7 +377,6 @@ public class AccountApplication : IAccountApplication
|
|||||||
|
|
||||||
public OperationResult Login(Login command)
|
public OperationResult Login(Login command)
|
||||||
{
|
{
|
||||||
|
|
||||||
long idAutoriz = 0;
|
long idAutoriz = 0;
|
||||||
var operation = new OperationResult();
|
var operation = new OperationResult();
|
||||||
if (string.IsNullOrWhiteSpace(command.Password))
|
if (string.IsNullOrWhiteSpace(command.Password))
|
||||||
@@ -401,19 +401,25 @@ public class AccountApplication : IAccountApplication
|
|||||||
.Select(x => x.Code)
|
.Select(x => x.Code)
|
||||||
.ToList();
|
.ToList();
|
||||||
//PmPermission
|
//PmPermission
|
||||||
var PmUserData = _pmUserQueryService.GetPmUserDataByAccountId(account.id).GetAwaiter().GetResult();
|
var PmUserData = _pmUserQueryService.GetPmUserDataByAccountId(account.id)
|
||||||
if (PmUserData.AccountId > 0 && PmUserData.IsActive)
|
.GetAwaiter().GetResult();
|
||||||
|
long? pmUserId = null;
|
||||||
|
if (PmUserData != null)
|
||||||
{
|
{
|
||||||
|
if (PmUserData.AccountId > 0 && PmUserData.IsActive)
|
||||||
|
{
|
||||||
|
var pmUserPermissions =
|
||||||
|
PmUserData.RoleListDto != null
|
||||||
|
? PmUserData.RoleListDto
|
||||||
|
.SelectMany(x => x.Permissions)
|
||||||
|
.Where(p => p != 99)
|
||||||
|
.Distinct()
|
||||||
|
.ToList()
|
||||||
|
: new List<int>();
|
||||||
|
permissions.AddRange(pmUserPermissions);
|
||||||
|
}
|
||||||
|
|
||||||
var pmUserPermissions =
|
pmUserId = PmUserData.Id > 0 ? PmUserData.Id : null;
|
||||||
PmUserData.RoleListDto != null
|
|
||||||
? PmUserData.RoleListDto
|
|
||||||
.SelectMany(x => x.Permissions)
|
|
||||||
.Where(p => p != 99)
|
|
||||||
.Distinct()
|
|
||||||
.ToList()
|
|
||||||
: new List<int>();
|
|
||||||
permissions.AddRange(pmUserPermissions);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -426,24 +432,25 @@ public class AccountApplication : IAccountApplication
|
|||||||
{
|
{
|
||||||
positionValue = null;
|
positionValue = null;
|
||||||
}
|
}
|
||||||
var pmUserId = PmUserData.AccountId > 0 ? PmUserData.AccountId : null;
|
|
||||||
var authViewModel = new AuthViewModel(account.id, account.RoleId, account.Fullname
|
var authViewModel = new AuthViewModel(account.id, account.RoleId, account.Fullname
|
||||||
, account.Username, account.Mobile, account.ProfilePhoto,
|
, account.Username, account.Mobile, account.ProfilePhoto,
|
||||||
permissions, account.RoleName, account.AdminAreaPermission,
|
permissions, account.RoleName, account.AdminAreaPermission,
|
||||||
account.ClientAriaPermission, positionValue,0,pmUserId);
|
account.ClientAriaPermission, positionValue, 0, pmUserId);
|
||||||
|
|
||||||
if (account.ClientAriaPermission == "true" && account.AdminAreaPermission == "false" &&
|
if (account.ClientAriaPermission == "true" && account.AdminAreaPermission == "false" &&
|
||||||
account.IsActiveString == "true")
|
account.IsActiveString == "true")
|
||||||
{
|
{
|
||||||
var clientPermissions = _accountPermissionSubtitle1Repository.GetAllPermissionCodes();
|
var clientPermissions = _accountPermissionSubtitle1Repository.GetAllPermissionCodes();
|
||||||
authViewModel.Permissions = clientPermissions;
|
authViewModel.Permissions = clientPermissions;
|
||||||
var workshopList = _workshopRepository.GetWorkshopsByClientAccountId(account.id).Select(x => new WorkshopClaim
|
var workshopList = _workshopRepository.GetWorkshopsByClientAccountId(account.id).Select(x =>
|
||||||
{
|
new WorkshopClaim
|
||||||
PersonnelCount = x.PersonnelCount,
|
{
|
||||||
Id = x.Id,
|
PersonnelCount = x.PersonnelCount,
|
||||||
Name = x.WorkshopFullName,
|
Id = x.Id,
|
||||||
Slug = _passwordHasher.SlugHasher(x.Id)
|
Name = x.WorkshopFullName,
|
||||||
}).OrderByDescending(x => x.PersonnelCount).ToList();
|
Slug = _passwordHasher.SlugHasher(x.Id)
|
||||||
|
}).OrderByDescending(x => x.PersonnelCount).ToList();
|
||||||
authViewModel.WorkshopList = workshopList;
|
authViewModel.WorkshopList = workshopList;
|
||||||
if (workshopList.Any())
|
if (workshopList.Any())
|
||||||
{
|
{
|
||||||
@@ -456,10 +463,14 @@ public class AccountApplication : IAccountApplication
|
|||||||
|
|
||||||
_authHelper.Signin(authViewModel);
|
_authHelper.Signin(authViewModel);
|
||||||
|
|
||||||
if ((account.AdminAreaPermission == "true" && account.ClientAriaPermission == "true" && account.IsActiveString == "true") || (account.AdminAreaPermission == "true" && account.ClientAriaPermission == "false" && account.IsActiveString == "true"))
|
if ((account.AdminAreaPermission == "true" && account.ClientAriaPermission == "true" &&
|
||||||
|
account.IsActiveString == "true") || (account.AdminAreaPermission == "true" &&
|
||||||
|
account.ClientAriaPermission == "false" &&
|
||||||
|
account.IsActiveString == "true"))
|
||||||
idAutoriz = 1;
|
idAutoriz = 1;
|
||||||
|
|
||||||
if (account.ClientAriaPermission == "true" && account.AdminAreaPermission == "false" && account.IsActiveString == "true")
|
if (account.ClientAriaPermission == "true" && account.AdminAreaPermission == "false" &&
|
||||||
|
account.IsActiveString == "true")
|
||||||
idAutoriz = 2;
|
idAutoriz = 2;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -471,7 +482,8 @@ public class AccountApplication : IAccountApplication
|
|||||||
|
|
||||||
var mobile = string.IsNullOrWhiteSpace(cameraAccount.Mobile) ? " " : cameraAccount.Mobile;
|
var mobile = string.IsNullOrWhiteSpace(cameraAccount.Mobile) ? " " : cameraAccount.Mobile;
|
||||||
var authViewModel = new CameraAuthViewModel(cameraAccount.id, cameraAccount.WorkshopId,
|
var authViewModel = new CameraAuthViewModel(cameraAccount.id, cameraAccount.WorkshopId,
|
||||||
cameraAccount.Username, mobile, cameraAccount.WorkshopName, cameraAccount.AccountId, cameraAccount.IsActiveSting);
|
cameraAccount.Username, mobile, cameraAccount.WorkshopName, cameraAccount.AccountId,
|
||||||
|
cameraAccount.IsActiveSting);
|
||||||
if (cameraAccount.IsActiveSting == "true")
|
if (cameraAccount.IsActiveSting == "true")
|
||||||
{
|
{
|
||||||
_authHelper.CameraSignIn(authViewModel);
|
_authHelper.CameraSignIn(authViewModel);
|
||||||
@@ -481,7 +493,6 @@ public class AccountApplication : IAccountApplication
|
|||||||
{
|
{
|
||||||
idAutoriz = 0;
|
idAutoriz = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (subAccount != null)
|
if (subAccount != null)
|
||||||
@@ -511,12 +522,14 @@ public class AccountApplication : IAccountApplication
|
|||||||
authViewModel.WorkshopSlug = _passwordHasher.SlugHasher(workshop.WorkshopId);
|
authViewModel.WorkshopSlug = _passwordHasher.SlugHasher(workshop.WorkshopId);
|
||||||
authViewModel.WorkshopId = workshop.WorkshopId;
|
authViewModel.WorkshopId = workshop.WorkshopId;
|
||||||
}
|
}
|
||||||
|
|
||||||
_authHelper.Signin(authViewModel);
|
_authHelper.Signin(authViewModel);
|
||||||
idAutoriz = 2;
|
idAutoriz = 2;
|
||||||
}
|
}
|
||||||
|
|
||||||
return operation.Succcedded(idAutoriz);
|
return operation.Succcedded(idAutoriz);
|
||||||
}
|
}
|
||||||
|
|
||||||
public OperationResult LoginWithMobile(long id)
|
public OperationResult LoginWithMobile(long id)
|
||||||
{
|
{
|
||||||
var operation = new OperationResult();
|
var operation = new OperationResult();
|
||||||
@@ -525,7 +538,6 @@ public class AccountApplication : IAccountApplication
|
|||||||
return operation.Failed(ApplicationMessages.WrongUserPass);
|
return operation.Failed(ApplicationMessages.WrongUserPass);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
var permissions = _roleRepository.Get(account.RoleId)
|
var permissions = _roleRepository.Get(account.RoleId)
|
||||||
.Permissions
|
.Permissions
|
||||||
.Select(x => x.Code)
|
.Select(x => x.Code)
|
||||||
@@ -541,20 +553,22 @@ public class AccountApplication : IAccountApplication
|
|||||||
}
|
}
|
||||||
|
|
||||||
var authViewModel = new AuthViewModel(account.id, account.RoleId, account.Fullname
|
var authViewModel = new AuthViewModel(account.id, account.RoleId, account.Fullname
|
||||||
, account.Username, account.Mobile, account.ProfilePhoto, permissions, account.RoleName, account.AdminAreaPermission, account.ClientAriaPermission, positionValue);
|
, account.Username, account.Mobile, account.ProfilePhoto, permissions, account.RoleName,
|
||||||
|
account.AdminAreaPermission, account.ClientAriaPermission, positionValue);
|
||||||
|
|
||||||
if (account.ClientAriaPermission == "true" && account.AdminAreaPermission == "false" &&
|
if (account.ClientAriaPermission == "true" && account.AdminAreaPermission == "false" &&
|
||||||
account.IsActiveString == "true")
|
account.IsActiveString == "true")
|
||||||
{
|
{
|
||||||
var clientPermissions = _accountPermissionSubtitle1Repository.GetAllPermissionCodes();
|
var clientPermissions = _accountPermissionSubtitle1Repository.GetAllPermissionCodes();
|
||||||
authViewModel.Permissions = clientPermissions;
|
authViewModel.Permissions = clientPermissions;
|
||||||
var workshopList = _workshopRepository.GetWorkshopsByClientAccountId(account.id).Select(x => new WorkshopClaim
|
var workshopList = _workshopRepository.GetWorkshopsByClientAccountId(account.id).Select(x =>
|
||||||
{
|
new WorkshopClaim
|
||||||
PersonnelCount = x.PersonnelCount,
|
{
|
||||||
Id = x.Id,
|
PersonnelCount = x.PersonnelCount,
|
||||||
Name = x.WorkshopFullName,
|
Id = x.Id,
|
||||||
Slug = _passwordHasher.SlugHasher(x.Id)
|
Name = x.WorkshopFullName,
|
||||||
}).OrderByDescending(x => x.PersonnelCount).ToList();
|
Slug = _passwordHasher.SlugHasher(x.Id)
|
||||||
|
}).OrderByDescending(x => x.PersonnelCount).ToList();
|
||||||
authViewModel.WorkshopList = workshopList;
|
authViewModel.WorkshopList = workshopList;
|
||||||
if (workshopList.Any())
|
if (workshopList.Any())
|
||||||
{
|
{
|
||||||
@@ -567,13 +581,15 @@ public class AccountApplication : IAccountApplication
|
|||||||
|
|
||||||
_authHelper.Signin(authViewModel);
|
_authHelper.Signin(authViewModel);
|
||||||
long idAutoriz = 0;
|
long idAutoriz = 0;
|
||||||
if (account.AdminAreaPermission == "true" && account.ClientAriaPermission == "true" || account.AdminAreaPermission == "true" && account.ClientAriaPermission == "false")
|
if (account.AdminAreaPermission == "true" && account.ClientAriaPermission == "true" ||
|
||||||
|
account.AdminAreaPermission == "true" && account.ClientAriaPermission == "false")
|
||||||
idAutoriz = 1;
|
idAutoriz = 1;
|
||||||
|
|
||||||
if (account.ClientAriaPermission == "true" && account.AdminAreaPermission == "false")
|
if (account.ClientAriaPermission == "true" && account.AdminAreaPermission == "false")
|
||||||
idAutoriz = 2;
|
idAutoriz = 2;
|
||||||
return operation.Succcedded(idAutoriz);
|
return operation.Succcedded(idAutoriz);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void Logout()
|
public void Logout()
|
||||||
{
|
{
|
||||||
_authHelper.SignOut();
|
_authHelper.SignOut();
|
||||||
@@ -609,6 +625,7 @@ public class AccountApplication : IAccountApplication
|
|||||||
_accountRepository.SaveChanges();
|
_accountRepository.SaveChanges();
|
||||||
return operation.Succcedded();
|
return operation.Succcedded();
|
||||||
}
|
}
|
||||||
|
|
||||||
public EditAccount GetByVerifyCode(string code, string phone)
|
public EditAccount GetByVerifyCode(string code, string phone)
|
||||||
{
|
{
|
||||||
return _accountRepository.GetByVerifyCode(code, phone);
|
return _accountRepository.GetByVerifyCode(code, phone);
|
||||||
@@ -637,7 +654,6 @@ public class AccountApplication : IAccountApplication
|
|||||||
await _accountRepository.RemoveCode(id);
|
await _accountRepository.RemoveCode(id);
|
||||||
|
|
||||||
return operation.Succcedded();
|
return operation.Succcedded();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -682,7 +698,6 @@ public class AccountApplication : IAccountApplication
|
|||||||
return operation.Failed("این اکانت وجود ندارد");
|
return operation.Failed("این اکانت وجود ندارد");
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
var permissions = _roleRepository.Get(account.RoleId)
|
var permissions = _roleRepository.Get(account.RoleId)
|
||||||
.Permissions
|
.Permissions
|
||||||
.Select(x => x.Code)
|
.Select(x => x.Code)
|
||||||
@@ -691,7 +706,8 @@ public class AccountApplication : IAccountApplication
|
|||||||
|
|
||||||
_authHelper.SignOut();
|
_authHelper.SignOut();
|
||||||
var authViewModel = new AuthViewModel(account.id, account.RoleId, account.Fullname
|
var authViewModel = new AuthViewModel(account.id, account.RoleId, account.Fullname
|
||||||
, account.Username, account.Mobile, account.ProfilePhoto, permissions, account.RoleName, "false", "true", null);
|
, account.Username, account.Mobile, account.ProfilePhoto, permissions, account.RoleName, "false", "true",
|
||||||
|
null);
|
||||||
var workshopList = _workshopRepository.GetWorkshopsByClientAccountId(account.id).Select(x => new WorkshopClaim
|
var workshopList = _workshopRepository.GetWorkshopsByClientAccountId(account.id).Select(x => new WorkshopClaim
|
||||||
{
|
{
|
||||||
PersonnelCount = x.PersonnelCount,
|
PersonnelCount = x.PersonnelCount,
|
||||||
@@ -711,9 +727,11 @@ public class AccountApplication : IAccountApplication
|
|||||||
authViewModel.WorkshopName = workshop.Name;
|
authViewModel.WorkshopName = workshop.Name;
|
||||||
authViewModel.WorkshopId = workshop.Id;
|
authViewModel.WorkshopId = workshop.Id;
|
||||||
}
|
}
|
||||||
|
|
||||||
_authHelper.Signin(authViewModel);
|
_authHelper.Signin(authViewModel);
|
||||||
return operation.Succcedded(2);
|
return operation.Succcedded(2);
|
||||||
}
|
}
|
||||||
|
|
||||||
public OperationResult DirectCameraLogin(long cameraAccountId)
|
public OperationResult DirectCameraLogin(long cameraAccountId)
|
||||||
{
|
{
|
||||||
var prAcc = _authHelper.CurrentAccountInfo();
|
var prAcc = _authHelper.CurrentAccountInfo();
|
||||||
@@ -723,47 +741,45 @@ public class AccountApplication : IAccountApplication
|
|||||||
return operation.Failed("این اکانت وجود ندارد");
|
return operation.Failed("این اکانت وجود ندارد");
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
_authHelper.SignOut();
|
_authHelper.SignOut();
|
||||||
|
|
||||||
|
|
||||||
var mobile = string.IsNullOrWhiteSpace(cameraAccount.Mobile) ? " " : cameraAccount.Mobile;
|
var mobile = string.IsNullOrWhiteSpace(cameraAccount.Mobile) ? " " : cameraAccount.Mobile;
|
||||||
var authViewModel = new CameraAuthViewModel(cameraAccount.id, cameraAccount.WorkshopId,
|
var authViewModel = new CameraAuthViewModel(cameraAccount.id, cameraAccount.WorkshopId,
|
||||||
cameraAccount.Username, mobile, cameraAccount.WorkshopName, cameraAccount.AccountId, cameraAccount.IsActiveSting);
|
cameraAccount.Username, mobile, cameraAccount.WorkshopName, cameraAccount.AccountId,
|
||||||
|
cameraAccount.IsActiveSting);
|
||||||
if (cameraAccount.IsActiveSting == "true")
|
if (cameraAccount.IsActiveSting == "true")
|
||||||
{
|
{
|
||||||
_authHelper.CameraSignIn(authViewModel);
|
_authHelper.CameraSignIn(authViewModel);
|
||||||
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
return operation.Failed("این اکانت غیر فعال شده است");
|
return operation.Failed("این اکانت غیر فعال شده است");
|
||||||
}
|
}
|
||||||
|
|
||||||
return operation.Succcedded(2);
|
return operation.Succcedded(2);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public AccountLeftWorkViewModel WorkshopList(long accountId)
|
// public AccountLeftWorkViewModel WorkshopList(long accountId)
|
||||||
{
|
// {
|
||||||
string fullname = this._accountRepository.GetById(accountId).Fullname;
|
// string fullname = this._accountRepository.GetById(accountId).Fullname;
|
||||||
List<WorkshopAccountlistViewModel> source = _accountLeftworkRepository.WorkshopList(accountId);
|
// List<WorkshopAccountlistViewModel> source = _accountLeftworkRepository.WorkshopList(accountId);
|
||||||
List<long> userWorkshopIds = source.Select(x => x.WorkshopId).ToList();
|
// List<long> userWorkshopIds = source.Select(x => x.WorkshopId).ToList();
|
||||||
List<WorkshopSelectList> allWorkshops = this._accountLeftworkRepository.GetAllWorkshops();
|
// List<WorkshopSelectList> allWorkshops = this._accountLeftworkRepository.GetAllWorkshops();
|
||||||
List<AccountViewModel> accountSelectList = this._accountRepository.GetAdminAccountSelectList();
|
// List<AccountViewModel> accountSelectList = this._accountRepository.GetAdminAccountSelectList();
|
||||||
(string StartWorkFa, string LeftWorkFa) byAccountId = this._accountLeftworkRepository.GetByAccountId(accountId);
|
// (string StartWorkFa, string LeftWorkFa) byAccountId = this._accountLeftworkRepository.GetByAccountId(accountId);
|
||||||
return new AccountLeftWorkViewModel()
|
// return new AccountLeftWorkViewModel()
|
||||||
{
|
// {
|
||||||
AccountId = accountId,
|
// AccountId = accountId,
|
||||||
AccountFullName = fullname,
|
// AccountFullName = fullname,
|
||||||
StartDateFa = byAccountId.StartWorkFa,
|
// StartDateFa = byAccountId.StartWorkFa,
|
||||||
LeftDateFa = byAccountId.LeftWorkFa,
|
// LeftDateFa = byAccountId.LeftWorkFa,
|
||||||
WorkshopAccountlist = source,
|
// WorkshopAccountlist = source,
|
||||||
WorkshopSelectList = new SelectList(allWorkshops.Where(x => !userWorkshopIds.Contains(x.Id)), "Id", "WorkshopFullName"),
|
// WorkshopSelectList = new SelectList(allWorkshops.Where(x => !userWorkshopIds.Contains(x.Id)), "Id", "WorkshopFullName"),
|
||||||
AccountSelectList = new SelectList(accountSelectList, "Id", "Fullname")
|
// AccountSelectList = new SelectList(accountSelectList, "Id", "Fullname")
|
||||||
};
|
// };
|
||||||
}
|
// }
|
||||||
|
|
||||||
public OperationResult SaveWorkshopAccount(
|
public OperationResult SaveWorkshopAccount(
|
||||||
List<WorkshopAccountlistViewModel> workshopAccountList,
|
List<WorkshopAccountlistViewModel> workshopAccountList,
|
||||||
@@ -773,10 +789,12 @@ public class AccountApplication : IAccountApplication
|
|||||||
{
|
{
|
||||||
return this._accountLeftworkRepository.SaveWorkshopAccount(workshopAccountList, startDate, leftDate, accountId);
|
return this._accountLeftworkRepository.SaveWorkshopAccount(workshopAccountList, startDate, leftDate, accountId);
|
||||||
}
|
}
|
||||||
|
|
||||||
public OperationResult CreateNewWorkshopAccount(long currentAccountId, long newAccountId)
|
public OperationResult CreateNewWorkshopAccount(long currentAccountId, long newAccountId)
|
||||||
{
|
{
|
||||||
return this._accountLeftworkRepository.CopyWorkshopToNewAccount(currentAccountId, newAccountId);
|
return this._accountLeftworkRepository.CopyWorkshopToNewAccount(currentAccountId, newAccountId);
|
||||||
}
|
}
|
||||||
|
|
||||||
#region Mahan
|
#region Mahan
|
||||||
|
|
||||||
public List<AccountViewModel> AccountsForAssign(long taskId)
|
public List<AccountViewModel> AccountsForAssign(long taskId)
|
||||||
@@ -790,6 +808,7 @@ public class AccountApplication : IAccountApplication
|
|||||||
{
|
{
|
||||||
return new List<AccountViewModel>();
|
return new List<AccountViewModel>();
|
||||||
}
|
}
|
||||||
|
|
||||||
return _accountRepository.GetAccountsByPositionId(positionId);
|
return _accountRepository.GetAccountsByPositionId(positionId);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -807,7 +826,6 @@ public class AccountApplication : IAccountApplication
|
|||||||
return operation.Failed("این اکانت وجود ندارد");
|
return operation.Failed("این اکانت وجود ندارد");
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
var permissions = _roleRepository.Get(account.RoleId)
|
var permissions = _roleRepository.Get(account.RoleId)
|
||||||
.Permissions
|
.Permissions
|
||||||
.Select(x => x.Code)
|
.Select(x => x.Code)
|
||||||
@@ -816,10 +834,10 @@ public class AccountApplication : IAccountApplication
|
|||||||
|
|
||||||
_authHelper.SignOut();
|
_authHelper.SignOut();
|
||||||
var authViewModel = new AuthViewModel(account.id, account.RoleId, account.Fullname
|
var authViewModel = new AuthViewModel(account.id, account.RoleId, account.Fullname
|
||||||
, account.Username, account.Mobile, account.ProfilePhoto, permissions, account.RoleName, account.AdminAreaPermission, account.ClientAriaPermission, account.Position.PositionValue);
|
, account.Username, account.Mobile, account.ProfilePhoto, permissions, account.RoleName,
|
||||||
|
account.AdminAreaPermission, account.ClientAriaPermission, account.Position.PositionValue);
|
||||||
_authHelper.Signin(authViewModel);
|
_authHelper.Signin(authViewModel);
|
||||||
return operation.Succcedded(2);
|
return operation.Succcedded(2);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public async Task<List<AccountSelectListViewModel>> GetAdminSelectList()
|
public async Task<List<AccountSelectListViewModel>> GetAdminSelectList()
|
||||||
@@ -828,8 +846,11 @@ public class AccountApplication : IAccountApplication
|
|||||||
}
|
}
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
#region Pooya
|
#region Pooya
|
||||||
public OperationResult IsPhoneNumberAndPasswordValid(long accountId, string phoneNumber, string password, string rePassword)
|
|
||||||
|
public OperationResult IsPhoneNumberAndPasswordValid(long accountId, string phoneNumber, string password,
|
||||||
|
string rePassword)
|
||||||
{
|
{
|
||||||
OperationResult op = new();
|
OperationResult op = new();
|
||||||
|
|
||||||
@@ -847,7 +868,8 @@ public class AccountApplication : IAccountApplication
|
|||||||
return op.Failed("رمز عبور نمی تواند کمتر از 8 کاراکتر باشد");
|
return op.Failed("رمز عبور نمی تواند کمتر از 8 کاراکتر باشد");
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((string.IsNullOrWhiteSpace(phoneNumber) || entity.Mobile == phoneNumber) && string.IsNullOrWhiteSpace(rePassword))
|
if ((string.IsNullOrWhiteSpace(phoneNumber) || entity.Mobile == phoneNumber) &&
|
||||||
|
string.IsNullOrWhiteSpace(rePassword))
|
||||||
return op.Failed("چیزی برای تغییر وجود ندارد");
|
return op.Failed("چیزی برای تغییر وجود ندارد");
|
||||||
|
|
||||||
|
|
||||||
@@ -873,20 +895,22 @@ public class AccountApplication : IAccountApplication
|
|||||||
var entity = _accountRepository.Get(command.AccountId);
|
var entity = _accountRepository.Get(command.AccountId);
|
||||||
if (entity == null)
|
if (entity == null)
|
||||||
return op.Failed(ApplicationMessages.RecordNotFound);
|
return op.Failed(ApplicationMessages.RecordNotFound);
|
||||||
var validationResult = IsPhoneNumberAndPasswordValid(command.AccountId, command.PhoneNumber, command.Password, command.RePassword);
|
var validationResult = IsPhoneNumberAndPasswordValid(command.AccountId, command.PhoneNumber, command.Password,
|
||||||
|
command.RePassword);
|
||||||
if (validationResult.IsSuccedded == false)
|
if (validationResult.IsSuccedded == false)
|
||||||
return validationResult;
|
return validationResult;
|
||||||
|
|
||||||
if (!string.IsNullOrWhiteSpace(command.RePassword))
|
if (!string.IsNullOrWhiteSpace(command.RePassword))
|
||||||
{
|
{
|
||||||
|
|
||||||
entity.ChangePassword(_passwordHasher.Hash(command.Password));
|
entity.ChangePassword(_passwordHasher.Hash(command.Password));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!string.IsNullOrWhiteSpace(command.PhoneNumber))
|
if (!string.IsNullOrWhiteSpace(command.PhoneNumber))
|
||||||
{
|
{
|
||||||
entity.Edit(entity.Fullname, entity.Username, command.PhoneNumber, entity.RoleId, entity.ProfilePhoto, entity.RoleName);
|
entity.Edit(entity.Fullname, entity.Username, command.PhoneNumber, entity.RoleId, entity.ProfilePhoto,
|
||||||
|
entity.RoleName);
|
||||||
}
|
}
|
||||||
|
|
||||||
_accountRepository.SaveChanges();
|
_accountRepository.SaveChanges();
|
||||||
return op.Succcedded();
|
return op.Succcedded();
|
||||||
}
|
}
|
||||||
@@ -982,6 +1006,7 @@ public class AccountApplication : IAccountApplication
|
|||||||
|
|
||||||
// return claimsResponse.Failed(ApplicationMessages.WrongUserPass);
|
// return claimsResponse.Failed(ApplicationMessages.WrongUserPass);
|
||||||
//}
|
//}
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -10,7 +10,7 @@ public interface IAccountLeftworkRepository : IRepository<long, AccountLeftWork>
|
|||||||
{
|
{
|
||||||
(string StartWorkFa, string LeftWorkFa) GetByAccountId(long accountId);
|
(string StartWorkFa, string LeftWorkFa) GetByAccountId(long accountId);
|
||||||
List<WorkshopAccountlistViewModel> WorkshopList(long accountId);
|
List<WorkshopAccountlistViewModel> WorkshopList(long accountId);
|
||||||
List<WorkshopSelectList> GetAllWorkshops();
|
// List<WorkshopSelectList> GetAllWorkshops();
|
||||||
|
|
||||||
OperationResult CopyWorkshopToNewAccount(long currentAccountId, long newAccountId);
|
OperationResult CopyWorkshopToNewAccount(long currentAccountId, long newAccountId);
|
||||||
|
|
||||||
|
|||||||
@@ -18,14 +18,13 @@ public class AccountLeftworkRepository : RepositoryBase<long, AccountLeftWork>,
|
|||||||
{
|
{
|
||||||
private readonly AccountContext _accountContext;
|
private readonly AccountContext _accountContext;
|
||||||
private readonly IWorkshopAccountRepository _workshopAccountRepository;
|
private readonly IWorkshopAccountRepository _workshopAccountRepository;
|
||||||
private readonly IWorkshopApplication _workshopApplication;
|
|
||||||
|
|
||||||
public AccountLeftworkRepository(AccountContext accountContext, IWorkshopAccountRepository workshopAccountRepository, IWorkshopApplication workshopApplication) : base(accountContext)
|
public AccountLeftworkRepository(AccountContext accountContext,
|
||||||
|
IWorkshopAccountRepository workshopAccountRepository) : base(accountContext)
|
||||||
{
|
{
|
||||||
_accountContext = accountContext;
|
_accountContext = accountContext;
|
||||||
_workshopAccountRepository = workshopAccountRepository;
|
_workshopAccountRepository = workshopAccountRepository;
|
||||||
_workshopApplication = workshopApplication;
|
}
|
||||||
}
|
|
||||||
|
|
||||||
public (string StartWorkFa, string LeftWorkFa) GetByAccountId(long accountId)
|
public (string StartWorkFa, string LeftWorkFa) GetByAccountId(long accountId)
|
||||||
{
|
{
|
||||||
@@ -58,14 +57,14 @@ public class AccountLeftworkRepository : RepositoryBase<long, AccountLeftWork>,
|
|||||||
}).ToList();
|
}).ToList();
|
||||||
}
|
}
|
||||||
|
|
||||||
public List<WorkshopSelectList> GetAllWorkshops()
|
// public List<WorkshopSelectList> GetAllWorkshops()
|
||||||
{
|
// {
|
||||||
return this._workshopApplication.GetWorkshopAll().Select(x => new WorkshopSelectList()
|
// return this._workshopApplication.GetWorkshopAll().Select(x => new WorkshopSelectList()
|
||||||
{
|
// {
|
||||||
Id = x.Id,
|
// Id = x.Id,
|
||||||
WorkshopFullName = x.WorkshopFullName
|
// WorkshopFullName = x.WorkshopFullName
|
||||||
}).ToList();
|
// }).ToList();
|
||||||
}
|
// }
|
||||||
|
|
||||||
public OperationResult CopyWorkshopToNewAccount(long currentAccountId, long newAccountId)
|
public OperationResult CopyWorkshopToNewAccount(long currentAccountId, long newAccountId)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -17,4 +17,9 @@
|
|||||||
<ProjectReference Include="..\..\WorkFlow\Infrastructure\WorkFlow.Infrastructure.Config\WorkFlow.Infrastructure.Config.csproj" />
|
<ProjectReference Include="..\..\WorkFlow\Infrastructure\WorkFlow.Infrastructure.Config\WorkFlow.Infrastructure.Config.csproj" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
|
<ItemGroup>
|
||||||
|
<PackageReference Include="Serilog.AspNetCore" Version="10.0.0" />
|
||||||
|
<PackageReference Include="Serilog.Sinks.File" Version="7.0.0" />
|
||||||
|
</ItemGroup>
|
||||||
|
|
||||||
</Project>
|
</Project>
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
|
|
||||||
using _0_Framework.Application;
|
using _0_Framework.Application;
|
||||||
|
using _0_Framework.Application.Enums;
|
||||||
using _0_Framework.Application.Sms;
|
using _0_Framework.Application.Sms;
|
||||||
using Company.Domain.ContarctingPartyAgg;
|
using Company.Domain.ContarctingPartyAgg;
|
||||||
using Company.Domain.InstitutionContractAgg;
|
using Company.Domain.InstitutionContractAgg;
|
||||||
@@ -12,22 +13,26 @@ public class JobSchedulerRegistrator
|
|||||||
private readonly IBackgroundJobClient _backgroundJobClient;
|
private readonly IBackgroundJobClient _backgroundJobClient;
|
||||||
private readonly SmsReminder _smsReminder;
|
private readonly SmsReminder _smsReminder;
|
||||||
private readonly IInstitutionContractRepository _institutionContractRepository;
|
private readonly IInstitutionContractRepository _institutionContractRepository;
|
||||||
|
private readonly IInstitutionContractSmsServiceRepository _institutionContractSmsServiceRepository;
|
||||||
private static DateTime? _lastRunCreateTransaction;
|
private static DateTime? _lastRunCreateTransaction;
|
||||||
private static DateTime? _lastRunSendMonthlySms;
|
private static DateTime? _lastRunSendMonthlySms;
|
||||||
private readonly ISmsService _smsService;
|
private readonly ISmsService _smsService;
|
||||||
|
private readonly ILogger<JobSchedulerRegistrator> _logger;
|
||||||
|
|
||||||
|
|
||||||
public JobSchedulerRegistrator(SmsReminder smsReminder, IBackgroundJobClient backgroundJobClient, IInstitutionContractRepository institutionContractRepository, ISmsService smsService)
|
public JobSchedulerRegistrator(SmsReminder smsReminder, IBackgroundJobClient backgroundJobClient, IInstitutionContractRepository institutionContractRepository, ISmsService smsService, ILogger<JobSchedulerRegistrator> logger, IInstitutionContractSmsServiceRepository institutionContractSmsServiceRepository)
|
||||||
{
|
{
|
||||||
_smsReminder = smsReminder;
|
_smsReminder = smsReminder;
|
||||||
_backgroundJobClient = backgroundJobClient;
|
_backgroundJobClient = backgroundJobClient;
|
||||||
_institutionContractRepository = institutionContractRepository;
|
_institutionContractRepository = institutionContractRepository;
|
||||||
_smsService = smsService;
|
_smsService = smsService;
|
||||||
|
_logger = logger;
|
||||||
|
_institutionContractSmsServiceRepository = institutionContractSmsServiceRepository;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void Register()
|
public void Register()
|
||||||
{
|
{
|
||||||
|
_logger.LogInformation("hangfire Started");
|
||||||
RecurringJob.AddOrUpdate(
|
RecurringJob.AddOrUpdate(
|
||||||
"InstitutionContract.CreateFinancialTransaction",
|
"InstitutionContract.CreateFinancialTransaction",
|
||||||
() => CreateFinancialTransaction(),
|
() => CreateFinancialTransaction(),
|
||||||
@@ -55,6 +60,44 @@ public class JobSchedulerRegistrator
|
|||||||
() => SendInstitutionContractConfirmSms(),
|
() => SendInstitutionContractConfirmSms(),
|
||||||
"*/1 * * * *" // هر 1 دقیقه یکبار چک کن
|
"*/1 * * * *" // هر 1 دقیقه یکبار چک کن
|
||||||
);
|
);
|
||||||
|
|
||||||
|
RecurringJob.AddOrUpdate(
|
||||||
|
"InstitutionContract.SendWarningSms",
|
||||||
|
() => SendWarningSms(),
|
||||||
|
"*/1 * * * *" // هر 1 دقیقه یکبار چک کن
|
||||||
|
);
|
||||||
|
|
||||||
|
RecurringJob.AddOrUpdate(
|
||||||
|
"InstitutionContract.SendLegalActionSms",
|
||||||
|
() => SendLegalActionSms(),
|
||||||
|
"*/1 * * * *" // هر 1 دقیقه یکبار چک کن
|
||||||
|
);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
RecurringJob.AddOrUpdate(
|
||||||
|
"InstitutionContract.Block",
|
||||||
|
() => Block(),
|
||||||
|
"*/30 * * * *" // هر 30 دقیقه یکبار چک کن
|
||||||
|
);
|
||||||
|
|
||||||
|
RecurringJob.AddOrUpdate(
|
||||||
|
"InstitutionContract.UnBlock",
|
||||||
|
() => UnBlock(),
|
||||||
|
"*/10 * * * *"
|
||||||
|
);
|
||||||
|
|
||||||
|
RecurringJob.AddOrUpdate(
|
||||||
|
"InstitutionContract.DeActiveInstitutionEndOfContract",
|
||||||
|
() => DeActiveInstitutionEndOfContract(),
|
||||||
|
"*/30 * * * *"
|
||||||
|
);
|
||||||
|
|
||||||
|
RecurringJob.AddOrUpdate(
|
||||||
|
"InstitutionContract.BlueDeActiveAfterZeroDebt",
|
||||||
|
() => BlueDeActiveAfterZeroDebt(),
|
||||||
|
"*/10 * * * *"
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -65,10 +108,10 @@ public class JobSchedulerRegistrator
|
|||||||
[DisableConcurrentExecution(timeoutInSeconds: 1200)]
|
[DisableConcurrentExecution(timeoutInSeconds: 1200)]
|
||||||
public async System.Threading.Tasks.Task CreateFinancialTransaction()
|
public async System.Threading.Tasks.Task CreateFinancialTransaction()
|
||||||
{
|
{
|
||||||
var now =DateTime.Now;
|
var now = DateTime.Now;
|
||||||
var endOfMonth = now.ToFarsi().FindeEndOfMonth();
|
var endOfMonth = now.ToFarsi().FindeEndOfMonth();
|
||||||
var endOfMonthGr = endOfMonth.ToGeorgianDateTime();
|
var endOfMonthGr = endOfMonth.ToGeorgianDateTime();
|
||||||
|
_logger.LogInformation("CreateFinancialTransaction job run");
|
||||||
if (now.Date == endOfMonthGr.Date && now.Hour >= 2 && now.Hour < 4 &&
|
if (now.Date == endOfMonthGr.Date && now.Hour >= 2 && now.Hour < 4 &&
|
||||||
now.Date != _lastRunCreateTransaction?.Date)
|
now.Date != _lastRunCreateTransaction?.Date)
|
||||||
{
|
{
|
||||||
@@ -87,7 +130,7 @@ public class JobSchedulerRegistrator
|
|||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
await _institutionContractRepository.CreateTransactionForInstitutionContracts(endNewGr, endNewFa, description);
|
await _institutionContractRepository.CreateTransactionForInstitutionContracts(endNewGr, endNewFa, description);
|
||||||
_lastRunCreateTransaction = now;
|
_lastRunCreateTransaction = now;
|
||||||
Console.WriteLine("CreateTransAction executed");
|
Console.WriteLine("CreateTransAction executed");
|
||||||
|
|
||||||
@@ -113,14 +156,14 @@ public class JobSchedulerRegistrator
|
|||||||
var now = DateTime.Now;
|
var now = DateTime.Now;
|
||||||
var endOfMonth = now.ToFarsi().FindeEndOfMonth();
|
var endOfMonth = now.ToFarsi().FindeEndOfMonth();
|
||||||
var endOfMonthGr = endOfMonth.ToGeorgianDateTime();
|
var endOfMonthGr = endOfMonth.ToGeorgianDateTime();
|
||||||
|
_logger.LogInformation("SendFirstDayOfMonthSms job run");
|
||||||
if (now.Date == endOfMonthGr.Date && now.Hour >= 10 && now.Hour < 11 &&
|
if (now.Date == endOfMonthGr.Date && now.Hour >= 10 && now.Hour < 11 &&
|
||||||
now.Date != _lastRunSendMonthlySms?.Date)
|
now.Date != _lastRunSendMonthlySms?.Date)
|
||||||
{
|
{
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
await _institutionContractRepository.SendMonthlySms(now);
|
await _institutionContractSmsServiceRepository.SendMonthlySms(now);
|
||||||
_lastRunSendMonthlySms = now;
|
_lastRunSendMonthlySms = now;
|
||||||
Console.WriteLine("Send Monthly sms executed");
|
Console.WriteLine("Send Monthly sms executed");
|
||||||
|
|
||||||
@@ -141,7 +184,8 @@ public class JobSchedulerRegistrator
|
|||||||
[DisableConcurrentExecution(timeoutInSeconds: 1200)]
|
[DisableConcurrentExecution(timeoutInSeconds: 1200)]
|
||||||
public async System.Threading.Tasks.Task SendReminderSms()
|
public async System.Threading.Tasks.Task SendReminderSms()
|
||||||
{
|
{
|
||||||
await _institutionContractRepository.SendReminderSmsForBackgroundTask();
|
_logger.LogInformation("SendReminderSms job run");
|
||||||
|
await _institutionContractSmsServiceRepository.SendReminderSmsForBackgroundTask();
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@@ -151,7 +195,8 @@ public class JobSchedulerRegistrator
|
|||||||
[DisableConcurrentExecution(timeoutInSeconds: 100)]
|
[DisableConcurrentExecution(timeoutInSeconds: 100)]
|
||||||
public async System.Threading.Tasks.Task SendBlockSms()
|
public async System.Threading.Tasks.Task SendBlockSms()
|
||||||
{
|
{
|
||||||
await _institutionContractRepository.SendBlockSmsForBackgroundTask();
|
_logger.LogInformation("SendBlockSms job run");
|
||||||
|
await _institutionContractSmsServiceRepository.SendBlockSmsForBackgroundTask();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -162,7 +207,98 @@ public class JobSchedulerRegistrator
|
|||||||
[DisableConcurrentExecution(timeoutInSeconds: 100)]
|
[DisableConcurrentExecution(timeoutInSeconds: 100)]
|
||||||
public async System.Threading.Tasks.Task SendInstitutionContractConfirmSms()
|
public async System.Threading.Tasks.Task SendInstitutionContractConfirmSms()
|
||||||
{
|
{
|
||||||
await _institutionContractRepository.SendInstitutionContractConfirmSmsTask();
|
_logger.LogInformation("SendInstitutionContractConfirmSms job run");
|
||||||
|
await _institutionContractSmsServiceRepository.SendInstitutionContractConfirmSmsTask();
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// ارسال پیامک هشدار
|
||||||
|
/// </summary>
|
||||||
|
/// <returns></returns>
|
||||||
|
[DisableConcurrentExecution(timeoutInSeconds: 100)]
|
||||||
|
public async System.Threading.Tasks.Task SendWarningSms()
|
||||||
|
{
|
||||||
|
_logger.LogInformation("SendWarningSms job run");
|
||||||
|
await _institutionContractSmsServiceRepository.SendWarningOrLegalActionSmsTask(TypeOfSmsSetting.Warning);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// پیامک اقدام قضایی
|
||||||
|
/// </summary>
|
||||||
|
/// <returns></returns>
|
||||||
|
[DisableConcurrentExecution(timeoutInSeconds: 100)]
|
||||||
|
public async System.Threading.Tasks.Task SendLegalActionSms()
|
||||||
|
{
|
||||||
|
_logger.LogInformation("SendWarningSms job run");
|
||||||
|
await _institutionContractSmsServiceRepository.SendWarningOrLegalActionSmsTask(TypeOfSmsSetting.LegalAction);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// بلاگ سازی
|
||||||
|
/// </summary>
|
||||||
|
/// <returns></returns>
|
||||||
|
[DisableConcurrentExecution(timeoutInSeconds: 100)]
|
||||||
|
public async System.Threading.Tasks.Task Block()
|
||||||
|
{
|
||||||
|
_logger.LogInformation("block job run");
|
||||||
|
var now = DateTime.Now;
|
||||||
|
var executeDate = now.ToFarsi().Substring(8, 2);
|
||||||
|
if (executeDate == "20")
|
||||||
|
{
|
||||||
|
if (now.Hour >= 9 && now.Hour < 10)
|
||||||
|
{
|
||||||
|
await _institutionContractSmsServiceRepository.Block(now);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// آنبلاک
|
||||||
|
/// </summary>
|
||||||
|
/// <returns></returns>
|
||||||
|
[DisableConcurrentExecution(timeoutInSeconds: 100)]
|
||||||
|
public async System.Threading.Tasks.Task UnBlock()
|
||||||
|
{
|
||||||
|
_logger.LogInformation("UnBlock job run");
|
||||||
|
|
||||||
|
await _institutionContractSmsServiceRepository.UnBlock();
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// غیر فعال سازی قراداد های پایان یافته
|
||||||
|
/// </summary>
|
||||||
|
/// <returns></returns>
|
||||||
|
[DisableConcurrentExecution(timeoutInSeconds: 100)]
|
||||||
|
public async System.Threading.Tasks.Task DeActiveInstitutionEndOfContract()
|
||||||
|
{
|
||||||
|
_logger.LogInformation("DeActiveInstitutionEndOfContract job run");
|
||||||
|
|
||||||
|
|
||||||
|
var now = DateTime.Now;
|
||||||
|
var executeDate = now.ToFarsi().Substring(8, 2);
|
||||||
|
if (executeDate == "01")
|
||||||
|
{
|
||||||
|
if (now.Hour >= 9 && now.Hour < 10)
|
||||||
|
{
|
||||||
|
await _institutionContractSmsServiceRepository.DeActiveInstitutionEndOfContract(now);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// غیرفعال سازس قرارداد های آبی که بدهی ندارند
|
||||||
|
/// </summary>
|
||||||
|
/// <returns></returns>
|
||||||
|
[DisableConcurrentExecution(timeoutInSeconds: 800)]
|
||||||
|
public async System.Threading.Tasks.Task BlueDeActiveAfterZeroDebt()
|
||||||
|
{
|
||||||
|
_logger.LogInformation("BlueDeActiveAfterZeroDebt job run");
|
||||||
|
await _institutionContractSmsServiceRepository.BlueDeActiveAfterZeroDebt();
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -17,9 +17,37 @@ using Microsoft.AspNetCore.Identity;
|
|||||||
using MongoDB.Driver;
|
using MongoDB.Driver;
|
||||||
using PersonalContractingParty.Config;
|
using PersonalContractingParty.Config;
|
||||||
using Query.Bootstrapper;
|
using Query.Bootstrapper;
|
||||||
|
using Serilog;
|
||||||
|
using Serilog.Events;
|
||||||
using Shared.Contracts.PmUser.Queries;
|
using Shared.Contracts.PmUser.Queries;
|
||||||
using WorkFlow.Infrastructure.Config;
|
using WorkFlow.Infrastructure.Config;
|
||||||
|
|
||||||
|
var logDirectory = @"C:\Logs\Hangfire\BackgroundInstitutionContract\";
|
||||||
|
|
||||||
|
if (!Directory.Exists(logDirectory))
|
||||||
|
{
|
||||||
|
Directory.CreateDirectory(logDirectory);
|
||||||
|
}
|
||||||
|
|
||||||
|
Log.Logger = new LoggerConfiguration()
|
||||||
|
//NO EF Core log
|
||||||
|
.MinimumLevel.Override("Microsoft.EntityFrameworkCore", LogEventLevel.Warning)
|
||||||
|
|
||||||
|
//NO DbCommand log
|
||||||
|
.MinimumLevel.Override("Microsoft.EntityFrameworkCore.Database.Command", LogEventLevel.Warning)
|
||||||
|
|
||||||
|
//NO Microsoft Public log
|
||||||
|
.MinimumLevel.Override("Microsoft", LogEventLevel.Warning)
|
||||||
|
//.MinimumLevel.Information()
|
||||||
|
.WriteTo.File(
|
||||||
|
path: Path.Combine(logDirectory, "institution-contract-log-.txt"),
|
||||||
|
rollingInterval: RollingInterval.Day,
|
||||||
|
retainedFileCountLimit: 30,
|
||||||
|
shared: true,
|
||||||
|
outputTemplate:
|
||||||
|
"{Timestamp:yyyy-MM-dd HH:mm:ss} [{Level}] {Message}{NewLine}{Exception}"
|
||||||
|
).CreateLogger();
|
||||||
|
|
||||||
var builder = WebApplication.CreateBuilder(args);
|
var builder = WebApplication.CreateBuilder(args);
|
||||||
var hangfireConnectionString = builder.Configuration.GetConnectionString("HangfireDb");
|
var hangfireConnectionString = builder.Configuration.GetConnectionString("HangfireDb");
|
||||||
builder.Services.AddHangfire(x => x.UseSqlServerStorage(hangfireConnectionString));
|
builder.Services.AddHangfire(x => x.UseSqlServerStorage(hangfireConnectionString));
|
||||||
@@ -59,7 +87,13 @@ builder.Services.AddHttpClient();
|
|||||||
builder.Services.AddHttpContextAccessor();
|
builder.Services.AddHttpContextAccessor();
|
||||||
builder.Services.AddSignalR();
|
builder.Services.AddSignalR();
|
||||||
|
|
||||||
|
|
||||||
|
builder.Host.UseSerilog();
|
||||||
|
Log.Information("SERILOG STARTED SUCCESSFULLY");
|
||||||
|
|
||||||
|
|
||||||
var app = builder.Build();
|
var app = builder.Build();
|
||||||
|
|
||||||
app.MapHub<SendSmsHub>("/sendSmsHub");
|
app.MapHub<SendSmsHub>("/sendSmsHub");
|
||||||
|
|
||||||
app.MapHangfireDashboard();
|
app.MapHangfireDashboard();
|
||||||
|
|||||||
@@ -25,8 +25,8 @@
|
|||||||
|
|
||||||
//mahan Docker
|
//mahan Docker
|
||||||
//"MesbahDb": "Data Source=localhost,5069;Initial Catalog=mesbah_db;User ID=sa;Password=YourPassword123;TrustServerCertificate=True;",
|
//"MesbahDb": "Data Source=localhost,5069;Initial Catalog=mesbah_db;User ID=sa;Password=YourPassword123;TrustServerCertificate=True;",
|
||||||
//"HangfireDb": "Data Source=.;Initial Catalog=hangfire_db;Integrated Security=True;TrustServerCertificate=true;",
|
"HangfireDb": "Data Source=.;Initial Catalog=hangfire_db;Integrated Security=True;TrustServerCertificate=true;",
|
||||||
"HangfireDb": "Data Source=185.208.175.186;Initial Catalog=hangfire_db;Persist Security Info=False;User ID=ir_db;Password=R2rNp[170]18[3019]#@ATt;TrustServerCertificate=true;"
|
//"HangfireDb": "Data Source=185.208.175.186;Initial Catalog=hangfire_db;Persist Security Info=False;User ID=ir_db;Password=R2rNp[170]18[3019]#@ATt;TrustServerCertificate=true;"
|
||||||
},
|
},
|
||||||
|
|
||||||
"GoogleRecaptchaV3": {
|
"GoogleRecaptchaV3": {
|
||||||
|
|||||||
@@ -8,5 +8,6 @@ namespace Company.Domain.BankAgg
|
|||||||
{
|
{
|
||||||
public void Remove(Bank entity);
|
public void Remove(Bank entity);
|
||||||
List<BankViewModel> Search(string name);
|
List<BankViewModel> Search(string name);
|
||||||
|
List<BankSelectList> GetBanksForSelectList();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -31,7 +31,7 @@ public class Checkout : EntityBase
|
|||||||
string overNightWorkValue, string fridayWorkValue, string rotatingShifValue, string absenceValue,
|
string overNightWorkValue, string fridayWorkValue, string rotatingShifValue, string absenceValue,
|
||||||
string totalDayOfLeaveCompute, string totalDayOfYearsCompute, string totalDayOfBunosesCompute,
|
string totalDayOfLeaveCompute, string totalDayOfYearsCompute, string totalDayOfBunosesCompute,
|
||||||
ICollection<CheckoutLoanInstallment> loanInstallments,
|
ICollection<CheckoutLoanInstallment> loanInstallments,
|
||||||
ICollection<CheckoutSalaryAid> salaryAids, CheckoutRollCall checkoutRollCall, TimeSpan employeeMandatoryHours, bool hasInsuranceShareTheSameAsList)
|
ICollection<CheckoutSalaryAid> salaryAids, CheckoutRollCall checkoutRollCall, TimeSpan employeeMandatoryHours, bool hasInsuranceShareTheSameAsList, ICollection<CheckoutReward> rewards,double rewardPay)
|
||||||
{
|
{
|
||||||
EmployeeFullName = employeeFullName;
|
EmployeeFullName = employeeFullName;
|
||||||
FathersName = fathersName;
|
FathersName = fathersName;
|
||||||
@@ -71,7 +71,7 @@ public class Checkout : EntityBase
|
|||||||
TotalClaims = totalClaims;
|
TotalClaims = totalClaims;
|
||||||
TotalDeductions = totalDeductions;
|
TotalDeductions = totalDeductions;
|
||||||
TotalPayment = totalPayment;
|
TotalPayment = totalPayment;
|
||||||
RewardPay = 0;
|
RewardPay = rewardPay;
|
||||||
IsActiveString = "true";
|
IsActiveString = "true";
|
||||||
Signature = signature;
|
Signature = signature;
|
||||||
MarriedAllowance = marriedAllowance;
|
MarriedAllowance = marriedAllowance;
|
||||||
@@ -93,6 +93,7 @@ public class Checkout : EntityBase
|
|||||||
CheckoutRollCall = checkoutRollCall;
|
CheckoutRollCall = checkoutRollCall;
|
||||||
EmployeeMandatoryHours = employeeMandatoryHours;
|
EmployeeMandatoryHours = employeeMandatoryHours;
|
||||||
HasInsuranceShareTheSameAsList = hasInsuranceShareTheSameAsList;
|
HasInsuranceShareTheSameAsList = hasInsuranceShareTheSameAsList;
|
||||||
|
Rewards = rewards;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -130,7 +131,7 @@ public class Checkout : EntityBase
|
|||||||
public double BonusesPay { get; private set; }
|
public double BonusesPay { get; private set; }
|
||||||
public double YearsPay { get; private set; }
|
public double YearsPay { get; private set; }
|
||||||
public double LeavePay { get; private set; }
|
public double LeavePay { get; private set; }
|
||||||
public double? RewardPay { get; private set; }
|
public double RewardPay { get; private set; }
|
||||||
public double InsuranceDeduction { get; private set; }
|
public double InsuranceDeduction { get; private set; }
|
||||||
public double TaxDeducation { get; private set; }
|
public double TaxDeducation { get; private set; }
|
||||||
public double InstallmentDeduction { get; private set; }
|
public double InstallmentDeduction { get; private set; }
|
||||||
@@ -223,6 +224,8 @@ public class Checkout : EntityBase
|
|||||||
|
|
||||||
public ICollection<CheckoutLoanInstallment> LoanInstallments { get; set; } = [];
|
public ICollection<CheckoutLoanInstallment> LoanInstallments { get; set; } = [];
|
||||||
public ICollection<CheckoutSalaryAid> SalaryAids { get; set; } = [];
|
public ICollection<CheckoutSalaryAid> SalaryAids { get; set; } = [];
|
||||||
|
|
||||||
|
public ICollection<CheckoutReward> Rewards { get; set; } = [];
|
||||||
public CheckoutRollCall CheckoutRollCall { get; private set; }
|
public CheckoutRollCall CheckoutRollCall { get; private set; }
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
@@ -239,7 +242,7 @@ public class Checkout : EntityBase
|
|||||||
double insuranceDeduction, double taxDeducation, double installmentDeduction,
|
double insuranceDeduction, double taxDeducation, double installmentDeduction,
|
||||||
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, double? rewardPay)
|
string totalClaims, string totalDeductions, double totalPayment, double rewardPay)
|
||||||
{
|
{
|
||||||
EmployeeFullName = employeeFullName;
|
EmployeeFullName = employeeFullName;
|
||||||
FathersName = fathersName;
|
FathersName = fathersName;
|
||||||
@@ -337,6 +340,11 @@ public class Checkout : EntityBase
|
|||||||
InstallmentDeduction = installmentsAmount;
|
InstallmentDeduction = installmentsAmount;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void SetReward(ICollection<CheckoutReward> rewards, double rewardAmount)
|
||||||
|
{
|
||||||
|
RewardPay = rewardAmount;
|
||||||
|
Rewards = rewards;
|
||||||
|
}
|
||||||
public void SetCheckoutRollCall(CheckoutRollCall checkoutRollCall)
|
public void SetCheckoutRollCall(CheckoutRollCall checkoutRollCall)
|
||||||
{
|
{
|
||||||
CheckoutRollCall = checkoutRollCall;
|
CheckoutRollCall = checkoutRollCall;
|
||||||
|
|||||||
@@ -1,9 +1,10 @@
|
|||||||
using System;
|
using _0_Framework.Application;
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Threading.Tasks;
|
|
||||||
using _0_Framework.Application;
|
|
||||||
using _0_Framework.Domain;
|
using _0_Framework.Domain;
|
||||||
using CompanyManagment.App.Contracts.Checkout;
|
using CompanyManagment.App.Contracts.Checkout;
|
||||||
|
using CompanyManagment.App.Contracts.Checkout.Dto;
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
|
||||||
namespace Company.Domain.CheckoutAgg;
|
namespace Company.Domain.CheckoutAgg;
|
||||||
@@ -22,7 +23,7 @@ public interface ICheckoutRepository : IRepository<long, Checkout>
|
|||||||
string year, string month);
|
string year, string month);
|
||||||
EditCheckout GetDetails(long id);
|
EditCheckout GetDetails(long id);
|
||||||
|
|
||||||
Task CreateCkeckout(Checkout command);
|
Task<bool> CreateCheckout(Checkout command);
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// لود لیست اولیه جهت ایجاد فیش حقوقی
|
/// لود لیست اولیه جهت ایجاد فیش حقوقی
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@@ -80,4 +81,44 @@ public interface ICheckoutRepository : IRepository<long, Checkout>
|
|||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
Task<Checkout> GetByWorkshopIdEmployeeIdInDate(long workshopId, long employeeId, DateTime inDate);
|
Task<Checkout> GetByWorkshopIdEmployeeIdInDate(long workshopId, long employeeId, DateTime inDate);
|
||||||
|
Task<PagedResult<CheckoutListClientDto>> GetListForClient(long workshopId,
|
||||||
|
CheckoutListClientSearchModel searchModel);
|
||||||
|
|
||||||
|
|
||||||
|
#region ForApi
|
||||||
|
/// <summary>
|
||||||
|
/// دریافت سلکت لیست پرسنل کارگاه
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="id"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
Task<List<EmployeeSelectListDto>> GetEmployeeSelectListByWorkshopId(long id);
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// دریافت لیست فیش حقوقی
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="searchModel"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
Task<PagedResult<CheckoutDto>> GetList(CheckoutSearchModelDto searchModel);
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// پرینت فیش حقوقی
|
||||||
|
/// Api
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="ids"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
Task<List<CheckoutPrintDto>> CheckoutPrint(List<long> ids);
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// دریافت قردادها و جداول وابسته برای ایجاد فیش
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="ids"></param>
|
||||||
|
/// <param name="year"></param>
|
||||||
|
/// <param name="month"></param>
|
||||||
|
/// <param name="workshopId"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
Task<OperationResult<GetContractAndIncludesDataToCreateDto>> GetContractsAndIncludeDataDataToCreateCheckout(
|
||||||
|
List<long> ids, string year, string month, long workshopId);
|
||||||
|
|
||||||
|
#endregion
|
||||||
}
|
}
|
||||||
57
Company.Domain/CheckoutAgg/ValueObjects/CheckoutReward.cs
Normal file
57
Company.Domain/CheckoutAgg/ValueObjects/CheckoutReward.cs
Normal file
@@ -0,0 +1,57 @@
|
|||||||
|
using System;
|
||||||
|
|
||||||
|
namespace Company.Domain.CheckoutAgg.ValueObjects;
|
||||||
|
|
||||||
|
public class CheckoutReward
|
||||||
|
{
|
||||||
|
public CheckoutReward(string amount, double amountDouble, string grantDateFa, DateTime grantDateGr, string description, string title, long entityId)
|
||||||
|
{
|
||||||
|
Amount = amount;
|
||||||
|
AmountDouble = amountDouble;
|
||||||
|
GrantDateFa = grantDateFa;
|
||||||
|
GrantDateGr = grantDateGr;
|
||||||
|
Description = description;
|
||||||
|
Title = title;
|
||||||
|
EntityId = entityId;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// مبلغ پاداش
|
||||||
|
/// string
|
||||||
|
/// </summary>
|
||||||
|
public string Amount { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// مبلغ پاداش
|
||||||
|
/// double
|
||||||
|
/// </summary>
|
||||||
|
public double AmountDouble { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// تاریخ اعطاء
|
||||||
|
/// شمسی
|
||||||
|
/// </summary>
|
||||||
|
public string GrantDateFa { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// تاریخ اعطاء
|
||||||
|
/// میلادی
|
||||||
|
/// </summary>
|
||||||
|
public DateTime GrantDateGr { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// توضیحات
|
||||||
|
/// </summary>
|
||||||
|
public string Description { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// عنوان
|
||||||
|
/// </summary>
|
||||||
|
public string Title { get; set; }
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// آی دی پاداش
|
||||||
|
/// </summary>
|
||||||
|
public long EntityId { get; set; }
|
||||||
|
}
|
||||||
@@ -0,0 +1,93 @@
|
|||||||
|
using _0_Framework.Domain;
|
||||||
|
using System;
|
||||||
|
|
||||||
|
namespace Company.Domain.ClassificationSchemeAgg;
|
||||||
|
|
||||||
|
public class ClassificationEmployee : EntityBase
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// ایجاد پرسنل طرح
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="workshopId"></param>
|
||||||
|
/// <param name="employeeId"></param>
|
||||||
|
/// <param name="classificationSchemeId"></param>
|
||||||
|
/// <param name="classificationGroupId"></param>
|
||||||
|
/// <param name="classificationGroupJobId"></param>
|
||||||
|
/// <param name="startGroupDate"></param>
|
||||||
|
/// <param name="endGroupDate"></param>
|
||||||
|
public ClassificationEmployee(long workshopId, long employeeId, long classificationSchemeId, long classificationGroupId, long classificationGroupJobId, DateTime? startGroupDate)
|
||||||
|
{
|
||||||
|
WorkshopId = workshopId;
|
||||||
|
EmployeeId = employeeId;
|
||||||
|
ClassificationSchemeId = classificationSchemeId;
|
||||||
|
ClassificationGroupId = classificationGroupId;
|
||||||
|
ClassificationGroupJobId = classificationGroupJobId;
|
||||||
|
StartGroupDate = startGroupDate;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// آی دی کارگاه
|
||||||
|
/// </summary>
|
||||||
|
public long WorkshopId { get; private set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// آی دی پرسنل
|
||||||
|
/// </summary>
|
||||||
|
public long EmployeeId { get; private set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// آی دی طرح
|
||||||
|
/// </summary>
|
||||||
|
public long ClassificationSchemeId { get; private set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// آی دی گروه
|
||||||
|
/// </summary>
|
||||||
|
public long ClassificationGroupId { get; private set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// آی دی شغل
|
||||||
|
/// </summary>
|
||||||
|
public long ClassificationGroupJobId { get; private set; }
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// تاریخ شروع استفاده از گروه
|
||||||
|
/// </summary>
|
||||||
|
public DateTime? StartGroupDate{ get; private set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// تاریخ پایان استفاده از گروه
|
||||||
|
/// </summary>
|
||||||
|
public DateTime? EndGroupDate { get; private set; }
|
||||||
|
|
||||||
|
public ClassificationGroup ClassificationGroup { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// ویرایش پرسنل طرح
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="classificationGroupId"></param>
|
||||||
|
/// <param name="classificationGroupJobId"></param>
|
||||||
|
public void Edit(long classificationGroupId, long classificationGroupJobId)
|
||||||
|
{
|
||||||
|
ClassificationGroupId = classificationGroupId;
|
||||||
|
ClassificationGroupJobId = classificationGroupJobId;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// ویرایش گروه های چندگانه پرسنل طرح
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="classificationGroupId"></param>
|
||||||
|
/// <param name="classificationGroupJobId"></param>
|
||||||
|
/// <param name="startGroupDate"></param>
|
||||||
|
/// <param name="endGroupDate"></param>
|
||||||
|
public void EditMultipleGroupMember(long classificationGroupId, long classificationGroupJobId, DateTime startGroupDate)
|
||||||
|
{
|
||||||
|
ClassificationGroupId = classificationGroupId;
|
||||||
|
ClassificationGroupJobId = classificationGroupJobId;
|
||||||
|
StartGroupDate = startGroupDate;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,43 @@
|
|||||||
|
using System.Collections.Generic;
|
||||||
|
using _0_Framework.Domain;
|
||||||
|
|
||||||
|
namespace Company.Domain.ClassificationSchemeAgg;
|
||||||
|
|
||||||
|
|
||||||
|
public class ClassificationGroup : EntityBase
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// ایجاد گروه های بیست گانه طرح طبقه بندی
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="groupNo"></param>
|
||||||
|
/// <param name="workshopId"></param>
|
||||||
|
/// <param name="classificationSchemeId"></param>
|
||||||
|
public ClassificationGroup(string groupNo, long workshopId, long classificationSchemeId)
|
||||||
|
{
|
||||||
|
GroupNo = groupNo;
|
||||||
|
WorkshopId = workshopId;
|
||||||
|
ClassificationSchemeId = classificationSchemeId;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// شماره گروه
|
||||||
|
/// </summary>
|
||||||
|
public string GroupNo { get; private set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// آی دی کارگاه
|
||||||
|
/// </summary>
|
||||||
|
public long WorkshopId { get; private set; }
|
||||||
|
/// <summary>
|
||||||
|
/// آی دی طرح
|
||||||
|
/// </summary>
|
||||||
|
public long ClassificationSchemeId { get; private set; }
|
||||||
|
|
||||||
|
public ClassificationScheme ClassificationScheme { get; set; }
|
||||||
|
|
||||||
|
|
||||||
|
public List<ClassificationGroupJob> ClassificationGroupJobs { get; set; }
|
||||||
|
public List<ClassificationGroupSalary> ClassificationGroupSalaries { get; set; }
|
||||||
|
|
||||||
|
public List<ClassificationEmployee> ClassificationEmployees { get; set; }
|
||||||
|
}
|
||||||
@@ -0,0 +1,55 @@
|
|||||||
|
using _0_Framework.Domain;
|
||||||
|
using _0_Framework_b.Domain;
|
||||||
|
|
||||||
|
namespace Company.Domain.ClassificationSchemeAgg;
|
||||||
|
|
||||||
|
public class ClassificationGroupJob : EntityBaseWithoutCreationDate
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// ایجاد لیست مشغال برای گروه های طرح طبقه بندی
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="jobId"></param>
|
||||||
|
/// <param name="jobName"></param>
|
||||||
|
/// <param name="jobCode"></param>
|
||||||
|
/// <param name="classificationGroupId"></param>
|
||||||
|
/// <param name="groupNo"></param>
|
||||||
|
public ClassificationGroupJob(long jobId, string jobName, string jobCode, long classificationGroupId, string groupNo)
|
||||||
|
{
|
||||||
|
JobId = jobId;
|
||||||
|
JobName = jobName;
|
||||||
|
JobCode = jobCode;
|
||||||
|
ClassificationGroupId = classificationGroupId;
|
||||||
|
GroupNo = groupNo;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// آی دی شغل
|
||||||
|
/// </summary>
|
||||||
|
public long JobId { get; private set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// نام شغل
|
||||||
|
/// </summary>
|
||||||
|
public string JobName { get; private set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// کد شغل
|
||||||
|
/// </summary>
|
||||||
|
public string JobCode { get; private set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// آی دی گروه
|
||||||
|
/// </summary>
|
||||||
|
public long ClassificationGroupId { get; private set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// شماره گروه
|
||||||
|
/// </summary>
|
||||||
|
public string GroupNo { get; private set; }
|
||||||
|
|
||||||
|
|
||||||
|
public ClassificationGroup ClassificationGroup { get; set; }
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,82 @@
|
|||||||
|
using _0_Framework.Domain;
|
||||||
|
using System;
|
||||||
|
|
||||||
|
namespace Company.Domain.ClassificationSchemeAgg;
|
||||||
|
|
||||||
|
public class ClassificationGroupSalary : EntityBase
|
||||||
|
{
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// ایجاد دستمزد برای گروه
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="classificationGroupId"></param>
|
||||||
|
/// <param name="groupNo"></param>
|
||||||
|
/// <param name="groupSalary"></param>
|
||||||
|
/// <param name="startDate"></param>
|
||||||
|
/// <param name="endDate"></param>
|
||||||
|
/// <param name="year"></param>
|
||||||
|
public ClassificationGroupSalary(long classificationGroupId, string groupNo, double groupSalary, DateTime startDate, DateTime endDate, int year, long schemeId)
|
||||||
|
{
|
||||||
|
ClassificationGroupId = classificationGroupId;
|
||||||
|
GroupNo = groupNo;
|
||||||
|
GroupSalary = groupSalary;
|
||||||
|
StartDate = startDate;
|
||||||
|
EndDate = endDate;
|
||||||
|
Year = year;
|
||||||
|
SchemeId = schemeId;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// آی دی گروه
|
||||||
|
/// </summary>
|
||||||
|
public long ClassificationGroupId { get; private set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// شماره گروه
|
||||||
|
/// </summary>
|
||||||
|
public string GroupNo { get; private set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// دستمزد گروه
|
||||||
|
/// </summary>
|
||||||
|
public double GroupSalary { get; private set; }
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// تاریخ شروع
|
||||||
|
/// </summary>
|
||||||
|
public DateTime StartDate { get; private set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// تاریخ پایان
|
||||||
|
/// </summary>
|
||||||
|
public DateTime EndDate { get; private set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// سال
|
||||||
|
/// </summary>
|
||||||
|
public int Year { get; private set; }
|
||||||
|
|
||||||
|
public long SchemeId { get; private set; }
|
||||||
|
|
||||||
|
|
||||||
|
public ClassificationGroup ClassificationGroup { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// ویرایش دستمزد گروه
|
||||||
|
/// </summary>
|
||||||
|
|
||||||
|
/// <param name="groupSalary"></param>
|
||||||
|
/// <param name="startDate"></param>
|
||||||
|
/// <param name="endDate"></param>
|
||||||
|
/// <param name="year"></param>
|
||||||
|
public void Edit(double groupSalary, DateTime startDate, DateTime endDate, int year)
|
||||||
|
{
|
||||||
|
|
||||||
|
GroupSalary = groupSalary;
|
||||||
|
StartDate = startDate;
|
||||||
|
EndDate = endDate;
|
||||||
|
Year = year;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,68 @@
|
|||||||
|
using System;
|
||||||
|
using _0_Framework.Domain;
|
||||||
|
|
||||||
|
namespace Company.Domain.ClassificationSchemeAgg;
|
||||||
|
|
||||||
|
public class ClassificationRialCoefficient : EntityBaseWithoutCreationDate
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// ایچاد ضریب ریالی
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="classificationSchemeId"></param>
|
||||||
|
/// <param name="rialCoefficient"></param>
|
||||||
|
/// <param name="startDate"></param>
|
||||||
|
/// <param name="endDate"></param>
|
||||||
|
/// <param name="year"></param>
|
||||||
|
public ClassificationRialCoefficient(long classificationSchemeId, double rialCoefficient, DateTime startDate, DateTime endDate, int year)
|
||||||
|
{
|
||||||
|
ClassificationSchemeId = classificationSchemeId;
|
||||||
|
RialCoefficient = rialCoefficient;
|
||||||
|
StartDate = startDate;
|
||||||
|
EndDate = endDate;
|
||||||
|
Year = year;
|
||||||
|
}
|
||||||
|
|
||||||
|
//آی دی طرح
|
||||||
|
public long ClassificationSchemeId { get; private set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// ضریب ریالی
|
||||||
|
/// </summary>
|
||||||
|
public double RialCoefficient { get; private set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// تاریخ شروع
|
||||||
|
/// </summary>
|
||||||
|
public DateTime StartDate { get; private set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// تاریخ پایان
|
||||||
|
/// </summary>
|
||||||
|
public DateTime EndDate { get; private set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// سال
|
||||||
|
/// </summary>
|
||||||
|
public int Year { get; private set; }
|
||||||
|
|
||||||
|
|
||||||
|
public ClassificationScheme ClassificationScheme { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// ویرایش ضریب ریالی
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="classificationSchemeId"></param>
|
||||||
|
/// <param name="rialCoefficient"></param>
|
||||||
|
/// <param name="startDate"></param>
|
||||||
|
/// <param name="endDate"></param>
|
||||||
|
/// <param name="year"></param>
|
||||||
|
public void Edit(double rialCoefficient, DateTime startDate, DateTime endDate, int year)
|
||||||
|
{
|
||||||
|
|
||||||
|
RialCoefficient = rialCoefficient;
|
||||||
|
StartDate = startDate;
|
||||||
|
EndDate = endDate;
|
||||||
|
Year = year;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,88 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using _0_Framework.Application.Enums;
|
||||||
|
using _0_Framework.Domain;
|
||||||
|
|
||||||
|
namespace Company.Domain.ClassificationSchemeAgg;
|
||||||
|
|
||||||
|
public class ClassificationScheme : EntityBase
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// ایجاد طرح طبقه بندی مشاغل
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="includingDateGr"></param>
|
||||||
|
/// <param name="executionDateGr"></param>
|
||||||
|
/// <param name="designerFullName"></param>
|
||||||
|
/// <param name="designerPhone"></param>
|
||||||
|
/// <param name="workshopId"></param>
|
||||||
|
/// <param name="typeOfCoefficient"></param>
|
||||||
|
public ClassificationScheme(DateTime includingDateGr, DateTime executionDateGr, string designerFullName, string designerPhone, long workshopId, TypeOfCoefficient typeOfCoefficient)
|
||||||
|
{
|
||||||
|
IncludingDateGr = includingDateGr;
|
||||||
|
ExecutionDateGr = executionDateGr;
|
||||||
|
DesignerFullName = designerFullName;
|
||||||
|
DesignerPhone = designerPhone;
|
||||||
|
WorkshopId = workshopId;
|
||||||
|
TypeOfCoefficient = typeOfCoefficient;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// تاریخ شمول طرح
|
||||||
|
/// </summary>
|
||||||
|
public DateTime IncludingDateGr { get; private set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// تاریخ اجرای طرح
|
||||||
|
/// </summary>
|
||||||
|
public DateTime ExecutionDateGr { get; private set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// تاریخ پایان طرح
|
||||||
|
/// </summary>
|
||||||
|
public DateTime? EndSchemeDateGr { get; private set; }
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// نام کامل طراح
|
||||||
|
/// </summary>
|
||||||
|
public string DesignerFullName { get; private set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// شماره همراه طراح
|
||||||
|
/// </summary>
|
||||||
|
public string DesignerPhone { get; private set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// آی دی کارگاه
|
||||||
|
/// </summary>
|
||||||
|
public long WorkshopId { get; private set; }
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// نوع ضریب
|
||||||
|
/// </summary>
|
||||||
|
public TypeOfCoefficient TypeOfCoefficient { get; private set; }
|
||||||
|
|
||||||
|
|
||||||
|
public List<ClassificationGroup> ClassificationGroups { get; set; }
|
||||||
|
|
||||||
|
public List<ClassificationRialCoefficient> ClassificationRialCoefficients { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// ویرایش طرح
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="includingDateGr"></param>
|
||||||
|
/// <param name="executionDateGr"></param>
|
||||||
|
/// <param name="designerFullName"></param>
|
||||||
|
/// <param name="designerPhone"></param>
|
||||||
|
/// <param name="workshopId"></param>
|
||||||
|
public void Edit(DateTime includingDateGr, DateTime executionDateGr,string designerFullName, string designerPhone, TypeOfCoefficient typeOfCoefficient)
|
||||||
|
{
|
||||||
|
IncludingDateGr = includingDateGr;
|
||||||
|
ExecutionDateGr = executionDateGr;
|
||||||
|
DesignerFullName = designerFullName;
|
||||||
|
DesignerPhone = designerPhone;
|
||||||
|
TypeOfCoefficient = typeOfCoefficient;
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,42 @@
|
|||||||
|
using _0_Framework.Domain;
|
||||||
|
using CompanyManagment.App.Contracts.ClassificationScheme;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace Company.Domain.ClassificationSchemeAgg;
|
||||||
|
|
||||||
|
public interface IClassificationEmployeeRepository : IRepository<long, ClassificationEmployee>
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// دریافت لیست پرسنل کارگاه
|
||||||
|
/// تب افزودن پرسنل
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="schemeId"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
Task<List<EmployeeInfoList>> GetEmployeeListData(long schemeId);
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// دریافت اطلاعات عضویتی پرسنل در گروه
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="employeeId"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
Task<List<EditEmployeeGroupList>> GetEmployeeMemberizeData(long employeeId);
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// ذخیره انتقال پرسنل به گره های دیگر
|
||||||
|
///بصورت گروهی
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="command"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
Task CreateTransferRange(List<ClassificationEmployee> command);
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// حذف پرسنل از گروه از سمت ویرایش
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="command"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
Task RemoveRangeByEdit(List<ClassificationEmployee> command);
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,89 @@
|
|||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
using _0_Framework.Domain;
|
||||||
|
using CompanyManagment.App.Contracts.ClassificationScheme;
|
||||||
|
|
||||||
|
namespace Company.Domain.ClassificationSchemeAgg;
|
||||||
|
|
||||||
|
public interface IClassificationGroupRepository : IRepository<long, ClassificationGroup>
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// دریافت گروه های طرح
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="schemeId"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
Task<List<ClassificationGroupList>> GetGroups(long schemeId);
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// دریافت گروه ها و مشاغلشان برای تب تعیین مشاغل
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="schemeId"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
Task<List<ClassificationGroupAndJobModel>> GetGroupAndJobs(long schemeId);
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// دریافت لیست گروه ها
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="schemeId"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
Task<List<GetGroupAndJobSchemeListDto>> GetGroupList(long schemeId);
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// دریافت لیست مشاغل برای مودال ایجاد و ویرایش
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="groupId"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
Task<AddOrEditJobInGroupDto> GetCreateOrEditJobsData(long groupId);
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// چک میکند که آی پرسنلی وجود دارد که این شغل به او نسبت داده شده
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="jobId"></param>
|
||||||
|
/// <param name="groupId"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
Task<bool> CheckIfEmployeeHasThisJob(long jobId, long groupId);
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// ذخیر ایجاد یا ویرایش مشاغل در گروه
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="command"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
Task<bool> SaveJobsToGroup(AddOrEditJobInGroupDto command);
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// دریافت مشاغل گروه توسط آی دی گروه
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="groupId"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
Task<List<EditClassificationGroupJob>> GetGroupJobs(long groupId);
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// چک میکند که آی پرسنلی وجود دارد که این شغل به او نسبت داده شده
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="id"></param>
|
||||||
|
/// <param name="groupId"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
Task<bool> CheckEmployeeHasThisJob(long id, long groupId);
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// ایجاد مشاغل
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="createClassificationGroupJob"></param>
|
||||||
|
/// <param name="deleteJobList"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
Task<bool> CreateJobs(List<ClassificationGroupJob> createClassificationGroupJob, List<long> deleteJobList);
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// در یافت اطلاعات گروه برای لود مودال ایجاد دستمزد های
|
||||||
|
/// </summary>
|
||||||
|
/// <returns></returns>
|
||||||
|
Task<SalaryAndRialCoefficientModel> GetGroupToCreateSalariesModal(long schemeId);
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// ایجاد گروه های بیست گانه
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="groupList"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
Task CreateGroups(List<ClassificationGroup> groupList);
|
||||||
|
}
|
||||||
@@ -0,0 +1,45 @@
|
|||||||
|
using _0_Framework.Domain;
|
||||||
|
using CompanyManagment.App.Contracts.ClassificationScheme;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace Company.Domain.ClassificationSchemeAgg;
|
||||||
|
|
||||||
|
public interface IClassificationGroupSalariesRepository : IRepository<long, ClassificationGroupSalary>
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// ایجاد دستمزدهای گروه ها
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="createClassificationGroupSalary"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
Task CreateSalaries(List<ClassificationGroupSalary> createClassificationGroupSalary);
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// دریافت دستمزدها و ضریب ریالی برای مودال ویرایش
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="schemeId"></param>
|
||||||
|
/// <param name="startDate"></param>
|
||||||
|
/// <param name="endDate"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
Task<SalaryAndRialCoefficientModel> GetEditSalariesData(long schemeId, string startDate, string endDate);
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// لیست دستمزدها بر اساس تاریخ و سال برای تب دستمزدها
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="schemeId"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
Task<SalaryAndRialCoefficientTab> GetSalariesTabData(long schemeId);
|
||||||
|
|
||||||
|
|
||||||
|
#region ForApi
|
||||||
|
/// <summary>
|
||||||
|
/// لیست دستمزدها بر اساس تاریخ و سال برای تب دستمزدها
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="schemeId"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
Task<List<SalaryAndRialCoefficientTabDataList>> GetSalaryList(long schemeId);
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
}
|
||||||
|
|
||||||
@@ -0,0 +1,8 @@
|
|||||||
|
using _0_Framework.Domain;
|
||||||
|
|
||||||
|
namespace Company.Domain.ClassificationSchemeAgg;
|
||||||
|
|
||||||
|
public interface IClassificationRialCoefficientRepository : IRepository<long, ClassificationRialCoefficient>
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,56 @@
|
|||||||
|
using _0_Framework.Application;
|
||||||
|
using _0_Framework.Domain;
|
||||||
|
using CompanyManagment.App.Contracts.ClassificationScheme;
|
||||||
|
using CompanyManagment.App.Contracts.YearlySalary;
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace Company.Domain.ClassificationSchemeAgg;
|
||||||
|
|
||||||
|
public interface IClassificationSchemeRepository : IRepository<long, ClassificationScheme>
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// پارشیال صفحه ایجاد طرح
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="worskhopId"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
Task<ClassificationSchemeListDto> GetClassificationSchemeList(long workshopId);
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// دریافت اطلاعات طرح برای ویرایش
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="id"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
Task<EditClassificationSchemeDto> GetClassificationScheme(long id);
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// دریافت اطلاعات طر برای محاسبات
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="id"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
Task<EditClassificationScheme> GetClassificationSchemeToCompute(long id);
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// متد محاسبه پایه سنوات برا افراد تک گروه
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="schemeStart">تاریخ شروع طرح</param>
|
||||||
|
/// <param name="schemeEnd">تاریخ پاین طرح، اجباری نیست</param>
|
||||||
|
/// <param name="contractStart">تاریخ شروع قراداد</param>
|
||||||
|
/// <param name="contractEnd">تاریخ پایان قراداد</param>
|
||||||
|
/// <param name="groupNo">شماره گروه</param>
|
||||||
|
/// <param name="employeeId">آی دی پرسنل</param>
|
||||||
|
/// <param name="workshopId">آی دی کارگاه</param>
|
||||||
|
/// <returns></returns>
|
||||||
|
Task<BaseYearDataViewModel> BaseYearComputeOneGroup(DateTime schemeStart, DateTime? schemeEnd,
|
||||||
|
DateTime contractStart, DateTime contractEnd, string groupNo, long employeeId, long workshopId);
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// حذف طرح
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="id"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
Task DeleteClassificationScheme(long id);
|
||||||
|
}
|
||||||
@@ -1,4 +1,5 @@
|
|||||||
using CompanyManagment.App.Contracts.PersonalContractingParty;
|
using System;
|
||||||
|
using CompanyManagment.App.Contracts.PersonalContractingParty;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using _0_Framework.Application;
|
using _0_Framework.Application;
|
||||||
using _0_Framework.Domain;
|
using _0_Framework.Domain;
|
||||||
@@ -32,7 +33,9 @@ public interface IPersonalContractingPartyRepository :IRepository<long, Personal
|
|||||||
List<PersonalContractingPartyViewModel> SearchForMain(PersonalContractingPartySearchModel searchModel2);
|
List<PersonalContractingPartyViewModel> SearchForMain(PersonalContractingPartySearchModel searchModel2);
|
||||||
OperationResult DeletePersonalContractingParties(long id);
|
OperationResult DeletePersonalContractingParties(long id);
|
||||||
bool GetHasContract(long id);
|
bool GetHasContract(long id);
|
||||||
|
[Obsolete("از متدهای async استفاده کنید")]
|
||||||
OperationResult DeActiveAll(long id);
|
OperationResult DeActiveAll(long id);
|
||||||
|
[Obsolete("از متدهای async استفاده کنید")]
|
||||||
OperationResult ActiveAll(long id);
|
OperationResult ActiveAll(long id);
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
@@ -76,4 +79,9 @@ public interface IPersonalContractingPartyRepository :IRepository<long, Personal
|
|||||||
|
|
||||||
Task<PersonalContractingParty> GetByNationalCode(string nationalCode);
|
Task<PersonalContractingParty> GetByNationalCode(string nationalCode);
|
||||||
Task<PersonalContractingParty> GetByNationalId(string registerId);
|
Task<PersonalContractingParty> GetByNationalId(string registerId);
|
||||||
|
|
||||||
|
Task<OperationResult> DeActiveAllAsync(long id);
|
||||||
|
Task<OperationResult> ActiveAllAsync(long id);
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -48,6 +48,10 @@ public interface IContractRepository : IRepository<long, Contract>
|
|||||||
bool Remove(long id);
|
bool Remove(long id);
|
||||||
|
|
||||||
List<ContractViweModel> SearchForClient(ContractSearchModel searchModel);
|
List<ContractViweModel> SearchForClient(ContractSearchModel searchModel);
|
||||||
|
|
||||||
|
Task<PagedResult<GetContractListForClientResponse>> GetContractListForClient(GetContractListForClientRequest searchModel);
|
||||||
|
|
||||||
|
Task<List<ContractPrintViewModel>> PrintAllAsync(List<long> ids);
|
||||||
#endregion
|
#endregion
|
||||||
#region NewChangeByHeydari
|
#region NewChangeByHeydari
|
||||||
|
|
||||||
@@ -63,4 +67,8 @@ public interface IContractRepository : IRepository<long, Contract>
|
|||||||
ContractViweModel GetByWorkshopIdEmployeeIdInDates(long workshopId, long employeeId, DateTime startOfMonth, DateTime endOfMonth);
|
ContractViweModel GetByWorkshopIdEmployeeIdInDates(long workshopId, long employeeId, DateTime startOfMonth, DateTime endOfMonth);
|
||||||
List<ContractViweModel> GetByWorkshopIdInDates(long workshopId, DateTime contractStart, DateTime contractEnd);
|
List<ContractViweModel> GetByWorkshopIdInDates(long workshopId, DateTime contractStart, DateTime contractEnd);
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -54,6 +54,7 @@ public interface IEmployeeRepository : IRepository<long, Employee>
|
|||||||
|
|
||||||
Employee GetIgnoreQueryFilter(long id);
|
Employee GetIgnoreQueryFilter(long id);
|
||||||
|
|
||||||
|
[Obsolete("این متد منسوخ شده است و از متد WorkedEmployeesInWorkshopSelectList استفاده کنید")]
|
||||||
Task<List<EmployeeSelectListViewModel>> WorkedEmployeesInWorkshopSelectList(long workshopId);
|
Task<List<EmployeeSelectListViewModel>> WorkedEmployeesInWorkshopSelectList(long workshopId);
|
||||||
|
|
||||||
|
|
||||||
@@ -76,7 +77,40 @@ public interface IEmployeeRepository : IRepository<long, Employee>
|
|||||||
#region Api
|
#region Api
|
||||||
Task<List<EmployeeSelectListViewModel>> GetSelectList(string searchText,long id);
|
Task<List<EmployeeSelectListViewModel>> GetSelectList(string searchText,long id);
|
||||||
Task<List<GetEmployeeListViewModel>> GetList(GetEmployeeListSearchModel searchModel);
|
Task<List<GetEmployeeListViewModel>> GetList(GetEmployeeListSearchModel searchModel);
|
||||||
#endregion
|
Task<List<GetClientEmployeeListViewModel>> GetClientEmployeeList(GetClientEmployeeListSearchModel searchModel, long workshopId);
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// دریافت لیست پرسنل کلاینت
|
||||||
|
/// api
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="searchModel"></param>
|
||||||
|
/// <param name="workshopId"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
Task<List<EmployeeListDto>> ListOfAllEmployeesClient(EmployeeSearchModelDto searchModel, long workshopId);
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// پرینت تجمیعی پرسنل کلاینت
|
||||||
|
/// api
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="workshopId"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
Task<List<PrintAllEmployeesInfoDtoClient>> PrintAllEmployeesInfoClient(long workshopId);
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// پرینت گروهی تفکیکی پرسنل
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="workshopId"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
Task<List<PrintAllDetailsPersonnelInfoDtoClient>> PrintAllDetailsPersonnelInfoClient(long workshopId);
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// سلکت لیست پرسنل های کارگاه کلاینت
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="workshopId"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
Task<List<EmployeeSelectListViewModel>> GetWorkingEmployeesSelectList(long workshopId);
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -1,7 +1,11 @@
|
|||||||
|
|
||||||
|
using System;
|
||||||
using _0_Framework.Domain;
|
using _0_Framework.Domain;
|
||||||
using CompanyManagment.App.Contracts.EmployeeBankInformation;
|
using CompanyManagment.App.Contracts.EmployeeBankInformation;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
|
using System.Security.AccessControl;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
using CompanyManagment.App.Contracts.Workshop;
|
||||||
|
|
||||||
namespace Company.Domain.EmployeeBankInformationAgg
|
namespace Company.Domain.EmployeeBankInformationAgg
|
||||||
{
|
{
|
||||||
@@ -11,14 +15,31 @@ namespace Company.Domain.EmployeeBankInformationAgg
|
|||||||
void Remove(EmployeeBankInformation bankInformation);
|
void Remove(EmployeeBankInformation bankInformation);
|
||||||
void RemoveRange(List<EmployeeBankInformation> entities);
|
void RemoveRange(List<EmployeeBankInformation> entities);
|
||||||
|
|
||||||
|
[Obsolete("از متد async استفاده کنید")]
|
||||||
List<GroupedEmployeeBankInformationViewModel> Search(long workshopId, EmployeeBankInformationSearchModel searchParams);
|
List<GroupedEmployeeBankInformationViewModel> Search(long workshopId, EmployeeBankInformationSearchModel searchParams);
|
||||||
|
|
||||||
|
Task<List<GroupedEmployeeBankInformationViewModel>> SearchAsync(long workshopId,
|
||||||
|
EmployeeBankInformationSearchModel searchParams);
|
||||||
|
|
||||||
|
|
||||||
GroupedEmployeeBankInformationViewModel GetByEmployeeId(long workshopId, long employeeId);
|
GroupedEmployeeBankInformationViewModel GetByEmployeeId(long workshopId, long employeeId);
|
||||||
List<EmployeeBankInformation> GetRangeByEmployeeId(long workshopId, long employeeId);
|
List<EmployeeBankInformation> GetRangeByEmployeeId(long workshopId, long employeeId);
|
||||||
EmployeeBankInformationViewModel GetDetails(long id);
|
EmployeeBankInformationViewModel GetDetails(long id);
|
||||||
List<GroupedEmployeeBankInformationViewModel> GetAllByWorkshopId(long workshopId);
|
List<GroupedEmployeeBankInformationViewModel> GetAllByWorkshopId(long workshopId);
|
||||||
|
|
||||||
|
List<EmployeeBankInformationViewModelForExcel> SearchForExcel(long workshopId,
|
||||||
|
EmployeeBankInformationSearchModel searchParams);
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// جزئیات اطلاعات بانکی بر اساس پرسنل
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="workshopId"></param>
|
||||||
|
/// <param name="employeeId"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
Task<GetEmployeeBankInfoDetailsDto> GetDetailsByEmployeeIdAsync(long workshopId, long employeeId);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
List<EmployeeBankInformationViewModelForExcel> SearchForExcel(long workshopId, EmployeeBankInformationSearchModel searchParams);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -10,4 +10,6 @@ public interface IFinancialInvoiceRepository : IRepository<long, FinancialInvoic
|
|||||||
EditFinancialInvoice GetDetails(long id);
|
EditFinancialInvoice GetDetails(long id);
|
||||||
List<FinancialInvoiceViewModel> Search(FinancialInvoiceSearchModel searchModel);
|
List<FinancialInvoiceViewModel> Search(FinancialInvoiceSearchModel searchModel);
|
||||||
Task<FinancialInvoice> GetUnPaidByEntityId(long entityId, FinancialInvoiceItemType financialInvoiceItemType);
|
Task<FinancialInvoice> GetUnPaidByEntityId(long entityId, FinancialInvoiceItemType financialInvoiceItemType);
|
||||||
|
Task<FinancialInvoice> GetUnPaidFinancialInvoiceByContractingPartyIdAndAmount(long contractingPartyId,
|
||||||
|
double amount);
|
||||||
}
|
}
|
||||||
@@ -7,7 +7,6 @@ using _0_Framework.Application.Enums;
|
|||||||
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;
|
||||||
using Microsoft.AspNetCore.Mvc;
|
|
||||||
|
|
||||||
namespace Company.Domain.InstitutionContractAgg;
|
namespace Company.Domain.InstitutionContractAgg;
|
||||||
|
|
||||||
@@ -56,9 +55,13 @@ public interface IInstitutionContractRepository : IRepository<long, InstitutionC
|
|||||||
void UpdateStatusIfNeeded(long institutionContractId);
|
void UpdateStatusIfNeeded(long institutionContractId);
|
||||||
Task<GetInstitutionVerificationDetailsViewModel> GetVerificationDetails(Guid id);
|
Task<GetInstitutionVerificationDetailsViewModel> GetVerificationDetails(Guid id);
|
||||||
Task<InstitutionContract> GetByPublicIdAsync(Guid id);
|
Task<InstitutionContract> GetByPublicIdAsync(Guid id);
|
||||||
InstitutionContractDiscountResponse CalculateDiscount(InstitutionContractSetDiscountRequest request);
|
InstitutionContractDiscountResponse CalculateDiscount(InstitutionContractSetDiscountRequest request, string contractStart = null);
|
||||||
InstitutionContractDiscountResponse ResetDiscountCreate(InstitutionContractResetDiscountForCreateRequest request);
|
InstitutionContractDiscountResponse ResetDiscountCreate(InstitutionContractResetDiscountForCreateRequest request);
|
||||||
|
|
||||||
|
#region Creation
|
||||||
|
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
#region Extension
|
#region Extension
|
||||||
|
|
||||||
@@ -76,76 +79,21 @@ public interface IInstitutionContractRepository : IRepository<long, InstitutionC
|
|||||||
|
|
||||||
#region Upgrade(Amendment)
|
#region Upgrade(Amendment)
|
||||||
|
|
||||||
Task<InstitutionContractAmendmentWorkshopsResponse> GetAmendmentWorkshops(long institutionContractId);
|
Task<InstitutionContractAmendmentWorkshopsResponse> GetAmendmentWorkshops(long institutionContractId);
|
||||||
Task<InsitutionContractAmendmentPaymentResponse> GetAmendmentPaymentDetails(InsitutionContractAmendmentPaymentRequest request);
|
Task<InsitutionContractAmendmentPaymentResponse> GetAmendmentPaymentDetails(InsitutionContractAmendmentPaymentRequest request);
|
||||||
|
|
||||||
Task<InsertAmendmentTempWorkshopResponse> InsertAmendmentTempWorkshops(InstitutionContractAmendmentTempWorkshopViewModel request);
|
Task<InsertAmendmentTempWorkshopResponse> InsertAmendmentTempWorkshops(InstitutionContractAmendmentTempWorkshopViewModel request);
|
||||||
Task RemoveAmendmentWorkshops(Guid workshopTempId);
|
Task RemoveAmendmentWorkshops(Guid workshopTempId);
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
Task<List<InstitutionContractSelectListViewModel>> GetInstitutionContractSelectList(string search, string selected);
|
Task<List<InstitutionContractSelectListViewModel>> GetInstitutionContractSelectList(string search, string selected);
|
||||||
Task<List<InstitutionContractPrintViewModel>> PrintAllAsync(List<long> ids);
|
Task<List<InstitutionContractPrintViewModel>> PrintAllAsync(List<long> ids);
|
||||||
|
Task<GetInstitutionContractWorkshopsDetails> GetContractWorkshopsDetails(long id);
|
||||||
|
Task AmendmentComplete(InstitutionContractAmendmentCompleteRequest request);
|
||||||
|
Task<GetInstitutionAmendmentVerificationDetailsViewModel> GetAmendmentVerificationDetails(Guid id, long amendmentId);
|
||||||
|
|
||||||
|
|
||||||
#region ReminderSMS
|
|
||||||
/// <summary>
|
|
||||||
/// دریافت لیست - ارسال پیامک
|
|
||||||
/// فراخوانی از سمت بک گراند سرویس
|
|
||||||
/// </summary>
|
|
||||||
/// <returns></returns>
|
|
||||||
Task<bool> SendReminderSmsForBackgroundTask();
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// ارسال پیامک صورت حساب ماهانه
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="now"></param>
|
|
||||||
/// <returns></returns>
|
|
||||||
Task SendMonthlySms(DateTime now);
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// ارسال پیامک مسدودی از طرف بک گراند سرویس
|
|
||||||
/// </summary>
|
|
||||||
/// <returns></returns>
|
|
||||||
Task SendBlockSmsForBackgroundTask();
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// دریافت لیست واجد شرایط بلاک
|
|
||||||
/// جهت ارسال پیامک مسدودی
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="checkDate"></param>
|
|
||||||
/// <returns></returns>
|
|
||||||
Task<List<BlockSmsListData>> GetBlockListData(DateTime checkDate);
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// ارسال پیامک مسدودی
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="smsListData"></param>
|
|
||||||
/// <param name="typeOfSms"></param>
|
|
||||||
/// <param name="sendMessStart"></param>
|
|
||||||
/// <param name="sendMessEnd"></param>
|
|
||||||
/// <returns></returns>
|
|
||||||
Task SendBlockSmsToContractingParties(List<BlockSmsListData> smsListData, string typeOfSms,
|
|
||||||
string sendMessStart, string sendMessEnd);
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
///دریافت لیست بدهکارن
|
|
||||||
/// جهت ارسال پیامک
|
|
||||||
/// </summary>
|
|
||||||
/// <returns></returns>
|
|
||||||
Task<List<SmsListData>> GetSmsListData(DateTime checkDate, TypeOfSmsSetting typeOfSmsSetting);
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// ارسال پیامک های یاد آور بدهی
|
|
||||||
/// </summary>
|
|
||||||
/// <returns></returns>
|
|
||||||
Task SendReminderSmsToContractingParties(List<SmsListData> smsListData, string typeOfSms, string sendMessStart, string sendMessEnd);
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// ارسال پیامک یادآور تایید قراداد مالی
|
|
||||||
/// </summary>
|
|
||||||
/// <returns></returns>
|
|
||||||
Task SendInstitutionContractConfirmSmsTask();
|
|
||||||
#endregion
|
|
||||||
|
|
||||||
#region CreateMontlyTransaction
|
#region CreateMontlyTransaction
|
||||||
|
|
||||||
@@ -158,5 +106,21 @@ public interface IInstitutionContractRepository : IRepository<long, InstitutionC
|
|||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
Task<long> GetIdByInstallmentId(long installmentId);
|
Task<long> GetIdByInstallmentId(long installmentId);
|
||||||
|
Task<InstitutionContract> GetPreviousContract(long currentInstitutionContractId);
|
||||||
|
Task<InstitutionContractCreationInquiryResult> CreationInquiry(InstitutionContractCreationInquiryRequest request);
|
||||||
|
Task<InstitutionContractCreationWorkshopsResponse> GetCreationWorkshops(InstitutionContractCreationWorkshopsRequest request);
|
||||||
|
Task<InstitutionContractCreationPlanResponse> GetCreationInstitutionPlan(InstitutionContractCreationPlanRequest request);
|
||||||
|
Task<InstitutionContractCreationPaymentResponse> GetCreationPaymentMethod(InstitutionContractCreationPaymentRequest request);
|
||||||
|
Task<InstitutionContractDiscountResponse> SetDiscountForCreation(InstitutionContractSetDiscountForCreationRequest request);
|
||||||
|
Task<InstitutionContractDiscountResponse> ResetDiscountForCreation(InstitutionContractResetDiscountForExtensionRequest request);
|
||||||
|
Task<OperationResult> CreationComplete(InstitutionContractExtensionCompleteRequest request);
|
||||||
|
Task<InstitutionContract> GetIncludeInstallments(long id);
|
||||||
}
|
}
|
||||||
@@ -0,0 +1,145 @@
|
|||||||
|
using _0_Framework.Application.Enums;
|
||||||
|
using _0_Framework.Domain;
|
||||||
|
using CompanyManagment.App.Contracts.InstitutionContract;
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace Company.Domain.InstitutionContractAgg;
|
||||||
|
|
||||||
|
public interface IInstitutionContractSmsServiceRepository : IRepository<long, InstitutionContract>
|
||||||
|
{
|
||||||
|
#region reminderSMs
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// ارسال پیامک یادآور تایید قراداد مالی
|
||||||
|
/// </summary>
|
||||||
|
/// <returns></returns>
|
||||||
|
Task SendInstitutionContractConfirmSmsTask();
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
//هشدار و اقدام قضایی
|
||||||
|
#region WarningOrLegalActionSmsListData
|
||||||
|
/// <summary>
|
||||||
|
/// اجرای تسک پیامک هشدار یا اقدام قضایی
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="typeOfSmsSetting"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
Task SendWarningOrLegalActionSmsTask(TypeOfSmsSetting typeOfSmsSetting);
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// دریافت لیست بدهکاران آبی جهت هشدار یا اقدام قضایی
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="typeOfSmsSetting"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
Task<List<SmsListData>> GetWarningOrLegalActionSmsListData(TypeOfSmsSetting typeOfSmsSetting);
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// ارسال پیامک هشدار یا اقدام قضایی
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="smsListData"></param>
|
||||||
|
/// <param name="typeOfSmsSetting"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
Task SendWarningOrLegalActionSms(List<SmsListData> smsListData, TypeOfSmsSetting typeOfSmsSetting);
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
//بلاک - آنبلاک - پیامک بلاک -
|
||||||
|
// غیر فعال سازی قراداد های پایان یافته
|
||||||
|
#region Block
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// ارسال پیامک مسدودی از طرف بک گراند سرویس
|
||||||
|
/// </summary>
|
||||||
|
/// <returns></returns>
|
||||||
|
Task SendBlockSmsForBackgroundTask();
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// دریافت لیست واجد شرایط بلاک
|
||||||
|
/// جهت ارسال پیامک مسدودی
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="checkDate"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
Task<List<BlockSmsListData>> GetBlockListData(DateTime checkDate);
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// ارسال پیامک مسدودی
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="smsListData"></param>
|
||||||
|
/// <param name="typeOfSms"></param>
|
||||||
|
/// <param name="sendMessStart"></param>
|
||||||
|
/// <param name="sendMessEnd"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
Task SendBlockSmsToContractingParties(List<BlockSmsListData> smsListData, string typeOfSms,
|
||||||
|
string sendMessStart, string sendMessEnd);
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// بلاک سازی
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="checkDate"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
Task Block(DateTime checkDate);
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// دریافت لیست بدهکارانی که باید بلاک شوند
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="checkDate"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
Task<List<long>> GetToBeBlockList(DateTime checkDate);
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// آنبلاک
|
||||||
|
/// </summary>
|
||||||
|
/// <returns></returns>
|
||||||
|
Task UnBlock();
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// غیر فعالسازی قرارداد های پایان یافته
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="checkDate"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
Task DeActiveInstitutionEndOfContract(DateTime checkDate);
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// غیرفعال سازس قرارداد های آبی که بدهی ندارند
|
||||||
|
/// </summary>
|
||||||
|
/// <returns></returns>
|
||||||
|
Task BlueDeActiveAfterZeroDebt();
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
|
||||||
|
#region ReminderSMS
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// دریافت لیست - ارسال پیامک
|
||||||
|
/// فراخوانی از سمت بک گراند سرویس
|
||||||
|
/// </summary>
|
||||||
|
/// <returns></returns>
|
||||||
|
Task<bool> SendReminderSmsForBackgroundTask();
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// ارسال پیامک صورت حساب ماهانه
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="now"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
Task SendMonthlySms(DateTime now);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
///دریافت لیست بدهکارن
|
||||||
|
/// جهت ارسال پیامک
|
||||||
|
/// </summary>
|
||||||
|
/// <returns></returns>
|
||||||
|
Task<List<SmsListData>> GetSmsListData(DateTime checkDate, TypeOfSmsSetting typeOfSmsSetting);
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// ارسال پیامک های یاد آور بدهی
|
||||||
|
/// </summary>
|
||||||
|
/// <returns></returns>
|
||||||
|
Task SendReminderSmsToContractingParties(List<SmsListData> smsListData, string typeOfSms, string sendMessStart, string sendMessEnd);
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
}
|
||||||
@@ -275,6 +275,11 @@ public class InstitutionContract : EntityBase
|
|||||||
{
|
{
|
||||||
SigningType = signingType;
|
SigningType = signingType;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void AddAmendment(InstitutionContractAmendment amendment)
|
||||||
|
{
|
||||||
|
Amendments.Add(amendment);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public class InstitutionContractAmendment : EntityBase
|
public class InstitutionContractAmendment : EntityBase
|
||||||
@@ -282,14 +287,15 @@ public class InstitutionContractAmendment : EntityBase
|
|||||||
private InstitutionContractAmendment(){}
|
private InstitutionContractAmendment(){}
|
||||||
public InstitutionContractAmendment(long institutionContractId,
|
public InstitutionContractAmendment(long institutionContractId,
|
||||||
List<InstitutionContractInstallment> installments, double amount, bool hasInstallment,
|
List<InstitutionContractInstallment> installments, double amount, bool hasInstallment,
|
||||||
InstitutionContractAmendmentChange amendmentChange, long lawId)
|
List<InstitutionContractAmendmentChange> amendmentChanges, long lawId)
|
||||||
{
|
{
|
||||||
InstitutionContractId = institutionContractId;
|
InstitutionContractId = institutionContractId;
|
||||||
Installments = installments is { Count: > 0} ? installments : [];
|
Installments = installments is { Count: > 0} ? installments : [];
|
||||||
Amount = amount;
|
Amount = amount;
|
||||||
HasInstallment = hasInstallment;
|
HasInstallment = hasInstallment;
|
||||||
AmendmentChanges = [amendmentChange];
|
AmendmentChanges = amendmentChanges;
|
||||||
LawId = lawId;
|
LawId = lawId;
|
||||||
|
VerificationStatus = InstitutionContractVerificationStatus.PendingForVerify;
|
||||||
}
|
}
|
||||||
|
|
||||||
public long InstitutionContractId { get; set; }
|
public long InstitutionContractId { get; set; }
|
||||||
@@ -303,6 +309,15 @@ public class InstitutionContractAmendment : EntityBase
|
|||||||
|
|
||||||
public long LawId { get; set; }
|
public long LawId { get; set; }
|
||||||
|
|
||||||
|
|
||||||
|
public string VerifierPhoneNumber { get; private set; }
|
||||||
|
|
||||||
|
public string VerifierFullName { get; private set; }
|
||||||
|
|
||||||
|
public InstitutionContractVerificationStatus VerificationStatus { get; set; }
|
||||||
|
|
||||||
|
public DateTime VerifyCodeCreation { get; set; }
|
||||||
|
|
||||||
public void SetVerifyCode(string code,string verifierFullName, string verifierPhoneNumber)
|
public void SetVerifyCode(string code,string verifierFullName, string verifierPhoneNumber)
|
||||||
{
|
{
|
||||||
VerifyCode = code;
|
VerifyCode = code;
|
||||||
@@ -310,25 +325,22 @@ public class InstitutionContractAmendment : EntityBase
|
|||||||
VerifierFullName = verifierFullName;
|
VerifierFullName = verifierFullName;
|
||||||
VerifierPhoneNumber = verifierPhoneNumber;
|
VerifierPhoneNumber = verifierPhoneNumber;
|
||||||
}
|
}
|
||||||
|
public void Verified()
|
||||||
public string VerifierPhoneNumber { get; private set; }
|
{
|
||||||
|
VerificationStatus = InstitutionContractVerificationStatus.Verified;
|
||||||
public string VerifierFullName { get; private set; }
|
}
|
||||||
|
|
||||||
public DateTime VerifyCodeCreation { get; set; }
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public class InstitutionContractAmendmentChange : EntityBase
|
public class InstitutionContractAmendmentChange : EntityBase
|
||||||
{
|
{
|
||||||
private InstitutionContractAmendmentChange() { }
|
private InstitutionContractAmendmentChange() { }
|
||||||
private InstitutionContractAmendmentChange(long institutionContractAmendmentId,
|
|
||||||
InstitutionContractAmendment institutionContractAmendment, InstitutionContractAmendmentChangeType changeType,
|
private InstitutionContractAmendmentChange(InstitutionContractAmendmentChangeType changeType,
|
||||||
DateTime changeDateGr, bool? hasRollCallPlan, bool? hasCustomizeCheckoutPlan, bool? hasContractPlan,
|
DateTime changeDateGr, bool? hasCustomizeCheckoutPlan, bool? hasContractPlan,
|
||||||
bool? hasContractPlanInPerson, bool? hasInsurancePlan, bool? hasInsurancePlanInPerson, int? personnelCount,
|
bool? hasContractPlanInPerson, bool? hasInsurancePlan, bool? hasInsurancePlanInPerson, int? personnelCount,
|
||||||
long? workshopDetailsId)
|
bool? hasRollCallPlan, bool? hasRollCallInPerson,
|
||||||
|
long? currentWorkshopId, int personnelCountDifference)
|
||||||
{
|
{
|
||||||
InstitutionContractAmendmentId = institutionContractAmendmentId;
|
|
||||||
InstitutionContractAmendment = institutionContractAmendment;
|
|
||||||
ChangeType = changeType;
|
ChangeType = changeType;
|
||||||
ChangeDateGr = changeDateGr;
|
ChangeDateGr = changeDateGr;
|
||||||
HasRollCallPlan = hasRollCallPlan;
|
HasRollCallPlan = hasRollCallPlan;
|
||||||
@@ -338,9 +350,80 @@ public class InstitutionContractAmendmentChange : EntityBase
|
|||||||
HasInsurancePlan = hasInsurancePlan;
|
HasInsurancePlan = hasInsurancePlan;
|
||||||
HasInsurancePlanInPerson = hasInsurancePlanInPerson;
|
HasInsurancePlanInPerson = hasInsurancePlanInPerson;
|
||||||
PersonnelCount = personnelCount;
|
PersonnelCount = personnelCount;
|
||||||
WorkshopDetailsId = workshopDetailsId;
|
PersonnelCountDifference = personnelCountDifference;
|
||||||
|
CurrentWorkshopId = currentWorkshopId;
|
||||||
|
HasRollCallInPerson = hasRollCallInPerson;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// تغییر تعداد پرسنل
|
||||||
|
/// </summary>
|
||||||
|
public static InstitutionContractAmendmentChange CreatePersonCountChange(
|
||||||
|
DateTime changeDateGr, int personnelCount, int personnelCountDifference,
|
||||||
|
long currentWorkshopId)
|
||||||
|
{
|
||||||
|
return new InstitutionContractAmendmentChange(
|
||||||
|
changeType: InstitutionContractAmendmentChangeType.PersonCount,
|
||||||
|
changeDateGr: changeDateGr,
|
||||||
|
hasCustomizeCheckoutPlan: null,
|
||||||
|
hasContractPlan: null,
|
||||||
|
hasContractPlanInPerson: null,
|
||||||
|
hasInsurancePlan: null,
|
||||||
|
hasInsurancePlanInPerson: null,
|
||||||
|
personnelCount: personnelCount,
|
||||||
|
hasRollCallPlan: null,
|
||||||
|
hasRollCallInPerson: null,
|
||||||
|
currentWorkshopId: currentWorkshopId,
|
||||||
|
personnelCountDifference: personnelCountDifference);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// تغییر خدمات
|
||||||
|
/// </summary>
|
||||||
|
public static InstitutionContractAmendmentChange CreateServicesChange(
|
||||||
|
DateTime changeDateGr, long currentWorkshopId, bool hasRollCallPlan, bool hasRollCallInPerson,
|
||||||
|
bool hasCustomizeCheckoutPlan, bool hasContractPlan, bool hasContractPlanInPerson,
|
||||||
|
bool hasInsurancePlan, bool hasInsurancePlanInPerson)
|
||||||
|
{
|
||||||
|
return new InstitutionContractAmendmentChange(
|
||||||
|
changeType: InstitutionContractAmendmentChangeType.Services,
|
||||||
|
changeDateGr: changeDateGr,
|
||||||
|
hasCustomizeCheckoutPlan: hasCustomizeCheckoutPlan,
|
||||||
|
hasContractPlan: hasContractPlan,
|
||||||
|
hasContractPlanInPerson: hasContractPlanInPerson,
|
||||||
|
hasInsurancePlan: hasInsurancePlan,
|
||||||
|
hasInsurancePlanInPerson: hasInsurancePlanInPerson,
|
||||||
|
personnelCount: null,
|
||||||
|
hasRollCallPlan: hasRollCallPlan,
|
||||||
|
hasRollCallInPerson: hasRollCallInPerson,
|
||||||
|
currentWorkshopId: currentWorkshopId,
|
||||||
|
personnelCountDifference: 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// ایجاد کارگاه جدید
|
||||||
|
/// </summary>
|
||||||
|
public static InstitutionContractAmendmentChange CreateWorkshopCreatedChange(
|
||||||
|
DateTime changeDateGr, bool hasRollCallPlan, bool hasRollCallInPerson,
|
||||||
|
bool hasCustomizeCheckoutPlan, bool hasContractPlan, bool hasContractPlanInPerson,
|
||||||
|
bool hasInsurancePlan, bool hasInsurancePlanInPerson,int personnelCount)
|
||||||
|
{
|
||||||
|
return new InstitutionContractAmendmentChange(
|
||||||
|
changeType: InstitutionContractAmendmentChangeType.WorkshopCreated,
|
||||||
|
changeDateGr: changeDateGr,
|
||||||
|
hasCustomizeCheckoutPlan: hasCustomizeCheckoutPlan,
|
||||||
|
hasContractPlan: hasContractPlan,
|
||||||
|
hasContractPlanInPerson: hasContractPlanInPerson,
|
||||||
|
hasInsurancePlan: hasInsurancePlan,
|
||||||
|
hasInsurancePlanInPerson: hasInsurancePlanInPerson,
|
||||||
|
personnelCount: personnelCount,
|
||||||
|
hasRollCallPlan: hasRollCallPlan,
|
||||||
|
hasRollCallInPerson: hasRollCallInPerson,
|
||||||
|
currentWorkshopId: null,
|
||||||
|
personnelCountDifference: 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
public long InstitutionContractAmendmentId { get; private set; }
|
public long InstitutionContractAmendmentId { get; private set; }
|
||||||
public InstitutionContractAmendment InstitutionContractAmendment { get; private set; }
|
public InstitutionContractAmendment InstitutionContractAmendment { get; private set; }
|
||||||
public InstitutionContractAmendmentChangeType ChangeType { get; private set; }
|
public InstitutionContractAmendmentChangeType ChangeType { get; private set; }
|
||||||
@@ -351,6 +434,8 @@ public class InstitutionContractAmendmentChange : EntityBase
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
public bool? HasRollCallPlan { get; private set; }
|
public bool? HasRollCallPlan { get; private set; }
|
||||||
|
|
||||||
|
public bool? HasRollCallInPerson { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// پلن فیش غیر رسمی
|
/// پلن فیش غیر رسمی
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@@ -381,10 +466,16 @@ public class InstitutionContractAmendmentChange : EntityBase
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
public int? PersonnelCount { get; private set; }
|
public int? PersonnelCount { get; private set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// مقدار تغییرات تعداد پرسنل
|
||||||
|
/// </summary>
|
||||||
|
public int PersonnelCountDifference { get; set; }
|
||||||
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// تعداد کارگاه
|
/// تعداد کارگاه
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public long? WorkshopDetailsId { get; private set; }
|
public long? CurrentWorkshopId { get; private set; }
|
||||||
}
|
}
|
||||||
|
|
||||||
public enum InstitutionContractAmendmentChangeType
|
public enum InstitutionContractAmendmentChangeType
|
||||||
|
|||||||
@@ -9,7 +9,7 @@ public class InstitutionContractWorkshopBase:EntityBase
|
|||||||
protected InstitutionContractWorkshopBase(){}
|
protected InstitutionContractWorkshopBase(){}
|
||||||
public InstitutionContractWorkshopBase(string workshopName, bool hasRollCallPlan,bool hasRollCallPlanInPerson,
|
public InstitutionContractWorkshopBase(string workshopName, bool hasRollCallPlan,bool hasRollCallPlanInPerson,
|
||||||
bool hasCustomizeCheckoutPlan, bool hasContractPlan,bool hasContractPlanInPerson,bool hasInsurancePlan,bool hasInsurancePlanInPerson,
|
bool hasCustomizeCheckoutPlan, bool hasContractPlan,bool hasContractPlanInPerson,bool hasInsurancePlan,bool hasInsurancePlanInPerson,
|
||||||
int personnelCount, double price )
|
int personnelCount, double price,bool isAmendment )
|
||||||
{
|
{
|
||||||
WorkshopName = workshopName;
|
WorkshopName = workshopName;
|
||||||
Services = new WorkshopServices(hasInsurancePlan, hasInsurancePlanInPerson,
|
Services = new WorkshopServices(hasInsurancePlan, hasInsurancePlanInPerson,
|
||||||
@@ -17,7 +17,10 @@ public class InstitutionContractWorkshopBase:EntityBase
|
|||||||
PersonnelCount = personnelCount;
|
PersonnelCount = personnelCount;
|
||||||
Price = price;
|
Price = price;
|
||||||
Employers = [];
|
Employers = [];
|
||||||
|
IsAmendment = isAmendment;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// شناسه کارگاه
|
/// شناسه کارگاه
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@@ -43,6 +46,10 @@ public class InstitutionContractWorkshopBase:EntityBase
|
|||||||
|
|
||||||
public double Price { get; private set; }
|
public double Price { get; private set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// جهت نمایش دادن اینکه آیا این کارگاه مربوط به ارتقا قرارداد است یا خیر
|
||||||
|
/// </summary>
|
||||||
|
public bool IsAmendment { get; set; }
|
||||||
|
|
||||||
public List<InstitutionContractWorkshopDetailEmployer> Employers { get; private set; } = new();
|
public List<InstitutionContractWorkshopDetailEmployer> Employers { get; private set; } = new();
|
||||||
|
|
||||||
|
|||||||
@@ -11,9 +11,9 @@ public class InstitutionContractWorkshopCurrent:InstitutionContractWorkshopBase
|
|||||||
bool hasRollCallPlanInPerson, bool hasCustomizeCheckoutPlan, bool hasContractPlan,
|
bool hasRollCallPlanInPerson, bool hasCustomizeCheckoutPlan, bool hasContractPlan,
|
||||||
bool hasContractPlanInPerson, bool hasInsurancePlan, bool hasInsurancePlanInPerson,
|
bool hasContractPlanInPerson, bool hasInsurancePlan, bool hasInsurancePlanInPerson,
|
||||||
int personnelCount, double price,long institutionContractWorkshopGroupId,
|
int personnelCount, double price,long institutionContractWorkshopGroupId,
|
||||||
InstitutionContractWorkshopGroup workshopGroup,long workshopId,long initialWorkshopId) : base(workshopName, hasRollCallPlan,
|
InstitutionContractWorkshopGroup workshopGroup,long workshopId,bool isAmendment, long initialWorkshopId) : base(workshopName, hasRollCallPlan,
|
||||||
hasRollCallPlanInPerson, hasCustomizeCheckoutPlan, hasContractPlan,
|
hasRollCallPlanInPerson, hasCustomizeCheckoutPlan, hasContractPlan,
|
||||||
hasContractPlanInPerson, hasInsurancePlan, hasInsurancePlanInPerson, personnelCount, price)
|
hasContractPlanInPerson, hasInsurancePlan, hasInsurancePlanInPerson, personnelCount, price,isAmendment)
|
||||||
{
|
{
|
||||||
InstitutionContractWorkshopGroupId = institutionContractWorkshopGroupId;
|
InstitutionContractWorkshopGroupId = institutionContractWorkshopGroupId;
|
||||||
WorkshopGroup = workshopGroup;
|
WorkshopGroup = workshopGroup;
|
||||||
|
|||||||
@@ -23,6 +23,8 @@ public class InstitutionContractWorkshopGroup : EntityBase
|
|||||||
!InitialWorkshops.Cast<InstitutionContractWorkshopBase>()
|
!InitialWorkshops.Cast<InstitutionContractWorkshopBase>()
|
||||||
.SequenceEqual(CurrentWorkshops.Cast<InstitutionContractWorkshopBase>());
|
.SequenceEqual(CurrentWorkshops.Cast<InstitutionContractWorkshopBase>());
|
||||||
|
|
||||||
|
public bool IsInPersonContract => InitialWorkshops.Any(x => x.Services.ContractInPerson);
|
||||||
|
|
||||||
public InstitutionContractWorkshopGroup(long institutionContractId,
|
public InstitutionContractWorkshopGroup(long institutionContractId,
|
||||||
List<InstitutionContractWorkshopInitial> initialDetails)
|
List<InstitutionContractWorkshopInitial> initialDetails)
|
||||||
{
|
{
|
||||||
@@ -32,6 +34,13 @@ public class InstitutionContractWorkshopGroup : EntityBase
|
|||||||
LastModifiedDate = DateTime.Now;
|
LastModifiedDate = DateTime.Now;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void AddAmendmentWorkshops(List<InstitutionContractWorkshopInitial> amendmentDetails)
|
||||||
|
{
|
||||||
|
InitialWorkshops.AddRange(amendmentDetails);
|
||||||
|
LastModifiedDate = DateTime.Now;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
public void UpdateCurrentWorkshops(List<InstitutionContractWorkshopCurrent> updatedDetails)
|
public void UpdateCurrentWorkshops(List<InstitutionContractWorkshopCurrent> updatedDetails)
|
||||||
{
|
{
|
||||||
CurrentWorkshops = updatedDetails.ToList();
|
CurrentWorkshops = updatedDetails.ToList();
|
||||||
|
|||||||
@@ -11,9 +11,9 @@ public class InstitutionContractWorkshopInitial:InstitutionContractWorkshopBase
|
|||||||
public InstitutionContractWorkshopInitial(string workshopName, bool hasRollCallPlan,
|
public InstitutionContractWorkshopInitial(string workshopName, bool hasRollCallPlan,
|
||||||
bool hasRollCallPlanInPerson, bool hasCustomizeCheckoutPlan, bool hasContractPlan,
|
bool hasRollCallPlanInPerson, bool hasCustomizeCheckoutPlan, bool hasContractPlan,
|
||||||
bool hasContractPlanInPerson, bool hasInsurancePlan, bool hasInsurancePlanInPerson,
|
bool hasContractPlanInPerson, bool hasInsurancePlan, bool hasInsurancePlanInPerson,
|
||||||
int personnelCount, double price) : base(workshopName, hasRollCallPlan,
|
int personnelCount, double price,bool isAmendment =false) : base(workshopName, hasRollCallPlan,
|
||||||
hasRollCallPlanInPerson, hasCustomizeCheckoutPlan, hasContractPlan, hasContractPlanInPerson,
|
hasRollCallPlanInPerson, hasCustomizeCheckoutPlan, hasContractPlan, hasContractPlanInPerson,
|
||||||
hasInsurancePlan, hasInsurancePlanInPerson, personnelCount, price)
|
hasInsurancePlan, hasInsurancePlanInPerson, personnelCount, price,isAmendment)
|
||||||
{
|
{
|
||||||
WorkshopCreated = false;
|
WorkshopCreated = false;
|
||||||
}
|
}
|
||||||
@@ -31,7 +31,8 @@ public class InstitutionContractWorkshopInitial:InstitutionContractWorkshopBase
|
|||||||
WorkshopCreated = true;
|
WorkshopCreated = true;
|
||||||
WorkshopCurrent = new InstitutionContractWorkshopCurrent(WorkshopName,Services.RollCall,Services.RollCallInPerson,
|
WorkshopCurrent = new InstitutionContractWorkshopCurrent(WorkshopName,Services.RollCall,Services.RollCallInPerson,
|
||||||
Services.CustomizeCheckout,Services.Contract,Services.ContractInPerson,Services.Insurance,
|
Services.CustomizeCheckout,Services.Contract,Services.ContractInPerson,Services.Insurance,
|
||||||
Services.InsuranceInPerson,PersonnelCount,Price,InstitutionContractWorkshopGroupId,WorkshopGroup,workshopId,id);
|
Services.InsuranceInPerson,PersonnelCount,Price,InstitutionContractWorkshopGroupId,WorkshopGroup,workshopId,
|
||||||
|
IsAmendment, id);
|
||||||
WorkshopCurrent.SetEmployers(Employers.Select(x=>x.EmployerId).ToList());
|
WorkshopCurrent.SetEmployers(Employers.Select(x=>x.EmployerId).ToList());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
|
using CompanyManagment.App.Contracts.InstitutionContract;
|
||||||
using MongoDB.Bson;
|
using MongoDB.Bson;
|
||||||
using MongoDB.Bson.Serialization.Attributes;
|
using MongoDB.Bson.Serialization.Attributes;
|
||||||
|
|
||||||
@@ -16,7 +17,7 @@ public class InstitutionContractAmendmentTemp
|
|||||||
NewWorkshops = prevWorkshops.Select(x=> new InstitutionContractAmendmentTempNewWorkshop(
|
NewWorkshops = prevWorkshops.Select(x=> new InstitutionContractAmendmentTempNewWorkshop(
|
||||||
x.WorkshopName, x.CountPerson, x.ContractAndCheckout, x.ContractAndCheckoutInPerson, x.Insurance,
|
x.WorkshopName, x.CountPerson, x.ContractAndCheckout, x.ContractAndCheckoutInPerson, x.Insurance,
|
||||||
x.InsuranceInPerson, x.RollCall, x.RollCallInPerson, x.CustomizeCheckout, x.Price, x.WorkshopId,
|
x.InsuranceInPerson, x.RollCall, x.RollCallInPerson, x.CustomizeCheckout, x.Price, x.WorkshopId,
|
||||||
x.CurrentWorkshopId, 0)).ToList();
|
x.CurrentWorkshopId, 0,x.Id)).ToList();
|
||||||
InstitutionContractId = institutionContractId;
|
InstitutionContractId = institutionContractId;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -25,17 +26,32 @@ public class InstitutionContractAmendmentTemp
|
|||||||
public Guid Id { get; private set; }
|
public Guid Id { get; private set; }
|
||||||
public List<InstitutionContractAmendmentTempPrevWorkshop> PrevWorkshops { get; private set; }
|
public List<InstitutionContractAmendmentTempPrevWorkshop> PrevWorkshops { get; private set; }
|
||||||
public List<InstitutionContractAmendmentTempNewWorkshop> NewWorkshops { get; private set; }
|
public List<InstitutionContractAmendmentTempNewWorkshop> NewWorkshops { get; private set; }
|
||||||
|
|
||||||
|
public InstitutionContractPaymentMonthlyViewModel MonthlyPayment { get; set; }
|
||||||
|
|
||||||
|
public InstitutionContractPaymentOneTimeViewModel OneTimePayment { get; set; }
|
||||||
|
|
||||||
public long InstitutionContractId { get; private set; }
|
public long InstitutionContractId { get; private set; }
|
||||||
|
|
||||||
|
public int MonthDifference { get; set; }
|
||||||
|
public void AddPaymentDetails(InstitutionContractPaymentMonthlyViewModel resMonthly, InstitutionContractPaymentOneTimeViewModel resOneTime, int monthDiff)
|
||||||
|
{
|
||||||
|
MonthlyPayment = resMonthly;
|
||||||
|
OneTimePayment = resOneTime;
|
||||||
|
MonthDifference = monthDiff;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public class InstitutionContractAmendmentTempNewWorkshop : InstitutionContractAmendmentTempPrevWorkshop
|
public class InstitutionContractAmendmentTempNewWorkshop : InstitutionContractAmendmentTempPrevWorkshop
|
||||||
{
|
{
|
||||||
public InstitutionContractAmendmentTempNewWorkshop(string workshopName, int countPerson, bool contractAndCheckout,
|
public InstitutionContractAmendmentTempNewWorkshop(string workshopName, int countPerson, bool contractAndCheckout,
|
||||||
bool contractAndCheckoutInPerson, bool insurance, bool insuranceInPerson, bool rollCall, bool rollCallInPerson,
|
bool contractAndCheckoutInPerson, bool insurance, bool insuranceInPerson, bool rollCall, bool rollCallInPerson,
|
||||||
bool customizeCheckout, double price, long workshopId, long currentWorkshopId,double priceDifference) : base(
|
bool customizeCheckout, double price, long workshopId, long currentWorkshopId,double priceDifference,Guid prevId) : base(
|
||||||
workshopName, countPerson, contractAndCheckout, contractAndCheckoutInPerson, insurance, insuranceInPerson,
|
workshopName, countPerson, contractAndCheckout, contractAndCheckoutInPerson, insurance, insuranceInPerson,
|
||||||
rollCall, rollCallInPerson, customizeCheckout, price, workshopId, currentWorkshopId)
|
rollCall, rollCallInPerson, customizeCheckout, price, workshopId, currentWorkshopId)
|
||||||
{
|
{
|
||||||
|
Id = prevId;
|
||||||
PriceDifference = priceDifference;
|
PriceDifference = priceDifference;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,340 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using _0_Framework.Application;
|
||||||
|
using _0_Framework.Application.Enums;
|
||||||
|
using CompanyManagment.App.Contracts.InstitutionContract;
|
||||||
|
using CompanyManagment.App.Contracts.InstitutionContractContactinfo;
|
||||||
|
using MongoDB.Bson;
|
||||||
|
using MongoDB.Bson.Serialization.Attributes;
|
||||||
|
|
||||||
|
namespace Company.Domain.InstitutionContractCreationTempAgg;
|
||||||
|
|
||||||
|
public class InstitutionContractCreationTemp
|
||||||
|
{
|
||||||
|
public InstitutionContractCreationTemp()
|
||||||
|
{
|
||||||
|
Id = Guid.NewGuid();
|
||||||
|
}
|
||||||
|
|
||||||
|
[BsonId] // Specifies this field as the _id in MongoDB
|
||||||
|
[BsonRepresentation(BsonType.String)] // Ensures the GUID is stored as a string
|
||||||
|
public Guid Id { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// نوع حقوقی طرف قرارداد (حقیقی یا حقوقی)
|
||||||
|
/// </summary>
|
||||||
|
public LegalType ContractingPartyLegalType { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// اطلاعات شخص حقیقی
|
||||||
|
/// </summary>
|
||||||
|
public InstitutionContractCreationTempRealParty RealParty { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// اطلاعات شخص حقوقی
|
||||||
|
/// </summary>
|
||||||
|
public InstitutionContractCreationTempLegalParty LegalParty { get; set; }
|
||||||
|
|
||||||
|
public string Address { get; set; }
|
||||||
|
public string City { get; set; }
|
||||||
|
public string Province { get; set; }
|
||||||
|
public List<EditContactInfo> ContactInfos { get; set; }
|
||||||
|
public long RepresentativeId { get; set; }
|
||||||
|
|
||||||
|
|
||||||
|
public List<InstitutionContractCreationTempWorkshop> Workshops { get; set; }
|
||||||
|
|
||||||
|
public InstitutionContractCreationPlanDetail OneMonth { get; set; }
|
||||||
|
public InstitutionContractCreationPlanDetail ThreeMonths { get; set; }
|
||||||
|
public InstitutionContractCreationPlanDetail SixMonths { get; set; }
|
||||||
|
public InstitutionContractCreationPlanDetail TwelveMonths { get; set; }
|
||||||
|
public InstitutionContractPaymentMonthlyViewModel MonthlyPayment { get; set; }
|
||||||
|
public InstitutionContractPaymentOneTimeViewModel OneTimePayment { get; set; }
|
||||||
|
|
||||||
|
public bool HasContractInPerson { get; set; }
|
||||||
|
|
||||||
|
public InstitutionContractDuration? Duration { get; set; }
|
||||||
|
|
||||||
|
public void SetContractingPartyInfo(LegalType legalType,
|
||||||
|
InstitutionContractCreationTempRealParty realParty,
|
||||||
|
InstitutionContractCreationTempLegalParty legalParty)
|
||||||
|
{
|
||||||
|
ContractingPartyLegalType = legalType;
|
||||||
|
RealParty = realParty;
|
||||||
|
LegalParty = legalParty;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void SetWorkshopsAndPlanAmounts(List<InstitutionContractCreationTempWorkshop> workshops,
|
||||||
|
InstitutionContractCreationPlanDetail oneMonth,
|
||||||
|
InstitutionContractCreationPlanDetail threeMonth, InstitutionContractCreationPlanDetail sixMonth,
|
||||||
|
InstitutionContractCreationPlanDetail twelveMonth, bool hasContractInPerson)
|
||||||
|
{
|
||||||
|
Workshops = workshops;
|
||||||
|
OneMonth = oneMonth;
|
||||||
|
ThreeMonths = threeMonth;
|
||||||
|
SixMonths = sixMonth;
|
||||||
|
TwelveMonths = twelveMonth;
|
||||||
|
HasContractInPerson = hasContractInPerson;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void SetAmountAndDuration(InstitutionContractDuration duration,InstitutionContractPaymentMonthlyViewModel monthly,
|
||||||
|
InstitutionContractPaymentOneTimeViewModel oneTime)
|
||||||
|
{
|
||||||
|
Duration = duration;
|
||||||
|
MonthlyPayment = monthly;
|
||||||
|
OneTimePayment = oneTime;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public void SetContractingPartyContactInfo(string address, string city, string province, List<EditContactInfo> requestContactInfos,long representativeId)
|
||||||
|
{
|
||||||
|
Address = address;
|
||||||
|
City = city;
|
||||||
|
Province = province;
|
||||||
|
ContactInfos = requestContactInfos;
|
||||||
|
RepresentativeId = representativeId;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public class InstitutionContractCreationTempLegalParty
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// آیدی طرف حساب در صورتی که از قبل ایجاد شده باشد
|
||||||
|
/// </summary>
|
||||||
|
public long Id { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// نام شرکت
|
||||||
|
/// </summary>
|
||||||
|
public string CompanyName { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// شماره ثبت
|
||||||
|
/// </summary>
|
||||||
|
public string RegisterId { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// شناسه ملی شرکت
|
||||||
|
/// </summary>
|
||||||
|
public string NationalId { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// شماره تلفن شرکت
|
||||||
|
/// </summary>
|
||||||
|
public string PhoneNumber { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// شناسه موقت طرف قرارداد
|
||||||
|
/// </summary>
|
||||||
|
public long ContractingPartyTempId { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// کد ملی نماینده قانونی
|
||||||
|
/// </summary>
|
||||||
|
public string NationalCode { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// تاریخ تولد نماینده قانونی فارسی
|
||||||
|
/// </summary>
|
||||||
|
public string BirthDateFa { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// نام نماینده قانونی
|
||||||
|
/// </summary>
|
||||||
|
public string FName { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// نام خانوادگی نماینده قانونی
|
||||||
|
/// </summary>
|
||||||
|
public string LName { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// نام پدر نماینده قانونی
|
||||||
|
/// </summary>
|
||||||
|
public string FatherName { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// شماره شناسنامه نماینده قانونی
|
||||||
|
/// </summary>
|
||||||
|
public string IdNumber { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// وضعیت احراز هویت نماینده قانونی
|
||||||
|
/// </summary>
|
||||||
|
public bool IsAuth { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// سمت نماینده قانونی در شرکت
|
||||||
|
/// </summary>
|
||||||
|
public string Position { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// جنسیت نماینده قانونی
|
||||||
|
/// </summary>
|
||||||
|
public Gender Gender { get; set; }
|
||||||
|
|
||||||
|
public string IdNumberSeri { get; set; }
|
||||||
|
|
||||||
|
public string IdNumberSerial { get; set; }
|
||||||
|
}
|
||||||
|
|
||||||
|
public class InstitutionContractCreationTempRealParty
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// آیدی طرف حساب در صورتی که از قبل ایجاد شده باشد
|
||||||
|
/// </summary>
|
||||||
|
public long Id { get; set; }
|
||||||
|
/// <summary>
|
||||||
|
/// کد ملی
|
||||||
|
/// </summary>
|
||||||
|
public string NationalCode { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// تاریخ تولد فارسی
|
||||||
|
/// </summary>
|
||||||
|
public string BirthDateFa { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// شماره تلفن
|
||||||
|
/// </summary>
|
||||||
|
public string PhoneNumber { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// وضعیت احراز هویت
|
||||||
|
/// </summary>
|
||||||
|
public bool IsAuth { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// نام
|
||||||
|
/// </summary>
|
||||||
|
public string FName { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// نام خانوادگی
|
||||||
|
/// </summary>
|
||||||
|
public string LName { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// نام پدر
|
||||||
|
/// </summary>
|
||||||
|
public string FatherName { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// شماره شناسنامه
|
||||||
|
/// </summary>
|
||||||
|
public string IdNumber { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// شناسه موقت طرف قرارداد
|
||||||
|
/// </summary>
|
||||||
|
public long ContractingPartyTempId { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// جنسیت
|
||||||
|
/// </summary>
|
||||||
|
public Gender Gender { get; set; }
|
||||||
|
|
||||||
|
public string IdNumberSeri { get; set; }
|
||||||
|
|
||||||
|
public string IdNumberSerial { get; set; }
|
||||||
|
}
|
||||||
|
|
||||||
|
public class InstitutionContractCreationTempPlan
|
||||||
|
{
|
||||||
|
public InstitutionContractCreationTempPlan(string contractStart, string contractEnd,
|
||||||
|
string oneMonthPaymentDiscounted, string oneMonthDiscount, string oneMonthOriginalPayment,
|
||||||
|
string totalPayment, string dailyCompensation, string obligation)
|
||||||
|
{
|
||||||
|
ContractStart = contractStart;
|
||||||
|
ContractEnd = contractEnd;
|
||||||
|
OneMonthPaymentDiscounted = oneMonthPaymentDiscounted;
|
||||||
|
OneMonthDiscount = oneMonthDiscount;
|
||||||
|
OneMonthOriginalPayment = oneMonthOriginalPayment;
|
||||||
|
TotalPayment = totalPayment;
|
||||||
|
DailyCompensation = dailyCompensation;
|
||||||
|
Obligation = obligation;
|
||||||
|
}
|
||||||
|
|
||||||
|
public string ContractStart { get; set; }
|
||||||
|
public string ContractEnd { get; set; }
|
||||||
|
public string OneMonthPaymentDiscounted { get; set; }
|
||||||
|
public string OneMonthDiscount { get; set; }
|
||||||
|
public string OneMonthOriginalPayment { get; set; }
|
||||||
|
public string TotalPayment { get; set; }
|
||||||
|
public string DailyCompensation { get; set; }
|
||||||
|
public string Obligation { get; set; }
|
||||||
|
}
|
||||||
|
|
||||||
|
public class InstitutionContractCreationTempWorkshop
|
||||||
|
{
|
||||||
|
public InstitutionContractCreationTempWorkshop(string workshopName, int countPerson, bool contractAndCheckout, bool contractAndCheckoutInPerson,
|
||||||
|
bool insurance, bool insuranceInPerson,
|
||||||
|
bool rollCall,bool rollCallInPerson, bool customizeCheckout,double price,long workshopId)
|
||||||
|
{
|
||||||
|
WorkshopName = workshopName;
|
||||||
|
CountPerson = countPerson;
|
||||||
|
ContractAndCheckout = contractAndCheckout;
|
||||||
|
Insurance = insurance;
|
||||||
|
RollCall = rollCall;
|
||||||
|
CustomizeCheckout = customizeCheckout;
|
||||||
|
ContractAndCheckoutInPerson = contractAndCheckoutInPerson;
|
||||||
|
InsuranceInPerson = insuranceInPerson;
|
||||||
|
RollCallInPerson = rollCallInPerson;
|
||||||
|
Price = price;
|
||||||
|
WorkshopId = workshopId;
|
||||||
|
}
|
||||||
|
|
||||||
|
public long WorkshopId { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// نام کارگاه
|
||||||
|
/// </summary>
|
||||||
|
public string WorkshopName { get; private set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// تعداد پرسنل
|
||||||
|
/// </summary>
|
||||||
|
public int CountPerson { get; private set; }
|
||||||
|
|
||||||
|
|
||||||
|
#region ServiceSelection
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// قرارداد و تصفیه
|
||||||
|
/// </summary>
|
||||||
|
public bool ContractAndCheckout { get; private set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// بیمه
|
||||||
|
/// </summary>
|
||||||
|
public bool Insurance { get; private set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// حضورغباب
|
||||||
|
/// </summary>
|
||||||
|
public bool RollCall { get; private set; }
|
||||||
|
|
||||||
|
public bool RollCallInPerson { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// فیش غیر رسمی
|
||||||
|
/// </summary>
|
||||||
|
public bool CustomizeCheckout { get;private set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// خدمات حضوری قرداد و تصفیه
|
||||||
|
/// </summary>
|
||||||
|
public bool ContractAndCheckoutInPerson { get; private set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// خدمات حضوری بیمه
|
||||||
|
/// </summary>
|
||||||
|
public bool InsuranceInPerson { get; private set; }
|
||||||
|
|
||||||
|
public double Price{ get; set; }
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -0,0 +1,34 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace Company.Domain.InstitutionContractSendFlagAgg;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Interface برای Repository مربوط به فلگ ارسال قرارداد
|
||||||
|
/// </summary>
|
||||||
|
public interface IInstitutionContractSendFlagRepository
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// ایجاد یک رکورد جدید برای فلگ ارسال قرارداد
|
||||||
|
/// </summary>
|
||||||
|
Task Create(InstitutionContractSendFlag flag);
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// بازیابی فلگ بر اساس شناسه قرارداد
|
||||||
|
/// </summary>
|
||||||
|
Task<InstitutionContractSendFlag> GetByContractId(long contractId);
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// بهروزرسانی فلگ ارسال
|
||||||
|
/// </summary>
|
||||||
|
Task Update(InstitutionContractSendFlag flag);
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// بررسی اینکه آیا قرارداد ارسال شده است
|
||||||
|
/// </summary>
|
||||||
|
Task<bool> IsContractSent(long contractId);
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
@@ -0,0 +1,82 @@
|
|||||||
|
using System;
|
||||||
|
using MongoDB.Bson;
|
||||||
|
using MongoDB.Bson.Serialization.Attributes;
|
||||||
|
|
||||||
|
namespace Company.Domain.InstitutionContractSendFlagAgg;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// نمایندگی فلگ ارسال قرارداد در MongoDB
|
||||||
|
/// این موجودیت برای ردیابی اینکه آیا قرارداد ارسال شده است استفاده میشود
|
||||||
|
/// </summary>
|
||||||
|
public class InstitutionContractSendFlag
|
||||||
|
{
|
||||||
|
public InstitutionContractSendFlag(long institutionContractId,bool isSent)
|
||||||
|
{
|
||||||
|
Id = Guid.NewGuid();
|
||||||
|
InstitutionContractId = institutionContractId;
|
||||||
|
IsSent = isSent;
|
||||||
|
CreatedDate = DateTime.Now;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// شناسه یکتای MongoDB
|
||||||
|
/// </summary>
|
||||||
|
[BsonId]
|
||||||
|
[BsonRepresentation(BsonType.String)]
|
||||||
|
public Guid Id { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// شناسه قرارداد در SQL
|
||||||
|
/// </summary>
|
||||||
|
public long InstitutionContractId { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// آیا قرارداد ارسال شده است
|
||||||
|
/// </summary>
|
||||||
|
public bool IsSent { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// تاریخ و زمان ارسال
|
||||||
|
/// </summary>
|
||||||
|
public DateTime? SentDate { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// تاریخ و زمان ایجاد رکورد
|
||||||
|
/// </summary>
|
||||||
|
public DateTime CreatedDate { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// تاریخ و زمان آخرین بهروزرسانی
|
||||||
|
/// </summary>
|
||||||
|
public DateTime? LastModifiedDate { get; set; }
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// علامتگذاری قرارداد به عنوان ارسالشده
|
||||||
|
/// </summary>
|
||||||
|
public void MarkAsSent()
|
||||||
|
{
|
||||||
|
IsSent = true;
|
||||||
|
SentDate = DateTime.Now;
|
||||||
|
LastModifiedDate = DateTime.Now;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// بازگردانی علامت ارسال
|
||||||
|
/// </summary>
|
||||||
|
public void MarkAsNotSent()
|
||||||
|
{
|
||||||
|
IsSent = false;
|
||||||
|
SentDate = null;
|
||||||
|
LastModifiedDate = DateTime.Now;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// بهروزرسانی علامت آخری اصلاح
|
||||||
|
/// </summary>
|
||||||
|
public void UpdateLastModified()
|
||||||
|
{
|
||||||
|
LastModifiedDate = DateTime.Now;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@@ -78,6 +78,7 @@ public interface IInsuranceListRepository:IRepository<long, InsuranceList>
|
|||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
Task<List<InsuranceListViewModel>> GetNotCreatedWorkshop(InsuranceListSearchModel searchModel);
|
Task<List<InsuranceListViewModel>> GetNotCreatedWorkshop(InsuranceListSearchModel searchModel);
|
||||||
|
Task<InsuranceClientPrintViewModel> ClientPrintOne(long id);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -11,6 +11,13 @@ public interface IJobRepository : IRepository<long, Job>
|
|||||||
EditJob GetDetails(long id);
|
EditJob GetDetails(long id);
|
||||||
List<JobViewModel> Search(JobSearchModel searchModel);
|
List<JobViewModel> Search(JobSearchModel searchModel);
|
||||||
List<JobViewModel> SearchJobForMain(JobSearchModel searchModel);
|
List<JobViewModel> SearchJobForMain(JobSearchModel searchModel);
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// جستجوس مشاغل
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="searchtText"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
Task<List<JobListDto>> JobSearchSelect(string searchtText);
|
||||||
// Task<List<JobViewModel>> GetJobListByText(string searchtText);
|
// Task<List<JobViewModel>> GetJobListByText(string searchtText);
|
||||||
List<JobViewModel> GetJobListByText(string searchtText);
|
List<JobViewModel> GetJobListByText(string searchtText);
|
||||||
List<JobViewModel> GetJobListByWorkshopId(long workshopId);
|
List<JobViewModel> GetJobListByWorkshopId(long workshopId);
|
||||||
|
|||||||
@@ -1,8 +1,10 @@
|
|||||||
using System;
|
using _0_Framework.Application;
|
||||||
using System.Collections.Generic;
|
|
||||||
using _0_Framework.Application;
|
|
||||||
using _0_Framework.Domain;
|
using _0_Framework.Domain;
|
||||||
|
using CompanyManagment.App.Contracts.InstitutionPlan;
|
||||||
using CompanyManagment.App.Contracts.Leave;
|
using CompanyManagment.App.Contracts.Leave;
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
namespace Company.Domain.LeaveAgg;
|
namespace Company.Domain.LeaveAgg;
|
||||||
|
|
||||||
@@ -10,7 +12,7 @@ public interface ILeaveRepository : IRepository<long, Leave>
|
|||||||
{
|
{
|
||||||
EditLeave GetDetails(long id);
|
EditLeave GetDetails(long id);
|
||||||
List<LeaveViewModel> search(LeaveSearchModel searchModel);
|
List<LeaveViewModel> search(LeaveSearchModel searchModel);
|
||||||
OperationResult RemoveLeave(long id);
|
Task<OperationResult> RemoveLeave(long id);
|
||||||
|
|
||||||
#region Pooya
|
#region Pooya
|
||||||
List<LeaveViewModel> GetByWorkshopIdEmployeeIdInDates(long workshopId, long employeeId, DateTime start, DateTime end);
|
List<LeaveViewModel> GetByWorkshopIdEmployeeIdInDates(long workshopId, long employeeId, DateTime start, DateTime end);
|
||||||
@@ -28,10 +30,35 @@ public interface ILeaveRepository : IRepository<long, Leave>
|
|||||||
LeavePrintViewModel PrintOne(long id);
|
LeavePrintViewModel PrintOne(long id);
|
||||||
List<LeavePrintViewModel> PrintAll(List<long> id);
|
List<LeavePrintViewModel> PrintAll(List<long> id);
|
||||||
|
|
||||||
|
Task<List<LeavePrintResponseViewModel>> PrintAllAsync(List<long> ids, long workshopId);
|
||||||
|
|
||||||
#region Vafa
|
#region Vafa
|
||||||
|
|
||||||
List<LeaveViewModel> LastLeaveMain(LeaveSearchModel searchModel);
|
List<LeaveViewModel> LastLeaveMain(LeaveSearchModel searchModel);
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
bool CheckIfValidToEdit(long id);
|
bool CheckIfValidToEdit(long id);
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// دریافت لیست مرخصی ها در کلاینت
|
||||||
|
/// Api
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="searchModel"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
Task<PagedResult<leaveListDto>> GetList(
|
||||||
|
LeaveListSearchModel searchModel);
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// دریافت لیست گروه بندی شده
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="searchModel"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
Task<List<GroupLeaveListDto>> GetGroupList(LeaveListSearchModel searchModel);
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// پرینت لیستی
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="ids"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
Task<LeaveListPrintDto> ListPrint(List<long> ids);
|
||||||
}
|
}
|
||||||
@@ -1,21 +1,22 @@
|
|||||||
using System;
|
using _0_Framework.Domain;
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Threading.Tasks;
|
|
||||||
using _0_Framework.Domain;
|
|
||||||
using Company.Domain.CustomizeWorkshopEmployeeSettingsAgg.Entities;
|
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.Loan;
|
||||||
|
using CompanyManagment.App.Contracts.Reward;
|
||||||
using CompanyManagment.App.Contracts.RollCall;
|
using CompanyManagment.App.Contracts.RollCall;
|
||||||
using CompanyManagment.App.Contracts.SalaryAid;
|
using CompanyManagment.App.Contracts.SalaryAid;
|
||||||
using CompanyManagment.App.Contracts.WorkingHoursTemp;
|
using CompanyManagment.App.Contracts.WorkingHoursTemp;
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
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, bool rotatingShiftCompute, double dailyWageUnAffected, bool totalLeaveCompute);
|
Task<ComputingViewModel> MandatoryCompute(long employeeId, long workshopId, DateTime contractStart, DateTime contractEnd, CreateWorkingHoursTemp command, bool holidayWorking, bool isStaticCheckout, bool rotatingShiftCompute, double dailyWageUnAffected, bool totalLeaveCompute);
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// محاسبه ساعات کارکرد پرسنل در صورت داشتن حضور غیاب
|
/// محاسبه ساعات کارکرد پرسنل در صورت داشتن حضور غیاب
|
||||||
@@ -53,6 +54,9 @@ public interface IRollCallMandatoryRepository : IRepository<long, RollCall>
|
|||||||
List<SalaryAidViewModel> SalaryAidsForCheckout(long employeeId, long workshopId, DateTime checkoutStart,
|
List<SalaryAidViewModel> SalaryAidsForCheckout(long employeeId, long workshopId, DateTime checkoutStart,
|
||||||
DateTime checkoutEnd);
|
DateTime checkoutEnd);
|
||||||
|
|
||||||
|
List<RewardViewModel> RewardForCheckout(long employeeId, long workshopId, DateTime checkoutEnd,
|
||||||
|
DateTime checkoutStart);
|
||||||
|
|
||||||
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);
|
||||||
}
|
}
|
||||||
@@ -4,6 +4,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.RollCall;
|
using CompanyManagment.App.Contracts.RollCall;
|
||||||
using CompanyManagment.App.Contracts.WorkingHoursTemp;
|
using CompanyManagment.App.Contracts.WorkingHoursTemp;
|
||||||
@@ -25,7 +26,7 @@ namespace Company.Domain.RollCallAgg
|
|||||||
DateTime endSearch);
|
DateTime endSearch);
|
||||||
void RemoveEmployeeRollCallsInDate(long workshopId, long employeeId, DateTime date);
|
void RemoveEmployeeRollCallsInDate(long workshopId, long employeeId, DateTime date);
|
||||||
RollCallsByDateViewModel GetWorkshopRollCallHistory(RollCallSearchModel searchModel);
|
RollCallsByDateViewModel GetWorkshopRollCallHistory(RollCallSearchModel searchModel);
|
||||||
CurrentDayRollCall GetWorkshopCurrentDayRollCalls(long workshopId);
|
CurrentDayRollCall GetWorkshopCurrentDayRollCalls(long workshopId,WorkshopCurrentDayRollCallSearchModel searchModel);
|
||||||
List<PersonnelCheckoutDailyRollCallViewModel> GetEmployeeRollCallsForMonth(IEnumerable<long> employeeIds,
|
List<PersonnelCheckoutDailyRollCallViewModel> GetEmployeeRollCallsForMonth(IEnumerable<long> employeeIds,
|
||||||
long workshopId, DateTime start, DateTime end);
|
long workshopId, DateTime start, DateTime end);
|
||||||
|
|
||||||
@@ -91,5 +92,9 @@ namespace Company.Domain.RollCallAgg
|
|||||||
Task<List<RollCall>> GetRollCallsUntilNowWithWorkshopIdEmployeeIds(long workshopId, List<long> employeeIds,
|
Task<List<RollCall>> GetRollCallsUntilNowWithWorkshopIdEmployeeIds(long workshopId, List<long> employeeIds,
|
||||||
DateTime fromDate);
|
DateTime fromDate);
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
|
Task<PagedResult<RollCallCaseHistoryTitleDto>> GetCaseHistoryTitles(long workshopId,RollCallCaseHistorySearchModel searchModel);
|
||||||
|
Task<List<RollCallCaseHistoryDetail>> GetCaseHistoryDetails(long workshopId,
|
||||||
|
string titleId, RollCallCaseHistorySearchModel searchModel);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
|
using System.Threading.Tasks;
|
||||||
using _0_Framework.Domain;
|
using _0_Framework.Domain;
|
||||||
using CompanyManagment.App.Contracts.RollCallEmployee;
|
using CompanyManagment.App.Contracts.RollCallEmployee;
|
||||||
|
|
||||||
@@ -7,7 +8,7 @@ namespace Company.Domain.RollCallEmployeeAgg;
|
|||||||
|
|
||||||
public interface IRollCallEmployeeRepository : IRepository<long, RollCallEmployee>
|
public interface IRollCallEmployeeRepository : IRepository<long, RollCallEmployee>
|
||||||
{
|
{
|
||||||
bool HasRollCallRecord(long employeeId, long workshopId, DateTime contractStart, DateTime contractEnd);
|
Task<bool> HasRollCallRecord(long employeeId, long workshopId, DateTime contractStart, DateTime contractEnd);
|
||||||
List<RollCallEmployeeViewModel> GetByWorkshopId(long workshopId);
|
List<RollCallEmployeeViewModel> GetByWorkshopId(long workshopId);
|
||||||
EditRollCallEmployee GetDetails(long id);
|
EditRollCallEmployee GetDetails(long id);
|
||||||
RollCallEmployeeViewModel GetByEmployeeIdAndWorkshopId(long employeeId, long workshopId);
|
RollCallEmployeeViewModel GetByEmployeeIdAndWorkshopId(long employeeId, long workshopId);
|
||||||
|
|||||||
@@ -15,7 +15,6 @@ public interface ISalaryAidRepository:IRepository<long,SalaryAid>
|
|||||||
void RemoveRange(IEnumerable<SalaryAid> salaryAids);
|
void RemoveRange(IEnumerable<SalaryAid> salaryAids);
|
||||||
|
|
||||||
#region Pooya
|
#region Pooya
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// گروهبندی بر اساس ماه هنگام جستجو با انتخاب کارمند
|
/// گروهبندی بر اساس ماه هنگام جستجو با انتخاب کارمند
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|||||||
@@ -1,10 +1,32 @@
|
|||||||
using CompanyManagment.App.Contracts.SmsResult;
|
using _0_Framework.Application.Enums;
|
||||||
using System.Collections.Generic;
|
|
||||||
using _0_Framework.Domain;
|
using _0_Framework.Domain;
|
||||||
|
using CompanyManagment.App.Contracts.SmsResult;
|
||||||
|
using CompanyManagment.App.Contracts.SmsResult.Dto;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
namespace Company.Domain.SmsResultAgg;
|
namespace Company.Domain.SmsResultAgg;
|
||||||
|
|
||||||
public interface ISmsResultRepository : IRepository<long, SmsResult>
|
public interface ISmsResultRepository : IRepository<long, SmsResult>
|
||||||
{
|
{
|
||||||
|
#region ForApi
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// دریافت لیست پیامکها
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="command"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
Task<List<SmsReportDto>> GetSmsReportList(SmsReportSearchModel searchModel);
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// دریافت اکسپند لیست هر تاریخ
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="searchModel"></param>
|
||||||
|
/// <param name="date"></param>
|
||||||
|
/// <param name="typeOfSmsSetting"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
Task<List<SmsReportListDto>> GetSmsReportExpandList(SmsReportSearchModel searchModel, string date, string typeOfSmsSetting);
|
||||||
|
|
||||||
|
#endregion
|
||||||
List<SmsResultViewModel> Search(SmsResultSearchModel searchModel);
|
List<SmsResultViewModel> Search(SmsResultSearchModel searchModel);
|
||||||
}
|
}
|
||||||
@@ -1,6 +1,7 @@
|
|||||||
using _0_Framework.Application.Enums;
|
using _0_Framework.Application.Enums;
|
||||||
using _0_Framework.Domain;
|
using _0_Framework.Domain;
|
||||||
using CompanyManagment.App.Contracts.SmsResult;
|
using CompanyManagment.App.Contracts.SmsResult;
|
||||||
|
using System.Collections.Generic;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
namespace Company.Domain.SmsResultAgg;
|
namespace Company.Domain.SmsResultAgg;
|
||||||
@@ -27,4 +28,25 @@ public interface ISmsSettingsRepository : IRepository<long, SmsSetting>
|
|||||||
/// <param name="id"></param>
|
/// <param name="id"></param>
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
Task RemoveItem(long id);
|
Task RemoveItem(long id);
|
||||||
|
|
||||||
|
|
||||||
|
#region ForApi
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// دریافت لیست پیامک های خودکار بر اساس نوع آن
|
||||||
|
/// Api
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="typeOfSmsSetting"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
Task<List<SmsSettingDto>> GetSmsSettingList(TypeOfSmsSetting typeOfSmsSetting);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// دریافت اطلاعات تنظیمات پیامک جهت ویرایش
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="id"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
Task<SmsSettingDto> GetSmsSettingDataToEdit(long id);
|
||||||
|
#endregion
|
||||||
}
|
}
|
||||||
@@ -106,4 +106,14 @@ public interface IWorkshopRepository : IRepository<long, Workshop>
|
|||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
|
|
||||||
|
#region ForApi
|
||||||
|
/// <summary>
|
||||||
|
/// دریافت لیست کارگاه های ادمین برای سلکت تو
|
||||||
|
/// Api
|
||||||
|
/// </summary>
|
||||||
|
/// <returns></returns>
|
||||||
|
Task<List<AdminWorkshopSelectListDto>> GetAdminWorkshopSelectList();
|
||||||
|
|
||||||
|
#endregion
|
||||||
}
|
}
|
||||||
@@ -185,8 +185,17 @@ public class Workshop : EntityBase
|
|||||||
public bool AddLeavePay { get; private set; }
|
public bool AddLeavePay { get; private set; }
|
||||||
public string ZoneName { get; private set; }
|
public string ZoneName { get; private set; }
|
||||||
public bool TotalPaymentHide { get; private set; }
|
public bool TotalPaymentHide { get; private set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// آیا طبقه بندی شده است
|
||||||
|
/// [کارگاه دارای طرح طبقه بندی می باشد ؟]
|
||||||
|
/// </summary>
|
||||||
public bool IsClassified { get; private set; }
|
public bool IsClassified { get; private set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// آیا طرح طبقه بندی تکمیل شده است
|
||||||
|
/// </summary>
|
||||||
|
public bool IsClassificationSchemeCompleted { get; private set; }
|
||||||
|
|
||||||
//نحوه محاسبه مزد مرخصی
|
//نحوه محاسبه مزد مرخصی
|
||||||
public string ComputeOptions { get; private set; }
|
public string ComputeOptions { get; private set; }
|
||||||
|
|||||||
@@ -8,86 +8,129 @@ using System.Text.RegularExpressions;
|
|||||||
|
|
||||||
namespace CompanyManagement.Infrastructure.Excel.InstitutionContract;
|
namespace CompanyManagement.Infrastructure.Excel.InstitutionContract;
|
||||||
|
|
||||||
|
// Enum برای تعریف ستونهای موجود
|
||||||
|
public enum ExcelColumnType
|
||||||
|
{
|
||||||
|
RowNumber, // ردیف
|
||||||
|
PhysicalContract, // قرارداد فیزیکی
|
||||||
|
ContractNo, // شماره قرارداد
|
||||||
|
Representative, // معرف
|
||||||
|
ContractingPartyName, // طرف حساب
|
||||||
|
ArchiveCode, // شماره کارفرما
|
||||||
|
EmployerName, // کارفرما
|
||||||
|
WorkshopName, // کارگاهها (چندخطی)
|
||||||
|
WorkshopCount, // تعداد کارگاه
|
||||||
|
EmployeeCount, // مجموع پرسنل
|
||||||
|
ContractStartDate, // شروع قرارداد
|
||||||
|
ContractEndDate, // پایان قرارداد
|
||||||
|
InstallmentAmount, // مبلغ قسط
|
||||||
|
ContractAmount, // مبلغ قرارداد
|
||||||
|
FinancialStatus // وضعیت مالی
|
||||||
|
}
|
||||||
|
|
||||||
|
// کلاس کانفیگ برای تنظیم ستونهای نمایشی
|
||||||
|
public class ExcelColumnConfig
|
||||||
|
{
|
||||||
|
public List<ExcelColumnType> VisibleColumns { get; set; }
|
||||||
|
|
||||||
|
public ExcelColumnConfig()
|
||||||
|
{
|
||||||
|
// فعلاً تمام ستونها فعال هستند
|
||||||
|
VisibleColumns = new List<ExcelColumnType>
|
||||||
|
{
|
||||||
|
ExcelColumnType.PhysicalContract,
|
||||||
|
ExcelColumnType.ContractNo,
|
||||||
|
ExcelColumnType.Representative,
|
||||||
|
ExcelColumnType.ContractingPartyName,
|
||||||
|
ExcelColumnType.ArchiveCode,
|
||||||
|
ExcelColumnType.EmployerName,
|
||||||
|
ExcelColumnType.WorkshopName,
|
||||||
|
ExcelColumnType.WorkshopCount,
|
||||||
|
ExcelColumnType.EmployeeCount,
|
||||||
|
ExcelColumnType.ContractStartDate,
|
||||||
|
ExcelColumnType.ContractEndDate,
|
||||||
|
ExcelColumnType.InstallmentAmount,
|
||||||
|
ExcelColumnType.ContractAmount,
|
||||||
|
ExcelColumnType.FinancialStatus
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public class InstitutionContractExcelGenerator
|
public class InstitutionContractExcelGenerator
|
||||||
{
|
{
|
||||||
|
private static ExcelColumnConfig _columnConfig = new ExcelColumnConfig();
|
||||||
|
|
||||||
public static byte[] GenerateExcel(List<InstitutionContractViewModel> institutionContractViewModels)
|
public static byte[] GenerateExcel(List<InstitutionContractExcelViewModel> contractViewModels)
|
||||||
{
|
{
|
||||||
ExcelPackage.License.SetNonCommercialOrganization("Gozareshgir Noncommercial organization");
|
ExcelPackage.License.SetNonCommercialOrganization("Gozareshgir Noncommercial organization");
|
||||||
using var package = new ExcelPackage();
|
using var package = new ExcelPackage();
|
||||||
var allWorksheet = package.Workbook.Worksheets.Add("همه");
|
|
||||||
|
|
||||||
var blueWorksheet = package.Workbook.Worksheets.Add("آبی");
|
// ایجاد شیت برای هر تب با دادههای مربوطه
|
||||||
blueWorksheet.TabColor = Color.LightBlue;
|
foreach (var viewModel in contractViewModels)
|
||||||
|
{
|
||||||
var grayWorksheet = package.Workbook.Worksheets.Add("خاکستری");
|
var worksheet = CreateWorksheet(package, viewModel.Tab);
|
||||||
grayWorksheet.TabColor = Color.LightGray;
|
CreateExcelSheet(viewModel.GetInstitutionContractListItemsViewModels ?? new List<GetInstitutionContractListItemsViewModel>(), worksheet);
|
||||||
|
}
|
||||||
var redWorksheet = package.Workbook.Worksheets.Add("قرمز");
|
|
||||||
redWorksheet.TabColor = Color.LightCoral;
|
|
||||||
|
|
||||||
var purpleWorksheet = package.Workbook.Worksheets.Add("بنفش");
|
|
||||||
purpleWorksheet.TabColor = Color.MediumPurple;
|
|
||||||
|
|
||||||
var blackWorksheet = package.Workbook.Worksheets.Add("مشکی");
|
|
||||||
blackWorksheet.TabColor = Color.DimGray;
|
|
||||||
|
|
||||||
var yellowWorksheet = package.Workbook.Worksheets.Add("زرد");
|
|
||||||
yellowWorksheet.TabColor = Color.Yellow;
|
|
||||||
|
|
||||||
var whiteWorksheet = package.Workbook.Worksheets.Add("سفید");
|
|
||||||
whiteWorksheet.TabColor = Color.White;
|
|
||||||
|
|
||||||
|
|
||||||
CreateExcelSheet(institutionContractViewModels, allWorksheet);
|
|
||||||
|
|
||||||
var blueContracts = institutionContractViewModels.Where(x=>x.ExpireColor == "blue").ToList();
|
|
||||||
CreateExcelSheet(blueContracts, blueWorksheet);
|
|
||||||
institutionContractViewModels = institutionContractViewModels.Except(blueContracts).ToList();
|
|
||||||
|
|
||||||
var grayContracts = institutionContractViewModels.Where(x => x.IsContractingPartyBlock == "true").ToList();
|
|
||||||
CreateExcelSheet(grayContracts, grayWorksheet);
|
|
||||||
institutionContractViewModels = institutionContractViewModels.Except(grayContracts).ToList();
|
|
||||||
|
|
||||||
var redContracts = institutionContractViewModels.Where(x=>x.ExpireColor == "red").ToList();
|
|
||||||
CreateExcelSheet(redContracts, redWorksheet);
|
|
||||||
institutionContractViewModels = institutionContractViewModels.Except(redContracts).ToList();
|
|
||||||
|
|
||||||
var purpleContracts = institutionContractViewModels.Where(x=>x.ExpireColor == "purple").ToList();
|
|
||||||
CreateExcelSheet(purpleContracts, purpleWorksheet);
|
|
||||||
institutionContractViewModels = institutionContractViewModels.Except(purpleContracts).ToList();
|
|
||||||
|
|
||||||
var blackContracts = institutionContractViewModels.Where(x=>x.ExpireColor == "black").ToList();
|
|
||||||
CreateExcelSheet(blackContracts, blackWorksheet);
|
|
||||||
institutionContractViewModels = institutionContractViewModels.Except(blackContracts).ToList();
|
|
||||||
|
|
||||||
var yellowContracts = institutionContractViewModels
|
|
||||||
.Where(x => string.IsNullOrWhiteSpace(x.ExpireColor) && x.WorkshopCount == "0").ToList();
|
|
||||||
CreateExcelSheet(yellowContracts, yellowWorksheet);
|
|
||||||
institutionContractViewModels = institutionContractViewModels.Except(yellowContracts).ToList();
|
|
||||||
|
|
||||||
var otherContracts = institutionContractViewModels;
|
|
||||||
CreateExcelSheet(otherContracts, whiteWorksheet);
|
|
||||||
|
|
||||||
return package.GetAsByteArray();
|
return package.GetAsByteArray();
|
||||||
}
|
}
|
||||||
|
|
||||||
private static void CreateExcelSheet(List<InstitutionContractViewModel> institutionContractViewModels, ExcelWorksheet worksheet)
|
/// <summary>
|
||||||
|
/// ایجاد شیت بر اساس نوع تب
|
||||||
|
/// </summary>
|
||||||
|
private static ExcelWorksheet CreateWorksheet(ExcelPackage package, InstitutionContractListStatus? status)
|
||||||
{
|
{
|
||||||
// Headers
|
return status switch
|
||||||
worksheet.Cells[1, 1].Value = "شماره قرارداد";
|
{
|
||||||
worksheet.Cells[1, 2].Value = "طرف حساب";
|
InstitutionContractListStatus.DeactiveWithDebt =>
|
||||||
worksheet.Cells[1, 3].Value = "شماره کارفرما";
|
CreateColoredWorksheet(package, "غیرفعال دارای بدهی", Color.LightBlue),
|
||||||
worksheet.Cells[1, 4].Value = "کارفرما ها";
|
|
||||||
worksheet.Cells[1, 5].Value = "کارگاه ها";
|
|
||||||
worksheet.Cells[1, 6].Value = "مجبوع پرسنل";
|
|
||||||
worksheet.Cells[1, 7].Value = "شروع قرارداد";
|
|
||||||
worksheet.Cells[1, 8].Value = "پایان قرارداد";
|
|
||||||
worksheet.Cells[1, 9].Value = "مبلغ قرارداد (بدون کارگاه)";
|
|
||||||
worksheet.Cells[1, 10].Value = "مبلغ قرارداد";
|
|
||||||
worksheet.Cells[1, 11].Value = "وضعیت مالی";
|
|
||||||
|
|
||||||
using (var range = worksheet.Cells[1, 1, 1, 11])
|
InstitutionContractListStatus.Deactive =>
|
||||||
|
CreateColoredWorksheet(package, "غیرفعال", Color.LightGray),
|
||||||
|
|
||||||
|
InstitutionContractListStatus.PendingForRenewal =>
|
||||||
|
CreateColoredWorksheet(package, "در انتظار تمدید", Color.LightCoral),
|
||||||
|
|
||||||
|
InstitutionContractListStatus.Free =>
|
||||||
|
CreateColoredWorksheet(package, "بنفش", Color.MediumPurple),
|
||||||
|
|
||||||
|
InstitutionContractListStatus.Block =>
|
||||||
|
CreateColoredWorksheet(package, "بلاک", Color.DimGray),
|
||||||
|
|
||||||
|
InstitutionContractListStatus.WithoutWorkshop =>
|
||||||
|
CreateColoredWorksheet(package, "بدون کارگاه", Color.Yellow),
|
||||||
|
|
||||||
|
InstitutionContractListStatus.Active =>
|
||||||
|
CreateColoredWorksheet(package, "فعال", Color.White),
|
||||||
|
|
||||||
|
InstitutionContractListStatus.PendingForVerify =>
|
||||||
|
CreateColoredWorksheet(package, "در انتظار تایید", Color.OrangeRed),
|
||||||
|
|
||||||
|
null => CreateColoredWorksheet(package, "کل قرارداد ها", Color.White),
|
||||||
|
_ => throw new ArgumentOutOfRangeException(nameof(status), status, null)
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// ایجاد شیت با رنگ تب
|
||||||
|
/// </summary>
|
||||||
|
private static ExcelWorksheet CreateColoredWorksheet(ExcelPackage package, string sheetName, Color tabColor)
|
||||||
|
{
|
||||||
|
var worksheet = package.Workbook.Worksheets.Add(sheetName);
|
||||||
|
worksheet.TabColor = tabColor;
|
||||||
|
return worksheet;
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void CreateExcelSheet(List<GetInstitutionContractListItemsViewModel> contractItems, ExcelWorksheet worksheet)
|
||||||
|
{
|
||||||
|
// دریافت نقشه ستونهای مرئی
|
||||||
|
var visibleColumnIndices = GetVisibleColumnIndices();
|
||||||
|
int columnCount = visibleColumnIndices.Count;
|
||||||
|
|
||||||
|
// تنظیم Headers
|
||||||
|
SetupHeaders(worksheet, visibleColumnIndices, columnCount);
|
||||||
|
|
||||||
|
using (var range = worksheet.Cells[1, 1, 1, columnCount])
|
||||||
{
|
{
|
||||||
range.Style.HorizontalAlignment = ExcelHorizontalAlignment.Center;
|
range.Style.HorizontalAlignment = ExcelHorizontalAlignment.Center;
|
||||||
range.Style.VerticalAlignment = ExcelVerticalAlignment.Center;
|
range.Style.VerticalAlignment = ExcelVerticalAlignment.Center;
|
||||||
@@ -110,30 +153,35 @@ public class InstitutionContractExcelGenerator
|
|||||||
|
|
||||||
int row = 2;
|
int row = 2;
|
||||||
|
|
||||||
for (int i = 0; i < institutionContractViewModels.Count; i++)
|
for (int i = 0; i < contractItems.Count; i++)
|
||||||
{
|
{
|
||||||
var contract = institutionContractViewModels[i];
|
var contract = contractItems[i];
|
||||||
var employers = contract.EmployerViewModels?.ToList() ?? new();
|
var employers = contract.EmployerNames?.ToList() ?? new();
|
||||||
var workshops = contract.WorkshopViewModels?.ToList() ?? new();
|
var workshops = contract.WorkshopNames?.ToList() ?? new();
|
||||||
|
|
||||||
int maxRows = Math.Max(employers.Count, workshops.Count);
|
int maxRows = 1; // هر قرارداد فقط یک ردیف؛ نیازی به مرج عمودی نیست
|
||||||
maxRows = Math.Max(1, maxRows);
|
|
||||||
|
|
||||||
int startRow = row;
|
int startRow = row;
|
||||||
int endRow = row + maxRows - 1;
|
int endRow = row + maxRows - 1;
|
||||||
|
|
||||||
// 🎨 دریافت رنگ پسزمینه از مقدار رنگ موجود در داده
|
// 🎨 دریافت رنگ پسزمینه بر اساس وضعیت قرارداد
|
||||||
string colorName = contract.ExpireColor.ToLower();
|
var fillColor = GetColorByStatus(contract.ListStatus, contract.WorkshopsCount);
|
||||||
var fillColor = GetColorByName(colorName, contract.WorkshopCount, contract.IsContractingPartyBlock);
|
|
||||||
|
|
||||||
for (int j = 0; j < maxRows; j++)
|
for (int j = 0; j < maxRows; j++)
|
||||||
{
|
{
|
||||||
int currentRow = row + j;
|
int currentRow = row + j;
|
||||||
|
|
||||||
worksheet.Cells[currentRow, 4].Value = j < employers.Count ? employers[j].FullName : null;
|
// پر کردن ستونهای employer و workshop
|
||||||
worksheet.Cells[currentRow, 5].Value = j < workshops.Count ? workshops[j].WorkshopFullName : null;
|
var employerColIndex = GetColumnIndexForType(ExcelColumnType.EmployerName, visibleColumnIndices);
|
||||||
|
var workshopColIndex = GetColumnIndexForType(ExcelColumnType.WorkshopName, visibleColumnIndices);
|
||||||
|
|
||||||
for (int col = 1; col <= 11; col++)
|
if (employerColIndex > 0)
|
||||||
|
worksheet.Cells[currentRow, employerColIndex].Value = j < employers.Count ? employers[j] : null;
|
||||||
|
|
||||||
|
if (workshopColIndex > 0)
|
||||||
|
worksheet.Cells[currentRow, workshopColIndex].Value = j < workshops.Count ? workshops[j] : null;
|
||||||
|
|
||||||
|
for (int col = 1; col <= columnCount; col++)
|
||||||
{
|
{
|
||||||
var cell = worksheet.Cells[currentRow, col];
|
var cell = worksheet.Cells[currentRow, col];
|
||||||
|
|
||||||
@@ -154,109 +202,235 @@ public class InstitutionContractExcelGenerator
|
|||||||
}
|
}
|
||||||
|
|
||||||
// 🧱 مرج و مقداردهی ستونهای اصلی
|
// 🧱 مرج و مقداردهی ستونهای اصلی
|
||||||
worksheet.Cells[startRow, 1, endRow, 1].Merge = true;
|
FillColumnData(worksheet, contract, startRow, endRow, visibleColumnIndices);
|
||||||
worksheet.Cells[startRow, 1].Value = contract.ContractNo;
|
|
||||||
|
|
||||||
worksheet.Cells[startRow, 2, endRow, 2].Merge = true;
|
|
||||||
worksheet.Cells[startRow, 2].Value = contract.ContractingPartyName;
|
|
||||||
|
|
||||||
worksheet.Cells[startRow, 3, endRow, 3].Merge = true;
|
|
||||||
worksheet.Cells[startRow, 3].Value = contract.ArchiveCode;
|
|
||||||
|
|
||||||
worksheet.Cells[startRow, 6, endRow, 6].Merge = true;
|
|
||||||
worksheet.Cells[startRow, 6].Value = contract.EmployeeCount;
|
|
||||||
|
|
||||||
worksheet.Cells[startRow, 7, endRow, 7].Merge = true;
|
|
||||||
worksheet.Cells[startRow, 7].Value = contract.ContractStartFa;
|
|
||||||
|
|
||||||
worksheet.Cells[startRow, 8, endRow, 8].Merge = true;
|
|
||||||
worksheet.Cells[startRow, 8].Value = contract.ContractEndFa;
|
|
||||||
|
|
||||||
worksheet.Cells[startRow, 9, endRow, 9].Merge = true;
|
|
||||||
var contractWithoutWorkshopAmountCell = worksheet.Cells[startRow, 9];
|
|
||||||
contractWithoutWorkshopAmountCell.Value = contract.WorkshopCount == "0" ? MoneyToDouble(contract.ContractAmount) : "";
|
|
||||||
contractWithoutWorkshopAmountCell.Style.Numberformat.Format = "#,##0";
|
|
||||||
|
|
||||||
|
|
||||||
worksheet.Cells[startRow, 10, endRow, 10].Merge = true;
|
|
||||||
var contractAmountCell = worksheet.Cells[startRow, 10];
|
|
||||||
contractAmountCell.Value = contract.WorkshopCount != "0" ? MoneyToDouble(contract.ContractAmount) : "";
|
|
||||||
contractAmountCell.Style.Numberformat.Format = "#,##0";
|
|
||||||
|
|
||||||
|
|
||||||
worksheet.Cells[startRow, 11, endRow, 11].Merge = true;
|
|
||||||
var balance = MoneyToDouble(contract.BalanceStr);
|
|
||||||
var balanceCell = worksheet.Cells[startRow, 11];
|
|
||||||
balanceCell.Value = balance;
|
|
||||||
balanceCell.Style.Numberformat.Format = "#,##0";
|
|
||||||
|
|
||||||
if (balance > 0)
|
|
||||||
balanceCell.Style.Font.Color.SetColor(Color.Red);
|
|
||||||
else if (balance < 0)
|
|
||||||
balanceCell.Style.Font.Color.SetColor(Color.Green);
|
|
||||||
|
|
||||||
// 📦 بوردر ضخیم خارجی برای هر سطر
|
// 📦 بوردر ضخیم خارجی برای هر سطر
|
||||||
var boldRange = worksheet.Cells[startRow, 1, endRow, 11];
|
var boldRange = worksheet.Cells[startRow, 1, endRow, columnCount];
|
||||||
boldRange.Style.Border.BorderAround(ExcelBorderStyle.Medium);
|
boldRange.Style.Border.BorderAround(ExcelBorderStyle.Medium);
|
||||||
|
|
||||||
row += maxRows;
|
row += maxRows;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
SetupPrintSettings(worksheet, visibleColumnIndices, columnCount);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// دریافت فهرست ستونهای مرئی بر اساس کانفیگ
|
||||||
|
/// </summary>
|
||||||
|
private static List<ExcelColumnType> GetVisibleColumnIndices()
|
||||||
|
{
|
||||||
|
return _columnConfig.VisibleColumns;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// دریافت شماره ستون برای یک نوع ستون خاص
|
||||||
|
/// </summary>
|
||||||
|
private static int GetColumnIndexForType(ExcelColumnType columnType, List<ExcelColumnType> visibleColumns)
|
||||||
|
{
|
||||||
|
var index = visibleColumns.IndexOf(columnType);
|
||||||
|
return index >= 0 ? index + 1 : 0; // 1-based indexing
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// دریافت متن header برای یک نوع ستون
|
||||||
|
/// </summary>
|
||||||
|
private static string GetColumnHeader(ExcelColumnType columnType)
|
||||||
|
{
|
||||||
|
return columnType switch
|
||||||
|
{
|
||||||
|
ExcelColumnType.RowNumber => "ردیف",
|
||||||
|
ExcelColumnType.PhysicalContract => "قرارداد فیزیکی",
|
||||||
|
ExcelColumnType.ContractNo => "شماره قرارداد",
|
||||||
|
ExcelColumnType.Representative => "معرف",
|
||||||
|
ExcelColumnType.ContractingPartyName => "طرف حساب",
|
||||||
|
ExcelColumnType.ArchiveCode => "شماره کارفرما",
|
||||||
|
ExcelColumnType.EmployerName => "کارفرما",
|
||||||
|
ExcelColumnType.WorkshopName => "کارگاهها",
|
||||||
|
ExcelColumnType.WorkshopCount => "تعداد کارگاه",
|
||||||
|
ExcelColumnType.EmployeeCount => "مجموع پرسنل",
|
||||||
|
ExcelColumnType.ContractStartDate => "شروع قرارداد",
|
||||||
|
ExcelColumnType.ContractEndDate => "پایان قرارداد",
|
||||||
|
ExcelColumnType.InstallmentAmount => "مبلغ قسط",
|
||||||
|
ExcelColumnType.ContractAmount => "مبلغ قرارداد",
|
||||||
|
ExcelColumnType.FinancialStatus => "وضعیت مالی",
|
||||||
|
_ => ""
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// تنظیم Headerهای ستونها
|
||||||
|
/// </summary>
|
||||||
|
private static void SetupHeaders(ExcelWorksheet worksheet, List<ExcelColumnType> visibleColumns, int columnCount)
|
||||||
|
{
|
||||||
|
for (int i = 0; i < visibleColumns.Count; i++)
|
||||||
|
{
|
||||||
|
worksheet.Cells[1, i + 1].Value = GetColumnHeader(visibleColumns[i]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// پر کردن دادههای ستونها برای یک قرارداد
|
||||||
|
/// </summary>
|
||||||
|
private static void FillColumnData(ExcelWorksheet worksheet, GetInstitutionContractListItemsViewModel contract, int startRow, int endRow, List<ExcelColumnType> visibleColumns)
|
||||||
|
{
|
||||||
|
for (int i = 0; i < visibleColumns.Count; i++)
|
||||||
|
{
|
||||||
|
int columnIndex = i + 1; // 1-based indexing
|
||||||
|
var columnType = visibleColumns[i];
|
||||||
|
|
||||||
|
// Merge cells for non-repeating columns
|
||||||
|
worksheet.Cells[startRow, columnIndex, endRow, columnIndex].Merge = true;
|
||||||
|
|
||||||
|
var cell = worksheet.Cells[startRow, columnIndex];
|
||||||
|
|
||||||
|
switch (columnType)
|
||||||
|
{
|
||||||
|
case ExcelColumnType.PhysicalContract:
|
||||||
|
var physicalText = contract.IsOldContract
|
||||||
|
? (contract.HasSigniture ? "موجود" : "ناموجود")
|
||||||
|
: (contract.IsInPersonContract ? "الکترونیکی حضوری" : "الکترونیکی غیر حضوری");
|
||||||
|
|
||||||
|
cell.Value = physicalText;
|
||||||
|
cell.Style.Font.Bold = true;
|
||||||
|
cell.Style.Font.Color.SetColor(physicalText switch
|
||||||
|
{
|
||||||
|
"موجود" => Color.Green,
|
||||||
|
"ناموجود" => Color.Red,
|
||||||
|
"الکترونیکی حضوری" => Color.Purple,
|
||||||
|
_ => Color.Blue
|
||||||
|
});
|
||||||
|
break;
|
||||||
|
case ExcelColumnType.ContractNo:
|
||||||
|
cell.Value = contract.ContractNo;
|
||||||
|
break;
|
||||||
|
case ExcelColumnType.Representative:
|
||||||
|
cell.Value = contract.RepresentativeName;
|
||||||
|
break;
|
||||||
|
case ExcelColumnType.ContractingPartyName:
|
||||||
|
cell.Value = contract.ContractingPartyName;
|
||||||
|
break;
|
||||||
|
case ExcelColumnType.ArchiveCode:
|
||||||
|
cell.Value = contract.ArchiveNo;
|
||||||
|
break;
|
||||||
|
case ExcelColumnType.EmployerName:
|
||||||
|
// این ستون چندخطی است و داخل loop پر میشود
|
||||||
|
break;
|
||||||
|
case ExcelColumnType.WorkshopName:
|
||||||
|
// این ستون چندخطی است و داخل loop پر میشود
|
||||||
|
break;
|
||||||
|
case ExcelColumnType.WorkshopCount:
|
||||||
|
cell.Value = contract.WorkshopsCount;
|
||||||
|
break;
|
||||||
|
case ExcelColumnType.EmployeeCount:
|
||||||
|
cell.Value = contract.EmployeesCount;
|
||||||
|
break;
|
||||||
|
case ExcelColumnType.ContractStartDate:
|
||||||
|
cell.Value = contract.ContractStartFa;
|
||||||
|
break;
|
||||||
|
case ExcelColumnType.ContractEndDate:
|
||||||
|
cell.Value = contract.ContractEndFa;
|
||||||
|
break;
|
||||||
|
case ExcelColumnType.InstallmentAmount:
|
||||||
|
cell.Value = contract.InstallmentAmount;
|
||||||
|
cell.Style.Numberformat.Format = "#,##0";
|
||||||
|
break;
|
||||||
|
case ExcelColumnType.ContractAmount:
|
||||||
|
cell.Value = contract.ContractAmount;
|
||||||
|
cell.Style.Numberformat.Format = "#,##0";
|
||||||
|
break;
|
||||||
|
case ExcelColumnType.FinancialStatus:
|
||||||
|
cell.Value = contract.Balance;
|
||||||
|
cell.Style.Numberformat.Format = "#,##0";
|
||||||
|
|
||||||
|
if (contract.Balance > 0)
|
||||||
|
cell.Style.Font.Color.SetColor(Color.Red);
|
||||||
|
else if (contract.Balance < 0)
|
||||||
|
cell.Style.Font.Color.SetColor(Color.Green);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// تنظیم تنظیمات چاپ و عرض ستونها
|
||||||
|
/// </summary>
|
||||||
|
private static void SetupPrintSettings(ExcelWorksheet worksheet, List<ExcelColumnType> visibleColumns, int columnCount)
|
||||||
|
{
|
||||||
worksheet.PrinterSettings.PaperSize = ePaperSize.A4;
|
worksheet.PrinterSettings.PaperSize = ePaperSize.A4;
|
||||||
worksheet.PrinterSettings.Orientation = eOrientation.Landscape;
|
worksheet.PrinterSettings.Orientation = eOrientation.Landscape;
|
||||||
worksheet.PrinterSettings.FitToPage = true;
|
worksheet.PrinterSettings.FitToPage = true;
|
||||||
worksheet.PrinterSettings.FitToWidth = 1;
|
worksheet.PrinterSettings.FitToWidth = 1;
|
||||||
worksheet.PrinterSettings.FitToHeight = 0;
|
worksheet.PrinterSettings.FitToHeight = 0;
|
||||||
worksheet.PrinterSettings.Scale = 85;
|
worksheet.PrinterSettings.Scale = 85;
|
||||||
int contractNoCol = 1;
|
|
||||||
int contractingPartyNameCol = 2;
|
// تنظیم عرض ستونها بر اساس نوع ستون
|
||||||
int archiveNoCol = 3;
|
for (int i = 0; i < visibleColumns.Count; i++)
|
||||||
int employersCol = 4;
|
{
|
||||||
int workshopsCol = 5;
|
int columnIndex = i + 1;
|
||||||
int employeeCountCol = 6;
|
worksheet.Columns[columnIndex].Width = GetColumnWidth(visibleColumns[i]);
|
||||||
int startContractCol = 7;
|
}
|
||||||
int endContractCol = 8;
|
|
||||||
int contractWithoutWorkshopAmountCol = 9;
|
|
||||||
int contractAmountCol = 10;
|
|
||||||
int balanceCol = 11;
|
|
||||||
worksheet.Columns[contractNoCol].Width = 17;
|
|
||||||
worksheet.Columns[contractingPartyNameCol].Width = 40;
|
|
||||||
worksheet.Columns[archiveNoCol].Width = 10;
|
|
||||||
worksheet.Columns[employersCol].Width = 40;
|
|
||||||
worksheet.Columns[workshopsCol].Width = 45;
|
|
||||||
worksheet.Columns[employeeCountCol].Width = 12;
|
|
||||||
worksheet.Columns[startContractCol].Width = 12;
|
|
||||||
worksheet.Columns[endContractCol].Width = 12;
|
|
||||||
worksheet.Columns[contractWithoutWorkshopAmountCol].Width = 18;
|
|
||||||
worksheet.Columns[contractAmountCol].Width = 12;
|
|
||||||
worksheet.Columns[balanceCol].Width = 12;
|
|
||||||
worksheet.View.RightToLeft = true; // فارسی
|
worksheet.View.RightToLeft = true; // فارسی
|
||||||
//worksheet.Cells[worksheet.Dimension.Address].AutoFitColumns();
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// دریافت عرض ستون پیشفرض برای هر نوع ستون
|
||||||
|
/// </summary>
|
||||||
|
private static double GetColumnWidth(ExcelColumnType columnType)
|
||||||
|
{
|
||||||
|
return columnType switch
|
||||||
|
{
|
||||||
|
ExcelColumnType.RowNumber => 8,
|
||||||
|
ExcelColumnType.PhysicalContract => 15,
|
||||||
|
ExcelColumnType.ContractNo => 17,
|
||||||
|
ExcelColumnType.Representative => 15,
|
||||||
|
ExcelColumnType.ContractingPartyName => 40,
|
||||||
|
ExcelColumnType.ArchiveCode => 10,
|
||||||
|
ExcelColumnType.EmployerName => 40,
|
||||||
|
ExcelColumnType.WorkshopName => 45,
|
||||||
|
ExcelColumnType.WorkshopCount => 12,
|
||||||
|
ExcelColumnType.EmployeeCount => 12,
|
||||||
|
ExcelColumnType.ContractStartDate => 12,
|
||||||
|
ExcelColumnType.ContractEndDate => 12,
|
||||||
|
ExcelColumnType.InstallmentAmount => 15,
|
||||||
|
ExcelColumnType.ContractAmount => 15,
|
||||||
|
ExcelColumnType.FinancialStatus => 12,
|
||||||
|
_ => 12
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
private static double MoneyToDouble(string value)
|
private static double MoneyToDouble(string value)
|
||||||
{
|
{
|
||||||
Console.WriteLine(value);
|
if (string.IsNullOrEmpty(value))
|
||||||
|
return 0;
|
||||||
|
|
||||||
var min = value.Length > 1 ? value.Substring(0, 2) : "";
|
var min = value.Length > 1 ? value.Substring(0, 2) : "";
|
||||||
var test = min == "\u200e\u2212" ? value.MoneyToDouble() * -1 : value.MoneyToDouble();
|
var test = min == "\u200e\u2212" ? value.MoneyToDouble() * -1 : value.MoneyToDouble();
|
||||||
|
|
||||||
Console.WriteLine(test);
|
|
||||||
return test;
|
return test;
|
||||||
}
|
}
|
||||||
private static Color GetColorByName(string name, string workshopCount, string IsContractingPartyBlock)
|
|
||||||
|
/// <summary>
|
||||||
|
/// دریافت رنگ بر اساس وضعیت قرارداد
|
||||||
|
/// </summary>
|
||||||
|
private static Color GetColorByStatus(InstitutionContractListStatus status, int workshopsCount)
|
||||||
{
|
{
|
||||||
return name switch
|
return status switch
|
||||||
{
|
{
|
||||||
"blue" => Color.LightBlue,
|
InstitutionContractListStatus.DeactiveWithDebt => Color.LightBlue,
|
||||||
_ when IsContractingPartyBlock == "true" => Color.LightGray,
|
InstitutionContractListStatus.Deactive => Color.LightGray,
|
||||||
"red" => Color.LightCoral,
|
InstitutionContractListStatus.PendingForRenewal => Color.LightCoral,
|
||||||
"purple" => Color.MediumPurple,
|
InstitutionContractListStatus.Free => Color.MediumPurple,
|
||||||
"black" => Color.DimGray,
|
InstitutionContractListStatus.Block => Color.DimGray,
|
||||||
var n when string.IsNullOrWhiteSpace(n) && workshopCount == "0" => Color.Yellow,
|
InstitutionContractListStatus.WithoutWorkshop => Color.Yellow,
|
||||||
|
InstitutionContractListStatus.Active => Color.White,
|
||||||
_ => Color.White
|
_ => Color.White
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public class InstitutionContractExcelViewModel
|
||||||
|
{
|
||||||
|
public InstitutionContractListStatus? Tab { get; set; }
|
||||||
|
public List<GetInstitutionContractListItemsViewModel> GetInstitutionContractListItemsViewModels { get; set; }
|
||||||
|
}
|
||||||
|
|||||||
@@ -1,6 +1,12 @@
|
|||||||
using _0_Framework.Excel;
|
using _0_Framework.Excel;
|
||||||
|
using _0_Framework.Application;
|
||||||
|
using CompanyManagment.App.Contracts.RollCall;
|
||||||
using OfficeOpenXml;
|
using OfficeOpenXml;
|
||||||
using OfficeOpenXml.Drawing;
|
using OfficeOpenXml.Drawing;
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text.RegularExpressions;
|
||||||
|
|
||||||
namespace CompanyManagement.Infrastructure.Excel.RollCall;
|
namespace CompanyManagement.Infrastructure.Excel.RollCall;
|
||||||
|
|
||||||
@@ -308,6 +314,111 @@ public class RollCallExcelGenerator : ExcelGenerator
|
|||||||
return package.GetAsByteArray();
|
return package.GetAsByteArray();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static byte[] CaseHistoryExcelForEmployee(List<RollCallCaseHistoryDetail> data, string titleId)
|
||||||
|
{
|
||||||
|
if (!Regex.IsMatch(titleId, @"^\d{4}_\d{2}$"))
|
||||||
|
throw new ArgumentException("Invalid titleId format.", nameof(titleId));
|
||||||
|
|
||||||
|
var splitDate = titleId.Split("_");
|
||||||
|
var year = Convert.ToInt32(splitDate.First());
|
||||||
|
var month = Convert.ToInt32(splitDate.Last());
|
||||||
|
|
||||||
|
var startDateFa = $"{year:D4}/{month:D2}/01";
|
||||||
|
var startDate = startDateFa.ToGeorgianDateTime();
|
||||||
|
var endDateFa = startDateFa.FindeEndOfMonth();
|
||||||
|
var endDate = endDateFa.ToGeorgianDateTime();
|
||||||
|
|
||||||
|
var dateRange = (int)(endDate.Date - startDate.Date).TotalDays + 1;
|
||||||
|
var dates = Enumerable.Range(0, dateRange).Select(x => startDate.AddDays(x)).ToList();
|
||||||
|
|
||||||
|
var safeData = data ?? new List<RollCallCaseHistoryDetail>();
|
||||||
|
var first = safeData.FirstOrDefault();
|
||||||
|
var totalWorkingTime = new TimeSpan(safeData.Sum(x => x.TotalWorkingTime.Ticks));
|
||||||
|
|
||||||
|
var viewModel = new CaseHistoryRollCallExcelForEmployeeViewModel
|
||||||
|
{
|
||||||
|
EmployeeId = first?.EmployeeId ?? 0,
|
||||||
|
DateGr = startDate,
|
||||||
|
PersonnelCode = first?.PersonnelCode,
|
||||||
|
EmployeeFullName = first?.EmployeeFullName,
|
||||||
|
PersianMonthName = month.ToFarsiMonthByIntNumber(),
|
||||||
|
PersianYear = year.ToString(),
|
||||||
|
TotalWorkingHoursFa = totalWorkingTime.ToFarsiHoursAndMinutes("-"),
|
||||||
|
TotalWorkingTimeSpan = $"{(int)totalWorkingTime.TotalHours}:{totalWorkingTime.Minutes:00}",
|
||||||
|
RollCalls = dates.Select((date, index) =>
|
||||||
|
{
|
||||||
|
var item = index < safeData.Count ? safeData[index] : null;
|
||||||
|
var records = item?.Records ?? new List<RollCallCaseHistoryDetailRecord>();
|
||||||
|
|
||||||
|
return new RollCallItemForEmployeeExcelViewModel
|
||||||
|
{
|
||||||
|
DateGr = date,
|
||||||
|
DateFa = date.ToFarsi(),
|
||||||
|
DayOfWeekFa = date.DayOfWeek.DayOfWeeKToPersian(),
|
||||||
|
PersonnelCode = item?.PersonnelCode,
|
||||||
|
EmployeeFullName = item?.EmployeeFullName,
|
||||||
|
IsAbsent = item?.Status == RollCallRecordStatus.Absent,
|
||||||
|
HasLeave = item?.Status == RollCallRecordStatus.Leaved,
|
||||||
|
IsHoliday = false,
|
||||||
|
TotalWorkingHours = (item?.TotalWorkingTime ?? TimeSpan.Zero).ToFarsiHoursAndMinutes("-"),
|
||||||
|
StartsItems = JoinRecords(records, r => r.StartTime),
|
||||||
|
EndsItems = JoinRecords(records, r => r.EndTime),
|
||||||
|
EnterTimeDifferences = JoinRecords(records, r => FormatSignedTimeSpan(r.EntryTimeDifference)),
|
||||||
|
ExitTimeDifferences = JoinRecords(records, r => FormatSignedTimeSpan(r.ExitTimeDifference))
|
||||||
|
};
|
||||||
|
}).ToList()
|
||||||
|
};
|
||||||
|
|
||||||
|
return CaseHistoryExcelForEmployee(viewModel);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static byte[] CaseHistoryExcelForOneDay(List<RollCallCaseHistoryDetail> data, string titleId)
|
||||||
|
{
|
||||||
|
if (!Regex.IsMatch(titleId, @"^\d{4}/\d{2}/\d{2}$"))
|
||||||
|
throw new ArgumentException("Invalid titleId format.", nameof(titleId));
|
||||||
|
|
||||||
|
var dateGr = titleId.ToGeorgianDateTime();
|
||||||
|
var safeData = data ?? new List<RollCallCaseHistoryDetail>();
|
||||||
|
|
||||||
|
var viewModel = new CaseHistoryRollCallForOneDayViewModel
|
||||||
|
{
|
||||||
|
DateFa = titleId,
|
||||||
|
DateGr = dateGr,
|
||||||
|
DayOfWeekFa = dateGr.DayOfWeek.DayOfWeeKToPersian(),
|
||||||
|
RollCalls = safeData.Select(item =>
|
||||||
|
{
|
||||||
|
var records = item.Records ?? new List<RollCallCaseHistoryDetailRecord>();
|
||||||
|
return new RollCallItemForOneDayExcelViewModel
|
||||||
|
{
|
||||||
|
EmployeeFullName = item.EmployeeFullName,
|
||||||
|
PersonnelCode = item.PersonnelCode,
|
||||||
|
StartsItems = JoinRecords(records, r => r.StartTime),
|
||||||
|
EndsItems = JoinRecords(records, r => r.EndTime),
|
||||||
|
TotalWorkingHours = item.TotalWorkingTime.ToFarsiHoursAndMinutes("-")
|
||||||
|
};
|
||||||
|
}).ToList()
|
||||||
|
};
|
||||||
|
|
||||||
|
return CaseHistoryExcelForOneDay(viewModel);
|
||||||
|
}
|
||||||
|
|
||||||
|
private static string JoinRecords(IEnumerable<RollCallCaseHistoryDetailRecord> records, Func<RollCallCaseHistoryDetailRecord, string> selector)
|
||||||
|
{
|
||||||
|
var safeRecords = records ?? Enumerable.Empty<RollCallCaseHistoryDetailRecord>();
|
||||||
|
var values = safeRecords.Select(selector).Where(x => !string.IsNullOrWhiteSpace(x)).ToList();
|
||||||
|
return values.Count == 0 ? string.Empty : string.Join(Environment.NewLine, values);
|
||||||
|
}
|
||||||
|
|
||||||
|
private static string FormatSignedTimeSpan(TimeSpan value)
|
||||||
|
{
|
||||||
|
if (value == TimeSpan.Zero)
|
||||||
|
return "-";
|
||||||
|
|
||||||
|
var abs = value.Duration();
|
||||||
|
var sign = value.Ticks < 0 ? "-" : "+";
|
||||||
|
return $"{(int)abs.TotalHours}:{abs.Minutes:00}{sign}";
|
||||||
|
}
|
||||||
|
|
||||||
private string CalculateExitMinuteDifference(TimeSpan early, TimeSpan late)
|
private string CalculateExitMinuteDifference(TimeSpan early, TimeSpan late)
|
||||||
{
|
{
|
||||||
if (early == TimeSpan.Zero && late == TimeSpan.Zero)
|
if (early == TimeSpan.Zero && late == TimeSpan.Zero)
|
||||||
|
|||||||
@@ -0,0 +1,58 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
using Company.Domain.InstitutionContractSendFlagAgg;
|
||||||
|
using MongoDB.Driver;
|
||||||
|
|
||||||
|
namespace CompanyManagement.Infrastructure.Mongo.InstitutionContractSendFlagRepo;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Repository برای مدیریت فلگ ارسال قرارداد در MongoDB
|
||||||
|
/// </summary>
|
||||||
|
public class InstitutionContractSendFlagRepository : IInstitutionContractSendFlagRepository
|
||||||
|
{
|
||||||
|
private readonly IMongoCollection<InstitutionContractSendFlag> _collection;
|
||||||
|
|
||||||
|
public InstitutionContractSendFlagRepository(IMongoDatabase database)
|
||||||
|
{
|
||||||
|
_collection = database.GetCollection<InstitutionContractSendFlag>("InstitutionContractSendFlag");
|
||||||
|
}
|
||||||
|
|
||||||
|
public async Task Create(InstitutionContractSendFlag flag)
|
||||||
|
{
|
||||||
|
await _collection.InsertOneAsync(flag);
|
||||||
|
}
|
||||||
|
|
||||||
|
public async Task<InstitutionContractSendFlag> GetByContractId(long contractId)
|
||||||
|
{
|
||||||
|
var filter = Builders<InstitutionContractSendFlag>.Filter
|
||||||
|
.Eq(x => x.InstitutionContractId, contractId);
|
||||||
|
|
||||||
|
return await _collection.Find(filter).FirstOrDefaultAsync();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public async Task Update(InstitutionContractSendFlag flag)
|
||||||
|
{
|
||||||
|
var filter = Builders<InstitutionContractSendFlag>.Filter
|
||||||
|
.Eq(x => x.InstitutionContractId, flag.InstitutionContractId);
|
||||||
|
|
||||||
|
await _collection.ReplaceOneAsync(filter, flag);
|
||||||
|
}
|
||||||
|
|
||||||
|
public async Task<bool> IsContractSent(long contractId)
|
||||||
|
{
|
||||||
|
var flag = await GetByContractId(contractId);
|
||||||
|
return flag != null && flag.IsSent;
|
||||||
|
}
|
||||||
|
|
||||||
|
public async Task Remove(long contractId)
|
||||||
|
{
|
||||||
|
var filter = Builders<InstitutionContractSendFlag>.Filter
|
||||||
|
.Eq(x => x.InstitutionContractId, contractId);
|
||||||
|
|
||||||
|
await _collection.DeleteOneAsync(filter);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
@@ -2,7 +2,7 @@ using System.Collections.Generic;
|
|||||||
using _0_Framework.Application;
|
using _0_Framework.Application;
|
||||||
using Company.Application.Contracts.AuthorizedBankDetails;
|
using Company.Application.Contracts.AuthorizedBankDetails;
|
||||||
|
|
||||||
namespace Company.Application.Contracts.AuthorizedBankDetails
|
namespace CompanyManagment.App.Contracts.AuthorizedBankDetails
|
||||||
{
|
{
|
||||||
public interface IAuthorizedBankDetailsApplication
|
public interface IAuthorizedBankDetailsApplication
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -10,5 +10,12 @@ namespace CompanyManagment.App.Contracts.Bank
|
|||||||
OperationResult Create(CreateBank command);
|
OperationResult Create(CreateBank command);
|
||||||
OperationResult Edit(EditBank command);
|
OperationResult Edit(EditBank command);
|
||||||
List<BankViewModel> Search(string name);
|
List<BankViewModel> Search(string name);
|
||||||
|
List<BankSelectList> GetBanksForSelectList();
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public class BankSelectList:SelectListViewModel
|
||||||
|
{
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -193,4 +193,9 @@ public class CreateCheckout
|
|||||||
/// پایه سنوات قبل از تاثیر ساعت کار
|
/// پایه سنوات قبل از تاثیر ساعت کار
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public double BaseYearUnAffected { get; set; }
|
public double BaseYearUnAffected { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// آیا برای محاسبه پاداش مجاز است
|
||||||
|
/// </summary>
|
||||||
|
public bool RewardPayCompute { get; set; }
|
||||||
}
|
}
|
||||||
92
CompanyManagment.App.Contracts/Checkout/Dto/CheckoutDto.cs
Normal file
92
CompanyManagment.App.Contracts/Checkout/Dto/CheckoutDto.cs
Normal file
@@ -0,0 +1,92 @@
|
|||||||
|
using System.Collections.Generic;
|
||||||
|
|
||||||
|
namespace CompanyManagment.App.Contracts.Checkout.Dto;
|
||||||
|
|
||||||
|
public class CheckoutDto
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// آی دی فیش
|
||||||
|
/// </summary>
|
||||||
|
public long Id { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// نام پرسنل
|
||||||
|
/// </summary>
|
||||||
|
public string EmployeeFullName { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// نام کارگاه
|
||||||
|
/// </summary>
|
||||||
|
public string WorkshopName { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// شماره قراداد
|
||||||
|
/// </summary>
|
||||||
|
public string ContractNo { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// تاریخ شروع فیش
|
||||||
|
/// </summary>
|
||||||
|
public string ContractStart { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// تاریخ پایان فیش
|
||||||
|
/// </summary>
|
||||||
|
public string ContractEnd { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// ماه
|
||||||
|
/// </summary>
|
||||||
|
public string Month { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// سال
|
||||||
|
/// </summary>
|
||||||
|
public string Year { get; set; }
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// روزهای کارکرد
|
||||||
|
/// </summary>
|
||||||
|
public string SumOfWorkingDays { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// شماره کارگاه
|
||||||
|
/// </summary>
|
||||||
|
public string ArchiveCode { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// کد پرسنلی
|
||||||
|
/// </summary>
|
||||||
|
public string PersonnelCode { get; set; }
|
||||||
|
/// <summary>
|
||||||
|
/// فعال/غیرفعال
|
||||||
|
/// </summary>
|
||||||
|
public bool IsActive { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// امضاء فیش
|
||||||
|
/// </summary>
|
||||||
|
public bool Signature { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// نام کارفرما
|
||||||
|
/// </summary>
|
||||||
|
public string EmployerName { get; set; }
|
||||||
|
public bool IsBlockCantracingParty { get; set; }
|
||||||
|
/// <summary>
|
||||||
|
/// آیا فیش نیاز به بروزرسانی دارد
|
||||||
|
/// </summary>
|
||||||
|
public bool IsUpdateNeeded { get; set; }
|
||||||
|
/// <summary>
|
||||||
|
/// لیست پیام های هشدار فیش حقوقی
|
||||||
|
/// </summary>
|
||||||
|
public List<CheckoutWarningMessageModel> CheckoutWarningMessageList { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// نیاز به امزا دارد یا خیر
|
||||||
|
/// </summary>
|
||||||
|
public bool HasSignCheckoutOption { get; set; }
|
||||||
|
|
||||||
|
}
|
||||||
247
CompanyManagment.App.Contracts/Checkout/Dto/CheckoutPrintDto.cs
Normal file
247
CompanyManagment.App.Contracts/Checkout/Dto/CheckoutPrintDto.cs
Normal file
@@ -0,0 +1,247 @@
|
|||||||
|
using System;
|
||||||
|
using CompanyManagment.App.Contracts.Loan;
|
||||||
|
using CompanyManagment.App.Contracts.RollCall;
|
||||||
|
using CompanyManagment.App.Contracts.SalaryAid;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
|
||||||
|
namespace CompanyManagment.App.Contracts.Checkout.Dto;
|
||||||
|
|
||||||
|
public class CheckoutPrintDto
|
||||||
|
{
|
||||||
|
// هدر فیش
|
||||||
|
// اطلاعات هویتی
|
||||||
|
// اطلاعات کارگاه
|
||||||
|
#region Header
|
||||||
|
public long Id { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// نام پرسنل
|
||||||
|
/// </summary>
|
||||||
|
public string EmployeeFullName { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// نام پدر
|
||||||
|
/// </summary>
|
||||||
|
public string FathersName { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// کد ملی
|
||||||
|
/// </summary>
|
||||||
|
public string NationalCode { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// تاریخ تولد
|
||||||
|
/// </summary>
|
||||||
|
public string DateOfBirth { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// نام کارگاه
|
||||||
|
/// </summary>
|
||||||
|
public string WorkshopName { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// شماره قراداد
|
||||||
|
/// </summary>
|
||||||
|
public string ContractNo { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// ماه
|
||||||
|
/// </summary>
|
||||||
|
public string Month { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// سال
|
||||||
|
/// </summary>
|
||||||
|
public string Year { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// لیست کارفرما
|
||||||
|
/// </summary>
|
||||||
|
public List<CheckoutEmployersList> EmployersLists { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// آیا کارقرما حقوقی است
|
||||||
|
/// </summary>
|
||||||
|
public bool EmployerIslegal { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// آیا ترک کار کرده
|
||||||
|
/// </summary>
|
||||||
|
public bool HasLeft { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// آخرین روز کاری
|
||||||
|
/// </summary>
|
||||||
|
public string LastDayOfWork { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// روز ترک کار
|
||||||
|
/// </summary>
|
||||||
|
public string LeftWorkDate { get; set; }
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
//جدول مطالبات و کسورات
|
||||||
|
#region PaymentAndDeductionTable
|
||||||
|
/// <summary>
|
||||||
|
/// مطالبات
|
||||||
|
/// </summary>
|
||||||
|
public List<PaymentAndDeductionList> PaymentList { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// کسورات
|
||||||
|
/// </summary>
|
||||||
|
public List<PaymentAndDeductionList> DeductionList { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// جمع مطالبات
|
||||||
|
/// </summary>
|
||||||
|
public string TotalPayment { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// جمع کسورات
|
||||||
|
/// </summary>
|
||||||
|
public string TotalDeductions { get; set; }
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// مبلغ قابل پرداخت
|
||||||
|
/// </summary>
|
||||||
|
public string TotalClaims { get; set; }
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
//لیست ورود و خروج پرسنل
|
||||||
|
//اطلاعات ساعات کار و موظقی
|
||||||
|
#region RollCallData
|
||||||
|
/// <summary>
|
||||||
|
/// لیست حضورغیاب
|
||||||
|
/// </summary>
|
||||||
|
public List<CheckoutPrintRollCallDto> MonthlyRollCall { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// دیتای جدول حضورغیاب
|
||||||
|
/// </summary>
|
||||||
|
public CheckoutRollCallViewModel CheckoutRollCall { get; set; }
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
//اقساط - مساعده
|
||||||
|
#region SalaryAidAndInstallmentData
|
||||||
|
|
||||||
|
public List<CheckoutPrintInstallmentDto> Installments { get; set; }
|
||||||
|
public List<CheckoutPrintSalaryAidDto> SalaryAids { get; set; }
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// کسورات
|
||||||
|
/// </summary>
|
||||||
|
public class PaymentData
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// حقوق و مزد
|
||||||
|
/// </summary>
|
||||||
|
public string MonthlySalary { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// پایه سنوات
|
||||||
|
/// </summary>
|
||||||
|
public string BaseYearsPay { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// کمک هزینه اقلام مصرفی
|
||||||
|
/// </summary>
|
||||||
|
public string ConsumableItems { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// کمک هزینه مسکن
|
||||||
|
/// </summary>
|
||||||
|
public string HousingAllowance { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// فوق العاده اضافه کاری
|
||||||
|
/// </summary>
|
||||||
|
public string OvertimePay { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// فوق العاده شبکاری
|
||||||
|
/// </summary>
|
||||||
|
public string NightworkPay { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// فوق العاده جمعه کاری
|
||||||
|
/// </summary>
|
||||||
|
public string FridayPay { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// فوق العاده ماموریت
|
||||||
|
/// </summary>
|
||||||
|
public string MissionPay { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// فوق العاده نوبت کاری
|
||||||
|
/// </summary>
|
||||||
|
public string ShiftPay { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// کمک هزینه عائله مندی
|
||||||
|
/// </summary>
|
||||||
|
public string FamilyAllowance { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// حق تاهل
|
||||||
|
/// </summary>
|
||||||
|
public string MarriedAllowance { get; set; }
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// کسورات
|
||||||
|
/// </summary>
|
||||||
|
public class DeductionData
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public class PaymentAndDeductionList
|
||||||
|
{
|
||||||
|
public int RowNumber { get; set; }
|
||||||
|
/// <summary>
|
||||||
|
/// عنوان
|
||||||
|
/// </summary>
|
||||||
|
public string Title { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// مقدار/روز/ساعت
|
||||||
|
/// </summary>
|
||||||
|
public string Value { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// مبلغ
|
||||||
|
/// </summary>
|
||||||
|
public string Amount { get; set; }
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// لیست کارفرما
|
||||||
|
/// </summary>
|
||||||
|
public class CheckoutEmployersList
|
||||||
|
{
|
||||||
|
public string IsLegal { get; set; }
|
||||||
|
public string EmployerFullName { get; set; }
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
public class CheckoutGetData : CheckoutPrintDto
|
||||||
|
{
|
||||||
|
public DateTime ContractStart { get; set; }
|
||||||
|
|
||||||
|
public int PersonnelCode { get; set; }
|
||||||
|
|
||||||
|
public long WorkshopId { get; set; }
|
||||||
|
public long EmployeeId { get; set; }
|
||||||
|
}
|
||||||
@@ -0,0 +1,47 @@
|
|||||||
|
using _0_Framework.Application;
|
||||||
|
|
||||||
|
namespace CompanyManagment.App.Contracts.Checkout.Dto;
|
||||||
|
|
||||||
|
public class CheckoutSearchModelDto : PaginationRequest
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// نام پرسنل
|
||||||
|
/// </summary>
|
||||||
|
public string EmployeeFullName { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// آی دی کارگاه
|
||||||
|
/// </summary>
|
||||||
|
public long WorkshopId { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// شماره قرارداد
|
||||||
|
/// </summary>
|
||||||
|
public string ContractNo { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// تاریخ شروع فیش
|
||||||
|
/// </summary>
|
||||||
|
public string ContractStart { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// تاریخ پاین فیش
|
||||||
|
/// </summary>
|
||||||
|
public string ContractEnd { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// ماه
|
||||||
|
/// </summary>
|
||||||
|
public string Month { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// سال
|
||||||
|
/// </summary>
|
||||||
|
public string Year { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// آی دی گارفرما
|
||||||
|
/// </summary>
|
||||||
|
public long EmployerId { get; set; }
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,53 @@
|
|||||||
|
namespace CompanyManagment.App.Contracts.Checkout.Dto;
|
||||||
|
|
||||||
|
public class ContractsListToCreateCheckoutDto
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// آی دی قراداد
|
||||||
|
/// </summary>
|
||||||
|
public long Id { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// کد پرسنلی
|
||||||
|
/// </summary>
|
||||||
|
public long PersonnelCode { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// شماره قرارداد
|
||||||
|
/// </summary>
|
||||||
|
public string ContractNo { get; set; }
|
||||||
|
|
||||||
|
//نام کارگاه
|
||||||
|
public string WorkshopName { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// نام پرسنل
|
||||||
|
/// </summary>
|
||||||
|
public string EmployeeName { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// تاریخ شوع فیش
|
||||||
|
/// </summary>
|
||||||
|
public string ContractStart { get; set; }
|
||||||
|
/// <summary>
|
||||||
|
/// تاریخ پایان فیش
|
||||||
|
/// </summary>
|
||||||
|
public string ContractEnd { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// تاریخ ترک کار
|
||||||
|
/// </summary>
|
||||||
|
public string LeftWorkDate { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// وضعیت ایجاد فیش
|
||||||
|
/// </summary>
|
||||||
|
public CreateCheckoutStatus CreateCheckoutStatus { get; set; }
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// توضیحات
|
||||||
|
/// </summary>
|
||||||
|
public string Description { get; set; }
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,22 @@
|
|||||||
|
namespace CompanyManagment.App.Contracts.Checkout.Dto;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// وضعیت ایجاد فیش
|
||||||
|
/// </summary>
|
||||||
|
public enum CreateCheckoutStatus
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// آماده ایجاد
|
||||||
|
/// </summary>
|
||||||
|
ReadyToCreate,
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// غیر مجاز
|
||||||
|
/// </summary>
|
||||||
|
NotValid,
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// دارای فیش حقوقی
|
||||||
|
/// </summary>
|
||||||
|
HasCheckout,
|
||||||
|
}
|
||||||
@@ -0,0 +1,14 @@
|
|||||||
|
namespace CompanyManagment.App.Contracts.Checkout.Dto;
|
||||||
|
|
||||||
|
public class EmployeeSelectListDto
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// آی دی پرسنل
|
||||||
|
/// </summary>
|
||||||
|
public long Id { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// نام پرسنل
|
||||||
|
/// </summary>
|
||||||
|
public string EmployeeFullName { get; set; }
|
||||||
|
}
|
||||||
@@ -0,0 +1,210 @@
|
|||||||
|
using System;
|
||||||
|
using CompanyManagment.App.Contracts.Contract;
|
||||||
|
using CompanyManagment.App.Contracts.EmployeeComputeOptions;
|
||||||
|
using CompanyManagment.App.Contracts.WorkingHoursTemp;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
|
||||||
|
namespace CompanyManagment.App.Contracts.Checkout.Dto;
|
||||||
|
|
||||||
|
public class GetContractAndIncludesDataToCreateDto
|
||||||
|
{
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// آی دی کارگاه
|
||||||
|
/// </summary>
|
||||||
|
public long WorkshopId { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// نام کارگاه
|
||||||
|
/// </summary>
|
||||||
|
public string WorkshopName { get; set; }
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// کد بایگانی کارگاه
|
||||||
|
/// </summary>
|
||||||
|
public string ArchiveCode { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// آیا تنظیمات کارگاه بر رو ایجاد فیش استاتیک است
|
||||||
|
/// </summary>
|
||||||
|
public bool IsStaticCheckout { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// آیا کارگاه در تعطیلات رسمی باز است
|
||||||
|
/// </summary>
|
||||||
|
public bool WorkshopHolidayWorking { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// محاسبه نوبت کاری در فیش حقوقی
|
||||||
|
/// </summary>
|
||||||
|
public bool RotatingShiftCompute { get; set; }
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// آیا پاداش در فیش حقوقی محاسبه شود
|
||||||
|
/// </summary>
|
||||||
|
public bool RewardComputeOnCheckout { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// آیا اضافه کار فیش حقوقی در بیمه محاسبه شود
|
||||||
|
/// </summary>
|
||||||
|
public bool HasInsuranceCheckoutOverTime { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// آی دی صنف بیمه کارگاه
|
||||||
|
/// </summary>
|
||||||
|
public long? InsuranceJobId { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// آیا کارگاه مشاغل مقطوع است
|
||||||
|
/// </summary>
|
||||||
|
public bool FixedSalary { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// جمعیت شهر کارگاه
|
||||||
|
/// </summary>
|
||||||
|
public string Population { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// نوع ارسال لیست بیمه
|
||||||
|
/// </summary>
|
||||||
|
public string TypeOfInsuranceSend { get; set; }
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// قرارداد قدیمی است؟
|
||||||
|
/// </summary>
|
||||||
|
public bool IsOldContract { get; set; }
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
public List<ContractIncludedData> ContractIncludedData { get; set; }
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public class ContractIncludedData
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// شماره قرارداد
|
||||||
|
/// </summary>
|
||||||
|
public string ContractNo { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// آی دی پرسنل
|
||||||
|
/// </summary>
|
||||||
|
public long EmployeeId { get; set; }
|
||||||
|
/// <summary>
|
||||||
|
/// نام کامل پرسنل
|
||||||
|
/// </summary>
|
||||||
|
public string EmployeeFullName { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// نام پدر
|
||||||
|
/// </summary>
|
||||||
|
public string FathersName { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// کد ملی
|
||||||
|
/// </summary>
|
||||||
|
public string NationalCode { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// تاریخ تولد
|
||||||
|
/// </summary>
|
||||||
|
public string DateOfBirth { get; set; }
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// کد پرسنلس
|
||||||
|
/// </summary>
|
||||||
|
public string PersonnelCode { get; set; }
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// وضعیت تاهل
|
||||||
|
/// </summary>
|
||||||
|
|
||||||
|
public string MaritalStatus { get; set; }
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// ساعت کاری پرسنل
|
||||||
|
/// </summary>
|
||||||
|
public CreateWorkingHoursTemp WorkingHours { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// اطلاعات جداسازی تاریخ فیش
|
||||||
|
/// </summary>
|
||||||
|
public ContractSeparationViewModel Separation { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// تنظیمات فنی پرسنل
|
||||||
|
/// سنوات
|
||||||
|
/// </summary>
|
||||||
|
public string YearsOption { get; set; }
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// تنظیمات فنی پرسنل
|
||||||
|
/// عیدی و پاداش
|
||||||
|
/// </summary>
|
||||||
|
public string BonusesOption { get; set; }
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// تنظیمات فنی پرسنل
|
||||||
|
/// مزد مرخصی
|
||||||
|
/// </summary>
|
||||||
|
public string ComputeOption { get; set; }
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// ترایخ شروع قراداد
|
||||||
|
/// شمسی
|
||||||
|
/// </summary>
|
||||||
|
public string ContractStart { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// تاریخ پایان قرارداد
|
||||||
|
/// شمسی
|
||||||
|
/// </summary>
|
||||||
|
public string ContractEnd { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// ترایخ شروع قراداد
|
||||||
|
/// میلادی
|
||||||
|
/// </summary>
|
||||||
|
public DateTime ContractStartGr { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// تاریخ پایان قرارداد
|
||||||
|
/// میلادی
|
||||||
|
/// </summary>
|
||||||
|
public DateTime ContractEndGr { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// آی دی قراداد
|
||||||
|
/// </summary>
|
||||||
|
public long ContractId { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// مزد روزانه قرداد بدون تاثیر ساعات کار
|
||||||
|
/// </summary>
|
||||||
|
public double DailySalaryUnAffected { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// نوع مزد روزانه
|
||||||
|
/// </summary>
|
||||||
|
public string DailyWageType { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// اولین شروع بکار پرسنل
|
||||||
|
/// </summary>
|
||||||
|
public string FirstGetWorkingDay { get; set; }
|
||||||
|
}
|
||||||
@@ -0,0 +1,75 @@
|
|||||||
|
using System.Collections.Generic;
|
||||||
|
|
||||||
|
namespace CompanyManagment.App.Contracts.Checkout.Dto;
|
||||||
|
|
||||||
|
public class RotatingShiftOfCheckoutDto
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// نام پرسنل
|
||||||
|
/// </summary>
|
||||||
|
public string FullName { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// وضعیت نوبتکاری
|
||||||
|
/// </summary>
|
||||||
|
public string RotatingShiftStatus { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// آیا نوبت کاری دارد
|
||||||
|
/// </summary>
|
||||||
|
public bool HasRotatingShift { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// سال و ماه
|
||||||
|
/// </summary>
|
||||||
|
public string YearAndMonth { get; set; }
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// نوع ساعت کاری
|
||||||
|
/// </summary>
|
||||||
|
public string TypeOfWorkingHours { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// لیست نوبت کاری
|
||||||
|
/// </summary>
|
||||||
|
public List<RotatingShiftListDto> RotatingShiftList { get; set; }
|
||||||
|
}
|
||||||
|
|
||||||
|
public class RotatingShiftListDto
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// بازه کاری صبح
|
||||||
|
/// </summary>
|
||||||
|
public string MorningShiftSpan { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// بازه کاری عصر
|
||||||
|
/// </summary>
|
||||||
|
public string EveningShiftSpan { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// بازه کاری شب
|
||||||
|
/// </summary>
|
||||||
|
public string NightShiftSpan { get; set; }
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// آیا صبح کاری داشته
|
||||||
|
/// </summary>
|
||||||
|
public bool IsMorningShift { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// آیا عصرکاری داشته
|
||||||
|
/// </summary>
|
||||||
|
public bool IsEveningShift { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// آیا شبکاری داشته
|
||||||
|
/// </summary>
|
||||||
|
public bool IsNightShift { get; set; }
|
||||||
|
/// <summary>
|
||||||
|
/// تاریخ شیفت
|
||||||
|
/// </summary>
|
||||||
|
public string ShiftDate { get; set; }
|
||||||
|
}
|
||||||
@@ -1,9 +1,10 @@
|
|||||||
using System;
|
using _0_Framework.Application;
|
||||||
|
using CompanyManagment.App.Contracts.Checkout.Dto;
|
||||||
|
using System;
|
||||||
using System.Collections.Generic;
|
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;
|
|
||||||
|
|
||||||
namespace CompanyManagment.App.Contracts.Checkout;
|
namespace CompanyManagment.App.Contracts.Checkout;
|
||||||
|
|
||||||
@@ -62,4 +63,108 @@ public interface ICheckoutApplication
|
|||||||
long workshopId, DateTime start, DateTime end);
|
long workshopId, DateTime start, DateTime end);
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
|
Task<PagedResult<CheckoutListClientDto>> GetListForClient(long workshopId,
|
||||||
|
CheckoutListClientSearchModel searchModel);
|
||||||
|
|
||||||
|
#region ForApi
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// دریافت سلکت لیست پرسنل کارگاه
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="id"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
Task<List<EmployeeSelectListDto>> GetEmployeeSelectListByWorkshopId(long id);
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// دریافت لیست فیش های حقوقی ادمین
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="searchModel"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
Task<PagedResult<CheckoutDto>> GetList(CheckoutSearchModelDto searchModel);
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// دریافت نوبتکاری
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="id"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
Task<RotatingShiftOfCheckoutDto> GetRotatingShiftApi(long id);
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// پرینت فیش حقوقی
|
||||||
|
/// Api
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="ids"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
Task<List<CheckoutPrintDto>> CheckoutPrint(List<long> ids);
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// دریافت لیست قراردادها برای ایجاد فیش حقوقی
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="workshopId"></param>
|
||||||
|
/// <param name="year"></param>
|
||||||
|
/// <param name="month"></param>
|
||||||
|
/// <param name="employeeId"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
Task<OperationResult<List<ContractsListToCreateCheckoutDto>>> GetContractToCreateCheckout(long workshopId,
|
||||||
|
string year, string month, long employeeId);
|
||||||
|
/// <summary>
|
||||||
|
/// ایجاد فیش حقوقی
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="ids"></param>
|
||||||
|
/// <param name="year"></param>
|
||||||
|
/// <param name="month"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
Task<OperationResult> CreateCheckoutApi(List<long> ids, string year, string month, long workshopId);
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
}
|
||||||
|
|
||||||
|
public class CheckoutPrintInstallmentDto
|
||||||
|
{
|
||||||
|
public string RemainingAmount { get; set; }
|
||||||
|
public string LoanAmount { get; set; }
|
||||||
|
public string Amount { get; set; }
|
||||||
|
}
|
||||||
|
public class CheckoutPrintSalaryAidDto
|
||||||
|
{
|
||||||
|
public string Amount { get; set; }
|
||||||
|
public string SalaryAidDateTimeFa { get; set; }
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public class CheckoutListClientSearchModel:PaginationRequest
|
||||||
|
{
|
||||||
|
public long? EmployeeId { get; set; }
|
||||||
|
public string Year { get; set; }
|
||||||
|
public string Month { get; set; }
|
||||||
|
public string StartDate { get; set; }
|
||||||
|
public string EndDate { get; set; }
|
||||||
|
public CheckoutClientListOrderType? OrderType { get; set; }
|
||||||
|
}
|
||||||
|
|
||||||
|
public class CheckoutListClientDto
|
||||||
|
{
|
||||||
|
public long Id { get; set; }
|
||||||
|
public string Year { get; set; }
|
||||||
|
public string Month { get; set; }
|
||||||
|
public string EmployeeName { get; set; }
|
||||||
|
public string ContractNo { get; set; }
|
||||||
|
public string ContractStart { get; set; }
|
||||||
|
public string ContractEnd { get; set; }
|
||||||
|
public bool Signature { get; set; }
|
||||||
|
}
|
||||||
|
|
||||||
|
public enum CheckoutClientListOrderType
|
||||||
|
{
|
||||||
|
ByCheckoutCreationDate,
|
||||||
|
BySignedCheckout,
|
||||||
|
ByUnSignedCheckout,
|
||||||
|
ByPersonnelCode,
|
||||||
|
ByPersonnelCodeDescending,
|
||||||
|
ByCheckoutStartDate,
|
||||||
|
ByCheckoutStartDateDescending
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -0,0 +1,84 @@
|
|||||||
|
using System.Collections.Generic;
|
||||||
|
|
||||||
|
namespace CompanyManagment.App.Contracts.ClassificationScheme;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// مدل برای مدال افزودن پرسنل ب گروه
|
||||||
|
/// </summary>
|
||||||
|
public class AddEmployeeToGroup
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// آی دی
|
||||||
|
/// </summary>
|
||||||
|
public long Id { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// نام کامل پرسنل
|
||||||
|
/// </summary>
|
||||||
|
public string EmployeeFullName { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// آی دی پرسنل
|
||||||
|
/// </summary>
|
||||||
|
public long EmployeeId { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// آی دی طرح
|
||||||
|
/// </summary>
|
||||||
|
public long SchemeId { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// آی دی گروه
|
||||||
|
/// </summary>
|
||||||
|
public long GroupId { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// شماره گروه
|
||||||
|
/// </summary>
|
||||||
|
public string GoroupNo { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// آی دی شغل
|
||||||
|
/// </summary>
|
||||||
|
public long JobId { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// نام شغل
|
||||||
|
/// </summary>
|
||||||
|
public string JobName { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// کد شغل
|
||||||
|
/// </summary>
|
||||||
|
public string JobCode { get; set; }
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// لیست گروه ها
|
||||||
|
/// </summary>
|
||||||
|
public List<ClassificationGroupList> ClassificationGroupList{ get; set; }
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// لیست گروه ها
|
||||||
|
/// </summary>
|
||||||
|
public class ClassificationGroupList
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// آی دی گروه
|
||||||
|
/// </summary>
|
||||||
|
public long GroupId { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// شماره گروه
|
||||||
|
/// استرینگ
|
||||||
|
/// </summary>
|
||||||
|
public string GroupNo { get; set; }
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// شماره گروه
|
||||||
|
/// اینتیجر
|
||||||
|
/// </summary>
|
||||||
|
public int GroupNoInt { get; set; }
|
||||||
|
}
|
||||||
@@ -0,0 +1,36 @@
|
|||||||
|
using System.Collections.Generic;
|
||||||
|
|
||||||
|
namespace CompanyManagment.App.Contracts.ClassificationScheme;
|
||||||
|
|
||||||
|
public class AddOrEditJobInGroupDto
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// آی دی گروه
|
||||||
|
/// </summary>
|
||||||
|
public long GroupId { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// شماره گروه نوع عددی
|
||||||
|
/// </summary>
|
||||||
|
public int GroupNoInt { get; set; }
|
||||||
|
|
||||||
|
|
||||||
|
public List<AddJobListDto> AddJobListDto { get; set; }
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// لیست مشغال افزوده شده به گروه
|
||||||
|
/// </summary>
|
||||||
|
public class AddJobListDto
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// آی دی شغل در مشاغل اداره کار
|
||||||
|
/// </summary>
|
||||||
|
public long JobId { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// نام شغل
|
||||||
|
/// </summary>
|
||||||
|
public string JobName { get; set; }
|
||||||
|
}
|
||||||
@@ -0,0 +1,32 @@
|
|||||||
|
namespace CompanyManagment.App.Contracts.ClassificationScheme;
|
||||||
|
|
||||||
|
public class CheckStatusToDeleteScheme
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// وضعیت طرح برای حذف
|
||||||
|
/// </summary>
|
||||||
|
public DeleteSchemeStatus DeleteSchemeStatus { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// پیام سیستم
|
||||||
|
/// </summary>
|
||||||
|
public string Message { get; set; }
|
||||||
|
}
|
||||||
|
|
||||||
|
public enum DeleteSchemeStatus
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// مجاز
|
||||||
|
/// </summary>
|
||||||
|
Valid,
|
||||||
|
/// <summary>
|
||||||
|
/// مجاز باشرط تایید
|
||||||
|
/// </summary>
|
||||||
|
ConfirmationNeeded,
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// غیر مجاز
|
||||||
|
/// </summary>
|
||||||
|
NotValid,
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,104 @@
|
|||||||
|
using System.Collections.Generic;
|
||||||
|
|
||||||
|
namespace CompanyManagment.App.Contracts.ClassificationScheme;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// ایجاد گروه
|
||||||
|
/// </summary>
|
||||||
|
public class ClassificationGroupAndJobModel
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// آی دی گروه
|
||||||
|
/// </summary>
|
||||||
|
public long GroupId { get; set; }
|
||||||
|
/// <summary>
|
||||||
|
/// شماره گروه
|
||||||
|
/// استرینگ
|
||||||
|
/// </summary>
|
||||||
|
public string GroupNo { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// شماره گروه نوع عددی
|
||||||
|
/// </summary>
|
||||||
|
public int GroupNoInt { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// آی دی کارگاه
|
||||||
|
/// </summary>
|
||||||
|
public long WorkshopId { get; set; }
|
||||||
|
/// <summary>
|
||||||
|
/// آی دی طرح
|
||||||
|
/// </summary>
|
||||||
|
public long ClassificationSchemeId { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// لیست مشاغل
|
||||||
|
/// </summary>
|
||||||
|
public List<EditClassificationGroupJob> EditClassificationGroupJob { get; set; }
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// ایجاد مشاغل گروه
|
||||||
|
/// </summary>
|
||||||
|
public class CreateClassificationGroupJob
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// آی دی شغل
|
||||||
|
/// </summary>
|
||||||
|
public long JobId { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// نام شغل
|
||||||
|
/// </summary>
|
||||||
|
public string JobName { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// کد شغل
|
||||||
|
/// </summary>
|
||||||
|
public string JobCode { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// آی دی گروه
|
||||||
|
/// </summary>
|
||||||
|
public long ClassificationGroupId { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// شماره گروه
|
||||||
|
/// </summary>
|
||||||
|
public string GroupNo { get; set; }
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// ویرایش مشاغل گروه
|
||||||
|
/// </summary>
|
||||||
|
public class EditClassificationGroupJob : CreateClassificationGroupJob
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// ای دی شغل
|
||||||
|
/// </summary>
|
||||||
|
public long Id { get; set; }
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// ایجاد یا ویرایش مشاغل
|
||||||
|
/// </summary>
|
||||||
|
public class CreateOrEditGroupJobs
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// آی دی گروه
|
||||||
|
/// </summary>
|
||||||
|
public long GroupId { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// شماره گروه
|
||||||
|
/// استرینگ
|
||||||
|
/// </summary>
|
||||||
|
public string GroupNo { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// آی دی مشاغل
|
||||||
|
/// </summary>
|
||||||
|
public List<long> JobIdList { get; set; }
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -0,0 +1,24 @@
|
|||||||
|
using System.Collections.Generic;
|
||||||
|
|
||||||
|
namespace CompanyManagment.App.Contracts.ClassificationScheme;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// پارشیال صفحه ایجاد طرح
|
||||||
|
/// </summary>
|
||||||
|
public class ClassificationSchemeListDto
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// آیا طرح دارد
|
||||||
|
/// </summary>
|
||||||
|
public bool HasScheme { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// آی دی کارگاه
|
||||||
|
/// </summary>
|
||||||
|
public long WorkshopId { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// لیست طرح
|
||||||
|
/// </summary>
|
||||||
|
public List<SchemeListDto> ClassificationSchemesList { get; set; }
|
||||||
|
}
|
||||||
@@ -0,0 +1,204 @@
|
|||||||
|
using _0_Framework.Application.Enums;
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.ComponentModel.DataAnnotations;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace CompanyManagment.App.Contracts.ClassificationScheme;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// ایجاد دستمزد گروه و ضریب ریالی
|
||||||
|
/// </summary>
|
||||||
|
public class CreateClassificationGroupSalaryAndRialCoefficient
|
||||||
|
{
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// آی دی گروه
|
||||||
|
/// </summary>
|
||||||
|
public long ClassificationGroupId { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// شماره گروه
|
||||||
|
/// </summary>
|
||||||
|
public string GroupNo { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// دستمزد گروه
|
||||||
|
/// </summary>
|
||||||
|
public double GroupSalary { get; set; }
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// تاریخ شروع
|
||||||
|
/// </summary>
|
||||||
|
public DateTime StartDate { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// تاریخ پایان
|
||||||
|
/// </summary>
|
||||||
|
public DateTime EndDate { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// سال
|
||||||
|
/// </summary>
|
||||||
|
public int Year { get; set; }
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// ویرایش دستمزد
|
||||||
|
/// </summary>
|
||||||
|
public class EditClassificationGroupSalaryAndRialCoefficient : CreateClassificationGroupSalaryAndRialCoefficient
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// آی دی
|
||||||
|
/// </summary>
|
||||||
|
public long Id { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// تاریخ شروع
|
||||||
|
/// شمسی
|
||||||
|
/// </summary>
|
||||||
|
[DataType(DataType.Text)]
|
||||||
|
public string StartDateFa { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// تاریخ پایان
|
||||||
|
/// شمسی
|
||||||
|
/// </summary>
|
||||||
|
[DataType(DataType.Text)]
|
||||||
|
public string EndDateFa { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// دستمزد گروه
|
||||||
|
/// </summary>
|
||||||
|
public string GroupSalaryStr { get; set; }
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// لیست دستمزدها و ضرایب ریالی
|
||||||
|
/// </summary>
|
||||||
|
public class SalaryAndRialCoefficientModel
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// تاریخ شروع
|
||||||
|
/// میلادی
|
||||||
|
/// </summary>
|
||||||
|
public DateTime StartDate { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// تاریخ شروع
|
||||||
|
/// شمسی
|
||||||
|
/// </summary>
|
||||||
|
[DataType(DataType.Text)]
|
||||||
|
public string StartDateFa { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// تاریخ پایان
|
||||||
|
/// میلادی
|
||||||
|
/// </summary>
|
||||||
|
public DateTime EndDate { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// تاریخ پایان
|
||||||
|
/// شمسی
|
||||||
|
/// </summary>
|
||||||
|
[DataType(DataType.Text)]
|
||||||
|
public string EndDateFa { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// سال
|
||||||
|
/// </summary>
|
||||||
|
public int Year { get; set; }
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// ضریب ریالی
|
||||||
|
/// string
|
||||||
|
/// </summary>
|
||||||
|
public string RialCoefficientStr { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// ضریب ریالی
|
||||||
|
/// double
|
||||||
|
/// </summary>
|
||||||
|
public double RialCoefficient { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// آی دی طرح
|
||||||
|
/// </summary>
|
||||||
|
public long SchemeId { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// نوع ضریب
|
||||||
|
/// </summary>
|
||||||
|
public TypeOfCoefficient TypeOfCoefficient { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// آی دی ضریب ریالی
|
||||||
|
/// </summary>
|
||||||
|
public long CoefficientId { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// لیست دستمزدها و ضرایب بر اساس سال
|
||||||
|
/// </summary>
|
||||||
|
public List<EditClassificationGroupSalaryAndRialCoefficient> SalariesAndCoefficientList { get; set; }
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// تب دستمزد ها و ضرایب ریالی
|
||||||
|
/// </summary>
|
||||||
|
public class SalaryAndRialCoefficientTab
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// آی دی طرح
|
||||||
|
/// </summary>
|
||||||
|
public long SchemeId { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// آیا دستمزدی قبلا ایجاد شده است؟
|
||||||
|
/// </summary>
|
||||||
|
public bool HasAnySalaries { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// لیست دستمزدها و ضرایب
|
||||||
|
/// </summary>
|
||||||
|
public List<SalaryAndRialCoefficientTabDataList> SalaryAndRialCoefficientTabDataList { get; set; }
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// لیست دستمزدها
|
||||||
|
/// </summary>
|
||||||
|
public class SalaryAndRialCoefficientTabDataList
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// تاریخ شروع
|
||||||
|
/// شمسی
|
||||||
|
/// </summary>
|
||||||
|
[DataType(DataType.Text)]
|
||||||
|
public string StartDateFa { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// تاریخ پایان
|
||||||
|
/// شمسی
|
||||||
|
/// </summary>
|
||||||
|
[DataType(DataType.Text)]
|
||||||
|
public string EndDateFa { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// سال
|
||||||
|
/// </summary>
|
||||||
|
public int Year { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// ضریب ریالی
|
||||||
|
/// string
|
||||||
|
/// </summary>
|
||||||
|
public string RialCoefficientStr { get; set; }
|
||||||
|
}
|
||||||
|
|
||||||
@@ -0,0 +1,59 @@
|
|||||||
|
using _0_Framework.Application.Enums;
|
||||||
|
using System;
|
||||||
|
using System.ComponentModel.DataAnnotations;
|
||||||
|
|
||||||
|
namespace CompanyManagment.App.Contracts.ClassificationScheme;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// ایجاد طرح
|
||||||
|
/// </summary>
|
||||||
|
public class CreateClassificationScheme
|
||||||
|
{
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// تاریخ شمول طرح
|
||||||
|
/// شمسی
|
||||||
|
/// </summary>
|
||||||
|
public string IncludingDateFa { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// تاریخ اجرای طرح
|
||||||
|
/// میلادی
|
||||||
|
/// </summary>
|
||||||
|
public DateTime ExecutionDateGr { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// تاریخ اجرای طرح
|
||||||
|
/// شمسی
|
||||||
|
/// </summary>
|
||||||
|
public string ExecutionDateFa { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// تاریخ پایان طرح
|
||||||
|
/// </summary>
|
||||||
|
public DateTime? EndSchemeDateGr { get; set; }
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// نام کامل طراح
|
||||||
|
/// </summary>
|
||||||
|
public string DesignerFullName { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// شماره همراه طراح
|
||||||
|
/// </summary>
|
||||||
|
[RegularExpression("^[0-9]*$", ErrorMessage = "لطفا فقط عدد وارد کنید")]
|
||||||
|
public string DesignerPhone { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// آی دی کارگاه
|
||||||
|
/// </summary>
|
||||||
|
public long WorkshopId { get; set; }
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// نوع ضریب
|
||||||
|
/// </summary>
|
||||||
|
public TypeOfCoefficient TypeOfCoefficient { get; set; }
|
||||||
|
}
|
||||||
@@ -0,0 +1,46 @@
|
|||||||
|
using _0_Framework.Application.Enums;
|
||||||
|
using System;
|
||||||
|
using System.ComponentModel.DataAnnotations;
|
||||||
|
|
||||||
|
namespace CompanyManagment.App.Contracts.ClassificationScheme;
|
||||||
|
|
||||||
|
public class CreateClassificationSchemeDto
|
||||||
|
{
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// تاریخ شمول طرح
|
||||||
|
/// شمسی
|
||||||
|
/// </summary>
|
||||||
|
public string IncludingDateFa { get; set; }
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// تاریخ اجرای طرح
|
||||||
|
/// شمسی
|
||||||
|
/// </summary>
|
||||||
|
public string ExecutionDateFa { get; set; }
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// نام کامل طراح
|
||||||
|
/// </summary>
|
||||||
|
public string DesignerFullName { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// شماره همراه طراح
|
||||||
|
/// </summary>
|
||||||
|
[RegularExpression("^[0-9]*$", ErrorMessage = "لطفا فقط عدد وارد کنید")]
|
||||||
|
public string DesignerPhone { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// آی دی کارگاه
|
||||||
|
/// </summary>
|
||||||
|
public long WorkshopId { get; set; }
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// نوع ضریب
|
||||||
|
/// </summary>
|
||||||
|
public TypeOfCoefficient TypeOfCoefficient { get; set; }
|
||||||
|
}
|
||||||
@@ -0,0 +1,12 @@
|
|||||||
|
namespace CompanyManagment.App.Contracts.ClassificationScheme;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// ویرایش طرح
|
||||||
|
/// </summary>
|
||||||
|
public class EditClassificationScheme : CreateClassificationScheme
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// آی دی طرح
|
||||||
|
/// </summary>
|
||||||
|
public long Id { get; set; }
|
||||||
|
}
|
||||||
@@ -0,0 +1,45 @@
|
|||||||
|
using _0_Framework.Application.Enums;
|
||||||
|
using System.ComponentModel.DataAnnotations;
|
||||||
|
|
||||||
|
namespace CompanyManagment.App.Contracts.ClassificationScheme;
|
||||||
|
|
||||||
|
public class EditClassificationSchemeDto
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// آی دی طرح
|
||||||
|
/// </summary>
|
||||||
|
public long Id { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// تاریخ شمول طرح
|
||||||
|
/// شمسی
|
||||||
|
/// </summary>
|
||||||
|
public string IncludingDateFa { get; set; }
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// تاریخ اجرای طرح
|
||||||
|
/// شمسی
|
||||||
|
/// </summary>
|
||||||
|
public string ExecutionDateFa { get; set; }
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// نام کامل طراح
|
||||||
|
/// </summary>
|
||||||
|
public string DesignerFullName { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// شماره همراه طراح
|
||||||
|
/// </summary>
|
||||||
|
[RegularExpression("^[0-9]*$", ErrorMessage = "لطفا فقط عدد وارد کنید")]
|
||||||
|
public string DesignerPhone { get; set; }
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// نوع ضریب
|
||||||
|
/// </summary>
|
||||||
|
public TypeOfCoefficient TypeOfCoefficient { get; set; }
|
||||||
|
}
|
||||||
@@ -0,0 +1,109 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
|
||||||
|
namespace CompanyManagment.App.Contracts.ClassificationScheme;
|
||||||
|
/// <summary>
|
||||||
|
/// ویرایش گروه پرسنل
|
||||||
|
/// </summary>
|
||||||
|
public class EditEmployeeGroup
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// آیا گروه بندی پرسنل چند گانه است
|
||||||
|
/// </summary>
|
||||||
|
public bool HasMultipleGroup { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// نام کامل پرسنل
|
||||||
|
/// </summary>
|
||||||
|
public string EmployeeFullName { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// آی دی پرسنل
|
||||||
|
/// </summary>
|
||||||
|
public long EmployeeId { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// آی دی طرح
|
||||||
|
/// </summary>
|
||||||
|
public long SchemeId { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// لیست گروه های پرسنل
|
||||||
|
/// </summary>
|
||||||
|
public List<EditEmployeeGroupList> EditEmployeeGroupLists { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// لیست گروه های طرح
|
||||||
|
/// </summary>
|
||||||
|
public List<ClassificationGroupList> ClassificationGroupList { get; set; }
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// لیست گروه های پرسنل
|
||||||
|
/// </summary>
|
||||||
|
public class EditEmployeeGroupList
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// آی دی
|
||||||
|
/// </summary>
|
||||||
|
public long Id { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// آی دی کارگاه
|
||||||
|
/// </summary>
|
||||||
|
public long WorkshopId { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// آی دی پرسنل
|
||||||
|
/// </summary>
|
||||||
|
public long EmployeeId { get; set; }
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// آی دی گروه
|
||||||
|
/// </summary>
|
||||||
|
public long ClassificationGroupId { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// آی دی شغل
|
||||||
|
/// </summary>
|
||||||
|
public long ClassificationGroupJobId { get; set; }
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// تاریخ شروع استفاده از گروه
|
||||||
|
/// </summary>
|
||||||
|
public DateTime? StartGroupDate { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// تاریخ پایان استفاده از گروه
|
||||||
|
/// </summary>
|
||||||
|
public DateTime? EndGroupDate { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// تاریخ شروع استفاده از گروه
|
||||||
|
/// </summary>
|
||||||
|
public string StartGroupDateFa { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// تاریخ پایان استفاده از گروه
|
||||||
|
/// </summary>
|
||||||
|
public string EndGroupDateFa { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// آیا حذف شده است
|
||||||
|
/// </summary>
|
||||||
|
public bool IsRemoved { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// آی دی طرح
|
||||||
|
/// </summary>
|
||||||
|
public long SchemeId { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// شماره گروه
|
||||||
|
/// </summary>
|
||||||
|
public string GroupNo { get; set; }
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,110 @@
|
|||||||
|
using System.Collections.Generic;
|
||||||
|
|
||||||
|
namespace CompanyManagment.App.Contracts.ClassificationScheme;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// جستجوی پرسنل
|
||||||
|
/// تب افزودن پرسنل طبقه بندی مشاغل
|
||||||
|
/// </summary>
|
||||||
|
public class EmployeeInfoTab
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// آی دی کارگاه
|
||||||
|
/// </summary>
|
||||||
|
public long WorkshopId { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// آی دی پرسنل
|
||||||
|
/// </summary>
|
||||||
|
public long EmployeeId { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// نام کامل پرسنل
|
||||||
|
/// </summary>
|
||||||
|
public string FullName { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// آی دی طرح
|
||||||
|
/// </summary>
|
||||||
|
public long SchemeId { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// لیست پرسنل
|
||||||
|
/// </summary>
|
||||||
|
public List<EmployeeInfoList> EmployeeInfoList { get; set; }
|
||||||
|
|
||||||
|
public List<string> YearlyList { get; set; }
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// لیست پرسنل
|
||||||
|
/// تب افزودن پرسنل طبقه بندی مشاغل
|
||||||
|
/// </summary>
|
||||||
|
public class EmployeeInfoList
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// آی دی پرسنل
|
||||||
|
/// </summary>
|
||||||
|
public long EmployeeId { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// نام کامل پرسنل
|
||||||
|
/// </summary>
|
||||||
|
public string FullName { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// شماره گروه یا گره هایی که پرسنل در آن اضافه شده
|
||||||
|
/// </summary>
|
||||||
|
public string GroupNo { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// آیا پرسنل هیچ گروهی دارد؟
|
||||||
|
/// </summary>
|
||||||
|
public bool HasGroup { get; set; }
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// آخرین تاریخ شروع بکار قراداد
|
||||||
|
/// </summary>
|
||||||
|
public string LastStartContractWork { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// آخرین تاریخ ترک کار قراداد
|
||||||
|
/// </summary>
|
||||||
|
public string LastLeftContractWork { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// آخرین تاریخ شروع بکار بیمه
|
||||||
|
/// </summary>
|
||||||
|
public string LastStartInsuranceWork { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// آخرین تاریخ ترک کار بیمه
|
||||||
|
/// </summary>
|
||||||
|
public string LastLeftInsuranceWork { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// آیا پرسنل قرداد است
|
||||||
|
/// </summary>
|
||||||
|
public bool ContractPerson { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// آیا پرسنل بیمه است
|
||||||
|
/// </summary>
|
||||||
|
public bool InsurancePerson { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// آیا ترک کار قرارداد دارد
|
||||||
|
/// </summary>
|
||||||
|
public bool ContractLeft { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// آیا ترک کار بیمه دارد
|
||||||
|
/// </summary>
|
||||||
|
public bool InsuranceLeft { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// آیا کلا ترک کار کرده است
|
||||||
|
/// </summary>
|
||||||
|
public bool Black { get; set; }
|
||||||
|
}
|
||||||
@@ -0,0 +1,22 @@
|
|||||||
|
using System.Collections.Generic;
|
||||||
|
|
||||||
|
namespace CompanyManagment.App.Contracts.ClassificationScheme;
|
||||||
|
|
||||||
|
public class GetGroupAndJobSchemeListDto
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// آی دی گروه
|
||||||
|
/// </summary>
|
||||||
|
public long GroupId { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// شماره گروه نوع عددی
|
||||||
|
/// </summary>
|
||||||
|
public int GroupNoInt { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// آیا شغلی به گروه اضافه شده
|
||||||
|
/// </summary>
|
||||||
|
public bool HasAnyJob { get; set; }
|
||||||
|
}
|
||||||
|
|
||||||
@@ -0,0 +1,244 @@
|
|||||||
|
using _0_Framework.Application;
|
||||||
|
using CompanyManagment.App.Contracts.TemporaryClientRegistration;
|
||||||
|
using CompanyManagment.App.Contracts.YearlySalary;
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace CompanyManagment.App.Contracts.ClassificationScheme;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// اپلیکیش طرح طبقه بندی مشاغل
|
||||||
|
/// </summary>
|
||||||
|
public interface IClassificationSchemeApplication
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// پارشیال صفحه ایجاد طرح
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="worskhopId"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
Task<ClassificationSchemeListDto> GetClassificationSchemeList(long workshopId);
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// ایجاد طرح
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="command"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
Task<OperationResult> CreateClassificationScheme(CreateClassificationSchemeDto command);
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// دریافت اطلاعات طرح برای مودال ویرایش
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="id"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
Task<EditClassificationSchemeDto> GetClassificationScheme(long id);
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// دریافت اطلاعات طر برای محاسبات
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="id"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
Task<EditClassificationScheme> GetClassificationSchemeToCompute(long id);
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// ویرایش طرح
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="command"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
Task<OperationResult> EditClassificationScheme(EditClassificationSchemeDto command);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// دریافت گروه ها و مشاغلشان برای تب تعیین مشاغل
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="schemeId"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
Task<List<ClassificationGroupAndJobModel>> GetGroupAndJobs(long schemeId);
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// دریافت مشاغل گروه توسط آی دی گروه
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="groupId"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
Task<List<EditClassificationGroupJob>> GetGroupJobs(long groupId);
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// چک میکند که آی پرسنلی وجود دارد که این شغل به او نسبت داده شده
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="id"></param>
|
||||||
|
/// <param name="groupId"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
Task<bool> CheckEmployeeHasThisJob(long id, long groupId);
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// ایجاد مشاغل گروه
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="createClassificationGroupJob"></param>
|
||||||
|
/// <param name="deleteJobList"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
Task<bool> CreateGroupJobs(List<CreateClassificationGroupJob> createClassificationGroupJob, List<long> deleteJobList);
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// چک میکند که آیا برای این طرح تابحال دستمزدی ایجاد شده یا نه
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="schemeId"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
Task<SalaryAndRialCoefficientTab> GetSalariesTabData(long schemeId);
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// در یافت اطلاعات گروه برای لود مودال ایجاد دستمزد های
|
||||||
|
/// </summary>
|
||||||
|
/// <returns></returns>
|
||||||
|
Task<SalaryAndRialCoefficientModel> GetGroupToCreateSalariesModal(long schemeId);
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// ایجاد دستمزدها و ضرایب ریالی هر گروه در هر سال
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="command"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
Task<OperationResult> CreateGroupSalaryAndCoefficient(SalaryAndRialCoefficientModel command);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// دریافت دستمزدها و ضریب ریالی برای مودال ویرایش
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="schemeId"></param>
|
||||||
|
/// <param name="startDate"></param>
|
||||||
|
/// <param name="endDate"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
Task<SalaryAndRialCoefficientModel> GetEditSalariesData(long schemeId, string startDate, string endDate);
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// ثبت ویرایش دستمزدها و ضریب
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="command"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
Task<OperationResult> EditGroupSalaryAndCoefficient(SalaryAndRialCoefficientModel command);
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// دریافت لیست پرسنل برای تب افزودن پرسنل
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="command"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
Task<EmployeeInfoTab> GetEmployeeDataTab(EmployeeInfoTab command);
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// دریافت گروه های طرح
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="schemeId"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
Task<List<ClassificationGroupList>> GetGroups(long schemeId);
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// ذخیره پرسنل افزوده شده در گروه
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="command"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
Task<OperationResult> AddEmployeeToGroup(AddEmployeeToGroup command);
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// انتقال پرسنل به گروه جدید
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="command"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
Task<OperationResult> TransferEmployeeToNewGroup(List<EditEmployeeGroupList> command);
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// ذخیره ویرایش گروه پرسنل
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="command"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
Task<OperationResult> EditGroupMember(AddEmployeeToGroup command);
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// ذخیره ویرایش گروه چندگانه پرسنل
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="command"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
Task<OperationResult> EditMultipleGroupMember(List<EditEmployeeGroupList> command);
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// دریافت اطلاعات عضویتی پرسنل در گروه
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="employeeId"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
Task<EditEmployeeGroup> GetEmployeeMemberizeData(long employeeId);
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// متد محاسبه پایه سنوات برا افراد تک گروه
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="schemeStart">تاریخ شروع طرح</param>
|
||||||
|
/// <param name="schemeEnd">تاریخ پاین طرح، اجباری نیست</param>
|
||||||
|
/// <param name="contractStart">تاریخ شروع قراداد</param>
|
||||||
|
/// <param name="contractEnd">تاریخ پایان قراداد</param>
|
||||||
|
/// <param name="groupNo">شماره گروه</param>
|
||||||
|
/// <param name="employeeId">آی دی پرسنل</param>
|
||||||
|
/// <param name="workshopId">آی دی کارگاه</param>
|
||||||
|
/// <returns></returns>
|
||||||
|
Task<BaseYearDataViewModel> BaseYearComputeOneGroup(DateTime schemeStart, DateTime? schemeEnd,
|
||||||
|
DateTime contractStart, DateTime contractEnd, string groupNo, long employeeId, long workshopId);
|
||||||
|
|
||||||
|
#region ForApi
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// چک کردن امکان حذف طرح
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="id"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
Task<OperationResult<CheckStatusToDeleteScheme>> CheckToDeleteScheme(long id);
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// حذف طرح
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="id"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
Task<OperationResult> DeleteScheme(long id);
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// تب گروه ها و مشاغل
|
||||||
|
/// لیست گروه ها
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="schemeId"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
Task<List<GetGroupAndJobSchemeListDto>> GetGroupList(long schemeId);
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// دریافت لیست مشاغل برای مودال ایجاد و ویرایش
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="groupId"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
Task<AddOrEditJobInGroupDto> GetCreateOrEditJobsData(long groupId);
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// چک میکند که آی پرسنلی وجود دارد که این شغل به او نسبت داده شده
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="jobId"></param>
|
||||||
|
/// <param name="groupId"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
Task<OperationResult> CheckIfEmployeeHasThisJob(long jobId, long groupId);
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// ذخیر ایجاد یا ویرایش مشاغل در گروه
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="command"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
Task<OperationResult> SaveJobsToGroup(AddOrEditJobInGroupDto command);
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// لیست دستمزدها بر اساس تاریخ و سال برای تب دستمزدها
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="schemeId"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
Task<List<SalaryAndRialCoefficientTabDataList>> GetSalaryList(long schemeId);
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,32 @@
|
|||||||
|
using System.ComponentModel.DataAnnotations;
|
||||||
|
|
||||||
|
namespace CompanyManagment.App.Contracts.ClassificationScheme;
|
||||||
|
|
||||||
|
public class SchemeListDto
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// آی دی طرح
|
||||||
|
/// </summary>
|
||||||
|
public long Id { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// تاریخ شمول طرح
|
||||||
|
/// شمسی
|
||||||
|
/// </summary>
|
||||||
|
public string IncludingDateFa { get; set; }
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// تاریخ اجرای طرح
|
||||||
|
/// شمسی
|
||||||
|
/// </summary>
|
||||||
|
public string ExecutionDateFa { get; set; }
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// نام کامل طراح
|
||||||
|
/// </summary>
|
||||||
|
public string DesignerFullName { get; set; }
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
@@ -3,6 +3,8 @@
|
|||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
<TargetFramework>net10.0</TargetFramework>
|
<TargetFramework>net10.0</TargetFramework>
|
||||||
<GenerateDocumentationFile>true</GenerateDocumentationFile>
|
<GenerateDocumentationFile>true</GenerateDocumentationFile>
|
||||||
|
<NoWarn>$(NoWarn);1591</NoWarn>
|
||||||
|
<NuGetAudit>false</NuGetAudit>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
|
|||||||
@@ -0,0 +1,12 @@
|
|||||||
|
namespace CompanyManagment.App.Contracts.Contract;
|
||||||
|
|
||||||
|
public enum ContractListOrderType
|
||||||
|
{
|
||||||
|
ByContractCreationDate,
|
||||||
|
BySignedContract,
|
||||||
|
ByUnSignedContract,
|
||||||
|
ByPersonnelCode,
|
||||||
|
ByPersonnelCodeDescending,
|
||||||
|
ByContractStartDate,
|
||||||
|
ByContractStartDateDescending
|
||||||
|
}
|
||||||
@@ -19,4 +19,6 @@ public class ContractSeparationViewModel
|
|||||||
public string ConsumableItems { get; set; }
|
public string ConsumableItems { get; set; }
|
||||||
public bool checker { get; set; }
|
public bool checker { get; set; }
|
||||||
public bool HasLeft { get; set; }
|
public bool HasLeft { get; set; }
|
||||||
|
|
||||||
|
public long EmployeeId { get; set; }
|
||||||
}
|
}
|
||||||
@@ -0,0 +1,13 @@
|
|||||||
|
using _0_Framework.Application;
|
||||||
|
|
||||||
|
namespace CompanyManagment.App.Contracts.Contract;
|
||||||
|
|
||||||
|
public class GetContractListForClientRequest: PaginationRequest
|
||||||
|
{
|
||||||
|
public int Year { get; set; }
|
||||||
|
public int Month { get; set; }
|
||||||
|
public string StartDate { get; set; }
|
||||||
|
public string EndDate { get; set; }
|
||||||
|
public long EmployeeId { get; set; }
|
||||||
|
public ContractListOrderType? OrderType { get; set; }
|
||||||
|
}
|
||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user