Compare commits
1123 Commits
dependabot
...
master
| Author | SHA1 | Date | |
|---|---|---|---|
| 3c94239da7 | |||
| 7e6c8224a5 | |||
| 8bc1289206 | |||
| 75390f10cd | |||
| 7468e63299 | |||
| 4c88de77a7 | |||
| c7502b853c | |||
| 249ab13004 | |||
| fce67286fd | |||
| f841639ec3 | |||
| c270017111 | |||
| 0ee317b0fc | |||
| f606b9cdd5 | |||
| 412b4d6794 | |||
| c045cabcf7 | |||
| f5adc203f3 | |||
| f3362bab00 | |||
| 268e2fdbee | |||
| 6d38e6fc8c | |||
| 99ff081b05 | |||
| 5b88887f53 | |||
| 669f716112 | |||
| addd34cb82 | |||
| c77a6e7af6 | |||
| 28ca917d5d | |||
| 1196abb0a0 | |||
| 68560e4e35 | |||
| a4eb7b9ad3 | |||
| 35591ab04c | |||
| 339b1063c6 | |||
| 83592117d1 | |||
| ff1e396fbc | |||
| 5471ccfa17 | |||
| c0aa379d37 | |||
| 3da0cec4a1 | |||
| bca5179cc3 | |||
| c075112810 | |||
| 57d01028cf | |||
| bef633434c | |||
| 6afba02675 | |||
| 4ac1ef0e73 | |||
| 0b0faf26d2 | |||
| d49695e7e8 | |||
| 0e96905213 | |||
| 57d9d4b99b | |||
| f77e6874d0 | |||
| daa72ff60c | |||
| 8bd44c10b8 | |||
| f4c77eee00 | |||
| 5b11c5b629 | |||
| 2e1f28c8c5 | |||
| 7bc2b82837 | |||
| f6f73cbb94 | |||
| 411b005dee | |||
| aacf2fc830 | |||
| e498a2b202 | |||
| 3853a81fba | |||
| 7b26a021e1 | |||
| b310799bf0 | |||
| 1a44be502a | |||
| 103a41c0ff | |||
| 9e5e3720b5 | |||
| baf7c2130e | |||
| c889960805 | |||
| 9462aea45f | |||
| f26ba1d75c | |||
| 2d575dd86b | |||
| 5db70758cb | |||
| 8f2036eecc | |||
| 083422047c | |||
| dda65951b3 | |||
| dbd30021f9 | |||
| c69416ee88 | |||
| 03b0c71708 | |||
| d4214ee4bf | |||
| c70999100b | |||
| eceac30f4b | |||
| 736eb6feba | |||
| cd0710c428 | |||
| bd03a983a2 | |||
| 4c3896cbee | |||
| c362de7589 | |||
| c17af03ef3 | |||
| 2fbf72df61 | |||
| 55b0002688 | |||
| 2a3a86f185 | |||
| 82072f18dc | |||
| 7bfc30e50d | |||
| 109d70363d | |||
| 0ef8dca814 | |||
| 9685d7ee8a | |||
| 1dd6b73632 | |||
| 1a591b202c | |||
| ddda064033 | |||
| 48b5955e16 | |||
| a877e28da9 | |||
| f0ec279ea5 | |||
| 254931998c | |||
| 9ad22c03a8 | |||
| 1210c71484 | |||
| bd4b5e8a83 | |||
| 3b02745302 | |||
| 2349f1031c | |||
| 8ea29296bd | |||
| 68ce69ec70 | |||
| 814db0307a | |||
| 0aaddbe9ad | |||
| 5fcca05d2b | |||
| 8f6be2c87e | |||
| 8749ce8848 | |||
| ac0ca03845 | |||
| 568928c98f | |||
| 8fb4b979c3 | |||
| 23739baa7c | |||
| c7ce7a9351 | |||
| 74f4c21244 | |||
| 996ff6e6aa | |||
| 918d9129f4 | |||
| 27f782f659 | |||
| 17b1db88c1 | |||
| 27e05fdfde | |||
| a07151f507 | |||
| 94c4cf760a | |||
| 20cc7f22dc | |||
| 49257e4cf4 | |||
| bc0b3336c5 | |||
| fadf93b425 | |||
| 0815b43797 | |||
| 55185bae5b | |||
| 4030166118 | |||
| f179cbedd7 | |||
| 20bb89f388 | |||
| e4ccf5190b | |||
| 38b0b8f63f | |||
| dedbcc6c84 | |||
| cef0f7632d | |||
| 7af4457c6a | |||
| 9e851e1a10 | |||
| b322f9a8a6 | |||
| 02722c3146 | |||
| 8405913e84 | |||
| 5d5b23b25b | |||
| e3e10952a6 | |||
| 58e2dcdcc9 | |||
| 936fca0667 | |||
| e777d7e816 | |||
| 5472c99b15 | |||
| 2848102b79 | |||
| d3fae0711f | |||
| 0f05abc0ae | |||
| e52071f1f8 | |||
| f65b7380dc | |||
| 96f84d69e2 | |||
| 8f23d0a1b0 | |||
| 1058cf4a9a | |||
| dae26c74ee | |||
| 5a35b3f6a5 | |||
| 79936f7030 | |||
| 734b16d8a6 | |||
| e0940ac9bc | |||
| 843e3806fb | |||
| 13e99bd4a9 | |||
| bce8363a53 | |||
| e536c55439 | |||
| d474c71c88 | |||
| 0df5bc06fe | |||
| d221f9a49f | |||
| 371e4af00f | |||
| 27508e468c | |||
| 20af2287c4 | |||
| 5433bee74d | |||
| 291d7bfeaa | |||
| 1803ea1343 | |||
| 014cdbcf75 | |||
| d91622b6d3 | |||
| 2d96396687 | |||
| 27b16d7595 | |||
| 265923aa84 | |||
| e8bbcfcfad | |||
| 9e963d581e | |||
| 6843f99a1f | |||
| 1c0f4392b2 | |||
| 8d3c122d93 | |||
| e57ab1a0fb | |||
| a0e6fc6157 | |||
| d842e7bc02 | |||
| a3dfb2bbe6 | |||
| 932911a746 | |||
| 3f3c169555 | |||
| 6b8123d650 | |||
| ac885c5e3f | |||
| 8c44bdac05 | |||
| bb65968afe | |||
| 44d3ea2468 | |||
| 3f76dd78cb | |||
| 9c1d94cdc0 | |||
| e322ceb622 | |||
| 1a24d95d31 | |||
| 2e159063b5 | |||
| 1be8be97aa | |||
| 565693d911 | |||
| 87cfcf3dd2 | |||
| 45b1be2b9f | |||
| bb85db9c3b | |||
| f506f9275d | |||
| 973a8a7ebb | |||
| 86534dea29 | |||
| 353d8c5183 | |||
| 3b02dfb1c7 | |||
| f78b9eddb9 | |||
| 30ea561714 | |||
| db557162af | |||
| 76b19c6ff5 | |||
| df5f29566d | |||
| 82d815adbb | |||
| d54b735986 | |||
| fbfb43040c | |||
| b332ac8acf | |||
| 61a6836a67 | |||
| 5a6a1a19c4 | |||
| 120bb5edc9 | |||
| d14bbc1d22 | |||
| 10c5a8c75c | |||
| 51da1dbbc3 | |||
| 89e4110ab0 | |||
| c06beae86f | |||
| bc59b580b0 | |||
| e1ea9fe4f4 | |||
| 5acb0aa92c | |||
| 7c2952899b | |||
| e925c6bed9 | |||
| a715a7c022 | |||
| b94c39923f | |||
| ce5bd50939 | |||
| ecbd6e1c6d | |||
| debe3f8025 | |||
| b1e4edad3b | |||
| 3ad6ed8bfa | |||
| 41b78a0599 | |||
| f3dc18b8ac | |||
| 427fc40edb | |||
| 90218eafe0 | |||
| 751a412185 | |||
| c3becc324b | |||
| 43ad853b60 | |||
| 955a5581a3 | |||
| f1be291c1c | |||
| aeee78a888 | |||
| 98db7a3ec2 | |||
| c0d65d55d1 | |||
| 7c14c15841 | |||
| 1c46ef4161 | |||
| 39f7fbbb99 | |||
| da95ee481d | |||
| 8153235f1f | |||
| 00f814152d | |||
| f28fa7d0e2 | |||
| 2361f5dc1c | |||
| e75fd81e27 | |||
| 265336ef3d | |||
| 7c9b0caded | |||
| a59d9bf6a9 | |||
| 657b96dadf | |||
| c8ee950fd0 | |||
| da7f69adae | |||
| da4457eba6 | |||
| b149a1f492 | |||
| ee7e149c35 | |||
| adee63564d | |||
| b00a1eb082 | |||
| 56e2c3fa9c | |||
| 6ea56238a8 | |||
| 678f066a97 | |||
| 20d1c5f027 | |||
| 9a797a159d | |||
| 63a06e78e1 | |||
| 96d068307f | |||
| 1f18d21069 | |||
| cb9fdaeb63 | |||
| b82fbd3ce3 | |||
| a3c07b2a84 | |||
| 772f149e81 | |||
| 75a72826fd | |||
| ec50817657 | |||
| d9d447bf54 | |||
| 9293564235 | |||
| 211d463288 | |||
| c3a8393c84 | |||
| 50e69755eb | |||
| 2cf1f7ff72 | |||
| af7c7344b4 | |||
| 58258a070e | |||
| 75a91c93e8 | |||
| 7a46e8684f | |||
| 1052c6241e | |||
| 0107f24de8 | |||
| fbcd7dd957 | |||
| 3e8bd39737 | |||
| e61aed425c | |||
| 0847e03b27 | |||
| 05626aac35 | |||
| 77818e9431 | |||
| abde239ff7 | |||
| 872afe444f | |||
| 4bd57ccd0b | |||
| 2191dadf47 | |||
| b48b118032 | |||
| 8d5ba9c42e | |||
| 565f51e81c | |||
| 0872d2f61a | |||
| 63a54c78e2 | |||
| 7d31892c57 | |||
| 33df24e1af | |||
| fe9547f78d | |||
| e24f431893 | |||
| 11ac571abb | |||
| 9c9575396b | |||
| 817ae1a452 | |||
| 32716cc81c | |||
| e949b1d717 | |||
| c089beae10 | |||
| 3332d6a36c | |||
| 4f1ae7fad8 | |||
| 12970c3830 | |||
| 6b5f51eed7 | |||
| 88f46d8dec | |||
| 5abbe10cf9 | |||
| ba92152daa | |||
| e248cd036c | |||
| f5531ac121 | |||
| 13c4f5ea3a | |||
| cd96aa8377 | |||
| 13f3e8e8f9 | |||
| 8c580827b4 | |||
| 0093b8d841 | |||
| 2071021cdd | |||
| 34cf203c01 | |||
| 9aa8c53b23 | |||
| 5973a5deda | |||
| 3237e80fb4 | |||
| da97d9b85c | |||
| 562093f22c | |||
| 65314bad77 | |||
| 31fbeee1cf | |||
| 5085ef140b | |||
| 1c4406a6eb | |||
| d815c15176 | |||
| a3a3cc1b7c | |||
| f266d781ac | |||
| f0962b0779 | |||
| d9cbd4ef93 | |||
| 6c90f9f642 | |||
| c341d21bbe | |||
| 91ebc9972c | |||
| 3fe6be6a57 | |||
| de0071734b | |||
| a0c0186337 | |||
| f3c317b505 | |||
| 09d0d57630 | |||
| b44ebfc0b6 | |||
| 3d054535db | |||
| c5b8c50923 | |||
| de60682f40 | |||
| 3d5b224e20 | |||
| d447f6f34d | |||
| 44e969d24b | |||
| ec933737cf | |||
| 97109cfd08 | |||
| 96507b7d7e | |||
| 9c5f9e3844 | |||
| cee7f07d76 | |||
| 87951b5ca6 | |||
| 6a3c69393e | |||
| b75d554cd7 | |||
| fb029dd813 | |||
| bb5df086de | |||
| a83131ba5e | |||
| 655b1a3a94 | |||
| 976e220859 | |||
| ae4436d3f1 | |||
| fdbc7ddf1b | |||
| 266aa3387c | |||
| adbf3297c4 | |||
| 9aae7e44ec | |||
| d3d27cf251 | |||
| 229aa84426 | |||
| 19447c6a11 | |||
| bd86e1ab05 | |||
| 6f97f0927c | |||
| 21d1a566f3 | |||
| ec73828eea | |||
| d62b4b3790 | |||
| c77b7e3821 | |||
| 9cce52b8ba | |||
| 5f2ba4133d | |||
| 4539056ec5 | |||
| 19b837a993 | |||
| 87891ac059 | |||
| e92c9d304d | |||
| 26c484d30c | |||
| e21fcd784c | |||
| 75544ef6bb | |||
| a084072f98 | |||
| 70fea18829 | |||
| 0b65005f9d | |||
| 54b25480e2 | |||
| 86783a0b56 | |||
| 8a2efb21a0 | |||
| cab5a4b2ed | |||
| 9bd0f3a296 | |||
| febe377eec | |||
| a497a8bb16 | |||
| b667348f5d | |||
| e67e90c96c | |||
| aff5831350 | |||
| dcf214b324 | |||
| 701b449517 | |||
| c1782cacfe | |||
| b0aa5e3fec | |||
| f06675dd2b | |||
| bd8872a785 | |||
| fbf48ef906 | |||
| 51f7d3990f | |||
| cd99acb61b | |||
| 1884ada219 | |||
| 3991ce3e9a | |||
| eb8c84b0c5 | |||
| c8f85b0ccd | |||
| a1e1ae261a | |||
| f9b4e9a898 | |||
| 2fd7a805eb | |||
| 1a443a4ab8 | |||
| c5b8957253 | |||
| 4b554f97ae | |||
| 38176274ff | |||
| 3c1278db82 | |||
| 0e4f9b91e5 | |||
| 7a658b7bfa | |||
| 4667b31dd8 | |||
| 39b0a8c372 | |||
| 40ed5dd5a5 | |||
| e6022ded9c | |||
| 6ad975e199 | |||
| 59cda8d129 | |||
| 311aec7847 | |||
| 2d7e1ec7bf | |||
| ecd7b08b27 | |||
| e2b94eea77 | |||
| 04e7a78575 | |||
| e232e03ef7 | |||
| 7f718555ac | |||
| b74c513271 | |||
| 794f358353 | |||
| 49aab1b97a | |||
| 374181c82c | |||
| 6b0f805adc | |||
| 4730bea74c | |||
| 49b9093f1b | |||
| 906fabe23f | |||
| d65adb904d | |||
| 5f91bcb221 | |||
| b37767f30d | |||
| 6613c985cd | |||
| 60d511d3c1 | |||
| f12e298298 | |||
| 0772488a50 | |||
| 2ff1897f60 | |||
| bd0170e094 | |||
| 8609b55797 | |||
| 31d4267d9f | |||
| c176c32668 | |||
| d3a9f33769 | |||
| 89ffa516c5 | |||
| 82aa1f88b4 | |||
| c51b1a72a9 | |||
| fa7889d7d5 | |||
| 3271200312 | |||
| 33719f8456 | |||
| 92ea143a92 | |||
| 8178af420a | |||
| c964fd1485 | |||
| 039fa1d44e | |||
| 78c05aadd3 | |||
| 6fd6db2d1d | |||
| b7600757a0 | |||
| 1527201bdb | |||
| cf7848b966 | |||
| ea855611e3 | |||
| 9b1140b8f9 | |||
| 4298a1f53e | |||
| 3623fd636b | |||
| 482b65e026 | |||
| ff6fed66ef | |||
| 40de3073f6 | |||
| 69892f4a6e | |||
| 5a68c84430 | |||
| 24a76fb092 | |||
| 2cd41593a5 | |||
| a2a9b31a25 | |||
| 45b2269920 | |||
| 4c99703290 | |||
| e39bcab748 | |||
| c2d06472e3 | |||
| 12cd0c7d74 | |||
| 0a22ba67c5 | |||
| 223a457f93 | |||
| 9c773bc635 | |||
| d0529330e5 | |||
| c7bc18c9aa | |||
| 0694940507 | |||
| c6b5f01c55 | |||
| 0a0d6bc998 | |||
| c3df293ddf | |||
| 71071d61ce | |||
| 356cee060a | |||
| f662bb7cb2 | |||
| 431ef40793 | |||
| 690203d818 | |||
| 6372a89d30 | |||
| ddae475a6c | |||
| ac617e8795 | |||
| fc1efa8d61 | |||
| c7fbb2ae0e | |||
| abc34b315a | |||
| e2289f1727 | |||
| 1a61f7939b | |||
| aa7e170aaf | |||
| da619f261e | |||
| ded58ea79a | |||
| 2da297facd | |||
| a253bb1aaf | |||
| dcfbfe4801 | |||
| cf6c601bcf | |||
| 3e24f71987 | |||
| b68bcfec03 | |||
| dd64010236 | |||
| d7d98b5195 | |||
| 9798f8296b | |||
| 68aafab377 | |||
| e4115b64ff | |||
| 3be42738d7 | |||
| da08630a1f | |||
| 001ff9e4e3 | |||
| a69e09efeb | |||
| 0a4090650d | |||
| 671da7e617 | |||
| 3f8bcfd588 | |||
| f036aa61f7 | |||
| d926a0fd98 | |||
| 21c73270fe | |||
| 97e4eb46eb | |||
| ad36ee9441 | |||
| c6557bab38 | |||
| 30cd115050 | |||
| 3dc10f41c8 | |||
| 466a1750bd | |||
| 7aee591a2c | |||
| 8ee98c06c2 | |||
| b91925a3f6 | |||
| c27a9c3f85 | |||
| ec9a2a2ce0 | |||
| 42ba7f3036 | |||
| db11b6255b | |||
| ce99ad9cf9 | |||
| 36ae8f27bb | |||
| 3fcceb0649 | |||
| d607f403ec | |||
| 4005b0f90c | |||
| 87bbc1a8e4 | |||
| 79c3e3382a | |||
| 2e178c8b16 | |||
| 62e159c1f2 | |||
| 2e57663f7c | |||
| 403cbfb6bb | |||
| 466751c13f | |||
| 2d6e6e4537 | |||
| 7231d54fa2 | |||
| 61224e5611 | |||
| 85d39b867b | |||
| 8f30c3a42d | |||
| 011e53054d | |||
| 2972b9a301 | |||
| e9c78c7e77 | |||
| 341117dfe9 | |||
| 3efa2138c5 | |||
| a5c6ad343b | |||
| f282ade0b3 | |||
| 252deff4c2 | |||
| f7312a97b0 | |||
| ade9da5be7 | |||
| 0c5b9aeb19 | |||
| f306ee161c | |||
| 0ee3699b44 | |||
| 4c281934ff | |||
| 507f4f8a73 | |||
| a158bad0bf | |||
| a3e9bf9aab | |||
| b23d7195c5 | |||
| 0af6824866 | |||
| d66fa052fb | |||
| adadd7994e | |||
| aae582344e | |||
| 4db6dac439 | |||
| 91bde37441 | |||
| 044450e448 | |||
| 56ebd398ab | |||
| 6d5eb98614 | |||
| 434179ba18 | |||
| 9e4b8deb78 | |||
| 4688af0cb4 | |||
| d44edffa1b | |||
| ceb7ed4949 | |||
| 4b94ed2a51 | |||
| 9feba2916a | |||
| 4f15afb3ce | |||
| eb54b7ba0a | |||
| 5895f34c39 | |||
| ad6cfcb41f | |||
| a95c052ba0 | |||
| cc5bcbb97d | |||
| 94a30377f5 | |||
| 46da349088 | |||
| 667c7bfd49 | |||
| ebedcc903e | |||
| 425e430f8b | |||
| 8809c49c46 | |||
| c68b419964 | |||
| 2483ca525b | |||
| 7cccd77c8a | |||
| 1ccdfdac79 | |||
| fd899b1849 | |||
| c37d9fb949 | |||
| 85368ee09a | |||
| 2d9a3ce448 | |||
| 30d3a329dc | |||
| 8cff027f67 | |||
| c42f166eb1 | |||
| b8bd954b02 | |||
| 8945431457 | |||
| d799aad4f8 | |||
| 18b14f48bd | |||
| 856bab0a92 | |||
| 90c0accf58 | |||
| 5a640c3595 | |||
| 41a1abc9cb | |||
| 48dd5b81e3 | |||
| 6aa16464f8 | |||
| a3558fe4ef | |||
| 1d08027c11 | |||
| 9f7397feea | |||
| d2126bff48 | |||
| acb66d4a66 | |||
| 8d658aef1f | |||
| 62b2cc1003 | |||
| f642c759e2 | |||
| 350fd07efd | |||
| 1fbb438afa | |||
| b58e9e2820 | |||
| 28ef697b42 | |||
| 7dd625edb9 | |||
| fdb06996e5 | |||
| 36a33e86ff | |||
| 0c59a6527e | |||
| a1c6c4fd25 | |||
| 67c8d6161a | |||
| 1e55be001a | |||
| 7d3bd6d5f2 | |||
| aa25ce4be3 | |||
| 23111d727a | |||
| 4862deac95 | |||
| e185fd7b56 | |||
| 4855ac34f4 | |||
| fcf823663f | |||
| 27148dae22 | |||
| 1e40d8e0c9 | |||
| 4c513b7625 | |||
| 01f0a49bb4 | |||
| 1b949fca39 | |||
| 79de6a93fa | |||
| 3a18237502 | |||
| 8371c49e3d | |||
| e4a88303bb | |||
| c1595845f9 | |||
| 0b15850c15 | |||
| 75bfc0daf2 | |||
| 0f6b965066 | |||
| 68d04b338a | |||
| 674d026e51 | |||
| 137522fd02 | |||
| 186c79c8d3 | |||
| e2939629d5 | |||
| 25d0b8ae98 | |||
| 1156107243 | |||
| 460e7db116 | |||
| b746853520 | |||
| cd474b7e7f | |||
| 918107acab | |||
| 6dff921d5f | |||
| 9f1de2300e | |||
| 6d178b1b90 | |||
| 78234a9243 | |||
| ea60c5561d | |||
| 860863c8d5 | |||
| 0fb6bea722 | |||
| 693c66cf12 | |||
| 59868bb63a | |||
| e23c97f455 | |||
| a590dc43bb | |||
| 5c062ebe50 | |||
| 3bd1b2053b | |||
| d050563fb9 | |||
| 468eba7d2a | |||
| 8ebfc9fc34 | |||
| 77896aae9a | |||
| e12bfb75e9 | |||
| 22307c120f | |||
| 12b754a752 | |||
| 716a71d680 | |||
| d98ef78771 | |||
| e76e7a6298 | |||
| 225e6f74ec | |||
| 17bd69bf7c | |||
| 6d55eeae45 | |||
| 523e345350 | |||
| ca9612d830 | |||
| 9bfaab8ffc | |||
| c5cd63114d | |||
| e3f1e140e0 | |||
| 84d38d3803 | |||
| 2718b575a4 | |||
| 1451e97f31 | |||
| d031305111 | |||
| f270cf3134 | |||
| 16bca41d5d | |||
| 5df56e7f4f | |||
| bd068037cd | |||
| e794ef7a05 | |||
| a98c1e764f | |||
| b4ab55fc89 | |||
| fdf6c6a54f | |||
| 2d0241c8ad | |||
| b6853e8f3b | |||
| 14a37e869c | |||
| 9fc70ba03f | |||
| b092522d3a | |||
| d4b5ed3319 | |||
| 9cdf9cebfd | |||
| b538a7216c | |||
| 7be778ec01 | |||
| dedd050920 | |||
| 0b03b4ee4a | |||
| b75a7809de | |||
| fc07e8d968 | |||
| e3c9459017 | |||
| cb3a6b26e9 | |||
| f10196abb7 | |||
| 1743ffc14f | |||
| fc7dde27c4 | |||
| 7ebc49607d | |||
| f62f6239c0 | |||
| fa9d89ebe9 | |||
| af06c943c7 | |||
| 41b64ac646 | |||
| 8e72c71071 | |||
| 01bff58169 | |||
| 23873033bf | |||
| fcb0dbc7a0 | |||
| 896f6896e7 | |||
| e7c8b71ea4 | |||
| ed529b49df | |||
| 1a0e956d00 | |||
| 6bfa5873a8 | |||
| ff879833be | |||
| 525dddf52b | |||
| 71a567e923 | |||
| f179c7e671 | |||
| 40a4ce6fcc | |||
| c95f6835ca | |||
| 27a9715aa4 | |||
| 1717b464af | |||
| 7103791378 | |||
| bb1cb4a6fc | |||
| 65bd6022ac | |||
| 7be3bfeebc | |||
| a1e43596c2 | |||
| 02db5ce9a1 | |||
| e14f9c0764 | |||
| 5aafbc9ce0 | |||
| aa384fc171 | |||
| 93d9b2bf98 | |||
| 4cb79433c1 | |||
| 3725c40d03 | |||
| a4b665f525 | |||
| 5bbfaf1515 | |||
| 7aaf2afc5a | |||
| 8b827fe05b | |||
| d3db43de8b | |||
| 8f64a98e2d | |||
| f21d0dbf65 | |||
| 96c4b03481 | |||
| 3d04e3e62a | |||
| 51bb819409 | |||
| ecb33befdd | |||
| 5844dc5b93 | |||
| d71e05303d | |||
| 908197ae07 | |||
| 0aade82862 | |||
| fef8533ae0 | |||
| 376c9f9b91 | |||
| 92e7084cec | |||
| 7e932123d3 | |||
| 5e002d47a5 | |||
| f8a02c0933 | |||
| b94e39b53c | |||
| eaa56c31b6 | |||
| 4a117c6390 | |||
| 05db82f3cb | |||
| 99d5ef9220 | |||
| 8a4615b5a8 | |||
| fd20fb8725 | |||
| d521a0e593 | |||
| bb90a2ccc2 | |||
| f447bd6666 | |||
| f66604ba6a | |||
| ae37aa5856 | |||
| 4955a1a66a | |||
| 0da231827e | |||
| 5bd545efbe | |||
| 653c80cb87 | |||
| bea3cdd1a4 | |||
| 21aa932bd4 | |||
| 0b43349fac | |||
| 337cf04334 | |||
| 612f0925bf | |||
| 4b72a59e62 | |||
| 8af676c32a | |||
| 5cf8667c47 | |||
| 9dd0bbc536 | |||
| 63c7a04998 | |||
| 2026ea2c00 | |||
| 917641e469 | |||
| 925b9739da | |||
| 4da6e98c49 | |||
| b621e60316 | |||
| c35645df42 | |||
| f922289c03 | |||
| 2ab5f7d7bd | |||
| d4cf2afd1b | |||
| 86bd6cdd3b | |||
| 52af89800e | |||
| 830c360664 | |||
| 3231c4c1aa | |||
| d1aadb1f2d | |||
| 3c831b6b16 | |||
| a3d22ab179 | |||
| 5bb8853714 | |||
| 8e42f49d8f | |||
| a550240f08 | |||
| 32a19cb9d6 | |||
| b27dd18951 | |||
| 2a25fcf1b3 | |||
| 28fbf15706 | |||
| 2a5870ce9b | |||
| d5eb1a1bb9 | |||
| 9688e80a6b | |||
| 2212d34dd1 | |||
| 4eaab96848 | |||
| 15988c5588 | |||
| 81978d524f | |||
| 4f5c0e9c81 | |||
| 7a63f1370f | |||
| d54bb575ba | |||
| 2110cbff32 | |||
| 67af1f5b50 | |||
| 078d32cc31 | |||
| 6fcf9eba4a | |||
| 6d7864751f | |||
| 153588738d | |||
| e951285456 | |||
| 344974362c | |||
| b74e28388a | |||
| 509b0efdcd | |||
| 7901708be7 | |||
| 9f7a3500dc | |||
| 2bd74359ba | |||
| 84bac3431b | |||
| 84259f2bf7 | |||
| 23b3858a89 | |||
| 9c9f6c61fe | |||
| e8cf2810a0 | |||
| 5be7ef76bd | |||
| 8aa3d6177e | |||
| e7f564054c | |||
| 6a6151bff8 | |||
| 0ce7d24f69 | |||
| 6e7ec0564f | |||
| 5de85508a3 | |||
| 7d7ae6ffa9 | |||
| cfea3f4b90 | |||
| 17c31d9968 | |||
| 3de8c8b47d | |||
| 078067b6a7 | |||
| 8453b0c846 | |||
| 5a65b67245 | |||
| 6d75548144 | |||
| cb6da0c090 | |||
| f6c93028cc | |||
| 3d301f58c2 | |||
| 492a049797 | |||
| 3c776bc01e | |||
| 5cf77c6b18 | |||
| e16569b26b | |||
| d976d191cb | |||
| 6e623b5793 | |||
| a818452857 | |||
| dd5c1f4c2d | |||
| 338bd52f28 | |||
| 97e80c0456 | |||
| f1dca60e54 | |||
| ab8d501cb8 | |||
| 849b60841d | |||
| 1cbd2e7c87 | |||
| 17239b3a35 | |||
| e88728125e | |||
| f8426666ee | |||
| 0a11a5d23d | |||
| cf1876e43f | |||
| ac5ccadc55 | |||
| 75cc0b2355 | |||
| d8a198809e | |||
| a4b5ba0594 | |||
| 18fe063ef8 | |||
| a26db2652c | |||
| ab1730cfa3 | |||
| 8dbe424ad4 | |||
| bb4736187f | |||
| 62f661efa5 | |||
| 8178327828 | |||
| 19730208a6 | |||
| 90fcabc59b | |||
| eabbf5ce58 | |||
| 8ab88d29f3 | |||
| 0bb5f4cabf | |||
| e8649811f2 | |||
| df510b8680 | |||
| 3ff24118a5 | |||
| d4954bc7bf | |||
| 416f4abd03 | |||
| 314dd1c931 | |||
| 0e6ee620cc | |||
| 997e6a9cde | |||
| 23b78d709f | |||
| 46f95aa6f2 | |||
| 672d555c78 | |||
| ebbfd1a327 | |||
| 8ac0157cc6 | |||
| c55a5a1ba4 | |||
| ee8ab5c2f3 | |||
| 451119c743 | |||
| 20a0aecee1 | |||
| cc3ebc8af8 | |||
| b6efe4e54c | |||
| b598189626 | |||
| 70b3162964 | |||
| 66dbdef629 | |||
| c00324a03c | |||
| 2e8f2923ef | |||
| 3a33fa7faa | |||
| 38823b96ce | |||
| 9efb326b5f | |||
| f327b14fca | |||
| 6d88c9b703 | |||
| a5532120e9 | |||
| 34422925f1 | |||
| 70b24695f5 | |||
| af05210a48 | |||
| cfa01428ee | |||
| d84326742f | |||
| 722311eb89 | |||
| f11360e5e8 | |||
| 07b724ec55 | |||
| 5ef8fe188b | |||
| fda7c64c3a | |||
| b7e265088a | |||
| 017f72b42e | |||
| 0ddd298350 | |||
| 516105c492 | |||
| e7b3093986 | |||
| 064cd2244b | |||
| b0bf2a107b | |||
| 09413522bb | |||
| 69d92960d9 | |||
| 3f5ce7dbf4 | |||
| 76658b85f1 | |||
| cbf2c3f9e4 | |||
| 120c0808bb | |||
| e6ac3e9056 | |||
| 52be26a099 | |||
| c75107e34a | |||
| 05c613bf61 | |||
| 5528a0e024 | |||
| 98e69fcc25 | |||
| d3f33979e4 | |||
| 46ee5cf3b1 | |||
| 7c72944d7d | |||
| f665050d66 | |||
| 393a412784 | |||
| 30e859b552 | |||
| a70c0bf4e9 | |||
| e745502542 | |||
| 55acc5e487 | |||
| c0d2348fc3 | |||
| e5a225a687 | |||
| 257a6e3eb6 | |||
| 7b5268f0a3 | |||
| b6fcbd1b4a | |||
| c19b417a5d | |||
| 94307d105d | |||
| 16e5a9808b | |||
| 2239ec16a8 | |||
| 0e6109c09a | |||
| a242bffb28 | |||
| 6717cbad48 | |||
| b7762cc18d | |||
| 6ee0d8fef1 | |||
| 58ef54e859 | |||
| 076079f981 | |||
| 22d0171e13 | |||
| 12b6f8b98c | |||
| 978a028553 | |||
| 685dabede3 | |||
| b7bfe880f4 | |||
| 72502ae53f | |||
| 5688f6ebb8 | |||
| b916d0364c | |||
| 15ec617fec | |||
| cd7428e3c3 | |||
| 6023f9801f | |||
| 5dad7a0427 | |||
| d156c69992 | |||
| 82c755409d | |||
| 2f7aee4aad | |||
| 1824deecae | |||
| 2d5a1194bf | |||
| e936fc721e | |||
| 4ba1dd8a11 | |||
| 716371200b | |||
| ed7e2c9bb4 | |||
| 57fbc092c8 | |||
| 5fd183f95c | |||
| 8dd1377090 | |||
| bb63f9697e | |||
| 99f63627b2 | |||
| a50182b1e5 | |||
| d5c57aca1c | |||
| 273cb2b775 | |||
| ec315dc63f | |||
| 4c0126bf4b | |||
| 40135f5861 | |||
| 76cbe6a073 | |||
| a08959980a | |||
| 4e1a454d4e | |||
| eef0d65d44 | |||
| bb84b15f3b | |||
| 0f108a709c | |||
| eb6c1c7c3b | |||
| bb026d2cd9 | |||
| 955e494e05 | |||
| 7d07bde52c | |||
| 8a7e84ebb8 | |||
| 075ec5f6bf | |||
| aa0d510b05 | |||
| 0962ffb372 | |||
| ea75ac6d25 | |||
| d0c16d60cd | |||
| fdebf19a26 | |||
| 6367b1593d | |||
| 7c9e5e8491 | |||
| 9e90e785a3 | |||
| 0474936bfc | |||
| 430432a18b | |||
| 9d45b67c73 | |||
| 3bd7b9c2fd | |||
| 3b5952cd44 | |||
| 910e32809f | |||
| c888741aef | |||
| 8f74542371 | |||
| e86e7f62d3 | |||
| 9054c47777 | |||
| 735ca514bc | |||
| f008087b71 | |||
| 3f510e40e7 | |||
| 03f00518c3 | |||
| c512629637 | |||
| c38ffd3643 | |||
| 4f8c08011a | |||
| d476978cde | |||
| b32812217b | |||
| 8cf4c98633 | |||
| cf98e875ee | |||
| 427759a98e | |||
| b537aa6ea1 | |||
| c079ae3c60 | |||
| 4043037d87 | |||
| 9a9b71f479 | |||
| 77429e2013 | |||
| 7e8ae3ab68 | |||
| 838aa1612a | |||
| 204a6c10dc | |||
| 936a8831fa | |||
| 7c86d0d9df | |||
| 60814f7c1c | |||
| f4a193ec91 | |||
| 686ff34a11 | |||
| 00ac338981 | |||
| b9af1cb074 | |||
| 8c885636de | |||
| b114a16bed | |||
| a096edb88f | |||
| 890c805f37 | |||
| 9fe794543e | |||
| bda6d5bdee | |||
| 997d29c88a |
22
.env
22
.env
@@ -2,7 +2,7 @@ APP_NAME='W4RP Services'
|
||||
APP_ENV=local
|
||||
APP_KEY=base64:PBOxrGFJAtwj9SDF4F0DZ1J+6MjrJmRiPZJQwRdy3XQ=
|
||||
APP_DEBUG=true
|
||||
APP_URL=http://localhost
|
||||
APP_URL=https://services.w4rp.space
|
||||
|
||||
LOG_CHANNEL=daily
|
||||
|
||||
@@ -11,13 +11,15 @@ DB_HOST=127.0.0.1
|
||||
DB_PORT=3306
|
||||
DB_DATABASE=w4rpservices2
|
||||
DB_USERNAME=minerva
|
||||
DB_PASSWORD=strtmage
|
||||
DB_PASSWORD=FuckingShit12
|
||||
|
||||
BROADCAST_DRIVER=log
|
||||
CACHE_DRIVER=file
|
||||
CACHE_DRIVER=redis
|
||||
CACHE_PREFIX=w4rpservices_cache
|
||||
|
||||
QUEUE_DRIVER=redis
|
||||
QUEUE_CONNECTION=sync
|
||||
QUEUE_CONNECTION=redis
|
||||
QUEUE_PREFIX=w4rpservices_queue
|
||||
|
||||
SESSION_DRIVER=file
|
||||
SESSION_LIFETIME=120
|
||||
@@ -25,6 +27,8 @@ SESSION_LIFETIME=120
|
||||
REDIS_HOST=127.0.0.1
|
||||
REDIS_PASSWORD=null
|
||||
REDIS_PORT=6379
|
||||
REDIS_DATABASE=0
|
||||
REDIS_CACHE_DB=1
|
||||
|
||||
MAIL_DRIVER=smtp
|
||||
MAIL_HOST=smtp.mailtrap.io
|
||||
@@ -33,13 +37,11 @@ MAIL_USERNAME=null
|
||||
MAIL_PASSWORD=null
|
||||
MAIL_ENCRYPTION=null
|
||||
|
||||
ESI_CLIENT_ID=e5848fea3618427a8ee0dccb6a04fc62
|
||||
ESI_SECRET_KEY=TdnNGRM8RTNSifZdaIc9yHTTkYPgYEEXHRIbT6oY
|
||||
ESI_CLIENT_ID=91a051aea72742068b51801042397c38
|
||||
ESI_SECRET_KEY=1co6qRMoXyx1dG2iBbAZ1z6NUOoaJWyQnqEnsqoj
|
||||
ESI_USERAGENT='W4RP Services'
|
||||
ESI_CALLBACK_URI='http://services.w4rp.space/callback'
|
||||
ESI_CALLBACK_URI=https://services.w4rp.space/callback/
|
||||
ESI_PRIMARY_CHAR=93738489
|
||||
ESI_ALLIANCE=99004116
|
||||
|
||||
EVEONLINE_CLIENT_ID=e5848fea3618427a8ee0dccb6a04fc62
|
||||
EVEONLINE_CLIENT_SECRET=TdnNGRM8RTNSifZdaIc9yHTTkYPgYEEXHRIbT6oY
|
||||
EVEONLINE_REDIRECT='https://services.w4rp.space/callback'
|
||||
HORIZON_PREFIX=w4rpservices_horizon
|
||||
|
||||
4
.gitignore
vendored
4
.gitignore
vendored
@@ -5,5 +5,7 @@
|
||||
/public/logs/*
|
||||
worker.log
|
||||
/public/cache/*
|
||||
/.env
|
||||
.env
|
||||
.vscode
|
||||
/storage/logs
|
||||
worker.log
|
||||
@@ -1,96 +0,0 @@
|
||||
<?php
|
||||
|
||||
namespace App\Console\Commands\Assets;
|
||||
|
||||
use Illuminate\Console\Command;
|
||||
use DB;
|
||||
use Log;
|
||||
|
||||
//Job
|
||||
use App\Jobs\ProcessAssetsJob;
|
||||
|
||||
//Library
|
||||
use App\Library\Esi\Esi;
|
||||
use Commands\Library\CommandHelper;
|
||||
use App\Library\Assets\AssetHelper;
|
||||
use Seat\Eseye\Exceptions\RequestFailedException;
|
||||
|
||||
class GetAssetsCommand extends Command
|
||||
{
|
||||
/**
|
||||
* The name and signature of the console command.
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
protected $signature = 'services:GetAssets';
|
||||
|
||||
/**
|
||||
* The console command description.
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
protected $description = 'Gets all of the assets of the holding corporation.';
|
||||
|
||||
/**
|
||||
* Create a new command instance.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function __construct()
|
||||
{
|
||||
parent::__construct();
|
||||
}
|
||||
|
||||
/**
|
||||
* Execute the console command.
|
||||
*
|
||||
* @return mixed
|
||||
*/
|
||||
public function handle()
|
||||
{
|
||||
$assets = null;
|
||||
$pages = 0;
|
||||
|
||||
//Create the command helper container
|
||||
$task = new CommandHelper('GetAssets');
|
||||
//Add the entry into the jobs table saying the job is starting
|
||||
$task->SetStartStatus();
|
||||
|
||||
//Setup the esi authentication container
|
||||
$config = config('esi');
|
||||
|
||||
//Declare some variables
|
||||
$charId = $config['primary'];
|
||||
$corpId = 98287666;
|
||||
|
||||
//ESI Scope Check
|
||||
$esiHelper = new Esi();
|
||||
$assetScope = $esiHelper->HaveEsiScope($config['primary'], 'esi-assets.read_corporation_assets.v1');
|
||||
|
||||
if($assetScope == false) {
|
||||
Log::critical("Scope check for esi-assets.read_corporation_assets.v1 failed.");
|
||||
return null;
|
||||
}
|
||||
|
||||
//Get the refresh token from the database
|
||||
$token = $esiHelper->GetRefreshToken($charId);
|
||||
//Create the authentication container
|
||||
$esi = $esiHelper->SetupEsiAuthentication($token);
|
||||
|
||||
try {
|
||||
$assets = $esi->page(1)
|
||||
->invoke('get', '/corporations/{corporation_id}/assets/', [
|
||||
'corporation_id' => $corpId,
|
||||
]);
|
||||
} catch (RequestFailedException $e) {
|
||||
Log::critical("Failed to get asset list.");
|
||||
return null;
|
||||
}
|
||||
|
||||
$pages = $assets->pages;
|
||||
|
||||
for($i = 1; $i <= $pages; $i++) {
|
||||
ProcessAssetsJob::dispatch($charId, $corpId, $i)->onQueue('assets');
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,89 +0,0 @@
|
||||
<?php
|
||||
|
||||
namespace App\Console\Commands\Corps;
|
||||
|
||||
//Internal Library
|
||||
use Illuminate\Console\Command;
|
||||
use Commands\Library\CommandHelper;
|
||||
|
||||
//Models
|
||||
use App\Models\Corporation\AllianceCorp;
|
||||
use App\Models\ScheduledTask\ScheduleJob;
|
||||
|
||||
//Library
|
||||
use Seat\Eseye\Exceptions\RequestFailedException;
|
||||
use App\Library\Esi\Esi;
|
||||
|
||||
class GetCorpsCommand extends Command
|
||||
{
|
||||
/**
|
||||
* The name and signature of the console command.
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
protected $signature = 'services:GetCorps';
|
||||
|
||||
/**
|
||||
* The console command description.
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
protected $description = 'Get corporations in alliance and store in db.';
|
||||
|
||||
/**
|
||||
* Create a new command instance.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function __construct()
|
||||
{
|
||||
parent::__construct();
|
||||
}
|
||||
|
||||
/**
|
||||
* Execute the console command.
|
||||
*
|
||||
* @return mixed
|
||||
*/
|
||||
public function handle()
|
||||
{
|
||||
//Create the command helper container
|
||||
$task = new CommandHelper('CorpJournal');
|
||||
//Add the entry into the jobs table saying the job is starting
|
||||
$task->SetStartStatus();
|
||||
|
||||
//Declare some variables
|
||||
$esiHelper = new Esi;
|
||||
|
||||
$esi = $esiHelper->SetupEsiAuthentication();
|
||||
|
||||
//try the esi call to get all of the corporations in the alliance
|
||||
try {
|
||||
$corporations = $esi->invoke('get', '/alliances/{alliance_id}/corporations/', [
|
||||
'alliance_id' => 99004116,
|
||||
]);
|
||||
} catch(RequestFailedException $e){
|
||||
dd($e->getEsiResponse());
|
||||
}
|
||||
//Delete all of the entries in the AllianceCorps table
|
||||
AllianceCorp::truncate();
|
||||
|
||||
//Foreach corporation, make entries into the database.
|
||||
foreach($corporations as $corp) {
|
||||
try {
|
||||
$corpInfo = $esi->invoke('get', '/corporations/{corporation_id}/', [
|
||||
'corporation_id' => $corp,
|
||||
]);
|
||||
} catch(RequestFailedException $e) {
|
||||
return $e->getEsiResponse();
|
||||
}
|
||||
$entry = new AllianceCorp;
|
||||
$entry->corporation_id = $corp;
|
||||
$entry->name = $corpInfo->name;
|
||||
$entry->save();
|
||||
}
|
||||
|
||||
//Mark the job as finished
|
||||
$task->SetStopStatus();
|
||||
}
|
||||
}
|
||||
@@ -7,9 +7,6 @@ use Illuminate\Console\Command;
|
||||
use Carbon\Carbon;
|
||||
use Log;
|
||||
|
||||
//Library
|
||||
use Commands\Library\CommandHelper;
|
||||
|
||||
//Models
|
||||
use App\Models\Lookups\AllianceLookup;
|
||||
use App\Models\Lookups\CharacterLookup;
|
||||
@@ -31,7 +28,7 @@ class CleanStaleDataCommand extends Command
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
protected $signature = 'services:CleanData';
|
||||
protected $signature = 'data:CleanData';
|
||||
|
||||
/**
|
||||
* The console command description.
|
||||
@@ -57,9 +54,6 @@ class CleanStaleDataCommand extends Command
|
||||
*/
|
||||
public function handle()
|
||||
{
|
||||
$command = new CommandHelper;
|
||||
$command->CleanJobStatusTable();
|
||||
|
||||
//Empty the item lookup table
|
||||
ItemLookup::truncate();
|
||||
|
||||
|
||||
@@ -5,13 +5,10 @@ namespace App\Console\Commands\Data;
|
||||
//Internal Library
|
||||
use Illuminate\Console\Command;
|
||||
|
||||
//Library
|
||||
use Commands\Library\CommandHelper;
|
||||
|
||||
//Models
|
||||
use App\Models\Structure\Structure;
|
||||
use App\Models\Structure\Service;
|
||||
use App\Models\Stock\Asset;
|
||||
use App\Models\Structure\Asset;
|
||||
|
||||
class EmptyJumpBridges extends Command
|
||||
{
|
||||
@@ -20,7 +17,7 @@ class EmptyJumpBridges extends Command
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
protected $signature = 'services:EmptyJumpBridges';
|
||||
protected $signature = 'data:EmptyJumpBridges';
|
||||
|
||||
/**
|
||||
* The console command description.
|
||||
@@ -46,16 +43,8 @@ class EmptyJumpBridges extends Command
|
||||
*/
|
||||
public function handle()
|
||||
{
|
||||
$task = new CommandHelper('EmptyJumpBridges');
|
||||
|
||||
//Add entry into the table saying the job is starting
|
||||
$task->SetStartStatus();
|
||||
|
||||
Structure::truncate();
|
||||
Service::truncate();
|
||||
Asset::truncate();
|
||||
|
||||
//Mark the job as finished
|
||||
$task->SetStopStatus();
|
||||
}
|
||||
}
|
||||
|
||||
80
app/Console/Commands/Data/GetCorpsCommand.php
Normal file
80
app/Console/Commands/Data/GetCorpsCommand.php
Normal file
@@ -0,0 +1,80 @@
|
||||
<?php
|
||||
|
||||
namespace App\Console\Commands\Data;
|
||||
|
||||
//Internal Library
|
||||
use Illuminate\Console\Command;
|
||||
|
||||
//Models
|
||||
use App\Models\Corporation\AllianceCorp;
|
||||
use App\Models\ScheduledTask\ScheduleJob;
|
||||
|
||||
//Library
|
||||
use Seat\Eseye\Exceptions\RequestFailedException;
|
||||
use App\Library\Esi\Esi;
|
||||
|
||||
class GetCorpsCommand extends Command
|
||||
{
|
||||
/**
|
||||
* The name and signature of the console command.
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
protected $signature = 'data:GetCorps';
|
||||
|
||||
/**
|
||||
* The console command description.
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
protected $description = 'Get corporations in alliance and store in db.';
|
||||
|
||||
/**
|
||||
* Create a new command instance.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function __construct()
|
||||
{
|
||||
parent::__construct();
|
||||
}
|
||||
|
||||
/**
|
||||
* Execute the console command.
|
||||
*
|
||||
* @return mixed
|
||||
*/
|
||||
public function handle()
|
||||
{
|
||||
//Declare some variables
|
||||
$esiHelper = new Esi;
|
||||
|
||||
$esi = $esiHelper->SetupEsiAuthentication();
|
||||
|
||||
//try the esi call to get all of the corporations in the alliance
|
||||
try {
|
||||
$corporations = $esi->invoke('get', '/alliances/{alliance_id}/corporations/', [
|
||||
'alliance_id' => 99004116,
|
||||
]);
|
||||
} catch(RequestFailedException $e){
|
||||
dd($e->getEsiResponse());
|
||||
}
|
||||
//Delete all of the entries in the AllianceCorps table
|
||||
AllianceCorp::truncate();
|
||||
|
||||
//Foreach corporation, make entries into the database.
|
||||
foreach($corporations as $corp) {
|
||||
try {
|
||||
$corpInfo = $esi->invoke('get', '/corporations/{corporation_id}/', [
|
||||
'corporation_id' => $corp,
|
||||
]);
|
||||
} catch(RequestFailedException $e) {
|
||||
return $e->getEsiResponse();
|
||||
}
|
||||
$entry = new AllianceCorp;
|
||||
$entry->corporation_id = $corp;
|
||||
$entry->name = $corpInfo->name;
|
||||
$entry->save();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -4,11 +4,6 @@ namespace App\Console\Commands\Data;
|
||||
|
||||
//Internal Library
|
||||
use Illuminate\Console\Command;
|
||||
use Carbon\Carbon;
|
||||
use Log;
|
||||
|
||||
//Library
|
||||
use Commands\Library\CommandHelper;
|
||||
|
||||
//Jobs
|
||||
use App\Jobs\Commands\Moons\PurgeMoonLedgerJob;
|
||||
@@ -46,11 +41,6 @@ class PurgeCorpMoonLedgers extends Command
|
||||
*/
|
||||
public function handle()
|
||||
{
|
||||
$task = new CommandHelper('PurgeCorpLedgers');
|
||||
$task->SetStartStatus();
|
||||
|
||||
PurgeMoonLedgerJob::dispatch();
|
||||
|
||||
$task->SetStopStatus();
|
||||
}
|
||||
}
|
||||
|
||||
192
app/Console/Commands/Data/PurgeUsers.php
Normal file
192
app/Console/Commands/Data/PurgeUsers.php
Normal file
@@ -0,0 +1,192 @@
|
||||
<?php
|
||||
|
||||
namespace App\Console\Commands\Data;
|
||||
|
||||
//Internal Library
|
||||
use Illuminate\Console\Command;
|
||||
use Log;
|
||||
|
||||
//Libraries
|
||||
use Seat\Eseye\Exceptions\RequestFailedException;
|
||||
use App\Library\Esi\Esi;
|
||||
|
||||
//Models
|
||||
use App\Models\User\User;
|
||||
use App\Models\User\UserAlt;
|
||||
use App\Models\Esi\EsiScope;
|
||||
use App\Models\Esi\EsiToken;
|
||||
use App\Models\User\UserPermission;
|
||||
use App\Models\User\UserRole;
|
||||
use App\Models\Admin\AllowedLogin;
|
||||
|
||||
/**
|
||||
* The PurgeUsers command takes care of updating any user changes in terms of login role, as well as purging any users without at least
|
||||
* the 'User' role. This command heavily relies on ESI being available. If no ESI is available, then the function does nothing, in order to prevent
|
||||
* unwanted changes.
|
||||
*/
|
||||
class PurgeUsers extends Command
|
||||
{
|
||||
/**
|
||||
* The name and signature of the console command.
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
protected $signature = 'data:PurgeUsers';
|
||||
|
||||
/**
|
||||
* The console command description.
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
protected $description = 'Update and purge users from the database.';
|
||||
|
||||
/**
|
||||
* Create a new command instance.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function __construct()
|
||||
{
|
||||
parent::__construct();
|
||||
}
|
||||
|
||||
/**
|
||||
* Execute the console command.
|
||||
*
|
||||
* @return mixed
|
||||
*/
|
||||
public function handle()
|
||||
{
|
||||
//Declare some variables
|
||||
$esiHelper = new Esi;
|
||||
|
||||
//Setup the esi variable
|
||||
$esi = $esiHelper->SetupEsiAuthentication();
|
||||
|
||||
//Get all of the users from the database
|
||||
$users = User::all();
|
||||
|
||||
//Get the allowed logins
|
||||
$legacy = AllowedLogin::where(['login_type' => 'Legacy'])->pluck('entity_id')->toArray();
|
||||
$renter = AllowedLogin::where(['login_type' => 'Renter'])->pluck('entity_id')->toArray();
|
||||
|
||||
//Cycle through all of the users, and either update their role, or delete them.
|
||||
foreach($users as $user) {
|
||||
//Set the fail bit to false for the next user to check
|
||||
$failed = false;
|
||||
|
||||
//Note a screen entry for when doing cli stuff
|
||||
printf("Processing character with id of " . $user->character_id . "\r\n");
|
||||
|
||||
//Get the character information
|
||||
try {
|
||||
$character_info = $esi->invoke('get', '/characters/{character_id}/', [
|
||||
'character_id' => $user->character_id,
|
||||
]);
|
||||
|
||||
$corp_info = $esi->invoke('get', '/corporations/{corporation_id}/', [
|
||||
'corporation_id' => $character_info->corporation_id,
|
||||
]);
|
||||
} catch(RequestFailedException $e) {
|
||||
Log::warning('Failed to get character information in purge user command for user ' . $user->character_id);
|
||||
$failed = true;
|
||||
}
|
||||
|
||||
//If the fail bit is still false, then continue
|
||||
if($failed === false) {
|
||||
//Get the user's role
|
||||
$role = UserRole::where(['character_id' => $user->character_id])->first();
|
||||
|
||||
//We don't want to modify Admin and SuperUsers. Admins and SuperUsers are removed via a different process.
|
||||
if($role->role != 'Admin') {
|
||||
//Check if the user is allowed to login
|
||||
if(isset($corp_info->alliance_id)) {
|
||||
//Warped Intentions is allowed to login
|
||||
if($corp_info->alliance_id == '99004116') {
|
||||
//If the alliance is Warped Intentions, then modify the role if we need to
|
||||
if($role->role != 'User') {
|
||||
//Upate the role of the user
|
||||
UserRole::where([
|
||||
'character_id' => $user->character_id,
|
||||
])->update([
|
||||
'role' => 'User',
|
||||
]);
|
||||
|
||||
//Update the user type
|
||||
User::where([
|
||||
'character_id' => $user->character_id,
|
||||
])->update([
|
||||
'user_type' => 'W4RP',
|
||||
]);
|
||||
}
|
||||
} else if(in_array($corp_info->alliance_id, $legacy)) { //Legacy Users
|
||||
if($role->role != 'User') {
|
||||
//Update the role of the user
|
||||
UserRole::where([
|
||||
'character_id' => $user->character_id,
|
||||
])->update([
|
||||
'role' => 'User',
|
||||
]);
|
||||
|
||||
//Update the user type
|
||||
User::where([
|
||||
'character_id' => $user->character_id,
|
||||
])->update([
|
||||
'user_type' => 'Legacy',
|
||||
]);
|
||||
}
|
||||
} else if(in_array($corp_info->alliance_id, $renter)) { //Renter Users
|
||||
if($role->role != 'Renter') {
|
||||
//Update the role of the user
|
||||
UserRole::where([
|
||||
'character_id' => $user->character_id,
|
||||
])->update([
|
||||
'role' => 'Renter',
|
||||
]);
|
||||
|
||||
//Update the user type
|
||||
User::where([
|
||||
'character_id' => $user->character_id,
|
||||
])->update([
|
||||
'user_type' => 'Renter',
|
||||
]);
|
||||
}
|
||||
} else {
|
||||
//If the user is part of no valid login group, then delete the user.
|
||||
//Delete all of the permissions first
|
||||
UserPermission::where([
|
||||
'character_id' => $user->character_id,
|
||||
])->delete();
|
||||
|
||||
//Delete the user's role
|
||||
UserRole::where([
|
||||
'character_id' => $user->character_id,
|
||||
])->delete();
|
||||
|
||||
//Delete any alts the user might have registered.
|
||||
$altCount = UserAlt::where(['main_id' => $user->character_id])->count();
|
||||
if($altCount > 0) {
|
||||
UserAlt::where([
|
||||
'main_id' => $user->character_id,
|
||||
])->delete();
|
||||
}
|
||||
|
||||
//Delete the user from the user table
|
||||
User::where([
|
||||
'character_id' => $user->character_id,
|
||||
])->delete();
|
||||
|
||||
EsiScope::where([
|
||||
'character_id' => $user->character_id,
|
||||
])->delete();
|
||||
|
||||
EsiToken::where([
|
||||
'character_id' => $user->character_id,
|
||||
])->delete();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
70
app/Console/Commands/Data/Test.php
Normal file
70
app/Console/Commands/Data/Test.php
Normal file
@@ -0,0 +1,70 @@
|
||||
<?php
|
||||
|
||||
namespace App\Console\Commands\Data;
|
||||
|
||||
use Illuminate\Console\Command;
|
||||
use Log;
|
||||
use Carbon\Carbon;
|
||||
use Illuminate\Support\Collection;
|
||||
use Illuminate\Support\Str;
|
||||
use App\Library\Helpers\LookupHelper;
|
||||
use App\Library\Esi\Esi;
|
||||
use App\Library\Moons\MoonCalc;
|
||||
use App\Models\MoonRental\AllianceMoon;
|
||||
use App\Models\MoonRental\AllianceMoonOre;
|
||||
|
||||
class Test extends Command
|
||||
{
|
||||
/**
|
||||
* The name and signature of the console command.
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
protected $signature = 'data:test';
|
||||
|
||||
/**
|
||||
* The console command description.
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
protected $description = 'Test ESI stuff.';
|
||||
|
||||
/**
|
||||
* Create a new command instance.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function __construct()
|
||||
{
|
||||
parent::__construct();
|
||||
}
|
||||
|
||||
/**
|
||||
* Execute the console command.
|
||||
*
|
||||
* @return int
|
||||
*/
|
||||
public function handle()
|
||||
{
|
||||
//Declare variables
|
||||
$lookup = new LookupHelper;
|
||||
$mHelper = new MoonCalc;
|
||||
$months = 3;
|
||||
$rentalTax = 0.25;
|
||||
$worth1;
|
||||
$worth2;
|
||||
|
||||
$moons = AllianceMoon::all();
|
||||
|
||||
foreach($moons as $moon) {
|
||||
//Declare the arrays needed
|
||||
$ores = array();
|
||||
|
||||
$ores = AllianceMoonOre::where([
|
||||
'moon_id' => $moon->moon_id,
|
||||
])->get(['ore_type_id', 'quantity'])->toArray();
|
||||
|
||||
dd($ores);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,49 +0,0 @@
|
||||
<?php
|
||||
|
||||
namespace App\Console\Commands\Eve;
|
||||
|
||||
//Internal Library
|
||||
use Illuminate\Console\Command;
|
||||
|
||||
//Library
|
||||
use Commands\Library\CommandHelper;
|
||||
|
||||
//Job
|
||||
use App\Jobs\Commands\Eve\GetEveRegionsJob;
|
||||
|
||||
class GetEveRegionsCommand extends Command
|
||||
{
|
||||
/**
|
||||
* The name and signature of the console command.
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
protected $signature = 'eve:getRegions';
|
||||
|
||||
/**
|
||||
* The console command description.
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
protected $description = 'Gets all of the information for regions from the eve esi';
|
||||
|
||||
/**
|
||||
* Create a new command instance.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function __construct()
|
||||
{
|
||||
parent::__construct();
|
||||
}
|
||||
|
||||
/**
|
||||
* Execute the console command.
|
||||
*
|
||||
* @return mixed
|
||||
*/
|
||||
public function handle()
|
||||
{
|
||||
GetEveRegionsJob::dispatch();
|
||||
}
|
||||
}
|
||||
54
app/Console/Commands/Eve/ItemPricesUpdateCommand.php
Normal file
54
app/Console/Commands/Eve/ItemPricesUpdateCommand.php
Normal file
@@ -0,0 +1,54 @@
|
||||
<?php
|
||||
|
||||
namespace App\Console\Commands\Eve;
|
||||
|
||||
use Illuminate\Console\Command;
|
||||
|
||||
//Library
|
||||
use App\Library\Moons\MoonCalc;
|
||||
|
||||
//Job
|
||||
use App\Jobs\Commands\Eve\ItemPricesUpdateJob;
|
||||
|
||||
class ItemPricesUpdateCommand extends Command
|
||||
{
|
||||
/**
|
||||
* The name and signature of the console command.
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
protected $signature = 'services:ItemPriceUpdate';
|
||||
|
||||
/**
|
||||
* The console command description.
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
protected $description = 'Update mineral and ore prices';
|
||||
|
||||
/**
|
||||
* Create a new command instance.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function __construct()
|
||||
{
|
||||
parent::__construct();
|
||||
}
|
||||
|
||||
/**
|
||||
* Execute the console command.
|
||||
*
|
||||
* @return mixed
|
||||
*/
|
||||
public function handle()
|
||||
{
|
||||
//Declare variables
|
||||
$moonHelper = new MoonCalc;
|
||||
|
||||
//Fetch new prices from fuzzwork.co.uk for the item pricing schemes
|
||||
$moonHelper->FetchNewPrices();
|
||||
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
152
app/Console/Commands/Files/ImportAllianceMoons.php
Normal file
152
app/Console/Commands/Files/ImportAllianceMoons.php
Normal file
@@ -0,0 +1,152 @@
|
||||
<?php
|
||||
|
||||
//Namespace
|
||||
namespace App\Console\Commands\Files;
|
||||
|
||||
//Internal Library
|
||||
use Illuminate\Console\Command;
|
||||
use Illuminate\Support\Facades\Storage;
|
||||
use Illuminate\Http\File;
|
||||
use Carbon\Carbon;
|
||||
use Log;
|
||||
use Illuminate\Support\Collection;
|
||||
use Illuminate\Support\Str;
|
||||
use DB;
|
||||
|
||||
//Application Library
|
||||
use Seat\Eseye\Exceptions\RequestFailedException;
|
||||
use App\Library\Esi\Esi;
|
||||
use App\Library\Helpers\LookupHelper;
|
||||
use App\Library\Moons\MoonCalc;
|
||||
|
||||
//Models
|
||||
use App\Models\MoonRental\AllianceMoonOre;
|
||||
use App\Models\MoonRental\AllianceMoon;
|
||||
|
||||
class ImportAllianceMoons extends Command
|
||||
{
|
||||
/**
|
||||
* The name and signature of the console command.
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
protected $signature = 'files:import:moons';
|
||||
|
||||
/**
|
||||
* The console command description.
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
protected $description = 'Import moons from tab-delimited text.';
|
||||
|
||||
/**
|
||||
* Create a new command instance.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function __construct()
|
||||
{
|
||||
parent::__construct();
|
||||
}
|
||||
|
||||
/**
|
||||
* Execute the console command.
|
||||
*
|
||||
* @return int
|
||||
*/
|
||||
public function handle()
|
||||
{
|
||||
///universe/moons/{moon_id}/
|
||||
//Declare variables
|
||||
$lookup = new LookupHelper;
|
||||
$mHelper = new MoonCalc;
|
||||
//Create the collection of lines for the input file.
|
||||
$moons = new Collection;
|
||||
|
||||
//Create the file handler
|
||||
$data = Storage::get('public/alliance_moons.txt');
|
||||
//Split the string into separate arrays based on the line
|
||||
$lines = preg_split("/\n/", $data);
|
||||
//Take each line and split it again by tabs
|
||||
foreach($lines as $temp) {
|
||||
//Split the lines into separate arrays by tabs
|
||||
$separated = preg_split("/\t/", $temp);
|
||||
//Push the tabbed array into the collection
|
||||
$moons->push($separated);
|
||||
}
|
||||
|
||||
/**
|
||||
* The first pass through the collection of data is to get all of the ore data
|
||||
* and store it in the database. From the database moon ore, we will create a list
|
||||
* of moons and store those in the database. After the list of moons are created in the
|
||||
* database, the function will then update the value of all the moons.
|
||||
*/
|
||||
|
||||
//Start working our way through all of the moons
|
||||
//and saving the data to the database
|
||||
foreach($moons as $moon) {
|
||||
//If the first array is null then we are dealing with an ore
|
||||
if($moon[0] == null) {
|
||||
$moonInfo = $lookup->GetMoonInfo($moon[6]);
|
||||
$solarName = $lookup->SystemIdToName($moonInfo->system_id);
|
||||
|
||||
$moonType = $mHelper->IsRMoonGoo($moon[1]);
|
||||
|
||||
if(AllianceMoon::where(['moon_id' => $moonInfo->moon_id])->count() == 0) {
|
||||
//Save the moon into the database
|
||||
$newMoon = new AllianceMoon;
|
||||
$newMoon->moon_id = $moonInfo->moon_id;
|
||||
$newMoon->name = $moonInfo->name;
|
||||
$newMoon->system_id = $moonInfo->system_id;
|
||||
$newMoon->system_name = $solarName;
|
||||
$newMoon->moon_type = $moonType;
|
||||
$newMoon->worth_amount = 0.00;
|
||||
$newMoon->rented = 'No';
|
||||
$newMoon->rental_amount = 0.00;
|
||||
$newMoon->save();
|
||||
} else {
|
||||
$current = AllianceMoon::where([
|
||||
'moon_id' => $moonInfo->moon_id,
|
||||
])->first();
|
||||
|
||||
if($current->moon_type == 'R4' && ($moonType == 'R8' || $moonType == 'R16' || $moonType == 'R32' || $moonType == 'R64')) {
|
||||
AllianceMoon::where([
|
||||
'moon_id' => $moonInfo->moon_id,
|
||||
])->update([
|
||||
'moon_type' => $moonType,
|
||||
]);
|
||||
} else if($current->moon_type == 'R8' && ($moonType == 'R16' || $moonType == 'R32' || $moonType == 'R64')) {
|
||||
AllianceMoon::where([
|
||||
'moon_id' => $moonInfo->moon_id,
|
||||
])->update([
|
||||
'moon_type' => $moonType,
|
||||
]);
|
||||
} else if($current->moon_type == 'R16' && ($moonType == 'R32' || $moonType == 'R64')) {
|
||||
AllianceMoon::where([
|
||||
'moon_id' => $moonInfo->moon_id,
|
||||
])->update([
|
||||
'moon_type' => $moonType,
|
||||
]);
|
||||
} else if($current->moon_type == 'R32' && $moonType == 'R64') {
|
||||
AllianceMoon::where([
|
||||
'moon_id' => $moonInfo->moon_id,
|
||||
])->update([
|
||||
'moon_type' => $moonType,
|
||||
]);
|
||||
}
|
||||
}
|
||||
|
||||
//Save a new entry into the database
|
||||
$ore = new AllianceMoonOre;
|
||||
$ore->moon_id = $moon[6];
|
||||
$ore->moon_name = $moonInfo->name;
|
||||
$ore->ore_type_id = $moon[3];
|
||||
$ore->ore_name = $moon[1];
|
||||
$ore->quantity = $moon[2];
|
||||
$ore->solar_system_id = $moon[4];
|
||||
$ore->planet_id = $moon[5];
|
||||
$ore->save();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,98 @@
|
||||
<?php
|
||||
|
||||
namespace App\Console\Commands\Files;
|
||||
|
||||
//Internal Stuff
|
||||
use Illuminate\Console\Command;
|
||||
use Illuminate\Support\Facades\DB;
|
||||
use Illuminate\Support\Facades\File;
|
||||
|
||||
class UpdateItemCompositionFromSDECommand extends Command
|
||||
{
|
||||
/**
|
||||
* The name and signature of the console command.
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
protected $signature = 'sde:update:ItemCompositions';
|
||||
|
||||
/**
|
||||
* The console command description.
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
protected $description = 'Updates item compositions from sql file.';
|
||||
|
||||
/**
|
||||
* The SDE storage path
|
||||
*
|
||||
* @var
|
||||
*/
|
||||
protected $storage_path;
|
||||
|
||||
/**
|
||||
* Create a new command instance.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function __construct()
|
||||
{
|
||||
parent::__construct();
|
||||
}
|
||||
|
||||
/**
|
||||
* Query the sql file for the related database information
|
||||
*
|
||||
* @return mixed
|
||||
*/
|
||||
public function handle()
|
||||
{
|
||||
//Start by warning the user about the command which will be run
|
||||
$this->comment('Warning! This Laravel command uses exec() to execute a ');
|
||||
$this->comment('mysql shell command to import an extracted dump. Due');
|
||||
$this->comment('to the way the command is constructed, should someone ');
|
||||
$this->comment('view the current running processes of your server, they ');
|
||||
$this->comment('will be able to see your SeAT database users password.');
|
||||
$this->line('');
|
||||
$this->line('Ensure that you understand this before continuing.');
|
||||
|
||||
//Test we have valid database parameters
|
||||
DB::connection()->getDatabaseName();
|
||||
|
||||
//Warn the user about the operation to begin
|
||||
if (! $this->confirm('Are you sure you want to update to the latest EVE SDE?', true)) {
|
||||
$this->warn('Exiting');
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
$fileName = $this->getSde();
|
||||
$this->importSde($fileName);
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Download the EVE Sde from Fuzzwork and save it
|
||||
* in the storage_path/sde folder
|
||||
*/
|
||||
public function getSde() {
|
||||
|
||||
|
||||
return $fileName;
|
||||
}
|
||||
|
||||
/**
|
||||
* Extract the SDE file downloaded and run the MySQL command to import the table into the database
|
||||
*/
|
||||
public function importSde($fileName) {
|
||||
$import_command = 'mysql -u username -p password database < ' . $file;
|
||||
|
||||
//run the command
|
||||
exec($import_command, $output, $exit_code);
|
||||
|
||||
if($exit_code !== 0) {
|
||||
$this->error('Warning: Import failed with exit code ' .
|
||||
$exit_code . ' and command outut: ' . implode('\n', $output));
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,78 +0,0 @@
|
||||
<?php
|
||||
|
||||
namespace App\Console\Commands\Finances;
|
||||
|
||||
use Illuminate\Console\Command;
|
||||
use Log;
|
||||
|
||||
use Commands\Library\CommandHelper;
|
||||
use App\Library\Finances\Helper\FinanceHelper;
|
||||
|
||||
//Jobs
|
||||
use App\Jobs\ProcessWalletJournalJob;
|
||||
|
||||
class HoldingFinancesCommand extends Command
|
||||
{
|
||||
/**
|
||||
* The name and signature of the console command.
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
protected $signature = 'services:HoldingJournal';
|
||||
|
||||
/**
|
||||
* The console command description.
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
protected $description = 'Get the holding corps finances.';
|
||||
|
||||
/**
|
||||
* Create a new command instance.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function __construct()
|
||||
{
|
||||
parent::__construct();
|
||||
}
|
||||
|
||||
/**
|
||||
* Execute the console command.
|
||||
*
|
||||
* @return mixed
|
||||
*/
|
||||
public function handle()
|
||||
{
|
||||
//Create the command helper container
|
||||
$task = new CommandHelper('HoldingFinances');
|
||||
|
||||
//Add the entry into the jobs table saying the job is starting
|
||||
$task->SetStartStatus();
|
||||
|
||||
//Setup the Finances container
|
||||
$finance = new FinanceHelper();
|
||||
|
||||
//Get the esi configuration
|
||||
$config = config('esi');
|
||||
|
||||
//Get the total pages for the journal for the holding corporation
|
||||
$pages = $finance->GetJournalPageCount(1, $config['primary']);
|
||||
|
||||
//Dispatch a single job for each page to process
|
||||
for($i = 1; $i <= $pages; $i++) {
|
||||
ProcessWalletJournalJob::dispatch(1, $config['primary'], $i)->onQueue('journal');
|
||||
}
|
||||
|
||||
//Get the total pages for the journal for the sov bills from the holding corporation
|
||||
$pages = $finance->GetJournalPageCount(6, $config['primary']);
|
||||
|
||||
//Dispatch a job for each page to process
|
||||
for($i = 1; $i <= $pages; $i++) {
|
||||
ProcessWalletJournalJob::dispatch(6, $config['primary'], $i)->onQueue('journal');
|
||||
}
|
||||
|
||||
//Mark the job as finished
|
||||
$task->SetStopStatus();
|
||||
}
|
||||
}
|
||||
@@ -1,132 +0,0 @@
|
||||
<?php
|
||||
|
||||
namespace App\Console\Commands\Finances;
|
||||
|
||||
use Illuminate\Console\Command;
|
||||
use Log;
|
||||
|
||||
use Commands\Library\CommandHelper;
|
||||
use App\Library\Finances\Helper\FinanceHelper;
|
||||
|
||||
//Jobs
|
||||
use App\Jobs\ProcessWalletJournalJob;
|
||||
|
||||
//Models
|
||||
use App\Models\Esi\EsiToken;
|
||||
use App\Models\Esi\EsiScope;
|
||||
|
||||
//Library
|
||||
use App\Library\Esi\Esi;
|
||||
use App\Library\Finances\AllianceMarketTax;
|
||||
use App\Library\Finances\CorpMarketTax;
|
||||
use App\Library\Finances\MarketTax;
|
||||
use App\Library\Finances\PlayerDonation;
|
||||
use App\Library\Finances\ReprocessingTax;
|
||||
use App\Library\Finances\JumpBridgeTax;
|
||||
use App\Library\Finances\StructureIndustryTax;
|
||||
use App\Library\Finances\OfficeFee;
|
||||
use App\Library\Finances\PlanetProductionTax;
|
||||
use App\Library\Finances\PISale;
|
||||
use App\Library\Lookups\LookupHelper;
|
||||
use App\Library\Finances\SovBillExpenses;
|
||||
|
||||
//Seat Stuff
|
||||
use Seat\Eseye\Exceptions\RequestFailedException;
|
||||
use Seat\Eseye\Cache\NullCache;
|
||||
use Seat\Eseye\Configuration;
|
||||
|
||||
class SovBillsCommand extends Command
|
||||
{
|
||||
/**
|
||||
* The name and signature of the console command.
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
protected $signature = 'services:SovBills';
|
||||
|
||||
/**
|
||||
* The console command description.
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
protected $description = 'Get the holding corps sov bills from wallet 6.';
|
||||
|
||||
/**
|
||||
* Create a new command instance.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function __construct()
|
||||
{
|
||||
parent::__construct();
|
||||
}
|
||||
|
||||
/**
|
||||
* Execute the console command.
|
||||
*
|
||||
* @return mixed
|
||||
*/
|
||||
public function handle()
|
||||
{
|
||||
$sovBill = new SovBillExpenses;
|
||||
$esiHelper = new Esi;
|
||||
$finance = new FinanceHelper();
|
||||
$lookup = new LookupHelper;
|
||||
|
||||
//Create the command helper container
|
||||
$task = new CommandHelper('SovBills');
|
||||
|
||||
//Add the entry into the jobs table saying the job is starting
|
||||
$task->SetStartStatus();
|
||||
|
||||
|
||||
//Get the esi configuration
|
||||
$config = config('esi');
|
||||
//Set caching to null
|
||||
$configuration = Configuration::getInstance();
|
||||
$configuration->cache = NullCache::class;
|
||||
|
||||
$token = $esiHelper->GetRefreshToken($config['primary']);
|
||||
if($token == null) {
|
||||
return null;
|
||||
}
|
||||
|
||||
//Create an ESI authentication container
|
||||
$esi = $esiHelper->SetupEsiAuthentication($token);
|
||||
$esi->setVersion('v4');
|
||||
|
||||
//Reference to see if the character is in our look up table for corporations and characters
|
||||
$char = $lookup->GetCharacterInfo($config['primary']);
|
||||
$corpId = $char->corporation_id;
|
||||
|
||||
//Get the total pages for the journal for the sov bills from the holding corporation
|
||||
$pages = $finance->GetJournalPageCount(6, $config['primary']);
|
||||
|
||||
//Try to figure it out from the command itself.
|
||||
for($i = 1; $i <= $pages; $i++) {
|
||||
printf("Getting page: " . $i . "\n");
|
||||
|
||||
try {
|
||||
$journals = $esi->page($i)
|
||||
->invoke('get', '/corporations/{corporation_id}/wallets/{division}/journal/', [
|
||||
'corporation_id' => $corpId,
|
||||
'division' => 6,
|
||||
]);
|
||||
} catch(RequestFailedException $e) {
|
||||
return null;
|
||||
}
|
||||
|
||||
//Decode the wallet from json into an array
|
||||
$wallet = json_decode($journals->raw, true);
|
||||
dd($wallet);
|
||||
foreach($wallet as $entry) {
|
||||
if($entry['ref_type'] == 'infrastructure_hub_maintenance' && $entry['first_party_id'] == 98287666) {
|
||||
$sovBill->InsertSovBillExpense($entry, $corpId, $division);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//Mark the job as finished
|
||||
$task->SetStopStatus();
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,54 @@
|
||||
<?php
|
||||
|
||||
namespace App\Console\Commands\Finances;
|
||||
|
||||
//Internal Library
|
||||
use Illuminate\Console\Command;
|
||||
use Log;
|
||||
use Carbon\Carbon;
|
||||
|
||||
//Application Library
|
||||
use App\Library\Helpers\FinanceHelper;
|
||||
|
||||
//Jobs
|
||||
use App\Jobs\Commands\Finances\UpdateAllianceWalletJournalJob;
|
||||
|
||||
//Models
|
||||
use App\Models\Finances\AllianceWalletJournal;
|
||||
|
||||
class UpdateAllianceWalletJournal extends Command
|
||||
{
|
||||
/**
|
||||
* The name and signature of the console command.
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
protected $signature = 'finances:UpdateJournals';
|
||||
|
||||
/**
|
||||
* The console command description.
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
protected $description = "Update the holding corporation's finance journal.";
|
||||
|
||||
/**
|
||||
* Create a new command instance.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function __construct()
|
||||
{
|
||||
parent::__construct();
|
||||
}
|
||||
|
||||
/**
|
||||
* Execute the console command.
|
||||
*
|
||||
* @return int
|
||||
*/
|
||||
public function handle()
|
||||
{
|
||||
UpdateAllianceWalletJournalJob::dispatch()->onQueue('finances');
|
||||
}
|
||||
}
|
||||
@@ -1,129 +0,0 @@
|
||||
<?php
|
||||
|
||||
namespace App\Console\Commands\Flex;
|
||||
|
||||
//Internal Library
|
||||
use Illuminate\Console\Command;
|
||||
use Carbon\Carbon;
|
||||
|
||||
//Jobs
|
||||
use App\Jobs\ProcessSendEveMailJob;
|
||||
|
||||
//Library
|
||||
use Commands\Library\CommandHelper;
|
||||
|
||||
//Models
|
||||
use App\Models\Flex\FlexStructure;
|
||||
use App\Models\Mail\SentMail;
|
||||
|
||||
class FlexStructureCommand extends Command
|
||||
{
|
||||
/**
|
||||
* The name and signature of the console command.
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
protected $signature = 'services:FlexStructures';
|
||||
|
||||
/**
|
||||
* The console command description.
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
protected $description = 'Mail out reminder for flex structure bills';
|
||||
|
||||
/**
|
||||
* Create a new command instance.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function __construct()
|
||||
{
|
||||
parent::__construct();
|
||||
}
|
||||
|
||||
/**
|
||||
* Execute the console command.
|
||||
*
|
||||
* @return mixed
|
||||
*/
|
||||
public function handle()
|
||||
{
|
||||
//Create the new command helper container
|
||||
$task = new CommandHelper('FlexStructureMailer');
|
||||
//Add the entry into the jobs table saying the job has started
|
||||
$task->SetStartStatus();
|
||||
|
||||
//Create other variables
|
||||
$body = null;
|
||||
$delay = 5;
|
||||
|
||||
//Get today's date
|
||||
$today = Carbon::now();
|
||||
$today->second = 2;
|
||||
$today->minute = 0;
|
||||
$today->hour = 0;
|
||||
|
||||
//Get the esi configuration
|
||||
$config = config('esi');
|
||||
|
||||
//Get all of the contacts for the flex structures
|
||||
$contacts = FlexStructure::select('requestor_id')->orderBy('requestor_id')->get();
|
||||
|
||||
//For each of the contacts, send a reminder mail about the total of the structures they are paying for
|
||||
foreach($contacts as $contact) {
|
||||
//Get all of the structures for requestor
|
||||
$structures = FlexStructure::where([
|
||||
'requestor_id' => $contact->requestor_id,
|
||||
])->get();
|
||||
|
||||
//Totalize the total cost of everything
|
||||
$totalCost = $this->TotalizeCost($structures);
|
||||
|
||||
//Build the body of the mail
|
||||
$body = "Flex Structure Overhead Cost is due for the following structures:<br>";
|
||||
foreach($structures as $structure) {
|
||||
|
||||
$body .= "System: " . $structure->system . " - " . $structure->structure_type . ": " . $structure->structure_cost . " ISK<br>";
|
||||
}
|
||||
$body .= "Total Cost: " . number_format($totalCost, 2,".", ",");
|
||||
$body .= "Please remit payment to Spatial Forces by the 3rd of the month.<br>";
|
||||
$body .= "Sincerely,<br>";
|
||||
$body .= "Warped Intentions Leadership<br>";
|
||||
|
||||
//Dispatch the mail job
|
||||
$subject = "Warped Intentions Flex Structures Payment Due for " . $today->englishMonth;
|
||||
ProcessSendEveMailJob::dispatch($body, (int)$structure->requestor_id, 'character', $subject, $config['primary'])->onQueue('mail')->delay(Carbon::now()->addSeconds($delay));
|
||||
|
||||
//Increment the delay for the mail to not hit the rate limits
|
||||
$delay += 60;
|
||||
|
||||
//After the mail is dispatched, save the sent mail record
|
||||
$this->SaveSentRecord($config['primary'], $subject, $body, (int)$structure->requestor_id, 'character');
|
||||
}
|
||||
|
||||
//Mark the job as finished
|
||||
$task->SetStopStatus();
|
||||
}
|
||||
|
||||
private function TotalizeCost($structures) {
|
||||
//Declare the total cost
|
||||
$totalCost = 0.00;
|
||||
|
||||
foreach($structures as $structure) {
|
||||
$totalCost += $structure->structure_cost;
|
||||
}
|
||||
|
||||
return $totalCost;
|
||||
}
|
||||
|
||||
private function SaveSentRecord($sender, $subject, $body, $recipient, $recipientType) {
|
||||
$sentmail = new SentMail;
|
||||
$sentmail->sender = $sender;
|
||||
$sentmail->subject = $subject;
|
||||
$sentmail->body = $body;
|
||||
$sentmail->recipient = $recipient;
|
||||
$sentmail->recipient_type = $recipientType;
|
||||
$sentmail->save();
|
||||
}
|
||||
}
|
||||
@@ -1,48 +0,0 @@
|
||||
<?php
|
||||
|
||||
namespace Commands\Library;
|
||||
|
||||
//Internal Libraries
|
||||
use Carbon\Carbon;
|
||||
|
||||
//Models
|
||||
use App\Models\ScheduledTask\ScheduleJob;
|
||||
|
||||
class CommandHelper {
|
||||
|
||||
private $job_name;
|
||||
private $job_state;
|
||||
private $system_time;
|
||||
|
||||
public function __construct($name) {
|
||||
$this->job_name = $name;
|
||||
$this->job_state = 'Starting';
|
||||
$this->system_time = Carbon::now();
|
||||
}
|
||||
|
||||
public function SetStartStatus() {
|
||||
//Add an entry into the jobs table
|
||||
$job = new ScheduleJob;
|
||||
$job->job_name = $this->job_name;
|
||||
$job->job_state = $this->job_state;
|
||||
$job->system_time = $this->system_time;
|
||||
$job->save();
|
||||
}
|
||||
|
||||
public function SetStopStatus() {
|
||||
//Mark the job as finished
|
||||
ScheduleJob::where([
|
||||
'system_time' => $this->system_time,
|
||||
'job_name' => $this->job_name,
|
||||
])->update([
|
||||
'job_state' => 'Finished',
|
||||
]);
|
||||
}
|
||||
|
||||
public function CleanJobStatusTable() {
|
||||
//Delete old jobs
|
||||
ScheduleJob::where(['system_time', '<', Carbon::now()->subMonths(3)])->delete();
|
||||
}
|
||||
}
|
||||
|
||||
?>
|
||||
@@ -1,70 +0,0 @@
|
||||
<?php
|
||||
|
||||
namespace App\Console\Commands;
|
||||
|
||||
//Internal Library
|
||||
use Illuminate\Console\Command;
|
||||
use Log;
|
||||
|
||||
//Library
|
||||
use Commands\Library\CommandHelper;
|
||||
|
||||
//Jobs
|
||||
use App\Jobs\Commands\Market\GetMarketRegionOrderJob;
|
||||
|
||||
class GetMarketDataCommand extends Command
|
||||
{
|
||||
/**
|
||||
* The name and signature of the console command.
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
protected $signature = 'services:MarketData';
|
||||
|
||||
/**
|
||||
* The console command description.
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
protected $description = 'Get the market data for regions';
|
||||
|
||||
/**
|
||||
* Create a new command instance.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function __construct()
|
||||
{
|
||||
parent::__construct();
|
||||
}
|
||||
|
||||
/**
|
||||
* Execute the console command.
|
||||
*
|
||||
* @return mixed
|
||||
*/
|
||||
public function handle()
|
||||
{
|
||||
$task = new CommandHelper('GetMarketData');
|
||||
$task->SetStartStatus();
|
||||
|
||||
$regions = [
|
||||
'Immensea' => 10000025,
|
||||
'Catch' => 10000014,
|
||||
'Tenerifis' => 10000061,
|
||||
'The Forge' => 10000002,
|
||||
'Impass' => 10000031,
|
||||
'Esoteria' => 10000039,
|
||||
'Detorid' => 10000005,
|
||||
'Omist' => 10000062,
|
||||
'Feythabolis' => 10000056,
|
||||
'Insmother' => 10000009,
|
||||
];
|
||||
|
||||
foreach($regions as $key => $value) {
|
||||
GetMarketRegionOrderJob::dispatch($value);
|
||||
}
|
||||
|
||||
$task->SetStopStatus();
|
||||
}
|
||||
}
|
||||
@@ -1,50 +0,0 @@
|
||||
<?php
|
||||
|
||||
namespace App\Console\Commands;
|
||||
|
||||
//Internal Library
|
||||
use Illuminate\Console\Command;
|
||||
use Log;
|
||||
|
||||
//Library
|
||||
use Commands\Library\CommandHelper;
|
||||
|
||||
//Jobs
|
||||
use App\Jobs\Commands\Market\PurgeMarketRegionOrderJob;
|
||||
|
||||
class PurgeMarketDataCommand extends Command
|
||||
{
|
||||
/**
|
||||
* The name and signature of the console command.
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
protected $signature = 'services:PurgeMarketData';
|
||||
|
||||
/**
|
||||
* The console command description.
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
protected $description = 'Purges old market data from the database';
|
||||
|
||||
/**
|
||||
* Create a new command instance.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function __construct()
|
||||
{
|
||||
parent::__construct();
|
||||
}
|
||||
|
||||
/**
|
||||
* Execute the console command.
|
||||
*
|
||||
* @return mixed
|
||||
*/
|
||||
public function handle()
|
||||
{
|
||||
PurgeMarketDataJob::dispatch();
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,46 @@
|
||||
<?php
|
||||
|
||||
namespace App\Console\Commands\MiningTaxes;
|
||||
|
||||
use Illuminate\Console\Command;
|
||||
|
||||
use App\Jobs\Commands\MiningTaxes\PreFetchMiningTaxesLedgers as PreFetch;
|
||||
|
||||
class ExecuteMiningTaxesLedgersCommand extends Command
|
||||
{
|
||||
/**
|
||||
* The name and signature of the console command.
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
protected $signature = 'mt:ledgers';
|
||||
|
||||
/**
|
||||
* The console command description.
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
protected $description = 'Execute mining taxes ledgers jobs.';
|
||||
|
||||
/**
|
||||
* Create a new command instance.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function __construct()
|
||||
{
|
||||
parent::__construct();
|
||||
}
|
||||
|
||||
/**
|
||||
* Execute the console command.
|
||||
*
|
||||
* @return int
|
||||
*/
|
||||
public function handle()
|
||||
{
|
||||
PreFetch::dispatch();
|
||||
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,46 @@
|
||||
<?php
|
||||
|
||||
namespace App\Console\Commands\MiningTaxes;
|
||||
|
||||
use Illuminate\Console\Command;
|
||||
|
||||
use App\Jobs\Commands\MiningTaxes\FetchMiningTaxesObservers as FetchObservers;
|
||||
|
||||
class ExecuteMiningTaxesObserversCommand extends Command
|
||||
{
|
||||
/**
|
||||
* The name and signature of the console command.
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
protected $signature = 'mt:observer';
|
||||
|
||||
/**
|
||||
* The console command description.
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
protected $description = 'Dispatch a mining tax observer job.';
|
||||
|
||||
/**
|
||||
* Create a new command instance.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function __construct()
|
||||
{
|
||||
parent::__construct();
|
||||
}
|
||||
|
||||
/**
|
||||
* Execute the console command.
|
||||
*
|
||||
* @return int
|
||||
*/
|
||||
public function handle()
|
||||
{
|
||||
FetchObservers::dispatch();
|
||||
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,46 @@
|
||||
<?php
|
||||
|
||||
namespace App\Console\Commands\MiningTaxes;
|
||||
|
||||
use Illuminate\Console\Command;
|
||||
|
||||
use App\Jobs\Commands\MiningTaxes\ProcessMiningTaxesPayments as PMTP;
|
||||
|
||||
class ExecuteProcesssMiningTaxesPaymentsCommand extends Command
|
||||
{
|
||||
/**
|
||||
* The name and signature of the console command.
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
protected $signature = 'mt:payments';
|
||||
|
||||
/**
|
||||
* The console command description.
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
protected $description = 'Process Mining Taxes payments from the console.';
|
||||
|
||||
/**
|
||||
* Create a new command instance.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function __construct()
|
||||
{
|
||||
parent::__construct();
|
||||
}
|
||||
|
||||
/**
|
||||
* Execute the console command.
|
||||
*
|
||||
* @return int
|
||||
*/
|
||||
public function handle()
|
||||
{
|
||||
PMTP::dispatch();
|
||||
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,46 @@
|
||||
<?php
|
||||
|
||||
namespace App\Console\Commands\MiningTaxes;
|
||||
|
||||
use Illuminate\Console\Command;
|
||||
|
||||
use App\Jobs\Commands\MiningTaxes\MiningTaxesWeeklyInvoicing as SendInvoice;
|
||||
|
||||
class ExecuteSendMiningTaxesInvoiceCommand extends Command
|
||||
{
|
||||
/**
|
||||
* The name and signature of the console command.
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
protected $signature = 'mt:send';
|
||||
|
||||
/**
|
||||
* The console command description.
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
protected $description = 'Execute send mining tax invoices.';
|
||||
|
||||
/**
|
||||
* Create a new command instance.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function __construct()
|
||||
{
|
||||
parent::__construct();
|
||||
}
|
||||
|
||||
/**
|
||||
* Execute the console command.
|
||||
*
|
||||
* @return int
|
||||
*/
|
||||
public function handle()
|
||||
{
|
||||
SendInvoice::dispatch();
|
||||
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,42 @@
|
||||
<?php
|
||||
|
||||
namespace App\Console\Commands;
|
||||
|
||||
use Illuminate\Console\Command;
|
||||
|
||||
class ExecuteSendMoonRentalInvoices extends Command
|
||||
{
|
||||
/**
|
||||
* The name and signature of the console command.
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
protected $signature = 'mr:invoice';
|
||||
|
||||
/**
|
||||
* The console command description.
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
protected $description = 'Execute command to send moon rental invoices job';
|
||||
|
||||
/**
|
||||
* Create a new command instance.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function __construct()
|
||||
{
|
||||
parent::__construct();
|
||||
}
|
||||
|
||||
/**
|
||||
* Execute the console command.
|
||||
*
|
||||
* @return int
|
||||
*/
|
||||
public function handle()
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,110 @@
|
||||
<?php
|
||||
|
||||
namespace App\Console\Commands\MoonRental;
|
||||
|
||||
//Application Library
|
||||
use Illuminate\Console\Command;
|
||||
use Log;
|
||||
use Carbon\Carbon;
|
||||
|
||||
//Internal Library
|
||||
use App\Library\Moons\MoonCalc;
|
||||
use App\Library\Helpers\LookupHelper;
|
||||
|
||||
//Models
|
||||
use App\Models\MoonRental\AllianceMoon;
|
||||
use App\Models\MoonRental\AllianceMoonOre;
|
||||
|
||||
//Jobs
|
||||
use App\Jobs\Commands\MoonRental\UpdateAllianceMoonRentalWorth;
|
||||
|
||||
class ExecuteUpdateAllianceMoonRentalWorth extends Command
|
||||
{
|
||||
/**
|
||||
* The name and signature of the console command.
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
protected $signature = 'mr:worth';
|
||||
|
||||
/**
|
||||
* The console command description.
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
protected $description = 'Update alliance moon rental worth.';
|
||||
|
||||
/**
|
||||
* Create a new command instance.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function __construct()
|
||||
{
|
||||
parent::__construct();
|
||||
}
|
||||
|
||||
/**
|
||||
* Execute the console command.
|
||||
*
|
||||
* @return int
|
||||
*/
|
||||
public function handle()
|
||||
{
|
||||
UpdateAllianceMoonRentalWorth::dispatch();
|
||||
|
||||
/*
|
||||
//Declare variables
|
||||
$lookup = new LookupHelper;
|
||||
$mHelper = new MoonCalc;
|
||||
$months = 3;
|
||||
$rentalTax = 0.25;
|
||||
|
||||
$moons = AllianceMoon::all();
|
||||
|
||||
foreach($moons as $moon) {
|
||||
//Declare the arrays needed
|
||||
$ores = array();
|
||||
$worth = 0.00;
|
||||
|
||||
$ores = AllianceMoonOre::where([
|
||||
'moon_id' => $moon->moon_id,
|
||||
])->get(['ore_name', 'quantity'])->toArray();
|
||||
|
||||
if(sizeof($ores) == 1) {
|
||||
$ores[1]["ore_name"] = null;
|
||||
$ores[1]["quantity"] = 0.00;
|
||||
$ores[2]["ore_name"] = null;
|
||||
$ores[2]["quantity"] = 0.00;
|
||||
$ores[3]["ore_name"] = null;
|
||||
$ores[3]["quantity"] = 0.00;
|
||||
} else if(sizeof($ores) == 2) {
|
||||
$ores[2]["ore_name"] = null;
|
||||
$ores[2]["quantity"] = 0.00;
|
||||
$ores[3]["ore_name"] = null;
|
||||
$ores[3]["quantity"] = 0.00;
|
||||
} else if(sizeof($ores) == 3) {
|
||||
$ores[3]["ore_name"] = null;
|
||||
$ores[3]["quantity"] = 0.00;
|
||||
}
|
||||
|
||||
//one of these two ways will work
|
||||
$worth = $mHelper->MoonTotalWorth($ores[0]["ore_name"], $ores[0]["quantity"],
|
||||
$ores[1]["ore_name"], $ores[1]["quantity"],
|
||||
$ores[2]["ore_name"], $ores[2]["quantity"],
|
||||
$ores[3]["ore_name"], $ores[3]["quantity"]);
|
||||
|
||||
$rentalAmount = $worth * $rentalTax * $months;
|
||||
|
||||
AllianceMoon::where([
|
||||
'moon_id' => $moon->moon_id,
|
||||
])->update([
|
||||
'worth_amount' => $worth,
|
||||
'rental_amount' => $rentalAmount,
|
||||
]);
|
||||
}
|
||||
*/
|
||||
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
@@ -1,90 +0,0 @@
|
||||
<?php
|
||||
|
||||
namespace App\Console\Commands\Moons;
|
||||
|
||||
//Internal Library
|
||||
use Illuminate\Console\Command;
|
||||
use Carbon\Carbon;
|
||||
use Log;
|
||||
|
||||
//Jobs
|
||||
use App\Jobs\Commands\Moons\FetchMoonLedgerJob;
|
||||
use App\Jobs\Commands\Moons\FetchMoonObserverJob;
|
||||
|
||||
//Library
|
||||
use Commands\Library\CommandHelper;
|
||||
|
||||
//Models
|
||||
use App\Models\Esi\EsiScope;
|
||||
|
||||
class MoonsUpdateCommand extends Command
|
||||
{
|
||||
/**
|
||||
* The name and signature of the console command.
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
protected $signature = 'services:MoonUpdate';
|
||||
|
||||
/**
|
||||
* The console command description.
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
protected $description = 'Update all of the moons registered for observers and ledgers.';
|
||||
|
||||
/**
|
||||
* Create a new command instance.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function __construct()
|
||||
{
|
||||
parent::__construct();
|
||||
}
|
||||
|
||||
/**
|
||||
* Execute the console command.
|
||||
*
|
||||
* @return mixed
|
||||
*/
|
||||
public function handle()
|
||||
{
|
||||
//Declare variables
|
||||
$delay = 0;
|
||||
$characters = array();
|
||||
|
||||
//Create the new command helper container
|
||||
$task = new CommandHelper('MoonsUpdateCommand');
|
||||
//Set the task start status
|
||||
$task->SetStartStatus();
|
||||
|
||||
//Get all of the characters who have registered structures for moon ledgers
|
||||
$miningChars = EsiScope::where([
|
||||
'scope' => 'esi-industry.read_corporation_mining.v1',
|
||||
])->get();
|
||||
|
||||
foreach($miningChars as $mChars) {
|
||||
$universe = EsiScope::where([
|
||||
'character_id' => $mChars->character_id,
|
||||
'scope' => 'esi-universe.read_structures.v1',
|
||||
])->first();
|
||||
|
||||
if($universe != null) {
|
||||
array_push($characters, $universe->character_id);
|
||||
}
|
||||
}
|
||||
|
||||
//Cycle through each of the character Ids which have the correct scopes,
|
||||
//and dispatch jobs accordingly.
|
||||
foreach($characters as $charId) {
|
||||
//Fetch all of the corp observers with the job dispatch
|
||||
FetchMoonObserverJob::dispatch($charId);
|
||||
//Fetch all of the corp ledgers with the job dispatch
|
||||
FetchMoonLedgerJob::dispatch($charId);
|
||||
}
|
||||
|
||||
//Set task done status
|
||||
$task->SetStopStatus();
|
||||
}
|
||||
}
|
||||
@@ -1,63 +0,0 @@
|
||||
<?php
|
||||
|
||||
namespace App\Console\Commands\RentalMoons;
|
||||
|
||||
//Internal Library
|
||||
use Illuminate\Console\Command;
|
||||
use Log;
|
||||
use Carbon\Carbon;
|
||||
|
||||
//Library
|
||||
use Commands\Library\CommandHelper;
|
||||
|
||||
//Jobs
|
||||
use App\Jobs\Commands\RentalMoons\SendMoonRentalPaymentReminderJob;
|
||||
use App\Jobs\Commands\RentalMoons\UpdateMoonRentalPaidState;
|
||||
|
||||
class AllianceRentalMoonInvoiceCreationCommand extends Command
|
||||
{
|
||||
/**
|
||||
* The name and signature of the console command.
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
protected $signature = 'services:RentalInvoices';
|
||||
|
||||
/**
|
||||
* The console command description.
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
protected $description = 'Send out rental invoice reminders';
|
||||
|
||||
/**
|
||||
* Create a new command instance.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function __construct()
|
||||
{
|
||||
parent::__construct();
|
||||
}
|
||||
|
||||
/**
|
||||
* Execute the console command.
|
||||
*
|
||||
* @return mixed
|
||||
*/
|
||||
public function handle()
|
||||
{
|
||||
//Set the task as started
|
||||
$task = new CommandHelper('AllianceRentalInvoice');
|
||||
$task->SetStartStatus();
|
||||
|
||||
//Send the job for the invoice creation command
|
||||
SendMoonRentalPaymentReminderJob::dispatch()->delay(Carbon::now()->addSeconds(10));
|
||||
|
||||
//Update the paid state for the moons
|
||||
UpdateMoonRentalPaidState::dispatch()->delay(Carbon::now()->addSeconds(600));
|
||||
|
||||
//Set the task as stopped
|
||||
$task->SetStopStatus();
|
||||
}
|
||||
}
|
||||
@@ -1,56 +0,0 @@
|
||||
<?php
|
||||
|
||||
namespace App\Console\Commands\RentalMoons;
|
||||
|
||||
//Internal Library
|
||||
use Illuminate\Console\Command;
|
||||
use Log;
|
||||
|
||||
//Library
|
||||
use Commands\Library\CommandHelper;
|
||||
|
||||
//Job
|
||||
use App\Jobs\Commands\RentalMoons\UpdateMoonRentalPrice;
|
||||
|
||||
class AllianceRentalMoonUpdatePricingCommand extends Command
|
||||
{
|
||||
/**
|
||||
* The name and signature of the console command.
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
protected $signature = 'services:UpdateRentalPrice';
|
||||
|
||||
/**
|
||||
* The console command description.
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
protected $description = 'Update alliance rental moon prices.';
|
||||
|
||||
/**
|
||||
* Create a new command instance.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function __construct()
|
||||
{
|
||||
parent::__construct();
|
||||
}
|
||||
|
||||
/**
|
||||
* Execute the console command.
|
||||
*
|
||||
* @return mixed
|
||||
*/
|
||||
public function handle()
|
||||
{
|
||||
//Setup the task handler
|
||||
$task = new CommandHelper('AllianceRentalMoonPriceUpdater');
|
||||
$task->SetStartStatus();
|
||||
|
||||
UpdateMoonRentalPrice::dispatch();
|
||||
|
||||
$task->SetStopStatus();
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,46 @@
|
||||
<?php
|
||||
|
||||
namespace App\Console\Commands\Structures;
|
||||
|
||||
use Illuminate\Console\Command;
|
||||
|
||||
use App\Jobs\Commands\Assets\FetchAllianceAssets as FAA;
|
||||
|
||||
class ExecuteFetchAllianceAssetsCommand extends Command
|
||||
{
|
||||
/**
|
||||
* The name and signature of the console command.
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
protected $signature = 'structure:assets';
|
||||
|
||||
/**
|
||||
* The console command description.
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
protected $description = 'Execute fetch alliance command.';
|
||||
|
||||
/**
|
||||
* Create a new command instance.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function __construct()
|
||||
{
|
||||
parent::__construct();
|
||||
}
|
||||
|
||||
/**
|
||||
* Execute the console command.
|
||||
*
|
||||
* @return int
|
||||
*/
|
||||
public function handle()
|
||||
{
|
||||
FAA::dispatch();
|
||||
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,46 @@
|
||||
<?php
|
||||
|
||||
namespace App\Console\Commands\Structures;
|
||||
|
||||
use Illuminate\Console\Command;
|
||||
|
||||
use App\Jobs\Commands\Structures\FetchAllianceStructures as FAS;
|
||||
|
||||
class ExecuteFetchAllianceStructuresCommand extends Command
|
||||
{
|
||||
/**
|
||||
* The name and signature of the console command.
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
protected $signature = 'structure:structure';
|
||||
|
||||
/**
|
||||
* The console command description.
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
protected $description = 'Fetch alliance structures command.';
|
||||
|
||||
/**
|
||||
* Create a new command instance.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function __construct()
|
||||
{
|
||||
parent::__construct();
|
||||
}
|
||||
|
||||
/**
|
||||
* Execute the console command.
|
||||
*
|
||||
* @return int
|
||||
*/
|
||||
public function handle()
|
||||
{
|
||||
FAS::dispatch();
|
||||
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
@@ -1,114 +0,0 @@
|
||||
<?php
|
||||
|
||||
namespace App\Console\Commands\Structures;
|
||||
|
||||
use Illuminate\Console\Command;
|
||||
use Log;
|
||||
|
||||
//Library
|
||||
use App\Library\Structures\StructureHelper;
|
||||
use App\Library\Esi\Esi;
|
||||
use Commands\Library\CommandHelper;
|
||||
use Seat\Eseye\Exceptions\RequestFailedException;
|
||||
|
||||
//Job
|
||||
use App\Jobs\ProcessStructureJob;
|
||||
|
||||
//Models
|
||||
use App\Models\Esi\EsiScope;
|
||||
use App\Models\Esi\EsiToken;
|
||||
|
||||
class GetStructuresCommand extends Command
|
||||
{
|
||||
/**
|
||||
* The name and signature of the console command.
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
protected $signature = 'services:GetStructures';
|
||||
|
||||
/**
|
||||
* The console command description.
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
protected $description = 'Get the list of structures ';
|
||||
|
||||
/**
|
||||
* Create a new command instance.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function __construct()
|
||||
{
|
||||
parent::__construct();
|
||||
}
|
||||
|
||||
/**
|
||||
* Execute the console command.
|
||||
*
|
||||
* @return mixed
|
||||
*/
|
||||
public function handle()
|
||||
{
|
||||
//Create the command helper container
|
||||
$task = new CommandHelper('GetStructures');
|
||||
//Add the entry into the jobs table saying the job is starting
|
||||
$task->SetStartStatus();
|
||||
|
||||
//Get the esi config
|
||||
$config = config('esi');
|
||||
|
||||
//Declare some variables
|
||||
$charId = $config['primary'];
|
||||
$corpId = 98287666;
|
||||
$sHelper = new StructureHelper($charId, $corpId);
|
||||
$structures = null;
|
||||
|
||||
//ESI Scope Check
|
||||
$esiHelper = new Esi;
|
||||
$structureScope = $esiHelper->HaveEsiScope($charId, 'esi-universe.read_structures.v1');
|
||||
$corpStructureScope = $esiHelper->HaveEsiScope($charId, 'esi-corporations.read_structures.v1');
|
||||
|
||||
//Check scopes
|
||||
if($structureScope == false || $corpStructureScope == false) {
|
||||
if($structureScope == false) {
|
||||
Log::critical("Scope check for esi-universe.read_structures.v1 has failed.");
|
||||
}
|
||||
if($corpStructureScope == false) {
|
||||
Log::critical("Scope check for esi-corporations.read_structures.v1 has failed.");
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
//Get the refresh token from the database
|
||||
$token = $esiHelper->GetRefreshToken($charId);
|
||||
//Create the esi authentication container
|
||||
$esi = $esiHelper->SetupEsiAuthentication($token);
|
||||
|
||||
//Set the current page
|
||||
$currentPage = 1;
|
||||
//Set our default total pages, and we will refresh this later
|
||||
$totalPages = 1;
|
||||
|
||||
//Try to get the ESI data
|
||||
try {
|
||||
$structures = $esi->page($currentPage)
|
||||
->invoke('get', '/corporations/{corporation_id}/structures/', [
|
||||
'corporation_id' => $corpId,
|
||||
]);
|
||||
} catch (RequestFailedException $e) {
|
||||
Log::critical("Failed to get structure list.");
|
||||
return null;
|
||||
}
|
||||
|
||||
$totalPages = $structures->pages;
|
||||
|
||||
for($i = 1; $i <= $totalPages; $i++) {
|
||||
ProcessStructureJob::dispatch($charId, $corpId, $currentPage)->onQueue('structures');
|
||||
}
|
||||
|
||||
//Mark the job as finished
|
||||
$task->SetStopStatus();
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,61 @@
|
||||
<?php
|
||||
|
||||
namespace App\Console\Commands\SupplyChain;
|
||||
|
||||
//Internal Library
|
||||
use Illuminate\Console\Command;
|
||||
use Log;
|
||||
use Carbon\Carbon;
|
||||
|
||||
//Models
|
||||
use App\Models\Contracts\SupplyChainContract;
|
||||
|
||||
//Job
|
||||
use App\Jobs\Commands\SupplyChain\EndSupplyChainContractJob;
|
||||
|
||||
class EndSupplyChainContractCommand extends Command
|
||||
{
|
||||
/**
|
||||
* The name and signature of the console command.
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
protected $signature = 'services:supplychain';
|
||||
|
||||
/**
|
||||
* The console command description.
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
protected $description = 'Checks and ends any supply chain contracts needs to be closed.';
|
||||
|
||||
/**
|
||||
* Create a new command instance.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function __construct()
|
||||
{
|
||||
parent::__construct();
|
||||
}
|
||||
|
||||
/**
|
||||
* Execute the console command.
|
||||
*
|
||||
* @return mixed
|
||||
*/
|
||||
public function handle()
|
||||
{
|
||||
$today = Carbon::now();
|
||||
|
||||
//Get the supply chain contracts which are open, but need to be closed.
|
||||
$contracts = SupplyChainContract::where([
|
||||
'state' => 'open',
|
||||
])->where('end_date', '>', $today)->get();
|
||||
|
||||
//Create jobs to complete each contract
|
||||
foreach($contracts as $contract) {
|
||||
EndSupplyChainContractJob::dispatch($contract)->onQueue('default');
|
||||
}
|
||||
}
|
||||
}
|
||||
42
app/Console/Commands/TestCommand.php
Normal file
42
app/Console/Commands/TestCommand.php
Normal file
@@ -0,0 +1,42 @@
|
||||
<?php
|
||||
|
||||
namespace App\Console\Commands;
|
||||
|
||||
use Illuminate\Console\Command;
|
||||
|
||||
class TestCommand extends Command
|
||||
{
|
||||
/**
|
||||
* The name and signature of the console command.
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
protected $signature = 'command:name';
|
||||
|
||||
/**
|
||||
* The console command description.
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
protected $description = 'Command description';
|
||||
|
||||
/**
|
||||
* Create a new command instance.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function __construct()
|
||||
{
|
||||
parent::__construct();
|
||||
}
|
||||
|
||||
/**
|
||||
* Execute the console command.
|
||||
*
|
||||
* @return int
|
||||
*/
|
||||
public function handle()
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
@@ -1,203 +0,0 @@
|
||||
<?php
|
||||
|
||||
namespace App\Console\Commands\Users;
|
||||
|
||||
//Internal Library
|
||||
use Illuminate\Console\Command;
|
||||
use Log;
|
||||
|
||||
//Libraries
|
||||
use Seat\Eseye\Exceptions\RequestFailedException;
|
||||
use App\Library\Esi\Esi;
|
||||
use App\Library\Wiki\WikiHelper;
|
||||
|
||||
//Models
|
||||
use App\Models\User\User;
|
||||
use App\Models\User\UserAlt;
|
||||
use App\Models\Esi\EsiScope;
|
||||
use App\Models\Esi\EsiToken;
|
||||
use App\Models\User\UserPermission;
|
||||
use App\Models\User\UserRole;
|
||||
use App\Models\Admin\AllowedLogin;
|
||||
use App\Models\Doku\DokuMember;
|
||||
use App\Models\Doku\DokuUser;
|
||||
|
||||
|
||||
/**
|
||||
* The PurgeUsers command takes care of updating any user changes in terms of login role, as well as purging any users without at least
|
||||
* the 'User' role. This command heavily relies on ESI being available. If no ESI is available, then the function does nothing, in order to prevent
|
||||
* unwanted changes.
|
||||
*/
|
||||
class PurgeUsers extends Command
|
||||
{
|
||||
/**
|
||||
* The name and signature of the console command.
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
protected $signature = 'services:PurgeUsers';
|
||||
|
||||
/**
|
||||
* The console command description.
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
protected $description = 'Update and purge users from the database.';
|
||||
|
||||
/**
|
||||
* Create a new command instance.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function __construct()
|
||||
{
|
||||
parent::__construct();
|
||||
}
|
||||
|
||||
/**
|
||||
* Execute the console command.
|
||||
*
|
||||
* @return mixed
|
||||
*/
|
||||
public function handle()
|
||||
{
|
||||
//Declare some variables
|
||||
$esiHelper = new Esi;
|
||||
|
||||
//Setup the esi variable
|
||||
$esi = $esiHelper->SetupEsiAuthentication();
|
||||
|
||||
//Get all of the users from the database
|
||||
$users = User::all();
|
||||
|
||||
//Get the allowed logins
|
||||
$legacy = AllowedLogin::where(['login_type' => 'Legacy'])->pluck('entity_id')->toArray();
|
||||
$renter = AllowedLogin::where(['login_type' => 'Renter'])->pluck('entity_id')->toArray();
|
||||
|
||||
//Cycle through all of the users, and either update their role, or delete them.
|
||||
foreach($users as $user) {
|
||||
//Set the fail bit to false for the next user to check
|
||||
$failed = false;
|
||||
|
||||
//Note a screen entry for when doing cli stuff
|
||||
printf("Processing character with id of " . $user->character_id . "\r\n");
|
||||
|
||||
//Get the character information
|
||||
try {
|
||||
$character_info = $esi->invoke('get', '/characters/{character_id}/', [
|
||||
'character_id' => $user->character_id,
|
||||
]);
|
||||
|
||||
$corp_info = $esi->invoke('get', '/corporations/{corporation_id}/', [
|
||||
'corporation_id' => $character_info->corporation_id,
|
||||
]);
|
||||
} catch(RequestFailedException $e) {
|
||||
Log::warning('Failed to get character information in purge user command for user ' . $user->character_id);
|
||||
$failed = true;
|
||||
}
|
||||
|
||||
//If the fail bit is still false, then continue
|
||||
if($failed === false) {
|
||||
//Get the user's role
|
||||
$role = UserRole::where(['character_id' => $user->character_id])->first();
|
||||
|
||||
//We don't want to modify Admin and SuperUsers. Admins and SuperUsers are removed via a different process.
|
||||
if($role->role != 'Admin') {
|
||||
//Check if the user is allowed to login
|
||||
if(isset($corp_info->alliance_id)) {
|
||||
//Warped Intentions is allowed to login
|
||||
if($corp_info->alliance_id == '99004116') {
|
||||
//If the alliance is Warped Intentions, then modify the role if we need to
|
||||
if($role->role != 'User') {
|
||||
//Upate the role of the user
|
||||
UserRole::where([
|
||||
'character_id' => $user->character_id,
|
||||
])->update([
|
||||
'role' => 'User',
|
||||
]);
|
||||
|
||||
//Update the user type
|
||||
User::where([
|
||||
'character_id' => $user->character_id,
|
||||
])->update([
|
||||
'user_type' => 'W4RP',
|
||||
]);
|
||||
}
|
||||
} else if(in_array($corp_info->alliance_id, $legacy)) { //Legacy Users
|
||||
if($role->role != 'User') {
|
||||
//Update the role of the user
|
||||
UserRole::where([
|
||||
'character_id' => $user->character_id,
|
||||
])->update([
|
||||
'role' => 'User',
|
||||
]);
|
||||
|
||||
//Update the user type
|
||||
User::where([
|
||||
'character_id' => $user->character_id,
|
||||
])->update([
|
||||
'user_type' => 'Legacy',
|
||||
]);
|
||||
}
|
||||
} else if(in_array($corp_info->alliance_id, $renter)) { //Renter Users
|
||||
if($role->role != 'Renter') {
|
||||
//Update the role of the user
|
||||
UserRole::where([
|
||||
'character_id' => $user->character_id,
|
||||
])->update([
|
||||
'role' => 'Renter',
|
||||
]);
|
||||
|
||||
//Update the user type
|
||||
User::where([
|
||||
'character_id' => $user->character_id,
|
||||
])->update([
|
||||
'user_type' => 'Renter',
|
||||
]);
|
||||
}
|
||||
} else {
|
||||
//If the user is part of no valid login group, then delete the user.
|
||||
//Delete all of the permissions first
|
||||
UserPermission::where([
|
||||
'character_id' => $user->character_id,
|
||||
])->delete();
|
||||
|
||||
//Delete the user's role
|
||||
UserRole::where([
|
||||
'character_id' => $user->character_id,
|
||||
])->delete();
|
||||
|
||||
//Delete any alts the user might have registered.
|
||||
$altCount = UserAlt::where(['main_id' => $user->character_id])->count();
|
||||
if($altCount > 0) {
|
||||
UserAlt::where([
|
||||
'main_id' => $user->character_id,
|
||||
])->delete();
|
||||
}
|
||||
|
||||
//Delete the user from the user table
|
||||
User::where([
|
||||
'character_id' => $user->character_id,
|
||||
])->delete();
|
||||
|
||||
EsiScope::where([
|
||||
'character_id' => $user->character_id,
|
||||
])->delete();
|
||||
|
||||
EsiToken::where([
|
||||
'character_id' => $user->character_id,
|
||||
])->delete();
|
||||
|
||||
//Delete the user from the wiki
|
||||
$wikiHelper = new WikiHelper;
|
||||
|
||||
//Get the uid from the wiki tables utilizing the character's name
|
||||
$uid = DokuUser::where(['name' => $user->name])->first();
|
||||
$wikiHelper->DeleteWikiUser($uid);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,50 +0,0 @@
|
||||
<?php
|
||||
|
||||
namespace App\Console\Commands\Wormholes;
|
||||
|
||||
//Internal Library
|
||||
use Illuminate\Console\Command;
|
||||
use Carbon\Carbon;
|
||||
|
||||
//Models
|
||||
use App\Models\Wormholes\AllianceWormhole;
|
||||
|
||||
class PurgeWormholes extends Command
|
||||
{
|
||||
/**
|
||||
* The name and signature of the console command.
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
protected $signature = 'services:PurgeWormholeData';
|
||||
|
||||
/**
|
||||
* The console command description.
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
protected $description = 'Purge stale wormhole data automatically';
|
||||
|
||||
/**
|
||||
* Create a new command instance.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function __construct()
|
||||
{
|
||||
parent::__construct();
|
||||
}
|
||||
|
||||
/**
|
||||
* Execute the console command.
|
||||
*
|
||||
* @return mixed
|
||||
*/
|
||||
public function handle()
|
||||
{
|
||||
//Time of now
|
||||
$currentTime = Carbon::now();
|
||||
|
||||
AllianceWormhole::where('created_at', '<', $currentTime->subHours(48))->delete();
|
||||
}
|
||||
}
|
||||
@@ -6,8 +6,21 @@ namespace App\Console;
|
||||
use Illuminate\Console\Scheduling\Schedule;
|
||||
use Illuminate\Foundation\Console\Kernel as ConsoleKernel;
|
||||
|
||||
//Library
|
||||
use Commands\Library\CommandHelper;
|
||||
//Jobs
|
||||
use App\Jobs\Commands\MiningTaxes\PreFetchMiningTaxesLedgers;
|
||||
use App\Jobs\Commands\MiningTaxes\FetchMiningTaxesObservers;
|
||||
use App\Jobs\Commands\MiningTaxes\ProcessMiningTaxesPayments;
|
||||
use App\Jobs\Commands\MiningTaxes\Invoices\UpdateMiningTaxesLateInvoices1st;
|
||||
use App\Jobs\Commands\MiningTaxes\Invoices\UpdateMiningTaxesLateInvoices15th;
|
||||
use App\Jobs\Commands\MiningTaxes\MiningTaxesWeeklyInvoicing;
|
||||
use App\Jobs\Commands\Finances\UpdateAllianceWalletJournalJob;
|
||||
use App\Jobs\Commands\Finances\UpdateItemPrices as UpdateItemPricesJob;
|
||||
use App\Jobs\Commands\Data\PurgeUsers as PurgeUsersJob;
|
||||
use App\Jobs\Commands\Structures\FetchAllianceStructures;
|
||||
use App\Jobs\Commands\Structures\PurgeAllianceStructures;
|
||||
use App\Jobs\Commands\Assets\FetchAllianceAssets;
|
||||
use App\Jobs\Commands\Assets\PurgeAllianceAssets;
|
||||
use App\Jobs\Commands\MoonRental\UpdateAllianceMoonRentalWorth as UpdateAMRW;
|
||||
|
||||
class Kernel extends ConsoleKernel
|
||||
{
|
||||
@@ -17,23 +30,18 @@ class Kernel extends ConsoleKernel
|
||||
* @var array
|
||||
*/
|
||||
protected $commands = [
|
||||
Commands\Corps\GetCorpsCommand::class,
|
||||
Commands\Finances\HoldingFinancesCommand::class,
|
||||
Commands\Structures\GetStructuresCommand::class,
|
||||
Commands\Assets\GetAssetsCommand::class,
|
||||
Commands\Users\PurgeUsers::class,
|
||||
Commands\Flex\FlexStructureCommand::class,
|
||||
Commands\Data\EmptyJumpBridges::class,
|
||||
Commands\Wormholes\PurgeWormholes::class,
|
||||
Commands\Finances\SovBillsCommand::class,
|
||||
Commands\Data\CleanStaleDataCommand::class,
|
||||
Commands\Moons\MoonsUpdateCommand::class,
|
||||
Commands\Data\PurgeCorpMoonLedgers::class,
|
||||
/**
|
||||
* Rental Moon Commands
|
||||
*/
|
||||
Commands\RentalMoons\AllianceRentalMoonInvoiceCreationCommand::class,
|
||||
Commands\RentalMoons\AllianceRentalMoonUpdatePricingCommand::class,
|
||||
Commands\Data\PurgeUsers::class,
|
||||
Commands\Data\Test::class,
|
||||
Commands\Eve\ItemPricesUpdateCommand::class,
|
||||
Commands\Finances\UpdateAllianceWalletJournal::class,
|
||||
Commands\MiningTaxes\ExecuteMiningTaxesObserversCommand::class,
|
||||
Commands\MiningTaxes\ExecuteMiningTaxesLedgersCommand::class,
|
||||
Commands\MiningTaxes\ExecuteSendMiningTaxesInvoiceCommand::class,
|
||||
Commands\MiningTaxes\ExecuteProcesssMiningTaxesPaymentsCommand::class,
|
||||
Commands\Structures\ExecuteFetchAllianceStructuresCommand::class,
|
||||
Commands\Structures\ExecuteFetchAllianceAssetsCommand::class,
|
||||
Commands\Files\ImportAllianceMoons::class,
|
||||
Commands\MoonRental\ExecuteUpdateAllianceMoonRentalWorth::class,
|
||||
];
|
||||
|
||||
/**
|
||||
@@ -44,49 +52,74 @@ class Kernel extends ConsoleKernel
|
||||
*/
|
||||
protected function schedule(Schedule $schedule)
|
||||
{
|
||||
//Schedule Monitor Jobs
|
||||
$schedule->command('schedule-monitor:sync')->dailyAt('04:56');
|
||||
$schedule->command('schedule-monitor:clean')->daily();
|
||||
|
||||
//Horizon Graph Schedule
|
||||
$schedule->command('horizon:snapshot')->everyFiveMinutes();
|
||||
|
||||
/**
|
||||
* Rentals / Flex Schedule
|
||||
*/
|
||||
$schedule->command('services:UpdateRentalPrice')
|
||||
->dailyAt('11:00')
|
||||
->withoutOverlapping();
|
||||
$schedule->command('services:FlexStructures')
|
||||
->monthlyOn(2, '00:01');
|
||||
|
||||
/**
|
||||
* Holding Corp Finance Schedule
|
||||
*/
|
||||
$schedule->command('services:HoldingJournal')
|
||||
->hourlyAt('45')
|
||||
->withoutOverlapping();
|
||||
//$schedule->command('services:GetFinances')
|
||||
// ->hourlyAt('35')
|
||||
// ->withoutOverlapping();
|
||||
|
||||
/**
|
||||
* Get Information Schedule
|
||||
*/
|
||||
$schedule->command('services:GetCorps')
|
||||
->monthlyOn(1, '09:00');
|
||||
$schedule->command('services:GetStructures')
|
||||
->dailyAt('09:00');
|
||||
$schedule->command('services:GetAssets')
|
||||
->hourlyAt('22');
|
||||
|
||||
/**
|
||||
* Purge Data Schedule
|
||||
*/
|
||||
$schedule->command('services:PurgeWormholeData')
|
||||
->hourlyAt(20);
|
||||
$schedule->command('services:CleanData')
|
||||
->weekly(7, '11:00');
|
||||
$schedule->command('data:PurgeCorpLedgers')
|
||||
->monthly();
|
||||
$schedule->command('services:PurgeUsers')
|
||||
->dailyAt('23:00');
|
||||
$schedule->job(new PurgeUsersJob)
|
||||
->weekly();
|
||||
|
||||
/**
|
||||
* Finances Update Schedule
|
||||
*/
|
||||
$schedule->job(new UpdateAllianceWalletJournalJob)
|
||||
->hourlyAt('45')
|
||||
->withoutOverlapping();
|
||||
|
||||
/**
|
||||
* Item Update Schedule
|
||||
*/
|
||||
$schedule->job(new UpdateItemPricesJob)
|
||||
->hourlyAT('30')
|
||||
->withoutOverlapping();
|
||||
|
||||
/**
|
||||
* Mining Tax Schedule
|
||||
*/
|
||||
$schedule->job(new FetchMiningTaxesObservers)
|
||||
->dailyAt('20:00')
|
||||
->withoutOverlapping();
|
||||
$schedule->job(new PreFetchMiningTaxesLedgers)
|
||||
->dailyAt('22:00')
|
||||
->withoutOverlapping();
|
||||
$schedule->job(new MiningTaxesWeeklyInvoicing)
|
||||
->weeklyOn(1, '06:00')
|
||||
->withoutOverlapping();
|
||||
$schedule->job(new ProcessMiningTaxesPayments)
|
||||
->hourlyAt('15')
|
||||
->withoutOverlapping();
|
||||
$schedule->job(new UpdateMiningTaxesLateInvoices1st)
|
||||
->monthlyOn(1, '16:00')
|
||||
->withoutOverlapping();
|
||||
$schedule->job(new UpdateMiningTaxesLateInvoices15th)
|
||||
->monthlyOn(15, '16:00')
|
||||
->withoutOverlapping();
|
||||
$schedule->job(new UpdateAMRW)
|
||||
->dailyAt('13:00')
|
||||
->withoutOverlapping();
|
||||
|
||||
/**
|
||||
* Alliance Structure and Assets Schedule
|
||||
*/
|
||||
$schedule->job(new FetchAllianceStructures)
|
||||
->dailyAt('21:00')
|
||||
->withoutOverlapping();
|
||||
$schedule->job(new FetchAllianceAssets)
|
||||
->hourlyAt('15')
|
||||
->withoutOverlapping();
|
||||
$schedule->job(new PurgeAllianceStructures)
|
||||
->monthlyOn(2, '14:00')
|
||||
->withoutOverlapping();
|
||||
$schedule->job(new PurgeAllianceAssets)
|
||||
->monthlyOn(2, '15:00')
|
||||
->withoutOverlapping();
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -100,4 +133,14 @@ class Kernel extends ConsoleKernel
|
||||
|
||||
require base_path('routes/console.php');
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the timezone that should be used by default for scheduled events.
|
||||
*
|
||||
* @return \DateTimeZone|string|null
|
||||
*/
|
||||
protected function scheduleTimezone()
|
||||
{
|
||||
return 'UTC';
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2,7 +2,8 @@
|
||||
|
||||
namespace App\Exceptions;
|
||||
|
||||
use Exception;
|
||||
//use Exception;
|
||||
use Throwable;
|
||||
use Illuminate\Foundation\Exceptions\Handler as ExceptionHandler;
|
||||
|
||||
class Handler extends ExceptionHandler
|
||||
@@ -32,7 +33,7 @@ class Handler extends ExceptionHandler
|
||||
* @param \Exception $exception
|
||||
* @return void
|
||||
*/
|
||||
public function report(Exception $exception)
|
||||
public function report(Throwable $exception)
|
||||
{
|
||||
parent::report($exception);
|
||||
}
|
||||
@@ -44,7 +45,7 @@ class Handler extends ExceptionHandler
|
||||
* @param \Exception $exception
|
||||
* @return \Illuminate\Http\Response
|
||||
*/
|
||||
public function render($request, Exception $exception)
|
||||
public function render($request, Throwable $exception)
|
||||
{
|
||||
return parent::render($request, $exception);
|
||||
}
|
||||
|
||||
@@ -0,0 +1,30 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers\AfterActionReports;
|
||||
|
||||
use App\Http\Controllers\Controller;
|
||||
use Illuminate\Http\Request;
|
||||
|
||||
class AfterActionReportsAdminController extends Controller
|
||||
{
|
||||
public function __construct() {
|
||||
$this->middleware('auth');
|
||||
$this->middleware('permission:fc.lead');
|
||||
}
|
||||
|
||||
public function DeleteReport() {
|
||||
|
||||
}
|
||||
|
||||
public function DeleteComment() {
|
||||
|
||||
}
|
||||
|
||||
public function PruneReports() {
|
||||
|
||||
}
|
||||
|
||||
public function DisplayStastics() {
|
||||
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,87 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers\AfterActionReports;
|
||||
|
||||
//Internal Library
|
||||
use App\Http\Controllers\Controller;
|
||||
use Illuminate\Http\Request;
|
||||
use Carbon\Carbon;
|
||||
|
||||
//Models
|
||||
use App\Models\AfterActionReports\AfterActionReport;
|
||||
use App\Models\AfterActionReports\AfterActionReportComment;
|
||||
|
||||
class AfterActionReportsController extends Controller
|
||||
{
|
||||
public function __contstruct() {
|
||||
$this->middleware('auth');
|
||||
$this->middleware('permission:fc.team');
|
||||
}
|
||||
|
||||
public function DisplayReportForm() {
|
||||
return view('reports.user.form.report');
|
||||
}
|
||||
|
||||
public function StoreReport(Request $request) {
|
||||
$this->validate($request, [
|
||||
'location' => 'required',
|
||||
'time' => 'required',
|
||||
'comms' => 'required',
|
||||
'doctrine' => 'required',
|
||||
'objective' => 'required',
|
||||
'result' => 'required',
|
||||
'summary' => 'required',
|
||||
'improvements' => 'required',
|
||||
'well' => 'required',
|
||||
'comments' => 'required',
|
||||
]);
|
||||
|
||||
$report = new AfterActionReport;
|
||||
$report->fc_id = auth()->user()->getId();
|
||||
$report->fc_name = auth()->user()->getName();
|
||||
$report->formup_time = $request->time;
|
||||
$report->formup_location = $request->location;
|
||||
$report->comms = $request->comms;
|
||||
$report->doctrine = $request->doctrine;
|
||||
$report->objective = $request->objective;
|
||||
$report->objective_result = $request->result;
|
||||
$report->summary = $request->summary;
|
||||
$report->improvements = $request->improvements;
|
||||
$report->worked_well = $request->well;
|
||||
$report->additonal_comments = $request->comments;
|
||||
$report->save();
|
||||
|
||||
return redirect('/reports/display/all')->with('success', 'Added report to the database.');
|
||||
}
|
||||
|
||||
public function DisplayCommentForm($id) {
|
||||
return view('reports.user.form.comment')->with('id', $id);
|
||||
}
|
||||
|
||||
public function StoreComment(Request $request) {
|
||||
$this->validate($request, [
|
||||
'reportId' => 'required',
|
||||
'comments' => 'required',
|
||||
]);
|
||||
|
||||
$comment = new AfterActionReportComment;
|
||||
$comment->report_id = $request->reportId;
|
||||
$comment->character_id = auth()->user()->getId();
|
||||
$comment->character_name = auth()->user()->getName();
|
||||
$comment->comments = $required->comments;
|
||||
$comment->save();
|
||||
|
||||
return redirect('/reports/display/all')->with('success', 'Added comemnt to the report.');
|
||||
}
|
||||
|
||||
public function DisplayAllReports() {
|
||||
//Grab all the reports
|
||||
$reports = AfterActionReport::where('created_at', '>=', Carbon::now()->subDays(30));
|
||||
$comments = AfterActionReportComment::where('created_at', '>=', Carbon::now()->subDays(30));
|
||||
$reportCount = AfterActionReport::where('created_at', '>=', Carbon::now()->subDays(30))->count();
|
||||
|
||||
return view('reports.user.displayreports')->with('reports', $reports)
|
||||
->with('comments', $comments)
|
||||
->with('reportCount', $reportCount);
|
||||
}
|
||||
}
|
||||
@@ -6,13 +6,15 @@ namespace App\Http\Controllers\Auth;
|
||||
use App\Http\Controllers\Controller;
|
||||
use Illuminate\Foundation\Auth\AuthenticatesUsers;
|
||||
use Illuminate\Http\Request;
|
||||
use Socialite;
|
||||
use Auth;
|
||||
use Laravel\Socialite\Contracts\Factory as Socialite;
|
||||
use Laravel\Socialite\Two\User as SocialiteUser;
|
||||
|
||||
//Library
|
||||
use Seat\Eseye\Cache\NullCache;
|
||||
use Seat\Eseye\Configuration;
|
||||
use App\Library\Esi\Esi;
|
||||
use App\Library\Helpers\LookupHelper;
|
||||
|
||||
//Models
|
||||
use App\Models\User\User;
|
||||
@@ -73,50 +75,80 @@ class LoginController extends Controller
|
||||
*
|
||||
* @return Socialite
|
||||
*/
|
||||
public function redirectToProvider() {
|
||||
return Socialite::driver('eveonline')->redirect();
|
||||
public function redirectToProvider($profile = null, Socialite $social) {
|
||||
//The default scope is public data for everyone due to OAuth2 Tokens
|
||||
//We also add the send mail scope in order to be able to send mails more efficiently through jobs when other scopes are required.
|
||||
$scopes = ['publicData', 'esi-mail.send_mail.v1'];
|
||||
|
||||
//Collect any other scopes we need if we are logged in.
|
||||
//If we are logged in we are linking another character to this one.
|
||||
//Attempt to use the same scopes for this character as the original one
|
||||
if(Auth::check()) {
|
||||
$extraScopes = EsiScope::where([
|
||||
'character_id' => auth()->user()->getId(),
|
||||
])->get(['scope']);
|
||||
|
||||
//Pop each scope onto the array of scopes
|
||||
foreach($extraScopes as $extra) {
|
||||
array_push($scopes, $extra->scope);
|
||||
}
|
||||
|
||||
/**
|
||||
* Place the scopes in the session.
|
||||
* Place the original character id in the session.
|
||||
*/
|
||||
session()->put('scopes', $scopes);
|
||||
session()->put('orgCharacter', auth()->user()->getId());
|
||||
}
|
||||
|
||||
return $social->driver('eveonline')
|
||||
->scopes($scopes)
|
||||
->redirect();
|
||||
}
|
||||
|
||||
/**
|
||||
* Get token from callback
|
||||
* Redirect to the dashboard if logging in successfully.
|
||||
*/
|
||||
public function handleProviderCallback() {
|
||||
public function handleProviderCallback(Socialite $social) {
|
||||
//Get the sso user from the socialite driver
|
||||
$ssoUser = Socialite::driver('eveonline')->user();
|
||||
$ssoUser = $social->driver('eveonline')->user();
|
||||
|
||||
$scpSession = session()->pull('scopes');
|
||||
|
||||
//If the user was already logged in, let's do some checks to see if we are adding
|
||||
//additional scopes to the user's account
|
||||
if(Auth::check()) {
|
||||
//If a refresh token is present, then we are doing a scope callback
|
||||
//to update scopes for an access token
|
||||
//If we are logged in already and the session contains the original characters, then we are creating an alt
|
||||
//for the original character
|
||||
if(session()->has('orgCharacter')) {
|
||||
$orgCharacter = session()->pull('orgCharacter');
|
||||
|
||||
if(isset($ssoUser->refreshToken)) {
|
||||
//See if an access token is present already
|
||||
$tokenCount = EsiToken::where('character_id', $ssoUser->id)->count();
|
||||
if($tokenCount > 0) {
|
||||
//Update the esi token
|
||||
$this->UpdateEsiToken($ssoUser);
|
||||
} else {
|
||||
//Save the ESI token
|
||||
$this->SaveEsiToken($ssoUser);
|
||||
}
|
||||
|
||||
//After creating the token, we need to update the table for scopes
|
||||
$this->SetScopes($ssoUser->user['Scopes'], $ssoUser->id);
|
||||
|
||||
return redirect()->to('/dashboard')->with('success', 'Successfully updated ESI Scopes.');
|
||||
} else {
|
||||
$created = $this->createAlt($ssoUser);
|
||||
if($created == 1) {
|
||||
if($this->createAlt($ssoUser, $orgCharacter)) {
|
||||
return redirect()->to('/profile')->with('success', 'Alt registered.');
|
||||
} else {
|
||||
return redirect()->to('/profile')->with('error', 'Alt was previously registered.');
|
||||
return redirect()->to('/profile')->with('error', 'Unable to register alt or it was previously registered.');
|
||||
}
|
||||
} else {
|
||||
if(sizeof($ssoUser->scopes) > 1) {
|
||||
$tokenCount = EsiToken::where([
|
||||
'character_id' => $ssoUser->id,
|
||||
])->count();
|
||||
if($tokenCount > 0) {
|
||||
$this->UpdateEsiToken($ssoUser);
|
||||
} else {
|
||||
$this->SaveEsiToken($ssoUser);
|
||||
}
|
||||
$this->SetScopes($ssoUser->scopes, $ssoUser->id);
|
||||
return redirect()->to('/dashboard')->with('success', 'Successfully updated ESI scopes.');
|
||||
}
|
||||
}
|
||||
} else {
|
||||
//If the user wasn't logged in, then create a new user
|
||||
$user = $this->createOrGetUser($ssoUser);
|
||||
|
||||
//Login in the new user
|
||||
auth()->login($user, true);
|
||||
|
||||
//Redirect back to the dashboard
|
||||
return redirect()->to('/dashboard')->with('success', 'Successfully Logged In.');
|
||||
}
|
||||
}
|
||||
@@ -127,12 +159,19 @@ class LoginController extends Controller
|
||||
*
|
||||
* @param \Laravel\Socialite\Two\User $user
|
||||
*/
|
||||
private function createAlt($user) {
|
||||
$altCount = UserAlt::where('character_id', $user->id)->count();
|
||||
if($altCount == 0) {
|
||||
private function createAlt($user, $orgCharacter) {
|
||||
//Check to see if the alt is already in the database
|
||||
$altCount = UserAlt::where(['character_id' => $user->id])->count();
|
||||
|
||||
//Check to see if the new character being added is already a main character
|
||||
$mainCount = User::where(['character_id' => $user->id])->count();
|
||||
|
||||
//If not already in the database, then add the new character
|
||||
if($altCount == 0 && $mainCount == 0) {
|
||||
//Create the new alt in the table
|
||||
$newAlt = new UserAlt;
|
||||
$newAlt->name = $user->getName();
|
||||
$newAlt->main_id = auth()->user()->getId();
|
||||
$newAlt->main_id = $orgCharacter;
|
||||
$newAlt->character_id = $user->id;
|
||||
$newAlt->avatar = $user->avatar;
|
||||
$newAlt->access_token = $user->token;
|
||||
@@ -140,8 +179,22 @@ class LoginController extends Controller
|
||||
$newAlt->inserted_at = time();
|
||||
$newAlt->expires_in = $user->expiresIn;
|
||||
$newAlt->save();
|
||||
|
||||
//Create the entry into the EsiToken table
|
||||
if(EsiToken::where(['character_id' => $user->id])->count() == 0) {
|
||||
$this->SaveEsiToken($user);
|
||||
} else {
|
||||
$this->UpdateEsiToken($user);
|
||||
}
|
||||
|
||||
//Create the entry into the EsiScopes table
|
||||
if(sizeof($user->scopes) > 1) {
|
||||
$this->SetScopes($user->scopes, $user->id);
|
||||
}
|
||||
//Return the successfull conclusion of the function
|
||||
return 1;
|
||||
} else {
|
||||
//Return the unsuccessfull conclusion of the function
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
@@ -152,44 +205,48 @@ class LoginController extends Controller
|
||||
*
|
||||
* @param \Laravel\Socialite\Two\User $user
|
||||
*/
|
||||
private function createOrGetUser($eve_user) {
|
||||
private function createOrGetUser($eveUser) {
|
||||
$authUser = null;
|
||||
|
||||
//Search to see if we have a matching user in the database.
|
||||
//At this point we don't care about the information
|
||||
$userCount = User::where('character_id', $eve_user->id)->count();
|
||||
$userCount = User::where([
|
||||
'character_id' => $eveUser->id,
|
||||
])->count();
|
||||
|
||||
//If the user is found, do more checks to see what type of login we are doing
|
||||
if($userCount > 0) {
|
||||
//Search for user in the database
|
||||
$authUser = User::where('character_id', $eve_user->id)->first();
|
||||
$authUser = User::where([
|
||||
'character_id' => $eveUser->id,
|
||||
])->first();
|
||||
|
||||
//Check to see if the owner has changed
|
||||
//If the owner has changed, then update their roles and permissions
|
||||
if($this->OwnerHasChanged($authUser->owner_hash, $eve_user->owner_hash)) {
|
||||
if($this->OwnerHasChanged($authUser->owner_hash, $eveUser->owner_hash)) {
|
||||
//Get the right role for the user
|
||||
$role = $this->GetRole(null, $eve_user->id);
|
||||
$role = $this->GetRole(null, $eveUser->id);
|
||||
//Set the role for the user
|
||||
$this->SetRole($role, $eve_user->id);
|
||||
$this->SetRole($role, $eveUser->id);
|
||||
|
||||
//Update the user information never the less.
|
||||
$this->UpdateUser($eve_user, $role);
|
||||
$this->UpdateUser($eveUser, $role);
|
||||
|
||||
//Update the user's roles and permission
|
||||
$this->UpdatePermission($eve_user, $role);
|
||||
$this->UpdatePermission($eveUser, $role);
|
||||
}
|
||||
|
||||
//Return the user to the calling auth function
|
||||
return $authUser;
|
||||
} else {
|
||||
//Get the role for the character to be stored in the database
|
||||
$role = $this->GetRole(null, $eve_user->id);
|
||||
$role = $this->GetRole(null, $eveUser->id);
|
||||
|
||||
//Create the user account
|
||||
$user = $this->CreateNewUser($eve_user);
|
||||
$user = $this->CreateNewUser($eveUser);
|
||||
|
||||
//Set the role for the user
|
||||
$this->SetRole($role, $eve_user->id);
|
||||
$this->SetRole($role, $eveUser->id);
|
||||
|
||||
//Create a user account
|
||||
return $user;
|
||||
@@ -199,45 +256,45 @@ class LoginController extends Controller
|
||||
/**
|
||||
* Update the ESI Token
|
||||
*/
|
||||
private function UpdateEsiToken($eve_user) {
|
||||
EsiToken::where('character_id', $eve_user->id)->update([
|
||||
'character_id' => $eve_user->getId(),
|
||||
'access_token' => $eve_user->token,
|
||||
'refresh_token' => $eve_user->refreshToken,
|
||||
private function UpdateEsiToken($eveUser) {
|
||||
EsiToken::where('character_id', $eveUser->id)->update([
|
||||
'character_id' => $eveUser->getId(),
|
||||
'access_token' => $eveUser->token,
|
||||
'refresh_token' => $eveUser->refreshToken,
|
||||
'inserted_at' => time(),
|
||||
'expires_in' => $eve_user->expiresIn,
|
||||
'expires_in' => $eveUser->expiresIn,
|
||||
]);
|
||||
}
|
||||
|
||||
/**
|
||||
* Create a new ESI Token in the database
|
||||
*/
|
||||
private function SaveEsiToken($eve_user) {
|
||||
private function SaveEsiToken($eveUser) {
|
||||
$token = new EsiToken;
|
||||
$token->character_id = $eve_user->id;
|
||||
$token->access_token = $eve_user->token;
|
||||
$token->refresh_token = $eve_user->refreshToken;
|
||||
$token->character_id = $eveUser->id;
|
||||
$token->access_token = $eveUser->token;
|
||||
$token->refresh_token = $eveUser->refreshToken;
|
||||
$token->inserted_at = time();
|
||||
$token->expires_in = $eve_user->expiresIn;
|
||||
$token->expires_in = $eveUser->expiresIn;
|
||||
$token->save();
|
||||
}
|
||||
|
||||
/**
|
||||
* Update avatar
|
||||
*/
|
||||
private function UpdateAvatar($eve_user) {
|
||||
User::where('character_id', $eve_user->id)->update([
|
||||
'avatar' => $eve_user->avatar,
|
||||
private function UpdateAvatar($eveUser) {
|
||||
User::where('character_id', $eveUser->id)->update([
|
||||
'avatar' => $eveUser->avatar,
|
||||
]);
|
||||
}
|
||||
|
||||
/**
|
||||
* Update user permission
|
||||
*/
|
||||
private function UpdatePermission($eve_user, $role) {
|
||||
UserPermission::where(['character_id' => $eve_user->id])->delete();
|
||||
private function UpdatePermission($eveUser, $role) {
|
||||
UserPermission::where(['character_id' => $eveUser->id])->delete();
|
||||
$perm = new UserPermission();
|
||||
$perm->character_id = $eve_user->id;
|
||||
$perm->character_id = $eveUser->id;
|
||||
$perm->permission = $role;
|
||||
$perm->save();
|
||||
}
|
||||
@@ -245,10 +302,10 @@ class LoginController extends Controller
|
||||
/**
|
||||
* Update the user
|
||||
*/
|
||||
private function UpdateUser($eve_user, $role) {
|
||||
User::where('character_id', $eve_user->id)->update([
|
||||
'avatar' => $eve_user->avatar,
|
||||
'owner_hash' => $eve_user->owner_hash,
|
||||
private function UpdateUser($eveUser, $role) {
|
||||
User::where('character_id', $eveUser->id)->update([
|
||||
'avatar' => $eveUser->avatar,
|
||||
'owner_hash' => $eveUser->owner_hash,
|
||||
'role' => $role,
|
||||
]);
|
||||
}
|
||||
@@ -256,18 +313,42 @@ class LoginController extends Controller
|
||||
/**
|
||||
* Create a new user account
|
||||
*/
|
||||
private function CreateNewUser($eve_user) {
|
||||
private function CreateNewUser($eveUser) {
|
||||
$user = User::create([
|
||||
'name' => $eve_user->getName(),
|
||||
'avatar' => $eve_user->avatar,
|
||||
'owner_hash' => $eve_user->owner_hash,
|
||||
'character_id' => $eve_user->getId(),
|
||||
'name' => $eveUser->getName(),
|
||||
'avatar' => $eveUser->avatar,
|
||||
'owner_hash' => $eveUser->owner_hash,
|
||||
'character_id' => $eveUser->getId(),
|
||||
'inserted_at' => time(),
|
||||
'expires_in' => $eve_user->expiresIn,
|
||||
'access_token' => $eve_user->token,
|
||||
'user_type' => $this->GetAccountType(null, $eve_user->id),
|
||||
'expires_in' => $eveUser->expiresIn,
|
||||
'user_type' => $this->GetAccountType(null, $eveUser->id),
|
||||
]);
|
||||
|
||||
//Look for an existing token for the characters
|
||||
$tokenFound = EsiToken::where([
|
||||
'character_id' => $eveUser->id,
|
||||
])->count();
|
||||
|
||||
if($tokenFound == 0) {
|
||||
$token = new EsiToken;
|
||||
$token->character_id = $eveUser->id;
|
||||
$token->access_token = $eveUser->token;
|
||||
$token->refresh_token = $eveUser->refreshToken;
|
||||
$token->inserted_at = time();
|
||||
$token->expires_in = $eveUser->expiresIn;
|
||||
$token->save();
|
||||
} else {
|
||||
EsiToken::where([
|
||||
'character_id' => $eveUser->id,
|
||||
])->update([
|
||||
'character_id' => $eveUser->id,
|
||||
'access_token' => $eveUser->token,
|
||||
'refresh_token' => $eveUser->refreshToken,
|
||||
'inserted_at' => time(),
|
||||
'expires_in' => $eveUser->expiresIn,
|
||||
]);
|
||||
}
|
||||
|
||||
return $user;
|
||||
}
|
||||
|
||||
@@ -293,7 +374,6 @@ class LoginController extends Controller
|
||||
private function SetScopes($scopes, $charId) {
|
||||
//Delete the current scopes, so we can add new scopes into the database
|
||||
EsiScope::where('character_id', $charId)->delete();
|
||||
$scopes = explode(' ', $scopes);
|
||||
foreach($scopes as $scope) {
|
||||
$data = new EsiScope;
|
||||
$data->character_id = $charId;
|
||||
@@ -350,6 +430,7 @@ class LoginController extends Controller
|
||||
private function GetAccountType($refreshToken, $charId) {
|
||||
//Declare some variables
|
||||
$esiHelper = new Esi;
|
||||
$lookup = new LookupHelper;
|
||||
|
||||
//Instantiate a new ESI isntance
|
||||
$esi = $esiHelper->SetupEsiAuthentication();
|
||||
@@ -359,10 +440,10 @@ class LoginController extends Controller
|
||||
$configuration->cache = NullCache::class;
|
||||
|
||||
//Get the character information
|
||||
$character_info = $esiHelper->GetCharacterData($charId);
|
||||
$character_info = $lookup->GetCharacterInfo($charId);
|
||||
|
||||
//Get the corporation information
|
||||
$corp_info = $esiHelper->GetCorporationData($character_info->corporation_id);
|
||||
$corp_info = $lookup->GetCorporationInfo($character_info->corporation_id);
|
||||
|
||||
if($character_info == null || $corp_info == null) {
|
||||
return redirect('/')->with('error', 'Could not create user at this time.');
|
||||
|
||||
@@ -9,7 +9,7 @@ use Log;
|
||||
use DB;
|
||||
|
||||
//Library
|
||||
use App\Library\Lookups\LookupHelper;
|
||||
use App\Library\Helpers\LookupHelper;
|
||||
|
||||
//Models
|
||||
use App\Models\Blacklist\BlacklistEntity;
|
||||
@@ -84,15 +84,16 @@ class BlacklistController extends Controller
|
||||
}
|
||||
|
||||
//Store the entity in the table
|
||||
BlacklistEntity::insert([
|
||||
'entity_id' => $entityId,
|
||||
'entity_name' => $request->name,
|
||||
'entity_type' => $request->type,
|
||||
'reason' => $request->reason,
|
||||
'alts' => $request->alts,
|
||||
'lister_id' => auth()->user()->getId(),
|
||||
'lister_name' => auth()->user()->getName(),
|
||||
]);
|
||||
$blacklist = new BlacklistEntity;
|
||||
$blacklist->entity_id = $entityId;
|
||||
$blacklist->entity_name = $request->name;
|
||||
$blacklist->entity_type = $request->type;
|
||||
$blacklist->reason = $request->reason;
|
||||
$blacklist->alts = $request->alts;
|
||||
$blacklist->lister_id = auth()->user()->getId();
|
||||
$blacklist->lister_name = auth()->user()->getName();
|
||||
$blacklist->validity = 'Valid';
|
||||
$blacklist->save();
|
||||
|
||||
//Return to the view
|
||||
return redirect('/blacklist/display/add')->with('success', $request->name . ' added to the blacklist.');
|
||||
@@ -115,10 +116,15 @@ class BlacklistController extends Controller
|
||||
'name' => 'required',
|
||||
]);
|
||||
|
||||
//Delete the blacklist character
|
||||
//Set the character on the blacklist to removed
|
||||
BlacklistEntity::where([
|
||||
'entity_name' => $request->name,
|
||||
])->delete();
|
||||
])->update([
|
||||
'validity' => 'Invalid',
|
||||
'removed_by_id' => auth()->user()->getId(),
|
||||
'removed_by_name' => auth()->user()->getName(),
|
||||
'removed_notes' => $request->notes,
|
||||
]);
|
||||
|
||||
//Return the view
|
||||
return redirect('/blacklist/display')->with('success', 'Character removed from the blacklist.');
|
||||
@@ -127,7 +133,9 @@ class BlacklistController extends Controller
|
||||
public function DisplayBlacklist() {
|
||||
|
||||
//Get the entire blacklist
|
||||
$blacklist = BlacklistEntity::orderBy('entity_name', 'asc')->paginate(50);
|
||||
$blacklist = BlacklistEntity::where([
|
||||
'validity' => 'Valid',
|
||||
])->orderBy('entity_name', 'asc')->paginate(50);
|
||||
|
||||
//Return the view with the data
|
||||
return view('blacklist.list')->with('blacklist', $blacklist);
|
||||
@@ -141,9 +149,9 @@ class BlacklistController extends Controller
|
||||
]);
|
||||
|
||||
$blacklist = DB::table('alliance_blacklist')->where('entity_name', 'like', $request->parameter . "%")
|
||||
->orWhere('entity_type', 'like', $request->parameter . "%")
|
||||
->orWhere('alts', 'like', $request->parameter . "%")
|
||||
->orWhere('reason', 'like', $request->parameter . "%")
|
||||
->orWhere('entity_type', 'like', "%" . $request->parameter . "%")
|
||||
->orWhere('alts', 'like', "%" . $request->parameter . "%")
|
||||
->orWhere('reason', 'like', "%" . $request->parameter . "%")
|
||||
->orderBy('entity_name', 'asc')
|
||||
->paginate(50);
|
||||
|
||||
|
||||
@@ -1,60 +0,0 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers;
|
||||
|
||||
use Illuminate\Http\Request;
|
||||
use App\Http\Controllers\Controller;
|
||||
|
||||
//Models
|
||||
use App\Models\Market\MarketRegionOrder;
|
||||
use App\Models\PublicContracts\PublicContract;
|
||||
use App\Models\PublicContracts\PublicContractItem;
|
||||
|
||||
class PublicContractController extends Controller
|
||||
{
|
||||
/**
|
||||
* Private variables
|
||||
*/
|
||||
private $regions = [
|
||||
'Immensea' => 10000025,
|
||||
'Catch' => 10000014,
|
||||
'Tenerifis' => 10000061,
|
||||
'The Forge' => 10000002,
|
||||
'Impass' => 10000031,
|
||||
'Esoteria' => 10000039,
|
||||
'Detorid' => 10000005,
|
||||
'Omist' => 10000062,
|
||||
'Feythabolis' => 10000056,
|
||||
'Insmother' => 10000009,
|
||||
];
|
||||
|
||||
/**
|
||||
* Contracts construct
|
||||
*/
|
||||
public function __construct() {
|
||||
$this->middleware('auth');
|
||||
$this->middleware('role:User');
|
||||
}
|
||||
|
||||
/**
|
||||
* Display the contracts in a region
|
||||
*/
|
||||
public function displayRegionalContracts() {
|
||||
//Declare variables
|
||||
$arrContracts = array();
|
||||
|
||||
//Get the contracts by region
|
||||
foreach($region as $key => $value) {
|
||||
$contracts = PublicContract::where([
|
||||
'region_id' => $value,
|
||||
])->get()->toArray();
|
||||
|
||||
//Compile the array
|
||||
foreach($contracts as $contract) {
|
||||
array_push($arrContracts, $contract);
|
||||
}
|
||||
}
|
||||
|
||||
return view('contracts.regional.user.displaycontracts');
|
||||
}
|
||||
}
|
||||
@@ -8,13 +8,16 @@ use App\Http\Controllers\Controller;
|
||||
use Carbon\Carbon;
|
||||
|
||||
//Libraries
|
||||
use App\Library\Lookups\LookupHelper;
|
||||
use App\Library\Helpers\LookupHelper;
|
||||
|
||||
//Models
|
||||
use App\Models\User\User;
|
||||
use App\Models\Contracts\SupplyChainBid;
|
||||
use App\Models\Contracts\SupplyChainContract;
|
||||
|
||||
//Jobs
|
||||
use App\Jobs\Commands\Eve\SendEveMail;
|
||||
|
||||
class SupplyChainController extends Controller
|
||||
{
|
||||
/**
|
||||
@@ -22,70 +25,54 @@ class SupplyChainController extends Controller
|
||||
*/
|
||||
public function __construct() {
|
||||
$this->middleware('auth');
|
||||
$this->middleware('role:Renter');
|
||||
$this->middleware('role:User');
|
||||
}
|
||||
|
||||
/**
|
||||
* Display the supply chain dashboard
|
||||
* Should contain a section for open contracts, closed contracts, and expired contracts.
|
||||
*/
|
||||
public function displaySupplyChainDashboard() {
|
||||
$contracts = SupplyChainContract::where([
|
||||
$openContracts = SupplyChainContract::where([
|
||||
'state' => 'open',
|
||||
])->get();
|
||||
|
||||
return view('supplychain.dashboard.main')->with('contracts', $contracts);
|
||||
$closedContracts = SupplyChainContract::where([
|
||||
'state' => 'closed',
|
||||
])->get();
|
||||
|
||||
$completedContracts = SupplyChainContract::where([
|
||||
'state' => 'completed',
|
||||
])->get();
|
||||
|
||||
return view('supplychain.dashboard.main')->with('openContracts', $openContracts)
|
||||
->with('closedContracts', $closedContracts)
|
||||
->with('completedContracts', $completedContracts);
|
||||
}
|
||||
|
||||
/**
|
||||
* Show the user's open contracts
|
||||
* Display my supply chain contracts dashboard
|
||||
* Should contain a section for open contracts, closed contracts, and expired contracts
|
||||
*/
|
||||
public function displayMyOpenContractsDashboard() {
|
||||
$contracts = SupplyChainContract::where([
|
||||
public function displayMySupplyChainDashboard() {
|
||||
$openContracts = SupplyChainContract::where([
|
||||
'issuer_id' => auth()->user()->getId(),
|
||||
'state' => 'open',
|
||||
])->get();
|
||||
|
||||
return view('supplychain.dashboard.main')->with('contracts', $contracts);
|
||||
}
|
||||
|
||||
/**
|
||||
* Show the user's closed contracts
|
||||
*/
|
||||
public function displayMyClosedContractsDashboard() {
|
||||
$contracts = SupplyChainContract::where([
|
||||
$closedContracts = SupplyChainContract::where([
|
||||
'issuer_id' => auth()->user()->getId(),
|
||||
'state' => 'closed',
|
||||
])->get();
|
||||
|
||||
return view('supplychain.dashboard.main')->with('contracts', $contracts);
|
||||
}
|
||||
|
||||
/**
|
||||
* Show the past contracts bidded on
|
||||
*/
|
||||
public function displayPastContractsDashboard() {
|
||||
$contracts = array();
|
||||
|
||||
$acceptedBids = SupplyChainBid::where([
|
||||
'bid_type' => 'accepted',
|
||||
$completedContracts = SupplyChainContract::where([
|
||||
'issuer_id' => auth()->user()->getId(),
|
||||
'state' => 'completed',
|
||||
])->get();
|
||||
|
||||
foreach($acceptedBids as $bid) {
|
||||
$contracts = null;
|
||||
|
||||
$temp = SupplyChainContract::where([
|
||||
'state' => 'closed',
|
||||
])->get()->toArray();
|
||||
|
||||
$temp2 = SupplyChainContract::where([
|
||||
'state' => 'completed',
|
||||
])->get()->toArray();
|
||||
|
||||
array_push($contracts, $temp);
|
||||
array_push($contracts, $temp2);
|
||||
}
|
||||
|
||||
return view('supplychain.dashboard.past')->with('contracts', $contracts);
|
||||
return view('supplychain.dashboard.main')->with('openContracts', $openContracts)
|
||||
->with('closedContracts', $closedContracts)
|
||||
->with('completedContracts', $completedContracts);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -126,7 +113,12 @@ class SupplyChainController extends Controller
|
||||
* Display the delete contract page
|
||||
*/
|
||||
public function displayDeleteSupplyChainContract() {
|
||||
return view('supplychain.forms.delete');
|
||||
$contracts = SupplyChainContract::where([
|
||||
'issuer_id' => auth()->user()->getId(),
|
||||
'state' => 'open',
|
||||
])->get();
|
||||
|
||||
return view('supplychain.forms.delete')->with('contracts', $contracts);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -137,28 +129,32 @@ class SupplyChainController extends Controller
|
||||
'contractId' => 'required',
|
||||
]);
|
||||
|
||||
$contractId = $request->contractId;
|
||||
|
||||
/**
|
||||
* Remove the supply chain contract if it's yours.
|
||||
*/
|
||||
$count = SupplyChainContract::where([
|
||||
'issuer_id' => auth()->user()->getId(),
|
||||
'id' => $request->contractId,
|
||||
'contract_id' => $contractId,
|
||||
])->count();
|
||||
|
||||
if($count > 0) {
|
||||
//Remove the supply chain contract
|
||||
SupplyChainContract::where([
|
||||
'issuer_id' => auth()->user()->getId(),
|
||||
'id' => $request->contractId,
|
||||
'contract_id' => $contractId,
|
||||
])->delete();
|
||||
|
||||
//Remove all bids associated with the supply chain contract
|
||||
SupplyChainBid::where([
|
||||
'contract_id' => $contractId,
|
||||
])->delete();
|
||||
|
||||
return redirect('/supplychain/dashboard')->with('success', 'Supply Chain Contract deleted successfully.');
|
||||
} else {
|
||||
return redirect('/supplychain/dashboard')->with('error', 'Unable to delete supply chain contract.');
|
||||
}
|
||||
|
||||
//Remove all the bids from the supply chain contract
|
||||
SupplyChainBid::where([
|
||||
'contract_id' => $request->contractId,
|
||||
])->delete();
|
||||
|
||||
return redirect('/supplychain/dashboard')->with('success', 'Supply Chain Contract deleted successfully.');
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -186,20 +182,64 @@ class SupplyChainController extends Controller
|
||||
//If the count is greater than 0, the user owns the contract.
|
||||
//Proceed with ending the contract
|
||||
if($count > 0) {
|
||||
SupplyChainContract::where([
|
||||
|
||||
])->update([
|
||||
|
||||
]);
|
||||
|
||||
SupplyChainBid::where([
|
||||
|
||||
])->update([
|
||||
|
||||
]);
|
||||
|
||||
return redirect('/supplychain/dashboard')->with('success', 'Contract ended, and mails sent to the winning bidder.');
|
||||
} else {
|
||||
//If the count is zero, then redirect with error messsage
|
||||
return redirect('/supplychain/dashboard')->with('error', 'Contract was not yours to end.');
|
||||
}
|
||||
|
||||
return redirect('/supplychain/dashboard')->with('success', 'Contract ended, and mails sent to the winning bidder.');
|
||||
}
|
||||
|
||||
/**
|
||||
* Display supply chain contract bids page
|
||||
*/
|
||||
public function displaySupplyChainBids() {
|
||||
//Display bids for the user on a page
|
||||
$bids = array();
|
||||
|
||||
return view('supplychain.dashboard.bids');
|
||||
$bidsCount = SupplyChainBid::where([
|
||||
'entity_id' => auth()->user()->getId(),
|
||||
'bid_type' => 'pending',
|
||||
])->count();
|
||||
|
||||
$myBids = SupplyChainBid::where([
|
||||
'entity_id' => auth()->user()->getId(),
|
||||
'bid_type' => 'pending',
|
||||
])->get();
|
||||
|
||||
foreach($myBids as $bid) {
|
||||
//Declare the temporary array
|
||||
$temp = array();
|
||||
|
||||
//Get the contract information for the bid
|
||||
$contract = SupplyChainContract::where([
|
||||
'contract_id' => $bid->contract_id,
|
||||
])->first();
|
||||
|
||||
$temp['bid_id'] = $bid->bid_id;
|
||||
$temp['contract_id'] = $bid->contract_id;
|
||||
$temp['issuer_name'] = $contract->issuer_name;
|
||||
$temp['title'] = $contract->title;
|
||||
$temp['end_date'] = $contract->end_date;
|
||||
$temp['body'] = $contract->body;
|
||||
$temp['bid_amount'] = $bid->bid_amount;
|
||||
|
||||
array_push($bids, $temp);
|
||||
}
|
||||
|
||||
return view('supplychain.dashboard.bids')->with('bids', $bids)
|
||||
->with('bidsCount', $bidsCount);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -213,12 +253,8 @@ class SupplyChainController extends Controller
|
||||
/**
|
||||
* Display the new bid on a supply chain contract page
|
||||
*/
|
||||
public function displaySupplyChainContractBid(Request $request) {
|
||||
$this->validate($request, [
|
||||
'contract_id' => 'required',
|
||||
]);
|
||||
|
||||
$contractId = $request->contract_id;
|
||||
public function displaySupplyChainContractBid($contract) {
|
||||
$contractId = $contract;
|
||||
|
||||
return view('supplychain.forms.enterbid')->with('contractId', $contractId);
|
||||
}
|
||||
@@ -232,6 +268,10 @@ class SupplyChainController extends Controller
|
||||
'contract_id' => 'required',
|
||||
]);
|
||||
|
||||
//Declare some needed variables
|
||||
$bidAmount = 0.00;
|
||||
|
||||
//See if a bid has been placed by the user for this contract
|
||||
$count = SupplyChainBid::where([
|
||||
'entity_id' => auth()->user()->getId(),
|
||||
'entity_name' => auth()->user()->getName(),
|
||||
@@ -241,50 +281,95 @@ class SupplyChainController extends Controller
|
||||
//If the person already has a bid in, then deny them the option to place another bid on the same contract.
|
||||
//Otherwise, enter the bid into the database
|
||||
if($count > 0) {
|
||||
redirect('/supplychain/dashboard')->with('error', 'Unable to insert bid as one is already present for the supply chain contract.');
|
||||
return redirect('/supplychain/dashboard')->with('error', 'Unable to insert bid as one is already present for the supply chain contract.');
|
||||
} else {
|
||||
//Sanitize the bid amount
|
||||
if(preg_match('(m|M|b|B)', $request->bid) === 1) {
|
||||
if(preg_match('(m|M)', $request->bid) === 1) {
|
||||
$cStringSize = strlen($request->bid);
|
||||
$tempCol = str_split($request->bid, $cStringSize - 1);
|
||||
$bidAmount = $tempCol[0];
|
||||
$bidAmount = $bidAmount * 1000000.00;
|
||||
} else if(preg_match('(b|B)', $request->bid) === 1) {
|
||||
$cStringSize = strlen($request->bid);
|
||||
$tempCol = str_split($request->bid, $cStringSize - 1);
|
||||
$bidAmount = $tempCol[0];
|
||||
$bidAmount = $bidAmount * 1000000000.00;
|
||||
}
|
||||
} else {
|
||||
$bidAmount = $request->bid;
|
||||
}
|
||||
|
||||
//Create the database entry
|
||||
$bid = new SupplyChainBid;
|
||||
$bid->contract_id = $request->contract_id;
|
||||
$bid->bid_amount = $request->bid;
|
||||
$bid->bid_amount = $bidAmount;
|
||||
$bid->entity_id = auth()->user()->getId();
|
||||
$bid->entity_name = auth()->user()->getName();
|
||||
$bid->entity_type = 'character';
|
||||
if(isset($request->notes)) {
|
||||
$bid->bid_note = $request->notes;
|
||||
}
|
||||
$bid->bid_type = 'pending';
|
||||
$bid->save();
|
||||
|
||||
redirect('/supplychain/dashboard')->with('success', 'Bid succesfully entered into the contract.');
|
||||
//Update the database entry for the supply chain contract bid number
|
||||
$num = SupplyChainContract::where([
|
||||
'contract_id' => $request->contract_id,
|
||||
])->select('bids')->first();
|
||||
|
||||
//Increment the number of bids
|
||||
$numBids = $num->bids + 1;
|
||||
|
||||
//Update the database
|
||||
SupplyChainContract::where([
|
||||
'contract_id' => $request->contract_id,
|
||||
])->update([
|
||||
'bids' => $numBids,
|
||||
]);
|
||||
|
||||
return redirect('/supplychain/dashboard')->with('success', 'Bid succesfully entered into the contract.');
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Delete a bid on a supply chain contract
|
||||
*
|
||||
* @var contractId
|
||||
* @var bidId
|
||||
*/
|
||||
public function deleteSupplyChainContractBid(Request $request) {
|
||||
$this->validate($request, [
|
||||
'contract_id' => 'required',
|
||||
'bid_id' => 'required',
|
||||
]);
|
||||
public function deleteSupplyChainContractBid($contractId, $bidId) {
|
||||
|
||||
//See if the user has put in a bid. If not, then redirect to failure.
|
||||
$count = SupplyChainBid::where([
|
||||
'contract_id' => $request->contract_id,
|
||||
'contract_id' => $contractId,
|
||||
'entity_id' => auth()->user()->getId(),
|
||||
'bid_id' => $request->bid_id,
|
||||
'bid_id' => $bidId,
|
||||
])->count();
|
||||
|
||||
if($count > 0) {
|
||||
SupplyChainBid::where([
|
||||
'contract_id' => $request->contract_id,
|
||||
'contract_id' => $contractId,
|
||||
'entity_id' => auth()->user()->getId(),
|
||||
'bid_id' => $request->bid_id,
|
||||
'bid_id' => $bidId,
|
||||
])->delete();
|
||||
|
||||
return redirect('/suppplychain/dashboard')->with('success', 'Deleted supply chain contract bid.');
|
||||
//Update the database entry for the supply chain contract bid number
|
||||
$num = SupplyChainContract::where([
|
||||
'contract_id' => $contractId,
|
||||
])->select('bids')->first();
|
||||
|
||||
//Decrement the number of bids
|
||||
$numBids = $num->bids - 1;
|
||||
|
||||
//Update the database
|
||||
SupplyChainContract::where([
|
||||
'contract_id' => $contractId,
|
||||
])->update([
|
||||
'bids' => $numBids,
|
||||
]);
|
||||
|
||||
return redirect('/supplychain/dashboard')->with('success', 'Deleted supply chain contract bid.');
|
||||
} else {
|
||||
return redirect('/supplychain/dashboard')->with('error', 'No bid found to delete.');
|
||||
}
|
||||
@@ -298,9 +383,18 @@ class SupplyChainController extends Controller
|
||||
'contract_id' => 'required',
|
||||
]);
|
||||
|
||||
//Get the contract id
|
||||
$contractId = $request->contract_id;
|
||||
//Get the bid id to be modified later
|
||||
$bid = SupplyChainBid::where([
|
||||
'contract_id' => $contractId,
|
||||
'entity_id' => auth()->user()->getId(),
|
||||
])->first();
|
||||
|
||||
return view('supplychain.forms.modifybid')->with('contractId', $contractId);
|
||||
$bidId = $bid->id;
|
||||
|
||||
return view('supplychain.forms.modifybid')->with('contractId', $contractId)
|
||||
->with('bidId', $bidId);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -352,7 +446,7 @@ class SupplyChainController extends Controller
|
||||
private function NewSupplyChainContractMail(SupplyChainContract $contract) {
|
||||
//Get the config for the esi
|
||||
$config = config('esi');
|
||||
$todayDate = Carbon::now()->toFormat('d-m-Y');
|
||||
$todayDate = Carbon::now()->toFormattedDateString();
|
||||
|
||||
$subject = 'New Supply Chain Contract ' . $todayDate;
|
||||
$body = "A supply chain contract is available.<br>";
|
||||
@@ -360,7 +454,7 @@ class SupplyChainController extends Controller
|
||||
$body .= "Notes: " . $contract->body . "<br>";
|
||||
$body .= "Delivery Date: " . $contract->delivery_date . "<br>";
|
||||
$body .= "<br>Sincerely on behalf of,<br>" . $contract->issuer_name . "<br>";
|
||||
ProcessSendEveMailJob::dispatch($body, 145223267, 'mailing_list', $subject, $config['primary'])->onQueue('mail')->delay(Carbon::now()->addSeconds(30));
|
||||
SendEveMail::dispatch($body, 145223267, 'mailing_list', $subject, $config['primary'])->delay(Carbon::now()->addSeconds(30));
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -375,17 +469,33 @@ class SupplyChainController extends Controller
|
||||
$body .= "Contract: " . $contract->title . "<br>";
|
||||
$body .= "Notes: " . $contract->note . "<br>";
|
||||
$body .= "<br>Sincerely on behalf of,<br>" . $contract->issuer_name;
|
||||
ProcessSendEveMailJob::dispatch($body, 145223267, 'mailing_list', $subject, $config['primary'])->onQueue('mail')->delay(Carbon::now()->addSeconds(30));
|
||||
SendEveMail::dispatch($body, 145223267, 'mailing_list', $subject, $config['primary'])->delay(Carbon::now()->addSeconds(30));
|
||||
}
|
||||
|
||||
/**
|
||||
* Tidy up datatables from a completed supply chain contract
|
||||
*/
|
||||
private function TidySupplyChainContract($contract, $bid) {
|
||||
//Set the contract as finished
|
||||
SupplyChainContract::where([
|
||||
'contract_id' => $contract->contract_id,
|
||||
])->update([
|
||||
'state' => 'finished',
|
||||
]);
|
||||
|
||||
//Set all of the bids as not_accepted as default
|
||||
SupplyChainBid::where([
|
||||
'contract_id' => $contract->contract_id,
|
||||
])->update([
|
||||
'bid_type' => 'not_accepted',
|
||||
]);
|
||||
|
||||
//Set the correct bid as accepted
|
||||
SupplyChainBid::where([
|
||||
'contract_id' => $contract->contract_id,
|
||||
'bid_id' => $bid->bid_id,
|
||||
])->update([
|
||||
'bid_type' => 'accepted',
|
||||
]);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,522 +0,0 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers\Dashboard;
|
||||
|
||||
use App\Http\Controllers\Controller;
|
||||
use Illuminate\Http\Request;
|
||||
use DB;
|
||||
use Carbon\Carbon;
|
||||
|
||||
//Libraries
|
||||
use App\Library\Taxes\TaxesHelper;
|
||||
use App\Library\Wiki\WikiHelper;
|
||||
use App\Library\Lookups\LookupHelper;
|
||||
use App\Library\SRP\SRPHelper;
|
||||
|
||||
//Models
|
||||
use App\Models\User\User;
|
||||
use App\Models\User\UserRole;
|
||||
use App\Models\User\UserPermission;
|
||||
use App\Models\User\AvailableUserPermission;
|
||||
use App\Models\User\AvailableUserRole;
|
||||
use App\Models\Admin\AllowedLogin;
|
||||
use App\Models\Doku\DokuGroupNames;
|
||||
use App\Models\Doku\DokuMember;
|
||||
use App\Models\Doku\DokuUser;
|
||||
|
||||
class AdminController extends Controller
|
||||
{
|
||||
public function __construct() {
|
||||
$this->middleware('auth');
|
||||
$this->middleware('role:Admin');
|
||||
}
|
||||
|
||||
public function displayTestAdminDashboard() {
|
||||
return view('admin.dashboards.testdashboard');
|
||||
}
|
||||
|
||||
public function showJournalEntries() {
|
||||
$dateInit = Carbon::now();
|
||||
$date = $dateInit->subDays(30);
|
||||
|
||||
$journal = DB::select('SELECT amount,reason,description,date FROM `player_donation_journal` WHERE corporation_id=98287666 AND date >= DATE_SUB(CURRENT_TIMESTAMP, INTERVAL 1 MONTH) ORDER BY date DESC');
|
||||
|
||||
return view('admin.dashboards.walletjournal')->with('journal', $journal);
|
||||
}
|
||||
|
||||
public function displayUsersPaginated() {
|
||||
//Declare array variables
|
||||
$user = array();
|
||||
$permission = array();
|
||||
$userArr = array();
|
||||
$permString = null;
|
||||
|
||||
$usersArr = User::orderBy('name', 'asc')->paginate(50);
|
||||
|
||||
foreach($usersArr as $user) {
|
||||
$user->role = $user->getRole();
|
||||
|
||||
$permCount = UserPermission::where([
|
||||
'character_id' => $user->character_id,
|
||||
])->count();
|
||||
|
||||
if($permCount > 0) {
|
||||
$perms = UserPermission::where([
|
||||
'character_id' => $user->character_id,
|
||||
])->get('permission')->toArray();
|
||||
|
||||
foreach($perms as $perm) {
|
||||
$permString .= $perm['permission'] . ', ';
|
||||
}
|
||||
|
||||
$user->permission = $permString;
|
||||
} else {
|
||||
$user->permission = 'No Permissions';
|
||||
}
|
||||
}
|
||||
|
||||
return view('admin.dashboards.userspaged')->with('usersArr', $usersArr);
|
||||
}
|
||||
|
||||
public function searchUsers(Request $request) {
|
||||
//Declare array variables
|
||||
$user = array();
|
||||
$permission = array();
|
||||
$userArr = array();
|
||||
$permString = null;
|
||||
|
||||
//Validate the input from the form
|
||||
$this->validate($request, [
|
||||
'parameter' => 'required',
|
||||
]);
|
||||
|
||||
$usersArr = User::where('name', 'like', $request->parameter . "%")->paginate(50);
|
||||
|
||||
foreach($usersArr as $user) {
|
||||
$user->role = $user->getRole();
|
||||
|
||||
$permCount = UserPermission::where([
|
||||
'character_id' => $user->character_id,
|
||||
])->count();
|
||||
|
||||
if($permCount > 0) {
|
||||
$perms = UserPermission::where([
|
||||
'character_id' => $user->character_id,
|
||||
])->get('permission')->toArray();
|
||||
|
||||
foreach($perms as $perm) {
|
||||
$permString .= $perm['permission'] . ', ';
|
||||
}
|
||||
|
||||
$user->permission = $permString;
|
||||
} else {
|
||||
$user->permission = 'No Permissions';
|
||||
}
|
||||
}
|
||||
|
||||
return view('admin.dashboards.users.searched')->with('usersArr', $usersArr);
|
||||
}
|
||||
|
||||
public function displayAllowedLogins() {
|
||||
//Declare array variables
|
||||
$entities = array();
|
||||
|
||||
/** Entities for allowed logins */
|
||||
$legacys = AllowedLogin::where(['login_type' => 'Legacy'])->pluck('entity_name')->toArray();
|
||||
$renters = AllowedLogin::where(['login_type' => 'Renter'])->pluck('entity_name')->toArray();
|
||||
//Compile a list of entities by their entity_id
|
||||
foreach($legacys as $legacy) {
|
||||
$entities[] = $legacy;
|
||||
}
|
||||
foreach($renters as $renter) {
|
||||
$entities[] = $renter;
|
||||
}
|
||||
|
||||
return view('admin.dashboards.allowed_logins')->with('entities', $entities);
|
||||
}
|
||||
|
||||
public function displayTaxes() {
|
||||
//Declare variables needed for displaying items on the page
|
||||
$months = 3;
|
||||
$pi = array();
|
||||
$industry = array();
|
||||
$reprocessing = array();
|
||||
$office = array();
|
||||
$corpId = 98287666;
|
||||
$srpActual = array();
|
||||
$srpLoss = array();
|
||||
|
||||
/** Taxes Pane */
|
||||
//Declare classes needed for displaying items on the page
|
||||
$tHelper = new TaxesHelper();
|
||||
$srpHelper = new SRPHelper();
|
||||
//Get the dates for the tab panes
|
||||
$dates = $tHelper->GetTimeFrameInMonths($months);
|
||||
//Get the data for the Taxes Pane
|
||||
foreach($dates as $date) {
|
||||
//Get the srp actual pay out for the date range
|
||||
$srpActual[] = [
|
||||
'date' => $date['start']->toFormattedDateString(),
|
||||
'gross' => number_format($srpHelper->GetAllianceSRPActual($date['start'], $date['end']), 2, ".", ","),
|
||||
];
|
||||
|
||||
//Get the srp loss value for the date range
|
||||
$srpLoss[] = [
|
||||
'date' => $date['start']->toFormattedDateString(),
|
||||
'gross' => number_format($srpHelper->GetAllianceSRPLoss($date['start'], $date['end']), 2, ".", ","),
|
||||
];
|
||||
|
||||
//Get the pi taxes for the date range
|
||||
$pis[] = [
|
||||
'date' => $date['start']->toFormattedDateString(),
|
||||
'gross' => number_format($tHelper->GetPIGross($date['start'], $date['end']), 2, ".", ","),
|
||||
];
|
||||
//Get the industry taxes for the date range
|
||||
$industrys[] = [
|
||||
'date' => $date['start']->toFormattedDateString(),
|
||||
'gross' => number_format($tHelper->GetIndustryGross($date['start'], $date['end']), 2, ".", ","),
|
||||
];
|
||||
//Get the reprocessing taxes for the date range
|
||||
$reprocessings[] = [
|
||||
'date' => $date['start']->toFormattedDateString(),
|
||||
'gross' => number_format($tHelper->GetReprocessingGross($date['start'], $date['end']), 2, ".", ","),
|
||||
];
|
||||
//Get the office taxes for the date range
|
||||
$offices[] = [
|
||||
'date' => $date['start']->toFormattedDateString(),
|
||||
'gross' => number_format($tHelper->GetOfficeGross($date['start'], $date['end']), 2, ".", ","),
|
||||
];
|
||||
//Get the market taxes for the date range
|
||||
$markets[] = [
|
||||
'date' => $date['start']->toFormattedDateString(),
|
||||
'gross' => number_format($tHelper->GetAllianceMarketGross($date['start'], $date['end']), 2, ".", ","),
|
||||
];
|
||||
//Get the jump gate taxes for the date range
|
||||
$jumpgates[] = [
|
||||
'date' => $date['start']->toFormattedDateString(),
|
||||
'gross' => number_format($tHelper->GetJumpGateGross($date['start'], $date['end']), 2, ".", ","),
|
||||
];
|
||||
}
|
||||
|
||||
return view('admin.dashboards.taxes')->with('pis', $pis)
|
||||
->with('industrys', $industrys)
|
||||
->with('offices', $offices)
|
||||
->with('markets', $markets)
|
||||
->with('jumpgates', $jumpgates)
|
||||
->with('reprocessings', $reprocessings)
|
||||
->with('srpActual', $srpActual)
|
||||
->with('srpLoss', $srpLoss);
|
||||
}
|
||||
|
||||
public function displayModifyUser(Request $request) {
|
||||
$permissions = array();
|
||||
|
||||
$name = $request->user;
|
||||
|
||||
//Get the user information from the name
|
||||
$user = User::where(['name' => $name])->first();
|
||||
|
||||
$perms = AvailableUserPermission::all();
|
||||
foreach($perms as $p) {
|
||||
$permissions[$p->permission] = $p->permission;
|
||||
}
|
||||
|
||||
$roles = AvailableUserRole::all();
|
||||
|
||||
$role = $user->getRole();
|
||||
|
||||
//Pass the user information to the page for hidden text entries
|
||||
return view('admin.user.modify')->with('user', $user)
|
||||
->with('permissions', $permissions)
|
||||
-with('role', $role)
|
||||
->with('roles', $roles);
|
||||
}
|
||||
|
||||
public function modifyRole(Request $request) {
|
||||
$this->validate($request, [
|
||||
'user' => 'required',
|
||||
'role' => 'required|role!=None',
|
||||
]);
|
||||
|
||||
UserRole::where(['character_id' => $user])->update([
|
||||
'role' => $request->role,
|
||||
]);
|
||||
|
||||
return redirect('/admin/dashboard/users')->with('success', "User: " . $user . " has been modified to a new role: " . $request->role . ".");
|
||||
}
|
||||
|
||||
public function addPermission(Request $request) {
|
||||
//Get the user and permission from the form
|
||||
$character = $request->user;
|
||||
$permission = $request->permission;
|
||||
|
||||
//Check to see if the character already has the permission
|
||||
$check = UserPermission::where(['character_id' => $character, 'permission' => $permission])->get(['permission']);
|
||||
|
||||
if(!isset($check[0]->permission)) {
|
||||
$perm = new UserPermission;
|
||||
$perm->character_id = $character;
|
||||
$perm->permission = $permission;
|
||||
$perm->save();
|
||||
|
||||
return redirect('/admin/dashboard/users')->with('success', 'User udpated!');
|
||||
} else {
|
||||
return redirect('/admin/dashboard/users')->with('error', 'User not updated or already has the permission.');
|
||||
}
|
||||
}
|
||||
|
||||
public function removeUser(Request $request) {
|
||||
//Get the user from the form to delete
|
||||
$user = $request->user;
|
||||
|
||||
//Get the user data from the table
|
||||
$data = User::where(['name' => $user])->get();
|
||||
|
||||
//Delete the user's ESI Scopes
|
||||
DB::table('EsiScopes')->where(['character_id' => $data[0]->character_id])->delete();
|
||||
|
||||
//Delete the user's ESI Token
|
||||
DB::table('EsiTokens')->where(['character_id' => $data[0]->character_id])->delete();
|
||||
|
||||
//Delete the user's role from the roles table
|
||||
DB::table('user_roles')->where(['character_id' => $data[0]->character_id])->delete();
|
||||
|
||||
//Delete the user from the user table
|
||||
DB::table('users')->where(['character_id' => $data[0]->character_id])->delete();
|
||||
|
||||
return redirect('/admin/dashboard/users')->with('success', 'User deleted from the site.');
|
||||
}
|
||||
|
||||
public function addAllowedLogin(Request $request) {
|
||||
//Set the parameters to validate the form
|
||||
$this->validate($request, [
|
||||
'allowedEntityId' => 'required',
|
||||
'allowedEntityType' => 'required',
|
||||
'allowedEntityName' => 'required',
|
||||
'allowedLoginType' => 'required',
|
||||
]);
|
||||
|
||||
//Check to see if the entity exists in the database already
|
||||
$found = AllowedLogin::where([
|
||||
'entity_type' => $request->allowedentityType,
|
||||
'entity_name' => $request->allowedEntityName,
|
||||
])->count();
|
||||
if($found != 0) {
|
||||
AllowedLogin::where([
|
||||
'entity_type' => $request->allowedEntityType,
|
||||
'entity_name' => $request->allowedEntityName,
|
||||
])->update([
|
||||
'entity_id' => $request->allowedEntityId,
|
||||
'entity_type' => $request->allowedEntityType,
|
||||
'entity_name' => $request->allowedEntityName,
|
||||
'login_type' => $request->allowedLoginType,
|
||||
]);
|
||||
} else {
|
||||
$login = new AllowedLogin;
|
||||
$login->entity_id = $request->allowedEntityId;
|
||||
$login->entity_name = $request->allowedEntityName;
|
||||
$login->entity_type = $request->allowedEntityType;
|
||||
$login->login_type = $request->allowedLoginType;
|
||||
$login->save();
|
||||
}
|
||||
|
||||
return redirect('/admin/dashboard')->with('success', 'Entity added to allowed login list.');
|
||||
}
|
||||
|
||||
public function removeAllowedLogin(Request $request) {
|
||||
//Set the parameters to validate the form
|
||||
$this->validate($request, [
|
||||
'removeAllowedLogin' => 'required',
|
||||
]);
|
||||
|
||||
AllowedLogin::where([
|
||||
'entity_name' => $request->removeAllowedLogin,
|
||||
])->delete();
|
||||
|
||||
return redirect('/admin/dashboard')->with('success', 'Entity removed from allowed login list.');
|
||||
}
|
||||
|
||||
/**
|
||||
* Display the wiki dashboard for wiki functions
|
||||
*/
|
||||
public function displayWikiDashboard() {
|
||||
//Declare some variables
|
||||
$wikiUsers = array();
|
||||
$wikiGroups = array();
|
||||
|
||||
$tempUsers = DokuUser::all();
|
||||
$tempGroups = DokuGroupNames::all();
|
||||
$wikiMembership = DokuMember::all();
|
||||
|
||||
//Create a list of users based on id and name for the select form
|
||||
foreach($tempUsers as $temp) {
|
||||
$wikiUsers[$temp->id] = $temp->name;
|
||||
}
|
||||
|
||||
asort($wikiUsers);
|
||||
|
||||
foreach($tempGroups as $temp) {
|
||||
$wikiGroups[$temp->id] = $temp->gname;
|
||||
}
|
||||
|
||||
asort($wikiGroups);
|
||||
|
||||
return view('admin.dashboards.wiki')->with('wikiUsers', $wikiUsers)
|
||||
->with('wikiGroups', $wikiGroups)
|
||||
->with('wikiMembership', $wikiMembership);
|
||||
}
|
||||
|
||||
/**
|
||||
* Delete a wiki user
|
||||
*/
|
||||
public function deleteWikiUser(Request $request) {
|
||||
$this->validate($request, [
|
||||
'user' => 'required',
|
||||
]);
|
||||
|
||||
//Declare helper variable
|
||||
$wikiHelper = new WikiHelper;
|
||||
|
||||
$wikiHelper->DeleteWikiUser($request->user);
|
||||
|
||||
redirect('/admin/dashboard/wiki')->with('success', 'User: ' . $request->user . ' has been deleted.');
|
||||
}
|
||||
|
||||
/**
|
||||
* Add a group to a wiki user
|
||||
*/
|
||||
public function addWikiUserGroup(Request $request) {
|
||||
$this->validate($request, [
|
||||
'user' => 'required', //User Id number
|
||||
'groupname' => 'required', //Group Id number
|
||||
]);
|
||||
|
||||
//Declare some helper variables
|
||||
$wikiHelper = new WikiHelper;
|
||||
|
||||
//Check to see if the user has the group we are going to add first
|
||||
if($wikiHelper->UserHasGroup($request->user, $request->groupname)) {
|
||||
return redirect('/admin/dashboard/wiki')->with('error', 'User already has the group.');
|
||||
}
|
||||
|
||||
//Add the user to the wiki group
|
||||
$results = $wikiHelper->AddUserToGroup($request->user, $request->groupname);
|
||||
|
||||
//Redirect based on the results of the add user to group function
|
||||
if($results) {
|
||||
return redirect('/admin/dashboard/wiki')->with('success', 'User added to group for the wiki.');
|
||||
} else {
|
||||
return redirect('/admin/dashboard/wiki')->with('error', 'Failed at add user to group, or user was already part of the group.');
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Remove a group from a wiki user
|
||||
*/
|
||||
public function removeWikiUserGroup(Request $request) {
|
||||
$this->validate($request, [
|
||||
'user' => 'required',
|
||||
'groupname' => 'required',
|
||||
]);
|
||||
|
||||
//Declare some helper variables
|
||||
$wikiHelper = new WikiHelper;
|
||||
|
||||
//Check to see if the user has the group we are going to remove them from
|
||||
if(!$wikiHelper->UserHasGroup($request->user, $request->groupname)) {
|
||||
return redirect('/admin/dashboard/wiki')->with('error', 'User does not have the group to remove.');
|
||||
}
|
||||
|
||||
//Remove the user from the wiki group
|
||||
$wikiHelper->RemoveUserFromGroup($request->user, $request->groupname);
|
||||
|
||||
return redirect('/admin/dashboard/wiki')->with('success', 'Removed user from group ' . $request->grouopname);
|
||||
}
|
||||
|
||||
/**
|
||||
* Remove a user from all wiki groups
|
||||
*/
|
||||
public function removeWikiUserAllGroups(Request $request) {
|
||||
$this->validate($request, [
|
||||
'user' => 'required',
|
||||
]);
|
||||
|
||||
//Declare variable
|
||||
$wikiHelper = new WikiHelper;
|
||||
|
||||
$wikiHelper->RemoveUserFromAllGroups($request->user);
|
||||
|
||||
return redirect('/admin/dashboard/wiki')->with('success', 'User successfully removed from all groups.');
|
||||
}
|
||||
|
||||
/**
|
||||
* Insert a new group for wiki user's to be added to
|
||||
*/
|
||||
public function insertNewWikiUserGroup(Request $request) {
|
||||
$this->validate($request, [
|
||||
'group' => 'required',
|
||||
'description' => 'required',
|
||||
]);
|
||||
|
||||
//Declare variable
|
||||
$wikiHelper = new WikiHelper;
|
||||
|
||||
$wikiHelper->AddNewUserGroup($request->group, $request->description);
|
||||
|
||||
return redirect('/admin/dashboard/wiki')->with('success', 'Added new user group.');
|
||||
}
|
||||
|
||||
public function purgeWikiUsers(Request $request) {
|
||||
$this->validate($request, [
|
||||
'admin' => 'required',
|
||||
]);
|
||||
|
||||
//Declare helper classes
|
||||
$lookup = new LookupHelper;
|
||||
$wikiHelper = new WikiHelper;
|
||||
|
||||
//Get all of the users from the database
|
||||
$users = User::all();
|
||||
|
||||
//Search the names and verify against the lookup table
|
||||
//to find the corporation and / or alliance they belong to.
|
||||
foreach($users as $user) {
|
||||
//Let's look up the character in the user table by their name.
|
||||
//If no name is found, then delete the user and have them start over with the wiki permissions
|
||||
$count = DokuUser::where(['name' => $user->name])->count();
|
||||
|
||||
//If the user is found, then check if they are allowed on the wiki.
|
||||
//If the the count == 0, then the user wasn't found on the wiki, so do nothing.
|
||||
if($count > 0) {
|
||||
//If the user is not allowed, then delete the user, otherwise, leave the user untouched
|
||||
if(!$wikiHelper->AllowedUser($user->name)) {
|
||||
$uid = $wikiHelper->GetUID($user->name);
|
||||
$wikiHelper->DeleteWikiUser($uid);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//Get all of the DokuUsers and verify against the Users on the services page
|
||||
$users = DokuUser::all();
|
||||
|
||||
//Search the names and verify against the lookup table to find the corporation / alliance the user belongs to.
|
||||
foreach($users as $user) {
|
||||
//Lookup the character in the user table on the services page
|
||||
$count = User::where(['name' => $user->name])->count();
|
||||
|
||||
//If the user is found, then check if they are allowed on the wiki.
|
||||
//If the count == 0, then delete the user anyways
|
||||
if($count > 0 ) {
|
||||
//If the user is not allowed, then delete the user, otherwise, leave them alone.
|
||||
if(!$wikiHelper->AllowedUser($user->name)) {
|
||||
$uid = $wikiHelper->GetUID($user->name);
|
||||
$wikiHelper->DeleteWikiUser($uid);
|
||||
} else {
|
||||
$wikiHelper->DeleteWikiUser($user->id);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return redirect('/admin/dashboard/wiki')->with('success', 'Wiki has been purged.');
|
||||
}
|
||||
}
|
||||
@@ -10,13 +10,18 @@ use Khill\Lavacharts\Lavacharts;
|
||||
use Illuminate\Support\Facades\Auth;
|
||||
|
||||
//Libraries
|
||||
use App\Library\Taxes\TaxesHelper;
|
||||
use App\Library\Wiki\WikiHelper;
|
||||
use App\Library\Lookups\LookupHelper;
|
||||
use App\Library\SRP\SRPHelper;
|
||||
use App\Library\Helpers\TaxesHelper;
|
||||
use App\Library\Helpers\LookupHelper;
|
||||
use App\Library\Helpers\SRPHelper;
|
||||
|
||||
//Models
|
||||
|
||||
use App\Models\User\User;
|
||||
use App\Models\User\UserRole;
|
||||
use App\Models\User\UserPermission;
|
||||
use App\Models\User\AvailableUserPermission;
|
||||
use App\Models\User\AvailableUserRole;
|
||||
use App\Models\Admin\AllowedLogin;
|
||||
use App\Models\Finances\AllianceWalletJournal;
|
||||
|
||||
class AdminDashboardController extends Controller
|
||||
{
|
||||
@@ -35,56 +40,401 @@ class AdminDashboardController extends Controller
|
||||
* Show the administration dashboard.
|
||||
*/
|
||||
public function displayAdminDashboard() {
|
||||
if(auth()->user()->hasRole('Admin') || auth()->user()->hasPermission('moon.admin') || auth()->user()->hasPermission('srp.admin') || auth()->user()->hasPermission('contract.admin')) {
|
||||
if(auth()->user()->hasRole('Admin') ||
|
||||
auth()->user()->hasPermission('srp.admin') ||
|
||||
auth()->user()->hasPermission('contract.admin' ||
|
||||
auth()->user()->hasPermission('mining.officer'))) {
|
||||
//Do nothing and continue on
|
||||
} else {
|
||||
redirect('/dashboard');
|
||||
}
|
||||
|
||||
//Declare variables we will need
|
||||
$days = 30;
|
||||
$lava = new Lavacharts;
|
||||
|
||||
//Get the data for the sov expenses for a graph
|
||||
|
||||
//Setup the charts
|
||||
//Setup the chart to be able the show the categories for income
|
||||
/*
|
||||
$iChart = $lava->DataTable();
|
||||
$iChart->addStringColumn('Categories')
|
||||
->addNumberColumn('ISK')
|
||||
->addRow(['pi', $pi])
|
||||
->addRow(['industry', $industry])
|
||||
->addRow(['reprocessing', $reprocessing])
|
||||
->addRow(['offices', $office])
|
||||
->addRow(['industry', $industry])
|
||||
->addRow(['market', $market])
|
||||
->addRow(['gate', $gate])
|
||||
->addRow(['iBuyback', $iBuyback])
|
||||
->addRow(['renters', $renters])
|
||||
->addRow(['ops', $ops]);
|
||||
*/
|
||||
|
||||
//Setup the chart to be able to show the categories for expenses
|
||||
/*
|
||||
$eChart = $lava->DataTable();
|
||||
$eCjart->addStringColumn('Categories')
|
||||
->addNumberColumn('ISK')
|
||||
->addRow(['sov', $sovBills])
|
||||
->addRow(['srp', $srpActual])
|
||||
->addRow(['maintenance', $maintenance])
|
||||
->addRow(['wardecs', $wardecs])
|
||||
->addRow(['fcs', $fcs])
|
||||
->addRow(['keepstar_fuel', $keepstarFuel])
|
||||
->addRow(['fortizar_fuel', $fortizarFuel])
|
||||
->addRow(['astrahus_fuel', $astrahusFuel])
|
||||
->addRow(['sotiyo_fuel', $sotiyoFuel])
|
||||
->addRow(['azbel_fuel', $azbelFuel])
|
||||
->addRow(['raitaru_fuel', $raitaruFuel])
|
||||
->addRow(['beacon_fuel', $beaconFuel])
|
||||
->addRow(['bridge_fuel', $bridgeFuel])
|
||||
->addRow(['jammer_fuel', $jammerFuel]);
|
||||
*/
|
||||
return view('admin.dashboards.dashboard');
|
||||
}
|
||||
|
||||
/**
|
||||
* Display users in a paginated format
|
||||
*/
|
||||
public function displayUsersPaginated() {
|
||||
$this->middleware('role:Admin');
|
||||
|
||||
//Declare array variables
|
||||
$user = array();
|
||||
$permission = array();
|
||||
$userArr = array();
|
||||
$permString = null;
|
||||
|
||||
$usersArr = User::orderBy('name', 'asc')->paginate(50);
|
||||
|
||||
foreach($usersArr as $user) {
|
||||
$user->role = $user->getRole();
|
||||
|
||||
$permCount = UserPermission::where([
|
||||
'character_id' => $user->character_id,
|
||||
])->count();
|
||||
|
||||
if($permCount > 0) {
|
||||
$perms = UserPermission::where([
|
||||
'character_id' => $user->character_id,
|
||||
])->get('permission')->toArray();
|
||||
|
||||
foreach($perms as $perm) {
|
||||
$permString .= $perm['permission'] . ', ';
|
||||
}
|
||||
|
||||
$user->permission = $permString;
|
||||
} else {
|
||||
$user->permission = 'No Permissions';
|
||||
}
|
||||
}
|
||||
|
||||
return view('admin.dashboards.userspaged')->with('usersArr', $usersArr);
|
||||
}
|
||||
|
||||
/**
|
||||
* Search users for a specific user
|
||||
*/
|
||||
public function searchUsers(Request $request) {
|
||||
$this->middleware('role:Admin');
|
||||
|
||||
//Declare array variables
|
||||
$user = array();
|
||||
$permission = array();
|
||||
$userArr = array();
|
||||
$permString = null;
|
||||
|
||||
//Validate the input from the form
|
||||
$this->validate($request, [
|
||||
'parameter' => 'required',
|
||||
]);
|
||||
|
||||
$usersArr = User::where('name', 'like', $request->parameter . "%")->paginate(50);
|
||||
|
||||
foreach($usersArr as $user) {
|
||||
$user->role = $user->getRole();
|
||||
|
||||
$permCount = UserPermission::where([
|
||||
'character_id' => $user->character_id,
|
||||
])->count();
|
||||
|
||||
if($permCount > 0) {
|
||||
$perms = UserPermission::where([
|
||||
'character_id' => $user->character_id,
|
||||
])->get('permission')->toArray();
|
||||
|
||||
foreach($perms as $perm) {
|
||||
$permString .= $perm['permission'] . ', ';
|
||||
}
|
||||
|
||||
$user->permission = $permString;
|
||||
} else {
|
||||
$user->permission = 'No Permissions';
|
||||
}
|
||||
}
|
||||
|
||||
return view('admin.dashboards.users.searched')->with('usersArr', $usersArr);
|
||||
}
|
||||
|
||||
/**
|
||||
* Display the allowed logins
|
||||
*/
|
||||
public function displayAllowedLogins() {
|
||||
$this->middleware('role:Admin');
|
||||
|
||||
//Declare array variables
|
||||
$entities = array();
|
||||
|
||||
/** Entities for allowed logins */
|
||||
$legacys = AllowedLogin::where(['login_type' => 'Legacy'])->pluck('entity_name')->toArray();
|
||||
$renters = AllowedLogin::where(['login_type' => 'Renter'])->pluck('entity_name')->toArray();
|
||||
//Compile a list of entities by their entity_id
|
||||
foreach($legacys as $legacy) {
|
||||
$entities[] = $legacy;
|
||||
}
|
||||
foreach($renters as $renter) {
|
||||
$entities[] = $renter;
|
||||
}
|
||||
|
||||
return view('admin.dashboards.allowed_logins')->with('entities', $entities);
|
||||
}
|
||||
|
||||
/**
|
||||
* Display the taxes for the alliance
|
||||
*
|
||||
*/
|
||||
public function displayTaxes() {
|
||||
$this->middleware('role:Admin');
|
||||
|
||||
//Declare variables needed for displaying items on the page
|
||||
$months = 6;
|
||||
$pi = array();
|
||||
$industry = array();
|
||||
$reprocessing = array();
|
||||
$office = array();
|
||||
$corpId = 98287666;
|
||||
$srpActual = array();
|
||||
$srpLoss = array();
|
||||
$miningTaxes = array();
|
||||
$miningTaxesLate = array();
|
||||
|
||||
/** Taxes Pane */
|
||||
//Declare classes needed for displaying items on the page
|
||||
$tHelper = new TaxesHelper();
|
||||
$srpHelper = new SRPHelper();
|
||||
//Get the dates for the tab panes
|
||||
$dates = $tHelper->GetTimeFrameInMonths($months);
|
||||
|
||||
//Get the data for the Taxes Pane
|
||||
foreach($dates as $date) {
|
||||
//Get the srp actual pay out for the date range
|
||||
$srpActual[] = [
|
||||
'date' => $date['start']->toFormattedDateString(),
|
||||
'gross' => number_format($srpHelper->GetAllianceSRPActual($date['start'], $date['end']), 2, ".", ","),
|
||||
];
|
||||
|
||||
//Get the srp loss value for the date range
|
||||
$srpLoss[] = [
|
||||
'date' => $date['start']->toFormattedDateString(),
|
||||
'gross' => number_format($srpHelper->GetAllianceSRPLoss($date['start'], $date['end']), 2, ".", ","),
|
||||
];
|
||||
|
||||
//Get the pi taxes for the date range
|
||||
$pis[] = [
|
||||
'date' => $date['start']->toFormattedDateString(),
|
||||
'gross' => number_format($tHelper->GetPIGross($date['start'], $date['end']), 2, ".", ","),
|
||||
];
|
||||
//Get the industry taxes for the date range
|
||||
$industrys[] = [
|
||||
'date' => $date['start']->toFormattedDateString(),
|
||||
'gross' => number_format($tHelper->GetIndustryGross($date['start'], $date['end']), 2, ".", ","),
|
||||
];
|
||||
//Get the reprocessing taxes for the date range
|
||||
$reprocessings[] = [
|
||||
'date' => $date['start']->toFormattedDateString(),
|
||||
'gross' => number_format($tHelper->GetReprocessingGross($date['start'], $date['end']), 2, ".", ","),
|
||||
];
|
||||
//Get the office taxes for the date range
|
||||
$offices[] = [
|
||||
'date' => $date['start']->toFormattedDateString(),
|
||||
'gross' => number_format($tHelper->GetOfficeGross($date['start'], $date['end']), 2, ".", ","),
|
||||
];
|
||||
//Get the market taxes for the date range
|
||||
$markets[] = [
|
||||
'date' => $date['start']->toFormattedDateString(),
|
||||
'gross' => number_format($tHelper->GetAllianceMarketGross($date['start'], $date['end']), 2, ".", ","),
|
||||
];
|
||||
//Get the jump gate taxes for the date range
|
||||
$jumpgates[] = [
|
||||
'date' => $date['start']->toFormattedDateString(),
|
||||
'gross' => number_format($tHelper->GetJumpGateGross($date['start'], $date['end']), 2, ".", ","),
|
||||
];
|
||||
|
||||
$miningTaxes[] = [
|
||||
'date' => $date['start']->toFormattedDateString(),
|
||||
'gross' => number_format($tHelper->GetMoonMiningTaxesGross($date['start'], $date['end']), 2, ".", ","),
|
||||
];
|
||||
|
||||
$miningTaxesLate[] = [
|
||||
'date' => $date['start']->toFormattedDateString(),
|
||||
'gross' => number_format($tHelper->GetMoonMiningTaxesLateGross($date['start'], $date['end']), 2, ".", ","),
|
||||
];
|
||||
|
||||
$moonRentalTaxes[] = [
|
||||
'date' => $date['start']->toFormattedDateString(),
|
||||
'gross' => number_format($tHelper->GetMoonRentalTaxesGross($date['start'], $date['end']), 2, ".", ","),
|
||||
];
|
||||
}
|
||||
|
||||
return view('admin.dashboards.taxes')->with('pis', $pis)
|
||||
->with('industrys', $industrys)
|
||||
->with('offices', $offices)
|
||||
->with('markets', $markets)
|
||||
->with('jumpgates', $jumpgates)
|
||||
->with('reprocessings', $reprocessings)
|
||||
->with('srpActual', $srpActual)
|
||||
->with('srpLoss', $srpLoss)
|
||||
->with('miningTaxes', $miningTaxes)
|
||||
->with('miningTaxesLate', $miningTaxesLate)
|
||||
->with('moonRentalTaxes', $moonRentalTaxes);
|
||||
}
|
||||
|
||||
/**
|
||||
* Display the modify user form
|
||||
*/
|
||||
public function displayModifyUser(Request $request) {
|
||||
$this->middleware('role:Admin');
|
||||
|
||||
$permissions = array();
|
||||
$roles = array();
|
||||
|
||||
$name = $request->user;
|
||||
|
||||
//Get the user information from the name
|
||||
$user = User::where(['name' => $name])->first();
|
||||
|
||||
$perms = AvailableUserPermission::all();
|
||||
foreach($perms as $p) {
|
||||
$permissions[$p->permission] = $p->permission;
|
||||
}
|
||||
|
||||
$tempRoles = AvailableUserRole::all();
|
||||
|
||||
foreach($tempRoles as $tempRole) {
|
||||
array_push($roles, [
|
||||
$tempRole['role'] => $tempRole['role']
|
||||
]);
|
||||
}
|
||||
|
||||
$role = $user->getRole();
|
||||
|
||||
//Pass the user information to the page for hidden text entries
|
||||
return view('admin.user.modify')->with('user', $user)
|
||||
->with('permissions', $permissions)
|
||||
->with('role', $role)
|
||||
->with('roles', $roles);
|
||||
}
|
||||
|
||||
/**
|
||||
* Modify a user's role
|
||||
*/
|
||||
public function modifyRole(Request $request) {
|
||||
$this->middleware('role:Admin');
|
||||
|
||||
$this->validate($request, [
|
||||
'user' => 'required',
|
||||
'role' => 'required',
|
||||
]);
|
||||
|
||||
UserRole::where(['character_id' => $request->user])->update([
|
||||
'role' => $request->role,
|
||||
]);
|
||||
|
||||
return redirect('/admin/dashboard/users')->with('success', "User: " . $request->user . " has been modified to a new role: " . $request->role . ".");
|
||||
}
|
||||
|
||||
public function addPermission(Request $request) {
|
||||
$this->middleware('role:Admin');
|
||||
|
||||
//Get the user and permission from the form
|
||||
$character = $request->user;
|
||||
$permission = $request->permission;
|
||||
|
||||
//Check to see if the character already has the permission
|
||||
$check = UserPermission::where(['character_id' => $character, 'permission' => $permission])->get(['permission']);
|
||||
|
||||
if(!isset($check[0]->permission)) {
|
||||
$perm = new UserPermission;
|
||||
$perm->character_id = $character;
|
||||
$perm->permission = $permission;
|
||||
$perm->save();
|
||||
|
||||
return redirect('/admin/dashboard/users')->with('success', 'User udpated!');
|
||||
} else {
|
||||
return redirect('/admin/dashboard/users')->with('error', 'User not updated or already has the permission.');
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Delete a user to reset their permissions
|
||||
*/
|
||||
public function removeUser(Request $request) {
|
||||
$this->middleware('role:Admin');
|
||||
|
||||
//Get the user from the form to delete
|
||||
$user = $request->user;
|
||||
|
||||
//Get the user data from the table
|
||||
$data = User::where(['name' => $user])->get();
|
||||
|
||||
//Delete the user's ESI Scopes
|
||||
DB::table('EsiScopes')->where(['character_id' => $data[0]->character_id])->delete();
|
||||
|
||||
//Delete the user's ESI Token
|
||||
DB::table('EsiTokens')->where(['character_id' => $data[0]->character_id])->delete();
|
||||
|
||||
//Delete the user's role from the roles table
|
||||
DB::table('user_roles')->where(['character_id' => $data[0]->character_id])->delete();
|
||||
|
||||
//Delete the user from the user table
|
||||
DB::table('users')->where(['character_id' => $data[0]->character_id])->delete();
|
||||
|
||||
return redirect('/admin/dashboard/users')->with('success', 'User deleted from the site.');
|
||||
}
|
||||
|
||||
/**
|
||||
* Add an entity to the allowed login table
|
||||
*/
|
||||
public function addAllowedLogin(Request $request) {
|
||||
$this->middleware('role:Admin');
|
||||
|
||||
//Set the parameters to validate the form
|
||||
$this->validate($request, [
|
||||
'allowedEntityId' => 'required',
|
||||
'allowedEntityType' => 'required',
|
||||
'allowedEntityName' => 'required',
|
||||
'allowedLoginType' => 'required',
|
||||
]);
|
||||
|
||||
//Check to see if the entity exists in the database already
|
||||
$found = AllowedLogin::where([
|
||||
'entity_type' => $request->allowedentityType,
|
||||
'entity_name' => $request->allowedEntityName,
|
||||
])->count();
|
||||
if($found != 0) {
|
||||
AllowedLogin::where([
|
||||
'entity_type' => $request->allowedEntityType,
|
||||
'entity_name' => $request->allowedEntityName,
|
||||
])->update([
|
||||
'entity_id' => $request->allowedEntityId,
|
||||
'entity_type' => $request->allowedEntityType,
|
||||
'entity_name' => $request->allowedEntityName,
|
||||
'login_type' => $request->allowedLoginType,
|
||||
]);
|
||||
} else {
|
||||
$login = new AllowedLogin;
|
||||
$login->entity_id = $request->allowedEntityId;
|
||||
$login->entity_name = $request->allowedEntityName;
|
||||
$login->entity_type = $request->allowedEntityType;
|
||||
$login->login_type = $request->allowedLoginType;
|
||||
$login->save();
|
||||
}
|
||||
|
||||
return redirect('/admin/dashboard')->with('success', 'Entity added to allowed login list.');
|
||||
}
|
||||
|
||||
/**
|
||||
* Remove an entity from the allowed login table
|
||||
*/
|
||||
public function removeAllowedLogin(Request $request) {
|
||||
$this->middleware('role:Admin');
|
||||
|
||||
//Set the parameters to validate the form
|
||||
$this->validate($request, [
|
||||
'removeAllowedLogin' => 'required',
|
||||
]);
|
||||
|
||||
AllowedLogin::where([
|
||||
'entity_name' => $request->removeAllowedLogin,
|
||||
])->delete();
|
||||
|
||||
return redirect('/admin/dashboard')->with('success', 'Entity removed from allowed login list.');
|
||||
}
|
||||
|
||||
/**
|
||||
* Show journal entries in a table for admins from alliance wallets
|
||||
*/
|
||||
public function displayJournalEntries() {
|
||||
$this->middleware('role:Admin');
|
||||
|
||||
$date = Carbon::now()->subDays(60);
|
||||
|
||||
$journal = AllianceWalletJournal::where('date', '>=', $date)
|
||||
->where([
|
||||
'corporation_id' => 98287666,
|
||||
'ref_type' => 'player_donation',
|
||||
])->orderByDesc('date',)->get(['amount', 'reason', 'description', 'date']);
|
||||
|
||||
return view('admin.dashboards.walletjournal')->with('journal', $journal);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -10,6 +10,10 @@ use Illuminate\Support\Facades\DB;
|
||||
use Khill\Lavacharts\Lavacharts;
|
||||
use Carbon\Carbon;
|
||||
|
||||
//Application Library
|
||||
use App\Library\Esi\Esi;
|
||||
use App\Library\Helpers\StructureHelper;
|
||||
|
||||
//Models
|
||||
use App\Models\Esi\EsiScope;
|
||||
use App\Models\Esi\EsiToken;
|
||||
@@ -17,6 +21,8 @@ use App\Models\User\UserPermission;
|
||||
use App\Models\User\UserRole;
|
||||
use App\Models\SRP\SRPShip;
|
||||
use App\Models\User\UserAlt;
|
||||
use App\Models\MiningTax\Invoice;
|
||||
use App\Models\MiningTax\Ledger;
|
||||
|
||||
class DashboardController extends Controller
|
||||
{
|
||||
@@ -28,7 +34,7 @@ class DashboardController extends Controller
|
||||
public function __construct()
|
||||
{
|
||||
$this->middleware('auth');
|
||||
$this->middleware('role:Guest');
|
||||
$this->middleware('role:User');
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -42,9 +48,19 @@ class DashboardController extends Controller
|
||||
$open = array();
|
||||
$approved = array();
|
||||
$denied = array();
|
||||
$ores = array();
|
||||
$altCount = null;
|
||||
$alts = null;
|
||||
$structures = array();
|
||||
$esiHelper = new Esi;
|
||||
$config = config('esi');
|
||||
$sHelper = new StructureHelper($config['primary'], $config['corporation']);
|
||||
$lava = new Lavacharts;
|
||||
|
||||
|
||||
/**
|
||||
* Alt Counts
|
||||
*/
|
||||
//Get the number of the user's alt which are registered so we can process the alt's on the main dashboard page
|
||||
$altCount = UserAlt::where([
|
||||
'main_id' => auth()->user()->character_id,
|
||||
@@ -57,6 +73,9 @@ class DashboardController extends Controller
|
||||
])->get();
|
||||
}
|
||||
|
||||
/**
|
||||
* SRP Items
|
||||
*/
|
||||
//See if we can get all of the open SRP requests
|
||||
$openCount = SRPShip::where([
|
||||
'character_id' => auth()->user()->character_id,
|
||||
@@ -160,8 +179,6 @@ class DashboardController extends Controller
|
||||
}
|
||||
|
||||
//Create a chart of number of approved, denied, and open requests via a fuel gauge chart
|
||||
$lava = new Lavacharts;
|
||||
|
||||
$adur = $lava->DataTable();
|
||||
|
||||
$adur->addStringColumn('Type')
|
||||
@@ -184,13 +201,93 @@ class DashboardController extends Controller
|
||||
],
|
||||
]);
|
||||
|
||||
/**
|
||||
* Mining Tax Items
|
||||
*/
|
||||
//Check for the correct scopes
|
||||
if(!$esiHelper->HaveEsiScope($config['primary'], 'esi-industry.read_corporation_mining.v1')) {
|
||||
return redirect('/dashboard')->with('error', 'Tell the nub Minerva to register the correct scopes for the services site.');
|
||||
}
|
||||
|
||||
$refreshToken = $esiHelper->GetRefreshToken($config['primary']);
|
||||
$esi = $esiHelper->SetupEsiAuthentication($refreshToken);
|
||||
|
||||
//Get the esi data for extractions
|
||||
try {
|
||||
$extractions = $esi->invoke('get', '/corporation/{corporation_id}/mining/extractions', [
|
||||
'corporation_id' => $config['corporation'],
|
||||
]);
|
||||
} catch(RequestFailedException $e) {
|
||||
Log::critical('Could not retrieve the extractions from ESI in DisplayExtractionCalendar in MiningTaxesController');
|
||||
return redirect('/dashboard')->with('error', 'Failed to get extraction data from ESI');
|
||||
}
|
||||
|
||||
/**
|
||||
* Create a 3 month calendar for the past, current, and future extractions
|
||||
*/
|
||||
//Create the data tables
|
||||
$calendar = $lava->DataTable();
|
||||
|
||||
$calendar->addDateTimeColumn('Date')
|
||||
->addNumberColumn('Total');
|
||||
|
||||
foreach($extractions as $extraction) {
|
||||
$sInfo = $sHelper->GetStructureInfo($extraction->structure_id);
|
||||
array_push($structures, [
|
||||
'date' => $esiHelper->DecodeDate($extraction->chunk_arrival_time),
|
||||
'total' => 0,
|
||||
]);
|
||||
}
|
||||
|
||||
foreach($extractions as $extraction) {
|
||||
for($i = 0; $i < sizeof($structures); $i++) {
|
||||
//Create the dates in a carbon object, then only get the Y-m-d to compare.
|
||||
$tempStructureDate = Carbon::createFromFormat('Y-m-d H:i:s', $structures[$i]['date'])->toDateString();
|
||||
$extractionDate = Carbon::createFromFormat('Y-m-d H:i:s', $esiHelper->DecodeDate($extraction->chunk_arrival_time))->toDateString();
|
||||
//check if the dates are equal then increase the total by 1
|
||||
if($tempStructureDate == $extractionDate) {
|
||||
$structures[$i]['total'] += 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
foreach($structures as $structure) {
|
||||
$calendar->addRow([
|
||||
$structure['date'],
|
||||
$structure['total'],
|
||||
]);
|
||||
}
|
||||
|
||||
$lava->CalendarChart('Extractions', $calendar, [
|
||||
'title' => 'Upcoming Extractions',
|
||||
'unusedMonthOutlineColor' => [
|
||||
'stroke' => '#ECECEC',
|
||||
'strokeOpacity' => 0.75,
|
||||
'strokeWidth' => 1,
|
||||
],
|
||||
'dayOfWeekLabel' => [
|
||||
'color' => '#4f5b0d',
|
||||
'fontSize' => 16,
|
||||
'italic' => true,
|
||||
],
|
||||
'noDataPattern' => [
|
||||
'color' => '#DDD',
|
||||
'backgroundColor' => '#11FFFF',
|
||||
],
|
||||
'colorAxis' => [
|
||||
'values' => [0, 5],
|
||||
'colors' => ['green', 'red'],
|
||||
],
|
||||
]);
|
||||
|
||||
return view('dashboard')->with('openCount', $openCount)
|
||||
->with('approvedCount', $approvedCount)
|
||||
->with('deniedCount', $deniedCount)
|
||||
->with('open', $open)
|
||||
->with('approved', $approved)
|
||||
->with('denied', $denied)
|
||||
->with('lava', $lava);
|
||||
->with('lava', $lava)
|
||||
->with('calendar', $calendar);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -1,400 +0,0 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers\Dashboard;
|
||||
|
||||
//Internal Library
|
||||
use Illuminate\Http\Request;
|
||||
use App\Http\Controllers\Controller;
|
||||
use Carbon\Carbon;
|
||||
use Khill\Lavacharts\Lavacharts;
|
||||
|
||||
//Libraries
|
||||
use App\Library\Taxes\TaxesHelper;
|
||||
use App\Library\Lookups\LookupHelper;
|
||||
use App\Library\SRP\SRPHelper;
|
||||
|
||||
//Models
|
||||
use App\Models\User\User;
|
||||
use App\Models\Doku\DokuGroupNames;
|
||||
use App\Models\Doku\DokuMember;
|
||||
use App\Models\Doku\DokuUser;
|
||||
use App\Models\SRP\SrpFleetType;
|
||||
use App\Models\SRP\SRPShip;
|
||||
use App\Models\SRP\SrpShipType;
|
||||
use App\Models\SRP\SrpPayout;
|
||||
|
||||
|
||||
class StatisticsController extends Controller
|
||||
{
|
||||
/**
|
||||
* Create a new controller instance
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function __construct() {
|
||||
$this->middleware('auth');
|
||||
}
|
||||
|
||||
/**
|
||||
* Display Jump Bridge Statistics
|
||||
*/
|
||||
public function displayJumpBridgeStatistics() {
|
||||
$this->middleware('role:Admin');
|
||||
|
||||
$lava = new Lavacharts;
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Display Taxes Statistics
|
||||
*/
|
||||
public function displayTaxes() {
|
||||
$this->middleware('role:Admin');
|
||||
|
||||
//Declare variables needed for displaying items on the page
|
||||
$months = 3;
|
||||
$pi = array();
|
||||
$industry = array();
|
||||
$reprocessing = array();
|
||||
$office = array();
|
||||
$corpId = 98287666;
|
||||
$srpActual = array();
|
||||
$srpLoss = array();
|
||||
|
||||
/** Taxes Pane */
|
||||
//Declare classes needed for displaying items on the page
|
||||
$tHelper = new TaxesHelper;
|
||||
$srpHelper = new SRPHelper;
|
||||
//Get the dates for the tab panes
|
||||
$dates = $tHelper->GetTimeFrameInMonths($months);
|
||||
//Get the data for the Taxes Pane
|
||||
foreach($dates as $date) {
|
||||
//Get the srp actual pay out for the date range
|
||||
$srpActual[] = [
|
||||
'date' => $date['start']->toFormattedDateString(),
|
||||
'gross' => number_format($srpHelper->GetAllianceSRPActual($date['start'], $date['end']), 2, ".", ","),
|
||||
];
|
||||
|
||||
//Get the srp loss value for the date range
|
||||
$srpLoss[] = [
|
||||
'date' => $date['start']->toFormattedDateString(),
|
||||
'gross' => number_format($srpHelper->GetAllianceSRPLoss($date['start'], $date['end']), 2, ".", ","),
|
||||
];
|
||||
|
||||
//Get the pi taxes for the date range
|
||||
$pis[] = [
|
||||
'date' => $date['start']->toFormattedDateString(),
|
||||
'gross' => number_format($tHelper->GetPIGross($date['start'], $date['end']), 2, ".", ","),
|
||||
];
|
||||
//Get the industry taxes for the date range
|
||||
$industrys[] = [
|
||||
'date' => $date['start']->toFormattedDateString(),
|
||||
'gross' => number_format($tHelper->GetIndustryGross($date['start'], $date['end']), 2, ".", ","),
|
||||
];
|
||||
//Get the reprocessing taxes for the date range
|
||||
$reprocessings[] = [
|
||||
'date' => $date['start']->toFormattedDateString(),
|
||||
'gross' => number_format($tHelper->GetReprocessingGross($date['start'], $date['end']), 2, ".", ","),
|
||||
];
|
||||
//Get the office taxes for the date range
|
||||
$offices[] = [
|
||||
'date' => $date['start']->toFormattedDateString(),
|
||||
'gross' => number_format($tHelper->GetOfficeGross($date['start'], $date['end']), 2, ".", ","),
|
||||
];
|
||||
//Get the market taxes for the date range
|
||||
$markets[] = [
|
||||
'date' => $date['start']->toFormattedDateString(),
|
||||
'gross' => number_format($tHelper->GetAllianceMarketGross($date['start'], $date['end']), 2, ".", ","),
|
||||
];
|
||||
//Get the jump gate taxes for the date range
|
||||
$jumpgates[] = [
|
||||
'date' => $date['start']->toFormattedDateString(),
|
||||
'gross' => number_format($tHelper->GetJumpGateGross($date['start'], $date['end']), 2, ".", ","),
|
||||
];
|
||||
}
|
||||
|
||||
return view('admin.dashboards.taxes')->with('pis', $pis)
|
||||
->with('industrys', $industrys)
|
||||
->with('offices', $offices)
|
||||
->with('markets', $markets)
|
||||
->with('jumpgates', $jumpgates)
|
||||
->with('reprocessings', $reprocessings)
|
||||
->with('srpActual', $srpActual)
|
||||
->with('srpLoss', $srpLoss);
|
||||
}
|
||||
|
||||
/**
|
||||
* Display wiki statistics
|
||||
*/
|
||||
public function displayWikiStatistics() {
|
||||
$this->middleware('role:Admin');
|
||||
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Display SRP Statistics
|
||||
*/
|
||||
public function displaySRPStatistics() {
|
||||
$months = 3;
|
||||
$barChartData = array();
|
||||
$start = Carbon::now()->toDateTimeString();
|
||||
$end = Carbon::now()->subMonths(1)->toDateTimeString();
|
||||
|
||||
//Declare the Lavacharts variable
|
||||
$lava = new Lavacharts;
|
||||
|
||||
//We need a function from this library rather than recreating a new library
|
||||
$srpHelper = new SRPHelper();
|
||||
|
||||
/**
|
||||
* Pie chart for the number of approved, denied, and under review payouts currently in the system.
|
||||
*/
|
||||
//Get the count of open srp requests
|
||||
$pieOpen = SRPShip::where([
|
||||
'approved' => 'Under Review',
|
||||
['created_at', '>=', $end],
|
||||
])->count();
|
||||
//Get the count of approved srp requests
|
||||
$pieApproved = SRPShip::where([
|
||||
'approved' => 'Approved',
|
||||
['created_at', '>=', $end],
|
||||
])->count();
|
||||
//Get the count of denied srp requests
|
||||
$pieDenied = SRPShip::where([
|
||||
'approved' => 'Denied',
|
||||
['created_at', '>=', $end],
|
||||
])->count();
|
||||
|
||||
//Create a new datatable for the lavachart.
|
||||
$srp = $lava->DataTable();
|
||||
//Add string columns, number columns, and data rows for the chart
|
||||
$srp->addStringColumn('ISK Value')
|
||||
->addNumberColumn('ISK')
|
||||
->addRow(['Approved', $pieApproved])
|
||||
->addRow(['Denied', $pieDenied])
|
||||
->addRow(['Under Review', $pieOpen]);
|
||||
//Create the pie chart in memory with any options needed to render the chart
|
||||
$lava->PieChart('SRP Stats', $srp, [
|
||||
'title' => 'SRP Stats',
|
||||
'is3D' => true,
|
||||
]);
|
||||
|
||||
/**
|
||||
* Gauage chart for showing number of open srp requests
|
||||
*/
|
||||
//Create a new datatable in the
|
||||
$adur = $lava->DataTable();
|
||||
//Add string columns, number columns, and data row for the chart
|
||||
$adur->addStringColumn('Type')
|
||||
->addNumberColumn('Value')
|
||||
->addRow(['Under Review', $pieOpen]);
|
||||
//Create the gauge chart with any options needed to render the chart
|
||||
$lava->GaugeChart('SRP', $adur, [
|
||||
'width' => 400,
|
||||
'greenFrom' => 0,
|
||||
'greenTo' => 20,
|
||||
'yellowFrom' => 20,
|
||||
'yellowTo' => 40,
|
||||
'redFrom' => 40,
|
||||
'redTo' => 100,
|
||||
'majorTicks' => [
|
||||
'Safe',
|
||||
'Critical',
|
||||
],
|
||||
]);
|
||||
|
||||
/**
|
||||
* Create a vertical chart of all of the cost codes for the ships being SRP'ed.
|
||||
* The chart will be by cost code of ships being replaced
|
||||
*/
|
||||
//Declare the data table
|
||||
$costCodeChart = $lava->DataTable();
|
||||
|
||||
//Get the approved, under review, and denied cost codes and amounts
|
||||
$t1fdcApproved = SRPShip::where([
|
||||
'approved' => 'Approved',
|
||||
'ship_type' => 'T1FDC',
|
||||
])->sum('paid_value');
|
||||
$t1fdcUnderReview = SRPShip::where([
|
||||
'approved' => 'Under Review',
|
||||
'ship_type' => 'T1FDC',
|
||||
])->sum('loss_value');
|
||||
$t1fdcDenied = SRPShip::where([
|
||||
'approved' => 'Denied',
|
||||
'ship_type' => 'T1FDC',
|
||||
])->sum('loss_value');
|
||||
|
||||
$t1bcApproved = SRPShip::where([
|
||||
'approved' => 'Approved',
|
||||
'ship_type' => 'T1BC',
|
||||
])->sum('paid_value');
|
||||
$t1bcUnderReview = SRPShip::where([
|
||||
'approved' => 'Under Review',
|
||||
'ship_type' => 'T1BC',
|
||||
])->sum('loss_value');
|
||||
$t1bcDenied = SRPShip::where([
|
||||
'approved' => 'Denied',
|
||||
'ship_type' => 'T1BC',
|
||||
])->sum('loss_value');
|
||||
|
||||
$t2fdApproved = SRPShip::where([
|
||||
'approved' => 'Approved',
|
||||
'ship_type' => 'T2FD',
|
||||
])->sum('paid_value');
|
||||
$t2fdUnderReview = SRPShip::where([
|
||||
'approved' => 'Under Review',
|
||||
'ship_type' => 'T2FD',
|
||||
])->sum('loss_value');
|
||||
$t2fdDenied = SRPShip::where([
|
||||
'approved' => 'Denied',
|
||||
'ship_type' => 'T2FD',
|
||||
])->sum('loss_value');
|
||||
|
||||
$t3dApproved = SRPShip::where([
|
||||
'approved' => 'Approved',
|
||||
'ship_type' => 'T3D',
|
||||
])->sum('paid_value');
|
||||
$t3dUnderReview = SRPShip::where([
|
||||
'approved' => 'Under Review',
|
||||
'ship_type' => 'T3D',
|
||||
])->sum('loss_value');
|
||||
$t3dDenied = SRPShip::where([
|
||||
'approved' => 'Denied',
|
||||
'ship_type' => 'T3D',
|
||||
])->sum('loss_value');
|
||||
|
||||
$t1t2logiApproved = SRPShip::where([
|
||||
'approved' => 'Approved',
|
||||
'ship_type' => 'T1T2Logi',
|
||||
])->sum('paid_value');
|
||||
$t1t2logiUnderReview = SRPShip::where([
|
||||
'approved' => 'Under Review',
|
||||
'ship_type' => 'T1T2Logi',
|
||||
])->sum('loss_value');
|
||||
$t1t2logiDenied = SRPShip::where([
|
||||
'approved' => 'Denied',
|
||||
'ship_type' => 'T1T2Logi',
|
||||
])->sum('loss_value');
|
||||
|
||||
$reconsApproved = SRPShip::where([
|
||||
'approved' => 'Approved',
|
||||
'ship_type' => 'REC',
|
||||
])->sum('paid_value');
|
||||
$reconsUnderReview = SRPShip::where([
|
||||
'approved' => 'Under Review',
|
||||
'ship_type' => 'REC',
|
||||
])->sum('loss_value');
|
||||
$reconsDenied = SRPShip::where([
|
||||
'approved' => 'Denied',
|
||||
'ship_type' => 'REC',
|
||||
])->sum('loss_value');
|
||||
|
||||
$t2cApproved = SRPShip::where([
|
||||
'approved' => 'Approved',
|
||||
'ship_type' => 'T2C',
|
||||
])->sum('paid_value');
|
||||
$t2cUnderReview = SRPShip::where([
|
||||
'approved' => 'Under Review',
|
||||
'ship_type' => 'T2C',
|
||||
])->sum('loss_value');
|
||||
$t2cDenied = SRPShip::where([
|
||||
'approved' => 'Denied',
|
||||
'ship_type' => 'T2C',
|
||||
])->sum('loss_value');
|
||||
|
||||
$t3cApproved = SRPShip::where([
|
||||
'approved' => 'Approved',
|
||||
'ship_type' => 'T3C',
|
||||
])->sum('paid_value');
|
||||
$t3cUnderReview = SRPShip::where([
|
||||
'approved' => 'Under Review',
|
||||
'ship_type' => 'T3C',
|
||||
])->sum('loss_value');
|
||||
$t3cDenied = SRPShip::where([
|
||||
'approved' => 'Denied',
|
||||
'ship_type' => 'T3C',
|
||||
])->sum('loss_value');
|
||||
|
||||
$commandApproved = SRPShip::where([
|
||||
'approved' => 'Approved',
|
||||
'ship_type' => 'COM',
|
||||
])->sum('paid_value');
|
||||
$commandUnderReview = SRPShip::where([
|
||||
'approved' => 'Under Review',
|
||||
'ship_type' => 'COM',
|
||||
])->sum('loss_value');
|
||||
$commandDenied = SRPShip::where([
|
||||
'approved' => 'Denied',
|
||||
'ship_type' => 'COM',
|
||||
])->sum('loss_value');
|
||||
|
||||
$interdictorApproved = SRPShip::where([
|
||||
'approved' => 'Approved',
|
||||
'ship_type' => 'INTD',
|
||||
])->sum('paid_value');
|
||||
$interdictorUnderReview = SRPShip::where([
|
||||
'approved' => 'Under Review',
|
||||
'ship_type' => 'INTD',
|
||||
])->sum('loss_value');
|
||||
$interdictorDenied = SRPShip::where([
|
||||
'approved' => 'Denied',
|
||||
'ship_type' => 'INTD',
|
||||
])->sum('loss_value');
|
||||
|
||||
$t1bsApproved = SRPShip::where([
|
||||
'approved' => 'Approved',
|
||||
'ship_type' => 'T1BS',
|
||||
])->sum('paid_value');
|
||||
$t1bsUnderReview = SRPShip::where([
|
||||
'approved' => 'Under Review',
|
||||
'ship_type' => 'T1BS',
|
||||
])->sum('loss_value');
|
||||
$t1bsDenied = SRPShip::where([
|
||||
'approved' => 'Denied',
|
||||
'ship_type' => 'T1BS',
|
||||
])->sum('loss_value');
|
||||
|
||||
$dksApproved = SRPShip::where([
|
||||
'approved' => 'Approved',
|
||||
'ship_type' => 'DKS',
|
||||
])->sum('paid_value');
|
||||
$dksUnderReview = SRPShip::where([
|
||||
'approved' => 'Under Review',
|
||||
'ship_type' => 'DKS',
|
||||
])->sum('loss_value');
|
||||
$dksDenied = SRPShip::where([
|
||||
'approved' => 'Denied',
|
||||
'ship_type' => 'DKS',
|
||||
])->sum('loss_value');
|
||||
|
||||
|
||||
//Add string column, number columns.
|
||||
$costCodeChart->addStringColumn('SRP Costs')
|
||||
->addNumberColumn('Approved')
|
||||
->addNumberColumn('Under Review')
|
||||
->addNumberColumn('Denied')
|
||||
->addRow(['T1FDC', $t1fdcApproved, $t1fdcUnderReview, $t1fdcDenied])
|
||||
->addRow(['T1BC', $t1bcApproved, $t1bcUnderReview, $t1bcDenied])
|
||||
->addRow(['T1BS', $t1bsApproved, $t1bsUnderReview, $t1bsDenied])
|
||||
->addRow(['T2FD', $t2fdApproved, $t2fdUnderReview, $t2fdDenied])
|
||||
->addRow(['T2C', $t2cApproved, $t2cUnderReview, $t2cDenied])
|
||||
->addRow(['T1T2Logi', $t1t2logiApproved, $t1t2logiUnderReview, $t1t2logiDenied])
|
||||
->addRow(['T3D', $t3dApproved, $t3dUnderReview, $t3dDenied])
|
||||
->addRow(['T3C', $t3cApproved, $t3cUnderReview, $t3cDenied])
|
||||
->addRow(['RECON', $reconsApproved, $reconsUnderReview, $reconsDenied])
|
||||
->addRow(['COMMAND', $commandApproved, $commandUnderReview, $commandDenied])
|
||||
->addRow(['DKS', $dksApproved, $dksUnderReview, $dksDenied]);
|
||||
|
||||
$lava->ColumnChart('Cost Codes', $costCodeChart, [
|
||||
'columns' => 4,
|
||||
'title' => 'Cost Code SRP Chart',
|
||||
'titleTextStyle' => [
|
||||
'color' => '#eb6b2c',
|
||||
'fontSize' => 14,
|
||||
],
|
||||
]);
|
||||
|
||||
return view('srp.admin.statistics')->with('lava', $lava);
|
||||
}
|
||||
}
|
||||
322
app/Http/Controllers/Finances/FinanceController.php
Normal file
322
app/Http/Controllers/Finances/FinanceController.php
Normal file
@@ -0,0 +1,322 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers\Finances;
|
||||
|
||||
//Internal Libraries
|
||||
use App\Http\Controllers\Controller;
|
||||
use Illuminate\Http\Request;
|
||||
use Carbon\Carbon;
|
||||
use Log;
|
||||
use Khill\Lavacharts\Lavacharts;
|
||||
|
||||
//Application Library
|
||||
use App\Library\Helpers\TaxesHelper;
|
||||
use App\Library\Helpers\LookupHelper;
|
||||
use App\Library\Helpers\SRPHelper;
|
||||
|
||||
//Models
|
||||
use App\Models\User\User;
|
||||
|
||||
class FinanceController extends Controller
|
||||
{
|
||||
//Construct
|
||||
public function __construct() {
|
||||
$this->middleware('auth');
|
||||
$this->middleware('role:User');
|
||||
$this->middleware('permission:ceo');
|
||||
}
|
||||
|
||||
/**
|
||||
* Display the finances of the alliance with cards like the admin dashboard
|
||||
*/
|
||||
public function displayCards() {
|
||||
$months = 3;
|
||||
|
||||
$pi = array();
|
||||
$industry = array();
|
||||
$reprocessing = array();
|
||||
$office = array();
|
||||
$corpId = 98287666;
|
||||
$srpActual = array();
|
||||
$srpLoss = array();
|
||||
$miningTaxes = array();
|
||||
$miningTaxesLate = array();
|
||||
|
||||
/** Taxes Pane */
|
||||
//Declare classes needed for displaying items on the page
|
||||
$tHelper = new TaxesHelper();
|
||||
$srpHelper = new SRPHelper();
|
||||
//Get the dates for the tab panes
|
||||
$dates = $tHelper->GetTimeFrameInMonths($months);
|
||||
|
||||
//Get the data for the Taxes Pane
|
||||
foreach($dates as $date) {
|
||||
//Get the srp actual pay out for the date range
|
||||
$srpActual[] = [
|
||||
'date' => $date['start']->toFormattedDateString(),
|
||||
'gross' => number_format($srpHelper->GetAllianceSRPActual($date['start'], $date['end']), 2, ".", ","),
|
||||
];
|
||||
|
||||
//Get the srp loss value for the date range
|
||||
$srpLoss[] = [
|
||||
'date' => $date['start']->toFormattedDateString(),
|
||||
'gross' => number_format($srpHelper->GetAllianceSRPLoss($date['start'], $date['end']), 2, ".", ","),
|
||||
];
|
||||
|
||||
//Get the pi taxes for the date range
|
||||
$pis[] = [
|
||||
'date' => $date['start']->toFormattedDateString(),
|
||||
'gross' => number_format($tHelper->GetPIGross($date['start'], $date['end']), 2, ".", ","),
|
||||
];
|
||||
//Get the industry taxes for the date range
|
||||
$industrys[] = [
|
||||
'date' => $date['start']->toFormattedDateString(),
|
||||
'gross' => number_format($tHelper->GetIndustryGross($date['start'], $date['end']), 2, ".", ","),
|
||||
];
|
||||
//Get the reprocessing taxes for the date range
|
||||
$reprocessings[] = [
|
||||
'date' => $date['start']->toFormattedDateString(),
|
||||
'gross' => number_format($tHelper->GetReprocessingGross($date['start'], $date['end']), 2, ".", ","),
|
||||
];
|
||||
//Get the office taxes for the date range
|
||||
$offices[] = [
|
||||
'date' => $date['start']->toFormattedDateString(),
|
||||
'gross' => number_format($tHelper->GetOfficeGross($date['start'], $date['end']), 2, ".", ","),
|
||||
];
|
||||
//Get the market taxes for the date range
|
||||
$markets[] = [
|
||||
'date' => $date['start']->toFormattedDateString(),
|
||||
'gross' => number_format($tHelper->GetAllianceMarketGross($date['start'], $date['end']), 2, ".", ","),
|
||||
];
|
||||
//Get the jump gate taxes for the date range
|
||||
$jumpgates[] = [
|
||||
'date' => $date['start']->toFormattedDateString(),
|
||||
'gross' => number_format($tHelper->GetJumpGateGross($date['start'], $date['end']), 2, ".", ","),
|
||||
];
|
||||
|
||||
$miningTaxes[] = [
|
||||
'date' => $date['start']->toFormattedDateString(),
|
||||
'gross' => number_format($tHelper->GetMoonMiningTaxesGross($date['start'], $date['end']), 2, ".", ","),
|
||||
];
|
||||
|
||||
$miningTaxesLate[] = [
|
||||
'date' => $date['start']->toFormattedDateString(),
|
||||
'gross' => number_format($tHelper->GetMoonMiningTaxesLateGross($date['start'], $date['end']), 2, ".", ","),
|
||||
];
|
||||
|
||||
$moonRentalTaxes[] = [
|
||||
'date' => $date['start']->toFormattedDateString(),
|
||||
'gross' => number_format($tHelper->GetMoonRentalTaxesGross($date['start'], $date['end']), 2, ".", ","),
|
||||
];
|
||||
|
||||
|
||||
}
|
||||
|
||||
return view('finances.display.card')->with('pis', $pis)
|
||||
->with('industrys', $industrys)
|
||||
->with('offices', $offices)
|
||||
->with('markets', $markets)
|
||||
->with('jumpgates', $jumpgates)
|
||||
->with('reprocessings', $reprocessings)
|
||||
->with('srpActual', $srpActual)
|
||||
->with('srpLoss', $srpLoss)
|
||||
->with('miningTaxes', $miningTaxes)
|
||||
->with('miningTaxesLate', $miningTaxesLate)
|
||||
->with('moonRentalTaxes', $moonRentalTaxes);
|
||||
}
|
||||
|
||||
/**
|
||||
* Display a graph of the financial outlook of the alliance
|
||||
*/
|
||||
public function displayOutlook() {
|
||||
$months = 12;
|
||||
$income = array();
|
||||
$expenses = array();
|
||||
$totalPi = 0.00;
|
||||
$totalIndustry = 0.00;
|
||||
$totalReprocessing = 0.00;
|
||||
$totalOffices = 0.00;
|
||||
$totalMarket = 0.00;
|
||||
$totalJumpGate = 0.00;
|
||||
$totalMiningTaxes = 0.00;
|
||||
$totalMoonRentals = 0.00;
|
||||
$totalSrp = 0.00;
|
||||
$totalCapEx = 0.00;
|
||||
$totalSovExpenses = 0.00;
|
||||
|
||||
/**
|
||||
* Declare classes needed for displaying items on the page
|
||||
*/
|
||||
$tHelper = new TaxesHelper();
|
||||
$srpHelper = new SRPHelper();
|
||||
//Get the dates to process
|
||||
$dates = $tHelper->GetTimeFrameInMonths($months);
|
||||
|
||||
/**
|
||||
* Setup the chart variables
|
||||
*/
|
||||
$lava = new Lavacharts;
|
||||
$finances = $lava->DataTable();
|
||||
$incomeStreams = $lava->DataTable();
|
||||
$expenseStreams = $lava->DataTable();
|
||||
|
||||
$finances->addDateColumn('Month')
|
||||
->addNumberColumn('Income')
|
||||
->addNumberColumn('Expenses')
|
||||
->addNumberColumn('Difference')
|
||||
->setDateTimeFormat('Y');
|
||||
|
||||
/**
|
||||
* Get the income and expenses data for date range
|
||||
*/
|
||||
foreach($dates as $date) {
|
||||
/**
|
||||
* Get the individual expenses.
|
||||
* Will totalize later in the foreach loop
|
||||
*/
|
||||
$srpActual = $srpHelper->GetAllianceSRPActual($date['start'], $date['end']);
|
||||
$capEx = 0.00;
|
||||
$sovExpenses = 3000000000.00;
|
||||
|
||||
/**
|
||||
* Get the individual incomes.
|
||||
* Will totalize later in the foreach loop
|
||||
*/
|
||||
$pi = $tHelper->GetPIGross($date['start'], $date['end']);
|
||||
$industry = $tHelper->GetIndustryGross($date['start'], $date['end']);
|
||||
$reprocessing = $tHelper->GetReprocessingGross($date['start'], $date['end']);
|
||||
$offices = $tHelper->GetOfficeGross($date['start'], $date['end']);
|
||||
$market = $tHelper->GetAllianceMarketGross($date['start'], $date['end']);
|
||||
$jumpgate = $tHelper->GetJumpGateGross($date['start'], $date['end']);
|
||||
$miningTaxes = $tHelper->GetMoonMiningTaxesGross($date['start'], $date['end']) + $tHelper->GetMoonMiningTaxesLateGross($date['start'], $date['end']);
|
||||
$moonRentals = $tHelper->GetMoonRentalTaxesGross($date['start'], $date['end']);
|
||||
|
||||
/**
|
||||
* Totalize the expenses
|
||||
*/
|
||||
$expenses = (($srpActual + $capEx + $sovExpenses) / 1000000.00);
|
||||
|
||||
/**
|
||||
* Totalize the incomes
|
||||
*/
|
||||
$incomes = (($pi +
|
||||
$industry +
|
||||
$reprocessing +
|
||||
$offices +
|
||||
$market +
|
||||
$jumpgate +
|
||||
$miningTaxes +
|
||||
$moonRentals) / 1000000.00);
|
||||
|
||||
/**
|
||||
* Get the difference between income and expenses
|
||||
*/
|
||||
$difference = $incomes - $expenses;
|
||||
|
||||
//Add the rows for the combo column chart
|
||||
$finances->addRow([$date['start'], $incomes, $expenses, $difference]);
|
||||
|
||||
//Add up each of the income streams, then the expenses
|
||||
$totalPi += $pi;
|
||||
$totalIndustry += $industry;
|
||||
$totalReprocessing += $reprocessing;
|
||||
$totalOffices += $offices;
|
||||
$totalMarket += $market;
|
||||
$totalJumpGate += $jumpgate;
|
||||
$totalMiningTaxes += $miningTaxes;
|
||||
$totalMoonRentals += $moonRentals;
|
||||
$totalSrp += $srpActual;
|
||||
$totalCapEx = $capEx;
|
||||
$totalSovExpenses += $sovExpenses;
|
||||
}
|
||||
|
||||
/**
|
||||
* Finish setting up the lava chart before passing it to the blade template
|
||||
*/
|
||||
$lava->ComboChart('Finances', $finances, [
|
||||
'title' => 'Alliance Finances',
|
||||
'titleTextStyle' => [
|
||||
'color' => 'rgb(123, 65, 80)',
|
||||
'fontSize' => 16,
|
||||
],
|
||||
'legend' => [
|
||||
'position' => 'in',
|
||||
],
|
||||
'seriesType' => 'bars',
|
||||
'series' => [
|
||||
2 => [
|
||||
'type' => 'line',
|
||||
],
|
||||
],
|
||||
'height' => 360,
|
||||
]);
|
||||
|
||||
/**
|
||||
* Setup the 3d pie chart for income streams
|
||||
*/
|
||||
$incomeStreams->addStringColumn('Incomes')
|
||||
->addNumberColumn('ISK')
|
||||
->addRow(['PI', $totalPi])
|
||||
->addRow(['Industry', $totalIndustry])
|
||||
->addRow(['Reprocessing', $totalReprocessing])
|
||||
->addRow(['Offices', $totalOffices])
|
||||
->addRow(['Market', $totalMarket])
|
||||
->addRow(['Jump Gate', $totalJumpGate])
|
||||
->addRow(['Mining Taxes', $totalMiningTaxes])
|
||||
->addRow(['Moon Rentals', $totalMoonRentals]);
|
||||
|
||||
/**
|
||||
* Setup the 3d pie chart for expense streams
|
||||
*/
|
||||
$expenseStreams->addStringColumn('Expenses')
|
||||
->addNumberColumn('ISK')
|
||||
->addRow(['SRP', $totalSrp])
|
||||
->addRow(['Cap Ex', $totalCapEx])
|
||||
->addRow(['Sov Expenses', $totalSovExpenses]);
|
||||
|
||||
/**
|
||||
* Setup the pie chart data for income streams
|
||||
*/
|
||||
$lava->PieChart('Incomes', $incomeStreams, [
|
||||
'title' => 'Alliance Income Streams',
|
||||
'is3D' => true,
|
||||
'height' => 360,
|
||||
]);
|
||||
|
||||
/**
|
||||
* Setup the pie chart data for expenses
|
||||
*/
|
||||
$lava->PieChart('Expenses', $expenseStreams, [
|
||||
'title' => 'Alliance Expenses',
|
||||
'is3D' => true,
|
||||
'height' => 360,
|
||||
'slices' => [
|
||||
['offset' => 0.15],
|
||||
['offset' => 0.25],
|
||||
],
|
||||
]);
|
||||
|
||||
return view('finances.display.outlook')->with('lava', $lava);
|
||||
}
|
||||
|
||||
/**
|
||||
* Request an amount of ISK to fund a capital project
|
||||
*/
|
||||
public function requestFundingDisplay() {
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Store the request for the capital project
|
||||
*/
|
||||
public function storeFundingRequest() {
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Delete a request for the capital project
|
||||
*/
|
||||
public function deleteFundingRequest() {
|
||||
|
||||
}
|
||||
}
|
||||
@@ -1,133 +0,0 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers\Flex;
|
||||
|
||||
//Internal Library
|
||||
use Illuminate\Http\Request;
|
||||
use App\Http\Controllers\Controller;
|
||||
use Auth;
|
||||
use DB;
|
||||
use Carbon\Carbon;
|
||||
|
||||
//Models
|
||||
use App\Models\Flex\FlexStructure;
|
||||
|
||||
//Library
|
||||
use App\Library\Lookups\LookupHelper;
|
||||
use App\Library\Esi\Esi;
|
||||
|
||||
class FlexAdminController extends Controller
|
||||
{
|
||||
//Constructor
|
||||
public function __construct() {
|
||||
$this->middleware('auth');
|
||||
$this->middleware('role:Admin');
|
||||
}
|
||||
|
||||
/**
|
||||
* Function to display all active flex structures and
|
||||
* the information regarding the flex structure
|
||||
*/
|
||||
public function displayFlexStructures() {
|
||||
//Get the structures from the database
|
||||
$structures = FlexStructure::all();
|
||||
|
||||
//Return the view with the data
|
||||
return view('flex.list')->with('structures', $structures);
|
||||
}
|
||||
|
||||
/**
|
||||
* Function to display form for adding new flex structure
|
||||
*/
|
||||
public function displayAddFlexStructure() {
|
||||
return view('flex.add');
|
||||
}
|
||||
|
||||
/**
|
||||
* Function to add new flex structure to the database
|
||||
*/
|
||||
public function addFlexStructure(Request $request) {
|
||||
$this->validate($request, [
|
||||
'requestor_name' => 'required',
|
||||
'requestor_corp_name' => 'required',
|
||||
'system' => 'required',
|
||||
'structure_type' => 'required',
|
||||
'structure_cost' => 'required',
|
||||
]);
|
||||
|
||||
//Delcare variables and classes
|
||||
$lookup = new LookupHelper;
|
||||
|
||||
//From the character name find the character id
|
||||
$charId = $lookup->CharacterNameToId($request->requestor_name);
|
||||
|
||||
//From the corporation name find the corporation id
|
||||
$corpId = $lookup->CorporationNameToId($request->requestor_corp_name);
|
||||
|
||||
//From the system name find the system id
|
||||
$systemId = $lookup->SystemNameToId($request->system);
|
||||
|
||||
//Create the database model
|
||||
$flex = new FlexStructure;
|
||||
$flex->requestor_id = $charId;
|
||||
$flex->requestor_name = $request->requestor_name;
|
||||
$flex->requestor_corp_id = $corpId;
|
||||
$flex->requestor_corp_name = $request->requestor_corp_name;
|
||||
$flex->system_id = $systemId;
|
||||
$flex->system = $request->system;
|
||||
$flex->structure_type = $request->structure_type;
|
||||
$flex->structure_cost = $request->structure_cost;
|
||||
if(isset($request->paid_until)) {
|
||||
$flex->paid_until = $request->paid_until;
|
||||
}
|
||||
$flex->save();
|
||||
|
||||
return redirect('/flex/display')->with('success', 'Flex Structure Added.');
|
||||
}
|
||||
|
||||
/**
|
||||
* Function to update paid until section of the flex structure in the database
|
||||
*/
|
||||
public function updateFlexStructure(Request $request) {
|
||||
$this->validate($request, [
|
||||
'paid_until' => 'required',
|
||||
'requestor_id' => 'required',
|
||||
'requestor_corp_id' => 'required',
|
||||
'system_id' => 'required',
|
||||
'structure_type' => 'required',
|
||||
]);
|
||||
|
||||
FlexStructure::where([
|
||||
'requestor_id' => $request->requestor_id,
|
||||
'requestor_corp_id' => $request->requestor_corp_id,
|
||||
'system_id' => $request->system_id,
|
||||
'structure_type' => $request->structure_type,
|
||||
])->update([
|
||||
'paid_until' => $request->paid_until,
|
||||
]);
|
||||
|
||||
return redirect('/flex/display')->with('success', 'Flex Structure Updated.');
|
||||
}
|
||||
|
||||
/**
|
||||
* Funciton to remove flex structure from the database
|
||||
*/
|
||||
public function removeFlexStructure(Request $request) {
|
||||
$this->validate($request, [
|
||||
'requestor_id' => 'required',
|
||||
'requestor_corp_id' => 'required',
|
||||
'system_id' => 'required',
|
||||
'structure_type' => 'required',
|
||||
]);
|
||||
|
||||
FlexStructure::where([
|
||||
'requestor_id' => $request->requestor_id,
|
||||
'requestor_corp_id' => $request->requestor_corp_id,
|
||||
'system' => $request->system_id,
|
||||
'structure_type' => $request->structure_type,
|
||||
])->delete();
|
||||
|
||||
return redirect('/flex/display')->with('success', 'Flex Structure Entry Removed.');
|
||||
}
|
||||
|
||||
}
|
||||
@@ -13,11 +13,13 @@ use Auth;
|
||||
use Charts;
|
||||
|
||||
//Library Helpers
|
||||
use App\Library\Assets\AssetHelper;
|
||||
use App\Library\Structures\StructureHelper;
|
||||
use App\Library\Helpers\AssetHelper;
|
||||
use App\Library\Helpers\StructureHelper;
|
||||
|
||||
//Models
|
||||
use App\Models\Structure\Structure;
|
||||
use App\Models\Structure\Asset;
|
||||
use App\Models\Structure\Service;
|
||||
|
||||
class FuelController extends Controller
|
||||
{
|
||||
@@ -81,6 +83,6 @@ class FuelController extends Controller
|
||||
]);
|
||||
|
||||
return view('logistics.fuel')->with('jumpGates', $jumpGates)
|
||||
->with('lava', $lava);
|
||||
->with('lava', $lava);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,37 +0,0 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers\Logistics;
|
||||
|
||||
//Internal Libraries
|
||||
use Illuminate\Http\Request;
|
||||
use App\Http\Controllers\Controller;
|
||||
use Log;
|
||||
|
||||
//Models
|
||||
use App\Models\Logistics\AnchorStructure;
|
||||
|
||||
class StructureRequestAdminController extends Controller
|
||||
{
|
||||
public function __construct() {
|
||||
$this->middleware('auth');
|
||||
$this->middleware('permission:fc.team');
|
||||
}
|
||||
|
||||
public function displayRequests() {
|
||||
$reqs = AnchorStructure::all();
|
||||
|
||||
return view('structurerequest.display.structurerequests')->with('reqs', $reqs);
|
||||
}
|
||||
|
||||
public function deleteRequest(Request $request) {
|
||||
$this->validate($request, [
|
||||
'id' => 'required',
|
||||
]);
|
||||
|
||||
AnchorStructure::where([
|
||||
'id' => $request->id,
|
||||
])->delete();
|
||||
|
||||
return redirect('/structures/display/requests');
|
||||
}
|
||||
}
|
||||
@@ -1,82 +0,0 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers\Logistics;
|
||||
|
||||
//Internal Libraries
|
||||
use Illuminate\Http\Request;
|
||||
use App\Http\Controllers\Controller;
|
||||
use Log;
|
||||
|
||||
//Jobs
|
||||
use App\Jobs\ProcessSendEveMailJob;
|
||||
|
||||
//Library Helpers
|
||||
use App\Library\Lookups\LookupHelper;
|
||||
|
||||
//Models
|
||||
use App\Models\Logistics\AnchorStructure;
|
||||
use App\Models\User\UserPermission;
|
||||
|
||||
class StructureRequestController extends Controller
|
||||
{
|
||||
public function __construct() {
|
||||
$this->middleware('auth');
|
||||
$this->middleware('role:User');
|
||||
}
|
||||
|
||||
public function displayForm() {
|
||||
return view('structurerequest.requeststructure');
|
||||
}
|
||||
|
||||
public function storeForm(Request $request) {
|
||||
$this->validate($request, [
|
||||
'corporation_name' => 'required',
|
||||
'system' => 'required',
|
||||
'structure_size' => 'required',
|
||||
'structure_type' => 'required',
|
||||
'requested_drop_time' => 'required',
|
||||
'requester' => 'required',
|
||||
]);
|
||||
|
||||
$lookup = new LookupHelper;
|
||||
|
||||
$config = config('esi');
|
||||
|
||||
$requesterId = $lookup->CharacterNameToId($request->requester);
|
||||
$corporationId = $lookup->CorporationNameToId($request->corporation_name);
|
||||
|
||||
AnchorStructure::insert([
|
||||
'corporation_id' => $corporationId,
|
||||
'corporation_name' => $request->corporation_name,
|
||||
'system' => $request->system,
|
||||
'structure_size' => $request->structure_size,
|
||||
'structure_type' => $request->structure_type,
|
||||
'requested_drop_time' => $request->requested_drop_time,
|
||||
'requester_id' => $requesterId,
|
||||
'requester' => $request->requester,
|
||||
]);
|
||||
|
||||
//Send a mail out to the FC Team
|
||||
$fcTeam = UserPermission::where([
|
||||
'permission' => 'fc.team',
|
||||
])->get();
|
||||
|
||||
//Set the mail delay
|
||||
$delay = 5;
|
||||
|
||||
foreach($fcTeam as $fc) {
|
||||
$body = "Structure Anchor Request has been entered.<br>";
|
||||
$body .= "Please check the W4RP Services Site for the structure information.<br>";
|
||||
$body .= "<br>Sincerely,<br>";
|
||||
$body .= "Warped Intentions Leadership<br>";
|
||||
|
||||
//Dispatch the mail job
|
||||
$subject = "New Structure Anchor Request";
|
||||
ProcessSendEveMailJob::dispatch($body, (int)$fc->character_id, 'character', $subject, $config['primary'])->onQueue('mail')->delay(Carbon::now()->addSeconds($delay));
|
||||
|
||||
$delay += 15;
|
||||
}
|
||||
|
||||
return redirect('/structures/display/requests');
|
||||
}
|
||||
}
|
||||
308
app/Http/Controllers/MiningTaxes/MiningTaxesAdminController.php
Normal file
308
app/Http/Controllers/MiningTaxes/MiningTaxesAdminController.php
Normal file
@@ -0,0 +1,308 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers\MiningTaxes;
|
||||
|
||||
//Internal Library
|
||||
use App\Http\Controllers\Controller;
|
||||
use Illuminate\Http\Request;
|
||||
use Log;
|
||||
use Carbon\Carbon;
|
||||
use Khill\Lavacharts\Lavacharts;
|
||||
use Auth;
|
||||
use Illuminate\Support\Str;
|
||||
use Illuminate\Support\Collection;
|
||||
|
||||
//Application Library
|
||||
use App\Library\Helpers\LookupHelper;
|
||||
use App\Library\Helpers\StructureHelper;
|
||||
use Seat\Eseye\Exceptions\RequestFailedException;
|
||||
use App\Library\Esi\Esi;
|
||||
|
||||
//Models
|
||||
use App\Models\MiningTax\Invoice;
|
||||
use App\Models\MiningTax\Observer;
|
||||
use App\Models\MiningTax\Ledger;
|
||||
use App\Models\MiningTax\Payment;
|
||||
use App\Models\Moon\ItemComposition;
|
||||
use App\Models\Moon\MineralPrice;
|
||||
use App\Models\Esi\EsiToken;
|
||||
use App\Models\Esi\EsiScope;
|
||||
use App\Models\Structure\Structure;
|
||||
use App\Models\MiningTax\MiningOperation;
|
||||
|
||||
class MiningTaxesAdminController extends Controller
|
||||
{
|
||||
public function __construct() {
|
||||
$this->middleware('auth');
|
||||
$this->middleware('role:User');
|
||||
$this->middleware('permission:mining.officer');
|
||||
}
|
||||
|
||||
/**
|
||||
* Display the form for mining operations held by the alliance
|
||||
*/
|
||||
public function displayMiningOperationForm() {
|
||||
//Declare variables
|
||||
$config = config('esi');
|
||||
$lookup = new LookupHelper;
|
||||
$sHelper = new StructureHelper($config['primary'], $config['corporation']);
|
||||
$coll = new Collection;
|
||||
$structures = new Collection;
|
||||
|
||||
//Get all of the structures
|
||||
$athanors = $sHelper->GetStructuresByType('Athanor');
|
||||
$tataras = $sHelper->GetStructuresByType('Tatara');
|
||||
|
||||
//Cycle through each athanor and add it to the stack
|
||||
foreach($athanors as $athanor) {
|
||||
$structures->push([
|
||||
$athanor->structure_id => $athanor->structure_name,
|
||||
]);
|
||||
}
|
||||
//Cycle through each tatara and add it to the stack
|
||||
foreach($tataras as $tatara) {
|
||||
$structures->push([
|
||||
$tatara->structure_id => $tatara->structure_name,
|
||||
]);
|
||||
}
|
||||
//Sort all of the structures
|
||||
$structures->sort();
|
||||
|
||||
//Get the current mining operations.
|
||||
$operations = MiningOperation::where([
|
||||
'processed' => 'No',
|
||||
])->get();
|
||||
|
||||
return view('miningtax.admin.display.miningops.form')->with('structures', $structures)
|
||||
->with('operations', $operations);
|
||||
}
|
||||
|
||||
/**
|
||||
* Store the results from the mining operations form
|
||||
*/
|
||||
public function storeMiningOperationForm(Request $request) {
|
||||
//Validate the data
|
||||
$this->validate($request, [
|
||||
'name' => 'required',
|
||||
'date' => 'required',
|
||||
'structure' => 'required',
|
||||
]);
|
||||
|
||||
$config = config('esi');
|
||||
$sHelper = new StructureHelper($config['primary'], $config['corporation']);
|
||||
|
||||
//Get the name of the structure from the database
|
||||
$m = $sHelper->GetStructureInfo($request->structure);
|
||||
|
||||
//Save the mining operation into the database
|
||||
$operation = new MiningOperation;
|
||||
$operation->structure_id = $request->structure;
|
||||
$operation->structure_name = $m->structure_name;
|
||||
$operation->authorized_by_id = auth()->user()->getId();
|
||||
$operation->authorized_by_name = auth()->user()->getName();
|
||||
$operation->operation_name = $request->name;
|
||||
$operation->operation_date = $request->date;
|
||||
$operation->processed = 'No';
|
||||
$operation->processed_on = null;
|
||||
$operation->save();
|
||||
|
||||
return redirect('/admin/dashboard')->with('success', 'Operation added successfully.');
|
||||
}
|
||||
|
||||
/**
|
||||
* Display the page to approve corporation moon rentals
|
||||
*/
|
||||
public function DisplayMoonRentalRequests() {
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Approve a moon rental from the form
|
||||
*/
|
||||
public function storeApproveMoonRentalRequest() {
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Display the page to setup the form for corporations to rent a moon
|
||||
*/
|
||||
public function DisplayMoonRentalForm() {
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Store the details for the form for corporations renting a specific moon
|
||||
*/
|
||||
public function StoreMoonRentalForm() {
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Remove a moon from being rented from a specific corporation
|
||||
*/
|
||||
public function DeleteMoonRental(Request $request) {
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Display an invoice based on it's id
|
||||
*
|
||||
* @var $invoiceId
|
||||
*/
|
||||
public function displayInvoice($invoiceId) {
|
||||
$ores = array();
|
||||
$moons = array();
|
||||
$totalPrice = 0.00;
|
||||
$config = config('esi');
|
||||
$structure = new StructureHelper($config['primary'], $config['corporation']);
|
||||
|
||||
//Get the invoice from the database
|
||||
$invoice = Invoice::where([
|
||||
'invoice_id' => $invoiceId,
|
||||
])->first();
|
||||
|
||||
//Get the line items for the ledger for the invoice
|
||||
$items = Ledger::where([
|
||||
'invoice_id' => $invoiceId,
|
||||
])->get();
|
||||
|
||||
//Build the total ores table for the display page
|
||||
foreach($items as $item) {
|
||||
if(!isset($ores[$item['ore_name']])) {
|
||||
$ores[$item['ore_name']] = 0;
|
||||
}
|
||||
$ores[$item['ore_name']] = $ores[$item['ore_name']] + $item['quantity'];
|
||||
|
||||
$totalPrice += $item['amount'];
|
||||
}
|
||||
|
||||
//Print out the lines of the ledger line by line for another table
|
||||
foreach($items as $item) {
|
||||
//Get the structure info from the database or esi
|
||||
$tempObserverInfo = $structure->GetStructureInfo($item['observer_id']);
|
||||
|
||||
if(isset($tempObserverInfo->name)) {
|
||||
array_push($moons, [
|
||||
'character_name' => $item['character_name'],
|
||||
'observer_name' => $tempObserverInfo->name,
|
||||
'type_id' => $item['type_id'],
|
||||
'ore_name' => $item['ore_name'],
|
||||
'quantity' => $item['quantity'],
|
||||
'amount' => $item['amount'],
|
||||
'tax_amount' => $item['amount'] * $config['public_mining_tax'],
|
||||
]);
|
||||
} else {
|
||||
array_push($moons, [
|
||||
'character_name' => $item['character_name'],
|
||||
'observer_name' => $tempObserverInfo->structure_name,
|
||||
'type_id' => $item['type_id'],
|
||||
'ore_name' => $item['ore_name'],
|
||||
'quantity' => $item['quantity'],
|
||||
'amount' => $item['amount'],
|
||||
'tax_amount' => $item['amount'] * $config['public_mining_tax'],
|
||||
]);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
return view('miningtax.admin.display.details.invoice')->with('ores', $ores)
|
||||
->with('moons', $moons)
|
||||
->with('invoice', $invoice)
|
||||
->with('totalPrice', $totalPrice);
|
||||
}
|
||||
|
||||
/**
|
||||
* Display current unpaid invoices
|
||||
*/
|
||||
public function DisplayUnpaidInvoice() {
|
||||
$invoices = Invoice::where([
|
||||
'status' => 'Pending',
|
||||
])->orWhere([
|
||||
'status' => 'Late',
|
||||
])->orWhere([
|
||||
'status' => 'Deferred',
|
||||
])->orderByDesc('invoice_id')->paginate(50);
|
||||
|
||||
$totalAmount = Invoice::where([
|
||||
'status' => 'Pending',
|
||||
])->orWhere([
|
||||
'status' => 'Late',
|
||||
])->orWhere([
|
||||
'status' => 'Deferred',
|
||||
])->sum('invoice_amount');
|
||||
|
||||
return view('miningtax.admin.display.unpaid')->with('invoices', $invoices);
|
||||
}
|
||||
|
||||
/**
|
||||
* Search unpaid invoices
|
||||
*/
|
||||
public function SearchUnpaidInvoice(Request $request) {
|
||||
$invoices = Invoice::where('invoice_id', 'LIKE', '%' . $request->q . '%')
|
||||
->where(['status' => 'Pending'])
|
||||
->orWhere(['status' => 'Late'])
|
||||
->orWhere(['status' => 'Deferred'])
|
||||
->orderByDesc('invoice_id')
|
||||
->paginate(25);
|
||||
|
||||
if(count($invoices) > 0) {
|
||||
return view('miningtax.admin.display.unpaid')->with('invoices', $invoices);
|
||||
}
|
||||
|
||||
return view('miningtax.admin.display.unpaid')->with('error', 'No invoices found');
|
||||
}
|
||||
|
||||
/**
|
||||
* Display page to modify an unpaid invoice
|
||||
*/
|
||||
public function DisplayModifyInvoice() {
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Modify an unpaid invoice
|
||||
*/
|
||||
public function ProcessModifyInvoice() {
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Mark an invoice paid
|
||||
*/
|
||||
public function UpdateInvoice(Request $request) {
|
||||
$this->validate($request, [
|
||||
'invoiceId' => 'required',
|
||||
'status' => 'required',
|
||||
]);
|
||||
|
||||
Invoice::where([
|
||||
'invoice_id' => $request->invoiceId,
|
||||
])->update([
|
||||
'status' => $request->status,
|
||||
'modified_by_id' => auth()->user()->getId(),
|
||||
'modified_by_name' => auth()->user()->getName(),
|
||||
]);
|
||||
|
||||
return redirect('/miningtax/admin/display/unpaid')->with('success', 'Invoice successfully updated.');
|
||||
}
|
||||
|
||||
/**
|
||||
* Display past paid invoices
|
||||
*/
|
||||
public function DisplayPaidInvoices() {
|
||||
$invoices = Invoice::where([
|
||||
'status' => 'Paid',
|
||||
])->orWhere([
|
||||
'status' => 'Paid Late',
|
||||
])->paginate(50);
|
||||
|
||||
$totalAmount = Invoice::where([
|
||||
'status' => 'Paid',
|
||||
])->orWhere([
|
||||
'status' => 'Paid Late',
|
||||
])->sum('invoice_amount');
|
||||
|
||||
return view('miningtax.admin.display.paidinvoices')->with('invoices', $invoices)
|
||||
->with('totalAmount', $totalAmount);
|
||||
}
|
||||
}
|
||||
635
app/Http/Controllers/MiningTaxes/MiningTaxesController.php
Normal file
635
app/Http/Controllers/MiningTaxes/MiningTaxesController.php
Normal file
@@ -0,0 +1,635 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers\MiningTaxes;
|
||||
|
||||
//Internal Library
|
||||
use App\Http\Controllers\Controller;
|
||||
use Illuminate\Http\Request;
|
||||
use DB;
|
||||
use Log;
|
||||
use Carbon\Carbon;
|
||||
use Khill\Lavacharts\Lavacharts;
|
||||
use Auth;
|
||||
use Illuminate\Support\Collection;
|
||||
use Illuminate\Support\Str;
|
||||
|
||||
//Library Helpers
|
||||
use App\Library\Helpers\LookupHelper;
|
||||
use App\Library\Helpers\StructureHelper;
|
||||
use Seat\Eseye\Exceptions\RequestFailedException;
|
||||
use App\Library\Esi\Esi;
|
||||
use App\Library\Moons\MoonCalc;
|
||||
|
||||
//Models
|
||||
use App\Models\Moon\ItemComposition;
|
||||
use App\Models\Moon\MineralPrice;
|
||||
use App\Models\MiningTax\Ledger;
|
||||
use App\Models\MiningTax\Observer;
|
||||
use App\Models\MiningTax\Invoice;
|
||||
use App\Models\Esi\EsiToken;
|
||||
use App\Models\Esi\EsiScope;
|
||||
use App\Models\User\User;
|
||||
use App\Models\MoonRental\AllianceMoon;
|
||||
use App\Models\MoonRental\AllianceMoonOre;
|
||||
use App\Models\MoonRental\AllianceMoonRental;
|
||||
|
||||
class MiningTaxesController extends Controller
|
||||
{
|
||||
/**
|
||||
* Construct to deal with middleware and other items
|
||||
*/
|
||||
public function __construct() {
|
||||
$this->middleware('auth');
|
||||
$this->middleware('role:User');
|
||||
}
|
||||
|
||||
/**
|
||||
* Display the moons either the person is renting, or their corp are renting
|
||||
*/
|
||||
public function DisplayRentedMoons() {
|
||||
$moons = array();
|
||||
|
||||
$lookup = new LookupHelper;
|
||||
|
||||
$userId = auth()->user()->getId();
|
||||
$charInfo = $lookup->GetCharacterInfo(auth()->user()->getId());
|
||||
$corpId = $charInfo->corporation_id;
|
||||
|
||||
|
||||
$tempMoons = AllianceMoonRental::where([
|
||||
'entity_id' => $userId,
|
||||
])->orWhere([
|
||||
'entity_id' => $corpId,
|
||||
])->get();
|
||||
|
||||
//Foreach of the moons we got let's build the moon info and the ore data
|
||||
foreach($tempMoons as $tempMoon) {
|
||||
//Get the ores for the moon
|
||||
$ores = AllianceMoonOre::where([
|
||||
'moon_id' => $tempMoon->moon_id,
|
||||
])->get()->toArray();
|
||||
|
||||
$moons->push([
|
||||
'moon_id' => $tempMoon->moon_id,
|
||||
'system' => $tempMoon->system_name,
|
||||
'moon_name' => $tempMoon->name,
|
||||
'ores' => $ores,
|
||||
'worth_amount' => $tempMoon->worth_amount,
|
||||
'rental_amount' => $tempMoon->rental_amount,
|
||||
]);
|
||||
}
|
||||
|
||||
return view('miningtax.user.display.rentedmoons')->with('moons', $moons)
|
||||
->with('ores', $ores);
|
||||
}
|
||||
|
||||
/**
|
||||
* Display the page with the moon rental form
|
||||
*/
|
||||
public function DisplayMoonRentalForm(Request $request) {
|
||||
$this->validate($request, [
|
||||
'moon_id' => 'required',
|
||||
'moon_name' => 'required',
|
||||
'worth_amount' => 'required',
|
||||
'rental_amount' => 'required',
|
||||
]);
|
||||
|
||||
$moon = AllianceMoon::where([
|
||||
'moon_id' => $request->moon_id,
|
||||
])->first();
|
||||
|
||||
$ores = AllianceMoonOre::where([
|
||||
'moon_id' => $request->moon_id,
|
||||
])->get();
|
||||
|
||||
return view('miningtax.user.display.moonrentals.form')->with('moon', $moon)
|
||||
->with('ores', $ores);
|
||||
}
|
||||
|
||||
/**
|
||||
* Store the information from the moon rental form
|
||||
*/
|
||||
public function storeMoonRentalForm(Request $request) {
|
||||
$this->validate($request, [
|
||||
'moon_id' => 'required',
|
||||
'rental_start' => 'required',
|
||||
'rental_end' => 'required',
|
||||
'entity_name' => 'required',
|
||||
'entity_type' => 'required',
|
||||
]);
|
||||
|
||||
$lookup = new LookupHelper;
|
||||
$entityId = null;
|
||||
|
||||
//From the name and type of the entity get the entity id.
|
||||
if($request->entity_type == 'Character') {
|
||||
$entityId = $lookup->CharacterNameToId($request->entity_name);
|
||||
} else if($request->entity_type == 'Corporation') {
|
||||
$entityId = $lookup->CorporationNameToId($request->entity_name);
|
||||
} else if($request->entity_type == 'Alliance') {
|
||||
$entityId = $lookup->AllianceNameToId($request->entity_name);
|
||||
} else {
|
||||
return redirect('/dashboard')->with('error', 'Moon Rental error. Please contact the site admin.');
|
||||
}
|
||||
|
||||
//Create the next billing date from a Carbon date 3 months from the rental start
|
||||
$nextBillingDate = Carbon::create($request->rental_start)->addMonths(3);
|
||||
|
||||
//Create the uniqid for the billing cycle.
|
||||
$invoiceId = "MR" . uniqid();
|
||||
|
||||
//Get the moon's information from the database so we know how much to make the bill for
|
||||
$moon = AllianceMoon::where([
|
||||
'moon_id' => $request->moon_id,
|
||||
])->first();
|
||||
|
||||
//Update the data on the Alliance Moon
|
||||
AllianceMoon::where([
|
||||
'moon_id' => $request->moon_id,
|
||||
])->update([
|
||||
'rented' => 'Yes',
|
||||
]);
|
||||
|
||||
//Insert a new moon rental into the database
|
||||
AllianceMoonRental::insert([
|
||||
'moon_id' => $moon->moon_id,
|
||||
'moon_name' => $moon->name,
|
||||
'rental_amount' => $moon->rental_amount,
|
||||
'rental_start' => $request->rental_start,
|
||||
'rental_end' => $request->rental_end,
|
||||
'next_billing_date' => $nextBillingDate,
|
||||
'entity_id' => $entityId,
|
||||
'entity_name' => $request->entity_name,
|
||||
'entity_type' => $request->entity_type,
|
||||
]);
|
||||
|
||||
return redirect('/dashboard')->with('success', 'Before placing a structure please send the ISK to the holding corp with the description of ' . $invoiceId);
|
||||
}
|
||||
|
||||
public function displayAvailableMoons() {
|
||||
//Declare variables
|
||||
$moons = new Collection;
|
||||
$mHelper = new MoonCalc;
|
||||
$lookup = new LookupHelper;
|
||||
$system = array();
|
||||
|
||||
/**
|
||||
* Declare our different flavors of moon goo for the blade
|
||||
*/
|
||||
$r4Goo = [
|
||||
'Zeolites',
|
||||
'Sylvite',
|
||||
'Bitumens',
|
||||
'Coesite',
|
||||
];
|
||||
|
||||
$r8Goo = [
|
||||
'Cobaltite',
|
||||
'Euxenite',
|
||||
'Titanite',
|
||||
'Scheelite',
|
||||
];
|
||||
|
||||
$r16Goo = [
|
||||
'Otavite',
|
||||
'Sperrylite',
|
||||
'Vanadinite',
|
||||
'Chromite',
|
||||
];
|
||||
|
||||
$r32Goo = [
|
||||
'Carnotite',
|
||||
'Zircon',
|
||||
'Pollucite',
|
||||
'Cinnabar',
|
||||
];
|
||||
|
||||
$r64Goo = [
|
||||
'Xenotime',
|
||||
'Monazite',
|
||||
'Loparite',
|
||||
'Ytterbite',
|
||||
];
|
||||
|
||||
//Get all of the system names from the database by plucking all the non-rented moon system names
|
||||
$systems = AllianceMoon::where([
|
||||
'rented' => 'No',
|
||||
])->pluck('system_name')->unique()->toArray();
|
||||
|
||||
//Get all of the moons which are not rented
|
||||
$allyMoons = AllianceMoon::where([
|
||||
'rented' => 'No',
|
||||
])->get();
|
||||
|
||||
//Cycle through all of the moons to create arrays of data
|
||||
foreach($allyMoons as $moon) {
|
||||
$ores = AllianceMoonOre::where([
|
||||
'moon_id' => $moon->moon_id,
|
||||
])->get(['ore_name', 'quantity'])->toArray();
|
||||
|
||||
if($moon->moon_type != 'R32' && $moon->moon_type != 'R64') {
|
||||
$moons->push([
|
||||
'system' => $moon->system_name,
|
||||
'moon_name' => $moon->name,
|
||||
'ores' => $ores,
|
||||
'worth_amount' => $moon->worth_amount,
|
||||
'rental_amount' => $moon->rental_amount,
|
||||
'moon_id' => $moon->moon_id,
|
||||
]);
|
||||
}
|
||||
}
|
||||
|
||||
return view('miningtax.user.display.moons.availablemoons')->with('moons', $moons)
|
||||
->with('systems', $systems)
|
||||
->with('r4Goo', $r4Goo)
|
||||
->with('r8Goo', $r8Goo)
|
||||
->with('r16Goo', $r16Goo)
|
||||
->with('r32Goo', $r32Goo)
|
||||
->with('r64Goo', $r64Goo);
|
||||
}
|
||||
|
||||
/**
|
||||
* Display all the moons in Warped Intentions Sovreignty
|
||||
*/
|
||||
public function displayAllMoons() {
|
||||
//Declare variables
|
||||
$moons = new Collection;
|
||||
$mHelper = new MoonCalc;
|
||||
$lookup = new LookupHelper;
|
||||
$system = array();
|
||||
|
||||
/**
|
||||
* Declare our different flavors of moon goo for the blade
|
||||
*/
|
||||
$r4Goo = [
|
||||
'Zeolites',
|
||||
'Sylvite',
|
||||
'Bitumens',
|
||||
'Coesite',
|
||||
];
|
||||
|
||||
$r8Goo = [
|
||||
'Cobaltite',
|
||||
'Euxenite',
|
||||
'Titanite',
|
||||
'Scheelite',
|
||||
];
|
||||
|
||||
$r16Goo = [
|
||||
'Otavite',
|
||||
'Sperrylite',
|
||||
'Vanadinite',
|
||||
'Chromite',
|
||||
];
|
||||
|
||||
$r32Goo = [
|
||||
'Carnotite',
|
||||
'Zircon',
|
||||
'Pollucite',
|
||||
'Cinnabar',
|
||||
];
|
||||
|
||||
$r64Goo = [
|
||||
'Xenotime',
|
||||
'Monazite',
|
||||
'Loparite',
|
||||
'Ytterbite',
|
||||
];
|
||||
|
||||
$systems = [
|
||||
'0-NTIS',
|
||||
'1-NJLK',
|
||||
'35-JWD',
|
||||
'8KR9-5',
|
||||
'EIMJ-M',
|
||||
'F-M1FU',
|
||||
'G-C8QO',
|
||||
'I6M-9U',
|
||||
'L5D-ZL',
|
||||
'L-YMYU',
|
||||
'VQE-CN',
|
||||
'VR-YIQ',
|
||||
'XZ-SKZ',
|
||||
'Y-CWQY',
|
||||
];
|
||||
|
||||
//Get all of the moons which are not rented
|
||||
$allyMoons = AllianceMoon::all();
|
||||
|
||||
foreach($allyMoons as $moon) {
|
||||
$ores = AllianceMoonOre::where([
|
||||
'moon_id' => $moon->moon_id,
|
||||
])->get(['ore_name', 'quantity'])->toArray();
|
||||
|
||||
$moons->push([
|
||||
'system' => $moon->system_name,
|
||||
'moon_name' => $moon->name,
|
||||
'ores' => $ores,
|
||||
]);
|
||||
}
|
||||
|
||||
return view('miningtax.user.display.moons.allmoons')->with('moons', $moons)
|
||||
->with('systems', $systems)
|
||||
->with('r4Goo', $r4Goo)
|
||||
->with('r8Goo', $r8Goo)
|
||||
->with('r16Goo', $r16Goo)
|
||||
->with('r32Goo', $r32Goo)
|
||||
->with('r64Goo', $r64Goo);
|
||||
}
|
||||
|
||||
/**
|
||||
* Display an invoice based on it's id
|
||||
*
|
||||
* @var $invoiceId
|
||||
*/
|
||||
public function displayInvoice($invoiceId) {
|
||||
$ores = array();
|
||||
$moons = array();
|
||||
$totalPrice = 0.00;
|
||||
$config = config('esi');
|
||||
$structure = new StructureHelper($config['primary'], $config['corporation']);
|
||||
|
||||
$systems = AllianceMoon::where([
|
||||
'rented' => 'No',
|
||||
])->pluck('system_name')->unique()->toArray();
|
||||
|
||||
//Get the invoice from the database
|
||||
$invoice = Invoice::where([
|
||||
'invoice_id' => $invoiceId,
|
||||
])->first();
|
||||
|
||||
//Get the line items for the ledger for the invoice
|
||||
$items = Ledger::where([
|
||||
'invoice_id' => $invoiceId,
|
||||
])->get();
|
||||
|
||||
//Build the total ores table for the display page
|
||||
foreach($items as $item) {
|
||||
if(!isset($ores[$item['ore_name']])) {
|
||||
$ores[$item['ore_name']] = 0;
|
||||
}
|
||||
$ores[$item['ore_name']] = $ores[$item['ore_name']] + $item['quantity'];
|
||||
|
||||
$totalPrice += $item['amount'];
|
||||
}
|
||||
|
||||
//Print out the lines of the ledger line by line for another table
|
||||
foreach($items as $item) {
|
||||
//Get the structure info from the database or esi
|
||||
$tempObserverInfo = $structure->GetStructureInfo($item['observer_id']);
|
||||
|
||||
//Create the array for the line by line
|
||||
array_push($moons, [
|
||||
'character_name' => $item['character_name'],
|
||||
'observer_name' => $tempObserverInfo->structure_name,
|
||||
'type_id' => $item['type_id'],
|
||||
'ore_name' => $item['ore_name'],
|
||||
'quantity' => $item['quantity'],
|
||||
'amount' => $item['amount'],
|
||||
'tax_amount' => $item['amount'] * $config['public_mining_tax'],
|
||||
]);
|
||||
}
|
||||
|
||||
return view('miningtax.user.display.details.invoice')->with('ores', $ores)
|
||||
->with('moons', $moons)
|
||||
->with('invoice', $invoice)
|
||||
->with('totalPrice', $totalPrice);
|
||||
}
|
||||
|
||||
/**
|
||||
* Display the users invoices
|
||||
*/
|
||||
public function DisplayInvoices() {
|
||||
//Declare variables
|
||||
$paidAmount = 0.00;
|
||||
$unpaidAmount = 0.00;
|
||||
|
||||
//Get the unpaid invoices
|
||||
$unpaid = Invoice::where([
|
||||
'status' => 'Pending',
|
||||
'character_id' => auth()->user()->getId(),
|
||||
])->paginate(15);
|
||||
|
||||
//Get the late invoices
|
||||
$late = Invoice::where([
|
||||
'status' => 'Late',
|
||||
'character_id' => auth()->user()->getId(),
|
||||
])->paginate(10);
|
||||
|
||||
//Get the deferred invoices
|
||||
$deferred = Invoice::where([
|
||||
'status' => 'Deferred',
|
||||
'character_id' => auth()->user()->getId(),
|
||||
])->paginate(10);
|
||||
|
||||
//Get the paid invoices
|
||||
$paid = Invoice::where([
|
||||
'status' => 'Paid',
|
||||
'character_id' => auth()->user()->getId(),
|
||||
])->paginate(15);
|
||||
|
||||
//Total up the unpaid invoices
|
||||
foreach($unpaid as $un) {
|
||||
$unpaidAmount += $un->invoice_amount;
|
||||
}
|
||||
|
||||
//Total up the paid invoices
|
||||
foreach($paid as $p) {
|
||||
$paidAmount += $p->invoice_amount;
|
||||
}
|
||||
|
||||
return view('miningtax.user.display.invoices.invoices')->with('unpaid', $unpaid)
|
||||
->with('late', $late)
|
||||
->with('deferred', $deferred)
|
||||
->with('paid', $paid)
|
||||
->with('unpaidAmount', $unpaidAmount)
|
||||
->with('paidAmount', $paidAmount);
|
||||
}
|
||||
|
||||
/**
|
||||
* Display all of the upcoming extractions
|
||||
*/
|
||||
public function DisplayUpcomingExtractions() {
|
||||
|
||||
//Declare variables
|
||||
$structures = array();
|
||||
$esiHelper = new Esi;
|
||||
$config = config('esi');
|
||||
$sHelper = new StructureHelper($config['primary'], $config['corporation']);
|
||||
$structures = array();
|
||||
$structuresCalendar = array();
|
||||
$lava = new Lavacharts;
|
||||
|
||||
if(!$esiHelper->HaveEsiScope($config['primary'], 'esi-industry.read_corporation_mining.v1')) {
|
||||
return redirect('/dashboard')->with('error', 'Tell the nub Minerva to register the correct scopes for the services site.');
|
||||
}
|
||||
|
||||
$refreshToken = $esiHelper->GetRefreshToken($config['primary']);
|
||||
$esi = $esiHelper->SetupEsiAuthentication($refreshToken);
|
||||
|
||||
//Get the esi data for extractions
|
||||
try {
|
||||
$extractions = $esi->invoke('get', '/corporation/{corporation_id}/mining/extractions/', [
|
||||
'corporation_id' => $config['corporation'],
|
||||
]);
|
||||
} catch(RequestFailedException $e) {
|
||||
Log::warning('Could not retrieve extractions from ESI in MiningTaxesController.php');
|
||||
return redirect('/dashboard')->with('error', "Could not pull extractions from ESI data.");
|
||||
}
|
||||
|
||||
//Basically get the structure info and attach it to the variable set
|
||||
foreach($extractions as $ex) {
|
||||
$sName = $sHelper->GetStructureInfo($ex->structure_id);
|
||||
//Add the information into the structures array to go to the page to be displayed
|
||||
array_push($structures, [
|
||||
'structure_name' => $sName->structure_name,
|
||||
'start_time' => $esiHelper->DecodeDate($ex->extraction_start_time),
|
||||
'arrival_time' => $esiHelper->DecodeDate($ex->chunk_arrival_time),
|
||||
'decay_time' => $esiHelper->DecodeDate($ex->natural_decay_time),
|
||||
]);
|
||||
}
|
||||
|
||||
//Sort extractions by arrival time
|
||||
$structuresCollection = collect($structures);
|
||||
$sorted = $structuresCollection->sortBy('arrival_time');
|
||||
//Store the sorted collection back into the variable before being used again.
|
||||
$structures = $sorted->all();
|
||||
|
||||
/**
|
||||
* Create a 3 month calendar for the past, current, and future extractions
|
||||
*/
|
||||
//Create the data tables
|
||||
$calendar = $lava->DataTable();
|
||||
|
||||
$calendar->addDateTimeColumn('Date')
|
||||
->addNumberColumn('Total');
|
||||
|
||||
foreach($extractions as $extraction) {
|
||||
array_push($structuresCalendar, [
|
||||
'date' => $esiHelper->DecodeDate($extraction->chunk_arrival_time),
|
||||
'total' => 0,
|
||||
]);
|
||||
}
|
||||
|
||||
foreach($extractions as $extraction) {
|
||||
for($i = 0; $i < sizeof($structuresCalendar); $i++) {
|
||||
//Create the dates in a carbon object, then only get the Y-m-d to compare.
|
||||
$tempStructureDate = Carbon::createFromFormat('Y-m-d H:i:s', $structuresCalendar[$i]['date'])->toDateString();
|
||||
$extractionDate = Carbon::createFromFormat('Y-m-d H:i:s', $esiHelper->DecodeDate($extraction->chunk_arrival_time))->toDateString();
|
||||
//check if the dates are equal then increase the total by 1
|
||||
if($tempStructureDate == $extractionDate) {
|
||||
$structuresCalendar[$i]['total'] += 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
foreach($structuresCalendar as $structureC) {
|
||||
$calendar->addRow([
|
||||
$structureC['date'],
|
||||
$structureC['total'],
|
||||
]);
|
||||
}
|
||||
|
||||
$lava->CalendarChart('Extractions', $calendar, [
|
||||
'title' => 'Upcoming Extractions',
|
||||
'unusedMonthOutlineColor' => [
|
||||
'stroke' => '#ECECEC',
|
||||
'strokeOpacity' => 0.75,
|
||||
'strokeWidth' => 1,
|
||||
],
|
||||
'dayOfWeekLabel' => [
|
||||
'color' => '#4f5b0d',
|
||||
'fontSize' => 16,
|
||||
'italic' => true,
|
||||
],
|
||||
'noDataPattern' => [
|
||||
'color' => '#DDD',
|
||||
'backgroundColor' => '#11FFFF',
|
||||
],
|
||||
'colorAxis' => [
|
||||
'values' => [0, 5],
|
||||
'colors' => ['green', 'red'],
|
||||
],
|
||||
]);
|
||||
|
||||
//Return the view with the extractions variable for html processing
|
||||
return view('miningtax.user.display.pulls.upcoming')->with('structures', $structures)
|
||||
->with('lava', $lava)
|
||||
->with('calendar', $calendar);
|
||||
}
|
||||
|
||||
/**
|
||||
* Display the ledger for the moons.
|
||||
*/
|
||||
public function DisplayMoonLedgers() {
|
||||
//Declare variables
|
||||
$structures = array();
|
||||
$tempLedgers = array();
|
||||
$miningLedgers = array();
|
||||
$ledgers = array();
|
||||
$esiHelper = new Esi;
|
||||
$lookup = new LookupHelper;
|
||||
$config = config('esi');
|
||||
|
||||
//Check for the esi scope
|
||||
if(!$esiHelper->HaveEsiScope($config['primary'], 'esi-industry.read_corporation_mining.v1')) {
|
||||
return redirect('/dashboard')->with('error', 'Tell the nub Minerva to register the ESI for the holding corp for corp mining.');
|
||||
} else {
|
||||
if(!$esiHelper->HaveEsiScope($config['primary'], 'esi-universe.read_structures.v1')) {
|
||||
return redirect('/dashboard')->with('error', 'Tell the nub Minerva to register the ESI for the holding corp for structures.');
|
||||
}
|
||||
}
|
||||
|
||||
//Get the refresh token if scope checks have passed
|
||||
$refreshToken = $esiHelper->GetRefreshToken($config['primary']);
|
||||
|
||||
//Setup the esi container
|
||||
$esi = $esiHelper->SetupEsiAuthentication($refreshToken);
|
||||
//Declare the structure helper after the esi container has been created
|
||||
$sHelper = new StructureHelper($config['primary'], $config['corporation'], $esi);
|
||||
|
||||
//Get the character data from the lookup table if possible or esi
|
||||
$character = $lookup->GetCharacterInfo($config['primary']);
|
||||
|
||||
//Get the corporation information from the character id
|
||||
$corpInfo = $lookup->GetCorporationInfo($character->corporation_id);
|
||||
|
||||
//Get the observers from the database
|
||||
$observers = Observer::all();
|
||||
|
||||
//Get the ledgers for each structure one at a time
|
||||
foreach($observers as $obs) {
|
||||
//Get the structure information
|
||||
$structureInfo = $sHelper->GetStructureInfo($obs->observer_id);
|
||||
|
||||
//Add the name to the structures array
|
||||
array_push($structures, $structureInfo->name);
|
||||
/**
|
||||
* Get the ledger from each observer.
|
||||
* We don't care about observer type as it can only be an Athanor or Tatara
|
||||
*/
|
||||
$ledgers = Ledger::where([
|
||||
'observer_id' => $obs->observer_id,
|
||||
'character_id' => auth()->user()->getId(),
|
||||
])->where('last_updated', '>=', Carbon::now()->subDays(30))->get();
|
||||
|
||||
if($ledgers->count() > 0) {
|
||||
foreach($ledgers as $ledger) {
|
||||
//Foreach ledger add it to the array
|
||||
array_push($miningLedgers, [
|
||||
'structure' => $structureInfo->name,
|
||||
'character' => auth()->user()->getName(),
|
||||
'corpTicker' => $corpInfo->ticker,
|
||||
'ore' => $ledger->ore_name,
|
||||
'quantity' => $ledger->quantity,
|
||||
'updated' => $ledger->last_updated,
|
||||
]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//Return the view
|
||||
return view('miningtax.user.display.details.ledger')->with('miningLedgers', $miningLedgers)
|
||||
->with('structures', $structures);
|
||||
}
|
||||
}
|
||||
@@ -1,239 +0,0 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers\Moons;
|
||||
|
||||
//Internal Library
|
||||
use Illuminate\Http\Request;
|
||||
use App\Http\Controllers\Controller;
|
||||
use Log;
|
||||
use Carbon\Carbon;
|
||||
|
||||
//App Library
|
||||
use Seat\Eseye\Exceptions\RequestFailedException;
|
||||
use App\Library\Esi\Esi;
|
||||
use App\Library\Structures\StructureHelper;
|
||||
use App\Library\Lookups\LookupHelper;
|
||||
|
||||
//App Models
|
||||
use App\Models\Esi\EsiToken;
|
||||
use App\Models\Esi\EsiScope;
|
||||
use App\Models\Lookups\ItemLookup;
|
||||
use App\Models\MoonRentals\AllianceRentalMoon;
|
||||
use App\Models\Moon\RentalMoon;
|
||||
use App\Models\Moon\CorpObserversRegistered;
|
||||
use App\Models\Moon\CorpMoonObserver;
|
||||
|
||||
class MoonLedgerController extends Controller
|
||||
{
|
||||
public function __construct() {
|
||||
$this->middleware('auth');
|
||||
$this->middleware('role:User');
|
||||
}
|
||||
|
||||
public function displayMoonLedgerNew() {
|
||||
|
||||
}
|
||||
|
||||
public function displayMoonLedger() {
|
||||
//Declare variables
|
||||
$structures = array();
|
||||
$miningLedgers = array();
|
||||
$tempMiningLedger = array();
|
||||
$tempMining = array();
|
||||
$esiHelper = new Esi;
|
||||
$lookup = new LookupHelper;
|
||||
$response = null;
|
||||
$structureInfo = null;
|
||||
|
||||
//Check for the esi scope
|
||||
if(!$esiHelper->HaveEsiScope(auth()->user()->getId(), 'esi-industry.read_corporation_mining.v1')) {
|
||||
return redirect('/dashboard')->with('error', 'Need to add scopes for esi-industry.read_corporation_mining.v1');
|
||||
} else {
|
||||
if(!$esiHelper->HaveEsiScope(auth()->user()->getId(), 'esi-universe.read_structures.v1')) {
|
||||
return redirect('/dashboard')->with('error', 'Need to add scope for esi-universe.read_structures.v1');
|
||||
}
|
||||
}
|
||||
|
||||
//Get the refresh token if scope checks have passed
|
||||
$refreshToken = $esiHelper->GetRefreshToken(auth()->user()->getId());
|
||||
|
||||
//Setup the esi container
|
||||
$esi = $esiHelper->SetupEsiAuthentication($refreshToken);
|
||||
|
||||
//Get the character data from the lookup table if possible or esi
|
||||
$character = $lookup->GetCharacterInfo(auth()->user()->getId());
|
||||
|
||||
//Try to get the mining observers for the corporation from esi
|
||||
try {
|
||||
$responses = $esi->invoke('get', '/corporation/{corporation_id}/mining/observers/', [
|
||||
'corporation_id' => $character->corporation_id,
|
||||
]);
|
||||
} catch(RequestFailedException $e) {
|
||||
//If an exception has occurred for some reason redirect back to the dashboard with an error message
|
||||
return redirect('/dashboard')->with('error', 'Failed to get mining structures.');
|
||||
}
|
||||
|
||||
//For each mining observer, let's build the array of data to show on the page
|
||||
foreach($responses as $response) {
|
||||
//Try to get the structure information from esi
|
||||
try {
|
||||
$structureInfo = $esi->invoke('get', '/universe/structures/{structure_id}/', [
|
||||
'structure_id' => $response->observer_id,
|
||||
]);
|
||||
} catch(RequestFailedException $e) {
|
||||
//If an exception has occurred, then do nothing
|
||||
}
|
||||
|
||||
//We don't really care about the key, but it is better than just 0 through whatever number
|
||||
$structures[$response->observer_id] = $structureInfo->name;
|
||||
}
|
||||
|
||||
//For each of the structures we want to address it by it's key value pair.
|
||||
//This will allow us to do some interesting things in the display.
|
||||
foreach($structures as $key => $value) {
|
||||
try {
|
||||
$ledgers = $esi->invoke('get', '/corporation/{corporation_id}/mining/observers/{observer_id}/', [
|
||||
'corporation_id' => $character->corporation_id,
|
||||
'observer_id' => $key,
|
||||
]);
|
||||
} catch(RequestFailedException $e) {
|
||||
$ledgers = null;
|
||||
}
|
||||
|
||||
if($ledgers != null) {
|
||||
foreach($ledgers as $ledger) {
|
||||
//Declare a variable that will need to be cleared each time the foreach processes
|
||||
$tempArray = array();
|
||||
|
||||
//Get the character information from the character id
|
||||
$charInfo = $lookup->GetCharacterInfo($ledger->character_id);
|
||||
//Get the corp ticker
|
||||
$corpInfo = $lookup->GetCorporationInfo($charInfo->corporation_id);
|
||||
//Get the ore name from the type id
|
||||
$ore = $lookup->ItemIdToName($ledger->type_id);
|
||||
|
||||
//We only want to push the mining ledger entry into the array if it matches
|
||||
//the date within 30 days
|
||||
$sortTime = Carbon::now()->subDays(30);
|
||||
$current = Carbon::createFromFormat('Y-m-d', $ledger->last_updated);
|
||||
if($current->greaterThanOrEqualTo($sortTime)) {
|
||||
array_push($miningLedgers, [
|
||||
'structure' => $value,
|
||||
'character' => $charInfo->name,
|
||||
'corpTicker' => $corpInfo->ticker,
|
||||
'ore' => $ore,
|
||||
'quantity' => $ledger->quantity,
|
||||
'updated' => $ledger->last_updated,
|
||||
]);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return view('moons.ledger.displayledger')->with('miningLedgers', $miningLedgers)
|
||||
->with('structures', $structures);
|
||||
}
|
||||
|
||||
public function displayRentalMoonLedger() {
|
||||
//Declare variables
|
||||
$structures = array();
|
||||
$miningLedgers = array();
|
||||
$tempMiningLedger = array();
|
||||
$tempMining = array();
|
||||
$esiHelper = new Esi;
|
||||
$lookup = new LookupHelper;
|
||||
$response = null;
|
||||
$structureInfo = null;
|
||||
|
||||
//Get the configuration for the main site
|
||||
$config = config('esi');
|
||||
|
||||
//Check for the esi scope
|
||||
if(!$esiHelper->HaveEsiScope($config['primary'], 'esi-industry.read_corporation_mining.v1')) {
|
||||
return redirect('/dashboard')->with('error', 'Tell the nub Minerva to register the ESI for the holding corp.');
|
||||
} else {
|
||||
if(!$esiHelper->HaveEsiScope($config['primary'], 'esi-universe.read_structures.v1')) {
|
||||
return redirect('/dashboard')->with('error', 'Tell the nub Minerva to register the ESI for the holding corp.');
|
||||
}
|
||||
}
|
||||
|
||||
//Get the refresh token if scope checks have passed
|
||||
$refreshToken = $esiHelper->GetRefreshToken($config['primary']);
|
||||
|
||||
//Setup the esi container
|
||||
$esi = $esiHelper->SetupEsiAuthentication($refreshToken);
|
||||
|
||||
//Get the character data from the lookup table if possible or esi
|
||||
$character = $lookup->GetCharacterInfo($config['primary']);
|
||||
|
||||
//Try to get the mining observers for the corporation from esi
|
||||
try {
|
||||
$responses = $esi->invoke('get', '/corporation/{corporation_id}/mining/observers/', [
|
||||
'corporation_id' => $character->corporation_id,
|
||||
]);
|
||||
} catch(RequestFailedException $e) {
|
||||
//If an exception has occurred for some reason redirect back to the dashboard with an error message
|
||||
return redirect('/dashboard')->with('error', 'Failed to get mining structures.');
|
||||
}
|
||||
|
||||
//For each mining observer, let's build the array of data to show on the page
|
||||
foreach($responses as $response) {
|
||||
//Try to get the structure information from esi
|
||||
try {
|
||||
$structureInfo = $esi->invoke('get', '/universe/structures/{structure_id}/', [
|
||||
'structure_id' => $response->observer_id,
|
||||
]);
|
||||
} catch(RequestFailedException $e) {
|
||||
//If an exception has occurred, then do nothing
|
||||
}
|
||||
|
||||
//We don't really care about the key, but it is better than just 0 through whatever number
|
||||
$structures[$response->observer_id] = $structureInfo->name;
|
||||
}
|
||||
|
||||
//For each of the structures we want to address it by it's key value pair.
|
||||
//This will allow us to do some interesting things in the display.
|
||||
foreach($structures as $key => $value) {
|
||||
try {
|
||||
$ledgers = $esi->invoke('get', '/corporation/{corporation_id}/mining/observers/{observer_id}/', [
|
||||
'corporation_id' => $character->corporation_id,
|
||||
'observer_id' => $key,
|
||||
]);
|
||||
} catch(RequestFailedException $e) {
|
||||
$ledgers = null;
|
||||
}
|
||||
|
||||
if($ledgers != null) {
|
||||
foreach($ledgers as $ledger) {
|
||||
//Declare a variable that will need to be cleared each time the foreach processes
|
||||
$tempArray = array();
|
||||
|
||||
//Get the character information from the character id
|
||||
$charInfo = $lookup->GetCharacterInfo($ledger->character_id);
|
||||
//Get the corp ticker
|
||||
$corpInfo = $lookup->GetCorporationInfo($charInfo->corporation_id);
|
||||
//Get the ore name from the type id
|
||||
$ore = $lookup->ItemIdToName($ledger->type_id);
|
||||
|
||||
//We only want to push the mining ledger entry into the array if it matches
|
||||
//the date within 30 days
|
||||
$sortTime = Carbon::now()->subDays(30);
|
||||
$current = Carbon::createFromFormat('Y-m-d', $ledger->last_updated);
|
||||
if($current->greaterThanOrEqualTo($sortTime)) {
|
||||
array_push($miningLedgers, [
|
||||
'structure' => $value,
|
||||
'character' => $charInfo->name,
|
||||
'corpTicker' => $corpInfo->ticker,
|
||||
'ore' => $ore,
|
||||
'quantity' => $ledger->quantity,
|
||||
'updated' => $ledger->last_updated,
|
||||
]);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return view('moons.ledger.rentalledger')->with('miningLedgers', $miningLedgers)
|
||||
->with('structures', $structures);
|
||||
}
|
||||
}
|
||||
@@ -1,502 +0,0 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers\Moons;
|
||||
|
||||
//Internal Library
|
||||
use App\Http\Controllers\Controller;
|
||||
use Illuminate\Http\Request;
|
||||
use Auth;
|
||||
use Carbon\Carbon;
|
||||
use Log;
|
||||
|
||||
//Models
|
||||
use App\Models\Moon\Config;
|
||||
use App\Models\Moon\ItemComposition;
|
||||
use App\Models\Moon\RentalMoon;
|
||||
use App\Models\Moon\OrePrice;
|
||||
use App\Models\Moon\Price;
|
||||
use App\Models\Moon\AllianceMoon;
|
||||
use App\Models\MoonRentals\AllianceRentalMoon;
|
||||
use App\Models\Moon\AllianceMoonRequest;
|
||||
|
||||
//Library
|
||||
use App\Library\Moons\MoonCalc;
|
||||
use App\Library\Esi\Esi;
|
||||
use App\Library\Lookups\LookupHelper;
|
||||
|
||||
//Jobs
|
||||
use App\Jobs\ProcessSendEveMailJob;
|
||||
|
||||
class MoonsAdminController extends Controller
|
||||
{
|
||||
/**
|
||||
* Constructor for the class
|
||||
*/
|
||||
public function __construct() {
|
||||
$this->middleware('auth');
|
||||
$this->middleware('role:Admin');
|
||||
}
|
||||
|
||||
/**
|
||||
* Function to display moon requests
|
||||
*/
|
||||
public function displayMoonRequests() {
|
||||
$requests = AllianceMoonRequest::where([
|
||||
'status' => 'Pending',
|
||||
])->get();
|
||||
|
||||
return view('moons.admin.moonrequest')->with('requests', $requests);
|
||||
}
|
||||
|
||||
/**
|
||||
* Function to approve a moon request
|
||||
*/
|
||||
public function storeApprovedMoonRequest(Request $request) {
|
||||
//Validate the input request
|
||||
$this->validate($request, [
|
||||
'id' => 'required',
|
||||
'status' => 'required',
|
||||
'system' => 'required',
|
||||
'planet' => 'required',
|
||||
'moon' => 'required',
|
||||
]);
|
||||
|
||||
|
||||
//Get the request data which holds all of the information for the request user
|
||||
$moon = AllianceMoonRequest::where([
|
||||
'id' => $request->id,
|
||||
])->first();
|
||||
|
||||
//Get the configuration data to use later in the function
|
||||
$config = config('esi');
|
||||
|
||||
//If the request is approved, then update everything.
|
||||
if($request->status == 'Approved') {
|
||||
//Update the alliance moon request to either approved or denied
|
||||
AllianceMoonRequest::where([
|
||||
'id' => $request->id,
|
||||
])->update([
|
||||
'status' => $request->status,
|
||||
'approver_name' => auth()->user()->getName(),
|
||||
'approver_id' => auth()->user()->getId(),
|
||||
]);
|
||||
|
||||
//Update the alliance moon in the table to the correct status
|
||||
AllianceMoon::where([
|
||||
'System' => $request->system,
|
||||
'Planet' => $request->planet,
|
||||
'Moon' => $request->moon,
|
||||
])->update([
|
||||
'Corporation' => $moon->corporation_ticker,
|
||||
'Availability' => 'Deployed',
|
||||
]);
|
||||
|
||||
//Send an eve mail to the requestor stating they can set a moon up.
|
||||
//Setup the mail body
|
||||
$body = 'The moon request for ' . $request->system . ' - ' . $request->planet . ' - ' . $request->moon . ' has changed status.<br>';
|
||||
$body .= 'The request has been ' . $request->status . '.<br>';
|
||||
$body .= 'Please contact the FC Team should it be necessary to arrange a fleet to cover the structure drop.<br>';
|
||||
$body .= 'Sincerely,<br>';
|
||||
$body .= 'Warped Intentions Leadership<br>';
|
||||
|
||||
|
||||
} else {
|
||||
//If the status was Denied, then update the request, and mark the moon available again.
|
||||
AllianceMoonRequest::where([
|
||||
'id' => $request->id,
|
||||
])->update([
|
||||
'status' => $request->status,
|
||||
'approver_name' => auth()->user()->getName(),
|
||||
'approver_id' => auth()->user()->getId(),
|
||||
]);
|
||||
|
||||
//Update the alliance moon in the table to the correct status
|
||||
AllianceMoon::where([
|
||||
'System' => (string)$request->system,
|
||||
'Planet' => (string)$request->planet,
|
||||
'Moon' => (string)$request->moon,
|
||||
])->update([
|
||||
'Availability' => 'Available',
|
||||
]);
|
||||
|
||||
//Send an eve mail to the requestor stating they can set a moon up.
|
||||
//Setup the mail body
|
||||
$body = 'The moon request for ' . $moon->System . ' - ' . $moon->Planet . ' - ' . $moon->Moon . ' has changed status.<br>';
|
||||
$body .= 'The request has been ' . $request->status . '.<br>';
|
||||
$body .= 'Should you have questions please contact alliance leadership for further clarification.<br>';
|
||||
$body .= 'Sincerely,<br>';
|
||||
$body .= 'Warped Intentions Leadership<br>';
|
||||
|
||||
}
|
||||
|
||||
//Setup the mail model
|
||||
ProcessSendEveMailJob::dispatch($body, (int)$moon->requestor_id, 'character', 'Warped Intentions Moon Request', $config['primary'])->onQueue('mail')->delay(Carbon::now()->addSeconds(5));
|
||||
|
||||
return redirect('/moons/admin/display/request')->with('success', 'Moon has been processed, and mail has been sent out.');
|
||||
}
|
||||
|
||||
/**
|
||||
* Function to display the ability for the admins to update moons with who is renting,
|
||||
* and when it ends
|
||||
*/
|
||||
public function updateMoon() {
|
||||
$this->middleware('role:Admin');
|
||||
|
||||
//Declare the variables we need
|
||||
$system = null;
|
||||
$planet = null;
|
||||
$moon = null;
|
||||
$name = null;
|
||||
$spmnTemp = array();
|
||||
$spmn = array();
|
||||
|
||||
//Get the moons and put in order by System, Planet, Moon number
|
||||
$moons = AllianceRentalMoon::orderBy('System', 'ASC')
|
||||
->orderBy('Planet', 'ASC')
|
||||
->orderBy('Moon', 'ASC')
|
||||
->get();
|
||||
|
||||
//Push our default value onto the stack
|
||||
array_push($spmn, 'N/A');
|
||||
|
||||
//Form our array of strings for each system, planet, and moon combination
|
||||
foreach($moons as $m) {
|
||||
$temp = $m->system . " - " . $m->planet . " - " . $m->moon . " - " . $m->structure_name;
|
||||
array_push($spmnTemp, $temp);
|
||||
}
|
||||
|
||||
//From the temporary array, build the final array
|
||||
foreach($spmnTemp as $key => $value) {
|
||||
$spmn[$value] = $value;
|
||||
}
|
||||
|
||||
//Pass the data to the blade display
|
||||
return view('moons.admin.updatemoon')->with('spmn', $spmn);
|
||||
}
|
||||
|
||||
/**
|
||||
* Function to remove a renter from a moon
|
||||
* New function based on new table. Will
|
||||
* update description in a future update.
|
||||
*/
|
||||
public function storeMoonRemoval(Request $request) {
|
||||
//Check for the correct role for the user to utilize this function
|
||||
$this->middleware('role:Admin');
|
||||
|
||||
//Validate the request
|
||||
$this->validate($request, [
|
||||
'remove' => 'required',
|
||||
]);
|
||||
|
||||
//Explode the remove request to an array of strings
|
||||
$str_array = explode(" - ", $request->remove);
|
||||
|
||||
//Decode the value for the SPM into a system, planet, and moon
|
||||
$system = $str_array[0];
|
||||
$planet = $str_array[1];
|
||||
$moon = $str_array[2];
|
||||
|
||||
//Update the moon rental
|
||||
AllianceRentalMoon::where([
|
||||
'system' => $system,
|
||||
'planet' => $planet,
|
||||
'moon' => $moon,
|
||||
])->update([
|
||||
'rental_type' => 'Not Rented',
|
||||
'rental_until' => null,
|
||||
'rental_contact_id' => 0,
|
||||
'rental_contact_type' => 'Not Rented',
|
||||
'paid' => 'Not Rented',
|
||||
'paid_until' => null,
|
||||
'alliance_use_until' => null,
|
||||
]);
|
||||
|
||||
//Once the action is completed, redirect to the original page
|
||||
return redirect('/moons/admin/display/rentals')->with('success', 'Renter removed from the moon.');
|
||||
}
|
||||
|
||||
/**
|
||||
* Function to display the moons to admins
|
||||
* New function based on new table. Will
|
||||
* update description in a future update.
|
||||
*/
|
||||
public function displayRentalMoonsAdmin() {
|
||||
//Declare variables for the function
|
||||
$lookupHelper = new LookupHelper;
|
||||
$moonCalc = new MoonCalc;
|
||||
$contactId = null;
|
||||
$contactType = null;
|
||||
$paid = null;
|
||||
$paidUntil = null;
|
||||
$corpTicker = null;
|
||||
$table = array();
|
||||
//Setup the carbon date using Carbon\Carbon
|
||||
$lastMonth = Carbon::now()->subMonth();
|
||||
$today = Carbon::now();
|
||||
|
||||
//Get the moon rentals from the database
|
||||
$rentalMoons = AllianceRentalMoon::orderBy('system', 'asc')->get();
|
||||
|
||||
//For each of the moons compile different data for the view for formatting
|
||||
foreach($rentalMoons as $moon) {
|
||||
|
||||
//Check if a current rental for the moon is on going
|
||||
if(($moon->rental_type == 'In Alliance' || $moon->rental_type == 'Out of Alliance')) {
|
||||
$paid = $moon->paid;
|
||||
$paidUntil = new Carbon($moon->paid_until);
|
||||
$paidUntil = $paidUntil->format('m-d');
|
||||
|
||||
//Set the rental date up
|
||||
$rentalTemp = new Carbon($moon->rental_until);
|
||||
$rentalEnd = $rentalTemp->format('m-d');
|
||||
|
||||
//Set the correct color for the table
|
||||
if($rentalTemp->diffInDays(Carbon::now()) < 3 && $today->lessThan($rentalTemp)) {
|
||||
$color = 'table-warning';
|
||||
} else if($today->lessThan($rentalTemp)) {
|
||||
$color = 'table-danger';
|
||||
} else {
|
||||
$color = 'table-primary';
|
||||
}
|
||||
|
||||
//Set the contact name based on the contact type
|
||||
if($moon->rental_contact_type == 'Alliance') {
|
||||
$allianceInfo = $lookupHelper->GetAllianceInfo($moon->rental_contact_id);
|
||||
//Set the contact name and ticker
|
||||
$contact = $allianceInfo->name;
|
||||
$ticker = $allianceInfo->ticker;
|
||||
|
||||
} else if($moon->rental_contact_type == 'Corporation') {
|
||||
$corporationInfo = $lookupHelper->GetCorporationInfo($moon->rental_contact_id);
|
||||
//Set the contact name and ticker
|
||||
$contact = $corporationInfo->name;
|
||||
$ticker = $corporationInfo->ticker;
|
||||
|
||||
} else if($moon->rental_contact_type == 'Character') {
|
||||
$characterInfo = $lookupHelper->GetCharacterInfo($moon->rental_contact_id);
|
||||
//Set the contact name
|
||||
$contact = $characterInfo->name;
|
||||
//Get the ticker for the character from the corporation he belongs to
|
||||
$corpInfo = $lookupHelper->GetCorporationInfo($characterInfo->corporation_id);
|
||||
$ticker = $corpInfo->ticker;
|
||||
|
||||
} else {
|
||||
$contact = 'N/A';
|
||||
$ticker = 'N/A';
|
||||
$type = 'N/A';
|
||||
$color = 'table-primary';
|
||||
}
|
||||
|
||||
//Check if the moon is currently being utilized by the alliance
|
||||
} else if($moon->rental_type == 'Alliance') {
|
||||
//If the moon is in use by the alliance then the moon isn't paid for
|
||||
$paid = 'No';
|
||||
|
||||
//Setup the rental end time as the end of the month
|
||||
$rentalTemp = Carbon::now()->endOfMonth();
|
||||
$rentalEnd = $rentalTemp->format('m-d');
|
||||
//Set the color of the table
|
||||
$color = 'table-info';
|
||||
|
||||
//Setup the paid time as the same as the rental end
|
||||
$paidUntiltemp = $rentalTemp;
|
||||
$paidUntil = $rentalEnd;
|
||||
|
||||
//Set the other information for the spreadsheet
|
||||
$contact = 'Spatial Forces';
|
||||
$renter = 'SP3C';
|
||||
$ticker = 'SP3C';
|
||||
$type = 'Alliance';
|
||||
|
||||
//The last case is the moon is not utilized by the Alliance or is not being rented
|
||||
} else {
|
||||
//If the moon is not being rented, or being utilized by the alliance then set paid to No
|
||||
$paid = 'No';
|
||||
|
||||
//Setup the rental time to end as last month to show it's free
|
||||
$rentalTemp = $lastMonth;
|
||||
$rentalEnd = $rentalTemp->format('m-d');
|
||||
|
||||
//Setup the paid until as last month to show it's free
|
||||
$paidUntilTemp = $lastMonth;
|
||||
$paidUntil = $lastMonth->format('m-d');
|
||||
|
||||
//Setup the other variables with the correct information
|
||||
$contact = 'None';
|
||||
$renter = 'None';
|
||||
$ticker = 'N/A';
|
||||
$type = 'N/A';
|
||||
|
||||
//Set the color of the table
|
||||
$color = 'table-primary';
|
||||
}
|
||||
|
||||
//Set up the moon rental type
|
||||
if($moon->rental_type == 'In Alliance') {
|
||||
$type = 'IA';
|
||||
//Setup the row color
|
||||
if($rentalTemp->diffInDays(Carbon::now()) < 3 && $today->lessThan($rentalTemp)) {
|
||||
$color = 'table-warning';
|
||||
} else if($today->lessThan($rentalTemp)) {
|
||||
$color = 'table-danger';
|
||||
} else {
|
||||
$color = 'table-primary';
|
||||
}
|
||||
} else if($moon->rental_type == 'Out of Alliance') {
|
||||
$type = 'OOA';
|
||||
//Setup the row color
|
||||
if($rentalTemp->diffInDays(Carbon::now()) < 3 && $today->lessThan($rentalTemp)) {
|
||||
$color = 'table-warning';
|
||||
} else if($today->lessThan($rentalTemp)) {
|
||||
$color = 'table-danger';
|
||||
} else {
|
||||
$color = 'table-primary';
|
||||
}
|
||||
} else if($moon->rental_type == 'Alliance') {
|
||||
$type = 'W4RP';
|
||||
//Set the row color
|
||||
$color = 'table-info';
|
||||
} else {
|
||||
$type = 'N/A';
|
||||
//Set the row color
|
||||
$color = 'table-primary';
|
||||
}
|
||||
|
||||
//Add the data to the html string to be passed to the view
|
||||
array_push($table, [
|
||||
'SPM' => $moon->system . " - " . $moon->planet . " - " . $moon->moon,
|
||||
'StructureName' => $moon->structure_name,
|
||||
'AlliancePrice' => $moon->alliance_rental_price,
|
||||
'OutOfAlliancePrice' => $moon->out_of_alliance_rental_price,
|
||||
'RentalEnd' => $rentalEnd,
|
||||
'RowColor' => $color,
|
||||
'Paid' => $moon->paid,
|
||||
'PaidUntil' => $paidUntil,
|
||||
'Contact' => $contact,
|
||||
'Type' => $moon->rental_type,
|
||||
'Renter' => $type,
|
||||
]);
|
||||
}
|
||||
|
||||
return view('moons.admin.adminmoon')->with('table', $table);
|
||||
}
|
||||
|
||||
/**
|
||||
* Function to store the updates from the moons.
|
||||
* New function based on new table. Will update
|
||||
* the description in a future update
|
||||
*/
|
||||
public function storeUpdateMoon(Request $request) {
|
||||
//Require the site administration role
|
||||
$this->middleware('role:Admin');
|
||||
|
||||
//Declare some variables we will need
|
||||
$moonCalc = new MoonCalc;
|
||||
$lookup = new LookupHelper;
|
||||
$paid = false;
|
||||
$system = null;
|
||||
$planet = null;
|
||||
$mn = null;
|
||||
|
||||
//Validate our request from the html form
|
||||
$this->validate($request, [
|
||||
'spmn' => 'required',
|
||||
'contact' => 'required',
|
||||
'contact_type' => 'required',
|
||||
'paid_until' => 'required',
|
||||
'rental_end' => 'required',
|
||||
]);
|
||||
|
||||
//Decode the spmn
|
||||
$str_array = explode(" - ", $request->spmn);
|
||||
$system = $str_array[0];
|
||||
$planet = $str_array[1];
|
||||
$mn = $str_array[2];
|
||||
$name = $str_array[3];
|
||||
|
||||
//Update the paid value from the request value
|
||||
if($request->paid == 'Yes') {
|
||||
$paid = 'Yes';
|
||||
} else {
|
||||
$paid = 'No';
|
||||
}
|
||||
|
||||
//Setup the rental end and paid until variables
|
||||
$rentalEnd = $request->rental_end . " 23:59:59";
|
||||
$paidUntil = $request->paid_until . " 23:59:59";
|
||||
|
||||
//Check if the alliance is renting the moon for itself
|
||||
if($request->contact_type == 'Corporation' && $request->contact == 'Spatial Forces') {
|
||||
AllianceRentalMoon::where([
|
||||
'system' => $str_array[0],
|
||||
'planet' => $str_array[1],
|
||||
'moon' => $str_array[2],
|
||||
])->update([
|
||||
'rental_type' => 'Alliance',
|
||||
'rental_until' => $request->rental_end . " 23:59:59",
|
||||
'rental_contact_id' => 98287666,
|
||||
'rental_contact_type' => 'Alliance',
|
||||
'paid' => 'No',
|
||||
'paid_until' => null,
|
||||
'alliance_use_until' => $request->rental_end . " 23:59:59",
|
||||
]);
|
||||
} else if($request->contact_type == 'Character') {
|
||||
//Get the character id from the lookup helper
|
||||
$charId = $lookup->CharacterNameToId($request->contact);
|
||||
//Get the character information including the corporation from the lookup tables
|
||||
$char = $lookup->GetCharacterInfo($charId);
|
||||
//Get the corporation id from the lookup helper, followed by the alliance id
|
||||
//so we can determine if it's in alliance or out of alliance
|
||||
$corp = $lookup->GetCorporationInfo($char->corporation_id);
|
||||
|
||||
if($corp->alliance_id == 99004116) {
|
||||
$type = 'In Alliance';
|
||||
} else {
|
||||
$type = 'Out of Alliance';
|
||||
}
|
||||
|
||||
AllianceRentalMoon::where([
|
||||
'system' => $str_array[0],
|
||||
'planet' => $str_array[1],
|
||||
'moon' => $str_array[2],
|
||||
])->update([
|
||||
'rental_type' => $type,
|
||||
'rental_until' => $request->rental_end . " 23:59:59",
|
||||
'rental_contact_id' => $charId,
|
||||
'rental_contact_type' => 'Character',
|
||||
'paid' => $paid,
|
||||
'paid_until' => $request->paid_until . " 23:59:59",
|
||||
'alliance_use_until' => null,
|
||||
]);
|
||||
|
||||
} else if($request->contact_type == 'Corporation') {
|
||||
//Get the corporation id from the lookup helper
|
||||
$corpId = $lookup->CorporationNameToId($request->contact);
|
||||
//Get the corporation information to determine if they are in Warped Intentions or not.
|
||||
$corporation = $lookup->GetCorporationInfo($request->contact);
|
||||
|
||||
if($corp->alliance_id == 99004116) {
|
||||
$type = 'In Alliance';
|
||||
} else {
|
||||
$type = 'Out of Alliance';
|
||||
}
|
||||
|
||||
AllianceMoonRental::where([
|
||||
'system' => $str_array[0],
|
||||
'planet' => $str_array[1],
|
||||
'moon' => $str_array[2],
|
||||
])->update([
|
||||
'rental_type' => $type,
|
||||
'rental_until' => $request->rental_end . " 23:59:59",
|
||||
'rental_contact_id' => $corpId,
|
||||
'rental_contact_type' => 'Corporation',
|
||||
'paid' => $paid,
|
||||
'paid_until' => $request->paid_until . " 23:59:59",
|
||||
'alliance_use_until' => null,
|
||||
]);
|
||||
}
|
||||
|
||||
//Redirect to the previous screen.
|
||||
return redirect('/moons/admin/updatemoon')->with('success', 'Moon Rental updated.');
|
||||
}
|
||||
}
|
||||
@@ -1,554 +0,0 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers\Moons;
|
||||
|
||||
//Internal Library
|
||||
use App\Http\Controllers\Controller;
|
||||
use Auth;
|
||||
use DB;
|
||||
use Illuminate\Http\Request;
|
||||
use Carbon\Carbon;
|
||||
|
||||
//Models
|
||||
use App\Models\Moon\Config;
|
||||
use App\Models\Moon\ItemComposition;
|
||||
use App\Models\Moon\OrePrice;
|
||||
use App\Models\Moon\Price;
|
||||
use App\Models\Moon\AllianceMoon;
|
||||
use App\Models\MoonRentals\AllianceRentalMoon;
|
||||
use App\Models\Moon\AllianceMoonRequest;
|
||||
|
||||
//Library
|
||||
use App\Library\Moons\MoonCalc;
|
||||
use App\Library\Lookups\LookupHelper;
|
||||
|
||||
class MoonsController extends Controller
|
||||
{
|
||||
public function __construct() {
|
||||
$this->middleware('auth');
|
||||
$this->middleware('role:Renter');
|
||||
}
|
||||
|
||||
public function displayRentalMoonPage() {
|
||||
return view('moons.user.requestrental');
|
||||
}
|
||||
|
||||
/**
|
||||
* Function to display all alliance moons and pass data to the blade template
|
||||
*/
|
||||
public function displayMoons() {
|
||||
//Setup variables for moons
|
||||
$moons = array();
|
||||
$systems = array();
|
||||
|
||||
//Get all of the alliance moon systems from the database
|
||||
$systems = AllianceMoon::groupBy('System')->pluck('System');
|
||||
|
||||
//Get all of the alliance moons from the database
|
||||
$moons = AllianceMoon::all();
|
||||
|
||||
$gasGoo = [
|
||||
'Zeolites',
|
||||
'Sylvite',
|
||||
'Bitumens',
|
||||
'Coesite',
|
||||
];
|
||||
|
||||
$r8Goo = [
|
||||
'Cobaltite',
|
||||
'Euxenite',
|
||||
'Titanite',
|
||||
'Scheelite',
|
||||
];
|
||||
|
||||
$r16Goo = [
|
||||
'Otavite',
|
||||
'Sperrylite',
|
||||
'Vanadinite',
|
||||
'Chromite',
|
||||
];
|
||||
|
||||
$r32Goo = [
|
||||
'Carnotite',
|
||||
'Zircon',
|
||||
'Pollucite',
|
||||
'Cinnabar',
|
||||
];
|
||||
|
||||
$r64Goo = [
|
||||
'Xenotime',
|
||||
'Monazite',
|
||||
'Loparite',
|
||||
'Ytterbite',
|
||||
];
|
||||
|
||||
return view('moons.user.allmoons')->with('systems', $systems)
|
||||
->with('moons', $moons)
|
||||
->with('gasGoo', $gasGoo)
|
||||
->with('r8Goo', $r8Goo)
|
||||
->with('r16Goo', $r16Goo)
|
||||
->with('r32Goo', $r32Goo)
|
||||
->with('r64Goo', $r64Goo);
|
||||
}
|
||||
|
||||
/**
|
||||
* Function to display moon request form
|
||||
*/
|
||||
public function displayRequestAllianceMoon() {
|
||||
return view('moons.user.requestmoon');
|
||||
}
|
||||
|
||||
/**
|
||||
* Function to store the moon request
|
||||
*/
|
||||
public function storeRequestAllianceMoon(Request $request) {
|
||||
$this->validate($request, [
|
||||
'system' => 'required',
|
||||
'planet' => 'required',
|
||||
'moon' => 'required',
|
||||
]);
|
||||
|
||||
//Declare some necessary arrays for figuring out what region a moon resides in
|
||||
$catch = [
|
||||
'6X7-JO',
|
||||
'A803-L',
|
||||
'I8-D0G',
|
||||
'WQH-4K',
|
||||
'GJ0-JO',
|
||||
'Q-S7ZD',
|
||||
'JWZ2-V',
|
||||
'J-ODE7',
|
||||
'OGL8-Q',
|
||||
'R-K4QY',
|
||||
];
|
||||
|
||||
$immensea = [
|
||||
'ZBP-TP',
|
||||
'XVV-21',
|
||||
'B9E-H6',
|
||||
'JDAS-0',
|
||||
'Y19P-1',
|
||||
'LN-56V',
|
||||
'O7-7UX',
|
||||
'Y2-QUV',
|
||||
'SPBS-6',
|
||||
'A4B-V5',
|
||||
'GXK-7F',
|
||||
'78TS-Q',
|
||||
'CJNF-J',
|
||||
'EA-HSA',
|
||||
'FYI-49',
|
||||
'WYF8-8',
|
||||
'NS2L-4',
|
||||
'B-S347',
|
||||
'AF0-V5',
|
||||
'QI-S9W',
|
||||
'B-A587',
|
||||
'PPFB-U',
|
||||
'L-5JCJ',
|
||||
'4-GB14',
|
||||
'REB-KR',
|
||||
'QE-E1D',
|
||||
'LK1K-5',
|
||||
'Z-H2MA',
|
||||
'B-KDOZ',
|
||||
'E8-YS9',
|
||||
];
|
||||
|
||||
//Declare lookup variables
|
||||
$lookup = new LookupHelper;
|
||||
|
||||
//Get all of the information needed to create the database entry
|
||||
$charId = auth()->user()->getId();
|
||||
$charInfo = $lookup->GetCharacterInfo($charId);
|
||||
$charName = $charInfo->name;
|
||||
$corpInfo = $lookup->GetCorporationInfo($charInfo->corporation_id);
|
||||
$corpId = $corpInfo->corporation_id;
|
||||
$corpName = $corpInfo->name;
|
||||
$corpTicker = $corpInfo->ticker;
|
||||
//Declare the region variable as null for the lookup if statement
|
||||
$region = null;
|
||||
|
||||
//Get the region the moon resides in from the system
|
||||
if(in_array($request->system, $catch, true)) {
|
||||
$region = 'Catch';
|
||||
} else if(in_array($request->system, $immensea, true)) {
|
||||
$region = 'Immensea';
|
||||
} else {
|
||||
//False value. Redirect back to page
|
||||
return redirct('/moons/display/request')->with('error', 'Region was not found.');
|
||||
}
|
||||
|
||||
//Check to see if the moon has been previously inputted for
|
||||
$allMoons = AllianceMoon::all();
|
||||
foreach($allMoons as $moon) {
|
||||
if($moon->Region == $region && $moon->System == $request->system && $moon->Planet == $request->planet && $moon->Moon == $request->moon) {
|
||||
if($moon->Availability != 'Available') {
|
||||
return redirect('moons/display/request')->with('error', 'The moon has already been reserved by another party.');
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
//Create the new object to save into the database
|
||||
$moonRequest = new AllianceMoonRequest;
|
||||
$moonRequest->region = $region;
|
||||
$moonRequest->system = $request->system;
|
||||
$moonRequest->planet = $request->planet;
|
||||
$moonRequest->moon = $request->moon;
|
||||
$moonRequest->corporation_id = $corpId;
|
||||
$moonRequest->corporation_name = $corpName;
|
||||
$moonRequest->corporation_ticker = $corpTicker;
|
||||
$moonRequest->requestor_name = $charName;
|
||||
$moonRequest->requestor_id = $charId;
|
||||
$moonRequest->status = 'Pending';
|
||||
$moonRequest->save();
|
||||
|
||||
//Update the current moon's status in the model AllianceMoon
|
||||
AllianceMoon::where([
|
||||
'Region' => $region,
|
||||
'System' => $request->system,
|
||||
'Planet' => $request->planet,
|
||||
'Moon' => $request->moon,
|
||||
])->update([
|
||||
'Availability' => 'Request Pending',
|
||||
]);
|
||||
|
||||
return redirect('/moons/display/request')->with('success', 'Moon request submitted.');
|
||||
}
|
||||
|
||||
/**
|
||||
* Function to display the moons and pass to the blade template
|
||||
* Function description will be updated in a future release.
|
||||
*/
|
||||
public function displayRentalMoons() {
|
||||
//Declare variables
|
||||
$lastMonth = Carbon::now()->subMonth();
|
||||
$today = Carbon::now();
|
||||
$table = array();
|
||||
$moonprice = null;
|
||||
|
||||
//Get the user type from the user Auth class
|
||||
$type = auth()->user()->getUserType();
|
||||
//Get all of the rental moons from the database
|
||||
$moons = AllianceRentalMoon::orderBy('system', 'ASC')
|
||||
->orderBy('planet', 'ASC')
|
||||
->orderBy('moon', 'ASC')
|
||||
->get();
|
||||
|
||||
//For each of the moons let's format the data for the display table
|
||||
foreach($moons as $moon) {
|
||||
$color = null;
|
||||
$rentalTemp = null;
|
||||
$rentalEnd = null;
|
||||
|
||||
//Check if someone is currently renting the moon
|
||||
if($moon->rental_type == 'In Alliance' || $moon->rental_type == 'Out of Alliance') {
|
||||
$rentalTemp = new Carbon($moon->rental_until);
|
||||
$rentalEnd = $rentalTemp->format('m-d');
|
||||
|
||||
//Setup the correct color for the table
|
||||
if($rentalTemp->diffInDays(Carbon::now()) < 3 && $today->lessThan($rentalTemp)) {
|
||||
$color = 'table-warning';
|
||||
} else if($today->lessThan($rentalTemp)) {
|
||||
$color = 'table-danger';
|
||||
} else {
|
||||
$color = 'table-primary';
|
||||
}
|
||||
} else if($moon->rental_type == 'Alliance') {
|
||||
$rentalTemp = Carbon::now()->endOfMonth();
|
||||
$rentalEnd = $rentalTemp->format('m-d');
|
||||
$color = 'table-info';
|
||||
} else {
|
||||
//Set the rental date for if someone is not renting the moon
|
||||
$rentalTemp = $lastMonth;
|
||||
$rentalEnd = $rentalTemp->format('m-d');
|
||||
$color = 'table-primary';
|
||||
}
|
||||
|
||||
//Get the price of the moon from the database based on if the person is in Warped Intentions
|
||||
$userType = auth()->user()->getUserType();
|
||||
if($userType == 'W4RP') {
|
||||
$moonprice = $moon->alliance_rental_price;
|
||||
} else {
|
||||
$moonprice = $moon->out_of_alliance_rental_price;
|
||||
}
|
||||
|
||||
//Add the data to the html array to be passed to the view
|
||||
array_push($table, [
|
||||
'SPM' => $moon->system . " - " . $moon->planet . " - " . $moon->moon,
|
||||
'StructureName' => $moon->structure_name,
|
||||
'FirstOre' => $moon->first_ore,
|
||||
'FirstQuantity' => number_format($moon->first_quantity, 0, ".", ","),
|
||||
'SecondOre' => $moon->second_ore,
|
||||
'SecondQuantity' => number_format($moon->second_quantity, 0, ".", ","),
|
||||
'ThirdOre' => $moon->third_ore,
|
||||
'ThirdQuantity' => number_format($moon->third_quantity, 0, ".", ","),
|
||||
'FourthOre' => $moon->fourth_ore,
|
||||
'FourthQuantity' => number_format($moon->fourth_quantity, 0, ".", ","),
|
||||
'Price' => number_format($moonprice, 0, ".", ","),
|
||||
'Worth' => number_format($moon->moon_worth, 0, ".", ","),
|
||||
'RentalEnd' => $rentalEnd,
|
||||
'RowColor' => $color,
|
||||
]);
|
||||
}
|
||||
|
||||
//Pass the data to the view
|
||||
return view('moons.user.moon')->with('table', $table);
|
||||
}
|
||||
|
||||
public function displayTotalWorthForm() {
|
||||
return view('moons.user.formTotalWorth');
|
||||
}
|
||||
|
||||
public function displayTotalWorth(Request $request) {
|
||||
//Setup calls to the MoonCalc class
|
||||
$moonCalc = new MoonCalc();
|
||||
$totalPull = 5.55 * (3600.00 * 24.00 * 30.00);
|
||||
$composition = [
|
||||
'Tritanium' => 0,
|
||||
'Pyerite' => 0,
|
||||
'Mexallon' => 0,
|
||||
'Isogen' => 0,
|
||||
'Nocxium' => 0,
|
||||
'Zydrine' => 0,
|
||||
'Megacyte' => 0,
|
||||
'Atmospheric_Gases' => 0,
|
||||
'Evaporite_Deposits' => 0,
|
||||
'Hydrocarbons' => 0,
|
||||
'Silicates' => 0,
|
||||
'Cobalt' => 0,
|
||||
'Scandium' => 0,
|
||||
'Titanium' => 0,
|
||||
'Tungsten' => 0,
|
||||
'Cadmium' => 0,
|
||||
'Platinum' => 0,
|
||||
'Vanadium'=> 0,
|
||||
'Chromium' => 0,
|
||||
'Technetium' => 0,
|
||||
'Hafnium' => 0,
|
||||
'Caesium' => 0,
|
||||
'Mercury' => 0,
|
||||
'Dysprosium' => 0,
|
||||
'Neodymium' => 0,
|
||||
'Promethium' => 0,
|
||||
'Thulium' => 0,
|
||||
];
|
||||
|
||||
$firstOre = $request->firstOre;
|
||||
if($request->firstQuantity >= 1.00) {
|
||||
$firstQuantity = $request->firstQuantity / 100.00;
|
||||
} else {
|
||||
$firstQuantity = $request->firstQuantity;
|
||||
}
|
||||
|
||||
$secondOre = $request->secondOre;
|
||||
if($request->secondQuantity >= 1.00) {
|
||||
$secondQuantity = $request->secondQuantity / 100.00;
|
||||
} else {
|
||||
$secondQuantity = $request->secondQuantity;
|
||||
}
|
||||
|
||||
$thirdOre = $request->thirdOre;
|
||||
if($request->thirdQuantity >= 1.00) {
|
||||
$thirdQuantity = $request->thirdQuantity / 100.00;
|
||||
} else {
|
||||
$thirdQuantity = $request->thirdQuantity;
|
||||
}
|
||||
|
||||
$fourthOre = $request->fourthOre;
|
||||
if($request->fourthQuantity >= 1.00) {
|
||||
$fourthQuantity = $request->fourthQuantity / 100.00;
|
||||
} else {
|
||||
$fourthQuantity = $request->fourthQuantity;
|
||||
}
|
||||
|
||||
if($request->reprocessing >= 1.00) {
|
||||
$reprocessing = $request->reprocessing / 100.00;
|
||||
} else {
|
||||
$reprocessing = $request->reprocessing;
|
||||
}
|
||||
|
||||
//Set the reprocessing level for 84% if the value is null
|
||||
if($request->reprocessing == null) {
|
||||
$reprocessing = 0.84;
|
||||
}
|
||||
|
||||
//Get the total percentage of the ores, and normalize it to 1.00.
|
||||
$totalPercent = $firstQuantity + $secondQuantity + $thirdQuantity + $fourthQuantity;
|
||||
if($totalPercent < 1.00) {
|
||||
$firstQuantity = $firstQuantity / $totalPercent;
|
||||
$secondQuantity = $secondQuantity / $totalPercent;
|
||||
$thirdQuantity = $thirdQuantity / $totalPercent;
|
||||
$fourthQuantity = $fourthQuantity / $totalPercent;
|
||||
}
|
||||
|
||||
//Calculate the total worth of the moon
|
||||
$totalWorth = $moonCalc->SpatialMoonsTotalWorth($firstOre, $firstQuantity, $secondOre, $secondQuantity,
|
||||
$thirdOre, $thirdQuantity, $fourthOre, $fourthQuantity);
|
||||
//Format the number to send to the blade.
|
||||
$totalWorth = number_format($totalWorth, 2, ".", ",");
|
||||
|
||||
//Get the composition for the first ore if it is not None.
|
||||
//Add the first ore composition to the final composition
|
||||
if($firstOre != 'None') {
|
||||
//Get the ore's composition
|
||||
$firstComp = $moonCalc->GetOreComposition($firstOre);
|
||||
//Get the amount of units mine-able from the moon
|
||||
$mUnits = $moonCalc->CalcOreUnits($firstOre, $firstQuantity);
|
||||
//Calculate the number of reprocessing units to happen from moon units
|
||||
$rUnits = floor($mUnits / 100.0);
|
||||
|
||||
//Compile the composition of the ore
|
||||
$composition['Tritanium'] += floor(($firstComp->Tritanium * $rUnits) * $reprocessing);
|
||||
$composition['Pyerite'] += floor(($firstComp->Pyerite * $rUnits) * $reprocessing);
|
||||
$composition['Mexallon'] += floor(($firstComp->Mexallon * $rUnits) * $reprocessing);
|
||||
$composition['Isogen'] += floor(($firstComp->Isogen * $rUnits) * $reprocessing);
|
||||
$composition['Nocxium'] += floor(($firstComp->Nocxium * $rUnits) * $reprocessing);
|
||||
$composition['Zydrine'] += floor(($firstComp->Zydrine * $rUnits) * $reprocessing);
|
||||
$composition['Megacyte'] += floor(($firstComp->Megacyte * $rUnits) * $reprocessing);
|
||||
$composition['Atmospheric_Gases'] += floor(($firstComp->AtmosphericGases * $rUnits) * $reprocessing);
|
||||
$composition['Evaporite_Deposits'] += floor(($firstComp->EvaporiteDeposits * $rUnits) * $reprocessing);
|
||||
$composition['Hydrocarbons'] += floor(($firstComp->Hydrocarbons * $rUnits) * $reprocessing);
|
||||
$composition['Silicates'] += floor(($firstComp->Silicates * $rUnits) * $reprocessing);
|
||||
$composition['Cobalt'] += floor(($firstComp->Cobalt * $rUnits) * $reprocessing);
|
||||
$composition['Scandium'] += floor(($firstComp->Scandium * $rUnits) * $reprocessing);
|
||||
$composition['Titanium'] += floor(($firstComp->Titanium * $rUnits) * $reprocessing);
|
||||
$composition['Tungsten'] += floor(($firstComp->Tungsten * $rUnits) * $reprocessing);
|
||||
$composition['Cadmium'] += floor(($firstComp->Cadmium * $rUnits) * $reprocessing);
|
||||
$composition['Platinum'] += floor(($firstComp->Platinium * $rUnits) * $reprocessing);
|
||||
$composition['Vanadium'] += floor(($firstComp->Vanadium * $rUnits) * $reprocessing);
|
||||
$composition['Chromium'] += floor(($firstComp->Chromium * $rUnits) * $reprocessing);
|
||||
$composition['Technetium'] += floor(($firstComp->Technetium * $rUnits) * $reprocessing);
|
||||
$composition['Hafnium'] += floor(($firstComp->Hafnium * $rUnits) * $reprocessing);
|
||||
$composition['Caesium'] += floor(($firstComp->Caesium * $rUnits) * $reprocessing);
|
||||
$composition['Mercury'] += floor(($firstComp->Mercury * $rUnits) * $reprocessing);
|
||||
$composition['Dysprosium'] += floor(($firstComp->Dysprosium * $rUnits) * $reprocessing);
|
||||
$composition['Neodymium'] += floor(($firstComp->Neodymium * $rUnits) * $reprocessing);
|
||||
$composition['Promethium'] += floor(($firstComp->Promethium * $rUnits) * $reprocessing);
|
||||
$composition['Thulium'] += floor(($firstComp->Thulium * $rUnits) * $reprocessing);
|
||||
}
|
||||
|
||||
//Get the composition for the second ore if it is not None.
|
||||
//Add the second ore composition to the final composition
|
||||
if($secondOre != 'None') {
|
||||
//Get the ore's composition
|
||||
$secondComp = $moonCalc->GetOreComposition($secondOre);
|
||||
//Get the amount of units mine-able from the moon
|
||||
$mUnits = $moonCalc->CalcOreUnits($secondOre, $secondQuantity);
|
||||
//Calculate the number of reprocessing units to happen from moon units
|
||||
$rUnits = floor($mUnits / 100.0);
|
||||
|
||||
$composition['Tritanium'] += floor(($secondComp->Tritanium * $rUnits) * $reprocessing);
|
||||
$composition['Pyerite'] += floor(($secondComp->Pyerite * $rUnits) * $reprocessing);
|
||||
$composition['Mexallon'] += floor(($secondComp->Mexallon * $rUnits) * $reprocessing);
|
||||
$composition['Isogen'] += floor(($secondComp->Isogen * $rUnits) * $reprocessing);
|
||||
$composition['Nocxium'] += floor(($secondComp->Nocxium * $rUnits) * $reprocessing);
|
||||
$composition['Zydrine'] += floor(($secondComp->Zydrine * $rUnits) * $reprocessing);
|
||||
$composition['Megacyte'] += floor(($secondComp->Megacyte * $rUnits) * $reprocessing);
|
||||
$composition['Atmospheric_Gases'] += floor(($secondComp->AtmosphericGases * $rUnits) * $reprocessing);
|
||||
$composition['Evaporite_Deposits'] += floor(($secondComp->EvaporiteDeposits * $rUnits) * $reprocessing);
|
||||
$composition['Hydrocarbons'] += floor(($secondComp->Hydrocarbons * $rUnits) * $reprocessing);
|
||||
$composition['Silicates'] += floor(($secondComp->Silicates * $rUnits) * $reprocessing);
|
||||
$composition['Cobalt'] += floor(($secondComp->Cobalt * $rUnits) * $reprocessing);
|
||||
$composition['Scandium'] += floor(($secondComp->Scandium * $rUnits) * $reprocessing);
|
||||
$composition['Titanium'] += floor(($secondComp->Titanium * $rUnits) * $reprocessing);
|
||||
$composition['Tungsten'] += floor(($secondComp->Tungsten * $rUnits) * $reprocessing);
|
||||
$composition['Cadmium'] += floor(($secondComp->Cadmium * $rUnits) * $reprocessing);
|
||||
$composition['Platinum'] += floor(($secondComp->Platinium * $rUnits) * $reprocessing);
|
||||
$composition['Vanadium'] += floor(($secondComp->Vanadium * $rUnits) * $reprocessing);
|
||||
$composition['Chromium'] += floor(($secondComp->Chromium * $rUnits) * $reprocessing);
|
||||
$composition['Technetium'] += floor(($secondComp->Technetium * $rUnits) * $reprocessing);
|
||||
$composition['Hafnium'] += floor(($secondComp->Hafnium * $rUnits) * $reprocessing);
|
||||
$composition['Caesium'] += floor(($secondComp->Caesium * $rUnits) * $reprocessing);
|
||||
$composition['Mercury'] += floor(($secondComp->Mercury * $rUnits) * $reprocessing);
|
||||
$composition['Dysprosium'] += floor(($secondComp->Dysprosium * $rUnits) * $reprocessing);
|
||||
$composition['Neodymium'] += floor(($secondComp->Neodymium * $rUnits) * $reprocessing);
|
||||
$composition['Promethium'] += floor(($secondComp->Promethium * $rUnits) * $reprocessing);
|
||||
$composition['Thulium'] += floor(($secondComp->Thulium * $rUnits) * $reprocessing);
|
||||
}
|
||||
|
||||
//Get the composition for the third ore if it is not None.
|
||||
//Add the third ore composition to the final composition
|
||||
if($thirdOre != 'None') {
|
||||
//Get the ore's composition
|
||||
$thirdComp = $moonCalc->GetOreComposition($thirdOre);
|
||||
//Get the amount of units mine-able from the moon
|
||||
$mUnits = $moonCalc->CalcOreUnits($thirdOre, $thirdQuantity);
|
||||
//Calculate the number of reprocessing units to happen from moon units
|
||||
$rUnits = floor($mUnits / 100.0);
|
||||
|
||||
$composition['Tritanium'] += floor(($thirdComp->Tritanium * $rUnits) * $reprocessing);
|
||||
$composition['Pyerite'] += floor(($thirdComp->Pyerite * $rUnits) * $reprocessing);
|
||||
$composition['Mexallon'] += floor(($thirdComp->Mexallon * $rUnits) * $reprocessing);
|
||||
$composition['Isogen'] += floor(($thirdComp->Isogen * $rUnits) * $reprocessing);
|
||||
$composition['Nocxium'] += floor(($thirdComp->Nocxium * $rUnits) * $reprocessing);
|
||||
$composition['Zydrine'] += floor(($thirdComp->Zydrine * $rUnits) * $reprocessing);
|
||||
$composition['Megacyte'] += floor(($thirdComp->Megacyte * $rUnits) * $reprocessing);
|
||||
$composition['Atmospheric_Gases'] += floor(($thirdComp->AtmosphericGases * $rUnits) * $reprocessing);
|
||||
$composition['Evaporite_Deposits'] += floor(($thirdComp->EvaporiteDeposits * $rUnits) * $reprocessing);
|
||||
$composition['Hydrocarbons'] += floor(($thirdComp->Hydrocarbons * $rUnits) * $reprocessing);
|
||||
$composition['Silicates'] += floor(($thirdComp->Silicates * $rUnits) * $reprocessing);
|
||||
$composition['Cobalt'] += floor(($thirdComp->Cobalt * $rUnits) * $reprocessing);
|
||||
$composition['Scandium'] += floor(($thirdComp->Scandium * $rUnits) * $reprocessing);
|
||||
$composition['Titanium'] += floor(($thirdComp->Titanium * $rUnits) * $reprocessing);
|
||||
$composition['Tungsten'] += floor(($thirdComp->Tungsten * $rUnits) * $reprocessing);
|
||||
$composition['Cadmium'] += floor(($thirdComp->Cadmium * $rUnits) * $reprocessing);
|
||||
$composition['Platinum'] += floor(($thirdComp->Platinium * $rUnits) * $reprocessing);
|
||||
$composition['Vanadium'] += floor(($thirdComp->Vanadium * $rUnits) * $reprocessing);
|
||||
$composition['Chromium'] += floor(($thirdComp->Chromium * $rUnits) * $reprocessing);
|
||||
$composition['Technetium'] += floor(($thirdComp->Technetium * $rUnits) * $reprocessing);
|
||||
$composition['Hafnium'] += floor(($thirdComp->Hafnium * $rUnits) * $reprocessing);
|
||||
$composition['Caesium'] += floor(($thirdComp->Caesium * $rUnits) * $reprocessing);
|
||||
$composition['Mercury'] += floor(($thirdComp->Mercury * $rUnits) * $reprocessing);
|
||||
$composition['Dysprosium'] += floor(($thirdComp->Dysprosium * $rUnits) * $reprocessing);
|
||||
$composition['Neodymium'] += floor(($thirdComp->Neodymium * $rUnits) * $reprocessing);
|
||||
$composition['Promethium'] += floor(($thirdComp->Promethium * $rUnits) * $reprocessing);
|
||||
$composition['Thulium'] += floor(($thirdComp->Thulium * $rUnits) * $reprocessing);
|
||||
}
|
||||
|
||||
//Get the composition for the fourth ore if it is not None.
|
||||
//Add the fourth ore composition to the final composition
|
||||
if($fourthOre != 'None') {
|
||||
//Get the ore's composition
|
||||
$fourthComp = $moonCalc->GetOreComposition($fourthOre);
|
||||
//Get the amount of units mine-able from the moon
|
||||
$mUnits = $moonCalc->CalcOreUnits($fourthOre, $fourthQuantity);
|
||||
//Calculate the number of reprocessing units to happen from moon units
|
||||
$rUnits = floor($mUnits / 100.0);
|
||||
|
||||
$composition['Tritanium'] += floor(($fourthComp->Tritanium * $rUnits) * $reprocessing);
|
||||
$composition['Pyerite'] += floor(($fourthComp->Pyerite * $rUnits) * $reprocessing);
|
||||
$composition['Mexallon'] += floor(($fourthComp->Mexallon * $rUnits) * $reprocessing);
|
||||
$composition['Isogen'] += floor(($fourthComp->Isogen * $rUnits) * $reprocessing);
|
||||
$composition['Nocxium'] += floor(($fourthComp->Nocxium * $rUnits) * $reprocessing);
|
||||
$composition['Zydrine'] += floor(($fourthComp->Zydrine * $rUnits) * $reprocessing);
|
||||
$composition['Megacyte'] += floor(($fourthComp->Megacyte * $rUnits) * $reprocessing);
|
||||
$composition['Atmospheric_Gases'] += floor(($fourthComp->AtmosphericGases * $rUnits) * $reprocessing);
|
||||
$composition['Evaporite_Deposits'] += floor(($fourthComp->EvaporiteDeposits * $rUnits) * $reprocessing);
|
||||
$composition['Hydrocarbons'] += floor(($fourthComp->Hydrocarbons * $rUnits) * $reprocessing);
|
||||
$composition['Silicates'] += floor(($fourthComp->Silicates * $rUnits) * $reprocessing);
|
||||
$composition['Cobalt'] += floor(($fourthComp->Cobalt * $rUnits) * $reprocessing);
|
||||
$composition['Scandium'] += floor(($fourthComp->Scandium * $rUnits) * $reprocessing);
|
||||
$composition['Titanium'] += floor(($fourthComp->Titanium * $rUnits) * $reprocessing);
|
||||
$composition['Tungsten'] += floor(($fourthComp->Tungsten * $rUnits) * $reprocessing);
|
||||
$composition['Cadmium'] += floor(($fourthComp->Cadmium * $rUnits) * $reprocessing);
|
||||
$composition['Platinum'] += floor(($fourthComp->Platinium * $rUnits) * $reprocessing);
|
||||
$composition['Vanadium'] += floor(($fourthComp->Vanadium * $rUnits) * $reprocessing);
|
||||
$composition['Chromium'] += floor(($fourthComp->Chromium * $rUnits) * $reprocessing);
|
||||
$composition['Technetium'] += floor(($fourthComp->Technetium * $rUnits) * $reprocessing);
|
||||
$composition['Hafnium'] += floor(($fourthComp->Hafnium * $rUnits) * $reprocessing);
|
||||
$composition['Caesium'] += floor(($fourthComp->Caesium * $rUnits) * $reprocessing);
|
||||
$composition['Mercury'] += floor(($fourthComp->Mercury * $rUnits) * $reprocessing);
|
||||
$composition['Dysprosium'] += floor(($fourthComp->Dysprosium * $rUnits) * $reprocessing);
|
||||
$composition['Neodymium'] += floor(($fourthComp->Neodymium * $rUnits) * $reprocessing);
|
||||
$composition['Promethium'] += floor(($fourthComp->Promethium * $rUnits) * $reprocessing);
|
||||
$composition['Thulium'] += floor(($fourthComp->Thulium * $rUnits) * $reprocessing);
|
||||
}
|
||||
|
||||
return view('moons.user.displayTotalWorth')->with('totalWorth', $totalWorth)
|
||||
->with('composition', $composition)
|
||||
->with('reprocessing', $reprocessing);
|
||||
}
|
||||
}
|
||||
@@ -1,62 +0,0 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers\Moons;
|
||||
|
||||
//Internal Library
|
||||
use Illuminate\Http\Request;
|
||||
use App\Http\Controllers\Controller;
|
||||
use Auth;
|
||||
use Log;
|
||||
use Carbon\Carbon;
|
||||
|
||||
//Models
|
||||
use App\Models\Moon\AllianceRentalMoon;
|
||||
|
||||
class RentalMoonsAdminController extends Controller
|
||||
{
|
||||
/**
|
||||
* Construct
|
||||
*/
|
||||
public function __construct() {
|
||||
$this->middleware('auth');
|
||||
$this->middelware('role:user');
|
||||
$this->middleware('permission:mining.director');
|
||||
}
|
||||
|
||||
/**
|
||||
* Function to display rental moons being used for the alliance
|
||||
*/
|
||||
public function displayAllianceUsageRentalMoons() {
|
||||
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Display the form for requesting new rental moon for the alliance
|
||||
*/
|
||||
public function displayRentalMoonForAllianceForm() {
|
||||
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Function to store when a new rental moon is requested
|
||||
*/
|
||||
public function storeRentalMoonForAlliance(Request $request) {
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Function to display the form for figuring out item composition
|
||||
*/
|
||||
public function displayItemCompositionForm() {
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Function to display the results of the form for figuring out item composition
|
||||
*/
|
||||
public function displayItemCompositionResults(Request $request) {
|
||||
|
||||
}
|
||||
}
|
||||
@@ -10,7 +10,7 @@ use Khill\Lavacharts\Lavacharts;
|
||||
use Carbon\Carbon;
|
||||
|
||||
//User Libraries
|
||||
use App\Library\SRP\SRPHelper;
|
||||
use App\Library\Helpers\SRPHelper;
|
||||
|
||||
//Models
|
||||
use App\Models\SRP\SRPShip;
|
||||
@@ -85,8 +85,13 @@ class SRPAdminController extends Controller
|
||||
//Calculate the recommended srp amount
|
||||
foreach($payouts as $p) {
|
||||
if($r['ship_type'] == $p->code) {
|
||||
$temp['actual_srp'] = $r['loss_value'] * ($p->payout / 100.00 );
|
||||
$temp['payout_percentage'] = $p->payout;
|
||||
$payout = $p->payout;
|
||||
if($temp['character_name'] == $temp['fleet_commander_name']) {
|
||||
$payout = 100.00;
|
||||
}
|
||||
|
||||
$temp['actual_srp'] = $r['loss_value'] * ($payout / 100.00 );
|
||||
$temp['payout_percentage'] = $payout;
|
||||
$sum_actual += $temp['actual_srp'];
|
||||
}
|
||||
}
|
||||
|
||||
@@ -7,7 +7,8 @@ use Illuminate\Http\Request;
|
||||
use App\Http\Controllers\Controller;
|
||||
use Auth;
|
||||
|
||||
//User Libraries
|
||||
//Application Libraries
|
||||
use App\Library\Helpers\SRPHelper;
|
||||
|
||||
//Models
|
||||
use App\Models\SRP\SRPShip;
|
||||
|
||||
@@ -2,10 +2,27 @@
|
||||
|
||||
namespace App\Http\Controllers\Test;
|
||||
|
||||
//Internal Library
|
||||
use Illuminate\Http\Request;
|
||||
use App\Http\Controllers\Controller;
|
||||
use Log;
|
||||
use Carbon\Carbon;
|
||||
use Illuminate\Support\Collection;
|
||||
use Illuminate\Support\Str;
|
||||
|
||||
use App\Library\Lookups\LookupHelper;
|
||||
//Application Library
|
||||
use App\Library\Helpers\LookupHelper;
|
||||
use App\Library\Esi\Esi;
|
||||
use App\Library\Moons\MoonCalc;
|
||||
|
||||
//Models
|
||||
use App\Models\MoonRental\AllianceMoon;
|
||||
use App\Models\MoonRental\AllianceMoonOre;
|
||||
use App\Models\MiningTax\Invoice;
|
||||
use App\Models\MiningTax\Ledger;
|
||||
use App\Models\MiningTax\Observer;
|
||||
use App\Models\User\UserAlt;
|
||||
use App\Models\User\User;
|
||||
|
||||
class TestController extends Controller
|
||||
{
|
||||
@@ -19,7 +36,331 @@ class TestController extends Controller
|
||||
return view('test.char.display')->with('char', $char);
|
||||
}
|
||||
|
||||
public function CharacterLookupTest(Request $request) {
|
||||
public function DebugMiningTaxesInvoices() {
|
||||
//Declare variables
|
||||
$mailDelay = 15;
|
||||
$mains = new Collection;
|
||||
$perms = null;
|
||||
$config = config('esi');
|
||||
$bodies = new Collection;
|
||||
|
||||
/**
|
||||
* This section will determine if users are mains or alts of a main.
|
||||
* If they are mains, we keep the key. If they are alts of a main, then we delete
|
||||
* the key from the collection.
|
||||
*/
|
||||
|
||||
//Pluck all the users from the database of ledgers to determine if they are mains or alts.
|
||||
$tempMains = Ledger::where([
|
||||
'invoiced' => 'Yes',
|
||||
])->where('last_updated', '>', Carbon::now()->subDays(7))->pluck('character_id');
|
||||
|
||||
//Get the unique character ids from the ledgers in the previous statement
|
||||
$tempMains = $tempMains->unique()->values()->all();
|
||||
|
||||
//Cycle through the array of mains, and remove any characters which are in the User Alt table,
|
||||
//as those characters will be grouped with their correct main later.
|
||||
for($i = 0; $i < sizeof($tempMains); $i++) {
|
||||
if(UserAlt::where(['character_id' => $tempMains[$i]])->count() == 0) {
|
||||
$mains->push($tempMains[$i]);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* For each of the users, let's determine if there are any ledgers,
|
||||
* then determine if there are any alts and ledgers associated with the alts.
|
||||
*/
|
||||
foreach($mains as $main) {
|
||||
//Declare some variables for each run through the for loop
|
||||
$ledgers = new Collection;
|
||||
|
||||
//Count the ledgers for the main
|
||||
$mainLedgerCount = Ledger::where([
|
||||
'character_id' => $main,
|
||||
'invoiced' => 'Yes',
|
||||
])->where('last_updated', '>', Carbon::now()->subDays(7))->count();
|
||||
|
||||
//If there are ledgers for the main, then let's grab them
|
||||
if($mainLedgerCount > 0) {
|
||||
$mainLedgers = Ledger::where([
|
||||
'character_id' => $main,
|
||||
'invoiced' => 'Yes',
|
||||
])->where('last_updated', '>', Carbon::now()->subDays(7))->get();
|
||||
|
||||
//Cycle through the entries, and add them to the ledger to send with the invoice
|
||||
foreach($mainLedgers as $row) {
|
||||
$ledgers->push([
|
||||
'character_id' => $row->character_id,
|
||||
'character_name' => $row->character_name,
|
||||
'observer_id' => $row->observer_id,
|
||||
'type_id' => $row->type_id,
|
||||
'ore_name' => $row->ore_name,
|
||||
'quantity' => (int)$row->quantity,
|
||||
'amount' => (float)$row->amount,
|
||||
'last_updated' => $row->last_updated,
|
||||
]);
|
||||
}
|
||||
}
|
||||
|
||||
//Get the alt count for the main character
|
||||
$altCount = UserAlt::where(['main_id' => $main])->count();
|
||||
//If more than 0 alts, grab all the alts.
|
||||
if($altCount > 0) {
|
||||
$alts = UserAlt::where([
|
||||
'main_id' => $main,
|
||||
])->get();
|
||||
|
||||
//Cycle through the alts, and get the ledgers, and push onto the stack
|
||||
foreach($alts as $alt) {
|
||||
$altLedgerCount = Ledger::where([
|
||||
'character_id' => $alt->character_id,
|
||||
'invoiced' => 'Yes',
|
||||
])->where('last_updated', '>', Carbon::now()->subDays(7))->count();
|
||||
|
||||
if($altLedgerCount > 0) {
|
||||
$altLedgers = Ledger::where([
|
||||
'character_id' => $alt->character_id,
|
||||
'invoiced' => 'Yes',
|
||||
])->where('last_updated', '>', Carbon::now()->subDays(7))->get();
|
||||
|
||||
foreach($altLedgers as $row) {
|
||||
$ledgers->push([
|
||||
'character_id' => $row->character_id,
|
||||
'character_name' => $row->character_name,
|
||||
'observer_id' => $row->observer_id,
|
||||
'type_id' => $row->type_id,
|
||||
'ore_name' => $row->ore_name,
|
||||
'quantity' => (int)$row->quantity,
|
||||
'amount' => (float)$row->amount,
|
||||
'last_updated' => $row->last_updated,
|
||||
]);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Send the collected information over to the function to send the actual mail
|
||||
*/
|
||||
if($ledgers->count() > 0) {
|
||||
$body = $this->CreateInvoice($main, $ledgers, $mailDelay);
|
||||
$bodies->push($body);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
return view('test.miningtax.invoice')->with('bodies', $bodies);
|
||||
}
|
||||
|
||||
/**
|
||||
* Create the invoice to the mail out
|
||||
*
|
||||
* @var charId
|
||||
* @var ledgers
|
||||
* @var mailDelay
|
||||
*/
|
||||
private function CreateInvoice($charId, Collection $ledgers, int &$mailDelay) {
|
||||
$ores = array();
|
||||
$characters = array();
|
||||
$characterIds = array();
|
||||
$totalPrice = 0.00;
|
||||
$body = null;
|
||||
$lookup = new LookupHelper;
|
||||
$config = config('esi');
|
||||
|
||||
//Create an invoice id
|
||||
$invoiceId = "M" . uniqid();
|
||||
|
||||
//Collect the total price of all of the ledgers
|
||||
$totalPrice = round((float)$ledgers->sum('amount'), 2);
|
||||
|
||||
//Get the sum of all the ledgers
|
||||
$invoiceAmount = round(((float)$ledgers->sum('amount') * (float)$config['mining_tax']), 2);
|
||||
|
||||
//Get the character name from the lookup table
|
||||
$charName = $lookup->CharacterIdToName($charId);
|
||||
|
||||
//Create the date due and the invoice date
|
||||
$dateDue = Carbon::now()->addDays(7);
|
||||
$invoiceDate = Carbon::now();
|
||||
|
||||
//Set the mining tax from the config file
|
||||
$numberMiningTax = number_format(((float)$config['mining_tax'] * (float)100.00), 2, ".", ",");
|
||||
|
||||
//Create the list of ores to put in the mail
|
||||
$temp = $ledgers->toArray();
|
||||
foreach($temp as $t) {
|
||||
//If the key isn't set, set it to the default of 0
|
||||
if(!isset($ores[$t['type_id']])) {
|
||||
$ores[$t['type_id']] = (int)0;
|
||||
}
|
||||
|
||||
//Add the quantity into the ores array
|
||||
$ores[$t['type_id']] += (int)$t['quantity'];
|
||||
|
||||
//Create a list of character names
|
||||
if(!isset($characters[$t['character_name']])) {
|
||||
$characters[$t['character_name']] = $t['character_name'];
|
||||
}
|
||||
|
||||
//Create a list of character ids
|
||||
if(!isset($characterIds[$t['character_id']])) {
|
||||
$characterIds[$t['character_id']] = $t['character_id'];
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Create the mail body to send to the main character
|
||||
*/
|
||||
$body .= "Dear " . $charName . ",<br><br>";
|
||||
$body .= "Mining Taxes are due for the following ores mined from alliance moons: <br>";
|
||||
foreach($ores as $ore => $quantity) {
|
||||
$oreName = $lookup->ItemIdToName($ore);
|
||||
$body .= $oreName . ": " . number_format($quantity, 0, ".", ",") . "<br>";
|
||||
}
|
||||
$body .= "Total Value of Ore Mined: " . number_format($totalPrice, 2, ".", ",") . " ISK.";
|
||||
$body .= "<br><br>";
|
||||
$body .= "Please remit " . number_format($invoiceAmount, 2, ".", ",") . " ISK to Spatial Forces by " . $dateDue . "<br>";
|
||||
$body .= "Set the reason for transfer as " . $invoiceId . "<br>";
|
||||
$body .= "The mining taxes are currently set to " . $numberMiningTax . "%.<br>";
|
||||
$body .= "<br><br>";
|
||||
$body .= "You can also send a contract with the following ores in the contract with the reason set as: " . $invoiceId . "<br>";
|
||||
foreach($ores as $ore => $quantity) {
|
||||
$oreName = $lookup->ItemIdToName($ore);
|
||||
$body .= $oreName . ": " . number_format(round($quantity * $config['mining_tax']), 0, ".", ",") . "<br>";
|
||||
}
|
||||
$body .= "<br>";
|
||||
$body .= "Characters Processed: <br>";
|
||||
foreach($characters as $character) {
|
||||
$body .= $character . "<br>";
|
||||
}
|
||||
$body .= "<br>";
|
||||
$body .= "<br>Sincerely,<br>Warped Intentions Leadership<br>";
|
||||
|
||||
//Check if the mail body is greater than 2000 characters. If greater than 2,000 characters, then
|
||||
if(strlen($body) > 2000) {
|
||||
$body = "Dear " . $charName . "<br><br>";
|
||||
$body .= "Total Value of Ore Mined: " . number_format($totalPrice, 2, ".", ",") . " ISK.";
|
||||
$body .= "<br><br>";
|
||||
$body .= "Please remit " . number_format($invoiceAmount, 2, ".", ",") . " ISK to Spatial Forces by " . $dateDue . "<br>";
|
||||
$body .= "Set the reason for transfer as: " . $invoiceId . "<br>";
|
||||
$body .= "The mining taxes are currently set to " . $numberMiningTax . "%.<br>";
|
||||
$body .= "<br>";
|
||||
$body .= "<br>Sincerely,<br>Warped Intentions Leadership<br>";
|
||||
}
|
||||
|
||||
/**
|
||||
* Increment the mail delay for the next cycle
|
||||
*/
|
||||
$mailDelay += 20;
|
||||
|
||||
return $body;
|
||||
}
|
||||
|
||||
public function DebugMiningObservers() {
|
||||
//Declare variables
|
||||
$mailDelay = 15;
|
||||
$config = config('esi');
|
||||
$mains = new Collection;
|
||||
|
||||
/**
|
||||
* This section will determine if users are mains or alts of a main.
|
||||
* If they are mains, we keep the key. If they are alts of a main, then we delete
|
||||
* the key from the collection.
|
||||
*/
|
||||
|
||||
//Pluck all the users from the database of ledgers to determine if they are mains or alts.
|
||||
$tempMains = Ledger::where([
|
||||
'invoiced' => 'Yes',
|
||||
])->where('last_updated', '>', Carbon::now()->subMonths(3))->pluck('character_id');
|
||||
|
||||
//Get the unique character ids from the ledgers in the previous statement
|
||||
$tempMains = $tempMains->unique()->values()->all();
|
||||
|
||||
for($i = 0; $i < sizeof($tempMains); $i++) {
|
||||
if(UserAlt::where(['character_id' => $tempMains[$i]])->count() == 0) {
|
||||
$mains->push($tempMains[$i]);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* For each of the users, let's determine if there are any ledgers,
|
||||
* then determine if there are any alts and ledgers associated with the alts.
|
||||
*/
|
||||
foreach($mains as $main) {
|
||||
//Declare some variables for each run through the for loop
|
||||
$mainLedgerCount = 0;
|
||||
$ledgers = new Collection;
|
||||
|
||||
//Count the ledgers for the main
|
||||
$mainLedgerCount = Ledger::where([
|
||||
'character_id' => $main,
|
||||
'invoiced' => 'Yes',
|
||||
])->where('last_updated', '>', Carbon::now()->subMonths(3))->count();
|
||||
|
||||
//If there are ledgers for the main, then let's grab them
|
||||
if($mainLedgerCount > 0) {
|
||||
$mainLedgers = Ledger::where([
|
||||
'character_id' => $main,
|
||||
'invoiced' => 'Yes',
|
||||
])->where('last_updated', '>', Carbon::now()->subMonths(3))->get();
|
||||
|
||||
//Cycle through the entries, and add them to the ledger to send with the invoice
|
||||
foreach($mainLedgers as $row) {
|
||||
$ledgers->push([
|
||||
'character_id' => $row->character_id,
|
||||
'character_name' => $row->character_name,
|
||||
'observer_id' => $row->observer_id,
|
||||
'type_id' => $row->type_id,
|
||||
'ore_name' => $row->ore_name,
|
||||
'quantity' => $row->quantity,
|
||||
'amount' => (float)$row->amount,
|
||||
'last_updated' => $row->last_updated,
|
||||
]);
|
||||
}
|
||||
}
|
||||
|
||||
//Get the alt count for the main character
|
||||
$altCount = UserAlt::where(['main_id' => $main])->count();
|
||||
//If more than 0 alts, grab all the alts.
|
||||
if($altCount > 0) {
|
||||
$alts = UserAlt::where([
|
||||
'main_id' => $main,
|
||||
])->get();
|
||||
|
||||
//Cycle through the alts, and get the ledgers, and push onto the stack
|
||||
foreach($alts as $alt) {
|
||||
$altLedgerCount = Ledger::where([
|
||||
'character_id' => $alt->character_id,
|
||||
'invoiced' => 'Yes',
|
||||
])->where('last_updated', '>', Carbon::now()->subMonths(3))->count();
|
||||
|
||||
if($altLedgerCount > 0) {
|
||||
$altLedgers = Ledger::where([
|
||||
'character_id' => $alt->character_id,
|
||||
'invoiced' => 'Yes',
|
||||
])->where('last_updated', '>', Carbon::now()->subMonths(3))->get();
|
||||
|
||||
foreach($altLedgers as $row) {
|
||||
$ledgers->push([
|
||||
'character_id' => $row->character_id,
|
||||
'character_name' => $row->character_name,
|
||||
'observer_id' => $row->observer_id,
|
||||
'type_id' => $row->type_id,
|
||||
'ore_name' => $row->ore_name,
|
||||
'quantity' => $row->quantity,
|
||||
'amount' => (float)$row->amount,
|
||||
'last_updated' => $row->last_updated,
|
||||
]);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if($ledgers->count() > 0) {
|
||||
var_dump($ledgers);
|
||||
var_dump(round(((float)$ledgers->sum('amount') * (float)$config['mining_tax']), 2));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,152 +0,0 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers\Wiki;
|
||||
|
||||
//Laravel libraries
|
||||
use App\Http\Controllers\Controller;
|
||||
use Illuminate\Http\Request;
|
||||
use Auth;
|
||||
|
||||
//User Libraries
|
||||
use App\Library\Lookups\LookupHelper;
|
||||
use App\Library\Wiki\WikiHelper;
|
||||
|
||||
//Models
|
||||
use App\Models\Doku\DokuGroupNames;
|
||||
use App\Models\Doku\DokuMember;
|
||||
use App\Models\Doku\DokuUser;
|
||||
use App\Models\Admin\AllowedLogin;
|
||||
use App\Models\User\User;
|
||||
|
||||
class WikiController extends Controller
|
||||
{
|
||||
public function __construct() {
|
||||
$this->middleware('auth');
|
||||
$this->middleware('role:Renter');
|
||||
}
|
||||
|
||||
public function displayRegister() {
|
||||
//make user name syntax like we want it.
|
||||
$name = Auth::user()->name;
|
||||
$name = strtolower($name);
|
||||
$name = str_replace(' ', '_', $name);
|
||||
|
||||
//Check to see if the user is already registered in the database
|
||||
$count = DokuUser::where([
|
||||
'login' => $name,
|
||||
])->count();
|
||||
|
||||
//If the count is greater than zero, also check the login name as a reference
|
||||
if($count > 0) {
|
||||
$check = DokuUser::where([
|
||||
'login' => $name,
|
||||
])->first();
|
||||
|
||||
if($check->login === $name) {
|
||||
return redirect('/dashboard')->with('error', 'Already registered for the wiki!');
|
||||
}
|
||||
}
|
||||
|
||||
return view('wiki.user.register')->with('name', $name);
|
||||
}
|
||||
|
||||
public function storeRegister(Request $request) {
|
||||
$this->validate($request, [
|
||||
'password' => 'required',
|
||||
'password2' => 'required',
|
||||
]);
|
||||
|
||||
$password = '';
|
||||
|
||||
//Check to make sure the password matches
|
||||
if($request->password !== $request->password2) {
|
||||
return view('/dashboard')->with('error');
|
||||
} else {
|
||||
$password = md5($request->password);
|
||||
}
|
||||
|
||||
if(Auth::user()->hasRole('User')) {
|
||||
$role = 1; //User role id from wiki_groupname table
|
||||
$roleDescription = 'user';
|
||||
} else if(Auth::user()->hasRole('Renter')) {
|
||||
$role = 8; //Renter role id from wiki_groupname table
|
||||
$roleDescription = 'renter';
|
||||
}
|
||||
|
||||
//Load the model
|
||||
$user = new DokuUser;
|
||||
$member = new DokuMember;
|
||||
|
||||
//make user name syntax like we want it.
|
||||
$name = Auth::user()->name;
|
||||
$name = strtolower($name);
|
||||
$name = str_replace(' ', '_', $name);
|
||||
|
||||
//Add the new user to the wiki
|
||||
$user->login = $name;
|
||||
$user->pass = $password;
|
||||
$user->name = Auth::user()->name;
|
||||
$user->save();
|
||||
|
||||
//Get the user from the table to get the uid
|
||||
$uid = DokuUser::where([
|
||||
'login' => $name,
|
||||
])->first();
|
||||
|
||||
//Save information in the model
|
||||
$member->uid = $uid->id;
|
||||
$member->gid = $role;
|
||||
$member->groupname = $roleDescription;
|
||||
$member->save();
|
||||
|
||||
//Return to the dashboard view
|
||||
return redirect('/dashboard')->with('success', 'Registration successful. Your username is: ' . $name);
|
||||
}
|
||||
|
||||
public function displayChangePassword() {
|
||||
$name = Auth::user()->name;
|
||||
$name = strtolower($name);
|
||||
$name = str_replace(' ', '_', $name);
|
||||
|
||||
//Get the password
|
||||
$check = DokuUser::where([
|
||||
'login' => $name
|
||||
])->count();
|
||||
|
||||
if($check == 0) {
|
||||
return redirect('/dashboard')->with('error', 'Login Not Found');
|
||||
}
|
||||
|
||||
return view('wiki.user.changepassword')->with('name', $name);
|
||||
}
|
||||
|
||||
public function changePassword(Request $request) {
|
||||
$this->validate($request, [
|
||||
'password' => 'required',
|
||||
'password2' => 'required',
|
||||
]);
|
||||
|
||||
//Check for a valid password
|
||||
$password = '';
|
||||
if($request->password !== $request->password2) {
|
||||
return redirect('/wiki/changepassword')->with('error', 'Passwords did not match');
|
||||
} else {
|
||||
$password = md5($request->password);
|
||||
}
|
||||
//Get a model ready for the database
|
||||
$user = new DokuUser;
|
||||
//Find the username for the database through the character name in auth
|
||||
$name = Auth::user()->name;
|
||||
$name = strtolower($name);
|
||||
$name = str_replace(' ', '_', $name);
|
||||
|
||||
//Update the password for the login name
|
||||
DokuUser::where([
|
||||
'login' => $name,
|
||||
])->update([
|
||||
'pass' => $password,
|
||||
]);
|
||||
|
||||
return redirect('/dashboard')->with('success', 'Password changed successfully. Your username is: ' . $name);
|
||||
}
|
||||
}
|
||||
@@ -1,148 +0,0 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers\Wormholes;
|
||||
|
||||
//Laravel Libraries
|
||||
use Illuminate\Http\Request;
|
||||
use App\Http\Controllers\Controller;
|
||||
use Auth;
|
||||
use Carbon\Carbon;
|
||||
|
||||
//User Libraries
|
||||
|
||||
//Models
|
||||
use App\Models\Wormholes\AllianceWormhole;
|
||||
use App\Models\Wormholes\WormholeType;
|
||||
|
||||
class WormholeController extends Controller
|
||||
{
|
||||
public function __construct() {
|
||||
$this->middleware('auth');
|
||||
$this->middleware('role:User');
|
||||
}
|
||||
|
||||
public function displayWormholeForm() {
|
||||
//Declare a few array variables
|
||||
$duration = array();
|
||||
$class = array();
|
||||
$stability = array();
|
||||
$size = array();
|
||||
|
||||
//Get the duration from the table
|
||||
$duration = [
|
||||
'This wormhole has not yet begun its natural cycle of decay and should last at least another day.',
|
||||
'This wormhole is beginning to decay, but will not last another day.',
|
||||
'This wormhole is reaching the end of its natural lifetime',
|
||||
];
|
||||
|
||||
//Get the wh classes from the table
|
||||
$class = [
|
||||
'C1',
|
||||
'C2',
|
||||
'C3',
|
||||
'C4',
|
||||
'C5',
|
||||
'C6',
|
||||
'C7',
|
||||
'C8',
|
||||
'C9',
|
||||
'C13',
|
||||
'Drifter',
|
||||
'Thera',
|
||||
'Exit WH',
|
||||
];
|
||||
|
||||
//Get the wh types from the table
|
||||
$type = WormholeType::groupBy('type')->pluck('type');
|
||||
|
||||
//Get the wh sizes from the table
|
||||
$size = [
|
||||
'XS',
|
||||
'S',
|
||||
'M',
|
||||
'L',
|
||||
'XL',
|
||||
];
|
||||
|
||||
//Get the wh stabilities from the table
|
||||
$stability = [
|
||||
'Stable',
|
||||
'Non-Critical',
|
||||
'Critical',
|
||||
];
|
||||
|
||||
//Return all the variables to the view
|
||||
return view('wormholes.form')->with('class', $class)
|
||||
->with('type', $type)
|
||||
->with('size', $size)
|
||||
->with('stability', $stability)
|
||||
->with('duration', $duration);
|
||||
}
|
||||
|
||||
public function storeWormhole() {
|
||||
$this->validate($request, [
|
||||
'sig' => 'required',
|
||||
'duration' => 'required',
|
||||
'dateTiume' => 'required',
|
||||
'class' => 'required',
|
||||
'size' => 'required',
|
||||
'stability' => 'required',
|
||||
'system' => 'required',
|
||||
]);
|
||||
|
||||
//Declare some variables
|
||||
$duration = null;
|
||||
|
||||
//Create the stable time for the database
|
||||
if($request->duration == 'This wormhole has not yet begun its natural cycle of decay and should last at least another day.') {
|
||||
$duration = '>24 hours';
|
||||
} else if ($request->duration == 'This wormhole is beginning to decay, but will not last another day.') {
|
||||
$duration = '>4 hours <24 hours';
|
||||
} else if($request->duration == 'This wormhole is reaching the end of its natural lifetime') {
|
||||
'<4 hours';
|
||||
}
|
||||
|
||||
//Get the wormhole type from the database so we can enter other details
|
||||
$wormholeType = WormholeType::where([
|
||||
'type' => $request->type,
|
||||
])->first();
|
||||
|
||||
$found = AllianceWormhole::where([
|
||||
'system' => $request->system,
|
||||
'sig_ig' => $request->sig,
|
||||
])->count();
|
||||
|
||||
if($found == 0) {
|
||||
AllianceWormhole::insert([
|
||||
'system' => $request->system,
|
||||
'sig_id' => $request->sig_id,
|
||||
'duration_left' => $duration,
|
||||
'dateTime' => $request->dateTime,
|
||||
'class' => $request->class,
|
||||
'type' => $request->class,
|
||||
'hole_size' => $request->size,
|
||||
'stability' => $request->stability,
|
||||
'details' => $request->details,
|
||||
'link' => $request->link,
|
||||
'mass_allowed' => $wormholeType->mass_allowed,
|
||||
'individual_mass' => $wormholeType->individual_mass,
|
||||
'regeneration' => $wormholeType->regeneration,
|
||||
'max_stable_time' => $wormholeType->max_stable_time,
|
||||
]);
|
||||
|
||||
return redirect('/wormholes/display')->with('success', 'Wormhole Info Added.');
|
||||
} else {
|
||||
return redirect('/wormholes/display')->with('error', 'Wormhole already in database.');
|
||||
}
|
||||
}
|
||||
|
||||
public function displayWormholes() {
|
||||
//Create the date and time
|
||||
$dateTime = Carbon::now()->subDays(2);
|
||||
|
||||
//Get all of the wormholes from the last 48 hours from the database to display
|
||||
$wormholes = AllianceWormhole::where('created_at', '>=', $dateTime)->get();
|
||||
|
||||
return view('wormholes.display')->with('wormholes', $wormholes);
|
||||
}
|
||||
}
|
||||
@@ -60,7 +60,6 @@ class Kernel extends HttpKernel
|
||||
'signed' => \Illuminate\Routing\Middleware\ValidateSignature::class,
|
||||
'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class,
|
||||
'verified' => \Illuminate\Auth\Middleware\EnsureEmailIsVerified::class,
|
||||
//'callback' => \App\Http\Middleware\Callback::class,
|
||||
'role' => \App\Http\Middleware\RequireRole::class,
|
||||
'permission' => \App\Http\Middleware\RequirePermission::class,
|
||||
];
|
||||
|
||||
@@ -15,7 +15,7 @@ class Authenticate extends Middleware
|
||||
protected function redirectTo($request)
|
||||
{
|
||||
if(!$this->auth->check()){
|
||||
return route('/');
|
||||
return '/';
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,121 +0,0 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Middleware;
|
||||
|
||||
//Internal Library
|
||||
use Closure;
|
||||
use Illuminate\Support\Facades\Auth;
|
||||
use Socialite;
|
||||
use DB;
|
||||
|
||||
//Libraries
|
||||
use Seat\Eseye\Cache\NullCache;
|
||||
use Seat\Eseye\Configuration;
|
||||
use Seat\Eseye\Containers\EsiAuthentication;
|
||||
use Seat\Eseye\Eseye;
|
||||
|
||||
//Models
|
||||
use App\Models\User\User;
|
||||
use App\Models\Esi\EsiToken;
|
||||
use App\Models\Esi\EsiScope;
|
||||
|
||||
class Callback
|
||||
{
|
||||
/**
|
||||
* Handle an incoming request for callback. Set to handle the request after the
|
||||
* login controller does what it needs to do.
|
||||
*
|
||||
* @param \Illuminate\Http\Request $request
|
||||
* @param \Closure $next
|
||||
* @return mixed
|
||||
*/
|
||||
public function handle($request, Closure $next, $ssoUser)
|
||||
{
|
||||
$response = $next($request);
|
||||
|
||||
if(isset($ssoUser->refreshToken)) {
|
||||
//See if an access token is present for the user
|
||||
$tokenCount = EsiToken::where(['character_id' => $ssoUser->id])->count();
|
||||
if($tokenCount > 0) {
|
||||
//Update the esi token
|
||||
$this->UpdateEsiToken($ssoUser);
|
||||
} else {
|
||||
//Save the esi token
|
||||
$this->SaveEsiToken($ssoUser);
|
||||
}
|
||||
|
||||
//After creating or updating the token, update the table for the scopes.
|
||||
$this->SetScopes($ssoUser->user['Scopes'], $ssoUser->id);
|
||||
} else {
|
||||
$created = $this->createAlt($ssoUser);
|
||||
|
||||
}
|
||||
|
||||
return $response;
|
||||
}
|
||||
|
||||
/**
|
||||
* Update the ESI Token
|
||||
*/
|
||||
private function UpdateEsiToken($eve_user) {
|
||||
EsiToken::where('character_id', $eve_user->id)->update([
|
||||
'character_id' => $eve_user->getId(),
|
||||
'access_token' => $eve_user->token,
|
||||
'refresh_token' => $eve_user->refreshToken,
|
||||
'inserted_at' => time(),
|
||||
'expires_in' => $eve_user->expiresIn,
|
||||
]);
|
||||
}
|
||||
|
||||
/**
|
||||
* Create a new ESI Token in the database
|
||||
*/
|
||||
private function SaveEsiToken($eve_user) {
|
||||
$token = new EsiToken;
|
||||
$token->character_id = $eve_user->id;
|
||||
$token->access_token = $eve_user->token;
|
||||
$token->refresh_token = $eve_user->refreshToken;
|
||||
$token->inserted_at = time();
|
||||
$token->expires_in = $eve_user->expiresIn;
|
||||
$token->save();
|
||||
}
|
||||
|
||||
private function SetScopes($scopes, $charId) {
|
||||
//Delete the current scopes, so we can add new scopes into the database
|
||||
EsiScope::where('character_id', $charId)->delete();
|
||||
$scopes = explode(' ', $scopes);
|
||||
foreach($scopes as $scope) {
|
||||
$data = new EsiScope;
|
||||
$data->character_id = $charId;
|
||||
$data->scope = $scope;
|
||||
$data->save();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Check if an alt exists in the database, else, create and
|
||||
* return the user object.
|
||||
*
|
||||
* @param \Laravel\Socialite\Two\User $user
|
||||
*/
|
||||
private function createAlt($user) {
|
||||
$altCount = UserAlt::where('character_id', $user->id)->count();
|
||||
if($altCount == 0) {
|
||||
$newAlt = new UserAlt;
|
||||
$newAlt->name = $user->getName();
|
||||
$newAlt->main_id = auth()->user()->getId();
|
||||
$newAlt->character_id = $user->id;
|
||||
$newAlt->avatar = $user->avatar;
|
||||
$newAlt->access_token = $user->token;
|
||||
$newAlt->owner_hash = $user->owner_hash;
|
||||
$newAlt->inserted_at = time();
|
||||
$newAlt->expires_in = $user->expiresIn;
|
||||
$newAlt->save();
|
||||
return 1;
|
||||
} else {
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -6,6 +6,7 @@ use Closure;
|
||||
use DB;
|
||||
|
||||
use App\Models\User\UserPermission;
|
||||
use App\Models\User\UserRole;
|
||||
|
||||
class RequirePermission
|
||||
{
|
||||
@@ -18,9 +19,15 @@ class RequirePermission
|
||||
*/
|
||||
public function handle($request, Closure $next, $permission)
|
||||
{
|
||||
$perms = UserPermission::where(['character_id' => auth()->user()->character_id, 'permission'=> $permission])->get(['permission']);
|
||||
$role = UserRole::where([
|
||||
'character_id' => auth()->user()->character_id,
|
||||
])->get(['role']);
|
||||
|
||||
abort_unless(auth()->check() && isset($perms[0]->permission), 403, "You don't have the correct permission to be in this area.");
|
||||
if($role[0]->role != "Admin") {
|
||||
$perms = UserPermission::where(['character_id' => auth()->user()->character_id, 'permission'=> $permission])->get(['permission']);
|
||||
|
||||
abort_unless(auth()->check() && isset($perms[0]->permission), 403, "You don't have the correct permission to be in this area.");
|
||||
}
|
||||
|
||||
return $next($request);
|
||||
}
|
||||
|
||||
10
app/Http/Requests/Request.php
Normal file
10
app/Http/Requests/Request.php
Normal file
@@ -0,0 +1,10 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Requests;
|
||||
|
||||
use Illuminate\Foundation\Http\FormRequest;
|
||||
|
||||
abstract class Request extends FormRequest
|
||||
{
|
||||
//
|
||||
}
|
||||
176
app/Jobs/Commands/Assets/FetchAllianceAssets.php
Normal file
176
app/Jobs/Commands/Assets/FetchAllianceAssets.php
Normal file
@@ -0,0 +1,176 @@
|
||||
<?php
|
||||
|
||||
namespace App\Jobs\Commands\Assets;
|
||||
|
||||
//Internal Library
|
||||
use Illuminate\Bus\Queueable;
|
||||
use Illuminate\Contracts\Queue\ShouldQueue;
|
||||
use Illuminate\Foundation\Bus\Dispatchable;
|
||||
use Illuminate\Queue\InteractsWithQueue;
|
||||
use Illuminate\Queue\SerializesModels;
|
||||
|
||||
//Application Library
|
||||
use App\Library\Esi\Esi;
|
||||
use App\Library\Helpers\LookupHelper;
|
||||
use Seat\Eseye\Exceptions\RequestFailedException;
|
||||
|
||||
//Models
|
||||
use App\Models\Structure\Asset;
|
||||
|
||||
class FetchAllianceAssets implements ShouldQueue
|
||||
{
|
||||
use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;
|
||||
|
||||
/**
|
||||
* Timeout in seconds
|
||||
*
|
||||
* @var int
|
||||
*/
|
||||
public $timeout = 3600;
|
||||
|
||||
/**
|
||||
* Number of job retries
|
||||
*
|
||||
* @var int
|
||||
*/
|
||||
public $tries = 3;
|
||||
|
||||
/**
|
||||
* Create a new job instance.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function __construct()
|
||||
{
|
||||
//Set the connection for the job
|
||||
$this->connection = 'redis';
|
||||
$this->onQueue('assets');
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Execute the job.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function handle()
|
||||
{
|
||||
//Declare variables
|
||||
$config = config('esi');
|
||||
$corpId = 98287666;
|
||||
$esiHelper = new Esi;
|
||||
|
||||
//Get the refresh token from the database
|
||||
$token = $esiHelper->GetRefreshToken($config['primary']);
|
||||
//Create the esi authentication container
|
||||
$esi = $esiHelper->SetupEsiAuthentication($token);
|
||||
|
||||
//Check the esi scope
|
||||
if(!$esiHelper->HaveEsiScope($config['primary'], 'esi-assets.read_corporation_assets.v1')) {
|
||||
Log::critical("Scope check failed in FetchAllianceAssets for esi-assets.read_corporation_assets.v1");
|
||||
}
|
||||
|
||||
//Set the current page
|
||||
$currentPage = 1;
|
||||
//Set our default pages
|
||||
$totalPages = 1;
|
||||
|
||||
do {
|
||||
if($esiHelper->TokenExpired($token)) {
|
||||
$token = $esiHelper->GetRefreshToken($config['primary']);
|
||||
$esi = $esiHelper->SetupAuthenticationToken($token);
|
||||
}
|
||||
|
||||
//Attempt to get the assets
|
||||
$assets = $esi->page($currentPage)
|
||||
->invoke('get', '/corporations/{corporation_id}/assets/', [
|
||||
'corporation_id' => $corpId,
|
||||
]);
|
||||
|
||||
//If on the first page, then update the total number of pages
|
||||
if($currentPage == 1) {
|
||||
$totalPages = $assets->pages;
|
||||
}
|
||||
|
||||
//For each asset retrieved, let's process it.
|
||||
foreach($assets as $a) {
|
||||
ProcessAllianceAssets::dispatch($a);
|
||||
}
|
||||
|
||||
//Increment the current page
|
||||
$currentPage++;
|
||||
} while($currentPage <= $totalPages);
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* The job failed to process
|
||||
* @param Exception $exception
|
||||
* @return void
|
||||
*/
|
||||
public function failed($exception) {
|
||||
if(!exception instanceof RequestFailedException) {
|
||||
//If not a failure due to ESI, then log it. Otherwise,
|
||||
//deduce why the exception occurred.
|
||||
Log::critical($exception);
|
||||
}
|
||||
|
||||
if ((is_object($exception->getEsiResponse()) && (stristr($exception->getEsiResponse()->error, 'Too many errors') || stristr($exception->getEsiResponse()->error, 'This software has exceeded the error limit for ESI'))) ||
|
||||
(is_string($exception->getEsiResponse()) && (stristr($exception->getEsiResponse(), 'Too many errors') || stristr($exception->getEsiResponse(), 'This software has exceeded the error limit for ESI')))) {
|
||||
|
||||
//We have hit the error rate limiter, wait 120 seconds before releasing the job back into the queue.
|
||||
Log::info('FetchAllianceAssets has hit the error rate limiter. Releasing the job back into the wild in 2 minutes.');
|
||||
$this->release(120);
|
||||
} else {
|
||||
$errorCode = $exception->getEsiResponse()->getErrorCode();
|
||||
|
||||
switch($errorCode) {
|
||||
case 400: //Bad Request
|
||||
Log::critical("Bad request has occurred in FetchAllianceAssets. Job has been discarded");
|
||||
break;
|
||||
case 401: //Unauthorized Request
|
||||
Log::critical("Unauthorized request has occurred in FetchAllianceAssets at " . Carbon::now()->toDateTimeString() . ".\r\nCancelling the job.");
|
||||
$this->delete();
|
||||
break;
|
||||
case 403: //Forbidden
|
||||
Log::critical("FetchAllianceAssets has incurred a forbidden error. Cancelling the job.");
|
||||
$this->delete();
|
||||
break;
|
||||
case 420: //Error Limited
|
||||
Log::warning("Error rate limit occurred in FetchAllianceAssets. Restarting job in 120 seconds.");
|
||||
$this->release(120);
|
||||
break;
|
||||
case 500: //Internal Server Error
|
||||
Log::critical("Internal Server Error for ESI in FetchAllianceAssets. Attempting a restart in 120 seconds.");
|
||||
$this->release(120);
|
||||
break;
|
||||
case 503: //Service Unavailable
|
||||
Log::critical("Service Unavailabe for ESI in FetchAllianceAssets. Releasing the job back to the queue in 30 seconds.");
|
||||
$this->release(30);
|
||||
break;
|
||||
case 504: //Gateway Timeout
|
||||
Log::critical("Gateway timeout in FetchAllianceAssets. Releasing the job back to the queue in 30 seconds.");
|
||||
$this->release(30);
|
||||
break;
|
||||
case 201:
|
||||
//Good response code
|
||||
$this->delete();
|
||||
break;
|
||||
//If no code is given, then log and break out of switch.
|
||||
default:
|
||||
Log::warning("No response code received from esi call in FetchAllianceAssets.\r\n");
|
||||
$this->delete();
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Tags for jobs
|
||||
*
|
||||
* @var array
|
||||
*/
|
||||
public function tags() {
|
||||
return ['FetchAllianceAssets', 'AllianceStructures', 'Assets'];
|
||||
}
|
||||
}
|
||||
109
app/Jobs/Commands/Assets/ProcessAllianceAssets.php
Normal file
109
app/Jobs/Commands/Assets/ProcessAllianceAssets.php
Normal file
@@ -0,0 +1,109 @@
|
||||
<?php
|
||||
|
||||
namespace App\Jobs\Commands\Assets;
|
||||
|
||||
use Illuminate\Bus\Queueable;
|
||||
use Illuminate\Contracts\Queue\ShouldQueue;
|
||||
use Illuminate\Foundation\Bus\Dispatchable;
|
||||
use Illuminate\Queue\InteractsWithQueue;
|
||||
use Illuminate\Queue\SerializesModels;
|
||||
use Log;
|
||||
|
||||
//Models
|
||||
use App\Models\Structure\Asset;
|
||||
|
||||
class ProcessAllianceAssets implements ShouldQueue
|
||||
{
|
||||
use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;
|
||||
|
||||
/**
|
||||
* Timeout in seconds
|
||||
*
|
||||
* @var int
|
||||
*/
|
||||
public $timeout = 3600;
|
||||
|
||||
/**
|
||||
* Number of job retries
|
||||
*
|
||||
* @var int
|
||||
*/
|
||||
public $tries = 3;
|
||||
|
||||
//Private variable
|
||||
private $asset;
|
||||
|
||||
/**
|
||||
* Create a new job instance.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function __construct($a)
|
||||
{
|
||||
//Set the connection for the job
|
||||
$this->connection = 'redis';
|
||||
$this->onQueue('assets');
|
||||
|
||||
$this->asset = $a;
|
||||
}
|
||||
|
||||
/**
|
||||
* Execute the job.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function handle()
|
||||
{
|
||||
/**
|
||||
* If the asset is not in the database, then let's save it to the database,
|
||||
* otherwise, we just update the old asset
|
||||
*/
|
||||
$count = Asset::where([
|
||||
'item_id' => $this->asset->item_id,
|
||||
])->count();
|
||||
|
||||
if($count == 0) {
|
||||
$as = new Asset;
|
||||
if(isset($this->asset->is_blueprint_copy)) {
|
||||
$as->is_blueprint_copy = $this->asset->is_blueprint_copy;
|
||||
}
|
||||
$as->is_singleton = $this->asset->is_singleton;
|
||||
$as->item_id = $this->asset->item_id;
|
||||
$as->location_flag = $this->asset->location_flag;
|
||||
$as->location_id = $this->asset->location_id;
|
||||
$as->location_type = $this->asset->location_type;
|
||||
$as->quantity = $this->asset->quantity;
|
||||
$as->type_id = $this->asset->type_id;
|
||||
$as->save();
|
||||
} else {
|
||||
//Update the previously found asset
|
||||
Asset::where([
|
||||
'item_id' => $this->asset->item_id,
|
||||
])->update([
|
||||
'is_singleton' => $this->asset->is_singleton,
|
||||
'location_flag' => $this->asset->location_flag,
|
||||
'location_id' => $this->asset->location_id,
|
||||
'location_type' => $this->asset->location_type,
|
||||
'quantity' => $this->asset->quantity,
|
||||
'type_id' => $this->asset->type_id,
|
||||
]);
|
||||
|
||||
if(isset($this->asset->is_blueprint_copy)) {
|
||||
Asset::where([
|
||||
'item_id' => $this->asset->item_id,
|
||||
])->update([
|
||||
'is_blueprint_copy' => $this->asset->is_blueprint_copy,
|
||||
]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Tags for jobs
|
||||
*
|
||||
* @var array
|
||||
*/
|
||||
public function tags() {
|
||||
return ['FetchAllianceAssets', 'AllianceStructures', 'Assets'];
|
||||
}
|
||||
}
|
||||
59
app/Jobs/Commands/Assets/PurgeAllianceAssets.php
Normal file
59
app/Jobs/Commands/Assets/PurgeAllianceAssets.php
Normal file
@@ -0,0 +1,59 @@
|
||||
<?php
|
||||
|
||||
namespace App\Jobs\Commands\Assets;
|
||||
|
||||
//Internal Library
|
||||
use Illuminate\Bus\Queueable;
|
||||
use Illuminate\Contracts\Queue\ShouldQueue;
|
||||
use Illuminate\Foundation\Bus\Dispatchable;
|
||||
use Illuminate\Queue\InteractsWithQueue;
|
||||
use Illuminate\Queue\SerializesModels;
|
||||
|
||||
//Jobs
|
||||
use App\Jobs\Commands\Assets\FetchAllianceAssets;
|
||||
|
||||
//Models
|
||||
use App\Models\Structure\Asset;
|
||||
|
||||
class PurgeAllianceAssets implements ShouldQueue
|
||||
{
|
||||
use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;
|
||||
|
||||
/**
|
||||
* Timeout in seconds
|
||||
*
|
||||
* @var int
|
||||
*/
|
||||
public $timeout = 3600;
|
||||
|
||||
/**
|
||||
* Number of job retries
|
||||
*
|
||||
* @var int
|
||||
*/
|
||||
public $tries = 3;
|
||||
|
||||
/**
|
||||
* Create a new job instance.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function __construct()
|
||||
{
|
||||
//Set the connection for the job
|
||||
$this->connection = 'redis';
|
||||
$this->onQueue('assets');
|
||||
}
|
||||
|
||||
/**
|
||||
* Execute the job.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function handle()
|
||||
{
|
||||
Asset::truncate();
|
||||
|
||||
FetchAllianceAssets::dispatch()->delay(Carbon::now()->addSeconds(30));
|
||||
}
|
||||
}
|
||||
205
app/Jobs/Commands/Data/PurgeUsers.php
Normal file
205
app/Jobs/Commands/Data/PurgeUsers.php
Normal file
@@ -0,0 +1,205 @@
|
||||
<?php
|
||||
|
||||
namespace App\Jobs\Commands\Data;
|
||||
|
||||
use Illuminate\Bus\Queueable;
|
||||
use Illuminate\Contracts\Queue\ShouldQueue;
|
||||
use Illuminate\Foundation\Bus\Dispatchable;
|
||||
use Illuminate\Queue\InteractsWithQueue;
|
||||
use Illuminate\Queue\SerializesModels;
|
||||
use Log;
|
||||
use Carbon\Carbon;
|
||||
|
||||
//Libraries
|
||||
use Seat\Eseye\Exceptions\RequestFailedException;
|
||||
use App\Library\Esi\Esi;
|
||||
|
||||
//Models
|
||||
use App\Models\User\User;
|
||||
use App\Models\User\UserAlt;
|
||||
use App\Models\Esi\EsiScope;
|
||||
use App\Models\Esi\EsiToken;
|
||||
use App\Models\User\UserPermission;
|
||||
use App\Models\User\UserRole;
|
||||
use App\Models\Admin\AllowedLogin;
|
||||
|
||||
class PurgeUsers implements ShouldQueue
|
||||
{
|
||||
use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;
|
||||
|
||||
/**
|
||||
* Timeout in seconds
|
||||
*
|
||||
* @var int
|
||||
*/
|
||||
public $timeout = 3600;
|
||||
|
||||
/**
|
||||
* Retries
|
||||
*
|
||||
* @var int
|
||||
*/
|
||||
public $retries = 3;
|
||||
|
||||
/**
|
||||
* Create a new job instance.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function __construct()
|
||||
{
|
||||
$this->connection = 'redis';
|
||||
$this->onQueue('default');
|
||||
}
|
||||
|
||||
/**
|
||||
* Execute the job.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function handle()
|
||||
{
|
||||
//Declare some variables
|
||||
$esiHelper = new Esi;
|
||||
|
||||
//Setup the esi variable
|
||||
$esi = $esiHelper->SetupEsiAuthentication();
|
||||
|
||||
//Get all of the users from the database
|
||||
$users = User::all();
|
||||
|
||||
//Get the allowed logins
|
||||
$legacy = AllowedLogin::where(['login_type' => 'Legacy'])->pluck('entity_id')->toArray();
|
||||
$renter = AllowedLogin::where(['login_type' => 'Renter'])->pluck('entity_id')->toArray();
|
||||
|
||||
//Cycle through all of the users, and either update their role, or delete them.
|
||||
foreach($users as $user) {
|
||||
//Set the fail bit to false for the next user to check
|
||||
$failed = false;
|
||||
|
||||
//Note a screen entry for when doing cli stuff
|
||||
printf("Processing character with id of " . $user->character_id . "\r\n");
|
||||
|
||||
//Get the character information
|
||||
try {
|
||||
$character_info = $esi->invoke('get', '/characters/{character_id}/', [
|
||||
'character_id' => $user->character_id,
|
||||
]);
|
||||
|
||||
$corp_info = $esi->invoke('get', '/corporations/{corporation_id}/', [
|
||||
'corporation_id' => $character_info->corporation_id,
|
||||
]);
|
||||
} catch(RequestFailedException $e) {
|
||||
Log::warning('Failed to get character information in purge user command for user ' . $user->character_id);
|
||||
$failed = true;
|
||||
}
|
||||
|
||||
//If the fail bit is still false, then continue
|
||||
if($failed === false) {
|
||||
//Get the user's role
|
||||
$role = UserRole::where(['character_id' => $user->character_id])->first();
|
||||
|
||||
//We don't want to modify Admin and SuperUsers. Admins and SuperUsers are removed via a different process.
|
||||
if($role->role != 'Admin') {
|
||||
//Check if the user is allowed to login
|
||||
if(isset($corp_info->alliance_id)) {
|
||||
//Warped Intentions is allowed to login
|
||||
if($corp_info->alliance_id == '99004116') {
|
||||
//If the alliance is Warped Intentions, then modify the role if we need to
|
||||
if($role->role != 'User') {
|
||||
//Upate the role of the user
|
||||
UserRole::where([
|
||||
'character_id' => $user->character_id,
|
||||
])->update([
|
||||
'role' => 'User',
|
||||
]);
|
||||
|
||||
//Update the user type
|
||||
User::where([
|
||||
'character_id' => $user->character_id,
|
||||
])->update([
|
||||
'user_type' => 'W4RP',
|
||||
]);
|
||||
}
|
||||
} else if(in_array($corp_info->alliance_id, $legacy)) { //Legacy Users
|
||||
if($role->role != 'User') {
|
||||
//Update the role of the user
|
||||
UserRole::where([
|
||||
'character_id' => $user->character_id,
|
||||
])->update([
|
||||
'role' => 'User',
|
||||
]);
|
||||
|
||||
//Update the user type
|
||||
User::where([
|
||||
'character_id' => $user->character_id,
|
||||
])->update([
|
||||
'user_type' => 'Legacy',
|
||||
]);
|
||||
}
|
||||
} else if(in_array($corp_info->alliance_id, $renter)) { //Renter Users
|
||||
if($role->role != 'Renter') {
|
||||
//Update the role of the user
|
||||
UserRole::where([
|
||||
'character_id' => $user->character_id,
|
||||
])->update([
|
||||
'role' => 'Renter',
|
||||
]);
|
||||
|
||||
//Update the user type
|
||||
User::where([
|
||||
'character_id' => $user->character_id,
|
||||
])->update([
|
||||
'user_type' => 'Renter',
|
||||
]);
|
||||
}
|
||||
} else {
|
||||
//If the user is part of no valid login group, then delete the user.
|
||||
//Delete all of the permissions first
|
||||
UserPermission::where([
|
||||
'character_id' => $user->character_id,
|
||||
])->delete();
|
||||
|
||||
//Delete the user's role
|
||||
UserRole::where([
|
||||
'character_id' => $user->character_id,
|
||||
])->delete();
|
||||
|
||||
//Delete any alts the user might have registered.
|
||||
$altCount = UserAlt::where(['main_id' => $user->character_id])->count();
|
||||
if($altCount > 0) {
|
||||
UserAlt::where([
|
||||
'main_id' => $user->character_id,
|
||||
])->delete();
|
||||
}
|
||||
|
||||
//Delete the user's esi scopes
|
||||
EsiScope::where([
|
||||
'character_id' => $user->character_id,
|
||||
])->delete();
|
||||
|
||||
//Delete the user's esi token
|
||||
EsiToken::where([
|
||||
'character_id' => $user->character_id,
|
||||
])->delete();
|
||||
|
||||
//Delete the user from the user table
|
||||
User::where([
|
||||
'character_id' => $user->character_id,
|
||||
])->delete();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the tags for Horzion
|
||||
*
|
||||
* @var array
|
||||
*/
|
||||
public function tags() {
|
||||
return ['Data', 'PurgeUsers'];
|
||||
}
|
||||
}
|
||||
@@ -1,56 +0,0 @@
|
||||
<?php
|
||||
|
||||
namespace App\Jobs\Commands\Eve;
|
||||
|
||||
//Internal Library
|
||||
use Illuminate\Bus\Queueable;
|
||||
use Illuminate\Queue\SerializesModels;
|
||||
use Illuminate\Queue\InteractsWithQueue;
|
||||
use Illuminate\Contracts\Queue\ShouldQueue;
|
||||
use Illuminate\Foundation\Bus\Dispatchable;
|
||||
use Log;
|
||||
|
||||
//Library
|
||||
use Seat\Eseye\Exceptions\RequestFailedException;
|
||||
use App\Library\Esi\Esi;
|
||||
|
||||
//Models
|
||||
use App\Models\Eve\EveRegion;
|
||||
|
||||
class GetEveRegionsJob implements ShouldQueue
|
||||
{
|
||||
use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;
|
||||
|
||||
/**
|
||||
* Create a new job instance.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function __construct()
|
||||
{
|
||||
//
|
||||
}
|
||||
|
||||
/**
|
||||
* Execute the job.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function handle()
|
||||
{
|
||||
$esi = new Esi();
|
||||
|
||||
$regions = $esi->invoke('get', '/universe/regions/');
|
||||
$responses = $esi->setBody($regions)->invoke('post', '/universe/names/');
|
||||
|
||||
foreach($responses as $resp) {
|
||||
if($resp->category == 'region') {
|
||||
EveRegion::insertOrIgnore([
|
||||
'region_id' => $resp->id,
|
||||
'region_name' => $resp->name,
|
||||
]);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
64
app/Jobs/Commands/Eve/ItemPricesUpdate.php
Normal file
64
app/Jobs/Commands/Eve/ItemPricesUpdate.php
Normal file
@@ -0,0 +1,64 @@
|
||||
<?php
|
||||
|
||||
namespace App\Jobs\Commands\Eve;
|
||||
|
||||
use Illuminate\Bus\Queueable;
|
||||
use Illuminate\Queue\SerializesModels;
|
||||
use Illuminate\Queue\InteractsWithQueue;
|
||||
use Illuminate\Contracts\Queue\ShouldQueue;
|
||||
use Illuminate\Foundation\Bus\Dispatchable;
|
||||
use Log;
|
||||
|
||||
//Library
|
||||
use App\Library\Moons\MoonCalc;
|
||||
|
||||
class ItemPricesUpdate implements ShouldQueue
|
||||
{
|
||||
use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;
|
||||
|
||||
/**
|
||||
* Timeout in seconds
|
||||
*
|
||||
* @var int
|
||||
*/
|
||||
public $timeout = 3600;
|
||||
|
||||
/**
|
||||
* Number of job retries
|
||||
*
|
||||
* @var int
|
||||
*/
|
||||
public $tries = 3;
|
||||
|
||||
/**
|
||||
* Create a new job instance.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function __construct()
|
||||
{
|
||||
$this->connection = 'redis';
|
||||
$this->onQueue('default');
|
||||
}
|
||||
|
||||
/**
|
||||
* Execute the job.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function handle()
|
||||
{
|
||||
$moonHelper = new MoonCalc;
|
||||
|
||||
$moonHelper->FetchNewPrices();
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the tags for Horzion
|
||||
*
|
||||
* @var array
|
||||
*/
|
||||
public function tags() {
|
||||
return ['Eve', 'ItemPricesUpdate'];
|
||||
}
|
||||
}
|
||||
216
app/Jobs/Commands/Eve/SendEveMail.php
Normal file
216
app/Jobs/Commands/Eve/SendEveMail.php
Normal file
@@ -0,0 +1,216 @@
|
||||
<?php
|
||||
|
||||
namespace App\Jobs\Commands\Eve;
|
||||
|
||||
//Internal Library
|
||||
use Illuminate\Bus\Queueable;
|
||||
use Illuminate\Queue\SerializesModels;
|
||||
use Illuminate\Queue\InteractsWithQueue;
|
||||
use Illuminate\Contracts\Queue\ShouldQueue;
|
||||
use Illuminate\Foundation\Bus\Dispatchable;
|
||||
use Spatie\RateLimitedMiddleware\RateLimited;
|
||||
use Log;
|
||||
use Carbon\Carbon;
|
||||
|
||||
//Library
|
||||
use App\Library\Esi\Esi;
|
||||
use Seat\Eseye\Exceptions\RequestFailedException;
|
||||
use Seat\Eseye\Cache\NullCache;
|
||||
use Seat\Eseye\Configuration;
|
||||
|
||||
//Models
|
||||
use App\Models\Esi\EsiScope;
|
||||
use App\Models\Esi\EsiToken;
|
||||
use App\Models\Jobs\JobStatus;
|
||||
use App\Models\Mail\SentMail;
|
||||
use Seat\Eseye\Containers\EsiResponse;
|
||||
|
||||
class SendEveMail implements ShouldQueue
|
||||
{
|
||||
use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;
|
||||
|
||||
/**
|
||||
* Retries
|
||||
* With new rate limiting, we need a retry basis versus timeout basis
|
||||
* @var int
|
||||
*/
|
||||
public $retries = 1;
|
||||
|
||||
private $sender;
|
||||
private $body;
|
||||
private $recipient;
|
||||
private $recipient_type;
|
||||
private $subject;
|
||||
|
||||
/**
|
||||
* Create a new job instance.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function __construct($body, $recipient, $recipient_type, $subject, $sender) {
|
||||
//Set the connection
|
||||
$this->connection = 'redis';
|
||||
$this->onQueue('mail');
|
||||
|
||||
//Set the middleware for the job
|
||||
$this->middleware = $this->middleware();
|
||||
|
||||
//Private variables
|
||||
$this->body = $body;
|
||||
$this->recipient = $recipient;
|
||||
$this->recipient_type = $recipient_type;
|
||||
$this->subject = $subject;
|
||||
$this->sender = $sender;
|
||||
}
|
||||
|
||||
/**
|
||||
* Execute the job.
|
||||
* Utilized by using SendEveMail::dispatch($mail);
|
||||
* The model is passed into the dispatch function, then added to the queue
|
||||
* for processing.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function handle()
|
||||
{
|
||||
//Declare some variables
|
||||
$esiHelper = new Esi;
|
||||
$errorCode = null;
|
||||
|
||||
//Get the esi configuration
|
||||
$config = config('esi');
|
||||
|
||||
//Retrieve the token for main character to send mails from
|
||||
$refreshToken = $esiHelper->GetRefreshToken($config['primary']);
|
||||
//Create the ESI authentication container
|
||||
$esi = $esiHelper->SetupEsiAuthentication($refreshToken);
|
||||
|
||||
//Check to see if the token is valid or not
|
||||
if($esiHelper->TokenExpired($refreshToken)) {
|
||||
$refreshToken = $esiHelper->GetRefreshToken($config['primary']);
|
||||
$esi = $esiHelper->SetupEsiAuthentication($refreshToken);
|
||||
}
|
||||
|
||||
|
||||
$esi->setBody([
|
||||
'approved_cost' => 10000,
|
||||
'body' => $this->body,
|
||||
'recipients' => [[
|
||||
'recipient_id' => $this->recipient,
|
||||
'recipient_type' => $this->recipient_type,
|
||||
]],
|
||||
'subject' => $this->subject,
|
||||
])->invoke('post', '/characters/{character_id}/mail/', [
|
||||
'character_id'=> $this->sender,
|
||||
]);
|
||||
}
|
||||
|
||||
/**
|
||||
* Middleware to only allow 4 jobs to be run per minute
|
||||
* After a failed job, the job is released back into the queue for at least 1 minute x the number of times attempted
|
||||
*
|
||||
*/
|
||||
public function middleware() {
|
||||
|
||||
//Allow 4 jobs per minute, and implement a rate limited backoff on failed jobs
|
||||
$rateLimitedMiddleware = (new RateLimited())
|
||||
->enabled()
|
||||
->key('psemj')
|
||||
->connectionName('default')
|
||||
->allow(4)
|
||||
->everySeconds(60)
|
||||
->releaseAfterOneMinute()
|
||||
->releaseAfterBackoff($this->attempts());
|
||||
|
||||
return [$rateLimitedMiddleware];
|
||||
}
|
||||
|
||||
/*
|
||||
* Determine the time at which the job should timeout.
|
||||
*
|
||||
*/
|
||||
public function retryUntil() : \DateTime
|
||||
{
|
||||
return Carbon::now()->addDay();
|
||||
}
|
||||
|
||||
/**
|
||||
* The job failed to process.
|
||||
*
|
||||
* @param Exception $exception
|
||||
* @return void
|
||||
*/
|
||||
public function failed($exception)
|
||||
{
|
||||
if(!exception instanceof RequestFailedException) {
|
||||
//If not a failure due to ESI, then log it. Otherwise,
|
||||
//deduce why the exception occurred.
|
||||
Log::critical($exception);
|
||||
}
|
||||
|
||||
if ((is_object($exception->getEsiResponse()) && (stristr($exception->getEsiResponse()->error, 'Too many errors') || stristr($exception->getEsiResponse()->error, 'This software has exceeded the error limit for ESI'))) ||
|
||||
(is_string($exception->getEsiResponse()) && (stristr($exception->getEsiResponse(), 'Too many errors') || stristr($exception->getEsiResponse(), 'This software has exceeded the error limit for ESI')))) {
|
||||
|
||||
//We have hit the error rate limiter, wait 120 seconds before releasing the job back into the queue.
|
||||
Log::info('SendEveMail has hit the error rate limiter. Releasing the job back into the wild in 2 minutes.');
|
||||
$this->release(120);
|
||||
} else {
|
||||
$errorCode = $exception->getEsiResponse()->getErrorCode();
|
||||
|
||||
switch($errorCode) {
|
||||
case 400: //Bad Request
|
||||
Log::critical("Bad request has occurred in SendEveMail. Job has been discarded");
|
||||
break;
|
||||
case 401: //Unauthorized Request
|
||||
Log::critical("Unauthorized request has occurred in SendEveMail at " . Carbon::now()->toDateTimeString() . ".\r\nCancelling the job.");
|
||||
break;
|
||||
case 403: //Forbidden
|
||||
Log::critical("SendEveMail has incurred a forbidden error. Cancelling the job.");
|
||||
break;
|
||||
case 420: //Error Limited
|
||||
Log::warning("Error rate limit occurred in SendEveMail. Restarting job in 120 seconds.");
|
||||
$this->release(120);
|
||||
break;
|
||||
case 500: //Internal Server Error
|
||||
Log::critical("Internal Server Error for ESI in SendEveMail. Attempting a restart in 120 seconds.");
|
||||
$this->release(120);
|
||||
break;
|
||||
case 503: //Service Unavailable
|
||||
Log::critical("Service Unavailabe for ESI in SendEveMail. Releasing the job back to the queue in 30 seconds.");
|
||||
$this->release(30);
|
||||
break;
|
||||
case 504: //Gateway Timeout
|
||||
Log::critical("Gateway timeout in SendEveMail. Releasing the job back to the queue in 30 seconds.");
|
||||
$this->release(30);
|
||||
break;
|
||||
case 520: //Internal Error -- Mostly comes when rate limited hit
|
||||
Log::warning("Rate limit hit for SendEveMail. Releasing the job back to the queue in 30 seconds.");
|
||||
$this->release(30);
|
||||
break;
|
||||
case 201: //Good response code
|
||||
$this->SaveSentRecord($this->sender, $this->subject, $this->body, $this->recipient, $this->recipient_type);
|
||||
$this->delete();
|
||||
break;
|
||||
//If no code is given, then log and break out of switch.
|
||||
default:
|
||||
Log::warning("No response code received from esi call in SendEveMail.\r\n");
|
||||
$this->delete();
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public function tags() {
|
||||
return ['ProcessEveMails'];
|
||||
}
|
||||
|
||||
private function SaveSentRecord($sender, $subject, $body, $recipient, $recipientType) {
|
||||
$sentmail = new SentMail;
|
||||
$sentmail->sender = $sender;
|
||||
$sentmail->subject = $subject;
|
||||
$sentmail->body = $body;
|
||||
$sentmail->recipient = $recipient;
|
||||
$sentmail->recipient_type = $recipientType;
|
||||
$sentmail->save();
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,80 @@
|
||||
<?php
|
||||
|
||||
namespace App\Jobs\Commands\Finances;
|
||||
|
||||
use Illuminate\Bus\Queueable;
|
||||
use Illuminate\Contracts\Queue\ShouldQueue;
|
||||
use Illuminate\Foundation\Bus\Dispatchable;
|
||||
use Illuminate\Queue\InteractsWithQueue;
|
||||
use Illuminate\Queue\SerializesModels;
|
||||
use Log;
|
||||
use Carbon\Carbon;
|
||||
|
||||
//Application Library
|
||||
use App\Library\Helpers\FinanceHelper;
|
||||
|
||||
//Models
|
||||
use App\Models\Finances\AllianceWalletJournal;
|
||||
|
||||
class UpdateAllianceWalletJournalJob implements ShouldQueue
|
||||
{
|
||||
use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;
|
||||
|
||||
/**
|
||||
* Timeout in seconds
|
||||
*
|
||||
* @var int
|
||||
*/
|
||||
public $timeout = 1800;
|
||||
|
||||
/**
|
||||
* Retries
|
||||
*
|
||||
* @var int
|
||||
*/
|
||||
public $retries = 3;
|
||||
|
||||
/**
|
||||
* Create a new job instance.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function __construct()
|
||||
{
|
||||
$this->connection = 'redis';
|
||||
$this->onQueue('finances');
|
||||
}
|
||||
|
||||
/**
|
||||
* Execute the job.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function handle()
|
||||
{
|
||||
//Declare variables
|
||||
$fHelper = new FinanceHelper;
|
||||
$config = config('esi');
|
||||
|
||||
$pages = $fHelper->GetAllianceWalletJournalPages(1, $config['primary']);
|
||||
|
||||
//If the number of pages received is zero there is an error in the job.
|
||||
if($pages == 0) {
|
||||
Log::critical('Failed to get the number of pages in the job.');
|
||||
$this->delete();
|
||||
}
|
||||
|
||||
for($i = 1; $i <= $pages; $i++) {
|
||||
UpdateAllianceWalletJournalPage::dispatch(1, $config['primary'], $i)->onQueue('journal');
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the tags for Horzion
|
||||
*
|
||||
* @var array
|
||||
*/
|
||||
public function tags() {
|
||||
return ['UpdateAllianceWalletJournal', 'Finances'];
|
||||
}
|
||||
}
|
||||
226
app/Jobs/Commands/Finances/UpdateAllianceWalletJournalPage.php
Normal file
226
app/Jobs/Commands/Finances/UpdateAllianceWalletJournalPage.php
Normal file
@@ -0,0 +1,226 @@
|
||||
<?php
|
||||
|
||||
namespace App\Jobs\Commands\Finances;
|
||||
|
||||
//Internal Library
|
||||
use Illuminate\Bus\Queueable;
|
||||
use Illuminate\Contracts\Queue\ShouldQueue;
|
||||
use Illuminate\Foundation\Bus\Dispatchable;
|
||||
use Illuminate\Queue\InteractsWithQueue;
|
||||
use Illuminate\Queue\SerializesModels;
|
||||
use Carbon\Carbon;
|
||||
use Log;
|
||||
|
||||
|
||||
//Application Library
|
||||
use Seat\Eseye\Exceptions\RequestFailedException;
|
||||
use Seat\Eseye\Cache\NullCache;
|
||||
use Seat\Eseye\Configuration;
|
||||
use App\Library\Esi\Esi;
|
||||
use App\Library\Helpers\LookupHelper;
|
||||
|
||||
//Models
|
||||
use App\Models\Finances\AllianceWalletJournal;
|
||||
|
||||
class UpdateAllianceWalletJournalPage implements ShouldQueue
|
||||
{
|
||||
use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;
|
||||
|
||||
/**
|
||||
* Timeout in seconds
|
||||
*
|
||||
* @var int
|
||||
*/
|
||||
public $timeout = 3600;
|
||||
|
||||
/**
|
||||
* Number of job retries
|
||||
*
|
||||
* @var int
|
||||
*/
|
||||
public $tries = 3;
|
||||
|
||||
private $division;
|
||||
private $charId;
|
||||
private $page;
|
||||
|
||||
/**
|
||||
* Create a new job instance.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function __construct($division, $charId, $page)
|
||||
{
|
||||
$this->connection = 'redis';
|
||||
$this->onQueue('finances');
|
||||
|
||||
$this->division = $division;
|
||||
$this->charId = $charId;
|
||||
$this->page = $page;
|
||||
}
|
||||
|
||||
/**
|
||||
* Execute the job.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function handle()
|
||||
{
|
||||
//Declare variables in the handler
|
||||
$lookup = new LookupHelper;
|
||||
$esiHelper = new Esi;
|
||||
|
||||
//Setup the esi container.
|
||||
$token = $esiHelper->GetRefreshToken($this->charId);
|
||||
$esi = $esiHelper->SetupEsiAuthentication($token);
|
||||
|
||||
//Check the scope
|
||||
if(!$esiHelper->HaveEsiScope($this->charId, 'esi-wallet.read_corporation_wallets.v1')) {
|
||||
Log::critical('Scope check failed for esi-wallet.read_corporation_wallets.v1 for character id: ' . $charId);
|
||||
return null;
|
||||
}
|
||||
|
||||
if($esiHelper->TokenExpired($token)) {
|
||||
$token = $esiHelper->GetRefreshToken($this->charId);
|
||||
$esi = $esiHelper->SetupEsiAuthentication($token);
|
||||
}
|
||||
|
||||
//Reference the character id to the corporation id
|
||||
$char = $lookup->GetCharacterInfo($this->charId);
|
||||
$corpId = $char->corporation_id;
|
||||
|
||||
/**
|
||||
* Attempt to get the data from the esi api. If it fails, we skip the page, and go onto the next page, unless
|
||||
* the failed page is the first page.
|
||||
*/
|
||||
$journals = $esi->page($this->page)
|
||||
->invoke('get', '/corporations/{corporation_id}/wallets/{division}/journal/', [
|
||||
'corporation_id' => $corpId,
|
||||
'division' => $this->division,
|
||||
]);
|
||||
|
||||
//Decode the json data, and return it as an array
|
||||
$wallet = json_decode($journals->raw, true);
|
||||
|
||||
//Foreach journal entry, add the journal entry to the table
|
||||
foreach($wallet as $entry) {
|
||||
//See if we find the entry id in the database already
|
||||
$found = AllianceWalletJournal::where([
|
||||
'id' => $entry['id'],
|
||||
])->count();
|
||||
|
||||
if($found == 0) {
|
||||
$awj = new AllianceWalletJournal;
|
||||
$awj->id = $entry['id'];
|
||||
$awj->corporation_id = $corpId;
|
||||
$awj->division = $this->division;
|
||||
if(isset($entry['amount'])) {
|
||||
$awj->amount = $entry['amount'];
|
||||
}
|
||||
if(isset($entry['balance'])) {
|
||||
$awj->balance = $entry['balance'];
|
||||
}
|
||||
if(isset($entry['context_id'])) {
|
||||
$awj->context_id = $entry['context_id'];
|
||||
}
|
||||
if(isset($entry['date'])) {
|
||||
$awj->date = $esiHelper->DecodeDate($entry['date']);
|
||||
}
|
||||
if(isset($entry['description'])) {
|
||||
$awj->description = $entry['description'];
|
||||
}
|
||||
if(isset($entry['first_party_id'])) {
|
||||
$awj->first_party_id = $entry['first_party_id'];
|
||||
}
|
||||
if(isset($entry['reason'])) {
|
||||
$awj->reason = $entry['reason'];
|
||||
}
|
||||
if(isset($entry['ref_type'])) {
|
||||
$awj->ref_type = $entry['ref_type'];
|
||||
}
|
||||
if(isset($entry['tax'])) {
|
||||
$awj->tax = $entry['tax'];
|
||||
}
|
||||
if(isset($entry['tax_receiver_id'])) {
|
||||
$awj->tax_receiver_id = $entry['tax_receiver_id'];
|
||||
}
|
||||
$awj->save();
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
//Return as completed
|
||||
return 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* The job failed to process
|
||||
* @param Exception $exception
|
||||
* @return void
|
||||
*/
|
||||
public function failed($exception) {
|
||||
if(!exception instanceof RequestFailedException) {
|
||||
//If not a failure due to ESI, then log it. Otherwise,
|
||||
//deduce why the exception occurred.
|
||||
Log::critical($exception);
|
||||
}
|
||||
|
||||
if ((is_object($exception->getEsiResponse()) && (stristr($exception->getEsiResponse()->error, 'Too many errors') || stristr($exception->getEsiResponse()->error, 'This software has exceeded the error limit for ESI'))) ||
|
||||
(is_string($exception->getEsiResponse()) && (stristr($exception->getEsiResponse(), 'Too many errors') || stristr($exception->getEsiResponse(), 'This software has exceeded the error limit for ESI')))) {
|
||||
|
||||
//We have hit the error rate limiter, wait 120 seconds before releasing the job back into the queue.
|
||||
Log::info('UpdateAllianceWalletJournalPage has hit the error rate limiter. Releasing the job back into the wild in 2 minutes.');
|
||||
$this->release(120);
|
||||
} else {
|
||||
$errorCode = $exception->getEsiResponse()->getErrorCode();
|
||||
|
||||
switch($errorCode) {
|
||||
case 400: //Bad Request
|
||||
Log::critical("Bad request has occurred in UpdateAllianceWalletJournalPage. Job has been discarded");
|
||||
break;
|
||||
case 401: //Unauthorized Request
|
||||
Log::critical("Unauthorized request has occurred in UpdateAllianceWalletJournalPage at " . Carbon::now()->toDateTimeString() . ".\r\nCancelling the job.");
|
||||
$this->delete();
|
||||
break;
|
||||
case 403: //Forbidden
|
||||
Log::critical("UpdateAllianceWalletJournalPage has incurred a forbidden error. Cancelling the job.");
|
||||
$this->delete();
|
||||
break;
|
||||
case 420: //Error Limited
|
||||
Log::warning("Error rate limit occurred in UpdateAllianceWalletJournalPage. Restarting job in 120 seconds.");
|
||||
$this->release(120);
|
||||
break;
|
||||
case 500: //Internal Server Error
|
||||
Log::critical("Internal Server Error for ESI in UpdateAllianceWalletJournalPage. Attempting a restart in 120 seconds.");
|
||||
$this->release(120);
|
||||
break;
|
||||
case 503: //Service Unavailable
|
||||
Log::critical("Service Unavailabe for ESI in UpdateAllianceWalletJournalPage. Releasing the job back to the queue in 30 seconds.");
|
||||
$this->release(30);
|
||||
break;
|
||||
case 504: //Gateway Timeout
|
||||
Log::critical("Gateway timeout in UpdateAllianceWalletJournalPage. Releasing the job back to the queue in 30 seconds.");
|
||||
$this->release(30);
|
||||
break;
|
||||
case 201:
|
||||
//Good response code
|
||||
$this->delete();
|
||||
break;
|
||||
//If no code is given, then log and break out of switch.
|
||||
default:
|
||||
Log::warning("No response code received from esi call in UpdateAllianceWalletJournalPage.\r\n");
|
||||
$this->delete();
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the tags for Horzion
|
||||
*
|
||||
* @var array
|
||||
*/
|
||||
public function tags() {
|
||||
return ['UpdateAllianceWalletJournalPage', 'Finances'];
|
||||
}
|
||||
}
|
||||
66
app/Jobs/Commands/Finances/UpdateItemPrices.php
Normal file
66
app/Jobs/Commands/Finances/UpdateItemPrices.php
Normal file
@@ -0,0 +1,66 @@
|
||||
<?php
|
||||
|
||||
namespace App\Jobs\Commands\Finances;
|
||||
|
||||
use Illuminate\Bus\Queueable;
|
||||
use Illuminate\Contracts\Queue\ShouldQueue;
|
||||
use Illuminate\Foundation\Bus\Dispatchable;
|
||||
use Illuminate\Queue\InteractsWithQueue;
|
||||
use Illuminate\Queue\SerializesModels;
|
||||
use Log;
|
||||
use Carbon\Carbon;
|
||||
|
||||
//Library Functions
|
||||
use App\Library\Moons\MoonCalc;
|
||||
|
||||
class UpdateItemPrices implements ShouldQueue
|
||||
{
|
||||
use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;
|
||||
|
||||
/**
|
||||
* Timeout in seconds
|
||||
*
|
||||
* @var int
|
||||
*/
|
||||
public $timeout = 1800;
|
||||
|
||||
/**
|
||||
* Retries
|
||||
*
|
||||
* @var int
|
||||
*/
|
||||
public $retries = 3;
|
||||
|
||||
/**
|
||||
* Create a new job instance.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function __construct()
|
||||
{
|
||||
$this->connection = 'redis';
|
||||
$this->onQueue('default');
|
||||
}
|
||||
|
||||
/**
|
||||
* Execute the job.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function handle()
|
||||
{
|
||||
//Declare variables
|
||||
$moonHelper = new MoonCalc;
|
||||
//Fetch new prices from fuzzwork.co.uk for the item pricing schemes
|
||||
$moonHelper->FetchNewPrices();
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the tags for Horzion
|
||||
*
|
||||
* @var array
|
||||
*/
|
||||
public function tags() {
|
||||
return ['UpdateItemPrices', 'Finances'];
|
||||
}
|
||||
}
|
||||
@@ -1,104 +0,0 @@
|
||||
<?php
|
||||
|
||||
namespace App\Jobs\Commands\Market;
|
||||
|
||||
//Internal Library
|
||||
use Illuminate\Bus\Queueable;
|
||||
use Illuminate\Queue\SerializesModels;
|
||||
use Illuminate\Queue\InteractsWithQueue;
|
||||
use Illuminate\Contracts\Queue\ShouldQueue;
|
||||
use Illuminate\Foundation\Bus\Dispatchable;
|
||||
use Carbon\Carbon;
|
||||
use Log;
|
||||
|
||||
//App Library
|
||||
use Seat\Eseye\Exceptions\RequestFailedException;
|
||||
use App\Library\Esi\Esi;
|
||||
use App\Library\Lookups\LookupHelper;
|
||||
|
||||
class GetMarketRegionOrderJob implements ShouldQueue
|
||||
{
|
||||
use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;
|
||||
|
||||
/**
|
||||
* Private variables
|
||||
*/
|
||||
private $esi;
|
||||
private $region;
|
||||
|
||||
/**
|
||||
* Create a new job instance.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function __construct($region, $esi = null)
|
||||
{
|
||||
//Setup the region variable
|
||||
$this->region = $region;
|
||||
//Setup the esi variable
|
||||
if($esi == null) {
|
||||
$this->esi = new Esi();
|
||||
} else {
|
||||
$this->esi = $esi;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Execute the job.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function handle()
|
||||
{
|
||||
//Get the market orders for a region
|
||||
$orders = $this->esi->invoke('get', '/markets/{region_id}/orders/', [
|
||||
'region_id' => $this->region,
|
||||
]);
|
||||
|
||||
foreach($orders as $order) {
|
||||
$count = MarketRegionOrder::where([
|
||||
'order_id',
|
||||
])->count();
|
||||
|
||||
if($count == 0) {
|
||||
$newOrder = new MarketRegionOrder;
|
||||
$newOrder->region_id = $this->region;
|
||||
$newOrder->duration = $order->duration;
|
||||
$newOrder->is_buy_order = $order->is_buy_order;
|
||||
$newOrder->issued = $order->issued;
|
||||
$newOrder->location_id = $order->location_id;
|
||||
$newOrder->min_volume = $order->min_volume;
|
||||
$newOrder->order_id = $order->order_id;
|
||||
$newOrder->price = $order->price;
|
||||
$newOrder->range = $order->range;
|
||||
$newOrder->system_id = $order->system_id;
|
||||
$newOrder->type_id = $order->type_id;
|
||||
$newOrder->volume_remain = $order->volume_remain;
|
||||
$newOrder->volume_total = $order->volume_total;
|
||||
$newOrder->save();
|
||||
} else if ($order->volume_remain == 0) {
|
||||
MarketRegionOrder::where([
|
||||
'order_id' => $order->order_id,
|
||||
])->delete();
|
||||
} else {
|
||||
MarketRegionOrder::where([
|
||||
'order_id' => $order->order_id,
|
||||
])->update([
|
||||
'region_id' => $this->region,
|
||||
'duration' => $order->duration,
|
||||
'is_buy_order' => $order->is_buy_order,
|
||||
'issued' => $order->issued,
|
||||
'location_id' => $order->location_id,
|
||||
'min_volume' => $order->min_volume,
|
||||
'order_id' => $order->order_id,
|
||||
'price' => $order->price,
|
||||
'range' => $order->range,
|
||||
'system_id' => $order->system_id,
|
||||
'type_id' => $order->type_id,
|
||||
'volume_remain' => $order->volume_remain,
|
||||
'volume_total' => $order->volume_total,
|
||||
]);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,34 +0,0 @@
|
||||
<?php
|
||||
|
||||
namespace App\Jobs;
|
||||
|
||||
use Illuminate\Bus\Queueable;
|
||||
use Illuminate\Queue\SerializesModels;
|
||||
use Illuminate\Queue\InteractsWithQueue;
|
||||
use Illuminate\Contracts\Queue\ShouldQueue;
|
||||
use Illuminate\Foundation\Bus\Dispatchable;
|
||||
|
||||
class PurgeMarketRegionOrderJob implements ShouldQueue
|
||||
{
|
||||
use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;
|
||||
|
||||
/**
|
||||
* Create a new job instance.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function __construct()
|
||||
{
|
||||
//
|
||||
}
|
||||
|
||||
/**
|
||||
* Execute the job.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function handle()
|
||||
{
|
||||
//
|
||||
}
|
||||
}
|
||||
200
app/Jobs/Commands/MiningTaxes/FetchMiningTaxesObservers.php
Normal file
200
app/Jobs/Commands/MiningTaxes/FetchMiningTaxesObservers.php
Normal file
@@ -0,0 +1,200 @@
|
||||
<?php
|
||||
|
||||
namespace App\Jobs\Commands\MiningTaxes;
|
||||
|
||||
use Illuminate\Bus\Queueable;
|
||||
use Illuminate\Contracts\Queue\ShouldQueue;
|
||||
use Illuminate\Foundation\Bus\Dispatchable;
|
||||
use Illuminate\Queue\InteractsWithQueue;
|
||||
use Illuminate\Queue\SerializesModels;
|
||||
use Log;
|
||||
use Carbon\Carbon;
|
||||
|
||||
//Application Library
|
||||
use Seat\Eseye\Exceptions\RequestFailedException;
|
||||
use App\Library\Esi\Esi;
|
||||
use App\Library\Helpers\LookupHelper;
|
||||
use App\Library\Helpers\StructureHelper;
|
||||
|
||||
//Models
|
||||
use App\Models\MiningTax\Observer;
|
||||
|
||||
class FetchMiningTaxesObservers implements ShouldQueue
|
||||
{
|
||||
use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;
|
||||
|
||||
/**
|
||||
* Timeout in seconds
|
||||
*
|
||||
* @var int
|
||||
*/
|
||||
public $timeout = 3600;
|
||||
|
||||
/**
|
||||
* Number of job retries
|
||||
*
|
||||
* @var int
|
||||
*/
|
||||
public $tries = 3;
|
||||
|
||||
/**
|
||||
* Create a new job instance.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function __construct()
|
||||
{
|
||||
$this->connection = 'redis';
|
||||
$this->onQueue('miningtaxes');
|
||||
}
|
||||
|
||||
/**
|
||||
* Execute the job.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function handle()
|
||||
{
|
||||
//Declare variables
|
||||
$config = config('esi');
|
||||
$lookup = new LookupHelper;
|
||||
$sHelper = new StructureHelper($config['primary'], $config['corporation']);
|
||||
$esiHelper = new Esi;
|
||||
|
||||
//Check for the ESI scope needed.
|
||||
if(!$esiHelper->HaveEsiScope($config['primary'], 'esi-industry.read_corporation_mining.v1')) {
|
||||
Log::critical('Esi scopes were not found for FetchMiningTaxesObserversJob.');
|
||||
print("Esi scopes not found.");
|
||||
return;
|
||||
}
|
||||
//Check for the other ESI scope needed.
|
||||
if(!$esiHelper->HaveEsiScope($config['primary'], 'esi-universe.read_structures.v1')) {
|
||||
Log::critical('Esi scope esi-universe.read_structures.v1 was not found for FetchMiningTaxesObserversJob.');
|
||||
print("Esi scopes not found 2");
|
||||
return;
|
||||
}
|
||||
|
||||
//Get the refresh token for the character
|
||||
$refreshToken = $esiHelper->GetRefreshToken($config['primary']);
|
||||
//Get the esi variable
|
||||
$esi = $esiHelper->SetupEsiAuthentication($refreshToken);
|
||||
|
||||
//Invoke the call to ESI API.
|
||||
$response = $esi->invoke('get', '/corporation/{corporation_id}/mining/observers/', [
|
||||
'corporation_id' => $config['corporation'],
|
||||
]);
|
||||
|
||||
//Decode the json response, but leave it as objects rather than an array
|
||||
$resp = json_decode($response->raw, false);
|
||||
|
||||
//Run through the mining observers, and add them to the database
|
||||
foreach($resp as $observer) {
|
||||
//See if the observer is found in the database
|
||||
$found = Observer::where([
|
||||
'observer_id' => $observer->observer_id,
|
||||
])->count();
|
||||
|
||||
//Get the observer name from esi
|
||||
$structureInfo = $sHelper->GetStructureInfo($observer->observer_id);
|
||||
|
||||
//If found, then update the structure
|
||||
if($found > 0) {
|
||||
//Update the existing structure in the database
|
||||
Observer::where([
|
||||
'observer_id' => $observer->observer_id,
|
||||
])->update([
|
||||
'observer_id' => $observer->observer_id,
|
||||
'observer_name' => $structureInfo->name,
|
||||
'last_updated' => $observer->last_updated,
|
||||
]);
|
||||
} else {
|
||||
//Add a new observer into the observer table
|
||||
$newObs = new Observer;
|
||||
$newObs->observer_id = $observer->observer_id;
|
||||
$newObs->observer_type = $observer->observer_type;
|
||||
$newObs->observer_name = $structureInfo->name;
|
||||
$newObs->last_updated = $observer->last_updated;
|
||||
$newObs->solar_system_id = $structureInfo->solar_system_id;
|
||||
$newObs->solar_system_name = $lookup->SystemIdToName($structureInfo->solar_system_id);
|
||||
$newObs->save();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Cleanup stale data that hasn't been updated in at least 1 week.
|
||||
*/
|
||||
$date = Carbon::now()->subDays(7);
|
||||
Observer::where('last_updated', '<', $date)->delete();
|
||||
|
||||
//Return 0 saying everything is fine
|
||||
return 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* The job failed to process
|
||||
* @param Exception $exception
|
||||
* @return void
|
||||
*/
|
||||
public function failed($exception) {
|
||||
if(!exception instanceof RequestFailedException) {
|
||||
//If not a failure due to ESI, then log it. Otherwise,
|
||||
//deduce why the exception occurred.
|
||||
Log::critical($exception);
|
||||
}
|
||||
|
||||
if ((is_object($exception->getEsiResponse()) && (stristr($exception->getEsiResponse()->error, 'Too many errors') || stristr($exception->getEsiResponse()->error, 'This software has exceeded the error limit for ESI'))) ||
|
||||
(is_string($exception->getEsiResponse()) && (stristr($exception->getEsiResponse(), 'Too many errors') || stristr($exception->getEsiResponse(), 'This software has exceeded the error limit for ESI')))) {
|
||||
|
||||
//We have hit the error rate limiter, wait 120 seconds before releasing the job back into the queue.
|
||||
Log::info('FetchMiningTaxesObservers has hit the error rate limiter. Releasing the job back into the wild in 2 minutes.');
|
||||
$this->release(120);
|
||||
} else {
|
||||
$errorCode = $exception->getEsiResponse()->getErrorCode();
|
||||
|
||||
switch($errorCode) {
|
||||
case 400: //Bad Request
|
||||
Log::critical("Bad request has occurred in FetchMiningTaxesObservers. Job has been discarded");
|
||||
break;
|
||||
case 401: //Unauthorized Request
|
||||
Log::critical("Unauthorized request has occurred in FetchMiningTaxesObservers at " . Carbon::now()->toDateTimeString() . ".\r\nCancelling the job.");
|
||||
break;
|
||||
case 403: //Forbidden
|
||||
Log::critical("FetchMiningTaxesObservers has incurred a forbidden error. Cancelling the job.");
|
||||
break;
|
||||
case 420: //Error Limited
|
||||
Log::warning("Error rate limit occurred in FetchMiningTaxesObservers. Restarting job in 120 seconds.");
|
||||
$this->release(120);
|
||||
break;
|
||||
case 500: //Internal Server Error
|
||||
Log::critical("Internal Server Error for ESI in FetchMiningTaxesObservers. Attempting a restart in 120 seconds.");
|
||||
$this->release(120);
|
||||
break;
|
||||
case 503: //Service Unavailable
|
||||
Log::critical("Service Unavailabe for ESI in FetchMiningTaxesObservers. Releasing the job back to the queue in 30 seconds.");
|
||||
$this->release(30);
|
||||
break;
|
||||
case 504: //Gateway Timeout
|
||||
Log::critical("Gateway timeout in FetchMiningTaxesObservers. Releasing the job back to the queue in 30 seconds.");
|
||||
$this->release(30);
|
||||
break;
|
||||
case 201: //Good response code
|
||||
$this->delete();
|
||||
break;
|
||||
//If no code is given, then log and break out of switch.
|
||||
default:
|
||||
Log::warning("No response code received from esi call in FetchMiningTaxesObservers.\r\n");
|
||||
$this->delete();
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the tags for Horizon
|
||||
*
|
||||
* @var array
|
||||
*/
|
||||
public function tags() {
|
||||
return ['FetchMiningObservers', 'MiningTaxes'];
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,103 @@
|
||||
<?php
|
||||
|
||||
namespace App\Jobs\Commands\MiningTaxes\Invoices;
|
||||
|
||||
use Illuminate\Bus\Queueable;
|
||||
use Illuminate\Contracts\Queue\ShouldBeUnique;
|
||||
use Illuminate\Contracts\Queue\ShouldQueue;
|
||||
use Illuminate\Foundation\Bus\Dispatchable;
|
||||
use Illuminate\Queue\InteractsWithQueue;
|
||||
use Illuminate\Queue\SerializesModels;
|
||||
use Illuminate\Support\Facades\Bus;
|
||||
use Carbon\Carbon;
|
||||
use Log;
|
||||
|
||||
//Models
|
||||
use App\Models\MiningTax\MiningOperation;
|
||||
use App\Models\MiningTax\Ledger;
|
||||
|
||||
class ProcessAllianceMiningOperations implements ShouldQueue
|
||||
{
|
||||
use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;
|
||||
|
||||
/**
|
||||
* Timeout in seconds
|
||||
*
|
||||
* @var int
|
||||
*/
|
||||
public $timeout = 3600;
|
||||
|
||||
/**
|
||||
* Number of job retries
|
||||
*
|
||||
* @var int
|
||||
*/
|
||||
public $tries = 3;
|
||||
|
||||
/**
|
||||
* Create a new job instance.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function __construct()
|
||||
{
|
||||
//Set job parameters
|
||||
$this->connection = 'redis';
|
||||
$this->onQueue('miningtaxes');
|
||||
}
|
||||
|
||||
/**
|
||||
* Execute the job.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function handle()
|
||||
{
|
||||
$count = MiningOperation::where([
|
||||
'processed' => 'No',
|
||||
])->where('operation_date', '<=', Carbon::now())
|
||||
->count();
|
||||
|
||||
if($count > 0) {
|
||||
$operations = MiningOperation::where([
|
||||
'processed' => 'No',
|
||||
])->where('operation_date', '<=', Carbon::now())
|
||||
->get();
|
||||
|
||||
foreach($operations as $operation) {
|
||||
$ledgers = Ledger::where([
|
||||
'observer_id' => $operation->structure_id,
|
||||
'invoiced' => 'No',
|
||||
'last_updated' => $operation->operation_date,
|
||||
])->get();
|
||||
|
||||
foreach($ledgers as $ledger) {
|
||||
Ledger::where([
|
||||
'observer_id' => $operation->structure_id,
|
||||
'invoiced' => 'No',
|
||||
'last_updated' => $operation->operation_date,
|
||||
])->update([
|
||||
'invoiced' => 'Yes',
|
||||
'invoice_id' => 'MiningOp' . $operation->id,
|
||||
]);
|
||||
}
|
||||
|
||||
MiningOperation::where([
|
||||
'id' => $operation->id,
|
||||
])->update([
|
||||
'processed' => 'Yes',
|
||||
'processed_on' => Carbon::now(),
|
||||
]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the tags for Horzion
|
||||
*
|
||||
* @var array
|
||||
*/
|
||||
public function tags() {
|
||||
return ['ProcessAllianceMiningOperations', 'MiningTaxes', 'MiningOperations'];
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,320 @@
|
||||
<?php
|
||||
|
||||
namespace App\Jobs\Commands\MiningTaxes\Invoices;
|
||||
|
||||
use Illuminate\Bus\Queueable;
|
||||
use Illuminate\Contracts\Queue\ShouldQueue;
|
||||
use Illuminate\Foundation\Bus\Dispatchable;
|
||||
use Illuminate\Queue\InteractsWithQueue;
|
||||
use Illuminate\Queue\SerializesModels;
|
||||
use Log;
|
||||
use Carbon\Carbon;
|
||||
use Illuminate\Support\Collection;
|
||||
use Illuminate\Support\Str;
|
||||
|
||||
//Application Library
|
||||
use App\Library\Helpers\LookupHelper;
|
||||
|
||||
//Models
|
||||
use App\Models\MiningTax\Invoice;
|
||||
use App\Models\MiningTax\Ledger;
|
||||
use App\Models\User\UserAlt;
|
||||
use App\Models\User\User;
|
||||
|
||||
//Jobs
|
||||
use App\Jobs\Commands\Eve\SendEveMail;
|
||||
|
||||
class SendMiningTaxesInvoices implements ShouldQueue
|
||||
{
|
||||
use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;
|
||||
|
||||
/**
|
||||
* Timeout in seconds
|
||||
*
|
||||
* @var int
|
||||
*/
|
||||
public $timeout = 3600;
|
||||
|
||||
/**
|
||||
* Number of job retries
|
||||
*
|
||||
* @var int
|
||||
*/
|
||||
public $tries = 3;
|
||||
|
||||
/**
|
||||
* Create a new job instance.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function __construct()
|
||||
{
|
||||
$this->connection = 'redis';
|
||||
$this->onQueue('miningtaxes');
|
||||
}
|
||||
|
||||
/**
|
||||
* Execute the job.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function handle()
|
||||
{
|
||||
//Declare variables
|
||||
$mailDelay = 15;
|
||||
$mains = new Collection;
|
||||
|
||||
/**
|
||||
* This section will determine if users are mains or alts of a main.
|
||||
* If they are mains, we keep the key. If they are alts of a main, then we delete
|
||||
* the key from the collection.
|
||||
*/
|
||||
|
||||
//Pluck all the users from the database of ledgers to determine if they are mains or alts.
|
||||
$tempMains = Ledger::where([
|
||||
'invoiced' => 'No',
|
||||
])->where('last_updated', '>', Carbon::now()->subDays(7))->pluck('character_id');
|
||||
|
||||
//Get the unique character ids from the ledgers in the previous statement
|
||||
$tempMains = $tempMains->unique()->values()->all();
|
||||
|
||||
//Cycle through the array of mains, and remove any characters which are in the User Alt table,
|
||||
//as those characters will be grouped with their correct main later.
|
||||
for($i = 0; $i < sizeof($tempMains); $i++) {
|
||||
if(UserAlt::where(['character_id' => $tempMains[$i]])->count() == 0) {
|
||||
$mains->push($tempMains[$i]);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* For each of the users, let's determine if there are any ledgers,
|
||||
* then determine if there are any alts and ledgers associated with the alts.
|
||||
*/
|
||||
foreach($mains as $main) {
|
||||
//Declare some variables for each run through the for loop
|
||||
$ledgers = new Collection;
|
||||
|
||||
//Count the ledgers for the main
|
||||
$mainLedgerCount = Ledger::where([
|
||||
'character_id' => $main,
|
||||
'invoiced' => 'No',
|
||||
])->where('last_updated', '>', Carbon::now()->subDays(7))->count();
|
||||
|
||||
//If there are ledgers for the main, then let's grab them
|
||||
if($mainLedgerCount > 0) {
|
||||
$mainLedgers = Ledger::where([
|
||||
'character_id' => $main,
|
||||
'invoiced' => 'No',
|
||||
])->where('last_updated', '>', Carbon::now()->subDays(7))->get();
|
||||
|
||||
//Cycle through the entries, and add them to the ledger to send with the invoice
|
||||
foreach($mainLedgers as $row) {
|
||||
$ledgers->push([
|
||||
'character_id' => $row->character_id,
|
||||
'character_name' => $row->character_name,
|
||||
'observer_id' => $row->observer_id,
|
||||
'type_id' => $row->type_id,
|
||||
'ore_name' => $row->ore_name,
|
||||
'quantity' => (int)$row->quantity,
|
||||
'amount' => (float)$row->amount,
|
||||
'last_updated' => $row->last_updated,
|
||||
]);
|
||||
}
|
||||
}
|
||||
|
||||
//Get the alt count for the main character
|
||||
$altCount = UserAlt::where(['main_id' => $main])->count();
|
||||
//If more than 0 alts, grab all the alts.
|
||||
if($altCount > 0) {
|
||||
$alts = UserAlt::where([
|
||||
'main_id' => $main,
|
||||
])->get();
|
||||
|
||||
//Cycle through the alts, and get the ledgers, and push onto the stack
|
||||
foreach($alts as $alt) {
|
||||
$altLedgerCount = Ledger::where([
|
||||
'character_id' => $alt->character_id,
|
||||
'invoiced' => 'No',
|
||||
])->where('last_updated', '>', Carbon::now()->subDays(7))->count();
|
||||
|
||||
if($altLedgerCount > 0) {
|
||||
$altLedgers = Ledger::where([
|
||||
'character_id' => $alt->character_id,
|
||||
'invoiced' => 'No',
|
||||
])->where('last_updated', '>', Carbon::now()->subDays(7))->get();
|
||||
|
||||
foreach($altLedgers as $row) {
|
||||
$ledgers->push([
|
||||
'character_id' => $row->character_id,
|
||||
'character_name' => $row->character_name,
|
||||
'observer_id' => $row->observer_id,
|
||||
'type_id' => $row->type_id,
|
||||
'ore_name' => $row->ore_name,
|
||||
'quantity' => (int)$row->quantity,
|
||||
'amount' => (float)$row->amount,
|
||||
'last_updated' => $row->last_updated,
|
||||
]);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Send the collected information over to the function to send the actual mail
|
||||
*/
|
||||
if($ledgers->count() > 0) {
|
||||
$this->CreateInvoice($main, $ledgers, $mailDelay);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Create the invoice to the mail out
|
||||
*
|
||||
* @var charId
|
||||
* @var ledgers
|
||||
* @var mailDelay
|
||||
*/
|
||||
private function CreateInvoice($charId, Collection $ledgers, int &$mailDelay) {
|
||||
$ores = array();
|
||||
$characters = array();
|
||||
$characterIds = array();
|
||||
$totalPrice = 0.00;
|
||||
$body = null;
|
||||
$lookup = new LookupHelper;
|
||||
$config = config('esi');
|
||||
|
||||
//Create an invoice id
|
||||
$invoiceId = "M" . uniqid();
|
||||
|
||||
//Collect the total price of all of the ledgers
|
||||
$totalPrice = round((float)$ledgers->sum('amount'), 2);
|
||||
|
||||
//Get the sum of all the ledgers
|
||||
$invoiceAmount = round(((float)$ledgers->sum('amount') * (float)$config['mining_tax']), 2);
|
||||
|
||||
//Get the character name from the lookup table
|
||||
$charName = $lookup->CharacterIdToName($charId);
|
||||
|
||||
//Create the date due and the invoice date
|
||||
$dateDue = Carbon::now()->addDays(7);
|
||||
$invoiceDate = Carbon::now();
|
||||
|
||||
//Set the mining tax from the config file
|
||||
$numberMiningTax = number_format(((float)$config['mining_tax'] * (float)100.00), 2, ".", ",");
|
||||
|
||||
//Create the list of ores to put in the mail
|
||||
$temp = $ledgers->toArray();
|
||||
foreach($temp as $t) {
|
||||
//If the key isn't set, set it to the default of 0
|
||||
if(!isset($ores[$t['type_id']])) {
|
||||
$ores[$t['type_id']] = (int)0;
|
||||
}
|
||||
|
||||
//Add the quantity into the ores array
|
||||
$ores[$t['type_id']] += (int)$t['quantity'];
|
||||
|
||||
//Create a list of character names
|
||||
if(!isset($characters[$t['character_name']])) {
|
||||
$characters[$t['character_name']] = $t['character_name'];
|
||||
}
|
||||
|
||||
//Create a list of character ids
|
||||
if(!isset($characterIds[$t['character_id']])) {
|
||||
$characterIds[$t['character_id']] = $t['character_id'];
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Create the mail body to send to the main character
|
||||
*/
|
||||
$body .= "Dear " . $charName . ",<br><br>";
|
||||
$body .= "Mining Taxes are due for the following ores mined from alliance moons: <br>";
|
||||
foreach($ores as $ore => $quantity) {
|
||||
$oreName = $lookup->ItemIdToName($ore);
|
||||
$body .= $oreName . ": " . number_format($quantity, 0, ".", ",") . "<br>";
|
||||
}
|
||||
$body .= "Total Value of Ore Mined: " . number_format($totalPrice, 2, ".", ",") . " ISK.";
|
||||
$body .= "<br><br>";
|
||||
$body .= "Please remit " . number_format($invoiceAmount, 2, ".", ",") . " ISK to Spatial Forces or contract Spatial Forces the following ores:<br>";
|
||||
foreach($ores as $ore => $quantity) {
|
||||
$oreName = $lookup->ItemIdToName($ore);
|
||||
$body .= $oreName . ": " . number_format(round($quantity * $config['mining_tax']), 0, ".", ",") . "<br>";
|
||||
}
|
||||
$body .= "<br>";
|
||||
$body .= "The due date is " . $dateDue . "<br>";
|
||||
$body .= "Set the reason for transfer as " . $invoiceId . "<br>";
|
||||
$body .= "The mining taxes are currently set to " . $numberMiningTax . "%.<br>";
|
||||
$body .= "<br>";
|
||||
$body .= "Characters Processed: <br>";
|
||||
foreach($characters as $character) {
|
||||
$body .= $character . "<br>";
|
||||
}
|
||||
$body .= "<br>";
|
||||
$body .= "<br>Sincerely,<br>Warped Intentions Leadership<br>";
|
||||
|
||||
//Check if the mail body is greater than 2000 characters. If greater than 2,000 characters, then
|
||||
if(strlen($body) > 2000) {
|
||||
$body = "Dear " . $charName . "<br><br>";
|
||||
$body .= "Total Value of Ore Mined: " . number_format($totalPrice, 2, ".", ",") . " ISK.";
|
||||
$body .= "<br><br>";
|
||||
$body .= "Please remit " . number_format($invoiceAmount, 2, ".", ",") . " ISK to Spatial Forces or contract 15% of the ores mined to Spatial Forces.<br>";
|
||||
$body .= "The due date is " . $dateDue . "<br>";
|
||||
$body .= "Set the reason for transfer as: " . $invoiceId . "<br>";
|
||||
$body .= "The mining taxes are currently set to " . $numberMiningTax . "%.<br>";
|
||||
$body .= "<br>";
|
||||
$body .= "<br>Sincerely,<br>Warped Intentions Leadership<br>";
|
||||
}
|
||||
|
||||
//Mail the invoice to the character if the character is in
|
||||
//Warped Intentions or Legacy
|
||||
$subject = 'Warped Intentions Mining Taxes';
|
||||
$sender = $config['primary'];
|
||||
$recipientType = 'character';
|
||||
$recipient = $charId;
|
||||
|
||||
//Send the Eve Mail Job to the queue to be dispatched
|
||||
SendEveMail::dispatch($body, $recipient, $recipientType, $subject, $sender)->delay(Carbon::now()->addSeconds($mailDelay));
|
||||
|
||||
/**
|
||||
* Create a new invoice model, and save it to the database
|
||||
*/
|
||||
$invoice = new Invoice;
|
||||
$invoice->character_id = $charId;
|
||||
$invoice->character_name = $charName;
|
||||
$invoice->invoice_id = $invoiceId;
|
||||
$invoice->invoice_amount = $invoiceAmount;
|
||||
$invoice->date_issued = $invoiceDate;
|
||||
$invoice->date_due = $dateDue;
|
||||
$invoice->status = 'Pending';
|
||||
$invoice->mail_body = $body;
|
||||
$invoice->save();
|
||||
|
||||
/**
|
||||
* Mark the invoices as paid
|
||||
*/
|
||||
foreach($characterIds as $char) {
|
||||
Ledger::where([
|
||||
'character_id' => $char,
|
||||
'invoiced' => 'No',
|
||||
])->update([
|
||||
'invoice_id' => $invoiceId,
|
||||
'invoiced' => 'Yes',
|
||||
]);
|
||||
}
|
||||
|
||||
/**
|
||||
* Increment the mail delay for the next cycle
|
||||
*/
|
||||
$mailDelay += 20;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the tags for Horizon
|
||||
*
|
||||
* @var array
|
||||
*/
|
||||
public function tags() {
|
||||
return ['MiningTaxes', 'SendMiningTaxesInvoics', 'Invoices'];
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,110 @@
|
||||
<?php
|
||||
|
||||
namespace App\Jobs\Commands\MiningTaxes\Invoices;
|
||||
|
||||
use Illuminate\Bus\Queueable;
|
||||
use Illuminate\Contracts\Queue\ShouldQueue;
|
||||
use Illuminate\Foundation\Bus\Dispatchable;
|
||||
use Illuminate\Queue\InteractsWithQueue;
|
||||
use Illuminate\Queue\SerializesModels;
|
||||
use Log;
|
||||
use Carbon\Carbon;
|
||||
|
||||
//Application Library
|
||||
use App\Library\Helpers\LookupHelper;
|
||||
|
||||
//Models
|
||||
use App\Models\MiningTax\Invoice;
|
||||
use App\Models\User\User;
|
||||
use App\Models\User\UserAlt;
|
||||
|
||||
//Jobs
|
||||
use App\Jobs\Commands\Eve\SendEveMail;
|
||||
|
||||
class UpdateMiningTaxesLateInvoices15th implements ShouldQueue
|
||||
{
|
||||
use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;
|
||||
|
||||
/**
|
||||
* Timeout in seconds
|
||||
*
|
||||
* @var int
|
||||
*/
|
||||
public $timeout = 3600;
|
||||
|
||||
/**
|
||||
* Number of job retries
|
||||
*
|
||||
* @var int
|
||||
*/
|
||||
public $tries = 3;
|
||||
|
||||
/**
|
||||
* Create a new job instance.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function __construct()
|
||||
{
|
||||
$this->connection = 'redis';
|
||||
$this->onQueue('miningtaxes');
|
||||
}
|
||||
|
||||
/**
|
||||
* Execute the job.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function handle()
|
||||
{
|
||||
//Declare variables
|
||||
$lookup = new LookupHelper;
|
||||
$config = config('esi');
|
||||
$mailDelay = 15;
|
||||
$today = Carbon::now();
|
||||
|
||||
//Get all of the invoices that are still pending.
|
||||
$invoices = Invoice::where([
|
||||
'status' => 'Pending',
|
||||
])->get();
|
||||
|
||||
//Cycle through the invoices, and see if they are late or not.
|
||||
foreach($invoices as $invoice) {
|
||||
$dueDate = Carbon::create($invoice->date_due);
|
||||
|
||||
if($dueDate->greaterThan($today->subDays(7))) {
|
||||
//Update the invoice in the database
|
||||
Invoice::where([
|
||||
'invoice_id' => $invoice->invoice_id,
|
||||
])->update([
|
||||
'status' => 'Late',
|
||||
]);
|
||||
|
||||
//Build the mail
|
||||
$subject = 'Warped Intentions Mining Taxes - Invoice Late';
|
||||
$sender = $config['primary'];
|
||||
$recipientType = 'character';
|
||||
$recipient = $invoice->character_id;
|
||||
|
||||
$body = "Dear " . $invoice->character_name . ",<br><br>";
|
||||
$body .= "The Mining Invoice: " . $invoice->invoice_id . " is late.<br>";
|
||||
$body .= "Please remite " . number_format($invoice->invoice_amount, 2, ".", ",") . "to Spatial Forces.<br>";
|
||||
$body .= "<br>Sincerely,<br>Warped Intentions Leadership<br>";
|
||||
|
||||
//Send a reminder to the user through eve mail about the late invoice
|
||||
SendEveMail::dispatch($body, $recipient, $recipientType, $subject, $sender)->delay(Carbon::now()->addSeconds($mailDelay));
|
||||
|
||||
$mailDelay += 20;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the tags for Horzion
|
||||
*
|
||||
* @var array
|
||||
*/
|
||||
public function tags() {
|
||||
return ['UpdateMiningTaxesLateInvoices', 'MiningTaxes', 'Invoices'];
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,110 @@
|
||||
<?php
|
||||
|
||||
namespace App\Jobs\Commands\MiningTaxes\Invoices;
|
||||
|
||||
use Illuminate\Bus\Queueable;
|
||||
use Illuminate\Contracts\Queue\ShouldQueue;
|
||||
use Illuminate\Foundation\Bus\Dispatchable;
|
||||
use Illuminate\Queue\InteractsWithQueue;
|
||||
use Illuminate\Queue\SerializesModels;
|
||||
use Log;
|
||||
use Carbon\Carbon;
|
||||
|
||||
//Application Library
|
||||
use App\Library\Helpers\LookupHelper;
|
||||
|
||||
//Models
|
||||
use App\Models\MiningTax\Invoice;
|
||||
use App\Models\User\User;
|
||||
use App\Models\User\UserAlt;
|
||||
|
||||
//Jobs
|
||||
use App\Jobs\Commands\Eve\SendEveMail;
|
||||
|
||||
class UpdateMiningTaxesLateInvoices1st implements ShouldQueue
|
||||
{
|
||||
use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;
|
||||
|
||||
/**
|
||||
* Timeout in seconds
|
||||
*
|
||||
* @var int
|
||||
*/
|
||||
public $timeout = 3600;
|
||||
|
||||
/**
|
||||
* Number of job retries
|
||||
*
|
||||
* @var int
|
||||
*/
|
||||
public $tries = 3;
|
||||
|
||||
/**
|
||||
* Create a new job instance.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function __construct()
|
||||
{
|
||||
$this->connection = 'redis';
|
||||
$this->onQueue('miningtaxes');
|
||||
}
|
||||
|
||||
/**
|
||||
* Execute the job.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function handle()
|
||||
{
|
||||
//Declare variables
|
||||
$lookup = new LookupHelper;
|
||||
$config = config('esi');
|
||||
$mailDelay = 15;
|
||||
$today = Carbon::now();
|
||||
|
||||
//Get all of the invoices that are still pending.
|
||||
$invoices = Invoice::where([
|
||||
'status' => 'Pending',
|
||||
])->get();
|
||||
|
||||
//Cycle through the invoices, and see if they are late or not.
|
||||
foreach($invoices as $invoice) {
|
||||
$dueDate = Carbon::create($invoice->date_due);
|
||||
|
||||
if($dueDate->greaterThan($today->subDays(7))) {
|
||||
//Update the invoice in the database
|
||||
Invoice::where([
|
||||
'invoice_id' => $invoice->invoice_id,
|
||||
])->update([
|
||||
'status' => 'Late',
|
||||
]);
|
||||
|
||||
//Build the mail
|
||||
$subject = 'Warped Intentions Mining Taxes - Invoice Late';
|
||||
$sender = $config['primary'];
|
||||
$recipientType = 'character';
|
||||
$recipient = $invoice->character_id;
|
||||
|
||||
$body = "Dear " . $invoice->character_name . ",<br><br>";
|
||||
$body .= "The Mining Invoice: " . $invoice->invoice_id . " is late.<br>";
|
||||
$body .= "Please remite " . number_format($invoice->invoice_amount, 2, ".", ",") . "to Spatial Forces.<br>";
|
||||
$body .= "<br>Sincerely,<br>Warped Intentions Leadership<br>";
|
||||
|
||||
//Send a reminder to the user through eve mail about the late invoice
|
||||
SendEveMail::dispatch($body, $recipient, $recipientType, $subject, $sender)->delay(Carbon::now()->addSeconds($mailDelay));
|
||||
|
||||
$mailDelay += 20;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the tags for Horzion
|
||||
*
|
||||
* @var array
|
||||
*/
|
||||
public function tags() {
|
||||
return ['UpdateMiningTaxesLateInvoices', 'MiningTaxes', 'Invoices'];
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,164 @@
|
||||
<?php
|
||||
|
||||
namespace App\Jobs\Commands\MiningTaxes\Ledgers;
|
||||
|
||||
//Internal Library
|
||||
use Illuminate\Bus\Queueable;
|
||||
use Illuminate\Contracts\Queue\ShouldQueue;
|
||||
use Illuminate\Foundation\Bus\Dispatchable;
|
||||
use Illuminate\Queue\InteractsWithQueue;
|
||||
use Illuminate\Queue\SerializesModels;
|
||||
use Carbon\Carbon;
|
||||
|
||||
//App Library
|
||||
use Seat\Eseye\Exceptions\RequestFailedException;
|
||||
use App\Library\Esi\Esi;
|
||||
use App\Library\Helpers\LookupHelper;
|
||||
use App\Library\Moons\MoonCalc;
|
||||
|
||||
//Jobs
|
||||
use App\Jobs\Commands\MiningTaxes\Ledgers\ProcessMiningTaxesLedgers;
|
||||
|
||||
//App Models
|
||||
use App\Models\MiningTax\Observer;
|
||||
use App\Models\MiningTax\Ledger;
|
||||
use App\Models\Moon\MineralPrice;
|
||||
use App\Models\Moon\ItemComposition;
|
||||
use App\Models\Esi\EsiToken;
|
||||
use App\Models\Esi\EsiScope;
|
||||
|
||||
class FetchMiningTaxesLedgers implements ShouldQueue
|
||||
{
|
||||
use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;
|
||||
|
||||
/**
|
||||
* Timeout in seconds
|
||||
*
|
||||
* @var int
|
||||
*/
|
||||
public $timeout = 3600;
|
||||
|
||||
/**
|
||||
* Number of job retries
|
||||
*
|
||||
* @var int
|
||||
*/
|
||||
public $tries = 3;
|
||||
|
||||
/**
|
||||
* Job Variables
|
||||
*/
|
||||
private $charId;
|
||||
private $corpId;
|
||||
private $observerId;
|
||||
|
||||
/**
|
||||
* Create a new job instance.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function __construct($charId, $corpId, $observerId)
|
||||
{
|
||||
//Set the connection for the job
|
||||
$this->connection = 'redis';
|
||||
$this->onQueue('miningtaxes');
|
||||
|
||||
//Import the variables from the calling function
|
||||
$this->charId = $charId;
|
||||
$this->corpId = $corpId;
|
||||
$this->observerId = $observerId;
|
||||
}
|
||||
|
||||
/**
|
||||
* Execute the job.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function handle()
|
||||
{
|
||||
//Declare variables
|
||||
$lookup = new LookupHelper;
|
||||
$mHelper = new MoonCalc;
|
||||
$esiHelper = new Esi;
|
||||
$pageFailed = false;
|
||||
$config = config('esi');
|
||||
|
||||
//Check for the correct scope
|
||||
if(!$esiHelper->haveEsiScope($this->charId, 'esi-industry.read_corporation_mining.v1')) {
|
||||
Log::critical('Character: ' . $this->charId . ' did not have the correct esi scope in FetchMiningTaxesLedgersJob.');
|
||||
return null;
|
||||
}
|
||||
|
||||
//Get the esi token in order to pull data from esi
|
||||
$refreshToken = $esiHelper->GetRefreshToken($this->charId);
|
||||
$esi = $esiHelper->SetupEsiAuthentication($refreshToken);
|
||||
|
||||
//Set the current page
|
||||
$currentPage = 1;
|
||||
$totalPages = 1;
|
||||
|
||||
//Setup a do-while loop to sort through the ledgers by pages
|
||||
do {
|
||||
/**
|
||||
* During the course of the operation, we want to ensure our token stays valid.
|
||||
* If the token, expires, then we want to refresh the token through the esi helper
|
||||
* library functionality.
|
||||
*/
|
||||
if($esiHelper->TokenExpired($refreshToken)) {
|
||||
$refreshToken = $esiHelper->GetRefreshToken($this->charId);
|
||||
$esi = $esiHelper->SetupEsiAuthentication($refreshToken);
|
||||
}
|
||||
|
||||
/**
|
||||
* Attempt to get the data from the esi api. If it fails, we skip the page
|
||||
*/
|
||||
try {
|
||||
$response = $esi->page($currentPage)
|
||||
->invoke('get', '/corporation/{corporation_id}/mining/observers/{observer_id}/', [
|
||||
'corporation_id' => $config['corporation'],
|
||||
'observer_id' => $this->observerId,
|
||||
]);
|
||||
} catch(RequestFailedException $e) {
|
||||
Log::warning('Failed to get the mining ledger in FetchMiningTaxesLedgersCommand for observer id: ' . $this->observerId);
|
||||
$pageFailed = true;
|
||||
}
|
||||
|
||||
/**
|
||||
* If the current page is the first one and the page didn't fail, then update the total pages.
|
||||
* If the first page failed, just return as we aren't going to be able to get the total amount of data needed.
|
||||
*/
|
||||
if($currentPage == 1 && $pageFailed == false) {
|
||||
$totalPages = $response->pages;
|
||||
} else if($currentPage == 1 && $pageFailed == true) {
|
||||
return null;
|
||||
}
|
||||
|
||||
if($pageFailed == true) {
|
||||
//If the page failed, then reset the variable, and skip the current iteration
|
||||
//of creating the jobs.
|
||||
$pageFailed = false;
|
||||
} else {
|
||||
//Decode the json response from the ledgers
|
||||
$ledgers = json_decode($response->raw);
|
||||
|
||||
//Dispatch jobs to process each of the mining ledger entries
|
||||
foreach($ledgers as $ledger) {
|
||||
ProcessMiningTaxesLedgers::dispatch($ledger, $this->observerId);
|
||||
}
|
||||
}
|
||||
|
||||
//Increment the current pages
|
||||
$currentPage++;
|
||||
|
||||
} while($currentPage <= $totalPages);
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the tags for Horzion
|
||||
*
|
||||
* @var array
|
||||
*/
|
||||
public function tags() {
|
||||
return ['FetchMiningTaxesLedgers', 'MiningTaxes', 'MiningTaxesLedgers'];
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,121 @@
|
||||
<?php
|
||||
|
||||
namespace App\Jobs\Commands\MiningTaxes\Ledgers;
|
||||
|
||||
//Internal Library
|
||||
use Illuminate\Bus\Queueable;
|
||||
use Illuminate\Contracts\Queue\ShouldQueue;
|
||||
use Illuminate\Foundation\Bus\Dispatchable;
|
||||
use Illuminate\Queue\InteractsWithQueue;
|
||||
use Illuminate\Queue\SerializesModels;
|
||||
use Carbon\Carbon;
|
||||
use Log;
|
||||
|
||||
//App Library
|
||||
use App\Library\Helpers\LookupHelper;
|
||||
use App\Library\Moons\MoonCalc;
|
||||
|
||||
//Models
|
||||
use App\Models\MiningTax\Ledger;
|
||||
use App\Models\Moon\MineralPrice;
|
||||
use App\Models\Moon\ItemComposition;
|
||||
|
||||
class ProcessMiningTaxesLedgers implements ShouldQueue
|
||||
{
|
||||
use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;
|
||||
|
||||
/**
|
||||
* Timeout in seconds
|
||||
*
|
||||
* @var int
|
||||
*/
|
||||
public $timeout = 3600;
|
||||
|
||||
/**
|
||||
* Number of job retries
|
||||
*
|
||||
* @var int
|
||||
*/
|
||||
public $tries = 3;
|
||||
|
||||
/**
|
||||
* Job Variables
|
||||
*/
|
||||
private $ledger;
|
||||
private $observerId;
|
||||
|
||||
/**
|
||||
* Create a new job instance.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function __construct($ledger, $observerId)
|
||||
{
|
||||
//Set the connection for the job
|
||||
$this->connection = 'redis';
|
||||
$this->onQueue('miningtaxes');
|
||||
|
||||
//Import variables from the calling function
|
||||
$this->ledger = $ledger;
|
||||
$this->observerId = $observerId;
|
||||
}
|
||||
|
||||
/**
|
||||
* Execute the job.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function handle()
|
||||
{
|
||||
$lookup = new LookupHelper;
|
||||
$mHelper = new MoonCalc;
|
||||
$config = config('esi');
|
||||
|
||||
//Create a starting date for the ledger
|
||||
$ledgerDate = Carbon::createFromFormat('Y-m-d', $this->ledger->last_updated);
|
||||
|
||||
//If the ledger is more than one day old, then process it, otherwise, we don't process it
|
||||
//or add it to the database as it may still be updating.
|
||||
if($ledgerDate->lessThan(Carbon::now()->subDay())) {
|
||||
//Get some of the basic information we need to work with
|
||||
$charName = $lookup->CharacterIdToName($this->ledger->character_id);
|
||||
//Get the type name from the ledger ore
|
||||
$typeName = $lookup->ItemIdToName($this->ledger->type_id);
|
||||
//Get the price from the helper function
|
||||
$price = $mHelper->CalculateOrePrice($this->ledger->type_id);
|
||||
//Calculate the total price based on the amount
|
||||
$amount = (($price * $this->ledger->quantity) * $config['refine_rate']);
|
||||
|
||||
$found = Ledger::where([
|
||||
'character_id' => $this->ledger->character_id,
|
||||
'observer_id' => $this->observerId,
|
||||
'type_id' => $this->ledger->type_id,
|
||||
'last_updated' => $this->ledger->last_updated,
|
||||
])->count();
|
||||
|
||||
if($found == 0) {
|
||||
$ledg = new Ledger;
|
||||
$ledg->character_id = $this->ledger->character_id;
|
||||
$ledg->character_name = $charName;
|
||||
$ledg->observer_id = $this->observerId;
|
||||
$ledg->last_updated = $this->ledger->last_updated;
|
||||
$ledg->type_id = $this->ledger->type_id;
|
||||
$ledg->ore_name = $typeName;
|
||||
$ledg->quantity = $this->ledger->quantity;
|
||||
$ledg->amount = $amount;
|
||||
$ledg->save();
|
||||
}
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the tags for Horzion
|
||||
*
|
||||
* @var array
|
||||
*/
|
||||
public function tags() {
|
||||
return ['ProcessMiningTaxesLedgers', 'MiningTaxes', 'MiningTaxesLedgers'];
|
||||
}
|
||||
}
|
||||
58
app/Jobs/Commands/MiningTaxes/MiningTaxesWeeklyInvoicing.php
Normal file
58
app/Jobs/Commands/MiningTaxes/MiningTaxesWeeklyInvoicing.php
Normal file
@@ -0,0 +1,58 @@
|
||||
<?php
|
||||
|
||||
namespace App\Jobs\Commands\MiningTaxes;
|
||||
|
||||
use Illuminate\Bus\Queueable;
|
||||
use Illuminate\Contracts\Queue\ShouldBeUnique;
|
||||
use Illuminate\Contracts\Queue\ShouldQueue;
|
||||
use Illuminate\Foundation\Bus\Dispatchable;
|
||||
use Illuminate\Queue\InteractsWithQueue;
|
||||
use Illuminate\Queue\SerializesModels;
|
||||
use Illuminate\Support\Facades\Bus;
|
||||
|
||||
use App\Jobs\Commands\MiningTaxes\Invoices\SendMiningTaxesInvoices;
|
||||
use App\Jobs\Commands\MiningTaxes\Invoices\ProcessAllianceMiningOperations;
|
||||
|
||||
class MiningTaxesWeeklyInvoicing implements ShouldQueue
|
||||
{
|
||||
use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;
|
||||
|
||||
/**
|
||||
* Timeout in seconds
|
||||
*
|
||||
* @var int
|
||||
*/
|
||||
public $timeout = 3600;
|
||||
|
||||
/**
|
||||
* Number of job retries
|
||||
*
|
||||
* @var int
|
||||
*/
|
||||
public $tries = 1;
|
||||
|
||||
/**
|
||||
* Create a new job instance.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function __construct()
|
||||
{
|
||||
//Set job parameters
|
||||
$this->connection = 'redis';
|
||||
$this->onQueue('miningtaxes');
|
||||
}
|
||||
|
||||
/**
|
||||
* Execute the job.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function handle()
|
||||
{
|
||||
Bus::chain([
|
||||
new ProcessAllianceMiningOperations,
|
||||
new SendMiningTaxesInvoices,
|
||||
])->dispatch();
|
||||
}
|
||||
}
|
||||
75
app/Jobs/Commands/MiningTaxes/PreFetchMiningTaxesLedgers.php
Normal file
75
app/Jobs/Commands/MiningTaxes/PreFetchMiningTaxesLedgers.php
Normal file
@@ -0,0 +1,75 @@
|
||||
<?php
|
||||
|
||||
namespace App\Jobs\Commands\MiningTaxes;
|
||||
|
||||
use Illuminate\Bus\Queueable;
|
||||
use Illuminate\Contracts\Queue\ShouldQueue;
|
||||
use Illuminate\Foundation\Bus\Dispatchable;
|
||||
use Illuminate\Queue\InteractsWithQueue;
|
||||
use Illuminate\Queue\SerializesModels;
|
||||
use Log;
|
||||
use Carbon\Carbon;
|
||||
|
||||
//Models
|
||||
use App\Models\MiningTax\Observer;
|
||||
|
||||
//Jobs
|
||||
use App\Jobs\Commands\MiningTaxes\Ledgers\FetchMiningTaxesLedgers;
|
||||
|
||||
class PreFetchMiningTaxesLedgers implements ShouldQueue
|
||||
{
|
||||
use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;
|
||||
|
||||
/**
|
||||
* Timeout in seconds
|
||||
*
|
||||
* @var int
|
||||
*/
|
||||
public $timeout = 3600;
|
||||
|
||||
/**
|
||||
* Number of job retries
|
||||
*
|
||||
* @var int
|
||||
*/
|
||||
public $tries = 3;
|
||||
|
||||
/**
|
||||
* Create a new job instance.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function __construct()
|
||||
{
|
||||
$this->connection = 'redis';
|
||||
$this->onQueue('miningtaxes');
|
||||
}
|
||||
|
||||
/**
|
||||
* Execute the job.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function handle()
|
||||
{
|
||||
//Get the site configuration which holds some data we need
|
||||
$config = config('esi');
|
||||
//Get the observers from the database
|
||||
$observers = Observer::all();
|
||||
|
||||
//For each of the observers, send a job to fetch the mining ledger
|
||||
foreach($observers as $obs) {
|
||||
//Dispatch the mining taxes ledger jobs
|
||||
FetchMiningTaxesLedgers::dispatch($config['primary'], $config['corporation'], $obs->observer_id);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the tags for Horzion
|
||||
*
|
||||
* @var array
|
||||
*/
|
||||
public function tags() {
|
||||
return ['PreFetchMiningTaxesLedgers', 'MiningTaxes', 'MiningTaxesLedgers'];
|
||||
}
|
||||
}
|
||||
143
app/Jobs/Commands/MiningTaxes/ProcessMiningTaxesPayments.php
Normal file
143
app/Jobs/Commands/MiningTaxes/ProcessMiningTaxesPayments.php
Normal file
@@ -0,0 +1,143 @@
|
||||
<?php
|
||||
|
||||
namespace App\Jobs\Commands\MiningTaxes;
|
||||
|
||||
//Internal Library
|
||||
use Illuminate\Bus\Queueable;
|
||||
use Illuminate\Contracts\Queue\ShouldQueue;
|
||||
use Illuminate\Foundation\Bus\Dispatchable;
|
||||
use Illuminate\Queue\InteractsWithQueue;
|
||||
use Illuminate\Queue\SerializesModels;
|
||||
use Carbon\Carbon;
|
||||
use Log;
|
||||
|
||||
//Library
|
||||
use App\Library\Helpers\LookupHelper;
|
||||
|
||||
//Models
|
||||
use App\Models\MiningTax\Invoice;
|
||||
use App\Models\MiningTax\Payment;
|
||||
use App\Models\Finances\AllianceWalletJournal;
|
||||
|
||||
class ProcessMiningTaxesPayments implements ShouldQueue
|
||||
{
|
||||
use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;
|
||||
|
||||
/**
|
||||
* Timeout in seconds
|
||||
*
|
||||
* @var int
|
||||
*/
|
||||
public $timeout = 3600;
|
||||
|
||||
/**
|
||||
* Number of job retries
|
||||
*
|
||||
* @var int
|
||||
*/
|
||||
public $tries = 3;
|
||||
|
||||
/**
|
||||
* Create a new job instance.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function __construct()
|
||||
{
|
||||
$this->connection = 'redis';
|
||||
$this->onQueue('miningtaxes');
|
||||
}
|
||||
|
||||
/**
|
||||
* Execute the job.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function handle()
|
||||
{
|
||||
//Declare the variables we will need
|
||||
$looup = new LookupHelper;
|
||||
$currentTime = Carbon::now();
|
||||
|
||||
//Get the outstanding invoices
|
||||
$outstanding = Invoice::where([
|
||||
'status' => 'Pending',
|
||||
])->get();
|
||||
|
||||
//Use the player donation journal from finances to see if the invoice_id is present
|
||||
//as a reason
|
||||
foreach($outstanding as $invoice) {
|
||||
//See if we have a reason with the correct uniqid from the player donation journal
|
||||
$found = AllianceWalletJournal::where([
|
||||
'reason' => $invoice->invoice_id,
|
||||
])->count();
|
||||
|
||||
//If we have received the invoice, then mark the invoice as paid
|
||||
if($found > 0) {
|
||||
//If we have the count, then grab the journal entry in order to do some things with it
|
||||
$journal = AllianceWalletJournal::where([
|
||||
'reason' => $invoice->invoice_id,
|
||||
])->first();
|
||||
|
||||
//If the bill is paid on time, then update the invoice as such
|
||||
if($currentTime->lessThanOrEqualTo($journal->inserted_at)) {
|
||||
Invoice::where([
|
||||
'invoice_id' => $invoice->invoice_id,
|
||||
])->update([
|
||||
'status' => 'Paid',
|
||||
]);
|
||||
}
|
||||
|
||||
if($currentTime->greaterThan($journal->inserted_at)) {
|
||||
Invoice::where([
|
||||
'invoice_id' => $invoice->invoice_id,
|
||||
])->update([
|
||||
'status' => 'Paid Late',
|
||||
]);
|
||||
}
|
||||
} else {
|
||||
$count = AllianceWalletJournal::where([
|
||||
'reason' => $invoice->invoice_id,
|
||||
])->count();
|
||||
|
||||
if($count > 0) {
|
||||
//If we have the count, then grab the journal entry in order to do some things with it
|
||||
$journal = AllianceWalletJournal::where([
|
||||
'reason' => $invoice->invoice_id,
|
||||
])->first();
|
||||
|
||||
//If the bill is paid on time, then update the invoice as such
|
||||
if($currentTime->lessThanOrEqualTo($journal->inserted_at)) {
|
||||
Invoice::where([
|
||||
'invoice_id' => $invoice->invoice_id,
|
||||
])->update([
|
||||
'status' => 'Paid',
|
||||
]);
|
||||
}
|
||||
|
||||
if($currentTime->greaterThan($journal->inserted_at)) {
|
||||
Invoice::where([
|
||||
'invoice_id' => $invoice->invoice_id,
|
||||
])->update([
|
||||
'status' => 'Paid Late',
|
||||
]);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//Use the contract descriptions from the esi to see if the invoice_id is present.
|
||||
//If the invoice is present, then mark it off as sent in correctly
|
||||
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the tags for Horzion
|
||||
*
|
||||
* @var array
|
||||
*/
|
||||
public function tags() {
|
||||
return ['ProcessMiningTaxesPayments', 'MiningTaxes', 'Payments'];
|
||||
}
|
||||
}
|
||||
316
app/Jobs/Commands/MiningTaxes/SendMiningTaxesInvoicesOld.php
Normal file
316
app/Jobs/Commands/MiningTaxes/SendMiningTaxesInvoicesOld.php
Normal file
@@ -0,0 +1,316 @@
|
||||
<?php
|
||||
|
||||
namespace App\Jobs\Commands\MiningTaxes;
|
||||
|
||||
use Illuminate\Bus\Queueable;
|
||||
use Illuminate\Contracts\Queue\ShouldQueue;
|
||||
use Illuminate\Foundation\Bus\Dispatchable;
|
||||
use Illuminate\Queue\InteractsWithQueue;
|
||||
use Illuminate\Queue\SerializesModels;
|
||||
use Log;
|
||||
use Carbon\Carbon;
|
||||
use Illuminate\Support\Collection;
|
||||
use Illuminate\Support\Str;
|
||||
|
||||
//Application Library
|
||||
use App\Library\Helpers\LookupHelper;
|
||||
|
||||
//Models
|
||||
use App\Models\MiningTax\Invoice;
|
||||
use App\Models\MiningTax\Ledger;
|
||||
use App\Models\User\UserAlt;
|
||||
use App\Models\User\User;
|
||||
|
||||
//Jobs
|
||||
use App\Jobs\Commands\Eve\SendEveMail;
|
||||
|
||||
class SendMiningTaxesInvoicesOld implements ShouldQueue
|
||||
{
|
||||
use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;
|
||||
|
||||
/**
|
||||
* Timeout in seconds
|
||||
*
|
||||
* @var int
|
||||
*/
|
||||
public $timeout = 3600;
|
||||
|
||||
/**
|
||||
* Number of job retries
|
||||
*
|
||||
* @var int
|
||||
*/
|
||||
public $tries = 3;
|
||||
|
||||
/**
|
||||
* Create a new job instance.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function __construct()
|
||||
{
|
||||
$this->connection = 'redis';
|
||||
$this->onQueue('miningtaxes');
|
||||
}
|
||||
|
||||
/**
|
||||
* Execute the job.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function handle()
|
||||
{
|
||||
//Declare variables
|
||||
$mailDelay = 15;
|
||||
$mains = new Collection;
|
||||
|
||||
/**
|
||||
* This section will determine if users are mains or alts of a main.
|
||||
* If they are mains, we keep the key. If they are alts of a main, then we delete
|
||||
* the key from the collection.
|
||||
*/
|
||||
|
||||
//Pluck all the users from the database of ledgers to determine if they are mains or alts.
|
||||
$tempMains = Ledger::where([
|
||||
'invoiced' => 'No',
|
||||
])->where('last_updated', '>', Carbon::now()->subDays(7))->pluck('character_id');
|
||||
|
||||
//Get the unique character ids from the ledgers in the previous statement
|
||||
$tempMains = $tempMains->unique()->values()->all();
|
||||
|
||||
//Cycle through the array of mains, and remove any characters which are in the User Alt table,
|
||||
//as those characters will be grouped with their correct main later.
|
||||
for($i = 0; $i < sizeof($tempMains); $i++) {
|
||||
if(UserAlt::where(['character_id' => $tempMains[$i]])->count() == 0) {
|
||||
$mains->push($tempMains[$i]);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* For each of the users, let's determine if there are any ledgers,
|
||||
* then determine if there are any alts and ledgers associated with the alts.
|
||||
*/
|
||||
foreach($mains as $main) {
|
||||
//Declare some variables for each run through the for loop
|
||||
$ledgers = new Collection;
|
||||
|
||||
//Count the ledgers for the main
|
||||
$mainLedgerCount = Ledger::where([
|
||||
'character_id' => $main,
|
||||
'invoiced' => 'No',
|
||||
])->where('last_updated', '>', Carbon::now()->subDays(7))->count();
|
||||
|
||||
//If there are ledgers for the main, then let's grab them
|
||||
if($mainLedgerCount > 0) {
|
||||
$mainLedgers = Ledger::where([
|
||||
'character_id' => $main,
|
||||
'invoiced' => 'No',
|
||||
])->where('last_updated', '>', Carbon::now()->subDays(7))->get();
|
||||
|
||||
//Cycle through the entries, and add them to the ledger to send with the invoice
|
||||
foreach($mainLedgers as $row) {
|
||||
$ledgers->push([
|
||||
'character_id' => $row->character_id,
|
||||
'character_name' => $row->character_name,
|
||||
'observer_id' => $row->observer_id,
|
||||
'type_id' => $row->type_id,
|
||||
'ore_name' => $row->ore_name,
|
||||
'quantity' => (int)$row->quantity,
|
||||
'amount' => (float)$row->amount,
|
||||
'last_updated' => $row->last_updated,
|
||||
]);
|
||||
}
|
||||
}
|
||||
|
||||
//Get the alt count for the main character
|
||||
$altCount = UserAlt::where(['main_id' => $main])->count();
|
||||
//If more than 0 alts, grab all the alts.
|
||||
if($altCount > 0) {
|
||||
$alts = UserAlt::where([
|
||||
'main_id' => $main,
|
||||
])->get();
|
||||
|
||||
//Cycle through the alts, and get the ledgers, and push onto the stack
|
||||
foreach($alts as $alt) {
|
||||
$altLedgerCount = Ledger::where([
|
||||
'character_id' => $alt->character_id,
|
||||
'invoiced' => 'No',
|
||||
])->where('last_updated', '>', Carbon::now()->subDays(7))->count();
|
||||
|
||||
if($altLedgerCount > 0) {
|
||||
$altLedgers = Ledger::where([
|
||||
'character_id' => $alt->character_id,
|
||||
'invoiced' => 'No',
|
||||
])->where('last_updated', '>', Carbon::now()->subDays(7))->get();
|
||||
|
||||
foreach($altLedgers as $row) {
|
||||
$ledgers->push([
|
||||
'character_id' => $row->character_id,
|
||||
'character_name' => $row->character_name,
|
||||
'observer_id' => $row->observer_id,
|
||||
'type_id' => $row->type_id,
|
||||
'ore_name' => $row->ore_name,
|
||||
'quantity' => (int)$row->quantity,
|
||||
'amount' => (float)$row->amount,
|
||||
'last_updated' => $row->last_updated,
|
||||
]);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Send the collected information over to the function to send the actual mail
|
||||
*/
|
||||
if($ledgers->count() > 0) {
|
||||
$this->CreateInvoice($main, $ledgers, $mailDelay);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Create the invoice to the mail out
|
||||
*
|
||||
* @var charId
|
||||
* @var ledgers
|
||||
* @var mailDelay
|
||||
*/
|
||||
private function CreateInvoice($charId, Collection $ledgers, int &$mailDelay) {
|
||||
$ores = array();
|
||||
$characters = array();
|
||||
$characterIds = array();
|
||||
$totalPrice = 0.00;
|
||||
$body = null;
|
||||
$lookup = new LookupHelper;
|
||||
$config = config('esi');
|
||||
|
||||
//Create an invoice id
|
||||
$invoiceId = "M" . uniqid();
|
||||
|
||||
//Get the sum of all the ledgers
|
||||
$invoiceAmount = round(((float)$ledgers->sum('amount') * (float)$config['mining_tax']), 2);
|
||||
|
||||
//Get the character name from the lookup table
|
||||
$charName = $lookup->CharacterIdToName($charId);
|
||||
|
||||
//Create the date due and the invoice date
|
||||
$dateDue = Carbon::now()->addDays(7);
|
||||
$invoiceDate = Carbon::now();
|
||||
|
||||
//Set the mining tax from the config file
|
||||
$numberMiningTax = number_format(((float)$config['mining_tax'] * (float)100.00), 2, ".", ",");
|
||||
|
||||
//Create the list of ores to put in the mail
|
||||
$temp = $ledgers->toArray();
|
||||
foreach($temp as $t) {
|
||||
//If the key isn't set, set it to the default of 0
|
||||
if(!isset($ores[$t['type_id']])) {
|
||||
$ores[$t['type_id']] = (int)0;
|
||||
}
|
||||
|
||||
//Add the quantity into the ores array
|
||||
$ores[$t['type_id']] += (int)$t['quantity'];
|
||||
|
||||
//Create a list of character names
|
||||
if(!isset($characters[$t['character_name']])) {
|
||||
$characters[$t['character_name']] = $t['character_name'];
|
||||
}
|
||||
|
||||
//Create a list of character ids
|
||||
if(!isset($characterIds[$t['character_id']])) {
|
||||
$characterIds[$t['character_id']] = $t['character_id'];
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Create the mail body to send to the main character
|
||||
*/
|
||||
$body .= "Dear " . $charName . ",<br><br>";
|
||||
$body .= "Mining Taxes are due for the following ores mined from alliance moons: <br>";
|
||||
foreach($ores as $ore => $quantity) {
|
||||
$oreName = $lookup->ItemIdToName($ore);
|
||||
$body .= $oreName . ": " . number_format($quantity, 0, ".", ",") . "<br>";
|
||||
}
|
||||
$body .= "Total Value of Ore Mined: " . number_format($totalPrice, 2, ".", ",") . " ISK.";
|
||||
$body .= "<br><br>";
|
||||
$body .= "Please remit " . number_format($invoiceAmount, 2, ".", ",") . " ISK to Spatial Forces by " . $dateDue . "<br>";
|
||||
$body .= "Set the reason for transfer as " . $invoiceId . "<br>";
|
||||
$body .= "The mining taxes are currently set to " . $numberMiningTax . "%.<br>";
|
||||
$body .= "<br><br>";
|
||||
$body .= "You can also send a contract with the following ores in the contract with the reason set as: " . $invoiceId . "<br>";
|
||||
foreach($ores as $ore => $quantity) {
|
||||
$oreName = $lookup->ItemIdToName($ore);
|
||||
$body .= $oreName . ": " . number_format(round($quantity * $config['mining_tax']), 0, ".", ",") . "<br>";
|
||||
}
|
||||
$body .= "<br>";
|
||||
$body .= "Characters Processed: <br>";
|
||||
foreach($characters as $character) {
|
||||
$body .= $character . "<br>";
|
||||
}
|
||||
$body .= "<br>";
|
||||
$body .= "<br>Sincerely,<br>Warped Intentions Leadership<br>";
|
||||
|
||||
//Check if the mail body is greater than 2000 characters. If greater than 2,000 characters, then
|
||||
if(strlen($body) > 2000) {
|
||||
$body = "Dear " . $charName . "<br><br>";
|
||||
$body .= "Total Value of Ore Mined: " . number_format($totalPrice, 2, ".", ",") . " ISK.";
|
||||
$body .= "<br><br>";
|
||||
$body .= "Please remit " . number_format($invoiceAmount, 2, ".", ",") . " ISK to Spatial Forces by " . $dateDue . "<br>";
|
||||
$body .= "Set the reason for transfer as: " . $invoiceId . "<br>";
|
||||
$body .= "The mining taxes are currently set to " . $numberMiningTax . "%.<br>";
|
||||
$body .= "<br>";
|
||||
$body .= "<br>Sincerely,<br>Warped Intentions Leadership<br>";
|
||||
}
|
||||
|
||||
//Mail the invoice to the character if the character is in
|
||||
//Warped Intentions or Legacy
|
||||
$subject = 'Warped Intentions Mining Taxes';
|
||||
$sender = $config['primary'];
|
||||
$recipientType = 'character';
|
||||
$recipient = $charId;
|
||||
|
||||
//Send the Eve Mail Job to the queue to be dispatched
|
||||
SendEveMail::dispatch($body, $recipient, $recipientType, $subject, $sender)->delay(Carbon::now()->addSeconds($mailDelay));
|
||||
|
||||
/**
|
||||
* Create a new invoice model, and save it to the database
|
||||
*/
|
||||
$invoice = new Invoice;
|
||||
$invoice->character_id = $charId;
|
||||
$invoice->character_name = $charName;
|
||||
$invoice->invoice_id = $invoiceId;
|
||||
$invoice->invoice_amount = $invoiceAmount;
|
||||
$invoice->date_issued = $invoiceDate;
|
||||
$invoice->date_due = $dateDue;
|
||||
$invoice->status = 'Pending';
|
||||
$invoice->mail_body = $body;
|
||||
$invoice->save();
|
||||
|
||||
/**
|
||||
* Mark the invoices as paid
|
||||
*/
|
||||
foreach($characterIds as $char) {
|
||||
Ledger::where([
|
||||
'character_id' => $char,
|
||||
'invoiced' => 'No',
|
||||
])->update([
|
||||
'invoice' => $invoiceId,
|
||||
'invoiced' => 'Yes',
|
||||
]);
|
||||
}
|
||||
|
||||
/**
|
||||
* Increment the mail delay for the next cycle
|
||||
*/
|
||||
$mailDelay += 20;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the tags for Horizon
|
||||
*
|
||||
* @var array
|
||||
*/
|
||||
public function tags() {
|
||||
return ['MiningTaxes', 'SendMiningTaxesInvoics', 'Invoices'];
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,51 @@
|
||||
<?php
|
||||
|
||||
namespace App\Jobs\Commands\MoonRental\Invoices;
|
||||
|
||||
//Application Library
|
||||
use Illuminate\Bus\Queueable;
|
||||
use Illuminate\Contracts\Queue\ShouldBeUnique;
|
||||
use Illuminate\Contracts\Queue\ShouldQueue;
|
||||
use Illuminate\Foundation\Bus\Dispatchable;
|
||||
use Illuminate\Queue\InteractsWithQueue;
|
||||
use Illuminate\Queue\SerializesModels;
|
||||
use Log;
|
||||
use Carbon\Carbon;
|
||||
|
||||
//Internal Library
|
||||
use App\Library\Helpers\LookupHelper;
|
||||
|
||||
//Models
|
||||
use App\Models\MoonRental\AllianceMoon;
|
||||
use App\Models\MoonRental\AllianceMoonOre;
|
||||
use App\Models\MoonRental\AllianceMoonRental;
|
||||
|
||||
class SendMoonRentalInvoices implements ShouldQueue
|
||||
{
|
||||
use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;
|
||||
|
||||
/**
|
||||
* Create a new job instance.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function __construct()
|
||||
{
|
||||
$this->connection = 'redis';
|
||||
$this->onQueue('miningtaxes');
|
||||
}
|
||||
|
||||
/**
|
||||
* Execute the job.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function handle()
|
||||
{
|
||||
//Declare variables
|
||||
$lookup = new LookupHelper;
|
||||
$months = 3;
|
||||
$today = Carbon::now();
|
||||
$future = Carbon::now()->addMonths(3);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,94 @@
|
||||
<?php
|
||||
|
||||
namespace App\Jobs\Commands\MoonRental;
|
||||
|
||||
use Illuminate\Bus\Queueable;
|
||||
use Illuminate\Contracts\Queue\ShouldBeUnique;
|
||||
use Illuminate\Contracts\Queue\ShouldQueue;
|
||||
use Illuminate\Foundation\Bus\Dispatchable;
|
||||
use Illuminate\Queue\InteractsWithQueue;
|
||||
use Illuminate\Queue\SerializesModels;
|
||||
use Log;
|
||||
use Carbon\Carbon;
|
||||
|
||||
//Internal Library
|
||||
use App\Library\Moons\MoonCalc;
|
||||
use App\Library\Helpers\LookupHelper;
|
||||
|
||||
//Models
|
||||
use App\Models\MoonRental\AllianceMoon;
|
||||
use App\Models\MoonRental\AllianceMoonOre;
|
||||
|
||||
class UpdateAllianceMoonRentalWorth implements ShouldQueue
|
||||
{
|
||||
use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;
|
||||
|
||||
/**
|
||||
* Create a new job instance.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function __construct()
|
||||
{
|
||||
$this->connection = 'redis';
|
||||
$this->onQueue('default');
|
||||
}
|
||||
|
||||
/**
|
||||
* Execute the job.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function handle()
|
||||
{
|
||||
//Declare variables
|
||||
$lookup = new LookupHelper;
|
||||
$mHelper = new MoonCalc;
|
||||
$months = 3;
|
||||
$rentalTax = 0.25;
|
||||
|
||||
$moons = AllianceMoon::all();
|
||||
|
||||
foreach($moons as $moon) {
|
||||
//Declare the arrays needed
|
||||
$ores = array();
|
||||
$worth = 0.00;
|
||||
|
||||
$ores = AllianceMoonOre::where([
|
||||
'moon_id' => $moon->moon_id,
|
||||
])->get(['ore_name', 'quantity'])->toArray();
|
||||
|
||||
if(sizeof($ores) == 1) {
|
||||
$ores[1]["ore_name"] = null;
|
||||
$ores[1]["quantity"] = 0.00;
|
||||
$ores[2]["ore_name"] = null;
|
||||
$ores[2]["quantity"] = 0.00;
|
||||
$ores[3]["ore_name"] = null;
|
||||
$ores[3]["quantity"] = 0.00;
|
||||
} else if(sizeof($ores) == 2) {
|
||||
$ores[2]["ore_name"] = null;
|
||||
$ores[2]["quantity"] = 0.00;
|
||||
$ores[3]["ore_name"] = null;
|
||||
$ores[3]["quantity"] = 0.00;
|
||||
} else if(sizeof($ores) == 3) {
|
||||
$ores[3]["ore_name"] = null;
|
||||
$ores[3]["quantity"] = 0.00;
|
||||
}
|
||||
|
||||
//one of these two ways will work
|
||||
$worth = $mHelper->MoonTotalWorth($ores[0]["ore_name"], $ores[0]["quantity"],
|
||||
$ores[1]["ore_name"], $ores[1]["quantity"],
|
||||
$ores[2]["ore_name"], $ores[2]["quantity"],
|
||||
$ores[3]["ore_name"], $ores[3]["quantity"]);
|
||||
|
||||
$rentalAmount = $worth * $rentalTax * $months;
|
||||
|
||||
AllianceMoon::where([
|
||||
'moon_id' => $moon->moon_id,
|
||||
])->update([
|
||||
'worth_amount' => $worth,
|
||||
'rental_amount' => $rentalAmount,
|
||||
]);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,152 +0,0 @@
|
||||
<?php
|
||||
|
||||
namespace App\Jobs\Commands\Moons;
|
||||
|
||||
//Internal Libraries
|
||||
use Illuminate\Bus\Queueable;
|
||||
use Illuminate\Queue\SerializesModels;
|
||||
use Illuminate\Queue\InteractsWithQueue;
|
||||
use Illuminate\Contracts\Queue\ShouldQueue;
|
||||
use Illuminate\Foundation\Bus\Dispatchable;
|
||||
use Log;
|
||||
|
||||
//App Library
|
||||
use Seat\Eseye\Exceptions\RequestFailedException;
|
||||
use App\Library\Esi\Esi;
|
||||
use App\Library\Lookups\LookupHelper;
|
||||
use App\Library\Structures\StructureHelper;
|
||||
|
||||
//App Models
|
||||
use App\Models\Moon\CorpMoonLedger;
|
||||
use App\Models\Moon\CorpMoonObserver;
|
||||
|
||||
|
||||
class FetchMoonLedgerJob implements ShouldQueue
|
||||
{
|
||||
use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;
|
||||
|
||||
/**
|
||||
* Timeout in seconds
|
||||
*
|
||||
* @var int
|
||||
*/
|
||||
public $timeout = 3600;
|
||||
|
||||
/**
|
||||
* Retries
|
||||
*
|
||||
* @var int
|
||||
*/
|
||||
public $retries = 3;
|
||||
|
||||
/**
|
||||
* Private Variables
|
||||
*/
|
||||
private $charId;
|
||||
|
||||
/**
|
||||
* Create a new job instance.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function __construct($charId)
|
||||
{
|
||||
//Set the character id
|
||||
$this->charId = $charId;
|
||||
|
||||
//Set the connection
|
||||
$this->connection = 'redis';
|
||||
}
|
||||
|
||||
/**
|
||||
* Execute the job.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function handle()
|
||||
{
|
||||
//Declare Variables
|
||||
$esiHelper = new Esi;
|
||||
$lookup = new LookupHelper;
|
||||
$response = null;
|
||||
$structureInfo = null;
|
||||
|
||||
//Get the configuration for the main site
|
||||
$config = config('esi');
|
||||
|
||||
//Check for esi scope for the character
|
||||
if(!$esiHelper->HaveEsiScope($this->charId, 'esi-industry.read_corporation_mining.v1') || !$esiHelper->HaveEsiScope($this->charId, 'esi-universe.read_structures.v1')) {
|
||||
Log::critical('The primary character does not have the necessary scopes for FetchRentalMoonLedgerCommand.');
|
||||
return;
|
||||
}
|
||||
|
||||
//Get the refresh token if the scope checks have passed
|
||||
$refreshToken = $esiHelper->GetRefreshToken($this->charId);
|
||||
|
||||
//Setup the esi information
|
||||
$esi = $esiHelper->SetupEsiAuthentication($refreshToken);
|
||||
|
||||
//Get the character data from the lookup table
|
||||
$character = $lookup->GetCharacterInfo($this->charId);
|
||||
|
||||
//Get the corporation data from the lookup table
|
||||
$corporation = $lookup->GetCorporationInfo($character->corporation_id);
|
||||
|
||||
//Setup the structure helper
|
||||
$structure = new StructureHelper($this->charId, $character->corporation_id, $esi);
|
||||
|
||||
//Get the moon observers from the database
|
||||
$observers = CorpMoonObserver::where([
|
||||
'corporation_id' => $character->corporation_id,
|
||||
])->get();
|
||||
|
||||
foreach($observers as $observer) {
|
||||
//Try to get the ledger data from the esi
|
||||
try {
|
||||
$ledgers = $esi->invoke('get', '/corporation/{corporation_id}/mining/observers/{observer_id}/', [
|
||||
'corporation_id' => $character->corporation_id,
|
||||
'observer_id' => $observer->observer_id,
|
||||
]);
|
||||
} catch(RequestFailedException $e) {
|
||||
//Log the exception
|
||||
Log::critical('FetchMoonLedger job failed to get the mining ledgers.');
|
||||
}
|
||||
|
||||
if($ledgers != null) {
|
||||
foreach($ledgers as $ledger) {
|
||||
//Get the ore name from the lookup table
|
||||
$ore = $lookup->ItemIdToName($ledger->type_id);
|
||||
|
||||
//Get the character name from the lookup helper
|
||||
$charInfo = $lookup->GetCharacterInfo($ledger->character_id);
|
||||
//Get the corporation info from the lookup helper
|
||||
$corpInfo = $lookup->GetCorporationInfo($charInfo->corporation_id);
|
||||
//Get the recorded corporation information
|
||||
$recordedCorpInfo = $lookup->GetCorporationInfo($ledger->recorded_corporation_id);
|
||||
|
||||
$entries[] = [
|
||||
'corporation_id' => $corpInfo->corporation_id,
|
||||
'corporation_name' => $corpInfo->name,
|
||||
'character_id' => $ledger->character_id,
|
||||
'character_name' => $charInfo->name,
|
||||
'observer_id' => $observer->observer_id,
|
||||
'observer_name' => $observer->observer_name,
|
||||
'type_id' => $ledger->type_id,
|
||||
'ore' => $ore,
|
||||
'quantity' => $ledger->quantity,
|
||||
'recorded_corporation_id' => $ledger->recorded_corporation_id,
|
||||
'recorded_corporation_name' => $recordedCorpInfo->name,
|
||||
'last_updated' => $ledger->last_updated,
|
||||
'created_at' => $ledger->last_updated . ' 23:59:59',
|
||||
'updated_at' => $ledger->last_updated . ' 23:59:59',
|
||||
];
|
||||
}
|
||||
|
||||
//Insert or ignore each entry into the database
|
||||
CorpMoonLedger::insertOrIgnore($entries);
|
||||
|
||||
Log::info('FetchMoonLedgerJob inserted up to ' . count($entries) . 'into the database.');
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,130 +0,0 @@
|
||||
<?php
|
||||
|
||||
namespace App\Jobs\Commands\Moons;
|
||||
|
||||
//Internal Library
|
||||
use Illuminate\Bus\Queueable;
|
||||
use Illuminate\Queue\SerializesModels;
|
||||
use Illuminate\Queue\InteractsWithQueue;
|
||||
use Illuminate\Contracts\Queue\ShouldQueue;
|
||||
use Illuminate\Foundation\Bus\Dispatchable;
|
||||
use Log;
|
||||
|
||||
//App Library
|
||||
use Seat\Eseye\Exceptions\RequestFailedException;
|
||||
use App\Library\Esi\Esi;
|
||||
use App\Library\Lookups\LookupHelper;
|
||||
use App\Library\Structures\StructureHelper;
|
||||
|
||||
//App Models
|
||||
use App\Models\Moon\CorpMoonObserver;
|
||||
|
||||
class FetchMoonObserverJob implements ShouldQueue
|
||||
{
|
||||
use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;
|
||||
|
||||
/**
|
||||
* Timeout in seconds
|
||||
*
|
||||
* @var int
|
||||
*/
|
||||
public $timeout = 3600;
|
||||
|
||||
/**
|
||||
* Retries
|
||||
*
|
||||
* @var int
|
||||
*/
|
||||
public $retries = 3;
|
||||
|
||||
/**
|
||||
* Private variables
|
||||
*/
|
||||
private $charId;
|
||||
|
||||
/**
|
||||
* Create a new job instance.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function __construct($charId)
|
||||
{
|
||||
//Set the character id
|
||||
$this->charId = $charId;
|
||||
|
||||
//Set the connection
|
||||
$this->connection = 'redis';
|
||||
}
|
||||
|
||||
/**
|
||||
* Execute the job.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function handle()
|
||||
{
|
||||
//Declare some variables
|
||||
$lookup = new LookupHelper;
|
||||
$esiHelper = new Esi;
|
||||
|
||||
//Get the configuration from the main site
|
||||
$config = config('esi');
|
||||
|
||||
//Check for the esi scope
|
||||
if(!$esiHelper->HaveEsiScope($this->charId, 'esi-industry.read_corporation_mining.v1') || !$esiHelper->HaveEsiScope($this->charId, 'esi-universe.read_structures.v1')) {
|
||||
Log::warning('Esi scopes were not found for Fetch Moon Observers job.');
|
||||
return;
|
||||
}
|
||||
|
||||
//Get the refresh token for the character
|
||||
$refreshToken = $esiHelper->GetRefreshToken($this->charId);
|
||||
//Get the esi variable
|
||||
$esi = $esiHelper->SetupEsiAuthentication($refreshToken);
|
||||
|
||||
//With the lookup helper, get the character information
|
||||
$character = $lookup->GetCharacterInfo($this->charId);
|
||||
//With the lookup helper, get the corporation information
|
||||
$corporation = $lookup->GetCorporationInfo($character->corporation_id);
|
||||
|
||||
//Delcare the structure helper since we have the necessary data
|
||||
$structureHelper = new StructureHelper($this->charId, $character->corporation_id, $esi);
|
||||
|
||||
//Get the mining observers for the corporation's from esi
|
||||
try {
|
||||
$response = $esi->invoke('get', '/corporation/{corporation_id}/mining/observers/', [
|
||||
'corporation_id' => $character->corporation_id,
|
||||
]);
|
||||
} catch(RequestFailedException $e) {
|
||||
Log::critical('FetchMoonObservers failed to get the moon observers for the corporation');
|
||||
return null;
|
||||
}
|
||||
|
||||
//Run through the mining observers, and add them to the database as needed
|
||||
foreach($response as $observer) {
|
||||
$count = CorpMoonObserver::where(['observer_id' => $observer->observer_id])->count();
|
||||
//If the observer is not found, then add it to the database
|
||||
if($count == 0) {
|
||||
//Get the structure information from the universe structure esi endpoint
|
||||
$structureInfo = $structureHelper->GetStructureInfo($observer->observer_id);
|
||||
//Create a new corp moon observer in the database
|
||||
$obs = new CorpMoonObserver;
|
||||
$obs->corporation_id = $character->corporation_id;
|
||||
$obs->corporation_name = $corporation->name;
|
||||
$obs->observer_id = $observer->observer_id;
|
||||
$obs->observer_name = $structureInfo->name;
|
||||
$obs->observer_owner_id = $structureInfo->owner_id;
|
||||
$obs->solar_system_id = $structureInfo->solar_system_id;
|
||||
$obs->observer_type = $observer->observer_type;
|
||||
$obs->observer_type_id = $structureInfo->type_id;
|
||||
$obs->last_updated = $observer->last_updated;
|
||||
$obs->save();
|
||||
} else {
|
||||
CorpMoonObserver::where([
|
||||
'observer_id' => $observer->observer_id,
|
||||
])->update([
|
||||
'last_updated' => $observer->last_updated,
|
||||
]);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,58 +0,0 @@
|
||||
<?php
|
||||
|
||||
namespace App\Jobs\Commands\Moons;
|
||||
|
||||
//Internal Libraries
|
||||
use Illuminate\Bus\Queueable;
|
||||
use Illuminate\Queue\SerializesModels;
|
||||
use Illuminate\Queue\InteractsWithQueue;
|
||||
use Illuminate\Contracts\Queue\ShouldQueue;
|
||||
use Illuminate\Foundation\Bus\Dispatchable;
|
||||
use Log;
|
||||
use Carbon\Carbon;
|
||||
|
||||
//App Models
|
||||
use App\Models\Moon\CorpMoonLedger;
|
||||
|
||||
class PurgeMoonLedgerJob implements ShouldQueue
|
||||
{
|
||||
use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;
|
||||
|
||||
/**
|
||||
* Timeout in seconds
|
||||
*
|
||||
* @var int
|
||||
*/
|
||||
public $timeout = 3600;
|
||||
|
||||
/**
|
||||
* Retries
|
||||
*
|
||||
* @var int
|
||||
*/
|
||||
public $retries = 3;
|
||||
|
||||
/**
|
||||
* Create a new job instance.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function __construct()
|
||||
{
|
||||
//Set the connection for the job
|
||||
$this->connection = 'redis';
|
||||
}
|
||||
|
||||
/**
|
||||
* Execute the job.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function handle()
|
||||
{
|
||||
$previous = Carbon::now()->subDays(60);
|
||||
|
||||
//Remove old ledger entries
|
||||
CorpMoonLedger::where('created_at', '<', $previous)->delete();
|
||||
}
|
||||
}
|
||||
@@ -1,143 +0,0 @@
|
||||
<?php
|
||||
|
||||
namespace App\Jobs\Commands;
|
||||
|
||||
//Internal Libraries
|
||||
use Illuminate\Bus\Queueable;
|
||||
use Illuminate\Queue\SerializesModels;
|
||||
use Illuminate\Queue\InteractsWithQueue;
|
||||
use Illuminate\Contracts\Queue\ShouldQueue;
|
||||
use Illuminate\Foundation\Bus\Dispatchable;
|
||||
use Log;
|
||||
|
||||
//App Library
|
||||
use Seat\Eseye\Exceptions\RequestFailedException;
|
||||
use App\Library\Esi\Esi;
|
||||
use App\Library\Lookups\LookupHelper;
|
||||
|
||||
//App Models
|
||||
use App\Models\RentalMoonLedger;
|
||||
use App\Models\RentalMoonObserver;
|
||||
|
||||
class FetchRentalMoonLedgerJob implements ShouldQueue
|
||||
{
|
||||
use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;
|
||||
|
||||
/**
|
||||
* Timeout in seconds
|
||||
*
|
||||
* @var int
|
||||
*/
|
||||
public $timeout = 3600;
|
||||
|
||||
/**
|
||||
* Retries
|
||||
*
|
||||
* @var int
|
||||
*/
|
||||
public $retries = 3;
|
||||
|
||||
/**
|
||||
* Create a new job instance.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function __construct()
|
||||
{
|
||||
//
|
||||
}
|
||||
|
||||
/**
|
||||
* Execute the job.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function handle()
|
||||
{
|
||||
//Declare variables
|
||||
$esiHelper = new Esi;
|
||||
$lookup = new LookupHelper;
|
||||
$response = null;
|
||||
$structureInfo = null;
|
||||
$entries = array();
|
||||
|
||||
//Get the configuration for the main site
|
||||
$config = config('esi');
|
||||
|
||||
//Check for the esi scope
|
||||
if(!$esiHelper->HaveEsiScope($config['primary'], 'esi-industry.read_corporation_mining.v1') || !$esiHelper->HaveEsiScope($config['primary'], 'esi-universe.read_structures.v1')) {
|
||||
Log::critical('The primary character does not have the necessary scopes for FetchRentalMoonLedgerCommand.');
|
||||
return;
|
||||
}
|
||||
|
||||
//Get the refresh token if scope checks have passed
|
||||
$refreshToken = $esiHelper->GetRefreshtoken($config['primary']);
|
||||
|
||||
//Get the character data from the lookup table if possible or esi
|
||||
$character = $lookup->GetCharacterInfo($config['primary']);
|
||||
|
||||
//Get all of the rental moon observers from the database
|
||||
$observers = RentalMoonObserver::all();
|
||||
|
||||
//Dump the mining ledger table for rental moons
|
||||
RentalMoonLedger::truncate();
|
||||
|
||||
//Foreach observer get the ledger
|
||||
foreach($observers as $observer) {
|
||||
//Get the observer name.
|
||||
$observerInfo = Structure::where([
|
||||
'structure_id' => $observer->observer_id,
|
||||
])->first();
|
||||
|
||||
try {
|
||||
$ledgers = $esi->invoke('get', '/corporation/{corporation_id}/mining/observers/{observer_id}/', [
|
||||
'corporation_id' => $character->corporation_id,
|
||||
'observer_id' => $observer->observer_id,
|
||||
]);
|
||||
} catch(RequestFailedException $e) {
|
||||
//If an exception has occurred, then log it
|
||||
Log::critical('FetchRentalMoonLedger command failed to get the mining ledger for observer id: ' . $observer->observer_id);
|
||||
}
|
||||
|
||||
if($ledgers != null) {
|
||||
foreach($ledgers as $ledger) {
|
||||
//Get the ore name from the lookup table
|
||||
$ore = $lookup->ItemIdToName($ledger->type_id);
|
||||
|
||||
//Get the character name from the lookup helper using the characterId
|
||||
$charInfo = $lookup->GetCharacterInfo($ledger->character_id);
|
||||
//Get the corporation information
|
||||
$corpInfo = $lookup->GetCorporationInfo($charInfo->corporation_id);
|
||||
|
||||
//Get the recorded corporation information
|
||||
$recordedCorpInfo = $lookup->GetCorporationInfo($ledger->recorded_corporation_id);
|
||||
|
||||
$entries[] = [
|
||||
'corporation_id' => $corpInfo->corporation_id,
|
||||
'corporation_name' => $corpInfo->name,
|
||||
'character_id' => $ledger->character_id,
|
||||
'character_name' => $charInfo->name,
|
||||
'observer_id' => $observer->observer_id,
|
||||
'observer_name' => $observerInfo->name,
|
||||
'type_id' => $ledger->type_id,
|
||||
'ore' => $ore,
|
||||
'quantity' => $ledger->quantity,
|
||||
'recorded_corporation_id' => $ledger->recorded_corporation_id,
|
||||
'recorded_corporation_name' => $recordedCorpInfo->name,
|
||||
'last_updated' => $ledger->last_updated,
|
||||
'created_at' => $ledger->last_updated . ' 23:59:59',
|
||||
'updated_at' => $ledger->last_updated . ' 23:59:59',
|
||||
];
|
||||
}
|
||||
|
||||
//Insert or ignore each of the records saved into the array through the foreach loop
|
||||
RentalMoonLedger::insertOrIgnore($entries);
|
||||
|
||||
Log::info(
|
||||
'FetchRentalMoonLedgerJob inserted up to ' .count($entires) . ' new ledger entries.'
|
||||
);
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,97 +0,0 @@
|
||||
<?php
|
||||
|
||||
namespace App\Jobs\Commands;
|
||||
|
||||
use Illuminate\Bus\Queueable;
|
||||
use Illuminate\Queue\SerializesModels;
|
||||
use Illuminate\Queue\InteractsWithQueue;
|
||||
use Illuminate\Contracts\Queue\ShouldQueue;
|
||||
use Illuminate\Foundation\Bus\Dispatchable;
|
||||
use Log;
|
||||
|
||||
//App Library
|
||||
use Seat\Eseye\Exceptions\RequestFailedException;
|
||||
use App\Library\Esi\Esi;
|
||||
use App\Library\Lookups\LookupHelper;
|
||||
|
||||
|
||||
//App Models
|
||||
use App\Models\Moon\RentalMoonObserver;
|
||||
|
||||
class FetchRentalMoonObserversJob implements ShouldQueue
|
||||
{
|
||||
use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;
|
||||
|
||||
/**
|
||||
* Timeout in seconds
|
||||
*
|
||||
* @var int
|
||||
*/
|
||||
public $timeout = 3600;
|
||||
|
||||
/**
|
||||
* Retries
|
||||
*
|
||||
* @var int
|
||||
*/
|
||||
public $retries = 3;
|
||||
|
||||
/**
|
||||
* Create a new job instance.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function __construct()
|
||||
{
|
||||
//
|
||||
}
|
||||
|
||||
/**
|
||||
* Execute the job.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function handle()
|
||||
{
|
||||
//Declare some variables
|
||||
$lookup = new LookupHelper;
|
||||
$esi = new Esi;
|
||||
$obss = array();
|
||||
|
||||
//Get the configuration for the main site
|
||||
$config = config('esi');
|
||||
|
||||
//Check for the esi scope
|
||||
if(!$esiHelper->HaveEsiScope($config['primary'], 'esi-industry.read_corporation_mining.v1') || !$esiHelper->HaveEsiScope($config['primary'], 'esi-universe.read_structures.v1')) {
|
||||
Log::critical('The primary character does not have the necessary scopes for FetchRentalMoonObservers.');
|
||||
return;
|
||||
}
|
||||
|
||||
//Get the refresh token for spatial forces
|
||||
$refreshToken = $esiHelper->GetRefreshToken($config['primary']);
|
||||
|
||||
//Get the character data from the lookup table if possible or esi
|
||||
$character = $lookup->GetCharacterInfo($config['primary']);
|
||||
|
||||
//Get the mining observers for spatial forces from esi
|
||||
try {
|
||||
$responses = $esi->invoke('get', '/corporation/{corporation_id}/mining/observers/', [
|
||||
'corporation_id' => $character->corporation_id,
|
||||
]);
|
||||
} catch(RequestFailedException $e) {
|
||||
Log::critical('RentalMoonObservers failed to get the moon observers for Spatial Forces.');
|
||||
}
|
||||
|
||||
//Run through the mining observers, and add them to the database as needed
|
||||
foreach($responses as $observer) {
|
||||
//Populate the array with the data, so we can do an insert or ignore after the foreach loop is completed.
|
||||
$obss[] = [
|
||||
'observer_id' => $observer->observer_id,
|
||||
'observer_type' => $observer->observer_type,
|
||||
'last_updated' => $esi->DecodeDate($observer->last_updated)
|
||||
];
|
||||
}
|
||||
|
||||
RentalMoonObserver::insertOrIgnore($obss);
|
||||
}
|
||||
}
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user