CHANGE_
4
.env
@ -1,2 +1,4 @@
|
||||
API_URL=https://venbait.in/nhance/dev/employeeRest/
|
||||
TICKET_API_URL=https://venbait.in/nhance/helpdesk/dev/api/
|
||||
TICKET_API_URL=https://venbait.in/nhance/helpdesk/dev/api/
|
||||
BASE_HREF=/nhance/employee/dev/
|
||||
ENV=development
|
||||
@ -1,2 +1,4 @@
|
||||
API_URL=https://venbait.in/nhance/dev/employeeRest/
|
||||
TICKET_API_URL=https://venbait.in/nhance/helpdesk/dev/api/
|
||||
TICKET_API_URL=https://venbait.in/nhance/helpdesk/dev/api/
|
||||
BASE_HREF=/nhance/employee/dev/
|
||||
ENV=development
|
||||
@ -1,2 +1,4 @@
|
||||
API_URL=https://venbait.in/nhance/dev/employeeRest/
|
||||
TICKET_API_URL=https://venbait.in/nhance/helpdesk/dev/api/
|
||||
API_URL=https://venbait.in/nhance/uat/employeeRest/
|
||||
TICKET_API_URL=https://venbait.in/nhance/helpdesk/uat/api/
|
||||
BASE_HREF=/nhance/employee/uat/
|
||||
ENV=production
|
||||
4
.env.test
Normal file
@ -0,0 +1,4 @@
|
||||
API_URL=https://venbait.in/nhance/test/employeeRest/
|
||||
TICKET_API_URL=https://venbait.in/nhance/helpdesk/test/api/
|
||||
BASE_HREF=/nhance/employee/test/
|
||||
ENV=test
|
||||
6
assets/ECard.svg
Normal file
@ -0,0 +1,6 @@
|
||||
<svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="M1.4 3.12012H18.6L19.04 3.28012L19.4 3.48012L19.48 3.64012L19.64 3.72012L19.88 4.08012L20 4.52012V15.4801L19.88 15.9201L19.6 16.3201L19.28 16.6001L18.76 16.8401L18.6 16.8801H1.4L0.96 16.7201L0.6 16.5201L0.52 16.3601L0.36 16.2801L0.08 15.8401L0 15.4801V4.52012L0.12 4.08012L0.4 3.68012L0.64 3.44012L1.24 3.16012L1.4 3.12012ZM1.8 4.40012L1.52 4.48012L1.36 4.64012L1.28 4.92012V15.0801L1.36 15.3201L1.56 15.5201L1.8 15.6001H18.2L18.48 15.5201L18.64 15.3601L18.72 15.0801V4.92012L18.64 4.68012L18.44 4.48012L18.2 4.40012H1.8Z" fill="#E26728"/>
|
||||
<path d="M3.56001 6.24023H5.20001L5.60001 6.40023L6.04001 6.76023L6.24001 7.16023L6.28001 7.32023V8.92023L6.16001 9.28023L5.88001 9.64023L5.52001 9.92023L5.20001 10.0002H3.56001L3.20001 9.88023L2.96001 9.72023L2.68001 9.40023L2.52001 9.08023L2.48001 8.96023V7.28023L2.64001 6.88023L2.84001 6.68023L3.16001 6.40023L3.56001 6.24023ZM3.92001 7.52023L3.76001 7.68023V8.56023L3.92001 8.72023H4.84001L5.00001 8.56023V7.68023L4.84001 7.52023H3.92001Z" fill="#E26728"/>
|
||||
<path d="M15.64 6.64014H16L16.32 6.80014L16.4 6.96014L16.56 7.04014L17.04 7.84014L17.32 8.48014L17.48 9.12014L17.52 9.40014V10.6001L17.4 11.2401L17.2 11.8001L16.88 12.4401L16.56 12.9201L16.4 13.1201L16.32 13.2401L16 13.3601H15.68L15.36 13.2001L15.28 13.0401H15.2L15.16 12.9201V12.5201L15.32 12.2401L15.72 11.7201L16 11.1201L16.16 10.4801V9.52014L15.96 8.76014L15.68 8.24014L15.32 7.76014L15.16 7.48014V7.12014L15.36 6.76014L15.64 6.64014Z" fill="#E26728"/>
|
||||
<path d="M14.08 8.2002H14.52L14.76 8.3602L14.96 8.6002L15.2 9.1202L15.32 9.5602V10.4402L15.16 11.0002L14.88 11.5202L14.6 11.7602L14.52 11.8002H14.08L13.8 11.6402L13.6 11.3202V11.0402L13.72 10.7602L13.96 10.2802V9.7202L13.72 9.2402L13.6 8.9602L13.64 8.5602L13.88 8.2802L14.08 8.2002Z" fill="#E26728"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 1.8 KiB |
BIN
assets/Group.png
|
Before Width: | Height: | Size: 2.3 KiB |
8
assets/cashLess.svg
Normal file
@ -0,0 +1,8 @@
|
||||
<svg width="38" height="38" viewBox="0 0 38 38" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="M5.61597 4.64258H19.319L20.0678 4.9421L20.592 5.39138L20.9664 5.99042L21.1161 6.4397V31.0752L20.7417 31.824L20.4422 32.1984L19.7683 32.6477L19.319 32.7975H5.61597L4.71741 32.3482L4.11837 31.6743L3.81885 30.9255V6.4397L4.26813 5.54114L4.79229 5.01698L5.39133 4.71746L5.61597 4.64258ZM6.06525 6.28994L5.61597 6.66434L5.54109 6.88898V30.5511L5.76573 30.9255L6.06525 31.1501H18.8697L19.2441 30.9255L19.3939 30.6259V6.8141L19.1692 6.4397L18.8697 6.28994H17.2224L17.1475 7.41314L16.9228 7.9373L16.5484 8.3117L16.174 8.53634L15.8745 8.61122H9.06045L8.46141 8.38658L7.93725 7.78754L7.78749 7.33826L7.71261 6.28994H6.06525ZM9.35997 6.28994V6.96386H15.575V6.28994H9.35997Z" fill="#F2AE30"/>
|
||||
<path d="M11.7562 13.179H13.1789L14.4519 13.4785L14.8263 13.8529L14.9011 13.9278V14.6766L14.5267 15.1258L14.3021 15.2007H13.7779L12.8045 14.9761H12.0557L11.1571 15.2007L10.3335 15.5751L9.58467 16.249L9.28515 16.6234L8.83587 17.8215L8.76099 18.1959V19.2442L9.06051 20.2926L9.43491 21.0414L10.1837 21.7902L10.8576 22.0897L11.6813 22.3892L12.1306 22.4641H12.8794L13.7779 22.2394L14.6016 21.865L15.2755 21.3409L15.7248 20.7418L16.1741 19.394L16.3239 18.3457L16.6983 17.9713L16.848 17.8964H17.5219L17.8963 18.1959L18.0461 18.4954V19.2442L17.8215 20.3674L17.4471 21.266L17.2224 21.7153H17.0727L16.9229 22.0897L16.249 22.8385L15.1258 23.6622L14.2272 24.0366L13.1789 24.2612H11.7562L10.5581 23.9617L9.50979 23.4375L8.76099 22.8385L8.16195 22.2394L7.48803 21.266L7.11363 20.2926L6.96387 19.6186V17.8215L7.26339 16.6983L7.71267 15.7998L8.31171 15.051L9.06051 14.3022L9.95907 13.7031L11.0074 13.3287L11.7562 13.179Z" fill="#F2AE30"/>
|
||||
<path d="M27.0317 8.46143L27.7056 8.53631L28.9786 9.43487L29.353 9.65951L30.1018 10.3334L30.8506 11.0822L31.5245 12.0557L31.824 12.5049V12.6547H31.9738L32.5728 13.7779L33.097 15.1257L33.3965 16.1741L33.6211 17.7465V19.7683L33.3216 21.5654L32.7975 23.1379L32.1984 24.336L31.9738 24.7853H31.824L31.6743 25.1597L31.1501 25.9085L30.6259 26.5824L29.6525 27.5558L29.2032 27.9302L28.6791 28.2297L27.7805 28.8288L27.2563 28.9037L26.8819 28.7539L26.5824 28.4544L26.5075 27.8553L26.7322 27.4061L27.7805 26.7321L28.5293 26.0582L29.0535 25.6089L29.4279 25.1597L29.8023 24.7853L30.3264 24.0365L31.0003 22.8384L31.2999 22.0896L31.6743 20.592L31.824 19.4688V17.9712L31.5994 16.4736L31.225 15.1257L30.6259 13.9277L30.0269 12.9542L29.6525 12.4301L29.2781 12.0557L28.6791 11.4566L28.08 10.9325L27.1066 10.2585L26.6573 9.95903L26.4327 9.65951L26.3578 9.21023L26.5075 8.83583L26.8071 8.53631L27.0317 8.46143Z" fill="#F2AE30"/>
|
||||
<path d="M25.3095 11.6814H26.1331L26.8819 12.2804L27.5559 12.9544L27.9303 13.3288L28.7539 14.6766L29.1283 15.5003L29.4279 16.324L29.6525 17.3723L29.7274 18.0462V19.394L29.5027 20.8168L29.1283 21.94L28.5293 23.138L28.0051 23.9617L27.3312 24.7854L26.7322 25.3096L26.1331 25.7588H25.3095L25.0099 25.3844L24.9351 25.2347V24.6356L25.2346 24.1864L25.8336 23.6622L26.4327 23.0632L27.1815 21.94L27.6307 20.8916L27.9303 19.6187V17.8216L27.6307 16.5486L27.2563 15.65L26.5824 14.6017L25.9085 13.8529L25.3843 13.3288L25.0099 12.9544L24.9351 12.8046V12.2056L25.2346 11.7563L25.3095 11.6814Z" fill="#F2AE30"/>
|
||||
<path d="M16.7732 14.0024H17.522L17.9712 14.3768L18.0461 15.0508L17.8964 15.4252L17.522 15.7996L16.6983 16.6981L16.0244 17.5218L15.4253 18.1957L14.7514 19.0194L14.0775 19.7682L13.4036 20.5919L12.8045 21.116H12.1306L11.5316 20.5919L9.43492 18.4952L9.28516 17.8962L9.43492 17.4469L9.65956 17.1474L9.8842 17.0725H10.4084L10.8576 17.372L12.3552 18.8696H12.6548L12.8045 18.4952L13.4784 17.7464L14.1524 16.9228L14.9012 16.0991L15.4253 15.5L15.7248 15.2005L15.9495 14.8261L16.6234 14.0773L16.7732 14.0024Z" fill="#F2AE30"/>
|
||||
<path d="M23.063 14.8262H23.8118L24.4857 15.2755L24.8601 15.6499L25.3843 16.2489L25.8336 17.2223L26.0582 18.1209V19.319L25.8336 20.2175L25.2345 21.4156L24.7853 21.9398L23.9616 22.5388L23.6621 22.6886H23.063L22.6137 22.3891L22.464 22.0147L22.5389 21.4905L22.8384 21.1161L23.5123 20.6668L23.9616 20.0678L24.2611 19.319L24.336 18.4953L24.1113 17.6716L23.6621 16.9228L22.9133 16.3238L22.6137 16.0243L22.5389 15.4252L22.7635 15.0508L23.063 14.8262Z" fill="#F2AE30"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 4.1 KiB |
15
assets/claimTab.svg
Normal file
@ -0,0 +1,15 @@
|
||||
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<g clip-path="url(#clip0_945_1301)">
|
||||
<path d="M2.208 0H14.784L15.36 0.144L15.888 0.432L16.32 0.816L16.752 1.44L16.944 1.92L17.04 2.304V8.4L16.896 8.688L16.608 8.928L16.464 8.976H16.032L15.648 8.736L15.456 8.352L15.408 2.496L15.216 2.064L15.168 1.92L14.928 1.824L14.544 1.632L14.256 1.584H2.736L2.304 1.68L1.92 1.92L1.68 2.304L1.584 2.736V18.288L1.728 18.768L1.968 19.152L2.448 19.392L2.736 19.44L10.896 19.488L11.184 19.68L11.376 19.968V20.544L11.184 20.832L10.896 21.024H2.208L1.632 20.832L1.104 20.544L0.576 20.064L0.144 19.392L0 18.768V2.208L0.144 1.632L0.432 1.104L0.912 0.576L1.44 0.24L1.728 0.096L2.208 0Z" fill="black"/>
|
||||
<path d="M17.76 9.98389H18.24L19.104 10.2239L20.88 10.8479L22.8 11.5199L23.616 11.8079L23.952 12.0959L24 12.2399V17.3759L23.856 18.2879L23.52 19.1999L23.136 19.9199L22.752 20.4959L22.224 21.1679L21.696 21.6959L21.456 21.9359L20.976 22.3679L20.064 23.0399L19.392 23.4719L18.576 23.9039L18.288 23.9999H17.712L17.136 23.7599L16.272 23.2799L15.408 22.6559L14.88 22.2239L14.4 21.7919L14.112 21.5519L13.776 21.1679L13.2 20.4479L12.864 19.9199L12.384 19.0079L12.096 18.0959L12 17.3759V12.2399L12.144 11.9999L12.384 11.8079L14.448 11.0879L17.088 10.1759L17.76 9.98389ZM17.904 11.6159L17.232 11.8559L16.848 11.9519L14.592 12.7199L13.536 13.1039V16.5599L13.632 17.4719L13.92 18.4799L14.304 19.1999L14.688 19.7279L14.976 20.1119L15.36 20.4479L15.792 20.8799H15.888L15.984 21.0719L16.752 21.6479L17.616 22.1759L17.904 22.3199L18.192 22.2719L18.96 21.8399L19.632 21.3599L20.112 20.9759V20.8799L20.304 20.7839L20.928 20.1599L21.168 19.9199L21.6 19.3439L22.032 18.5759L22.32 17.6639L22.416 17.1839L22.464 16.5119V13.1039L20.544 12.4319L19.056 11.9039L18.624 11.8079L18.096 11.6159H17.904Z" fill="black"/>
|
||||
<path d="M3.55201 7.96777H13.44L13.824 8.15977L13.968 8.35177L14.016 8.49577V8.97577L13.872 9.31177L13.632 9.50377L13.488 9.55177H3.50401L3.16801 9.35977L2.97601 9.02377V8.44777L3.16801 8.15977L3.55201 7.96777Z" fill="black"/>
|
||||
<path d="M20.544 13.9678H20.928L21.36 14.1598L21.552 14.4958V14.9758L21.408 15.2638L20.928 15.8878L20.256 16.7518L19.968 17.1358L19.824 17.3758L19.392 17.9518L18.72 18.8158L18.288 19.3918L18 19.5358H17.472L17.184 19.3438L16.128 18.2878L15.84 17.9518L15.456 17.6158L15.072 17.2318L14.976 17.0398V16.4638L15.168 16.1278L15.504 15.9838H15.984L16.368 16.1758L17.664 17.4718L18.048 16.9918L18.288 16.6078H18.384L18.48 16.3678L18.96 15.7918L19.488 15.0718L20.064 14.3038L20.304 14.0638L20.544 13.9678Z" fill="black"/>
|
||||
<path d="M3.45601 12H9.55201L9.84001 12.192L9.98401 12.384L10.032 12.576V12.912L9.88801 13.296L9.55201 13.536H3.45601L3.16801 13.344L2.97601 13.056V12.432L3.16801 12.144L3.45601 12Z" fill="black"/>
|
||||
<path d="M3.50401 3.98389H8.49601L8.88001 4.17589L9.02401 4.46389V5.03989L8.83201 5.32789L8.59201 5.51989L8.40001 5.56789H3.60001L3.26401 5.42389L3.02401 5.13589L2.97601 5.03989V4.46389L3.16801 4.12789L3.50401 3.98389Z" fill="black"/>
|
||||
</g>
|
||||
<defs>
|
||||
<clipPath id="clip0_945_1301">
|
||||
<rect width="24" height="24" fill="white"/>
|
||||
</clipPath>
|
||||
</defs>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 3.0 KiB |
11
assets/cliamHistory.svg
Normal file
@ -0,0 +1,11 @@
|
||||
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<g clip-path="url(#clip0_945_1265)">
|
||||
<path d="M20.4 0H20.784L20.832 0.048V0.672L20.544 2.592L20.208 4.416L19.968 5.568L19.824 6.384L19.44 7.92L19.488 8.256L19.92 8.592L20.16 8.832L20.928 9.456L21.84 10.08L22.848 10.704L23.904 11.28L24 11.424V11.904L23.808 12.336L23.328 12.864L22.944 13.2L22.272 13.68L21.744 13.968L20.784 14.352L19.824 14.592L19.056 14.688L17.808 14.736L16.56 14.688L13.488 14.4L12.816 14.352H10.56L9.60001 14.496L8.68801 14.736L7.96801 15.024L7.15201 15.504L6.57601 15.936L6.19201 16.272L6.04801 16.32L5.18401 13.344L4.46401 10.8L4.12801 9.648L3.98401 8.976L3.12001 5.904L2.64001 4.32V4.128L3.02401 3.792L3.69601 3.264L4.36801 2.832L5.32801 2.448L6.28801 2.208L6.96001 2.112H9.74401L12.816 2.4L13.488 2.448H15.456L16.512 2.304L17.568 2.064L18.048 1.872L18.96 1.344L19.632 0.816L20.256 0.192L20.4 0Z" fill="#2CCEFE"/>
|
||||
<path d="M0.864 4.03223H1.248L1.68 4.17623L1.92 4.36823L2.208 5.23223L2.976 7.96823L3.744 10.6082L3.888 11.1362L4.032 11.8082L4.608 13.8242L5.184 15.8402L5.76 17.8562L6.048 19.0082L6.912 22.0322L7.152 22.8482V23.2802L7.008 23.6162L6.672 23.9042L6.192 24.0002H5.52L5.232 23.8562L4.992 23.3762L4.272 20.8322L3.984 19.6802L2.928 15.9842L2.16 13.2962L1.872 12.0962L1.104 9.45623L0.144 6.04823L0 5.42423V4.75223L0.192 4.36823L0.432 4.12823L0.864 4.03223Z" fill="#2CCEFE"/>
|
||||
</g>
|
||||
<defs>
|
||||
<clipPath id="clip0_945_1265">
|
||||
<rect width="24" height="24" fill="white"/>
|
||||
</clipPath>
|
||||
</defs>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 1.5 KiB |
8
assets/contactUs.svg
Normal file
@ -0,0 +1,8 @@
|
||||
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="M7.824 2.97607H22.176L22.8 3.16807L23.28 3.50407L23.664 3.88807L23.904 4.32007L24 4.70407V5.71207L23.856 6.24007L23.52 6.72007L23.184 7.05607L22.512 7.39207L22.128 7.48807H7.92L7.392 7.34407L6.912 7.10407L6.528 6.76807L6.192 6.28807L6.048 5.80807L6 5.56807V4.89607L6.144 4.27207L6.48 3.74407L6.912 3.36007L7.488 3.07207L7.824 2.97607ZM8.016 4.46407L7.632 4.75207L7.488 5.08807L7.536 5.52007L7.728 5.80807L8.064 6.00007H21.984L22.128 5.95207V5.85607L22.32 5.76007L22.512 5.47207V4.99207L22.32 4.70407L22.032 4.46407H8.016Z" fill="#FFC208"/>
|
||||
<path d="M7.92 16.512H22.128L22.752 16.704L23.232 16.992L23.616 17.376L23.904 17.856L24 18.288V19.248L23.856 19.776L23.52 20.256L23.184 20.592L22.704 20.88L22.176 21.024H7.824L7.248 20.832L6.72 20.496L6.336 20.064L6.096 19.632L6 19.104V18.432L6.144 17.808L6.48 17.28L6.912 16.896L7.488 16.608L7.92 16.512ZM8.064 18L7.728 18.192L7.536 18.48L7.488 18.912L7.68 19.296L8.016 19.536H21.984L22.224 19.392L22.464 19.104L22.512 19.008V18.528L22.32 18.24L22.128 18.048L21.984 18H8.064Z" fill="#FFC208"/>
|
||||
<path d="M8.112 9.7439H21.888L22.464 9.8399L22.896 10.0319L23.28 10.2239L23.664 10.6559L23.904 11.0879L24 11.5199V12.4799L23.856 13.0079L23.52 13.5359L23.088 13.9199L22.272 14.2079L21.888 14.2559H8.112L7.536 14.1599L6.912 13.8719L6.528 13.5359L6.24 13.1519L6.096 12.8639L6 12.3359V11.6639L6.144 11.0399L6.432 10.5599L6.816 10.1759L7.536 9.8399L8.112 9.7439ZM8.16 11.2319L7.776 11.3759L7.584 11.6159L7.488 11.8559V12.1919L7.632 12.4319L7.968 12.7199L8.16 12.7679H21.888L22.224 12.6239L22.368 12.5279L22.512 12.1919V11.7599L22.272 11.4239L22.08 11.2799L21.888 11.2319H8.16Z" fill="#FFC208"/>
|
||||
<path d="M1.824 2.97607H2.592L3.216 3.16807L3.648 3.45607L3.888 3.64807L4.128 4.03207V4.12807H4.224L4.416 4.70407L4.464 4.94407V5.47207L4.32 6.04807L4.032 6.57607L3.6 7.05607L2.928 7.39207L2.544 7.48807H1.872L1.248 7.29607L0.768 7.00807L0.384 6.62407L0.096 6.14407L0 5.71207V4.70407L0.144 4.22407L0.432 3.79207L0.816 3.40807L1.296 3.12007L1.824 2.97607ZM1.968 4.46407L1.584 4.80007L1.488 4.99207V5.47207L1.68 5.76007L2.016 6.00007H2.352L2.64 5.85607L2.928 5.52007L2.976 5.13607L2.832 4.80007L2.592 4.56007L2.4 4.46407H1.968Z" fill="#FFC208"/>
|
||||
<path d="M1.872 16.512H2.544L3.072 16.656L3.456 16.848L3.888 17.232L4.224 17.76L4.416 18.24L4.464 18.528V19.056L4.32 19.632L4.032 20.112L3.792 20.448L3.312 20.784L2.832 20.976L2.592 21.024H1.824L1.2 20.832L0.72 20.496L0.384 20.16L0.096 19.68L0 19.248V18.288L0.144 17.76L0.48 17.28L0.816 16.944L1.488 16.608L1.872 16.512ZM2.016 18L1.728 18.192L1.536 18.432L1.488 18.528V19.008L1.68 19.296L1.92 19.488L2.016 19.536H2.4L2.736 19.344L2.928 19.056L2.976 18.672L2.832 18.336L2.496 18.048L2.352 18H2.016Z" fill="#FFC208"/>
|
||||
<path d="M2.112 9.7439L2.736 9.7919L3.36 10.0319L3.888 10.4159L4.272 11.0399L4.416 11.4719L4.464 11.7599V12.2399L4.32 12.8159L4.08 13.2959L3.648 13.7759L3.504 13.9199L2.736 14.2079L2.112 14.2559L1.536 14.1599L0.912 13.9199L0.48 13.5359L0.144 13.0079L0 12.4799V11.5199L0.144 10.9919L0.48 10.4639L0.864 10.1279L1.536 9.8399L2.112 9.7439ZM2.112 11.2319L1.776 11.3759L1.632 11.4719L1.488 11.7599V12.2399L1.728 12.5759L1.92 12.7199L2.256 12.7679L2.64 12.6239L2.88 12.3359L2.976 12.0959L2.928 11.7599L2.736 11.4719L2.448 11.2799L2.112 11.2319Z" fill="#FFC208"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 3.3 KiB |
6
assets/fileClaims.svg
Normal file
@ -0,0 +1,6 @@
|
||||
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="M4.89597 0H14.544L15.168 0.144L15.36 0.24V0.336L15.648 0.432L15.888 0.624L16.224 1.008L16.992 1.728L17.328 2.064L17.856 2.496L18.192 2.88L18.576 3.216L19.104 3.744L19.488 4.08L19.92 4.464V4.56L20.112 4.656L20.592 5.136L20.928 5.664L21.168 6.336V21.936L20.976 22.512L20.64 23.088L20.208 23.52L19.584 23.904L19.056 24H4.94397L4.36797 23.856L3.88797 23.568L3.40797 23.136L3.07197 22.608L2.87997 22.128L2.83197 21.936V2.064L3.02397 1.488L3.35997 0.912L3.79197 0.48L4.41597 0.096L4.89597 0ZM5.42397 1.44L4.99197 1.536L4.60797 1.824L4.41597 2.016L4.31997 2.256L4.27197 2.592V21.408L4.36797 21.84L4.51197 22.128L4.89597 22.416L5.13597 22.512L5.42397 22.56H18.528L19.008 22.464L19.392 22.176L19.584 21.936L19.68 21.744L19.728 21.408V7.056L15.072 7.008L14.592 6.816L14.208 6.528L13.92 5.952L13.872 5.808L13.824 1.44H5.42397ZM15.264 2.208V5.376L15.36 5.568L15.504 5.616H18.816L18.528 5.28L17.424 4.176L16.896 3.744L16.416 3.264L16.176 3.072L15.84 2.688L15.312 2.208H15.264Z" fill="#2DCCF6"/>
|
||||
<path d="M6.384 13.104H17.328L17.712 13.44L17.76 13.584V14.064L17.616 14.304L17.424 14.496L17.28 14.544H6.432L6.192 14.4L6 14.112V13.536L6.192 13.248L6.384 13.104Z" fill="#2DCCF6"/>
|
||||
<path d="M6.384 9.36011H17.328L17.712 9.69611L17.76 9.84011V10.3201L17.616 10.5601L17.424 10.7521L17.28 10.8001H6.432L6.192 10.6561L6 10.3681V9.79211L6.192 9.50411L6.384 9.36011Z" fill="#2DCCF6"/>
|
||||
<path d="M6.384 16.8479H10.368L10.656 17.0399L10.848 17.3279V17.8079L10.656 18.0959L10.368 18.2879H6.432L6.192 18.1439L6 17.8559V17.2799L6.192 16.9919L6.384 16.8479Z" fill="#2DCCF6"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 1.6 KiB |
15
assets/fileaclaims.svg
Normal file
@ -0,0 +1,15 @@
|
||||
<svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<g clip-path="url(#clip0_945_1208)">
|
||||
<path d="M1.84 0H12.32L12.8 0.12L13.24 0.36L13.6 0.68L13.96 1.2L14.12 1.6L14.2 1.92V7L14.08 7.24L13.84 7.44L13.72 7.48H13.36L13.04 7.28L12.88 6.96L12.84 2.08L12.68 1.72L12.64 1.6L12.44 1.52L12.12 1.36L11.88 1.32H2.28L1.92 1.4L1.6 1.6L1.4 1.92L1.32 2.28V15.24L1.44 15.64L1.64 15.96L2.04 16.16L2.28 16.2L9.08 16.24L9.32 16.4L9.48 16.64V17.12L9.32 17.36L9.08 17.52H1.84L1.36 17.36L0.92 17.12L0.48 16.72L0.12 16.16L0 15.64V1.84L0.12 1.36L0.36 0.92L0.76 0.48L1.2 0.2L1.44 0.08L1.84 0Z" fill="#E26728"/>
|
||||
<path d="M14.8 8.31982H15.2L15.92 8.51982L17.4 9.03982L19 9.59982L19.68 9.83982L19.96 10.0798L20 10.1998V14.4798L19.88 15.2398L19.6 15.9998L19.28 16.5998L18.96 17.0798L18.52 17.6398L18.08 18.0798L17.88 18.2798L17.48 18.6398L16.72 19.1998L16.16 19.5598L15.48 19.9198L15.24 19.9998H14.76L14.28 19.7998L13.56 19.3998L12.84 18.8798L12.4 18.5198L12 18.1598L11.76 17.9598L11.48 17.6398L11 17.0398L10.72 16.5998L10.32 15.8398L10.08 15.0798L10 14.4798V10.1998L10.12 9.99982L10.32 9.83982L12.04 9.23982L14.24 8.47982L14.8 8.31982ZM14.92 9.67982L14.36 9.87982L14.04 9.95982L12.16 10.5998L11.28 10.9198V13.7998L11.36 14.5598L11.6 15.3998L11.92 15.9998L12.24 16.4398L12.48 16.7598L12.8 17.0398L13.16 17.3998H13.24L13.32 17.5598L13.96 18.0398L14.68 18.4798L14.92 18.5998L15.16 18.5598L15.8 18.1998L16.36 17.7998L16.76 17.4798V17.3998L16.92 17.3198L17.44 16.7998L17.64 16.5998L18 16.1198L18.36 15.4798L18.6 14.7198L18.68 14.3198L18.72 13.7598V10.9198L17.12 10.3598L15.88 9.91982L15.52 9.83982L15.08 9.67982H14.92Z" fill="#E26728"/>
|
||||
<path d="M2.95998 6.64014H11.2L11.52 6.80014L11.64 6.96014L11.68 7.08014V7.48014L11.56 7.76014L11.36 7.92014L11.24 7.96014H2.91998L2.63998 7.80014L2.47998 7.52014V7.04014L2.63998 6.80014L2.95998 6.64014Z" fill="#E26728"/>
|
||||
<path d="M17.12 11.6401H17.44L17.8 11.8001L17.96 12.0801V12.4801L17.84 12.7201L17.44 13.2401L16.88 13.9601L16.64 14.2801L16.52 14.4801L16.16 14.9601L15.6 15.6801L15.24 16.1601L15 16.2801H14.56L14.32 16.1201L13.44 15.2401L13.2 14.9601L12.88 14.6801L12.56 14.3601L12.48 14.2001V13.7201L12.64 13.4401L12.92 13.3201H13.32L13.64 13.4801L14.72 14.5601L15.04 14.1601L15.24 13.8401H15.32L15.4 13.6401L15.8 13.1601L16.24 12.5601L16.72 11.9201L16.92 11.7201L17.12 11.6401Z" fill="#E26728"/>
|
||||
<path d="M2.87998 10H7.95998L8.19998 10.16L8.31998 10.32L8.35998 10.48V10.76L8.23998 11.08L7.95998 11.28H2.87998L2.63998 11.12L2.47998 10.88V10.36L2.63998 10.12L2.87998 10Z" fill="#E26728"/>
|
||||
<path d="M2.91998 3.31982H7.07998L7.39998 3.47982L7.51998 3.71982V4.19982L7.35998 4.43982L7.15998 4.59982L6.99998 4.63982H2.99998L2.71998 4.51982L2.51998 4.27982L2.47998 4.19982V3.71982L2.63998 3.43982L2.91998 3.31982Z" fill="#E26728"/>
|
||||
</g>
|
||||
<defs>
|
||||
<clipPath id="clip0_945_1208">
|
||||
<rect width="20" height="20" fill="white"/>
|
||||
</clipPath>
|
||||
</defs>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 2.8 KiB |
6
assets/general.svg
Normal file
@ -0,0 +1,6 @@
|
||||
<svg width="40" height="40" viewBox="0 0 40 40" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="M11.44 0H12.24L13.2 0.8L13.76 1.44L15.04 2.72L16.72 2.16L18.8 1.36L19.92 1.12H21.6L23.04 1.44L25.76 2.72L27.04 3.44L28.16 4L29.12 4.56L30.08 4.88L30.72 5.04L30.8 4.4L31.12 4.08L31.36 4H33.68V3.2L33.92 2.8L34.4 2.56H39.36L39.76 2.72L40 3.04V13.68L39.6 14.08L32.08 14.16L31.44 14.96L30.64 15.76L29.52 16.48L28.48 16.88L27.68 17.04L26.48 17.12L23.76 19.84L23.28 20.24L22.72 20.88L20.4 23.2L19.92 23.6L19.36 24.24L18.48 25.12L18.24 25.2H17.68L17.28 24.96L16.08 23.68L14.8 22.48L13.52 21.2L12.96 20.56L12.32 19.92L11.68 19.36L10.16 17.84L9.59999 17.2L8.95999 16.56L8.31999 16L6.87999 14.56L6.31999 13.92L5.67999 13.28L5.03999 12.72L3.51999 11.2L2.95999 10.56L2.31999 9.92L2.23999 9.76L2.31999 9.04L3.43999 7.92L3.99999 7.28L5.27999 6.08L6.79999 4.56L7.35999 3.92L8.63999 2.72L10.08 1.28L10.48 0.88L11.12 0.16L11.44 0ZM11.76 2.08L10.72 3.12L10.24 3.52L10.32 3.76L11.36 4.08H12.24L13.28 3.76L13.44 3.68V3.52L12.8 2.96L11.92 2.08H11.76ZM20.08 2.88L18.56 3.28L16.4 4.08L16.88 4.64L19.2 6.96L23.2 8.24L25.04 8.88L25.28 9.28V9.84L24.88 10.24L24.32 10.32L22.8 9.84L21.84 9.6L18.64 8.56L17.12 8.08H16.56L16.08 8.32L15.68 8.72L15.44 9.2V9.92L15.84 10.64L16.64 11.12L21.76 12.88L23.12 13.36L23.68 14L24.32 14.56L25.28 15.04L26.56 15.36H27.44L28.48 15.04L29.28 14.56L30.08 13.84L30.72 13.04V6.72L29.52 6.48L28.72 6.32L27.44 5.68L26.4 5.04L24.08 3.84L22.8 3.2L21.44 2.88H20.08ZM35.44 4.24V12.48H38.4V4.24H35.44ZM8.87999 4.96L7.43999 6.4L7.19999 6.64L7.67999 7.44L7.91999 8.16L8.07999 9.28L7.99999 10.4L7.67999 11.52L7.19999 12.4L8.31999 13.52L8.95999 14.08L9.75999 14.88L10.32 15.52L11.68 16.88L12.32 17.44L13.12 18.24L13.68 18.88L14.96 20.16L15.44 20.08L16.24 19.68L17.2 19.44H18.72L19.68 19.68L20.64 20.16L21.04 20.08L22.56 18.56L22 17.44L21.76 16.48V14.64L19.52 13.84L19.2 13.92L18.8 14.88L18.16 15.68L17.44 16.32L16.08 16.88L15.68 16.96H14.08L13.04 16.64L12.24 16.24L11.44 15.52L10.96 14.8L10.56 13.92L10.4 13.12V12L10.64 11.04L10.96 10.24L11.68 9.36L12.56 8.72L13.2 8.4L14 8.08L14.56 7.36L14.96 6.96L16.24 6.48L15.76 5.92L14.8 4.96L14.48 5.04L13.2 5.6L12.4 5.76H11.28L10.16 5.52L9.03999 4.96H8.87999ZM32.48 5.76V12.48H33.68V5.76H32.48ZM5.91999 7.92L4.39999 9.44L4.55999 9.76L5.83999 10.96H6.07999L6.39999 10.16L6.47999 9.28L6.23999 8.32L6.07999 7.92H5.91999ZM13.6 10L13.2 10.24L12.64 10.88L12.16 11.84L12.08 12.16V12.96L12.32 13.76L12.88 14.48L13.52 15.04L14.32 15.36H15.44L16.24 15.04L16.72 14.72L16.88 14.4L17.2 14.24L17.6 13.36V13.2L15.68 12.56L14.88 12L14.48 11.6L14 10.88L13.68 10H13.6ZM23.36 16L23.44 16.64L23.76 17.28L24.32 16.8L24.48 16.56L23.36 16ZM17.44 21.04L16.64 21.28L16.4 21.52L16.96 22.16L17.92 23.12L18.48 22.64L19.6 21.52L19.28 21.28L18.56 21.04H17.44Z" fill="#038C3E"/>
|
||||
<path d="M12.8 24.0801L14.48 24.2401L15.68 24.6401L16.48 25.0401V25.2001L16.88 25.3601L17.6 26.0001L17.92 26.4001L19.04 26.8001L20.4 27.2001L23.84 28.4001L24.8 28.8801L25.6 29.6001L26.08 30.3201V30.5601L27.44 30.1601L28.32 30.0001L32 28.9601L32.4 28.8801H33.68L34.64 29.2001L35.36 29.7601L35.84 30.4001L36.16 31.0401L36.24 31.2801V32.7201L35.84 33.6801L34.96 34.6401L34.08 35.2001L31.68 36.0801L30.56 36.4801L29.52 36.8001L26.24 38.0001L23.36 39.0401L21.28 39.8401L20.24 40.0001H18.24L16.96 39.7601L15.04 38.8801L13.36 38.0001L11.52 36.9601L10.8 36.5601L9.28 36.2401L9.2 36.7201L8.8 37.1201H6.32V38.0001L6.08 38.4001L5.68 38.6401H0.48L0.16 38.4801L0 38.1601V27.5201L0.32 27.1201L0.48 27.0401L7.92 26.9601L8.16 26.8801L8.32 26.5601L9.04 25.7601L9.84 25.1201L10.72 24.5601L11.6 24.2401L12.8 24.0801ZM12.72 25.8401L11.76 26.0801L10.64 26.6401L9.84 27.3601L9.28 28.2401V34.4801L10.72 34.7201L11.76 35.1201L13.2 35.9201L14.56 36.7201L15.68 37.2001L16.96 37.8401L17.76 38.1601L18.4 38.3201H20.08L21.52 37.8401L23.92 36.9601L24.96 36.6401L26.96 35.9201L30 34.8001L33.52 33.5201L34.24 32.8801L34.48 32.4001V31.6801L34.16 31.0401L33.76 30.7201L33.44 30.5601H32.64L30 31.2801L28.08 31.8401L26.32 32.3201L26 33.0401L25.36 33.9201L24.64 34.4001L23.76 34.7201H22.56L21.2 34.3201L17.76 33.2001L16.8 32.9601L15.12 32.4001L14.8 32.1601L14.72 31.9201V31.3601L14.88 31.0401L15.12 30.8801H15.92L18.32 31.6801L22.32 32.9601L22.8 33.1201H23.52L24.24 32.6401L24.56 32.0001V31.2801L24.16 30.6401L23.6 30.1601L22.8 29.8401L22.16 29.6801L17.68 28.1601L16.88 27.8401L16.24 27.0401L15.52 26.4801L14.16 26.0001L13.12 25.8401H12.72ZM1.6 28.8001V36.8801H4.56V28.8001H1.6ZM6.32 28.8001V35.4401H7.52V28.8001H6.32Z" fill="#038C3E"/>
|
||||
<path d="M12.56 29.9199L13.2 29.9999V30.1599L13.44 30.2399L13.52 30.3999V31.1199L13.12 31.5999H12.32L11.92 31.1999L11.84 30.4799L12 30.1599L12.56 29.9199Z" fill="#038C3E"/>
|
||||
<path d="M26.96 9.6001H27.6L28.08 10.0001L28.16 10.1601L28.08 10.8801L27.76 11.2001L27.52 11.2801H26.96L26.56 10.8801L26.48 10.8001V10.0801L26.88 9.6801L26.96 9.6001Z" fill="#038C3E"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 4.7 KiB |
3
assets/helpTab.svg
Normal file
@ -0,0 +1,3 @@
|
||||
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="M11.088 0H12.912L13.92 0.144L14.592 0.336L15.36 0.624L16.176 1.056L16.752 1.44L17.376 1.92L17.808 2.304L18 2.496L18.336 2.88L18.912 3.648L19.248 4.176L19.632 4.944L19.92 5.712L20.064 6.384L20.208 7.248L20.256 8.16L20.688 8.208L21.264 8.448L21.696 8.736L22.032 9.12L22.368 9.792L22.512 10.32V15.744L22.32 16.464L21.984 17.04L21.744 17.328L21.312 17.616L20.784 17.856L20.592 17.904H20.256L20.16 18.96L19.872 20.208L19.536 20.88L19.056 21.504L18.624 21.888L18.144 22.128L17.568 22.416L16.704 22.656L15.84 22.8L15.264 22.848H14.688V23.376L14.496 23.76L14.304 23.904L14.064 24H10.56L10.272 23.856L10.032 23.568L9.93598 23.28V21.408L10.128 20.928L10.464 20.688L10.608 20.64H13.968L14.352 20.832L14.592 21.12L14.688 21.36V21.888L14.88 21.84L15.936 21.744L16.992 21.504L17.76 21.168L18.048 20.976L18.384 20.592L18.816 19.92L19.056 19.2L19.2 18.336L19.248 17.952H18.384L18.096 17.856L17.952 17.616V8.448L18.192 8.16L18.336 8.112H19.248L19.104 6.864L18.864 5.952L18.48 5.04L18.144 4.416L17.952 4.032L17.472 3.504L17.136 3.12L16.752 2.736L16.128 2.256L15.696 1.968L14.784 1.536L13.824 1.2L13.104 1.056L12.096 0.96L11.184 1.008L10.368 1.152L9.59998 1.392L8.59198 1.824L7.96798 2.16L7.58398 2.496L7.10398 2.88L6.57598 3.408L6.14398 3.936L5.95198 4.176L5.80798 4.512L5.37598 5.328L5.03998 6.288L4.89598 6.864L4.75198 8.112H5.66398L5.90398 8.256L6.04798 8.448V17.616L5.90398 17.856L5.71198 17.952H3.98398L3.21598 17.856L2.63998 17.616L2.15998 17.232L1.72798 16.56L1.53598 15.984L1.48798 15.744V10.32L1.72798 9.552L2.01598 9.072L2.35198 8.688L2.83198 8.4L3.31198 8.208L3.74398 8.16L3.79198 7.248L3.98398 6.192L4.07998 5.904L4.17598 5.472L4.46398 4.752L4.75198 4.176L5.23198 3.456L5.71198 2.832L6.38398 2.112L7.05598 1.584L7.67998 1.152L8.44798 0.72L9.11998 0.432L9.88798 0.192L10.272 0.096L11.088 0ZM3.88798 9.12L3.26398 9.312L2.83198 9.648L2.54398 10.08L2.44798 10.464V15.6L2.59198 16.08L2.92798 16.512L3.35998 16.8L3.88798 16.944H5.08798V9.12H3.88798ZM18.912 9.168V16.944H20.16L20.736 16.752L21.168 16.416L21.456 15.936L21.552 15.456V10.464L21.408 9.984L20.928 9.456L20.4 9.216L20.208 9.168H18.912ZM10.944 21.648V23.04H13.728V21.648H10.944Z" fill="black"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 2.2 KiB |
3
assets/homeTab.svg
Normal file
@ -0,0 +1,3 @@
|
||||
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="M11.664 1.00781H12.336L13.152 1.15181L13.872 1.43981L14.496 1.87181L15.072 2.30381L15.792 2.92781L16.176 3.26381L16.896 3.88781L17.376 4.22381L17.52 4.36781L17.904 4.65581L18.144 4.89581L18.624 5.32781L19.152 5.75981L19.776 6.28781L20.304 6.71981L20.928 7.24781L21.456 7.67981L22.08 8.20781L22.608 8.63981L23.28 9.21581L23.664 9.64781L23.904 10.1278L24 10.5598V11.5198L23.856 12.0958L23.568 12.5758L23.232 12.9598L22.704 13.2958L22.272 13.4878L22.08 13.5358H21.744V20.9278L21.552 21.5518L21.312 21.9358L20.88 22.4158L20.352 22.7518L19.824 22.9438L19.584 22.9918H13.968L13.92 16.7998L13.824 16.3198L13.584 15.8398L13.248 15.4558L12.768 15.1678L12.336 15.0238H11.616L11.088 15.2158L10.656 15.5518L10.272 16.0318L10.128 16.4158L10.08 16.7038L10.032 22.9918H4.464L3.888 22.8478L3.312 22.5598L2.784 22.0798L2.4 21.4558L2.256 20.9758V13.5358L1.776 13.4878L1.2 13.2478L0.672 12.8638L0.288 12.3838L0.096 11.9998L0 11.5678V10.5598L0.144 9.98381L0.48 9.45581L0.912 9.02381L1.44 8.59181L2.016 8.11181L2.544 7.67981L3.216 7.10381L3.744 6.67181L4.32 6.19181L4.368 6.09581L4.608 5.95181L5.232 5.42381L5.856 4.89581L6.192 4.60781L6.576 4.27181L7.2 3.79181L7.872 3.21581L8.256 2.87981L8.976 2.25581L9.504 1.87181L9.984 1.53581L10.56 1.24781L11.28 1.05581L11.664 1.00781ZM11.712 2.01581L10.944 2.20781L10.32 2.54381L9.888 2.87981L9.648 3.11981L8.976 3.69581L8.448 4.07981L7.92 4.51181L7.68 4.75181L6.96 5.37581L6.432 5.80781L6.144 5.99981L5.904 6.19181L5.664 6.43181L5.184 6.86381L4.656 7.29581L4.032 7.82381L3.552 8.20781L2.88 8.78381L2.352 9.21581L1.728 9.74381L1.248 10.1758L1.056 10.5598L1.008 10.7038V11.3758L1.2 11.8558L1.488 12.1918L2.064 12.4798L2.304 12.5278H3.264V20.4478L3.36 20.9758L3.552 21.3598L3.936 21.7438L4.32 21.9358L4.56 21.9838H9.024L9.072 16.5598L9.168 16.0798L9.408 15.5038L9.744 14.9758L10.128 14.5918L10.608 14.2558L10.8 14.1598L11.472 14.0158H12.528L13.296 14.2078L13.824 14.5438L14.256 14.9758L14.64 15.5998L14.88 16.3198L14.928 16.7038L14.976 21.9838H19.44L19.92 21.8398L20.4 21.4078L20.64 20.9758L20.688 20.7838V12.5278H21.696L22.176 12.3838L22.368 12.2878V12.1918L22.608 12.0958L22.896 11.6638L22.992 11.3758V10.7038L22.704 10.1278L22.128 9.59981L21.6 9.16781L20.928 8.59181L20.4 8.15981L19.776 7.63181L19.248 7.19981L18.624 6.67181L18.144 6.28781L17.904 6.04781L17.76 5.90381L17.52 5.75981L16.848 5.18381L16.32 4.75181L16.128 4.65581L16.032 4.46381L15.504 4.03181L14.928 3.59981L14.208 2.97581H14.112L14.016 2.78381L13.536 2.44781L13.056 2.20781L12.288 2.01581H11.712Z" fill="#E26728"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 2.6 KiB |
4
assets/needHelp.svg
Normal file
@ -0,0 +1,4 @@
|
||||
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="M11.28 3.02393H12.528L13.584 3.16793L14.4 3.40793L15.312 3.83993L15.84 4.22393L16.32 4.65593L16.704 5.08793L17.136 5.75993L17.376 6.28793L17.568 7.00793L17.616 7.34393V8.35193L17.472 9.11993L17.232 9.74393L16.8 10.4639L16.368 10.9919L15.696 11.7119L15.456 11.9519L14.88 12.4799L14.496 12.8159L14.16 13.1519L13.92 13.3919L13.68 13.6319L13.536 13.8719L13.2 14.5439L13.056 15.1199L12.96 16.0319L12.816 16.3679L12.624 16.5599L12.336 16.6559H11.328L10.992 16.5119L10.8 16.2719L10.752 16.1759V15.1679L10.896 14.3039L11.184 13.4879L11.568 12.8159L12.048 12.1919L13.008 11.2319L13.392 10.8959L13.968 10.3679L14.592 9.74393L14.928 9.26393L15.168 8.73593L15.264 8.20793V7.72793L15.072 6.95993L14.736 6.33593L14.208 5.75993L13.68 5.37593L13.056 5.08793L12.384 4.94393H11.472L10.704 5.13593L10.128 5.42393L9.696 5.75993L9.36 6.14393L8.976 6.81593L8.64 7.72793L8.352 8.06393L7.92 8.30393H7.248L6.768 8.06393L6.48 7.67993L6.384 7.43993V6.91193L6.624 6.19193L7.056 5.37593L7.536 4.75193L8.112 4.17593L8.784 3.74393L9.504 3.40793L10.512 3.11993L11.28 3.02393Z" fill="#9B85B4"/>
|
||||
<path d="M11.568 18.4321H12.24L12.72 18.6721L13.008 19.0081L13.152 19.3441L13.2 19.7281L13.104 20.2081L12.912 20.4961L12.528 20.8321L12.144 20.9761H11.664L11.184 20.7841L10.896 20.5441L10.656 20.1121L10.608 19.9201V19.4881L10.752 19.0561L11.136 18.6241L11.568 18.4321Z" fill="#9B85B4"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 1.4 KiB |
4
assets/policyCoverage.svg
Normal file
@ -0,0 +1,4 @@
|
||||
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="M10.992 0.0478516H13.008L13.776 0.0958516L15.072 0.383852L15.888 0.671852L16.752 1.05585L17.76 1.58385L17.904 1.67985V1.77585L18.144 1.87185L18.672 2.20785L19.296 2.73585L19.92 3.31185L20.304 3.79185L20.784 4.31985L21.456 5.32785L21.888 6.14385L22.368 7.34385L22.704 8.44785L22.896 9.55185L22.944 9.98385V11.1839L22.704 11.3759H22.416L22.032 11.0399L21.552 10.6559L20.832 10.3199L20.112 10.1759L19.392 10.2239L18.768 10.4159L18.24 10.7039L18 10.8959H17.904L17.808 11.0879L17.52 11.3279L17.424 11.3759H17.136L16.608 10.9439L16.032 10.5119L15.36 10.2719L14.784 10.1759L14.112 10.2239L13.392 10.4639L12.816 10.7999L12.24 11.3279L12.144 11.3759H11.856L11.472 11.0399L10.944 10.6559L10.368 10.3679L9.888 10.2239L9.216 10.1759L8.448 10.3199L7.968 10.5119L7.392 10.9439L6.864 11.3759H6.576L6.288 11.1839L6.096 10.9919V10.8959L5.904 10.7999L5.232 10.4159L4.56 10.2239L3.888 10.1759L3.168 10.3199L2.4 10.7039L1.968 11.0399L1.584 11.3759H1.296L1.056 11.1839V9.98385L1.248 8.68785L1.488 7.77585L1.824 6.81585L2.352 5.66385L2.784 4.94385L3.264 4.27185L3.84 3.64785L4.272 3.11985L4.896 2.54385L5.472 2.11185L6 1.77585H6.096V1.67985L6.864 1.24785L7.872 0.767852L8.784 0.431852L9.984 0.143852L10.224 0.0958516L10.992 0.0478516ZM12.384 0.815852V10.0799L12.624 9.98385L13.296 9.64785L14.016 9.45585L14.4 9.40785H14.832L15.744 9.55185L16.512 9.88785L16.848 10.0799V9.45585L16.704 8.11185L16.416 6.62385L16.176 5.71185L16.032 5.13585L15.6 4.07985L15.072 3.07185L14.544 2.30385L14.016 1.72785L13.584 1.34385L12.912 0.959852L12.384 0.815852ZM11.568 0.815852L10.992 1.00785L10.416 1.34385L9.84 1.87185L9.408 2.35185L8.88 3.16785L8.304 4.27185L7.92 5.27985L7.728 6.04785L7.44 7.29585L7.248 8.49585L7.152 9.45585V10.0799L7.92 9.69585L8.448 9.50385L9.168 9.40785L9.984 9.45585L10.704 9.64785L11.472 10.0319L11.616 10.0799V0.815852H11.568ZM14.592 1.15185L14.88 1.48785L15.408 2.15985L15.84 2.83185L16.368 3.98385L16.656 4.70385L16.992 5.75985L17.28 6.91185L17.52 8.39985L17.664 10.1279L18.336 9.74385L19.056 9.50385L19.728 9.40785L20.544 9.45585L21.264 9.64785L21.936 9.98385L22.128 10.0799V9.64785L21.888 8.39985L21.552 7.39185L21.168 6.52785L20.832 5.90385L20.256 5.03985L19.968 4.60785L19.392 3.93585L18.912 3.50385L18.24 2.92785L17.76 2.54385L16.8 1.96785L15.84 1.53585L14.736 1.15185H14.592ZM9.312 1.15185L8.16 1.53585L7.488 1.87185L7.104 2.01585L6.336 2.49585L5.904 2.83185L5.28 3.35985L4.8 3.79185L4.56 3.98385L4.224 4.36785L3.84 4.89585L3.36 5.61585L2.976 6.23985L2.544 7.15185L2.208 8.11185L1.92 9.31185V10.0319L2.112 9.93585L2.592 9.69585L3.216 9.50385L3.888 9.40785L4.704 9.45585L5.424 9.64785L6.096 9.98385L6.336 10.1279L6.48 8.39985L6.72 6.91185L7.056 5.56785L7.536 4.17585L7.872 3.45585L8.208 2.73585V2.63985H8.304L8.496 2.25585L8.544 2.11185H8.64L8.976 1.67985L9.408 1.19985L9.312 1.15185Z" fill="#855000"/>
|
||||
<path d="M11.472 12H12.528L13.104 12.096L13.824 12.48L14.496 13.152L14.88 13.824L15.072 14.4L15.12 14.784V15.264L15.024 15.84L14.784 16.416L14.496 16.896L14.256 17.184L15.024 17.568L15.456 17.856L15.984 18.288L16.368 18.768L16.704 19.296L16.992 20.016L17.136 20.64V23.568L16.944 23.856L16.704 23.952H7.29601L7.05601 23.856L6.86401 23.568V20.64L7.05601 19.872L7.29601 19.296L7.63201 18.768L8.16001 18.144L8.73601 17.712L9.45601 17.328L9.74401 17.184L9.36001 16.704L9.02401 15.984L8.92801 15.648L8.88001 15.264V14.784L8.97601 14.208L9.31201 13.44L9.64801 13.008L10.08 12.576L10.56 12.24L10.896 12.096L11.472 12ZM11.616 12.768L11.04 12.96L10.56 13.248L10.08 13.728L9.88801 14.016L9.69601 14.832V15.216L9.88801 16.032L10.368 16.656L10.752 16.944L11.232 17.184L11.904 17.328L12.432 17.28L13.008 17.088L13.44 16.8L13.728 16.56L14.112 16.032L14.304 15.216V14.832L14.112 14.016L13.776 13.584L13.536 13.344L13.152 13.056L12.768 12.864L12.384 12.768H11.616ZM10.608 17.856L9.98401 17.952L9.16801 18.384L8.64001 18.816L8.20801 19.344L7.92001 19.872L7.72801 20.496L7.68001 20.736V23.232H16.32V20.736L16.128 19.92L15.696 19.2L15.216 18.672L14.592 18.24L14.016 17.952L13.248 17.856L12.576 18L11.808 18.048L11.04 17.904L10.608 17.856Z" fill="#855000"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 4.0 KiB |
4
assets/profileTab.svg
Normal file
@ -0,0 +1,4 @@
|
||||
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="M6.67202 11.5679H7.53602L7.92002 11.7599L8.35202 12.0479L8.83202 12.2879L9.50402 12.7199L10.416 13.1039L11.184 13.2959L11.568 13.3439H12.384L13.2 13.1999L14.016 12.9119L14.784 12.5279L15.456 12.0959L15.984 11.8079L16.32 11.6159L16.464 11.5679H17.28L18.048 11.7119L18.816 11.9999L19.392 12.2879L19.92 12.7199L20.208 13.1039L20.64 13.6799L21.12 14.5439L21.456 15.4079L21.744 16.4639L21.888 17.2319L21.984 18.3359L22.032 19.4399V20.0639L21.888 21.3119L21.6 21.9839L21.168 22.6079L20.88 22.9439L20.256 23.4239L19.488 23.8079L19.2 23.9039L18.48 23.9999H5.47202L4.75202 23.9039L3.98402 23.5679L3.50402 23.2799L3.02402 22.8479L2.59202 22.3679L2.16002 21.5519L1.96802 20.5919V18.4319L2.16002 16.7039L2.49602 15.4079L2.88002 14.4479L3.31202 13.6799L3.79202 13.0559L4.17602 12.6239L4.51202 12.3359L4.89602 12.0959L5.37602 11.9039L6.09602 11.6639L6.67202 11.5679ZM6.81602 13.0559L6.04802 13.2479L5.66402 13.4399L5.23202 13.7759L4.84802 14.1119L4.41602 14.7839L4.03202 15.5999L3.88802 15.9839L3.69602 16.9439L3.50402 18.0479L3.45602 18.5279V20.4479L3.64802 21.1199L3.93602 21.6479L4.32002 22.0319L4.80002 22.2719L5.37602 22.4639L6.19202 22.5599H17.76L18.384 22.5119L19.152 22.2719L19.632 22.0319L20.064 21.5999L20.4 20.8799L20.496 20.4959L20.544 20.0639L20.496 18.4799L20.352 17.3759L20.064 15.9359L19.68 15.0239L19.248 14.3039L18.912 13.9199H18.816V13.8239L18.624 13.6319L18.096 13.3439L17.664 13.1519L17.184 13.0559H16.8L15.888 13.6319L15.648 13.7759V13.8719L15.216 14.0159L14.496 14.3519L13.44 14.6879L12.528 14.8319H11.424L10.512 14.6879L9.36002 14.3039L8.35202 13.8239L7.39202 13.1999L7.15202 13.0559H6.81602Z" fill="black"/>
|
||||
<path d="M11.088 0H12.576L13.344 0.096L14.16 0.384L14.976 0.816L15.6 1.296L15.888 1.536L16.272 2.016L16.512 2.256L16.848 2.736L17.232 3.456L17.472 4.176L17.616 4.8L17.664 5.136V6.384L17.52 7.248L17.28 7.968L16.896 8.736L16.464 9.36L16.032 9.84L15.888 9.888L15.792 10.08L15.36 10.464L14.688 10.896L13.92 11.28L13.248 11.472L12.432 11.616H11.184L10.368 11.472L9.40797 11.136L8.54397 10.656L8.11197 10.32L7.91997 10.08L7.63197 9.888L7.29597 9.504L6.81597 8.832L6.38397 8.016L6.14397 7.296L6.04797 6.528V5.04L6.14397 4.32L6.43197 3.456L6.76797 2.784L7.24797 2.112L7.48797 1.872L8.01597 1.344H8.11197L8.20797 1.152L8.68797 0.816L9.16797 0.528L10.128 0.144L11.088 0ZM11.808 1.44L10.896 1.536L10.032 1.824L9.55197 2.064L8.87997 2.592L8.54397 2.928L8.06397 3.6L7.82397 4.08L7.58397 4.896L7.53597 5.184V6.384L7.72797 7.2L8.01597 7.92L8.49597 8.544L8.78397 8.88L9.31197 9.312L9.98397 9.744L10.608 9.984L11.328 10.128H12.288L13.056 9.984L13.776 9.696L14.208 9.408L14.688 9.024L15.216 8.496L15.696 7.824L15.936 7.296L16.128 6.624V4.944L15.888 4.128L15.504 3.456L15.12 2.976L14.832 2.64L14.304 2.208L13.872 1.92L13.104 1.632L12.432 1.488L11.808 1.44Z" fill="black"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 2.8 KiB |
|
Before Width: | Height: | Size: 1.0 MiB |
|
Before Width: | Height: | Size: 38 KiB |
|
Before Width: | Height: | Size: 1001 KiB |
19
build_dev_apk.sh
Executable file
@ -0,0 +1,19 @@
|
||||
#!/bin/bash
|
||||
|
||||
# Define the path to the .env file for development
|
||||
ENV_FILE_PATH=".env.development"
|
||||
|
||||
# Check if the .env file exists
|
||||
if [ ! -f $ENV_FILE_PATH ]; then
|
||||
echo "$ENV_FILE_PATH does not exist"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Copy the .env file for development to .env
|
||||
cp $ENV_FILE_PATH .env
|
||||
|
||||
# Build the APK for development
|
||||
flutter build apk --debug
|
||||
|
||||
# Optionally, remove the .env file after the build
|
||||
# rm .env
|
||||
19
build_prod_apk.sh
Executable file
@ -0,0 +1,19 @@
|
||||
#!/bin/bash
|
||||
|
||||
# Define the path to the .env file for production
|
||||
ENV_FILE_PATH=".env.production"
|
||||
|
||||
# Check if the .env file exists
|
||||
if [ ! -f $ENV_FILE_PATH ]; then
|
||||
echo "$ENV_FILE_PATH does not exist"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Copy the .env file for production to .env
|
||||
cp $ENV_FILE_PATH .env
|
||||
|
||||
# Build the APK for production
|
||||
flutter build apk --release
|
||||
|
||||
# Optionally, remove the .env file after the build
|
||||
# rm .env
|
||||
19
build_test_apk.sh
Executable file
@ -0,0 +1,19 @@
|
||||
#!/bin/bash
|
||||
|
||||
# Define the path to the .env file for testing
|
||||
ENV_FILE_PATH=".env.test"
|
||||
|
||||
# Check if the .env file exists
|
||||
if [ ! -f $ENV_FILE_PATH ]; then
|
||||
echo "$ENV_FILE_PATH does not exist"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Copy the .env file for testing to .env
|
||||
cp $ENV_FILE_PATH .env
|
||||
|
||||
# Build the APK for testing
|
||||
flutter build apk --debug
|
||||
|
||||
# Optionally, remove the .env file after the build
|
||||
# rm .env
|
||||
34
build_web_dev.sh
Executable file
@ -0,0 +1,34 @@
|
||||
#!/bin/bash
|
||||
|
||||
# Define the path to the .env.development file
|
||||
ENV_FILE_PATH=".env.development"
|
||||
|
||||
# Check if the .env.development file exists
|
||||
if [ ! -f $ENV_FILE_PATH ]; then
|
||||
echo "$ENV_FILE_PATH does not exist"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Copy the .env.development file to .env
|
||||
cp $ENV_FILE_PATH .env
|
||||
|
||||
# Check if the BASE_HREF variable exists in the .env file
|
||||
if ! grep -q BASE_HREF .env; then
|
||||
echo "BASE_HREF not found in .env file"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Extract the BASE_HREF value
|
||||
BASE_HREF=$(grep BASE_HREF .env | cut -d '=' -f2)
|
||||
|
||||
# Check if the BASE_HREF value is empty
|
||||
if [ -z "$BASE_HREF" ]; then
|
||||
echo "BASE_HREF value is empty"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Build the web app for development with base href
|
||||
flutter build web --debug --base-href "$BASE_HREF"
|
||||
|
||||
# Optionally, remove the .env file after the build
|
||||
# rm .env
|
||||
34
build_web_production.sh
Executable file
@ -0,0 +1,34 @@
|
||||
#!/bin/bash
|
||||
|
||||
# Define the path to the .env file for production
|
||||
ENV_FILE_PATH=".env.production"
|
||||
|
||||
# Check if the .env file exists
|
||||
if [ ! -f $ENV_FILE_PATH ]; then
|
||||
echo "$ENV_FILE_PATH does not exist"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Copy the .env file for production to .env
|
||||
cp $ENV_FILE_PATH .env
|
||||
|
||||
# Check if the BASE_HREF variable exists in the .env file
|
||||
if ! grep -q BASE_HREF .env; then
|
||||
echo "BASE_HREF not found in .env file"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Extract the BASE_HREF value
|
||||
BASE_HREF=$(grep BASE_HREF .env | cut -d '=' -f2)
|
||||
|
||||
# Check if the BASE_HREF value is empty
|
||||
if [ -z "$BASE_HREF" ]; then
|
||||
echo "BASE_HREF value is empty"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Build the web app for production environment with base href
|
||||
flutter build web --release --base-href "$BASE_HREF"
|
||||
|
||||
# Optionally, remove the .env file after the build
|
||||
# rm .env
|
||||
34
build_web_test.sh
Executable file
@ -0,0 +1,34 @@
|
||||
#!/bin/bash
|
||||
|
||||
# Define the path to the .env file for testing
|
||||
ENV_FILE_PATH=".env.test"
|
||||
|
||||
# Check if the .env file exists
|
||||
if [ ! -f $ENV_FILE_PATH ]; then
|
||||
echo "$ENV_FILE_PATH does not exist"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Copy the .env file for testing to .env
|
||||
cp $ENV_FILE_PATH .env
|
||||
|
||||
# Check if the BASE_HREF variable exists in the .env file
|
||||
if ! grep -q BASE_HREF .env; then
|
||||
echo "BASE_HREF not found in .env file"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Extract the BASE_HREF value
|
||||
BASE_HREF=$(grep BASE_HREF .env | cut -d '=' -f2)
|
||||
|
||||
# Check if the BASE_HREF value is empty
|
||||
if [ -z "$BASE_HREF" ]; then
|
||||
echo "BASE_HREF value is empty"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Build the web app for test environment with base href
|
||||
flutter build web --debug --base-href "$BASE_HREF"
|
||||
|
||||
# Optionally, remove the .env file after the build
|
||||
# rm .env
|
||||
@ -1,7 +1,7 @@
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:adaptive_navbar/adaptive_navbar.dart';
|
||||
import 'package:nhance_app_pwa/customAppBar/responsive.dart';
|
||||
import 'package:shared_preferences/shared_preferences.dart';
|
||||
import 'package:nhance_app_pwa/customAppBar/responsive.dart';
|
||||
|
||||
class CustomAppBar extends StatelessWidget implements PreferredSizeWidget {
|
||||
@override
|
||||
@ -24,113 +24,91 @@ class CustomAppBar extends StatelessWidget implements PreferredSizeWidget {
|
||||
await prefs.clear();
|
||||
Navigator.pushNamed(context, 'hrLogin');
|
||||
}
|
||||
// Navigator.pushNamed(context, "phone");
|
||||
}
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
final sw = MediaQuery.of(context).size.width;
|
||||
|
||||
return Scaffold(
|
||||
backgroundColor: Color(0xFFFFFCE5), // Set background color for AppBar
|
||||
appBar: PreferredSize(
|
||||
preferredSize: preferredSize,
|
||||
child: SafeArea(
|
||||
child: Container(
|
||||
padding: Responsive.isDesktop(context)
|
||||
? EdgeInsets.symmetric(horizontal: 16.0)
|
||||
: EdgeInsets.symmetric(horizontal: 0),
|
||||
child: Row(
|
||||
children: [
|
||||
// Logo Column
|
||||
return ClipRRect(
|
||||
borderRadius: Responsive.isDesktop(context)
|
||||
? BorderRadius.zero
|
||||
: BorderRadius.only(
|
||||
bottomLeft: Radius.circular(32.0),
|
||||
bottomRight: Radius.circular(32.0),
|
||||
),
|
||||
child: AppBar(
|
||||
backgroundColor: Color(0xFFFFFBDE), // Set background color for AppBar
|
||||
toolbarHeight: kToolbarHeight,
|
||||
titleSpacing: 0.0,
|
||||
automaticallyImplyLeading: false,
|
||||
title: Padding(
|
||||
padding: Responsive.isDesktop(context)
|
||||
? EdgeInsets.symmetric(horizontal: 16.0)
|
||||
: EdgeInsets.symmetric(horizontal: 10),
|
||||
child: Row(
|
||||
children: [
|
||||
// Logo Column
|
||||
Expanded(
|
||||
flex: Responsive.isDesktop(context) ? 3 : 9,
|
||||
child: Row(
|
||||
mainAxisAlignment: Responsive.isDesktop(context)
|
||||
? MainAxisAlignment.spaceEvenly
|
||||
: MainAxisAlignment
|
||||
.start, // Adjust the alignment as needed
|
||||
children: [
|
||||
Container(
|
||||
margin: EdgeInsets.only(
|
||||
top: 10, bottom: 10, left: 10, right: 10),
|
||||
width: Responsive.isDesktop(context) ? 230 : 170,
|
||||
height: Responsive.isDesktop(context) ? 230 : 170,
|
||||
child: Image.asset(
|
||||
'assets/nhance_client_logo.png',
|
||||
fit: BoxFit.contain, // Adjust the fit as needed
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
// AdaptiveNavBar Column
|
||||
if (Responsive.isDesktop(context))
|
||||
Expanded(
|
||||
flex: Responsive.isDesktop(context) ? 3 : 9,
|
||||
child: Row(
|
||||
mainAxisAlignment: Responsive.isDesktop(context)
|
||||
? MainAxisAlignment.spaceEvenly
|
||||
: MainAxisAlignment
|
||||
.start, // Adjust the alignment as needed
|
||||
children: [
|
||||
Container(
|
||||
margin: EdgeInsets.only(
|
||||
top: 10, bottom: 10, left: 10, right: 10),
|
||||
width: Responsive.isDesktop(context) ? 230 : 170,
|
||||
height: Responsive.isDesktop(context) ? 230 : 170,
|
||||
child: Image.asset(
|
||||
'assets/nhance_client_logo.png',
|
||||
fit: BoxFit.contain, // Adjust the fit as needed
|
||||
),
|
||||
flex: Responsive.isDesktop(context) ? 9 : 3,
|
||||
child: AdaptiveNavBar(
|
||||
screenWidth: sw,
|
||||
backgroundColor: Color(0xFFFFFBDE),
|
||||
leading:
|
||||
Container(), // Set an empty container as we have the logo separately
|
||||
title: Text(''),
|
||||
navBarItems: [
|
||||
NavBarItem(
|
||||
text: "Home",
|
||||
onTap: () {
|
||||
Navigator.pushNamed(context, 'home');
|
||||
},
|
||||
),
|
||||
NavBarItem(
|
||||
text: "Claim",
|
||||
onTap: () {
|
||||
Navigator.pushNamed(context, 'claims');
|
||||
},
|
||||
),
|
||||
NavBarItem(
|
||||
text: "Help",
|
||||
onTap: () {
|
||||
Navigator.pushNamed(context, 'help');
|
||||
},
|
||||
),
|
||||
NavBarItem(
|
||||
text: "Profile",
|
||||
onTap: () {
|
||||
Navigator.pushNamed(context, 'profile');
|
||||
},
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
// AdaptiveNavBar Column
|
||||
if (Responsive.isDesktop(context))
|
||||
Expanded(
|
||||
flex: Responsive.isDesktop(context) ? 9 : 3,
|
||||
child: AdaptiveNavBar(
|
||||
screenWidth: sw,
|
||||
backgroundColor: Color(0xFFFFFCE5),
|
||||
leading:
|
||||
Container(), // Set an empty container as we have the logo separately
|
||||
title: Text(''),
|
||||
navBarItems: [
|
||||
NavBarItem(
|
||||
text: "Home",
|
||||
onTap: () {
|
||||
Navigator.pushNamed(context, 'home');
|
||||
},
|
||||
),
|
||||
NavBarItem(
|
||||
text: "Claim",
|
||||
onTap: () {
|
||||
Navigator.pushNamed(context, 'claims');
|
||||
},
|
||||
),
|
||||
NavBarItem(
|
||||
text: "Help",
|
||||
onTap: () {
|
||||
Navigator.pushNamed(context, 'help');
|
||||
},
|
||||
),
|
||||
NavBarItem(
|
||||
text: "Profile",
|
||||
onTap: () {
|
||||
Navigator.pushNamed(context, 'profile');
|
||||
},
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
// Expanded(
|
||||
// flex: Responsive.isDesktop(context) ? 1 : 3,
|
||||
// child: Column(
|
||||
// mainAxisAlignment: MainAxisAlignment.center,
|
||||
// crossAxisAlignment: CrossAxisAlignment.end,
|
||||
// children: [
|
||||
// Row(
|
||||
// mainAxisAlignment: MainAxisAlignment
|
||||
// .end, // Aligns the content to the right
|
||||
// children: [
|
||||
// Icon(Icons.notifications, color: Colors.black),
|
||||
// ],
|
||||
// ),
|
||||
// ],
|
||||
// ),
|
||||
// ),
|
||||
// SizedBox(width: Responsive.isDesktop(context) ? 10 : 3),
|
||||
// if (Responsive.isDesktop(context))
|
||||
// Expanded(
|
||||
// flex: Responsive.isDesktop(context) ? 2 : 3,
|
||||
// child: Row(
|
||||
// children: [
|
||||
// Icon(Icons.account_circle, color: Colors.black),
|
||||
// ],
|
||||
// ),
|
||||
// ),
|
||||
// SizedBox(width: Responsive.isDesktop(context) ? 5 : 0),
|
||||
],
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
),
|
||||
|
||||
@ -4,7 +4,7 @@ class CustomFooter extends StatelessWidget {
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return Container(
|
||||
padding: EdgeInsets.all(16.0),
|
||||
padding: EdgeInsets.all(8.0),
|
||||
color: Color(0xFFFFFBDE), // Background color of the footer
|
||||
child: Column(
|
||||
mainAxisSize: MainAxisSize.min,
|
||||
|
||||
@ -2,15 +2,21 @@ import 'package:flutter/material.dart';
|
||||
import 'package:flutter_dotenv/flutter_dotenv.dart';
|
||||
import 'package:nhance_app_pwa/pages/claimprocess.dart';
|
||||
import 'package:nhance_app_pwa/pages/claims.dart';
|
||||
import 'package:nhance_app_pwa/pages/claimtracklist.dart';
|
||||
import 'package:nhance_app_pwa/pages/generalexclusionsdeductibles.dart';
|
||||
import 'package:nhance_app_pwa/pages/help.dart';
|
||||
import 'package:nhance_app_pwa/pages/home.dart';
|
||||
import 'package:nhance_app_pwa/pages/login.dart';
|
||||
import 'package:nhance_app_pwa/pages/planclaimsform.dart';
|
||||
import 'package:nhance_app_pwa/pages/policies.dart';
|
||||
import 'package:nhance_app_pwa/pages/privacypolicy.dart';
|
||||
import 'package:nhance_app_pwa/pages/profile.dart';
|
||||
import 'package:nhance_app_pwa/pages/termsofuse.dart';
|
||||
import 'package:nhance_app_pwa/pages/verify.dart';
|
||||
import 'models/environment.dart';
|
||||
|
||||
Future<void> main() async {
|
||||
WidgetsFlutterBinding.ensureInitialized();
|
||||
await dotenv.load(fileName: Environment.fileName);
|
||||
|
||||
runApp(MaterialApp(
|
||||
@ -25,6 +31,12 @@ Future<void> main() async {
|
||||
'help': (context) => help(),
|
||||
'claimprocess': (context) => claimprocess(),
|
||||
'profile': (context) => profile(),
|
||||
'planclaimsform': (context) => planclaimsform(),
|
||||
'claimtracklist': (context) => claimtracklist(),
|
||||
'privacypolicy': (context) => privacypolicy(),
|
||||
'termsofuse': (context) => termsofuse(),
|
||||
'generalExclusionsDeductibles': (context) =>
|
||||
generalExclusionsDeductibles(),
|
||||
},
|
||||
));
|
||||
}
|
||||
|
||||
@ -3,17 +3,32 @@ import 'package:flutter_dotenv/flutter_dotenv.dart';
|
||||
|
||||
class Environment {
|
||||
static String get fileName {
|
||||
if (kReleaseMode) {
|
||||
return '.env.production';
|
||||
}
|
||||
const bool isProduction =
|
||||
bool.fromEnvironment('dart.vm.product', defaultValue: false);
|
||||
const bool isTest =
|
||||
bool.fromEnvironment('dart.vm.environment', defaultValue: false);
|
||||
|
||||
return '.env.development';
|
||||
if (isProduction) {
|
||||
return '.env.production';
|
||||
} else if (isTest) {
|
||||
return '.env.test';
|
||||
} else {
|
||||
return '.env.development';
|
||||
}
|
||||
}
|
||||
|
||||
static String get apiUrl {
|
||||
return dotenv.env['API_URL'] ?? 'API_URL not found!';
|
||||
}
|
||||
|
||||
static String get baseHref {
|
||||
return dotenv.env['BASE_HREF'] ?? 'BASE_HREF not found!';
|
||||
}
|
||||
|
||||
static String get env {
|
||||
return dotenv.env['ENV'] ?? 'ENV not found!';
|
||||
}
|
||||
|
||||
static String get apiUrlTicket {
|
||||
return dotenv.env['TICKET_API_URL'] ?? 'API_URL not found!';
|
||||
}
|
||||
|
||||
512
lib/pages/claimtracklist.dart
Normal file
@ -0,0 +1,512 @@
|
||||
import 'dart:convert';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:google_fonts/google_fonts.dart';
|
||||
import 'package:intl/intl.dart';
|
||||
import 'package:jwt_decode/jwt_decode.dart';
|
||||
import 'package:shared_preferences/shared_preferences.dart';
|
||||
import '../customAppBar/customAppBar.dart';
|
||||
import '../customAppBar/customFooter.dart';
|
||||
import '../customAppBar/tabs.dart';
|
||||
import '../customAppBar/responsive.dart';
|
||||
import '../customAppBar/toastHelper.dart';
|
||||
import '../models/environment.dart';
|
||||
import 'package:http/http.dart' as http;
|
||||
|
||||
import '../service/api_service.dart';
|
||||
|
||||
class claimtracklist extends StatefulWidget {
|
||||
const claimtracklist({Key? key}) : super(key: key);
|
||||
|
||||
@override
|
||||
State<claimtracklist> createState() => _claimtracklistformState();
|
||||
}
|
||||
|
||||
class _claimtracklistformState extends State<claimtracklist> {
|
||||
late ApiService apiService;
|
||||
dynamic _token;
|
||||
dynamic empCodeString;
|
||||
dynamic empPrimaryId;
|
||||
dynamic client_id;
|
||||
dynamic policyList;
|
||||
dynamic policyDataIsEmpty = 1;
|
||||
dynamic policyHeading;
|
||||
dynamic policyName;
|
||||
dynamic EmployeePolicy;
|
||||
List<Map<String, String>> employeeDetails = [];
|
||||
dynamic argumentsData;
|
||||
dynamic decodedToken;
|
||||
dynamic claimTrackMsgList;
|
||||
dynamic empName;
|
||||
dynamic ticketID;
|
||||
late TextEditingController messageController;
|
||||
|
||||
// Create a unique form key for each accordion section
|
||||
final GlobalKey<FormState> formKey = GlobalKey<FormState>();
|
||||
|
||||
@override
|
||||
void initState() {
|
||||
super.initState();
|
||||
apiService = ApiService(context); // Initialize ApiService here
|
||||
_loadToken();
|
||||
messageController = TextEditingController();
|
||||
}
|
||||
|
||||
@override
|
||||
void dispose() {
|
||||
super.dispose();
|
||||
messageController.dispose();
|
||||
}
|
||||
|
||||
@override
|
||||
void didChangeDependencies() {
|
||||
super.didChangeDependencies();
|
||||
dynamic arguments = ModalRoute.of(context)!.settings.arguments;
|
||||
if (arguments != null && arguments is Map<String, dynamic>) {
|
||||
argumentsData = arguments;
|
||||
print('argumentsData');
|
||||
print(argumentsData);
|
||||
ticketID = argumentsData['id'];
|
||||
claimTrackMsgList = argumentsData['message_list'];
|
||||
print(claimTrackMsgList);
|
||||
}
|
||||
}
|
||||
|
||||
Future<void> _loadToken() async {
|
||||
print('_loadToken');
|
||||
final SharedPreferences prefs = await SharedPreferences.getInstance();
|
||||
final String? token = prefs.getString('token');
|
||||
if (token != null && token.isNotEmpty) {
|
||||
setState(() {
|
||||
_token = token;
|
||||
});
|
||||
// Decode the JWT token received from the API response
|
||||
decodedToken = Jwt.parseJwt(token);
|
||||
print(decodedToken);
|
||||
empName = decodedToken['name'];
|
||||
empCodeString = prefs.getString('empCode');
|
||||
print(empCodeString); // Check if emp_code is correct
|
||||
empPrimaryId = prefs.getString('empPrimaryId');
|
||||
client_id = prefs.getString('client_id');
|
||||
print(client_id);
|
||||
} else {
|
||||
// Token is empty or null, handle accordingly (e.g., navigate to login screen)
|
||||
// For now, let's navigate to the login screen
|
||||
ToastHelper.showErrorToast(context, 'Session Out');
|
||||
Navigator.pushReplacementNamed(context, 'login');
|
||||
}
|
||||
}
|
||||
|
||||
void sendClaimsMessage(Map<String, dynamic> formData) async {
|
||||
try {
|
||||
formData = formData.map((key, value) => MapEntry(key, value.toString()));
|
||||
|
||||
final response = await apiService.sendClaimsMessageToApi(formData);
|
||||
|
||||
if (response['success'] == 1) {
|
||||
messageController.clear();
|
||||
ToastHelper.showSuccessToast(context, 'Saved Successfully...');
|
||||
messageController.clear();
|
||||
Navigator.pushNamed(context, 'claims', arguments: 0);
|
||||
print('Form data sent successfully.');
|
||||
} else {
|
||||
print('Failed to submit form data: ${response['status']}');
|
||||
}
|
||||
} catch (e) {
|
||||
print('Error submitting form data: $e');
|
||||
}
|
||||
}
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return Scaffold(
|
||||
appBar: CustomAppBar(),
|
||||
body: Stack(children: [
|
||||
SingleChildScrollView(
|
||||
child: Container(
|
||||
padding: Responsive.isDesktop(context)
|
||||
? EdgeInsets.symmetric(
|
||||
horizontal: MediaQuery.of(context).size.width *
|
||||
0.2, // 30% of screen width as horizontal padding
|
||||
vertical: MediaQuery.of(context).size.height *
|
||||
0.03, // 5% of screen height as vertical padding
|
||||
)
|
||||
: EdgeInsets.all(10),
|
||||
color: Colors.white,
|
||||
child: Column(children: [
|
||||
Card(
|
||||
elevation: 5,
|
||||
shape: RoundedRectangleBorder(
|
||||
borderRadius:
|
||||
BorderRadius.circular(15.0), // Set border radius here
|
||||
),
|
||||
child: Container(
|
||||
decoration: BoxDecoration(
|
||||
color: Colors.white, // Set background color to white
|
||||
borderRadius: BorderRadius.circular(
|
||||
15.0), // Set border radius for Container
|
||||
),
|
||||
padding: Responsive.isDesktop(context)
|
||||
? EdgeInsets.only(top: 15, bottom: 15, left: 15, right: 15)
|
||||
: EdgeInsets.only(
|
||||
top: 10,
|
||||
bottom: 10,
|
||||
left: 10,
|
||||
right: 10), // Add padding to the container
|
||||
child: Row(
|
||||
children: [
|
||||
Expanded(
|
||||
flex: 12,
|
||||
child: Container(
|
||||
alignment: Alignment.centerLeft,
|
||||
child: Column(
|
||||
mainAxisAlignment: MainAxisAlignment.start,
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
children: [
|
||||
Container(
|
||||
padding: Responsive.isDesktop(context)
|
||||
? EdgeInsets.only(
|
||||
top: 15,
|
||||
bottom: 15,
|
||||
left: 25,
|
||||
right: 25)
|
||||
: EdgeInsets.only(
|
||||
top: 0, bottom: 0, left: 0, right: 0),
|
||||
child: Column(
|
||||
crossAxisAlignment:
|
||||
CrossAxisAlignment.center,
|
||||
children: [
|
||||
Row(
|
||||
mainAxisAlignment:
|
||||
MainAxisAlignment.start,
|
||||
children: [
|
||||
Expanded(
|
||||
flex: 12,
|
||||
child: InkWell(
|
||||
onTap: () {
|
||||
Navigator.pushNamed(
|
||||
context, 'claims');
|
||||
},
|
||||
child: Row(
|
||||
mainAxisAlignment:
|
||||
MainAxisAlignment.start,
|
||||
children: [
|
||||
if (!Responsive.isDesktop(
|
||||
context))
|
||||
Icon(
|
||||
Icons
|
||||
.chevron_left, // Replace with your desired icon
|
||||
color: Color(0xFF000000),
|
||||
size: 30,
|
||||
),
|
||||
SizedBox(
|
||||
width: Responsive
|
||||
.isDesktop(
|
||||
context)
|
||||
? 0
|
||||
: 5), // Adjust space between icon and text
|
||||
Column(
|
||||
mainAxisAlignment:
|
||||
MainAxisAlignment
|
||||
.center,
|
||||
crossAxisAlignment:
|
||||
CrossAxisAlignment
|
||||
.start,
|
||||
children: [
|
||||
Text(
|
||||
'Claims Track',
|
||||
textAlign:
|
||||
TextAlign.start,
|
||||
style:
|
||||
GoogleFonts.poppins(
|
||||
fontSize: 16,
|
||||
fontWeight:
|
||||
FontWeight.w600,
|
||||
color:
|
||||
Color(0xFF000000),
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
// Add more rows as needed
|
||||
],
|
||||
),
|
||||
),
|
||||
SizedBox(height: 15),
|
||||
Container(
|
||||
child: SingleChildScrollView(
|
||||
child: Column(children: [
|
||||
...claimTrackMsgList.map<Widget>((message) {
|
||||
bool isUserMessage =
|
||||
message['staff_name'] == null;
|
||||
String messageContent =
|
||||
message['message'];
|
||||
String messageDate = message['date'];
|
||||
print('isUserMessage');
|
||||
print(isUserMessage);
|
||||
dynamic messagername;
|
||||
if (isUserMessage) {
|
||||
messagername = empName;
|
||||
} else {
|
||||
messagername = message['staff_name'];
|
||||
}
|
||||
|
||||
return Padding(
|
||||
padding: const EdgeInsets.symmetric(
|
||||
vertical: 4.0),
|
||||
child: Align(
|
||||
alignment: isUserMessage
|
||||
? Alignment.centerLeft
|
||||
: Alignment.centerRight,
|
||||
child: Container(
|
||||
constraints:
|
||||
BoxConstraints(maxWidth: 300),
|
||||
padding: EdgeInsets.all(10),
|
||||
decoration: BoxDecoration(
|
||||
color: isUserMessage
|
||||
? Colors.blue[100]
|
||||
: Colors.green[100],
|
||||
borderRadius:
|
||||
BorderRadius.circular(10),
|
||||
),
|
||||
child: Column(
|
||||
crossAxisAlignment: isUserMessage
|
||||
? CrossAxisAlignment.start
|
||||
: CrossAxisAlignment.end,
|
||||
children: [
|
||||
Row(
|
||||
mainAxisAlignment: isUserMessage
|
||||
? MainAxisAlignment.end
|
||||
: MainAxisAlignment
|
||||
.start, // Aligns children to the end (right) of the row
|
||||
children: [
|
||||
Text(
|
||||
messagername,
|
||||
style:
|
||||
GoogleFonts.poppins(
|
||||
fontSize: Responsive
|
||||
.isDesktop(
|
||||
context)
|
||||
? 16
|
||||
: 14,
|
||||
fontWeight:
|
||||
FontWeight.w500,
|
||||
color:
|
||||
Color(0xFF000000),
|
||||
),
|
||||
),
|
||||
SizedBox(width: 5),
|
||||
Icon(
|
||||
Icons
|
||||
.person, // Replace with your desired icon
|
||||
color: Color(
|
||||
0xFFE26728), // Customize the icon color
|
||||
size:
|
||||
15, // Customize the icon size
|
||||
),
|
||||
],
|
||||
),
|
||||
Text(
|
||||
messageContent,
|
||||
style: GoogleFonts.poppins(
|
||||
fontSize:
|
||||
Responsive.isDesktop(
|
||||
context)
|
||||
? 14
|
||||
: 12,
|
||||
fontWeight: FontWeight.w400,
|
||||
color: Color(0xFF000000),
|
||||
),
|
||||
),
|
||||
SizedBox(height: 5),
|
||||
Text(
|
||||
formatDate(messageDate),
|
||||
style: GoogleFonts.poppins(
|
||||
fontSize:
|
||||
Responsive.isDesktop(
|
||||
context)
|
||||
? 12
|
||||
: 10,
|
||||
fontWeight: FontWeight.w400,
|
||||
color: Color(0xFF636363),
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
),
|
||||
);
|
||||
}).toList(),
|
||||
Padding(
|
||||
padding: const EdgeInsets.symmetric(
|
||||
vertical: 8.0),
|
||||
child: Row(
|
||||
children: [
|
||||
Expanded(
|
||||
flex:
|
||||
Responsive.isDesktop(context)
|
||||
? 10
|
||||
: 9,
|
||||
child: TextFormField(
|
||||
controller: messageController,
|
||||
onChanged: (value) => null,
|
||||
decoration: InputDecoration(
|
||||
border: OutlineInputBorder(),
|
||||
hintText: 'Message',
|
||||
labelText: 'Message',
|
||||
contentPadding:
|
||||
EdgeInsets.symmetric(
|
||||
vertical: 10,
|
||||
horizontal: 15),
|
||||
),
|
||||
validator: (value) {
|
||||
if (value == null ||
|
||||
value.isEmpty) {
|
||||
return 'Message is required';
|
||||
}
|
||||
return null;
|
||||
},
|
||||
),
|
||||
),
|
||||
Expanded(
|
||||
flex:
|
||||
Responsive.isDesktop(context)
|
||||
? 2
|
||||
: 3,
|
||||
child: Container(
|
||||
alignment:
|
||||
Alignment.centerRight,
|
||||
child: ElevatedButton(
|
||||
onPressed: () {
|
||||
// Check if any of the fields are empty
|
||||
if (messageController
|
||||
.text.isEmpty) {
|
||||
ToastHelper.showWarningToast(
|
||||
context,
|
||||
'All fields are required');
|
||||
} else {
|
||||
// Create a map to hold the form data
|
||||
Map<String, dynamic>
|
||||
formData = {
|
||||
'ticket_id': ticketID,
|
||||
'replier': 'user',
|
||||
'message':
|
||||
messageController
|
||||
.text,
|
||||
// Add more form fields as needed
|
||||
};
|
||||
|
||||
// Call the function to send form data to API
|
||||
sendClaimsMessage(
|
||||
formData);
|
||||
}
|
||||
},
|
||||
child: Text(
|
||||
'Reply',
|
||||
style: GoogleFonts.poppins(
|
||||
color: Colors.white),
|
||||
),
|
||||
style:
|
||||
ElevatedButton.styleFrom(
|
||||
backgroundColor:
|
||||
Color(0xFFE26728),
|
||||
shape:
|
||||
RoundedRectangleBorder(
|
||||
borderRadius:
|
||||
BorderRadius.circular(
|
||||
5),
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
],
|
||||
)
|
||||
// ElevatedButton(
|
||||
// onPressed: () {
|
||||
//
|
||||
// },
|
||||
// child: Text('Reply'),
|
||||
// ),
|
||||
),
|
||||
]),
|
||||
)),
|
||||
],
|
||||
))),
|
||||
],
|
||||
),
|
||||
),
|
||||
),
|
||||
SizedBox(height: Responsive.isDesktop(context) ? 40 : 10),
|
||||
]),
|
||||
)),
|
||||
if (Responsive.isDesktop(context))
|
||||
Align(
|
||||
alignment: Alignment.bottomCenter,
|
||||
child: Container(
|
||||
width: double.infinity, // Make the footer full width
|
||||
child: CustomFooter(),
|
||||
),
|
||||
),
|
||||
]),
|
||||
// floatingActionButton: Responsive.isDesktop(context)
|
||||
// ? null
|
||||
// : FloatingActionButton(
|
||||
// onPressed: () {
|
||||
// // Add your onPressed logic here
|
||||
// },
|
||||
// child: Icon(Icons.add),
|
||||
// ),
|
||||
floatingActionButtonLocation: Responsive.isDesktop(context)
|
||||
? null
|
||||
: FloatingActionButtonLocation.centerDocked,
|
||||
bottomNavigationBar: Responsive.isDesktop(context)
|
||||
? null
|
||||
: CustomBottomNavigationBar(
|
||||
onTabChanged: (index) {
|
||||
// Add your navigation logic here
|
||||
// For example:
|
||||
if (index == 0) {
|
||||
Navigator.pushNamed(context, 'home');
|
||||
} else if (index == 1) {
|
||||
Navigator.pushNamed(context, 'claims');
|
||||
} else if (index == 2) {
|
||||
Navigator.pushNamed(context, 'profile');
|
||||
} else if (index == 3) {
|
||||
Navigator.pushNamed(context, 'help');
|
||||
}
|
||||
},
|
||||
icons: [
|
||||
Icons.home_outlined,
|
||||
Icons.sticky_note_2_outlined,
|
||||
Icons.person_outline_outlined,
|
||||
Icons.headset_mic_outlined,
|
||||
],
|
||||
labels: [
|
||||
"Home",
|
||||
"Claim",
|
||||
"Profile",
|
||||
"Help",
|
||||
], // Initial index of the bottom navigation bar
|
||||
),
|
||||
);
|
||||
}
|
||||
|
||||
String formatDate(String timestamp) {
|
||||
// Convert the timestamp string to milliseconds
|
||||
int milliseconds = int.parse(timestamp) * 1000;
|
||||
|
||||
// Create a DateTime object from milliseconds
|
||||
DateTime date = DateTime.fromMillisecondsSinceEpoch(milliseconds);
|
||||
|
||||
// Format the DateTime object
|
||||
String formattedDate = DateFormat('d MMM, y').format(date);
|
||||
|
||||
return formattedDate;
|
||||
}
|
||||
}
|
||||
863
lib/pages/generalexclusionsdeductibles.dart
Normal file
@ -0,0 +1,863 @@
|
||||
import 'dart:convert';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:google_fonts/google_fonts.dart';
|
||||
import 'package:jwt_decode/jwt_decode.dart';
|
||||
import 'package:shared_preferences/shared_preferences.dart';
|
||||
import '../customAppBar/customAppBar.dart';
|
||||
import '../customAppBar/customFooter.dart';
|
||||
import '../customAppBar/tabs.dart';
|
||||
import '../customAppBar/responsive.dart';
|
||||
import '../customAppBar/toastHelper.dart';
|
||||
import '../models/environment.dart';
|
||||
import 'package:http/http.dart' as http;
|
||||
|
||||
import '../service/api_service.dart';
|
||||
|
||||
class generalExclusionsDeductibles extends StatefulWidget {
|
||||
const generalExclusionsDeductibles({Key? key}) : super(key: key);
|
||||
|
||||
@override
|
||||
State<generalExclusionsDeductibles> createState() =>
|
||||
_generalExclusionsDeductiblesState();
|
||||
}
|
||||
|
||||
class _generalExclusionsDeductiblesState
|
||||
extends State<generalExclusionsDeductibles> {
|
||||
late ApiService apiService;
|
||||
int _currentIndex = 0;
|
||||
bool isActive = true;
|
||||
dynamic _token;
|
||||
dynamic empCodeString;
|
||||
dynamic empPrimaryId;
|
||||
dynamic client_id;
|
||||
dynamic generalExclusionsDetails;
|
||||
dynamic reimbursementClaimsDetails;
|
||||
dynamic generalSectionName;
|
||||
dynamic generalHeading;
|
||||
late Map<String, String> generalContent;
|
||||
late Map<String, String> generalNotes;
|
||||
|
||||
dynamic type3;
|
||||
dynamic type3SectionName;
|
||||
dynamic type3Heading;
|
||||
late Map<String, String> type3Content;
|
||||
|
||||
dynamic type4;
|
||||
dynamic type4SectionName;
|
||||
dynamic type4Heading;
|
||||
late Map<String, String> type4Content;
|
||||
|
||||
dynamic type5;
|
||||
dynamic type5SectionName;
|
||||
dynamic type5Heading;
|
||||
late Map<String, String> type5Content;
|
||||
|
||||
dynamic type6;
|
||||
dynamic type6SectionName;
|
||||
dynamic type6Heading;
|
||||
late Map<String, String> type6Content;
|
||||
|
||||
dynamic type7;
|
||||
dynamic type7SectionName;
|
||||
dynamic type7Heading;
|
||||
late Map<String, String> type7Content;
|
||||
|
||||
@override
|
||||
void initState() {
|
||||
super.initState();
|
||||
apiService = ApiService(context); // Initialize ApiService here
|
||||
_loadToken();
|
||||
}
|
||||
|
||||
@override
|
||||
void dispose() {
|
||||
super.dispose();
|
||||
}
|
||||
|
||||
Future<void> _loadToken() async {
|
||||
print('_loadToken');
|
||||
final SharedPreferences prefs = await SharedPreferences.getInstance();
|
||||
final String? token = prefs.getString('token');
|
||||
if (token != null && token.isNotEmpty) {
|
||||
setState(() {
|
||||
_token = token;
|
||||
});
|
||||
// Decode the JWT token received from the API response
|
||||
Map<String, dynamic>? decodedToken = Jwt.parseJwt(token);
|
||||
print(decodedToken);
|
||||
empCodeString = prefs.getString('empCode');
|
||||
print(empCodeString); // Check if emp_code is correct
|
||||
empPrimaryId = prefs.getString('empPrimaryId');
|
||||
client_id = prefs.getString('client_id');
|
||||
print(client_id);
|
||||
getCashlessAndReimbursement();
|
||||
} else {
|
||||
// Token is empty or null, handle accordingly (e.g., navigate to login screen)
|
||||
// For now, let's navigate to the login screen
|
||||
ToastHelper.showErrorToast(context, 'Session Out');
|
||||
Navigator.pushReplacementNamed(context, 'login');
|
||||
}
|
||||
}
|
||||
|
||||
Future<void> getCashlessAndReimbursement() async {
|
||||
final response = await apiService.getCashlessAndReimbursementToApi();
|
||||
print('check 1');
|
||||
if (response['status'] == 'success') {
|
||||
print(response['data']);
|
||||
setState(() {
|
||||
generalExclusionsDetails = response['data'][3];
|
||||
// print(generalExclusionsDetails);
|
||||
// generalSectionName = generalExclusionsDetails['content_section'];
|
||||
// generalHeading = generalExclusionsDetails['heading'];
|
||||
// Map<String, dynamic> jsonData =
|
||||
// jsonDecode(generalExclusionsDetails['content']);
|
||||
// generalContent = Map<String, String>.from(jsonData);
|
||||
// print('generalContent');
|
||||
// print(generalContent);
|
||||
|
||||
type3 = response['data'][2];
|
||||
print(type3);
|
||||
type3SectionName = type3['content_section'];
|
||||
type3Heading = type3['heading'];
|
||||
Map<String, dynamic> type3ContentjsonData =
|
||||
jsonDecode(type3['content']);
|
||||
type3Content = Map<String, String>.from(type3ContentjsonData);
|
||||
print('type3Content');
|
||||
print(type3Content);
|
||||
|
||||
type4 = response['data'][3];
|
||||
print(type4);
|
||||
type4SectionName = type4['content_section'];
|
||||
type4Heading = type4['heading'];
|
||||
Map<String, dynamic> type4ContentjsonData =
|
||||
jsonDecode(type4['content']);
|
||||
type4Content = Map<String, String>.from(type4ContentjsonData);
|
||||
print('type4Content');
|
||||
print(type4Content);
|
||||
|
||||
type5 = response['data'][4];
|
||||
print(type5);
|
||||
type5SectionName = type5['content_section'];
|
||||
type5Heading = type5['heading'];
|
||||
Map<String, dynamic> type5ContentjsonData =
|
||||
jsonDecode(type5['content']);
|
||||
type5Content = Map<String, String>.from(type5ContentjsonData);
|
||||
print('type5Content');
|
||||
print(type5Content);
|
||||
|
||||
type6 = response['data'][5];
|
||||
print(type6);
|
||||
type6SectionName = type6['content_section'];
|
||||
type6Heading = type6['heading'];
|
||||
Map<String, dynamic> type6ContentjsonData =
|
||||
jsonDecode(type6['content']);
|
||||
type6Content = Map<String, String>.from(type6ContentjsonData);
|
||||
print('type6Content');
|
||||
print(type6Content);
|
||||
|
||||
type7 = response['data'][6];
|
||||
print(type7);
|
||||
type7SectionName = type7['content_section'];
|
||||
type7Heading = type7['heading'];
|
||||
Map<String, dynamic> type7ContentjsonData =
|
||||
jsonDecode(type7['content']);
|
||||
type7Content = Map<String, String>.from(type7ContentjsonData);
|
||||
print('type7Content');
|
||||
print(type7Content);
|
||||
});
|
||||
} else {
|
||||
print('API request failed with status: ${response['status']}');
|
||||
}
|
||||
}
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return Scaffold(
|
||||
appBar: CustomAppBar(),
|
||||
body: Stack(
|
||||
children: [
|
||||
SingleChildScrollView(
|
||||
child: Container(
|
||||
padding: Responsive.isDesktop(context)
|
||||
? EdgeInsets.symmetric(
|
||||
horizontal: MediaQuery.of(context).size.width * 0.2,
|
||||
vertical: MediaQuery.of(context).size.height * 0.03,
|
||||
)
|
||||
: EdgeInsets.all(10),
|
||||
color: Colors.white,
|
||||
child: Column(
|
||||
children: [
|
||||
Container(
|
||||
padding: Responsive.isDesktop(context)
|
||||
? EdgeInsets.symmetric(vertical: 15, horizontal: 25)
|
||||
: EdgeInsets.all(0),
|
||||
child: Column(
|
||||
crossAxisAlignment: CrossAxisAlignment.center,
|
||||
children: [
|
||||
Row(
|
||||
mainAxisAlignment: MainAxisAlignment.start,
|
||||
children: [
|
||||
Expanded(
|
||||
flex: 12,
|
||||
child: InkWell(
|
||||
onTap: () {
|
||||
Navigator.pushNamed(context, 'claims');
|
||||
},
|
||||
child: Row(
|
||||
mainAxisAlignment: MainAxisAlignment.start,
|
||||
children: [
|
||||
if (!Responsive.isDesktop(context))
|
||||
Icon(
|
||||
Icons.chevron_left,
|
||||
color: Color(0xFF000000),
|
||||
size: 30,
|
||||
),
|
||||
SizedBox(
|
||||
width: Responsive.isDesktop(context)
|
||||
? 0
|
||||
: 5),
|
||||
Column(
|
||||
mainAxisAlignment:
|
||||
MainAxisAlignment.center,
|
||||
crossAxisAlignment:
|
||||
CrossAxisAlignment.start,
|
||||
children: [
|
||||
Text(
|
||||
'General Exclusions & Deductibles',
|
||||
textAlign: TextAlign.start,
|
||||
style: GoogleFonts.poppins(
|
||||
fontSize: 16,
|
||||
fontWeight: FontWeight.w600,
|
||||
color: Color(0xFF000000),
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
SizedBox(height: 15),
|
||||
Container(
|
||||
decoration: BoxDecoration(
|
||||
borderRadius: BorderRadius.circular(5),
|
||||
),
|
||||
padding: Responsive.isDesktop(context)
|
||||
? EdgeInsets.symmetric(vertical: 15, horizontal: 25)
|
||||
: EdgeInsets.all(10),
|
||||
child: Column(
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
children: [
|
||||
Padding(
|
||||
padding: EdgeInsets.only(bottom: 20),
|
||||
child: Column(
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
children: [
|
||||
Text(
|
||||
type3SectionName ?? '',
|
||||
style: GoogleFonts.poppins(
|
||||
fontSize:
|
||||
Responsive.isDesktop(context) ? 18 : 16,
|
||||
fontWeight: FontWeight.w500,
|
||||
color: Color(0xFF000000),
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
if (generalExclusionsDetails != null)
|
||||
Padding(
|
||||
padding: EdgeInsets.only(bottom: 20, left: 15),
|
||||
child: Column(
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
children: [
|
||||
// Text(
|
||||
// type3Heading ?? '',
|
||||
// style: GoogleFonts.poppins(
|
||||
// fontSize: Responsive.isDesktop(context)
|
||||
// ? 18
|
||||
// : 16,
|
||||
// fontWeight: FontWeight.w500,
|
||||
// color: Color(0xFF000000),
|
||||
// ),
|
||||
// ),
|
||||
SizedBox(height: 10),
|
||||
LayoutBuilder(
|
||||
builder: (context, constraints) {
|
||||
double itemHeight =
|
||||
50; // Adjust item height based on content
|
||||
double listViewHeight =
|
||||
type3Content.length * itemHeight;
|
||||
double maxHeight = constraints.maxHeight;
|
||||
|
||||
if (listViewHeight > maxHeight) {
|
||||
listViewHeight = maxHeight;
|
||||
}
|
||||
|
||||
return Container(
|
||||
height: listViewHeight,
|
||||
child: ListView.builder(
|
||||
itemCount: type3Content.length,
|
||||
itemBuilder: (context, index) {
|
||||
String key = type3Content.keys
|
||||
.elementAt(index);
|
||||
String value = type3Content[key]!;
|
||||
return Padding(
|
||||
padding:
|
||||
const EdgeInsets.symmetric(
|
||||
vertical: 8.0),
|
||||
child: Row(
|
||||
crossAxisAlignment:
|
||||
CrossAxisAlignment.start,
|
||||
children: <Widget>[
|
||||
Padding(
|
||||
padding:
|
||||
const EdgeInsets.only(
|
||||
left: 20.0),
|
||||
child: Text(
|
||||
"• ",
|
||||
style:
|
||||
GoogleFonts.poppins(
|
||||
fontSize: 16,
|
||||
fontWeight:
|
||||
FontWeight.w400,
|
||||
color:
|
||||
Color(0xFFE26728),
|
||||
),
|
||||
),
|
||||
),
|
||||
Expanded(
|
||||
child: Text(
|
||||
value,
|
||||
style:
|
||||
GoogleFonts.poppins(
|
||||
fontSize: 16,
|
||||
fontWeight:
|
||||
FontWeight.w400,
|
||||
color:
|
||||
Color(0xFF000000),
|
||||
),
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
);
|
||||
},
|
||||
),
|
||||
);
|
||||
},
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
]),
|
||||
),
|
||||
Container(
|
||||
decoration: BoxDecoration(
|
||||
borderRadius: BorderRadius.circular(5),
|
||||
),
|
||||
padding: Responsive.isDesktop(context)
|
||||
? EdgeInsets.symmetric(vertical: 15, horizontal: 25)
|
||||
: EdgeInsets.all(10),
|
||||
child: Column(
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
children: [
|
||||
Padding(
|
||||
padding: EdgeInsets.only(bottom: 20),
|
||||
child: Column(
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
children: [
|
||||
Text(
|
||||
type4SectionName ?? '',
|
||||
style: GoogleFonts.poppins(
|
||||
fontSize:
|
||||
Responsive.isDesktop(context) ? 18 : 16,
|
||||
fontWeight: FontWeight.w500,
|
||||
color: Color(0xFF000000),
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
if (generalExclusionsDetails != null)
|
||||
Padding(
|
||||
padding: EdgeInsets.only(bottom: 20, left: 15),
|
||||
child: Column(
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
children: [
|
||||
Text(
|
||||
type4Heading ?? '',
|
||||
style: GoogleFonts.poppins(
|
||||
fontSize: Responsive.isDesktop(context)
|
||||
? 18
|
||||
: 16,
|
||||
fontWeight: FontWeight.w500,
|
||||
color: Color(0xFF000000),
|
||||
),
|
||||
),
|
||||
SizedBox(height: 10),
|
||||
LayoutBuilder(
|
||||
builder: (context, constraints) {
|
||||
double itemHeight =
|
||||
40; // Adjust item height based on content
|
||||
double listViewHeight =
|
||||
type4Content.length * itemHeight;
|
||||
double maxHeight = constraints.maxHeight;
|
||||
|
||||
if (listViewHeight > maxHeight) {
|
||||
listViewHeight = maxHeight;
|
||||
}
|
||||
|
||||
return Container(
|
||||
height: listViewHeight,
|
||||
child: ListView.builder(
|
||||
itemCount: type4Content.length,
|
||||
itemBuilder: (context, index) {
|
||||
String key = type4Content.keys
|
||||
.elementAt(index);
|
||||
String value = type4Content[key]!;
|
||||
return Padding(
|
||||
padding:
|
||||
const EdgeInsets.symmetric(
|
||||
vertical: 8.0),
|
||||
child: Row(
|
||||
crossAxisAlignment:
|
||||
CrossAxisAlignment.start,
|
||||
children: <Widget>[
|
||||
Padding(
|
||||
padding:
|
||||
const EdgeInsets.only(
|
||||
left: 20.0),
|
||||
child: Text(
|
||||
"• ",
|
||||
style:
|
||||
GoogleFonts.poppins(
|
||||
fontSize: 16,
|
||||
fontWeight:
|
||||
FontWeight.w400,
|
||||
color:
|
||||
Color(0xFFE26728),
|
||||
),
|
||||
),
|
||||
),
|
||||
Expanded(
|
||||
child: Text(
|
||||
value,
|
||||
style:
|
||||
GoogleFonts.poppins(
|
||||
fontSize: 16,
|
||||
fontWeight:
|
||||
FontWeight.w400,
|
||||
color:
|
||||
Color(0xFF000000),
|
||||
),
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
);
|
||||
},
|
||||
),
|
||||
);
|
||||
},
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
]),
|
||||
),
|
||||
Container(
|
||||
decoration: BoxDecoration(
|
||||
borderRadius: BorderRadius.circular(5),
|
||||
),
|
||||
padding: Responsive.isDesktop(context)
|
||||
? EdgeInsets.symmetric(vertical: 15, horizontal: 25)
|
||||
: EdgeInsets.all(10),
|
||||
child: Column(
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
children: [
|
||||
// Padding(
|
||||
// padding: EdgeInsets.only(bottom: 20),
|
||||
// child: Column(
|
||||
// crossAxisAlignment: CrossAxisAlignment.start,
|
||||
// children: [
|
||||
// Text(
|
||||
// type4SectionName ?? '',
|
||||
// style: GoogleFonts.poppins(
|
||||
// fontSize:
|
||||
// Responsive.isDesktop(context) ? 18 : 16,
|
||||
// fontWeight: FontWeight.w500,
|
||||
// color: Color(0xFF000000),
|
||||
// ),
|
||||
// ),
|
||||
// ],
|
||||
// ),
|
||||
// ),
|
||||
if (generalExclusionsDetails != null)
|
||||
Padding(
|
||||
padding: EdgeInsets.only(bottom: 20, left: 15),
|
||||
child: Column(
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
children: [
|
||||
Text(
|
||||
type5Heading ?? '',
|
||||
style: GoogleFonts.poppins(
|
||||
fontSize: Responsive.isDesktop(context)
|
||||
? 18
|
||||
: 16,
|
||||
fontWeight: FontWeight.w500,
|
||||
color: Color(0xFF000000),
|
||||
),
|
||||
),
|
||||
SizedBox(height: 10),
|
||||
LayoutBuilder(
|
||||
builder: (context, constraints) {
|
||||
double itemHeight =
|
||||
40; // Adjust item height based on content
|
||||
double listViewHeight =
|
||||
type5Content.length * itemHeight;
|
||||
double maxHeight = constraints.maxHeight;
|
||||
|
||||
if (listViewHeight > maxHeight) {
|
||||
listViewHeight = maxHeight;
|
||||
}
|
||||
|
||||
return Container(
|
||||
height: listViewHeight,
|
||||
child: ListView.builder(
|
||||
itemCount: type5Content.length,
|
||||
itemBuilder: (context, index) {
|
||||
String key = type5Content.keys
|
||||
.elementAt(index);
|
||||
String value = type5Content[key]!;
|
||||
return Padding(
|
||||
padding:
|
||||
const EdgeInsets.symmetric(
|
||||
vertical: 8.0),
|
||||
child: Row(
|
||||
crossAxisAlignment:
|
||||
CrossAxisAlignment.start,
|
||||
children: <Widget>[
|
||||
Padding(
|
||||
padding:
|
||||
const EdgeInsets.only(
|
||||
left: 20.0),
|
||||
child: Text(
|
||||
"• ",
|
||||
style:
|
||||
GoogleFonts.poppins(
|
||||
fontSize: 16,
|
||||
fontWeight:
|
||||
FontWeight.w400,
|
||||
color:
|
||||
Color(0xFFE26728),
|
||||
),
|
||||
),
|
||||
),
|
||||
Expanded(
|
||||
child: Text(
|
||||
value,
|
||||
style:
|
||||
GoogleFonts.poppins(
|
||||
fontSize: 16,
|
||||
fontWeight:
|
||||
FontWeight.w400,
|
||||
color:
|
||||
Color(0xFF000000),
|
||||
),
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
);
|
||||
},
|
||||
),
|
||||
);
|
||||
},
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
]),
|
||||
),
|
||||
Container(
|
||||
decoration: BoxDecoration(
|
||||
borderRadius: BorderRadius.circular(5),
|
||||
),
|
||||
padding: Responsive.isDesktop(context)
|
||||
? EdgeInsets.symmetric(vertical: 15, horizontal: 25)
|
||||
: EdgeInsets.all(10),
|
||||
child: Column(
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
children: [
|
||||
// Padding(
|
||||
// padding: EdgeInsets.only(bottom: 20),
|
||||
// child: Column(
|
||||
// crossAxisAlignment: CrossAxisAlignment.start,
|
||||
// children: [
|
||||
// Text(
|
||||
// type4SectionName ?? '',
|
||||
// style: GoogleFonts.poppins(
|
||||
// fontSize:
|
||||
// Responsive.isDesktop(context) ? 18 : 16,
|
||||
// fontWeight: FontWeight.w500,
|
||||
// color: Color(0xFF000000),
|
||||
// ),
|
||||
// ),
|
||||
// ],
|
||||
// ),
|
||||
// ),
|
||||
if (generalExclusionsDetails != null)
|
||||
Padding(
|
||||
padding: EdgeInsets.only(bottom: 20, left: 15),
|
||||
child: Column(
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
children: [
|
||||
Text(
|
||||
type6Heading ?? '',
|
||||
style: GoogleFonts.poppins(
|
||||
fontSize: Responsive.isDesktop(context)
|
||||
? 18
|
||||
: 16,
|
||||
fontWeight: FontWeight.w500,
|
||||
color: Color(0xFF000000),
|
||||
),
|
||||
),
|
||||
SizedBox(height: 10),
|
||||
LayoutBuilder(
|
||||
builder: (context, constraints) {
|
||||
double itemHeight =
|
||||
40; // Adjust item height based on content
|
||||
double listViewHeight =
|
||||
type6Content.length * itemHeight;
|
||||
double maxHeight = constraints.maxHeight;
|
||||
|
||||
if (listViewHeight > maxHeight) {
|
||||
listViewHeight = maxHeight;
|
||||
}
|
||||
|
||||
return Container(
|
||||
height: listViewHeight,
|
||||
child: ListView.builder(
|
||||
itemCount: type6Content.length,
|
||||
itemBuilder: (context, index) {
|
||||
String key = type6Content.keys
|
||||
.elementAt(index);
|
||||
String value = type6Content[key]!;
|
||||
return Padding(
|
||||
padding:
|
||||
const EdgeInsets.symmetric(
|
||||
vertical: 8.0),
|
||||
child: Row(
|
||||
crossAxisAlignment:
|
||||
CrossAxisAlignment.start,
|
||||
children: <Widget>[
|
||||
Padding(
|
||||
padding:
|
||||
const EdgeInsets.only(
|
||||
left: 20.0),
|
||||
child: Text(
|
||||
"• ",
|
||||
style:
|
||||
GoogleFonts.poppins(
|
||||
fontSize: 16,
|
||||
fontWeight:
|
||||
FontWeight.w400,
|
||||
color:
|
||||
Color(0xFFE26728),
|
||||
),
|
||||
),
|
||||
),
|
||||
Expanded(
|
||||
child: Text(
|
||||
value,
|
||||
style:
|
||||
GoogleFonts.poppins(
|
||||
fontSize: 16,
|
||||
fontWeight:
|
||||
FontWeight.w400,
|
||||
color:
|
||||
Color(0xFF000000),
|
||||
),
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
);
|
||||
},
|
||||
),
|
||||
);
|
||||
},
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
]),
|
||||
),
|
||||
Container(
|
||||
decoration: BoxDecoration(
|
||||
borderRadius: BorderRadius.circular(5),
|
||||
),
|
||||
padding: Responsive.isDesktop(context)
|
||||
? EdgeInsets.symmetric(vertical: 15, horizontal: 25)
|
||||
: EdgeInsets.all(10),
|
||||
child: Column(
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
children: [
|
||||
// Padding(
|
||||
// padding: EdgeInsets.only(bottom: 20),
|
||||
// child: Column(
|
||||
// crossAxisAlignment: CrossAxisAlignment.start,
|
||||
// children: [
|
||||
// Text(
|
||||
// type4SectionName ?? '',
|
||||
// style: GoogleFonts.poppins(
|
||||
// fontSize:
|
||||
// Responsive.isDesktop(context) ? 18 : 16,
|
||||
// fontWeight: FontWeight.w500,
|
||||
// color: Color(0xFF000000),
|
||||
// ),
|
||||
// ),
|
||||
// ],
|
||||
// ),
|
||||
// ),
|
||||
if (generalExclusionsDetails != null)
|
||||
Padding(
|
||||
padding: EdgeInsets.only(bottom: 20, left: 15),
|
||||
child: Column(
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
children: [
|
||||
Text(
|
||||
type7Heading ?? '',
|
||||
style: GoogleFonts.poppins(
|
||||
fontSize: Responsive.isDesktop(context)
|
||||
? 18
|
||||
: 16,
|
||||
fontWeight: FontWeight.w500,
|
||||
color: Color(0xFF000000),
|
||||
),
|
||||
),
|
||||
SizedBox(height: 10),
|
||||
LayoutBuilder(
|
||||
builder: (context, constraints) {
|
||||
double itemHeight =
|
||||
40; // Adjust item height based on content
|
||||
double listViewHeight =
|
||||
type7Content.length * itemHeight;
|
||||
double maxHeight = constraints.maxHeight;
|
||||
|
||||
if (listViewHeight > maxHeight) {
|
||||
listViewHeight = maxHeight;
|
||||
}
|
||||
|
||||
return Container(
|
||||
height: listViewHeight,
|
||||
child: ListView.builder(
|
||||
itemCount: type7Content.length,
|
||||
itemBuilder: (context, index) {
|
||||
String key = type7Content.keys
|
||||
.elementAt(index);
|
||||
String value = type7Content[key]!;
|
||||
return Padding(
|
||||
padding:
|
||||
const EdgeInsets.symmetric(
|
||||
vertical: 8.0),
|
||||
child: Row(
|
||||
crossAxisAlignment:
|
||||
CrossAxisAlignment.start,
|
||||
children: <Widget>[
|
||||
Padding(
|
||||
padding:
|
||||
const EdgeInsets.only(
|
||||
left: 20.0),
|
||||
child: Text(
|
||||
"• ",
|
||||
style:
|
||||
GoogleFonts.poppins(
|
||||
fontSize: 16,
|
||||
fontWeight:
|
||||
FontWeight.w400,
|
||||
color:
|
||||
Color(0xFFE26728),
|
||||
),
|
||||
),
|
||||
),
|
||||
Expanded(
|
||||
child: Text(
|
||||
value,
|
||||
style:
|
||||
GoogleFonts.poppins(
|
||||
fontSize: 16,
|
||||
fontWeight:
|
||||
FontWeight.w400,
|
||||
color:
|
||||
Color(0xFF000000),
|
||||
),
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
);
|
||||
},
|
||||
),
|
||||
);
|
||||
},
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
]),
|
||||
),
|
||||
SizedBox(height: Responsive.isDesktop(context) ? 40 : 10),
|
||||
],
|
||||
),
|
||||
),
|
||||
),
|
||||
if (Responsive.isDesktop(context))
|
||||
Align(
|
||||
alignment: Alignment.bottomCenter,
|
||||
child: Container(
|
||||
width: double.infinity,
|
||||
child: CustomFooter(),
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
floatingActionButtonLocation: Responsive.isDesktop(context)
|
||||
? null
|
||||
: FloatingActionButtonLocation.centerDocked,
|
||||
bottomNavigationBar: Responsive.isDesktop(context)
|
||||
? null
|
||||
: CustomBottomNavigationBar(
|
||||
onTabChanged: (index) {
|
||||
if (index == 0) {
|
||||
Navigator.pushNamed(context, 'home');
|
||||
} else if (index == 1) {
|
||||
Navigator.pushNamed(context, 'claims');
|
||||
} else if (index == 2) {
|
||||
Navigator.pushNamed(context, 'profile');
|
||||
} else if (index == 3) {
|
||||
Navigator.pushNamed(context, 'help');
|
||||
}
|
||||
},
|
||||
icons: [
|
||||
Icons.home_outlined,
|
||||
Icons.sticky_note_2_outlined,
|
||||
Icons.person_outline_outlined,
|
||||
Icons.headset_mic_outlined,
|
||||
],
|
||||
labels: [
|
||||
"Home",
|
||||
"Claim",
|
||||
"Profile",
|
||||
"Help",
|
||||
],
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
||||
@ -11,6 +11,8 @@ import '../customAppBar/toastHelper.dart';
|
||||
import '../models/environment.dart';
|
||||
import 'package:http/http.dart' as http;
|
||||
|
||||
import '../service/api_service.dart';
|
||||
|
||||
class help extends StatefulWidget {
|
||||
const help({Key? key}) : super(key: key);
|
||||
|
||||
@ -19,6 +21,7 @@ class help extends StatefulWidget {
|
||||
}
|
||||
|
||||
class _helpState extends State<help> {
|
||||
late ApiService apiService;
|
||||
int _currentIndex = 0;
|
||||
bool isActive = true;
|
||||
dynamic _token;
|
||||
@ -32,6 +35,9 @@ class _helpState extends State<help> {
|
||||
dynamic EmployeePolicy;
|
||||
List<Map<String, String>> employeeDetails = [];
|
||||
dynamic argumentsData;
|
||||
dynamic accountManagerDetails;
|
||||
dynamic accountManagerMobileNo;
|
||||
dynamic accountManagerEmail;
|
||||
|
||||
void _onTabChanged(int index) {
|
||||
setState(() {
|
||||
@ -42,6 +48,7 @@ class _helpState extends State<help> {
|
||||
@override
|
||||
void initState() {
|
||||
super.initState();
|
||||
apiService = ApiService(context); // Initialize ApiService here
|
||||
_loadToken();
|
||||
}
|
||||
|
||||
@ -66,55 +73,37 @@ class _helpState extends State<help> {
|
||||
empPrimaryId = prefs.getString('empPrimaryId');
|
||||
client_id = prefs.getString('client_id');
|
||||
print(client_id);
|
||||
getActiveAndInactivePolicyDetails('Active');
|
||||
getSelfEmployeeProfile();
|
||||
} else {
|
||||
// Token is empty or null, handle accordingly (e.g., navigate to login screen)
|
||||
// For now, let's navigate to the login screen
|
||||
ToastHelper.showErrorToast(context, 'Session Out');
|
||||
Navigator.pushReplacementNamed(context, 'phone');
|
||||
Navigator.pushReplacementNamed(context, 'login');
|
||||
}
|
||||
}
|
||||
|
||||
Future<void> getActiveAndInactivePolicyDetails(Status) async {
|
||||
var url = Uri.parse(Environment.apiUrl +
|
||||
'getEmployeeActiveOrInactivePolicy?client_id=$client_id&emp_code=$empCodeString&type=$Status');
|
||||
try {
|
||||
var response = await http.get(
|
||||
url,
|
||||
headers: {
|
||||
'Authorization':
|
||||
'Bearer $_token', // Add token to the Authorization header
|
||||
},
|
||||
);
|
||||
if (response.statusCode == 200) {
|
||||
Map<String, dynamic> data = json.decode(response.body);
|
||||
if (data['status'] == 'success') {
|
||||
setState(() {
|
||||
policyList = data['data'];
|
||||
});
|
||||
// Assuming data is a List
|
||||
print(policyList);
|
||||
} else {
|
||||
setState(() {
|
||||
policyDataIsEmpty = 0;
|
||||
});
|
||||
// Handle other status messages if needed
|
||||
// ToastHelper.showErrorToast(
|
||||
// context, 'API request failed with status: ${data['status']}');
|
||||
print('API request failed with status: ${data['status']}');
|
||||
}
|
||||
} else {
|
||||
setState(() {
|
||||
policyDataIsEmpty = 0;
|
||||
});
|
||||
// Handle other status codes
|
||||
// ToastHelper.showErrorToast(
|
||||
// context, 'Request failed with status: ${response.statusCode}');
|
||||
print('Request failed with status: ${response.statusCode}');
|
||||
}
|
||||
} catch (e) {
|
||||
// Handle exceptions
|
||||
print('Exception occurred: $e');
|
||||
Future<void> getSelfEmployeeProfile() async {
|
||||
print(getSelfEmployeeProfile);
|
||||
if (client_id == null || empCodeString == null) {
|
||||
return;
|
||||
}
|
||||
print('check 1');
|
||||
final response = await apiService.getSelfEmployeeProfileDetails(
|
||||
client_id!, empCodeString!);
|
||||
print('check 1');
|
||||
if (response['status'] == 'success') {
|
||||
print(response);
|
||||
setState(() {
|
||||
accountManagerDetails = response['AccountManagerDetails'];
|
||||
print('accountManagerDetails');
|
||||
print(accountManagerDetails);
|
||||
accountManagerEmail = accountManagerDetails['email'];
|
||||
print(accountManagerEmail);
|
||||
accountManagerMobileNo = accountManagerDetails['mobile'];
|
||||
print(accountManagerMobileNo);
|
||||
});
|
||||
} else {
|
||||
print('API request failed with status: ${response['status']}');
|
||||
}
|
||||
}
|
||||
|
||||
@ -142,6 +131,31 @@ class _helpState extends State<help> {
|
||||
child: Column(
|
||||
crossAxisAlignment: CrossAxisAlignment.center,
|
||||
children: [
|
||||
if (!Responsive.isDesktop(context))
|
||||
Row(
|
||||
mainAxisAlignment: MainAxisAlignment.start,
|
||||
children: [
|
||||
Expanded(
|
||||
flex: 12,
|
||||
child: InkWell(
|
||||
onTap: () {
|
||||
Navigator.pushNamed(context, 'home');
|
||||
},
|
||||
child: Row(
|
||||
mainAxisAlignment: MainAxisAlignment.start,
|
||||
children: [
|
||||
Icon(
|
||||
Icons
|
||||
.chevron_left, // Replace with your desired icon
|
||||
color: Color(0xFF000000),
|
||||
size: 30,
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
Row(
|
||||
crossAxisAlignment: CrossAxisAlignment.center,
|
||||
children: [
|
||||
@ -225,8 +239,10 @@ class _helpState extends State<help> {
|
||||
),
|
||||
Container(
|
||||
constraints: BoxConstraints(
|
||||
maxWidth:
|
||||
250), // Adjust the maximum width as needed
|
||||
maxWidth: Responsive.isDesktop(
|
||||
context)
|
||||
? 800
|
||||
: 250), // Adjust the maximum width as needed
|
||||
child: Text(
|
||||
'Please raise a service request, if you have any concerns with your policy.',
|
||||
textAlign: TextAlign.left,
|
||||
@ -271,7 +287,14 @@ class _helpState extends State<help> {
|
||||
height: 150,
|
||||
alignment: Alignment.center,
|
||||
child: ElevatedButton(
|
||||
onPressed: () {},
|
||||
onPressed: () {
|
||||
var details = {
|
||||
'claimsDetails': '',
|
||||
'fromClaimPage': 1
|
||||
};
|
||||
Navigator.pushNamed(context, 'planclaimsform',
|
||||
arguments: details);
|
||||
},
|
||||
child: Text(
|
||||
'Raise a request',
|
||||
style: GoogleFonts.poppins(color: Colors.white),
|
||||
@ -287,6 +310,98 @@ class _helpState extends State<help> {
|
||||
],
|
||||
),
|
||||
),
|
||||
SizedBox(height: 15),
|
||||
if (accountManagerDetails != null)
|
||||
Container(
|
||||
decoration: BoxDecoration(
|
||||
color: Colors.white, // Set background color for the container
|
||||
),
|
||||
padding: Responsive.isDesktop(context)
|
||||
? EdgeInsets.only(top: 10, bottom: 10, left: 10, right: 10)
|
||||
: EdgeInsets.only(top: 10, bottom: 10, left: 10, right: 10),
|
||||
child: Column(
|
||||
crossAxisAlignment: CrossAxisAlignment.center,
|
||||
children: [
|
||||
Padding(
|
||||
padding: EdgeInsets.only(bottom: 10),
|
||||
child: Column(
|
||||
crossAxisAlignment: CrossAxisAlignment.center,
|
||||
children: [
|
||||
Text(
|
||||
'Nhance Account Manager Contact',
|
||||
style: GoogleFonts.poppins(
|
||||
fontSize:
|
||||
Responsive.isDesktop(context) ? 16 : 12,
|
||||
fontWeight: FontWeight.w400,
|
||||
color: Color(0xFF777777),
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
Padding(
|
||||
padding: EdgeInsets.only(bottom: 10),
|
||||
child: Center(
|
||||
child: Column(
|
||||
crossAxisAlignment: CrossAxisAlignment.center,
|
||||
children: [
|
||||
Row(
|
||||
mainAxisAlignment: MainAxisAlignment
|
||||
.center, // Center align the row
|
||||
crossAxisAlignment: CrossAxisAlignment.center,
|
||||
children: <Widget>[
|
||||
Icon(
|
||||
Icons.email,
|
||||
size: 20,
|
||||
color: Color(0xFFE26728),
|
||||
),
|
||||
SizedBox(
|
||||
width: 10), // Space between icon and text
|
||||
Text(
|
||||
accountManagerEmail ?? '',
|
||||
style: GoogleFonts.poppins(
|
||||
fontSize: Responsive.isDesktop(context)
|
||||
? 16
|
||||
: 14,
|
||||
fontWeight: FontWeight.w400,
|
||||
color: Color(0xFF000000),
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
SizedBox(
|
||||
height:
|
||||
10), // Space between email and mobile rows
|
||||
Row(
|
||||
mainAxisAlignment: MainAxisAlignment
|
||||
.center, // Center align the row
|
||||
crossAxisAlignment: CrossAxisAlignment.center,
|
||||
children: <Widget>[
|
||||
Icon(
|
||||
Icons.smartphone,
|
||||
size: 20,
|
||||
color: Color(0xFFE26728),
|
||||
),
|
||||
SizedBox(
|
||||
width: 10), // Space between icon and text
|
||||
Text(
|
||||
accountManagerMobileNo ?? '',
|
||||
style: GoogleFonts.poppins(
|
||||
fontSize: Responsive.isDesktop(context)
|
||||
? 16
|
||||
: 14,
|
||||
fontWeight: FontWeight.w400,
|
||||
color: Color(0xFF000000),
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
)
|
||||
]),
|
||||
),
|
||||
SizedBox(height: Responsive.isDesktop(context) ? 40 : 10),
|
||||
]),
|
||||
)),
|
||||
@ -327,10 +442,10 @@ class _helpState extends State<help> {
|
||||
}
|
||||
},
|
||||
icons: [
|
||||
Icons.home,
|
||||
Icons.sticky_note_2_sharp,
|
||||
Icons.account_circle,
|
||||
Icons.help,
|
||||
Icons.home_outlined,
|
||||
Icons.sticky_note_2_outlined,
|
||||
Icons.person_outline_outlined,
|
||||
Icons.headset_mic_outlined,
|
||||
],
|
||||
labels: [
|
||||
"Home",
|
||||
@ -342,151 +457,4 @@ class _helpState extends State<help> {
|
||||
),
|
||||
);
|
||||
}
|
||||
|
||||
List<Widget> generateCards(List<dynamic> data) {
|
||||
print('generateCards');
|
||||
print(data);
|
||||
return [
|
||||
GridView.builder(
|
||||
shrinkWrap: true,
|
||||
physics: NeverScrollableScrollPhysics(),
|
||||
gridDelegate: SliverGridDelegateWithFixedCrossAxisCount(
|
||||
crossAxisCount: 1,
|
||||
crossAxisSpacing: 20.0,
|
||||
mainAxisSpacing: 20.0,
|
||||
childAspectRatio: 10.5,
|
||||
),
|
||||
itemCount: data.length,
|
||||
itemBuilder: (BuildContext context, int index) {
|
||||
var item = data[index];
|
||||
String policyHeading = item['heading'];
|
||||
String policyName = item['policy_name'];
|
||||
String si_value = item['si_value'];
|
||||
String policyEndDate = item['policy_end_date'];
|
||||
List<dynamic> employeePolicy = item['EmployeePolicy'];
|
||||
|
||||
return GestureDetector(
|
||||
onTap: () {
|
||||
Navigator.pushNamed(context, 'policies', arguments: item);
|
||||
},
|
||||
child: MouseRegion(
|
||||
cursor: SystemMouseCursors.click,
|
||||
child: Card(
|
||||
elevation: 0,
|
||||
shape: RoundedRectangleBorder(
|
||||
side: BorderSide(
|
||||
color: Color(0xFFD9D9D9), // Set the border color here
|
||||
width: 1.0, // Set the border width here
|
||||
),
|
||||
borderRadius: BorderRadius.circular(
|
||||
8.0), // Set the border radius here
|
||||
),
|
||||
child: Column(children: [
|
||||
Container(
|
||||
decoration: BoxDecoration(
|
||||
color: Colors
|
||||
.white, // Set background color for the container
|
||||
),
|
||||
padding: Responsive.isDesktop(context)
|
||||
? EdgeInsets.only(
|
||||
top: 10, bottom: 10, left: 10, right: 10)
|
||||
: EdgeInsets.only(
|
||||
top: 10, bottom: 10, left: 10, right: 10),
|
||||
child: Row(
|
||||
crossAxisAlignment: CrossAxisAlignment.center,
|
||||
children: [
|
||||
Expanded(
|
||||
flex: 6,
|
||||
child: Container(
|
||||
alignment: Alignment.centerLeft,
|
||||
child: Column(
|
||||
mainAxisAlignment:
|
||||
MainAxisAlignment.start,
|
||||
crossAxisAlignment:
|
||||
CrossAxisAlignment.start,
|
||||
children: [
|
||||
Text(
|
||||
'Supplier',
|
||||
textAlign: TextAlign.left,
|
||||
style: GoogleFonts.poppins(
|
||||
fontSize:
|
||||
Responsive.isDesktop(context)
|
||||
? 16
|
||||
: 12,
|
||||
fontWeight: FontWeight.w400,
|
||||
color: Color(0xFF979797),
|
||||
),
|
||||
),
|
||||
Text(
|
||||
policyName ?? '',
|
||||
textAlign: TextAlign.left,
|
||||
style: GoogleFonts.poppins(
|
||||
fontSize:
|
||||
Responsive.isDesktop(context)
|
||||
? 18
|
||||
: 16,
|
||||
fontWeight: FontWeight.w600,
|
||||
color: Color(0xFF000000),
|
||||
),
|
||||
),
|
||||
],
|
||||
))),
|
||||
Expanded(
|
||||
flex: 5,
|
||||
child: Container(
|
||||
alignment: Alignment.centerRight,
|
||||
child: Column(
|
||||
mainAxisAlignment: MainAxisAlignment.end,
|
||||
crossAxisAlignment:
|
||||
CrossAxisAlignment.end,
|
||||
children: [
|
||||
Text(
|
||||
'Cover Amount',
|
||||
textAlign: TextAlign.end,
|
||||
style: GoogleFonts.poppins(
|
||||
fontSize:
|
||||
Responsive.isDesktop(context)
|
||||
? 16
|
||||
: 12,
|
||||
fontWeight: FontWeight.w400,
|
||||
color: Color(0xFF979797),
|
||||
),
|
||||
),
|
||||
Text(
|
||||
'₹ $si_value',
|
||||
textAlign: TextAlign.end,
|
||||
style: GoogleFonts.poppins(
|
||||
fontSize:
|
||||
Responsive.isDesktop(context)
|
||||
? 18
|
||||
: 16,
|
||||
fontWeight: FontWeight.w600,
|
||||
color: Color(0xFF000000),
|
||||
),
|
||||
),
|
||||
],
|
||||
))),
|
||||
Expanded(
|
||||
flex: 1,
|
||||
child: Row(
|
||||
mainAxisAlignment: MainAxisAlignment.end,
|
||||
children: [
|
||||
Icon(
|
||||
Icons
|
||||
.chevron_right, // Replace with your desired icon
|
||||
color: Color(0xFFE26728),
|
||||
size: 20,
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
])),
|
||||
));
|
||||
},
|
||||
),
|
||||
];
|
||||
}
|
||||
}
|
||||
|
||||
@ -1,5 +1,6 @@
|
||||
import 'dart:convert';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter/services.dart';
|
||||
import 'package:flutter_image_slideshow/flutter_image_slideshow.dart';
|
||||
import 'package:google_fonts/google_fonts.dart';
|
||||
import 'package:intl/intl.dart';
|
||||
@ -13,6 +14,8 @@ import '../customAppBar/toastHelper.dart';
|
||||
import '../models/environment.dart';
|
||||
import 'package:http/http.dart' as http;
|
||||
|
||||
import '../service/api_service.dart';
|
||||
|
||||
class MyApp extends StatefulWidget {
|
||||
const MyApp({Key? key}) : super(key: key);
|
||||
|
||||
@ -21,6 +24,7 @@ class MyApp extends StatefulWidget {
|
||||
}
|
||||
|
||||
class _MyAppState extends State<MyApp> {
|
||||
late ApiService apiService;
|
||||
int _currentIndex = 0;
|
||||
bool isActive = true;
|
||||
dynamic _token;
|
||||
@ -33,6 +37,9 @@ class _MyAppState extends State<MyApp> {
|
||||
dynamic policyName;
|
||||
dynamic EmployeePolicy;
|
||||
dynamic emp_name;
|
||||
dynamic client_branch_id;
|
||||
List<String> advertisementImages = [];
|
||||
bool isLoading = true;
|
||||
|
||||
void _onTabChanged(int index) {
|
||||
setState(() {
|
||||
@ -43,6 +50,7 @@ class _MyAppState extends State<MyApp> {
|
||||
@override
|
||||
void initState() {
|
||||
super.initState();
|
||||
apiService = ApiService(context); // Initialize ApiService here
|
||||
_loadToken();
|
||||
}
|
||||
|
||||
@ -58,65 +66,66 @@ class _MyAppState extends State<MyApp> {
|
||||
if (token != null && token.isNotEmpty) {
|
||||
setState(() {
|
||||
_token = token;
|
||||
|
||||
// Decode the JWT token received from the API response
|
||||
Map<String, dynamic>? decodedToken = Jwt.parseJwt(token);
|
||||
print(decodedToken);
|
||||
client_branch_id = decodedToken['client_branch_id'];
|
||||
empCodeString = prefs.getString('empCode');
|
||||
print(empCodeString); // Check if emp_code is correct
|
||||
empPrimaryId = prefs.getString('empPrimaryId');
|
||||
client_id = prefs.getString('client_id');
|
||||
print(client_id);
|
||||
getAdvertisementSliderImage();
|
||||
getActiveAndInactivePolicyDetails('Active');
|
||||
});
|
||||
// Decode the JWT token received from the API response
|
||||
Map<String, dynamic>? decodedToken = Jwt.parseJwt(token);
|
||||
print(decodedToken);
|
||||
empCodeString = prefs.getString('empCode');
|
||||
print(empCodeString); // Check if emp_code is correct
|
||||
empPrimaryId = prefs.getString('empPrimaryId');
|
||||
client_id = prefs.getString('client_id');
|
||||
print(client_id);
|
||||
getActiveAndInactivePolicyDetails('Active');
|
||||
} else {
|
||||
// Token is empty or null, handle accordingly (e.g., navigate to login screen)
|
||||
// For now, let's navigate to the login screen
|
||||
ToastHelper.showErrorToast(context, 'Session Out');
|
||||
Navigator.pushReplacementNamed(context, 'phone');
|
||||
Navigator.pushReplacementNamed(context, 'login');
|
||||
}
|
||||
}
|
||||
|
||||
Future<void> getActiveAndInactivePolicyDetails(Status) async {
|
||||
var url = Uri.parse(Environment.apiUrl +
|
||||
'getEmployeeActiveOrInactivePolicy?client_id=$client_id&emp_code=$empCodeString&type=$Status');
|
||||
try {
|
||||
var response = await http.get(
|
||||
url,
|
||||
headers: {
|
||||
'Authorization':
|
||||
'Bearer $_token', // Add token to the Authorization header
|
||||
},
|
||||
);
|
||||
if (response.statusCode == 200) {
|
||||
Map<String, dynamic> data = json.decode(response.body);
|
||||
if (data['status'] == 'success') {
|
||||
setState(() {
|
||||
policyList = data['data'];
|
||||
emp_name = data['emp_name'];
|
||||
});
|
||||
// Assuming data is a List
|
||||
print(policyList);
|
||||
} else {
|
||||
setState(() {
|
||||
policyDataIsEmpty = 0;
|
||||
});
|
||||
// Handle other status messages if needed
|
||||
// ToastHelper.showErrorToast(
|
||||
// context, 'API request failed with status: ${data['status']}');
|
||||
print('API request failed with status: ${data['status']}');
|
||||
}
|
||||
} else {
|
||||
setState(() {
|
||||
policyDataIsEmpty = 0;
|
||||
});
|
||||
// Handle other status codes
|
||||
// ToastHelper.showErrorToast(
|
||||
// context, 'Request failed with status: ${response.statusCode}');
|
||||
print('Request failed with status: ${response.statusCode}');
|
||||
}
|
||||
} catch (e) {
|
||||
// Handle exceptions
|
||||
print('Exception occurred: $e');
|
||||
Future<void> getActiveAndInactivePolicyDetails(String status) async {
|
||||
print(getActiveAndInactivePolicyDetails);
|
||||
if (client_id == null || empCodeString == null) {
|
||||
return;
|
||||
}
|
||||
print('check 1');
|
||||
final response = await apiService.getActiveAndInactivePolicyDetails(
|
||||
client_id!, empCodeString!, status, client_branch_id);
|
||||
print('check 1');
|
||||
if (response['status'] == 'success') {
|
||||
setState(() {
|
||||
policyList = response['data'];
|
||||
emp_name = response['emp_name'];
|
||||
});
|
||||
print(policyList);
|
||||
} else {
|
||||
setState(() {
|
||||
policyDataIsEmpty = 0;
|
||||
});
|
||||
print('API request failed with status: ${response['status']}');
|
||||
}
|
||||
}
|
||||
|
||||
Future<void> getAdvertisementSliderImage() async {
|
||||
final response = await apiService.getAdvertisementImageToApi();
|
||||
print('check 1');
|
||||
if (response['status'] == 'success') {
|
||||
setState(() {
|
||||
advertisementImages = List<String>.from(response['data']);
|
||||
print('advertisementImages');
|
||||
print(advertisementImages);
|
||||
isLoading = false;
|
||||
});
|
||||
// print(policyList);
|
||||
} else {
|
||||
print('API request failed with status: ${response['status']}');
|
||||
setState(() {
|
||||
isLoading = false;
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
@ -139,6 +148,11 @@ class _MyAppState extends State<MyApp> {
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
if (!Responsive.isDesktop(context))
|
||||
SystemChrome.setSystemUIOverlayStyle(SystemUiOverlayStyle(
|
||||
statusBarColor: Color(0xFFFFFBDE), // Status bar color
|
||||
statusBarIconBrightness: Brightness.dark, // Light icons for status bar
|
||||
));
|
||||
return Scaffold(
|
||||
appBar: CustomAppBar(),
|
||||
body: Stack(children: [
|
||||
@ -151,18 +165,10 @@ class _MyAppState extends State<MyApp> {
|
||||
vertical: MediaQuery.of(context).size.height *
|
||||
0.03, // 5% of screen height as vertical padding
|
||||
)
|
||||
: EdgeInsets.all(10),
|
||||
: EdgeInsets.all(15),
|
||||
color: Colors.white,
|
||||
child: Column(children: [
|
||||
Container(
|
||||
decoration: BoxDecoration(
|
||||
// Set background color for the container
|
||||
borderRadius: BorderRadius.circular(
|
||||
5), // Set border radius for the container
|
||||
),
|
||||
padding: Responsive.isDesktop(context)
|
||||
? EdgeInsets.only(top: 15, bottom: 15, left: 25, right: 25)
|
||||
: EdgeInsets.only(top: 10, bottom: 10, left: 10, right: 10),
|
||||
child: Row(
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
children: [
|
||||
@ -182,17 +188,17 @@ class _MyAppState extends State<MyApp> {
|
||||
style: GoogleFonts.poppins(
|
||||
fontSize: Responsive.isDesktop(context)
|
||||
? 20
|
||||
: 16,
|
||||
: 20,
|
||||
fontWeight: FontWeight.w500,
|
||||
color: Color(0xFF000000),
|
||||
),
|
||||
),
|
||||
SizedBox(width: 5),
|
||||
Image.asset(
|
||||
'assets/emoji.png', // Replace 'path_to_your_image' with the actual path to your image asset
|
||||
width: 24, // Adjust the width as needed
|
||||
height: 24, // Adjust the height as needed
|
||||
),
|
||||
// SizedBox(width: 5),
|
||||
// Image.asset(
|
||||
// 'assets/emoji.png', // Replace 'path_to_your_image' with the actual path to your image asset
|
||||
// width: 24, // Adjust the width as needed
|
||||
// height: 24, // Adjust the height as needed
|
||||
// ),
|
||||
],
|
||||
),
|
||||
Text(
|
||||
@ -200,7 +206,7 @@ class _MyAppState extends State<MyApp> {
|
||||
textAlign: TextAlign.left,
|
||||
style: GoogleFonts.poppins(
|
||||
fontSize:
|
||||
Responsive.isDesktop(context) ? 12 : 10,
|
||||
Responsive.isDesktop(context) ? 12 : 14,
|
||||
fontWeight: FontWeight.w400,
|
||||
color: Color(0xFF7A7A7A),
|
||||
),
|
||||
@ -210,89 +216,102 @@ class _MyAppState extends State<MyApp> {
|
||||
],
|
||||
),
|
||||
),
|
||||
Container(
|
||||
decoration: BoxDecoration(
|
||||
// Set background color for the container
|
||||
borderRadius: BorderRadius.circular(
|
||||
5), // Set border radius for the container
|
||||
),
|
||||
padding: Responsive.isDesktop(context)
|
||||
? EdgeInsets.only(top: 15, bottom: 15, left: 25, right: 25)
|
||||
: EdgeInsets.only(top: 10, bottom: 10, left: 10, right: 10),
|
||||
child: Row(
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
children: [
|
||||
Expanded(
|
||||
flex: 12,
|
||||
child: Container(
|
||||
alignment: Alignment.centerLeft,
|
||||
child: Column(
|
||||
mainAxisAlignment: MainAxisAlignment.start,
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
children: [
|
||||
Container(
|
||||
child: ImageSlideshow(
|
||||
/// Width of the [ImageSlideshow].
|
||||
width: double.infinity,
|
||||
SizedBox(height: 15),
|
||||
if (advertisementImages != null)
|
||||
Container(
|
||||
child: Row(
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
children: [
|
||||
Expanded(
|
||||
flex: 12,
|
||||
child: Container(
|
||||
alignment: Alignment.centerLeft,
|
||||
child: isLoading
|
||||
? Center(child: CircularProgressIndicator())
|
||||
: advertisementImages.isEmpty
|
||||
? Center(child: Text("No images available"))
|
||||
: Container(
|
||||
child: Row(
|
||||
crossAxisAlignment:
|
||||
CrossAxisAlignment.start,
|
||||
children: [
|
||||
Expanded(
|
||||
flex: 12,
|
||||
child: Container(
|
||||
alignment: Alignment.centerLeft,
|
||||
child: Column(
|
||||
mainAxisAlignment:
|
||||
MainAxisAlignment.start,
|
||||
crossAxisAlignment:
|
||||
CrossAxisAlignment.start,
|
||||
children: [
|
||||
Container(
|
||||
child: ImageSlideshow(
|
||||
/// Width of the [ImageSlideshow].
|
||||
width: double.infinity,
|
||||
|
||||
/// Height of the [ImageSlideshow].
|
||||
height: Responsive.isDesktop(context) ? 200 : 130,
|
||||
/// Height of the [ImageSlideshow].
|
||||
height: 200,
|
||||
|
||||
/// The page to show when first creating the [ImageSlideshow].
|
||||
initialPage: 0,
|
||||
/// The page to show when first creating the [ImageSlideshow].
|
||||
initialPage: 0,
|
||||
|
||||
/// The color to paint the indicator.
|
||||
indicatorColor: Color(0xFFE26728),
|
||||
/// The color to paint the indicator.
|
||||
indicatorColor:
|
||||
Color(0xFFE26728),
|
||||
|
||||
/// The color to paint behind th indicator.
|
||||
indicatorBackgroundColor: Colors.grey,
|
||||
/// The color to paint behind the indicator.
|
||||
indicatorBackgroundColor:
|
||||
Colors.grey,
|
||||
|
||||
/// The widgets to display in the [ImageSlideshow].
|
||||
/// Add the sample image file into the images folder
|
||||
children: [
|
||||
Image.asset(
|
||||
'assets/slider1.png',
|
||||
fit: BoxFit.cover,
|
||||
),
|
||||
Image.asset(
|
||||
'assets/slider2.png',
|
||||
fit: BoxFit.cover,
|
||||
),
|
||||
Image.asset(
|
||||
'assets/slider3.png',
|
||||
fit: BoxFit.cover,
|
||||
),
|
||||
],
|
||||
/// The widgets to display in the [ImageSlideshow].
|
||||
children:
|
||||
advertisementImages
|
||||
.map(
|
||||
(imageUrl) =>
|
||||
ClipRRect(
|
||||
borderRadius:
|
||||
BorderRadius
|
||||
.circular(
|
||||
8),
|
||||
child: Image
|
||||
.network(
|
||||
imageUrl,
|
||||
fit: BoxFit
|
||||
.cover,
|
||||
),
|
||||
),
|
||||
)
|
||||
.toList(),
|
||||
|
||||
/// Called whenever the page in the center of the viewport changes.
|
||||
onPageChanged: (value) {
|
||||
print('Page changed: $value');
|
||||
},
|
||||
/// Called whenever the page in the center of the viewport changes.
|
||||
onPageChanged: (value) {
|
||||
print(
|
||||
'Page changed: $value');
|
||||
},
|
||||
|
||||
/// Auto scroll interval.
|
||||
/// Do not auto scroll with null or 0.
|
||||
autoPlayInterval: 3000,
|
||||
/// Auto scroll interval.
|
||||
/// Do not auto scroll with null or 0.
|
||||
autoPlayInterval: 3000,
|
||||
|
||||
/// Loops back to first slide.
|
||||
isLoop: true,
|
||||
),
|
||||
),
|
||||
],
|
||||
/// Loops back to the first slide.
|
||||
isLoop: true,
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
],
|
||||
],
|
||||
),
|
||||
),
|
||||
),
|
||||
SizedBox(height: 15),
|
||||
Container(
|
||||
decoration: BoxDecoration(
|
||||
// Set background color for the container
|
||||
borderRadius: BorderRadius.circular(
|
||||
5), // Set border radius for the container
|
||||
),
|
||||
padding: Responsive.isDesktop(context)
|
||||
? EdgeInsets.only(top: 15, bottom: 15, left: 25, right: 25)
|
||||
: EdgeInsets.only(top: 10, bottom: 10, left: 10, right: 10),
|
||||
child: Row(
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
children: [
|
||||
@ -312,7 +331,7 @@ class _MyAppState extends State<MyApp> {
|
||||
style: GoogleFonts.poppins(
|
||||
fontSize: Responsive.isDesktop(context)
|
||||
? 18
|
||||
: 16,
|
||||
: 18,
|
||||
fontWeight: FontWeight.w500,
|
||||
color: Color(0xFF000000),
|
||||
),
|
||||
@ -324,7 +343,7 @@ class _MyAppState extends State<MyApp> {
|
||||
textAlign: TextAlign.left,
|
||||
style: GoogleFonts.poppins(
|
||||
fontSize:
|
||||
Responsive.isDesktop(context) ? 12 : 10,
|
||||
Responsive.isDesktop(context) ? 12 : 14,
|
||||
fontWeight: FontWeight.w400,
|
||||
color: Color(0xFF7A7A7A),
|
||||
),
|
||||
@ -343,7 +362,7 @@ class _MyAppState extends State<MyApp> {
|
||||
5), // Set border radius for the container
|
||||
),
|
||||
padding: Responsive.isDesktop(context)
|
||||
? EdgeInsets.only(top: 15, bottom: 15, left: 25, right: 25)
|
||||
? EdgeInsets.only(top: 10, bottom: 10, left: 25, right: 25)
|
||||
: EdgeInsets.only(top: 10, bottom: 10, left: 10, right: 10),
|
||||
child: Row(
|
||||
crossAxisAlignment: CrossAxisAlignment.center,
|
||||
@ -385,8 +404,8 @@ class _MyAppState extends State<MyApp> {
|
||||
horizontal: Responsive
|
||||
.isDesktop(
|
||||
context)
|
||||
? 80
|
||||
: 40,
|
||||
? 160
|
||||
: 60,
|
||||
vertical: Responsive
|
||||
.isDesktop(
|
||||
context)
|
||||
@ -400,7 +419,7 @@ class _MyAppState extends State<MyApp> {
|
||||
.isDesktop(
|
||||
context)
|
||||
? 18
|
||||
: 12,
|
||||
: 14,
|
||||
fontWeight:
|
||||
FontWeight.w500,
|
||||
color: Color(
|
||||
@ -415,7 +434,7 @@ class _MyAppState extends State<MyApp> {
|
||||
Responsive.isDesktop(
|
||||
context)
|
||||
? 18
|
||||
: 12,
|
||||
: 14,
|
||||
fontWeight: FontWeight.w400,
|
||||
color: Color(0xFF636363),
|
||||
),
|
||||
@ -448,8 +467,8 @@ class _MyAppState extends State<MyApp> {
|
||||
horizontal: Responsive
|
||||
.isDesktop(
|
||||
context)
|
||||
? 80
|
||||
: 40,
|
||||
? 150
|
||||
: 60,
|
||||
vertical: Responsive
|
||||
.isDesktop(
|
||||
context)
|
||||
@ -465,7 +484,7 @@ class _MyAppState extends State<MyApp> {
|
||||
.isDesktop(
|
||||
context)
|
||||
? 18
|
||||
: 12,
|
||||
: 14,
|
||||
color:
|
||||
Color(0xFF593AFF),
|
||||
fontWeight:
|
||||
@ -481,7 +500,7 @@ class _MyAppState extends State<MyApp> {
|
||||
Responsive.isDesktop(
|
||||
context)
|
||||
? 18
|
||||
: 12,
|
||||
: 14,
|
||||
fontWeight: FontWeight.w400,
|
||||
color: Color(0xFF636363),
|
||||
),
|
||||
@ -543,10 +562,10 @@ class _MyAppState extends State<MyApp> {
|
||||
}
|
||||
},
|
||||
icons: [
|
||||
Icons.home,
|
||||
Icons.sticky_note_2_sharp,
|
||||
Icons.account_circle,
|
||||
Icons.help,
|
||||
Icons.home_outlined,
|
||||
Icons.sticky_note_2_outlined,
|
||||
Icons.person_outline_outlined,
|
||||
Icons.headset_mic_outlined,
|
||||
],
|
||||
labels: [
|
||||
"Home",
|
||||
|
||||
@ -507,12 +507,26 @@ class _loginState extends State<login> {
|
||||
color: Colors.black,
|
||||
fontSize: 9,
|
||||
),
|
||||
children: <TextSpan>[
|
||||
TextSpan(
|
||||
text: 'privacy policy ',
|
||||
style: GoogleFonts.poppins(
|
||||
color: Color(0xFF00989E),
|
||||
fontSize: 9,
|
||||
children: <InlineSpan>[
|
||||
WidgetSpan(
|
||||
child: MouseRegion(
|
||||
cursor:
|
||||
SystemMouseCursors.click,
|
||||
child: GestureDetector(
|
||||
onTap: () {
|
||||
Navigator.pushNamed(context,
|
||||
'privacypolicy');
|
||||
},
|
||||
child: Text(
|
||||
'privacy policy ',
|
||||
style: GoogleFonts.poppins(
|
||||
color: Color(0xFF00989E),
|
||||
fontSize: 9,
|
||||
decoration: TextDecoration
|
||||
.underline,
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
TextSpan(
|
||||
@ -522,11 +536,25 @@ class _loginState extends State<login> {
|
||||
fontSize: 9,
|
||||
),
|
||||
),
|
||||
TextSpan(
|
||||
text: 'terms of use',
|
||||
style: GoogleFonts.poppins(
|
||||
color: Color(0xFF00989E),
|
||||
fontSize: 9,
|
||||
WidgetSpan(
|
||||
child: MouseRegion(
|
||||
cursor:
|
||||
SystemMouseCursors.click,
|
||||
child: GestureDetector(
|
||||
onTap: () {
|
||||
Navigator.pushNamed(
|
||||
context, 'termsofuse');
|
||||
},
|
||||
child: Text(
|
||||
'terms of use',
|
||||
style: GoogleFonts.poppins(
|
||||
color: Color(0xFF00989E),
|
||||
fontSize: 9,
|
||||
decoration: TextDecoration
|
||||
.underline,
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
],
|
||||
|
||||
628
lib/pages/planclaimsform.dart
Normal file
@ -0,0 +1,628 @@
|
||||
import 'dart:convert';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:google_fonts/google_fonts.dart';
|
||||
import 'package:jwt_decode/jwt_decode.dart';
|
||||
import 'package:nhance_app_pwa/pages/policies.dart';
|
||||
import 'package:shared_preferences/shared_preferences.dart';
|
||||
import '../customAppBar/customAppBar.dart';
|
||||
import '../customAppBar/customFooter.dart';
|
||||
import '../customAppBar/tabs.dart';
|
||||
import '../customAppBar/responsive.dart';
|
||||
import '../customAppBar/toastHelper.dart';
|
||||
import '../models/environment.dart';
|
||||
import 'package:http/http.dart' as http;
|
||||
|
||||
import '../service/api_service.dart';
|
||||
|
||||
class planclaimsform extends StatefulWidget {
|
||||
const planclaimsform({Key? key}) : super(key: key);
|
||||
|
||||
@override
|
||||
State<planclaimsform> createState() => _planclaimsformState();
|
||||
}
|
||||
|
||||
class _planclaimsformState extends State<planclaimsform> {
|
||||
late ApiService apiService;
|
||||
dynamic _token;
|
||||
dynamic empCodeString;
|
||||
dynamic empPrimaryId;
|
||||
dynamic client_id;
|
||||
dynamic policyList;
|
||||
dynamic policyDataIsEmpty = 1;
|
||||
dynamic policyHeading;
|
||||
dynamic policyName;
|
||||
dynamic EmployeePolicy;
|
||||
List<Map<String, String>> employeeDetails = [];
|
||||
dynamic argumentsData;
|
||||
dynamic claimsDetails;
|
||||
int? fromClaimsPage;
|
||||
dynamic decodedToken;
|
||||
List<Map<String, dynamic>> departmentList = [];
|
||||
List<Map<String, dynamic>> policyNumberList = [];
|
||||
int? serviceId;
|
||||
int? policyNumberId;
|
||||
dynamic client_branch_id;
|
||||
|
||||
// Declare subjectController and bodyController as instance variables
|
||||
late TextEditingController subjectController;
|
||||
late TextEditingController messageController;
|
||||
|
||||
// Create a unique form key for each accordion section
|
||||
final GlobalKey<FormState> formKey = GlobalKey<FormState>();
|
||||
|
||||
@override
|
||||
void initState() {
|
||||
super.initState();
|
||||
subjectController = TextEditingController();
|
||||
messageController = TextEditingController();
|
||||
apiService = ApiService(context); // Initialize ApiService here
|
||||
_loadToken();
|
||||
|
||||
// Check if fromClaimsPage is 0 and set serviceId to 'Claims' (id is 2)
|
||||
if (fromClaimsPage == 0) {
|
||||
setInitialServiceId();
|
||||
}
|
||||
}
|
||||
|
||||
@override
|
||||
void dispose() {
|
||||
// Dispose the controllers to avoid memory leaks
|
||||
subjectController.dispose();
|
||||
messageController.dispose();
|
||||
super.dispose();
|
||||
}
|
||||
|
||||
@override
|
||||
void didChangeDependencies() {
|
||||
super.didChangeDependencies();
|
||||
dynamic arguments = ModalRoute.of(context)!.settings.arguments;
|
||||
if (arguments != null && arguments is Map<String, dynamic>) {
|
||||
argumentsData = arguments;
|
||||
claimsDetails = argumentsData['claimsDetails'];
|
||||
print(claimsDetails);
|
||||
if (argumentsData.containsKey('fromClaimPage')) {
|
||||
fromClaimsPage = argumentsData['fromClaimPage'];
|
||||
print(fromClaimsPage);
|
||||
}
|
||||
if (fromClaimsPage == 0) {
|
||||
setInitialServiceId();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void setInitialServiceId() {
|
||||
for (var department in departmentList) {
|
||||
if (department['name'] == 'Claims') {
|
||||
setState(() {
|
||||
serviceId = department['id'];
|
||||
});
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Future<void> _loadToken() async {
|
||||
print('_loadToken');
|
||||
final SharedPreferences prefs = await SharedPreferences.getInstance();
|
||||
final String? token = prefs.getString('token');
|
||||
if (token != null && token.isNotEmpty) {
|
||||
setState(() {
|
||||
_token = token;
|
||||
});
|
||||
// Decode the JWT token received from the API response
|
||||
decodedToken = Jwt.parseJwt(token);
|
||||
print(decodedToken);
|
||||
client_branch_id = decodedToken['client_branch_id'];
|
||||
empCodeString = prefs.getString('empCode');
|
||||
print(empCodeString); // Check if emp_code is correct
|
||||
empPrimaryId = prefs.getString('empPrimaryId');
|
||||
client_id = prefs.getString('client_id');
|
||||
print(client_id);
|
||||
getActiveAndInactivePolicyDetails('Active');
|
||||
fetchDepartmentList();
|
||||
} else {
|
||||
// Token is empty or null, handle accordingly (e.g., navigate to login screen)
|
||||
// For now, let's navigate to the login screen
|
||||
ToastHelper.showErrorToast(context, 'Session Out');
|
||||
Navigator.pushReplacementNamed(context, 'login');
|
||||
}
|
||||
}
|
||||
|
||||
Future<void> getActiveAndInactivePolicyDetails(String status) async {
|
||||
if (client_id == null || empCodeString == null) {
|
||||
return;
|
||||
}
|
||||
print('check 1');
|
||||
final response = await apiService.getActiveAndInactivePolicyDetails(
|
||||
client_id!, empCodeString!, status, client_branch_id);
|
||||
print('check 1');
|
||||
if (response['status'] == 'success') {
|
||||
List<dynamic> policyListDetails = response['data'];
|
||||
setState(() {
|
||||
print(policyListDetails);
|
||||
policyNumberList = policyListDetails.map((policies) {
|
||||
return {
|
||||
'id': int.parse(policies['client_policy_id']),
|
||||
'policyName': policies['policy_name'],
|
||||
};
|
||||
}).toList();
|
||||
print('policyNumberList');
|
||||
print(policyNumberList);
|
||||
});
|
||||
} else {
|
||||
setState(() {
|
||||
policyDataIsEmpty = 0;
|
||||
});
|
||||
print('API request failed with status: ${response['status']}');
|
||||
}
|
||||
}
|
||||
|
||||
Future<void> fetchDepartmentList() async {
|
||||
try {
|
||||
final response = await apiService.fetchDepartmentList();
|
||||
if (response['departments'] != null) {
|
||||
List<dynamic> departments = response['departments'];
|
||||
setState(() {
|
||||
departmentList = departments.map((department) {
|
||||
return {
|
||||
'id': int.parse(department['id']),
|
||||
'name': department['name'],
|
||||
'private': department['private'],
|
||||
};
|
||||
}).toList();
|
||||
});
|
||||
if (fromClaimsPage == 0) {
|
||||
setInitialServiceId();
|
||||
}
|
||||
} else {
|
||||
throw Exception('Failed to fetch department list');
|
||||
}
|
||||
} catch (error) {
|
||||
print('Error fetching department list: $error');
|
||||
}
|
||||
}
|
||||
|
||||
Future<void> sendFormDataToApi() async {
|
||||
print('Help');
|
||||
try {
|
||||
Map<String, dynamic> formData = {
|
||||
'opener': 'user',
|
||||
'department_id': serviceId,
|
||||
'subject': subjectController.text,
|
||||
'body': messageController.text,
|
||||
'policy_id': fromClaimsPage == 0
|
||||
? claimsDetails['client_policy_id']
|
||||
: policyNumberId,
|
||||
'emp_code':
|
||||
decodedToken['emp_code'] != null ? decodedToken['emp_code'] : '',
|
||||
'mobile_number':
|
||||
decodedToken['mobile'] != null ? decodedToken['mobile'] : '',
|
||||
'email': decodedToken['email_corporate'] != null
|
||||
? decodedToken['email_corporate']
|
||||
: '',
|
||||
'fullname': decodedToken['name'] != null ? decodedToken['name'] : '',
|
||||
};
|
||||
|
||||
// Convert integer values to strings
|
||||
formData = formData.map((key, value) => MapEntry(key, value.toString()));
|
||||
|
||||
final response = await apiService.sendFormDataToApi(formData);
|
||||
|
||||
if (response['success'] == 1) {
|
||||
ToastHelper.showSuccessToast(context, response['message']);
|
||||
serviceId = null;
|
||||
departmentList.clear();
|
||||
Navigator.pushNamed(context, 'claims');
|
||||
print('Form data submitted successfully');
|
||||
} else {
|
||||
print('Failed to submit form data: ${response['status']}');
|
||||
}
|
||||
} catch (e) {
|
||||
print('Error submitting form data: $e');
|
||||
}
|
||||
}
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return Scaffold(
|
||||
appBar: CustomAppBar(),
|
||||
body: Stack(children: [
|
||||
SingleChildScrollView(
|
||||
child: Container(
|
||||
padding: Responsive.isDesktop(context)
|
||||
? EdgeInsets.symmetric(
|
||||
horizontal: MediaQuery.of(context).size.width *
|
||||
0.2, // 30% of screen width as horizontal padding
|
||||
vertical: MediaQuery.of(context).size.height *
|
||||
0.05, // 5% of screen height as vertical padding
|
||||
)
|
||||
: EdgeInsets.all(10),
|
||||
color: Colors.white,
|
||||
child: Column(children: [
|
||||
Card(
|
||||
elevation: 5,
|
||||
shape: RoundedRectangleBorder(
|
||||
borderRadius:
|
||||
BorderRadius.circular(15.0), // Set border radius here
|
||||
),
|
||||
child: Container(
|
||||
decoration: BoxDecoration(
|
||||
color: Colors.white, // Set background color to white
|
||||
borderRadius: BorderRadius.circular(
|
||||
15.0), // Set border radius for Container
|
||||
),
|
||||
padding: Responsive.isDesktop(context)
|
||||
? EdgeInsets.only(top: 15, bottom: 15, left: 15, right: 15)
|
||||
: EdgeInsets.only(
|
||||
top: 10,
|
||||
bottom: 10,
|
||||
left: 10,
|
||||
right: 10), // Add padding to the container
|
||||
child: Row(
|
||||
children: [
|
||||
Expanded(
|
||||
flex: 12,
|
||||
child: Container(
|
||||
alignment: Alignment.centerLeft,
|
||||
child: Column(
|
||||
mainAxisAlignment: MainAxisAlignment.start,
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
children: [
|
||||
Container(
|
||||
padding: Responsive.isDesktop(context)
|
||||
? EdgeInsets.only(
|
||||
top: 15,
|
||||
bottom: 15,
|
||||
left: 25,
|
||||
right: 25)
|
||||
: EdgeInsets.only(
|
||||
top: 0, bottom: 0, left: 0, right: 0),
|
||||
child: Column(
|
||||
crossAxisAlignment:
|
||||
CrossAxisAlignment.center,
|
||||
children: [
|
||||
Row(
|
||||
mainAxisAlignment:
|
||||
MainAxisAlignment.start,
|
||||
children: [
|
||||
Expanded(
|
||||
flex: 12,
|
||||
child: InkWell(
|
||||
onTap: () {
|
||||
Navigator.pushNamed(
|
||||
context, 'claims');
|
||||
},
|
||||
child: Row(
|
||||
mainAxisAlignment:
|
||||
MainAxisAlignment.start,
|
||||
children: [
|
||||
if (!Responsive.isDesktop(
|
||||
context))
|
||||
Icon(
|
||||
Icons.chevron_left,
|
||||
// Replace with your desired icon
|
||||
color: Color(0xFF000000),
|
||||
size: 30,
|
||||
),
|
||||
if (!Responsive.isDesktop(
|
||||
context))
|
||||
SizedBox(
|
||||
width: Responsive
|
||||
.isDesktop(
|
||||
context)
|
||||
? 0
|
||||
: 5),
|
||||
// Adjust space between icon and text
|
||||
Column(
|
||||
mainAxisAlignment:
|
||||
MainAxisAlignment
|
||||
.center,
|
||||
crossAxisAlignment:
|
||||
CrossAxisAlignment
|
||||
.start,
|
||||
children: [
|
||||
Text(
|
||||
claimsDetails[
|
||||
'policy_name'],
|
||||
textAlign:
|
||||
TextAlign.start,
|
||||
style:
|
||||
GoogleFonts.poppins(
|
||||
fontSize: 16,
|
||||
fontWeight:
|
||||
FontWeight.w600,
|
||||
color:
|
||||
Color(0xFF000000),
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
// Add more rows as needed
|
||||
],
|
||||
),
|
||||
),
|
||||
SizedBox(height: 15),
|
||||
Container(
|
||||
child: Column(
|
||||
children: [
|
||||
Column(
|
||||
crossAxisAlignment:
|
||||
CrossAxisAlignment.start,
|
||||
children: [
|
||||
Container(
|
||||
width: double.infinity,
|
||||
alignment: Alignment.centerLeft,
|
||||
child: Column(
|
||||
mainAxisAlignment:
|
||||
MainAxisAlignment.start,
|
||||
crossAxisAlignment:
|
||||
CrossAxisAlignment.start,
|
||||
children: [
|
||||
Form(
|
||||
key: formKey,
|
||||
child: Column(
|
||||
children: [
|
||||
!Responsive.isDesktop(
|
||||
context)
|
||||
? Column(
|
||||
children: [
|
||||
if (fromClaimsPage !=
|
||||
0)
|
||||
buildDropdownField(
|
||||
'Select Policy',
|
||||
(value) {
|
||||
setState(
|
||||
() {
|
||||
policyNumberId =
|
||||
value;
|
||||
});
|
||||
},
|
||||
fromClaimsPage ==
|
||||
0,
|
||||
policyNumberList,
|
||||
'policyName'),
|
||||
buildDropdownField(
|
||||
'Service',
|
||||
(value) {
|
||||
setState(() {
|
||||
serviceId =
|
||||
value;
|
||||
});
|
||||
},
|
||||
fromClaimsPage ==
|
||||
0,
|
||||
departmentList,
|
||||
'name'),
|
||||
buildTextField(
|
||||
'Subject',
|
||||
subjectController),
|
||||
],
|
||||
)
|
||||
: Row(
|
||||
children: [
|
||||
if (fromClaimsPage !=
|
||||
0) ...[
|
||||
Expanded(
|
||||
child: buildDropdownField(
|
||||
'Select Policy',
|
||||
(value) {
|
||||
setState(
|
||||
() {
|
||||
policyNumberId =
|
||||
value;
|
||||
});
|
||||
},
|
||||
fromClaimsPage ==
|
||||
0,
|
||||
policyNumberList,
|
||||
'policyName'),
|
||||
),
|
||||
],
|
||||
if (fromClaimsPage !=
|
||||
0)
|
||||
SizedBox(
|
||||
width:
|
||||
12),
|
||||
Expanded(
|
||||
child: buildDropdownField(
|
||||
'Service',
|
||||
(value) {
|
||||
setState(
|
||||
() {
|
||||
serviceId =
|
||||
value;
|
||||
});
|
||||
},
|
||||
fromClaimsPage ==
|
||||
0,
|
||||
departmentList,
|
||||
'name'),
|
||||
),
|
||||
SizedBox(
|
||||
width: 12),
|
||||
Expanded(
|
||||
child: buildTextField(
|
||||
'Subject',
|
||||
subjectController)),
|
||||
],
|
||||
),
|
||||
!Responsive.isDesktop(
|
||||
context)
|
||||
? Column(
|
||||
children: [
|
||||
buildTextAreaField(
|
||||
'Message',
|
||||
messageController),
|
||||
],
|
||||
)
|
||||
: Row(
|
||||
children: [
|
||||
Expanded(
|
||||
child: buildTextAreaField(
|
||||
'Message',
|
||||
messageController)),
|
||||
],
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
SizedBox(height: 15),
|
||||
Row(
|
||||
children: [
|
||||
Expanded(
|
||||
flex: 12,
|
||||
child: Container(
|
||||
alignment: Alignment.centerRight,
|
||||
child: ElevatedButton(
|
||||
onPressed: () {
|
||||
sendFormDataToApi();
|
||||
},
|
||||
child: Text(
|
||||
'Send',
|
||||
style: GoogleFonts.poppins(
|
||||
color: Colors.white),
|
||||
),
|
||||
style: ElevatedButton.styleFrom(
|
||||
backgroundColor:
|
||||
Color(0xFFE26728),
|
||||
shape: RoundedRectangleBorder(
|
||||
borderRadius:
|
||||
BorderRadius.circular(
|
||||
5),
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
],
|
||||
))),
|
||||
],
|
||||
),
|
||||
),
|
||||
),
|
||||
SizedBox(height: Responsive.isDesktop(context) ? 40 : 10),
|
||||
]),
|
||||
)),
|
||||
if (Responsive.isDesktop(context))
|
||||
Align(
|
||||
alignment: Alignment.bottomCenter,
|
||||
child: Container(
|
||||
width: double.infinity, // Make the footer full width
|
||||
child: CustomFooter(),
|
||||
),
|
||||
),
|
||||
]),
|
||||
// floatingActionButton: Responsive.isDesktop(context)
|
||||
// ? null
|
||||
// : FloatingActionButton(
|
||||
// onPressed: () {
|
||||
// // Add your onPressed logic here
|
||||
// },
|
||||
// child: Icon(Icons.add),
|
||||
// ),
|
||||
floatingActionButtonLocation: Responsive.isDesktop(context)
|
||||
? null
|
||||
: FloatingActionButtonLocation.centerDocked,
|
||||
bottomNavigationBar: Responsive.isDesktop(context)
|
||||
? null
|
||||
: CustomBottomNavigationBar(
|
||||
onTabChanged: (index) {
|
||||
// Add your navigation logic here
|
||||
// For example:
|
||||
if (index == 0) {
|
||||
Navigator.pushNamed(context, 'home');
|
||||
} else if (index == 1) {
|
||||
Navigator.pushNamed(context, 'claims');
|
||||
} else if (index == 2) {
|
||||
Navigator.pushNamed(context, 'profile');
|
||||
} else if (index == 3) {
|
||||
Navigator.pushNamed(context, 'help');
|
||||
// Navigator.pushNamed(context, 'help');
|
||||
}
|
||||
},
|
||||
icons: [
|
||||
Icons.home_outlined,
|
||||
Icons.sticky_note_2_outlined,
|
||||
Icons.person_outline_outlined,
|
||||
Icons.headset_mic_outlined,
|
||||
],
|
||||
labels: [
|
||||
"Home",
|
||||
"Claim",
|
||||
"Profile",
|
||||
"Help",
|
||||
], // Initial index of the bottom navigation bar
|
||||
),
|
||||
);
|
||||
}
|
||||
|
||||
Widget buildTextField(String label, TextEditingController controller,
|
||||
[TextInputType keyboardType = TextInputType.text]) {
|
||||
return TextFormField(
|
||||
controller: controller,
|
||||
decoration: InputDecoration(labelText: label),
|
||||
keyboardType: keyboardType,
|
||||
validator: (value) {
|
||||
if (value == null || value.isEmpty) {
|
||||
return 'Please enter the $label';
|
||||
}
|
||||
return null;
|
||||
},
|
||||
);
|
||||
}
|
||||
|
||||
Widget buildDropdownField(
|
||||
String label,
|
||||
void Function(int?) onChanged,
|
||||
bool readOnly,
|
||||
List<Map<String, dynamic>> itemsList,
|
||||
String displayField) {
|
||||
return DropdownButtonFormField<int>(
|
||||
value: label == 'Service' ? serviceId : policyNumberId,
|
||||
decoration: InputDecoration(labelText: label),
|
||||
items: itemsList.map<DropdownMenuItem<int>>((item) {
|
||||
return DropdownMenuItem<int>(
|
||||
value: item['id'],
|
||||
child: Text(item[displayField]),
|
||||
);
|
||||
}).toList(),
|
||||
onChanged: readOnly ? null : onChanged,
|
||||
validator: (value) {
|
||||
if (value == null) {
|
||||
return 'Please select a $label';
|
||||
}
|
||||
return null;
|
||||
},
|
||||
);
|
||||
}
|
||||
|
||||
Widget buildTextAreaField(String label, TextEditingController controller) {
|
||||
return TextFormField(
|
||||
controller: controller,
|
||||
decoration: InputDecoration(labelText: label),
|
||||
maxLines: 5,
|
||||
validator: (value) {
|
||||
if (value == null || value.isEmpty) {
|
||||
return 'Please enter the $label';
|
||||
}
|
||||
return null;
|
||||
},
|
||||
);
|
||||
}
|
||||
}
|
||||
@ -1,6 +1,7 @@
|
||||
import 'dart:convert';
|
||||
|
||||
import 'package:accordion/controllers.dart';
|
||||
import 'package:flutter/cupertino.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter_image_slideshow/flutter_image_slideshow.dart';
|
||||
import 'package:google_fonts/google_fonts.dart';
|
||||
@ -16,6 +17,9 @@ import '../customAppBar/toastHelper.dart';
|
||||
import '../models/environment.dart';
|
||||
import 'package:http/http.dart' as http;
|
||||
import 'package:accordion/accordion.dart';
|
||||
import 'package:flutter_svg/flutter_svg.dart';
|
||||
|
||||
import '../service/api_service.dart';
|
||||
|
||||
class policies extends StatefulWidget {
|
||||
const policies({Key? key}) : super(key: key);
|
||||
@ -25,6 +29,7 @@ class policies extends StatefulWidget {
|
||||
}
|
||||
|
||||
class _policiesState extends State<policies> {
|
||||
late ApiService apiService;
|
||||
int _currentIndex = 0;
|
||||
bool isActive = true;
|
||||
dynamic _token;
|
||||
@ -38,6 +43,7 @@ class _policiesState extends State<policies> {
|
||||
dynamic EmployeePolicy;
|
||||
List<Map<String, String>> employeeDetails = [];
|
||||
dynamic argumentsData;
|
||||
bool _isExpanded = false;
|
||||
|
||||
void _onTabChanged(int index) {
|
||||
setState(() {
|
||||
@ -45,9 +51,16 @@ class _policiesState extends State<policies> {
|
||||
});
|
||||
}
|
||||
|
||||
void _toggleExpansion() {
|
||||
setState(() {
|
||||
_isExpanded = !_isExpanded;
|
||||
});
|
||||
}
|
||||
|
||||
@override
|
||||
void initState() {
|
||||
super.initState();
|
||||
apiService = ApiService(context); // Initialize ApiService here
|
||||
_loadToken();
|
||||
}
|
||||
|
||||
@ -72,55 +85,11 @@ class _policiesState extends State<policies> {
|
||||
empPrimaryId = prefs.getString('empPrimaryId');
|
||||
client_id = prefs.getString('client_id');
|
||||
print(client_id);
|
||||
getActiveAndInactivePolicyDetails('Active');
|
||||
} else {
|
||||
// Token is empty or null, handle accordingly (e.g., navigate to login screen)
|
||||
// For now, let's navigate to the login screen
|
||||
ToastHelper.showErrorToast(context, 'Session Out');
|
||||
Navigator.pushReplacementNamed(context, 'phone');
|
||||
}
|
||||
}
|
||||
|
||||
Future<void> getActiveAndInactivePolicyDetails(Status) async {
|
||||
var url = Uri.parse(Environment.apiUrl +
|
||||
'getEmployeeActiveOrInactivePolicy?client_id=$client_id&emp_code=$empCodeString&type=$Status');
|
||||
try {
|
||||
var response = await http.get(
|
||||
url,
|
||||
headers: {
|
||||
'Authorization':
|
||||
'Bearer $_token', // Add token to the Authorization header
|
||||
},
|
||||
);
|
||||
if (response.statusCode == 200) {
|
||||
Map<String, dynamic> data = json.decode(response.body);
|
||||
if (data['status'] == 'success') {
|
||||
setState(() {
|
||||
policyList = data['data'];
|
||||
});
|
||||
// Assuming data is a List
|
||||
print(policyList);
|
||||
} else {
|
||||
setState(() {
|
||||
policyDataIsEmpty = 0;
|
||||
});
|
||||
// Handle other status messages if needed
|
||||
// ToastHelper.showErrorToast(
|
||||
// context, 'API request failed with status: ${data['status']}');
|
||||
print('API request failed with status: ${data['status']}');
|
||||
}
|
||||
} else {
|
||||
setState(() {
|
||||
policyDataIsEmpty = 0;
|
||||
});
|
||||
// Handle other status codes
|
||||
// ToastHelper.showErrorToast(
|
||||
// context, 'Request failed with status: ${response.statusCode}');
|
||||
print('Request failed with status: ${response.statusCode}');
|
||||
}
|
||||
} catch (e) {
|
||||
// Handle exceptions
|
||||
print('Exception occurred: $e');
|
||||
Navigator.pushReplacementNamed(context, 'login');
|
||||
}
|
||||
}
|
||||
|
||||
@ -181,25 +150,26 @@ class _policiesState extends State<policies> {
|
||||
0.03, // 5% of screen height as vertical padding
|
||||
)
|
||||
: EdgeInsets.all(0),
|
||||
color: Colors.white,
|
||||
color:
|
||||
Responsive.isDesktop(context) ? Colors.white : Color(0xFFFFFCE5),
|
||||
child: Column(children: [
|
||||
Container(
|
||||
decoration: BoxDecoration(
|
||||
color:
|
||||
Color(0xFFFFFCE5), // Set background color for the container
|
||||
borderRadius: BorderRadius.circular(
|
||||
5), // Set border radius for the container
|
||||
10), // Set border radius for the container
|
||||
),
|
||||
padding: Responsive.isDesktop(context)
|
||||
? EdgeInsets.only(top: 15, bottom: 15, left: 25, right: 25)
|
||||
? EdgeInsets.only(top: 20, bottom: 20, left: 25, right: 25)
|
||||
: EdgeInsets.only(top: 10, bottom: 10, left: 10, right: 10),
|
||||
child: Column(
|
||||
crossAxisAlignment: CrossAxisAlignment.center,
|
||||
children: [
|
||||
if (!Responsive.isDesktop(context))
|
||||
Row(
|
||||
mainAxisAlignment: MainAxisAlignment.start,
|
||||
children: [
|
||||
Row(
|
||||
mainAxisAlignment: MainAxisAlignment.start,
|
||||
children: [
|
||||
if (!Responsive.isDesktop(context))
|
||||
Expanded(
|
||||
flex: 1,
|
||||
child: InkWell(
|
||||
@ -210,52 +180,35 @@ class _policiesState extends State<policies> {
|
||||
Icons
|
||||
.chevron_left, // Replace with your desired icon
|
||||
color: Color(0xFF000000),
|
||||
size: 20,
|
||||
size: 30,
|
||||
),
|
||||
),
|
||||
),
|
||||
Expanded(
|
||||
flex: 11,
|
||||
child: Row(
|
||||
mainAxisAlignment: MainAxisAlignment.end,
|
||||
children: [
|
||||
// Icon(
|
||||
// Icons
|
||||
// .subtitles, // Replace with your desired icon
|
||||
// color: Color(0xFFE26728),
|
||||
// size: 20,
|
||||
// ),
|
||||
// SizedBox(
|
||||
// width:
|
||||
// 3), // Adjust space between icon and text
|
||||
Text(
|
||||
'',
|
||||
),
|
||||
],
|
||||
),
|
||||
)
|
||||
],
|
||||
),
|
||||
SizedBox(height: Responsive.isDesktop(context) ? 0 : 20),
|
||||
Row(
|
||||
mainAxisAlignment: MainAxisAlignment.center,
|
||||
children: [
|
||||
Expanded(
|
||||
flex: 12,
|
||||
child: Text(
|
||||
argumentsData['policy_name'] ?? '',
|
||||
textAlign: TextAlign.center,
|
||||
style: GoogleFonts.poppins(
|
||||
fontSize: Responsive.isDesktop(context) ? 20 : 16,
|
||||
fontWeight: FontWeight.w600,
|
||||
color: Color(0xFF000000),
|
||||
),
|
||||
))
|
||||
flex: !Responsive.isDesktop(context) ? 11 : 12,
|
||||
child: Row(
|
||||
mainAxisAlignment: Responsive.isDesktop(context)
|
||||
? MainAxisAlignment.center
|
||||
: MainAxisAlignment.start,
|
||||
children: [
|
||||
Text(
|
||||
argumentsData['policy_name'] ?? '',
|
||||
textAlign: TextAlign.start,
|
||||
style: GoogleFonts.poppins(
|
||||
fontSize:
|
||||
Responsive.isDesktop(context) ? 20 : 16,
|
||||
fontWeight: FontWeight.w600,
|
||||
color: Color(0xFF000000),
|
||||
),
|
||||
)
|
||||
],
|
||||
),
|
||||
)
|
||||
],
|
||||
),
|
||||
SizedBox(
|
||||
height: Responsive.isDesktop(context)
|
||||
? 40
|
||||
? 20
|
||||
: 20), // Space between rows
|
||||
Column(
|
||||
children: [
|
||||
@ -267,77 +220,12 @@ class _policiesState extends State<policies> {
|
||||
SizedBox(
|
||||
height: Responsive.isDesktop(context)
|
||||
? 40
|
||||
: 20), // Space between rows
|
||||
: 30), // Space between rows
|
||||
Row(
|
||||
mainAxisAlignment: MainAxisAlignment.center,
|
||||
children: [
|
||||
// Expanded(
|
||||
// flex: Responsive.isDesktop(context) ? 4 : 6,
|
||||
// child: Container(
|
||||
// alignment: Alignment.center,
|
||||
// child: GestureDetector(
|
||||
// onTap: () {
|
||||
// setState(() {});
|
||||
// },
|
||||
// child: Material(
|
||||
// elevation: 0,
|
||||
// borderRadius: BorderRadius.circular(5),
|
||||
// color: Color(0xFFFFF8BF),
|
||||
// child: SizedBox(
|
||||
// width: Responsive.isDesktop(context)
|
||||
// ? 200
|
||||
// : 160,
|
||||
// child: TextButton(
|
||||
// onPressed: () {},
|
||||
// style: TextButton.styleFrom(
|
||||
// padding:
|
||||
// Responsive.isDesktop(context)
|
||||
// ? EdgeInsets.only(
|
||||
// top: 5,
|
||||
// bottom: 5,
|
||||
// left: 15,
|
||||
// right: 15)
|
||||
// : EdgeInsets.only(
|
||||
// top: 3,
|
||||
// bottom: 3,
|
||||
// left: 10,
|
||||
// right: 10)
|
||||
// // primary: Color(0xFF000000),
|
||||
// ),
|
||||
// child: Row(
|
||||
// mainAxisSize: MainAxisSize.min,
|
||||
// children: [
|
||||
// Icon(
|
||||
// Icons
|
||||
// .download, // Replace with your desired icon
|
||||
// color: Color(0xFFE26728),
|
||||
// size:
|
||||
// Responsive.isDesktop(context)
|
||||
// ? 25
|
||||
// : 20,
|
||||
// ),
|
||||
// SizedBox(
|
||||
// width:
|
||||
// 8), // Adjust space between icon and text
|
||||
// Text(
|
||||
// 'Download Policy',
|
||||
// style: GoogleFonts.poppins(
|
||||
// fontSize: Responsive.isDesktop(
|
||||
// context)
|
||||
// ? 16
|
||||
// : 12,
|
||||
// fontWeight: FontWeight.w600,
|
||||
// color: Color(0xFF000000),
|
||||
// ),
|
||||
// ),
|
||||
// ],
|
||||
// ),
|
||||
// ),
|
||||
// ))),
|
||||
// )),
|
||||
|
||||
Expanded(
|
||||
flex: 6,
|
||||
flex: Responsive.isDesktop(context) ? 4 : 6,
|
||||
child: Container(
|
||||
alignment: Alignment.center,
|
||||
child: GestureDetector(
|
||||
@ -351,7 +239,7 @@ class _policiesState extends State<policies> {
|
||||
child: SizedBox(
|
||||
width: Responsive.isDesktop(context)
|
||||
? 200
|
||||
: 150,
|
||||
: 180,
|
||||
child: TextButton(
|
||||
onPressed: () {
|
||||
_launchURL(
|
||||
@ -368,14 +256,10 @@ class _policiesState extends State<policies> {
|
||||
child: Row(
|
||||
mainAxisSize: MainAxisSize.min,
|
||||
children: [
|
||||
Icon(
|
||||
Icons
|
||||
.subtitles, // Replace with your desired icon
|
||||
color: Color(0xFFE26728),
|
||||
size:
|
||||
Responsive.isDesktop(context)
|
||||
? 25
|
||||
: 20,
|
||||
SvgPicture.asset(
|
||||
'assets/ECard.svg',
|
||||
width: 25,
|
||||
height: 25,
|
||||
),
|
||||
SizedBox(
|
||||
width:
|
||||
@ -385,8 +269,8 @@ class _policiesState extends State<policies> {
|
||||
style: GoogleFonts.poppins(
|
||||
fontSize: Responsive.isDesktop(
|
||||
context)
|
||||
? 18
|
||||
: 14,
|
||||
? 16
|
||||
: 12,
|
||||
fontWeight: FontWeight.w600,
|
||||
color: Color(0xFF000000),
|
||||
),
|
||||
@ -396,8 +280,10 @@ class _policiesState extends State<policies> {
|
||||
),
|
||||
))),
|
||||
)),
|
||||
if (Responsive.isDesktop(context))
|
||||
Expanded(flex: 4, child: Container()),
|
||||
Expanded(
|
||||
flex: 6,
|
||||
flex: Responsive.isDesktop(context) ? 4 : 6,
|
||||
child: Container(
|
||||
alignment: Alignment.center,
|
||||
child: GestureDetector(
|
||||
@ -409,7 +295,7 @@ class _policiesState extends State<policies> {
|
||||
child: SizedBox(
|
||||
width: Responsive.isDesktop(context)
|
||||
? 200
|
||||
: 160,
|
||||
: 180,
|
||||
child: TextButton(
|
||||
onPressed: () {
|
||||
Navigator.pushNamed(
|
||||
@ -433,14 +319,10 @@ class _policiesState extends State<policies> {
|
||||
child: Row(
|
||||
mainAxisSize: MainAxisSize.min,
|
||||
children: [
|
||||
Icon(
|
||||
Icons
|
||||
.fact_check, // Replace with your desired icon
|
||||
color: Color(0xFFE26728),
|
||||
size:
|
||||
Responsive.isDesktop(context)
|
||||
? 25
|
||||
: 20,
|
||||
SvgPicture.asset(
|
||||
'assets/fileaclaims.svg',
|
||||
width: 25,
|
||||
height: 25,
|
||||
),
|
||||
SizedBox(
|
||||
width:
|
||||
@ -463,63 +345,73 @@ class _policiesState extends State<policies> {
|
||||
)),
|
||||
],
|
||||
),
|
||||
SizedBox(height: Responsive.isDesktop(context) ? 30 : 20),
|
||||
// Add more rows as needed
|
||||
],
|
||||
),
|
||||
),
|
||||
SizedBox(height: Responsive.isDesktop(context) ? 20 : 0),
|
||||
Container(
|
||||
decoration: BoxDecoration(
|
||||
// Set background color for the container
|
||||
borderRadius: BorderRadius.circular(
|
||||
10), // Set border radius for the container
|
||||
color: Colors.white, // Set background color for the container
|
||||
borderRadius: BorderRadius.only(
|
||||
topLeft: Radius.circular(40.0),
|
||||
topRight: Radius.circular(40.0),
|
||||
), // Set border radius for the container
|
||||
),
|
||||
padding: Responsive.isDesktop(context)
|
||||
? EdgeInsets.only(top: 0, bottom: 0, left: 0, right: 0)
|
||||
: EdgeInsets.only(top: 10, bottom: 10, left: 10, right: 10),
|
||||
? EdgeInsets.only(top: 15, bottom: 15, left: 0, right: 0)
|
||||
: EdgeInsets.only(top: 20, bottom: 10, left: 10, right: 10),
|
||||
child: Column(
|
||||
crossAxisAlignment: CrossAxisAlignment.center,
|
||||
children: [
|
||||
Card(
|
||||
elevation: 4,
|
||||
elevation: 0,
|
||||
shape: RoundedRectangleBorder(
|
||||
side: BorderSide(
|
||||
color: Color(0xFFD9D9D9), // Set the border color here
|
||||
width: 1.0, // Set the border width here
|
||||
),
|
||||
borderRadius: BorderRadius.circular(
|
||||
8.0), // Set the border radius here
|
||||
),
|
||||
child: Column(children: [
|
||||
Container(
|
||||
decoration: BoxDecoration(
|
||||
color: Color(
|
||||
0xFFECF2FF), // Set background color for the container
|
||||
borderRadius: BorderRadius.only(
|
||||
topLeft: Radius.circular(5),
|
||||
topLeft: Radius.circular(10),
|
||||
topRight: Radius.circular(
|
||||
5)), // Set border radius for the container
|
||||
10)), // Set border radius for the container
|
||||
),
|
||||
padding: Responsive.isDesktop(context)
|
||||
? EdgeInsets.only(
|
||||
top: 15, bottom: 15, left: 15, right: 15)
|
||||
: EdgeInsets.only(
|
||||
top: 10, bottom: 10, left: 10, right: 10),
|
||||
top: 20, bottom: 20, left: 10, right: 10),
|
||||
child: Row(
|
||||
crossAxisAlignment: CrossAxisAlignment.center,
|
||||
children: [
|
||||
Expanded(
|
||||
flex: 12,
|
||||
child: Container(
|
||||
alignment: Alignment.center,
|
||||
alignment: Alignment.centerLeft,
|
||||
child: Column(
|
||||
mainAxisAlignment:
|
||||
MainAxisAlignment.center,
|
||||
MainAxisAlignment.start,
|
||||
crossAxisAlignment:
|
||||
CrossAxisAlignment.center,
|
||||
CrossAxisAlignment.start,
|
||||
children: [
|
||||
Text(
|
||||
'Insured Members',
|
||||
textAlign: TextAlign.center,
|
||||
textAlign: TextAlign.start,
|
||||
style: GoogleFonts.poppins(
|
||||
fontSize:
|
||||
Responsive.isDesktop(context)
|
||||
? 18
|
||||
: 14,
|
||||
: 12,
|
||||
color: Color(0xFF404040),
|
||||
fontWeight: FontWeight.w600,
|
||||
fontWeight: FontWeight.w400,
|
||||
),
|
||||
),
|
||||
],
|
||||
@ -533,17 +425,22 @@ class _policiesState extends State<policies> {
|
||||
),
|
||||
padding: Responsive.isDesktop(context)
|
||||
? EdgeInsets.all(30)
|
||||
: EdgeInsets.all(15),
|
||||
: EdgeInsets.only(
|
||||
top: 15, bottom: 15, left: 20, right: 20),
|
||||
child: Column(
|
||||
children: employeeDetails.map((detail) {
|
||||
int index = employeeDetails.indexOf(detail);
|
||||
return Container(
|
||||
decoration: BoxDecoration(
|
||||
border: Border(
|
||||
bottom: BorderSide(
|
||||
color: Color(0xFFBDBDBD),
|
||||
width:
|
||||
1.0, // Adjust the width as needed
|
||||
),
|
||||
bottom:
|
||||
index != employeeDetails.length - 1
|
||||
? BorderSide(
|
||||
color: Color(0xFFD9D9D9),
|
||||
width:
|
||||
1.0, // Adjust the width as needed
|
||||
)
|
||||
: BorderSide.none,
|
||||
),
|
||||
),
|
||||
child: Row(
|
||||
@ -561,8 +458,8 @@ class _policiesState extends State<policies> {
|
||||
left: 10,
|
||||
right: 10)
|
||||
: EdgeInsets.only(
|
||||
top: 7,
|
||||
bottom: 7,
|
||||
top: 15,
|
||||
bottom: 15,
|
||||
left: 7,
|
||||
right: 7),
|
||||
child: Text(
|
||||
@ -572,7 +469,7 @@ class _policiesState extends State<policies> {
|
||||
fontSize:
|
||||
Responsive.isDesktop(context)
|
||||
? 16
|
||||
: 12,
|
||||
: 14,
|
||||
color: Color(0xFF000000),
|
||||
fontWeight: FontWeight.w400,
|
||||
),
|
||||
@ -590,7 +487,7 @@ class _policiesState extends State<policies> {
|
||||
fontSize:
|
||||
Responsive.isDesktop(context)
|
||||
? 16
|
||||
: 12,
|
||||
: 14,
|
||||
color: Color(0xFF404040),
|
||||
fontWeight: FontWeight.w400,
|
||||
),
|
||||
@ -604,96 +501,254 @@ class _policiesState extends State<policies> {
|
||||
)
|
||||
])),
|
||||
SizedBox(height: 10),
|
||||
Accordion(
|
||||
headerBorderColor: Color(0xFFD9D9D9),
|
||||
headerBorderColorOpened: Color(0xFFD9D9D9),
|
||||
headerBorderWidth: 1,
|
||||
headerBackgroundColor: Colors.white,
|
||||
headerBackgroundColorOpened: Colors.white,
|
||||
contentBackgroundColor: Colors.white,
|
||||
contentBorderColor: Color(0xFFD9D9D9),
|
||||
contentBorderWidth: 1,
|
||||
contentHorizontalPadding: 20,
|
||||
scaleWhenAnimating: true,
|
||||
openAndCloseAnimation: true,
|
||||
headerPadding:
|
||||
EdgeInsets.symmetric(vertical: 15, horizontal: 15),
|
||||
sectionOpeningHapticFeedback: SectionHapticFeedback.heavy,
|
||||
sectionClosingHapticFeedback: SectionHapticFeedback.light,
|
||||
children: [
|
||||
AccordionSection(
|
||||
isOpen: false,
|
||||
contentVerticalPadding: 20,
|
||||
rightIcon: Icon(
|
||||
Icons.arrow_drop_down, // Custom arrow icon
|
||||
color: Color(
|
||||
0xFFE26728), // Set the color for the arrow icon
|
||||
size: 25,
|
||||
Card(
|
||||
elevation: 0,
|
||||
shape: RoundedRectangleBorder(
|
||||
side: BorderSide(
|
||||
color: Color(0xFFD9D9D9), // Set the border color here
|
||||
width: 1.0, // Set the border width here
|
||||
),
|
||||
borderRadius: BorderRadius.circular(
|
||||
8.0), // Set the border radius here
|
||||
),
|
||||
child: Column(children: [
|
||||
InkWell(
|
||||
onTap: _toggleExpansion,
|
||||
child: Container(
|
||||
decoration: BoxDecoration(
|
||||
color: Colors
|
||||
.white, // Set background color for the container
|
||||
),
|
||||
leftIcon: Icon(
|
||||
Icons
|
||||
.switch_account, // Replace with your desired icon
|
||||
color: Color(0xFF855000),
|
||||
size: 25,
|
||||
padding: Responsive.isDesktop(context)
|
||||
? EdgeInsets.all(15)
|
||||
: EdgeInsets.symmetric(
|
||||
vertical: 20, horizontal: 10),
|
||||
child: Row(
|
||||
crossAxisAlignment: CrossAxisAlignment.center,
|
||||
children: [
|
||||
Expanded(
|
||||
flex: 8,
|
||||
child: Row(
|
||||
mainAxisAlignment: MainAxisAlignment.start,
|
||||
children: [
|
||||
SvgPicture.asset(
|
||||
'assets/policyCoverage.svg',
|
||||
width: 25,
|
||||
height: 25,
|
||||
),
|
||||
SizedBox(
|
||||
width:
|
||||
10), // Adjust space between icon and text
|
||||
Text(
|
||||
'Policy coverage',
|
||||
textAlign: TextAlign.center,
|
||||
style: GoogleFonts.poppins(
|
||||
fontSize:
|
||||
Responsive.isDesktop(context)
|
||||
? 18
|
||||
: 12,
|
||||
fontWeight: FontWeight.w400,
|
||||
color: Color(0xFF404040),
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
Expanded(
|
||||
flex: 4,
|
||||
child: Row(
|
||||
mainAxisAlignment: MainAxisAlignment.end,
|
||||
children: [
|
||||
Icon(
|
||||
_isExpanded ? Icons.remove : Icons.add,
|
||||
color: Color(0xFFE26728),
|
||||
size: 25,
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
header: Text(
|
||||
'Policy coverage',
|
||||
textAlign: TextAlign.start,
|
||||
style: GoogleFonts.poppins(
|
||||
fontSize:
|
||||
Responsive.isDesktop(context) ? 18 : 12,
|
||||
fontWeight: FontWeight.w400,
|
||||
color: Color(0xFF404040),
|
||||
),
|
||||
),
|
||||
),
|
||||
if (_isExpanded)
|
||||
Container(
|
||||
decoration: BoxDecoration(
|
||||
color: Colors.white,
|
||||
),
|
||||
content: SingleChildScrollView(
|
||||
child: Column(
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
children: argumentsData['policy_terms']
|
||||
.entries
|
||||
.where((entry) => entry.value is String)
|
||||
.map<Widget>((entry) => Container(
|
||||
width: double.infinity,
|
||||
decoration: BoxDecoration(
|
||||
border: Border(
|
||||
bottom: BorderSide(
|
||||
color: Color(0xFFD9D9D9),
|
||||
width: 1.0,
|
||||
),
|
||||
padding: Responsive.isDesktop(context)
|
||||
? EdgeInsets.all(30)
|
||||
: EdgeInsets.symmetric(
|
||||
vertical: 15, horizontal: 20),
|
||||
child: SingleChildScrollView(
|
||||
child: Column(
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
children: argumentsData['policy_terms']
|
||||
.entries
|
||||
.where((entry) => entry.value is String)
|
||||
.toList()
|
||||
.asMap()
|
||||
.entries
|
||||
.map<Widget>((entry) {
|
||||
int index = entry.key;
|
||||
MapEntry<String, dynamic> value = entry.value;
|
||||
bool isLast = index ==
|
||||
argumentsData['policy_terms'].length - 1;
|
||||
return Container(
|
||||
width: double.infinity,
|
||||
decoration: BoxDecoration(
|
||||
border: isLast
|
||||
? null
|
||||
: Border(
|
||||
bottom: BorderSide(
|
||||
color: Color(0xFFD9D9D9),
|
||||
width: 1.0,
|
||||
),
|
||||
),
|
||||
child: Padding(
|
||||
padding: EdgeInsets.symmetric(
|
||||
vertical: 8.0),
|
||||
child: Column(
|
||||
crossAxisAlignment:
|
||||
CrossAxisAlignment.start,
|
||||
children: [
|
||||
Text(
|
||||
entry.key,
|
||||
),
|
||||
child: Padding(
|
||||
padding:
|
||||
EdgeInsets.symmetric(vertical: 8.0),
|
||||
child: Responsive.isDesktop(context)
|
||||
? Row(
|
||||
children: [
|
||||
Expanded(
|
||||
flex: 6,
|
||||
child: Text(
|
||||
value.key,
|
||||
style: GoogleFonts.poppins(
|
||||
fontSize: 14,
|
||||
fontWeight: FontWeight.w600,
|
||||
color: Color(0xFF777777),
|
||||
),
|
||||
),
|
||||
SizedBox(height: 4),
|
||||
Text(
|
||||
entry.value,
|
||||
),
|
||||
Expanded(
|
||||
flex: 6,
|
||||
child: Text(
|
||||
value.value,
|
||||
textAlign: TextAlign.end,
|
||||
style: GoogleFonts.poppins(
|
||||
fontSize: 16,
|
||||
fontWeight: FontWeight.w400,
|
||||
color: Color(0xFF000000),
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
],
|
||||
)
|
||||
: Column(
|
||||
crossAxisAlignment:
|
||||
CrossAxisAlignment.start,
|
||||
children: [
|
||||
Text(
|
||||
value.key,
|
||||
style: GoogleFonts.poppins(
|
||||
fontSize: 14,
|
||||
fontWeight: FontWeight.w600,
|
||||
color: Color(0xFF777777),
|
||||
),
|
||||
),
|
||||
SizedBox(height: 4),
|
||||
Text(
|
||||
value.value,
|
||||
style: GoogleFonts.poppins(
|
||||
fontSize: 16,
|
||||
fontWeight: FontWeight.w400,
|
||||
color: Color(0xFF000000),
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
))
|
||||
.toList(),
|
||||
),
|
||||
),
|
||||
);
|
||||
}).toList(),
|
||||
)),
|
||||
]),
|
||||
),
|
||||
])),
|
||||
SizedBox(height: 10),
|
||||
MouseRegion(
|
||||
cursor: SystemMouseCursors.click,
|
||||
child: GestureDetector(
|
||||
onTap: () => {
|
||||
Navigator.pushNamed(
|
||||
context, 'generalExclusionsDeductibles')
|
||||
},
|
||||
child: Card(
|
||||
elevation: 0,
|
||||
shape: RoundedRectangleBorder(
|
||||
side: BorderSide(
|
||||
color:
|
||||
Color(0xFFD9D9D9), // Set the border color here
|
||||
width: 1.0, // Set the border width here
|
||||
),
|
||||
borderRadius: BorderRadius.circular(
|
||||
8.0), // Set the border radius here
|
||||
),
|
||||
child: Column(children: [
|
||||
Container(
|
||||
decoration: BoxDecoration(
|
||||
color: Colors
|
||||
.white, // Set background color for the container
|
||||
),
|
||||
padding: Responsive.isDesktop(context)
|
||||
? EdgeInsets.only(
|
||||
top: 15, bottom: 15, left: 15, right: 15)
|
||||
: EdgeInsets.only(
|
||||
top: 20, bottom: 20, left: 10, right: 10),
|
||||
child: Row(
|
||||
crossAxisAlignment: CrossAxisAlignment.center,
|
||||
children: [
|
||||
Expanded(
|
||||
flex: 11,
|
||||
child: Row(
|
||||
mainAxisAlignment: MainAxisAlignment.start,
|
||||
children: [
|
||||
SvgPicture.asset(
|
||||
'assets/general.svg',
|
||||
width: 25,
|
||||
height: 25,
|
||||
),
|
||||
SizedBox(
|
||||
width:
|
||||
10), // Adjust space between icon and text
|
||||
Text(
|
||||
'General Exclusions & Deductibles',
|
||||
textAlign: TextAlign.center,
|
||||
style: GoogleFonts.poppins(
|
||||
fontSize:
|
||||
Responsive.isDesktop(context)
|
||||
? 18
|
||||
: 12,
|
||||
fontWeight: FontWeight.w400,
|
||||
color: Color(0xFF404040),
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
Expanded(
|
||||
flex: 1,
|
||||
child: Row(
|
||||
mainAxisAlignment: MainAxisAlignment.end,
|
||||
children: [
|
||||
Icon(
|
||||
Icons
|
||||
.chevron_right, // Replace with your desired icon
|
||||
color: Color(0xFFE26728),
|
||||
size: 20,
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
]),
|
||||
),
|
||||
),
|
||||
),
|
||||
SizedBox(height: 10),
|
||||
Card(
|
||||
elevation: 0,
|
||||
shape: RoundedRectangleBorder(
|
||||
@ -736,11 +791,10 @@ class _policiesState extends State<policies> {
|
||||
crossAxisAlignment:
|
||||
CrossAxisAlignment.center,
|
||||
children: [
|
||||
Icon(
|
||||
Icons
|
||||
.question_mark, // Replace with your desired icon
|
||||
color: Color(0xFF9B85B4),
|
||||
size: 25,
|
||||
SvgPicture.asset(
|
||||
'assets/needHelp.svg',
|
||||
width: 25,
|
||||
height: 25,
|
||||
),
|
||||
SizedBox(height: 10),
|
||||
Text(
|
||||
@ -778,11 +832,10 @@ class _policiesState extends State<policies> {
|
||||
crossAxisAlignment:
|
||||
CrossAxisAlignment.center,
|
||||
children: [
|
||||
Icon(
|
||||
Icons
|
||||
.emoji_flags, // Replace with your desired icon
|
||||
color: Color(0xFF2CCEFE),
|
||||
size: 25,
|
||||
SvgPicture.asset(
|
||||
'assets/cliamHistory.svg',
|
||||
width: 25,
|
||||
height: 25,
|
||||
),
|
||||
SizedBox(height: 10),
|
||||
Text(
|
||||
@ -827,20 +880,19 @@ class _policiesState extends State<policies> {
|
||||
? EdgeInsets.only(
|
||||
top: 15, bottom: 15, left: 15, right: 15)
|
||||
: EdgeInsets.only(
|
||||
top: 10, bottom: 10, left: 10, right: 10),
|
||||
top: 20, bottom: 20, left: 10, right: 10),
|
||||
child: Row(
|
||||
crossAxisAlignment: CrossAxisAlignment.center,
|
||||
children: [
|
||||
Expanded(
|
||||
flex: 12,
|
||||
flex: 11,
|
||||
child: Row(
|
||||
mainAxisAlignment: MainAxisAlignment.start,
|
||||
children: [
|
||||
Icon(
|
||||
Icons
|
||||
.phonelink_ring, // Replace with your desired icon
|
||||
color: Color(0xFF038500),
|
||||
size: 25,
|
||||
SvgPicture.asset(
|
||||
'assets/cashLess.svg',
|
||||
width: 25,
|
||||
height: 25,
|
||||
),
|
||||
SizedBox(
|
||||
width:
|
||||
@ -859,6 +911,20 @@ class _policiesState extends State<policies> {
|
||||
],
|
||||
),
|
||||
),
|
||||
Expanded(
|
||||
flex: 1,
|
||||
child: Row(
|
||||
mainAxisAlignment: MainAxisAlignment.end,
|
||||
children: [
|
||||
Icon(
|
||||
Icons
|
||||
.chevron_right, // Replace with your desired icon
|
||||
color: Color(0xFFE26728),
|
||||
size: 20,
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
@ -906,10 +972,10 @@ class _policiesState extends State<policies> {
|
||||
}
|
||||
},
|
||||
icons: [
|
||||
Icons.home,
|
||||
Icons.sticky_note_2_sharp,
|
||||
Icons.account_circle,
|
||||
Icons.help,
|
||||
Icons.home_outlined,
|
||||
Icons.sticky_note_2_outlined,
|
||||
Icons.person_outline_outlined,
|
||||
Icons.headset_mic_outlined,
|
||||
],
|
||||
labels: [
|
||||
"Home",
|
||||
@ -952,6 +1018,7 @@ class _policiesState extends State<policies> {
|
||||
children: [
|
||||
buildExpandedColumn(context, 'Policy Expiry',
|
||||
convertDateFormat(argumentsData['policy_end_date'])),
|
||||
buildExpandedColumn(context, '', ''),
|
||||
],
|
||||
),
|
||||
],
|
||||
@ -971,17 +1038,17 @@ class _policiesState extends State<policies> {
|
||||
title,
|
||||
textAlign: TextAlign.center,
|
||||
style: GoogleFonts.poppins(
|
||||
fontSize: Responsive.isDesktop(context) ? 18 : 12,
|
||||
fontSize: Responsive.isDesktop(context) ? 18 : 14,
|
||||
fontWeight: FontWeight.w400,
|
||||
color: Color(0xFF000000),
|
||||
),
|
||||
),
|
||||
SizedBox(height: Responsive.isDesktop(context) ? 10 : 5),
|
||||
SizedBox(height: Responsive.isDesktop(context) ? 10 : 4),
|
||||
Text(
|
||||
value,
|
||||
textAlign: TextAlign.center,
|
||||
style: GoogleFonts.poppins(
|
||||
fontSize: Responsive.isDesktop(context) ? 18 : 14,
|
||||
fontSize: Responsive.isDesktop(context) ? 18 : 16,
|
||||
fontWeight: FontWeight.w600,
|
||||
color: Color(0xFF000000),
|
||||
),
|
||||
|
||||
958
lib/pages/privacypolicy.dart
Normal file
@ -0,0 +1,958 @@
|
||||
import 'dart:convert';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:google_fonts/google_fonts.dart';
|
||||
import 'package:jwt_decode/jwt_decode.dart';
|
||||
import 'package:shared_preferences/shared_preferences.dart';
|
||||
import '../customAppBar/customAppBar.dart';
|
||||
import '../customAppBar/customFooter.dart';
|
||||
import '../customAppBar/tabs.dart';
|
||||
import '../customAppBar/responsive.dart';
|
||||
import '../customAppBar/toastHelper.dart';
|
||||
import '../models/environment.dart';
|
||||
import 'package:http/http.dart' as http;
|
||||
|
||||
class privacypolicy extends StatefulWidget {
|
||||
const privacypolicy({Key? key}) : super(key: key);
|
||||
|
||||
@override
|
||||
State<privacypolicy> createState() => _privacypolicyState();
|
||||
}
|
||||
|
||||
class _privacypolicyState extends State<privacypolicy> {
|
||||
@override
|
||||
void initState() {
|
||||
super.initState();
|
||||
}
|
||||
|
||||
@override
|
||||
void dispose() {
|
||||
super.dispose();
|
||||
}
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return Scaffold(
|
||||
body: Stack(
|
||||
children: [
|
||||
SingleChildScrollView(
|
||||
child: Container(
|
||||
padding: Responsive.isDesktop(context)
|
||||
? EdgeInsets.symmetric(
|
||||
horizontal: MediaQuery.of(context).size.width * 0.2,
|
||||
vertical: MediaQuery.of(context).size.height * 0.03,
|
||||
)
|
||||
: EdgeInsets.all(10),
|
||||
color: Colors.white,
|
||||
child: Column(
|
||||
children: [
|
||||
Container(
|
||||
padding: Responsive.isDesktop(context)
|
||||
? EdgeInsets.symmetric(vertical: 15, horizontal: 25)
|
||||
: EdgeInsets.all(0),
|
||||
child: Column(
|
||||
crossAxisAlignment: CrossAxisAlignment.center,
|
||||
children: [
|
||||
Row(
|
||||
mainAxisAlignment: MainAxisAlignment.start,
|
||||
children: [
|
||||
Expanded(
|
||||
flex: 12,
|
||||
child: InkWell(
|
||||
onTap: () {
|
||||
Navigator.pushNamed(context, 'claims');
|
||||
},
|
||||
child: Row(
|
||||
mainAxisAlignment: MainAxisAlignment.start,
|
||||
children: [
|
||||
Icon(
|
||||
Icons.chevron_left,
|
||||
color: Color(0xFF000000),
|
||||
size: 30,
|
||||
),
|
||||
SizedBox(
|
||||
width: Responsive.isDesktop(context)
|
||||
? 0
|
||||
: 5),
|
||||
Column(
|
||||
mainAxisAlignment:
|
||||
MainAxisAlignment.center,
|
||||
crossAxisAlignment:
|
||||
CrossAxisAlignment.start,
|
||||
children: [
|
||||
Text(
|
||||
'Privacy Policy',
|
||||
textAlign: TextAlign.start,
|
||||
style: GoogleFonts.poppins(
|
||||
fontSize: 16,
|
||||
fontWeight: FontWeight.w600,
|
||||
color: Color(0xFF000000),
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
SizedBox(height: 15),
|
||||
Container(
|
||||
decoration: BoxDecoration(
|
||||
borderRadius: BorderRadius.circular(5),
|
||||
),
|
||||
padding: Responsive.isDesktop(context)
|
||||
? EdgeInsets.symmetric(vertical: 15, horizontal: 25)
|
||||
: EdgeInsets.all(10),
|
||||
child: Column(
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
children: [
|
||||
Padding(
|
||||
padding: EdgeInsets.only(bottom: 20),
|
||||
child: Column(
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
children: [
|
||||
Text(
|
||||
'Navigating the health insurance claim process can be daunting, but understanding how to utilize a cashless claim can simplify and expedite access to medical care. Here is a detailed guide on how to effectively manage the cashless claim process.',
|
||||
style: GoogleFonts.poppins(
|
||||
fontSize:
|
||||
Responsive.isDesktop(context) ? 16 : 14,
|
||||
fontWeight: FontWeight.w400,
|
||||
color: Color(0xFF000000),
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
Padding(
|
||||
padding: EdgeInsets.only(bottom: 20),
|
||||
child: Column(
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
children: [
|
||||
Text(
|
||||
'What is a Cashless Claim?',
|
||||
style: GoogleFonts.poppins(
|
||||
fontSize:
|
||||
Responsive.isDesktop(context) ? 18 : 16,
|
||||
fontWeight: FontWeight.w500,
|
||||
color: Color(0xFF000000),
|
||||
),
|
||||
),
|
||||
SizedBox(height: 15),
|
||||
Text(
|
||||
'A cashless claim is a facility offered by health insurance companies where the insurer directly settles the medical expenses with the hospital, eliminating the need for the policyholder to pay out-of-pocket at the time of treatment. This facility is available only at network hospitals that have a tie-up with the insurance company.',
|
||||
style: GoogleFonts.poppins(
|
||||
fontSize:
|
||||
Responsive.isDesktop(context) ? 16 : 14,
|
||||
fontWeight: FontWeight.w400,
|
||||
color: Color(0xFF000000),
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
Padding(
|
||||
padding: EdgeInsets.only(bottom: 20),
|
||||
child: Column(
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
children: [
|
||||
Text(
|
||||
'Steps to File a Cashless Claim',
|
||||
style: GoogleFonts.poppins(
|
||||
fontSize:
|
||||
Responsive.isDesktop(context) ? 18 : 16,
|
||||
fontWeight: FontWeight.w500,
|
||||
color: Color(0xFF000000),
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
Padding(
|
||||
padding: EdgeInsets.only(bottom: 20, left: 15),
|
||||
child: Column(
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
children: [
|
||||
Text(
|
||||
'1. Identify Network Hospitals:',
|
||||
style: GoogleFonts.poppins(
|
||||
fontSize:
|
||||
Responsive.isDesktop(context) ? 18 : 16,
|
||||
fontWeight: FontWeight.w500,
|
||||
color: Color(0xFF000000),
|
||||
),
|
||||
),
|
||||
SizedBox(height: 10),
|
||||
Row(
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
children: <Widget>[
|
||||
Padding(
|
||||
padding:
|
||||
const EdgeInsets.only(left: 20.0),
|
||||
child: Text(
|
||||
"• ",
|
||||
style: GoogleFonts.poppins(
|
||||
fontSize:
|
||||
Responsive.isDesktop(context)
|
||||
? 16
|
||||
: 14,
|
||||
fontWeight: FontWeight.w400,
|
||||
color: Color(0xFFE26728),
|
||||
),
|
||||
),
|
||||
),
|
||||
Expanded(
|
||||
child: Text(
|
||||
'Before seeking treatment, check the list of network hospitals associated with your insurance provider. This list can usually be found on the insurance company’s website or by contacting their customer service.',
|
||||
style: GoogleFonts.poppins(
|
||||
fontSize:
|
||||
Responsive.isDesktop(context)
|
||||
? 16
|
||||
: 14,
|
||||
fontWeight: FontWeight.w400,
|
||||
color: Color(0xFF000000),
|
||||
),
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
Padding(
|
||||
padding: EdgeInsets.only(bottom: 20, left: 15),
|
||||
child: Column(
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
children: [
|
||||
Text(
|
||||
'2. Inform the Insurance Provider:',
|
||||
style: GoogleFonts.poppins(
|
||||
fontSize:
|
||||
Responsive.isDesktop(context) ? 18 : 16,
|
||||
fontWeight: FontWeight.w500,
|
||||
color: Color(0xFF000000),
|
||||
),
|
||||
),
|
||||
SizedBox(height: 10),
|
||||
Row(
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
children: <Widget>[
|
||||
Padding(
|
||||
padding:
|
||||
const EdgeInsets.only(left: 20.0),
|
||||
child: Text(
|
||||
"• ",
|
||||
style: GoogleFonts.poppins(
|
||||
fontSize:
|
||||
Responsive.isDesktop(context)
|
||||
? 16
|
||||
: 14,
|
||||
fontWeight: FontWeight.w400,
|
||||
color: Color(0xFFE26728),
|
||||
),
|
||||
),
|
||||
),
|
||||
Expanded(
|
||||
child: Text(
|
||||
'Notify your insurance company as soon as possible about the planned hospitalization. For emergency admissions, inform them within the stipulated time frame (usually 24 hours) after admission.',
|
||||
style: GoogleFonts.poppins(
|
||||
fontSize:
|
||||
Responsive.isDesktop(context)
|
||||
? 16
|
||||
: 14,
|
||||
fontWeight: FontWeight.w400,
|
||||
color: Color(0xFF000000),
|
||||
),
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
Row(
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
children: <Widget>[
|
||||
Padding(
|
||||
padding:
|
||||
const EdgeInsets.only(left: 20.0),
|
||||
child: Text(
|
||||
"• ",
|
||||
style: GoogleFonts.poppins(
|
||||
fontSize:
|
||||
Responsive.isDesktop(context)
|
||||
? 16
|
||||
: 14,
|
||||
fontWeight: FontWeight.w400,
|
||||
color: Color(0xFFE26728),
|
||||
),
|
||||
),
|
||||
),
|
||||
Expanded(
|
||||
child: Text(
|
||||
'Fill out a pre-authorization form available at the hospitals insurance desk or download it from the insurers website. This form will require details about the policyholder and the nature of the medical treatment.',
|
||||
style: GoogleFonts.poppins(
|
||||
fontSize:
|
||||
Responsive.isDesktop(context)
|
||||
? 16
|
||||
: 14,
|
||||
fontWeight: FontWeight.w400,
|
||||
color: Color(0xFF000000),
|
||||
),
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
Padding(
|
||||
padding: EdgeInsets.only(bottom: 20, left: 15),
|
||||
child: Column(
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
children: [
|
||||
Text(
|
||||
'3. Submit Pre-Authorization Form:',
|
||||
style: GoogleFonts.poppins(
|
||||
fontSize:
|
||||
Responsive.isDesktop(context) ? 18 : 16,
|
||||
fontWeight: FontWeight.w500,
|
||||
color: Color(0xFF000000),
|
||||
),
|
||||
),
|
||||
SizedBox(height: 10),
|
||||
Row(
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
children: <Widget>[
|
||||
Padding(
|
||||
padding:
|
||||
const EdgeInsets.only(left: 20.0),
|
||||
child: Text(
|
||||
"• ",
|
||||
style: GoogleFonts.poppins(
|
||||
fontSize:
|
||||
Responsive.isDesktop(context)
|
||||
? 16
|
||||
: 14,
|
||||
fontWeight: FontWeight.w400,
|
||||
color: Color(0xFFE26728),
|
||||
),
|
||||
),
|
||||
),
|
||||
Expanded(
|
||||
child: Text(
|
||||
'The completed pre-authorization form must be submitted to the hospital’s insurance desk, which will then send it to the insurer or the Third-Party Administrator (TPA) for approval.',
|
||||
style: GoogleFonts.poppins(
|
||||
fontSize:
|
||||
Responsive.isDesktop(context)
|
||||
? 16
|
||||
: 14,
|
||||
fontWeight: FontWeight.w400,
|
||||
color: Color(0xFF000000),
|
||||
),
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
Row(
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
children: <Widget>[
|
||||
Padding(
|
||||
padding:
|
||||
const EdgeInsets.only(left: 20.0),
|
||||
child: Text(
|
||||
"• ",
|
||||
style: GoogleFonts.poppins(
|
||||
fontSize:
|
||||
Responsive.isDesktop(context)
|
||||
? 16
|
||||
: 14,
|
||||
fontWeight: FontWeight.w400,
|
||||
color: Color(0xFFE26728),
|
||||
),
|
||||
),
|
||||
),
|
||||
Expanded(
|
||||
child: Text(
|
||||
'Include all necessary medical documents, such as doctor’s prescriptions, diagnosis reports, and hospital records.',
|
||||
style: GoogleFonts.poppins(
|
||||
fontSize:
|
||||
Responsive.isDesktop(context)
|
||||
? 16
|
||||
: 14,
|
||||
fontWeight: FontWeight.w400,
|
||||
color: Color(0xFF000000),
|
||||
),
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
Padding(
|
||||
padding: EdgeInsets.only(bottom: 20, left: 15),
|
||||
child: Column(
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
children: [
|
||||
Text(
|
||||
'4. Approval from Insurer:',
|
||||
style: GoogleFonts.poppins(
|
||||
fontSize:
|
||||
Responsive.isDesktop(context) ? 18 : 16,
|
||||
fontWeight: FontWeight.w500,
|
||||
color: Color(0xFF000000),
|
||||
),
|
||||
),
|
||||
SizedBox(height: 10),
|
||||
Row(
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
children: <Widget>[
|
||||
Padding(
|
||||
padding:
|
||||
const EdgeInsets.only(left: 20.0),
|
||||
child: Text(
|
||||
"• ",
|
||||
style: GoogleFonts.poppins(
|
||||
fontSize:
|
||||
Responsive.isDesktop(context)
|
||||
? 16
|
||||
: 14,
|
||||
fontWeight: FontWeight.w400,
|
||||
color: Color(0xFFE26728),
|
||||
),
|
||||
),
|
||||
),
|
||||
Expanded(
|
||||
child: Text(
|
||||
'The insurer or TPA will review the submitted documents and decide on the approval. This can take anywhere from a few hours to a couple of days.',
|
||||
style: GoogleFonts.poppins(
|
||||
fontSize:
|
||||
Responsive.isDesktop(context)
|
||||
? 16
|
||||
: 14,
|
||||
fontWeight: FontWeight.w400,
|
||||
color: Color(0xFF000000),
|
||||
),
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
Row(
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
children: <Widget>[
|
||||
Padding(
|
||||
padding:
|
||||
const EdgeInsets.only(left: 20.0),
|
||||
child: Text(
|
||||
"• ",
|
||||
style: GoogleFonts.poppins(
|
||||
fontSize:
|
||||
Responsive.isDesktop(context)
|
||||
? 16
|
||||
: 14,
|
||||
fontWeight: FontWeight.w400,
|
||||
color: Color(0xFFE26728),
|
||||
),
|
||||
),
|
||||
),
|
||||
Expanded(
|
||||
child: Text(
|
||||
'If approved, the insurer will issue an authorization letter to the hospital, detailing the covered expenses and any limits.',
|
||||
style: GoogleFonts.poppins(
|
||||
fontSize:
|
||||
Responsive.isDesktop(context)
|
||||
? 16
|
||||
: 14,
|
||||
fontWeight: FontWeight.w400,
|
||||
color: Color(0xFF000000),
|
||||
),
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
Padding(
|
||||
padding: EdgeInsets.only(bottom: 20, left: 15),
|
||||
child: Column(
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
children: [
|
||||
Text(
|
||||
'5. Hospitalization and Treatment:',
|
||||
style: GoogleFonts.poppins(
|
||||
fontSize:
|
||||
Responsive.isDesktop(context) ? 18 : 16,
|
||||
fontWeight: FontWeight.w500,
|
||||
color: Color(0xFF000000),
|
||||
),
|
||||
),
|
||||
SizedBox(height: 10),
|
||||
Row(
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
children: <Widget>[
|
||||
Padding(
|
||||
padding:
|
||||
const EdgeInsets.only(left: 20.0),
|
||||
child: Text(
|
||||
"• ",
|
||||
style: GoogleFonts.poppins(
|
||||
fontSize:
|
||||
Responsive.isDesktop(context)
|
||||
? 16
|
||||
: 14,
|
||||
fontWeight: FontWeight.w400,
|
||||
color: Color(0xFFE26728),
|
||||
),
|
||||
),
|
||||
),
|
||||
Expanded(
|
||||
child: Text(
|
||||
'Upon receiving approval, you can undergo the required treatment. The hospital will manage the coordination with the insurance company for the expenses covered under the policy.',
|
||||
style: GoogleFonts.poppins(
|
||||
fontSize:
|
||||
Responsive.isDesktop(context)
|
||||
? 16
|
||||
: 14,
|
||||
fontWeight: FontWeight.w400,
|
||||
color: Color(0xFF000000),
|
||||
),
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
Row(
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
children: <Widget>[
|
||||
Padding(
|
||||
padding:
|
||||
const EdgeInsets.only(left: 20.0),
|
||||
child: Text(
|
||||
"• ",
|
||||
style: GoogleFonts.poppins(
|
||||
fontSize:
|
||||
Responsive.isDesktop(context)
|
||||
? 16
|
||||
: 14,
|
||||
fontWeight: FontWeight.w400,
|
||||
color: Color(0xFFE26728),
|
||||
),
|
||||
),
|
||||
),
|
||||
Expanded(
|
||||
child: Text(
|
||||
'Ensure that any non-covered expenses (like consumables, personal items, or certain specific treatments) are settled directly by you.',
|
||||
style: GoogleFonts.poppins(
|
||||
fontSize:
|
||||
Responsive.isDesktop(context)
|
||||
? 16
|
||||
: 14,
|
||||
fontWeight: FontWeight.w400,
|
||||
color: Color(0xFF000000),
|
||||
),
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
Padding(
|
||||
padding: EdgeInsets.only(bottom: 20, left: 15),
|
||||
child: Column(
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
children: [
|
||||
Text(
|
||||
'6. Discharge and Settlement:',
|
||||
style: GoogleFonts.poppins(
|
||||
fontSize:
|
||||
Responsive.isDesktop(context) ? 18 : 16,
|
||||
fontWeight: FontWeight.w500,
|
||||
color: Color(0xFF000000),
|
||||
),
|
||||
),
|
||||
SizedBox(height: 10),
|
||||
Row(
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
children: <Widget>[
|
||||
Padding(
|
||||
padding:
|
||||
const EdgeInsets.only(left: 20.0),
|
||||
child: Text(
|
||||
"• ",
|
||||
style: GoogleFonts.poppins(
|
||||
fontSize:
|
||||
Responsive.isDesktop(context)
|
||||
? 16
|
||||
: 14,
|
||||
fontWeight: FontWeight.w400,
|
||||
color: Color(0xFFE26728),
|
||||
),
|
||||
),
|
||||
),
|
||||
Expanded(
|
||||
child: Text(
|
||||
'Upon receiving approval, you can undergo the required treatment. The hospital will manage the coordination with the insurance company for the expenses covered under the policy.',
|
||||
style: GoogleFonts.poppins(
|
||||
fontSize:
|
||||
Responsive.isDesktop(context)
|
||||
? 16
|
||||
: 14,
|
||||
fontWeight: FontWeight.w400,
|
||||
color: Color(0xFF000000),
|
||||
),
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
Row(
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
children: <Widget>[
|
||||
Padding(
|
||||
padding:
|
||||
const EdgeInsets.only(left: 20.0),
|
||||
child: Text(
|
||||
"• ",
|
||||
style: GoogleFonts.poppins(
|
||||
fontSize:
|
||||
Responsive.isDesktop(context)
|
||||
? 16
|
||||
: 14,
|
||||
fontWeight: FontWeight.w400,
|
||||
color: Color(0xFFE26728),
|
||||
),
|
||||
),
|
||||
),
|
||||
Expanded(
|
||||
child: Text(
|
||||
'Review the bill for any non-covered items and pay for those out of your pocket.',
|
||||
style: GoogleFonts.poppins(
|
||||
fontSize:
|
||||
Responsive.isDesktop(context)
|
||||
? 16
|
||||
: 14,
|
||||
fontWeight: FontWeight.w400,
|
||||
color: Color(0xFF000000),
|
||||
),
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
Padding(
|
||||
padding: EdgeInsets.only(bottom: 20, left: 15),
|
||||
child: Column(
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
children: [
|
||||
Text(
|
||||
'7. Post-Discharge Procedure:',
|
||||
style: GoogleFonts.poppins(
|
||||
fontSize:
|
||||
Responsive.isDesktop(context) ? 18 : 16,
|
||||
fontWeight: FontWeight.w500,
|
||||
color: Color(0xFF000000),
|
||||
),
|
||||
),
|
||||
SizedBox(height: 10),
|
||||
Row(
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
children: <Widget>[
|
||||
Padding(
|
||||
padding:
|
||||
const EdgeInsets.only(left: 20.0),
|
||||
child: Text(
|
||||
"• ",
|
||||
style: GoogleFonts.poppins(
|
||||
fontSize:
|
||||
Responsive.isDesktop(context)
|
||||
? 16
|
||||
: 14,
|
||||
fontWeight: FontWeight.w400,
|
||||
color: Color(0xFFE26728),
|
||||
),
|
||||
),
|
||||
),
|
||||
Expanded(
|
||||
child: Text(
|
||||
'Retain copies of all bills, receipts, and discharge summaries for your records.',
|
||||
style: GoogleFonts.poppins(
|
||||
fontSize:
|
||||
Responsive.isDesktop(context)
|
||||
? 16
|
||||
: 14,
|
||||
fontWeight: FontWeight.w400,
|
||||
color: Color(0xFF000000),
|
||||
),
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
Row(
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
children: <Widget>[
|
||||
Padding(
|
||||
padding:
|
||||
const EdgeInsets.only(left: 20.0),
|
||||
child: Text(
|
||||
"• ",
|
||||
style: GoogleFonts.poppins(
|
||||
fontSize:
|
||||
Responsive.isDesktop(context)
|
||||
? 16
|
||||
: 14,
|
||||
fontWeight: FontWeight.w400,
|
||||
color: Color(0xFFE26728),
|
||||
),
|
||||
),
|
||||
),
|
||||
Expanded(
|
||||
child: Text(
|
||||
'Follow up with the insurance company if there are any discrepancies or if you receive any communication regarding the claim.',
|
||||
style: GoogleFonts.poppins(
|
||||
fontSize:
|
||||
Responsive.isDesktop(context)
|
||||
? 16
|
||||
: 14,
|
||||
fontWeight: FontWeight.w400,
|
||||
color: Color(0xFF000000),
|
||||
),
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
Padding(
|
||||
padding: EdgeInsets.only(bottom: 20),
|
||||
child: Column(
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
children: [
|
||||
Text(
|
||||
'Tips for a Smooth Cashless Claim Process',
|
||||
style: GoogleFonts.poppins(
|
||||
fontSize:
|
||||
Responsive.isDesktop(context) ? 18 : 16,
|
||||
fontWeight: FontWeight.w500,
|
||||
color: Color(0xFF000000),
|
||||
),
|
||||
),
|
||||
SizedBox(height: 10),
|
||||
Row(
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
children: <Widget>[
|
||||
Padding(
|
||||
padding:
|
||||
const EdgeInsets.only(left: 20.0),
|
||||
child: Text(
|
||||
"• ",
|
||||
style: GoogleFonts.poppins(
|
||||
fontSize:
|
||||
Responsive.isDesktop(context)
|
||||
? 16
|
||||
: 14,
|
||||
fontWeight: FontWeight.w400,
|
||||
color: Color(0xFFE26728),
|
||||
),
|
||||
),
|
||||
),
|
||||
Expanded(
|
||||
child: Text(
|
||||
'Maintain Updated Records: Always keep your insurance policy documents and health records updated and accessible.',
|
||||
style: GoogleFonts.poppins(
|
||||
fontSize:
|
||||
Responsive.isDesktop(context)
|
||||
? 16
|
||||
: 14,
|
||||
fontWeight: FontWeight.w400,
|
||||
color: Color(0xFF000000),
|
||||
),
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
Row(
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
children: <Widget>[
|
||||
Padding(
|
||||
padding:
|
||||
const EdgeInsets.only(left: 20.0),
|
||||
child: Text(
|
||||
"• ",
|
||||
style: GoogleFonts.poppins(
|
||||
fontSize:
|
||||
Responsive.isDesktop(context)
|
||||
? 16
|
||||
: 14,
|
||||
fontWeight: FontWeight.w400,
|
||||
color: Color(0xFFE26728),
|
||||
),
|
||||
),
|
||||
),
|
||||
Expanded(
|
||||
child: Text(
|
||||
'Understand Your Policy: Be aware of the inclusions, exclusions, and the claim procedure specific to your health insurance policy.',
|
||||
style: GoogleFonts.poppins(
|
||||
fontSize:
|
||||
Responsive.isDesktop(context)
|
||||
? 16
|
||||
: 14,
|
||||
fontWeight: FontWeight.w400,
|
||||
color: Color(0xFF000000),
|
||||
),
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
Row(
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
children: <Widget>[
|
||||
Padding(
|
||||
padding:
|
||||
const EdgeInsets.only(left: 20.0),
|
||||
child: Text(
|
||||
"• ",
|
||||
style: GoogleFonts.poppins(
|
||||
fontSize:
|
||||
Responsive.isDesktop(context)
|
||||
? 16
|
||||
: 14,
|
||||
fontWeight: FontWeight.w400,
|
||||
color: Color(0xFFE26728),
|
||||
),
|
||||
),
|
||||
),
|
||||
Expanded(
|
||||
child: Text(
|
||||
'Communicate Clearly: Ensure clear and prompt communication with the hospitals insurance desk and your insurance provider.',
|
||||
style: GoogleFonts.poppins(
|
||||
fontSize:
|
||||
Responsive.isDesktop(context)
|
||||
? 16
|
||||
: 14,
|
||||
fontWeight: FontWeight.w400,
|
||||
color: Color(0xFF000000),
|
||||
),
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
Row(
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
children: <Widget>[
|
||||
Padding(
|
||||
padding:
|
||||
const EdgeInsets.only(left: 20.0),
|
||||
child: Text(
|
||||
"• ",
|
||||
style: GoogleFonts.poppins(
|
||||
fontSize:
|
||||
Responsive.isDesktop(context)
|
||||
? 16
|
||||
: 14,
|
||||
fontWeight: FontWeight.w400,
|
||||
color: Color(0xFFE26728),
|
||||
),
|
||||
),
|
||||
),
|
||||
Expanded(
|
||||
child: Text(
|
||||
'Check for Network Hospitals: Regularly update yourself with the list of network hospitals to avoid any last-minute surprises.',
|
||||
style: GoogleFonts.poppins(
|
||||
fontSize:
|
||||
Responsive.isDesktop(context)
|
||||
? 16
|
||||
: 14,
|
||||
fontWeight: FontWeight.w400,
|
||||
color: Color(0xFF000000),
|
||||
),
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
Row(
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
children: <Widget>[
|
||||
Padding(
|
||||
padding:
|
||||
const EdgeInsets.only(left: 20.0),
|
||||
child: Text(
|
||||
"• ",
|
||||
style: GoogleFonts.poppins(
|
||||
fontSize:
|
||||
Responsive.isDesktop(context)
|
||||
? 16
|
||||
: 14,
|
||||
fontWeight: FontWeight.w400,
|
||||
color: Color(0xFFE26728),
|
||||
),
|
||||
),
|
||||
),
|
||||
Expanded(
|
||||
child: Text(
|
||||
'Emergency Preparedness: Keep a list of nearby network hospitals for emergencies.',
|
||||
style: GoogleFonts.poppins(
|
||||
fontSize:
|
||||
Responsive.isDesktop(context)
|
||||
? 16
|
||||
: 14,
|
||||
fontWeight: FontWeight.w400,
|
||||
color: Color(0xFF000000),
|
||||
),
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
Padding(
|
||||
padding: EdgeInsets.only(bottom: 20),
|
||||
child: Column(
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
children: [
|
||||
Text(
|
||||
'Conclusion',
|
||||
style: GoogleFonts.poppins(
|
||||
fontSize:
|
||||
Responsive.isDesktop(context) ? 18 : 16,
|
||||
fontWeight: FontWeight.w500,
|
||||
color: Color(0xFF000000),
|
||||
),
|
||||
),
|
||||
SizedBox(height: 15),
|
||||
Text(
|
||||
'The cashless claim process is designed to provide financial relief and convenience during medical emergencies and planned treatments. By following the outlined steps and maintaining clear communication with your insurer, you can navigate the process smoothly and focus on recovery without financial stress.',
|
||||
style: GoogleFonts.poppins(
|
||||
fontSize:
|
||||
Responsive.isDesktop(context) ? 16 : 14,
|
||||
fontWeight: FontWeight.w400,
|
||||
color: Color(0xFF000000),
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
]),
|
||||
),
|
||||
SizedBox(height: Responsive.isDesktop(context) ? 40 : 10),
|
||||
],
|
||||
),
|
||||
),
|
||||
),
|
||||
if (Responsive.isDesktop(context))
|
||||
Align(
|
||||
alignment: Alignment.bottomCenter,
|
||||
child: Container(
|
||||
width: double.infinity,
|
||||
child: CustomFooter(),
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
||||
@ -12,6 +12,8 @@ import '../customAppBar/toastHelper.dart';
|
||||
import '../models/environment.dart';
|
||||
import 'package:http/http.dart' as http;
|
||||
|
||||
import '../service/api_service.dart';
|
||||
|
||||
class profile extends StatefulWidget {
|
||||
const profile({Key? key}) : super(key: key);
|
||||
|
||||
@ -20,6 +22,7 @@ class profile extends StatefulWidget {
|
||||
}
|
||||
|
||||
class _profileState extends State<profile> {
|
||||
late ApiService apiService;
|
||||
int _currentIndex = 0;
|
||||
bool isActive = true;
|
||||
dynamic _token;
|
||||
@ -55,6 +58,7 @@ class _profileState extends State<profile> {
|
||||
@override
|
||||
void initState() {
|
||||
super.initState();
|
||||
apiService = ApiService(context); // Initialize ApiService here
|
||||
_loadToken();
|
||||
}
|
||||
|
||||
@ -95,56 +99,43 @@ class _profileState extends State<profile> {
|
||||
}
|
||||
|
||||
Future<void> getSelfEmployeeProfile() async {
|
||||
var url = Uri.parse(Environment.apiUrl +
|
||||
'getEmployeeProfile?emp_code=$empCodeString&client_id=$client_id');
|
||||
try {
|
||||
var response = await http.get(
|
||||
url,
|
||||
headers: {
|
||||
'Authorization':
|
||||
'Bearer $_token', // Add token to the Authorization header
|
||||
},
|
||||
);
|
||||
if (response.statusCode == 200) {
|
||||
// print('response.statusCode == 200');
|
||||
Map<String, dynamic> data = json.decode(response.body);
|
||||
// print(data);
|
||||
|
||||
if (data.containsKey('data')) {
|
||||
setState(() {
|
||||
dynamic selfDetails = data['data'];
|
||||
print(selfDetails);
|
||||
selfRelationship = selfDetails['relationship'];
|
||||
selfName = selfDetails['name'];
|
||||
selfMobile = selfDetails['mobile'];
|
||||
selfDesignation = selfDetails['designation'];
|
||||
selfDob = convertDate(selfDetails['dob']);
|
||||
selfDoj = convertDate(selfDetails['doj']);
|
||||
selfGender = selfDetails['gender'];
|
||||
selfEmailCorporate = selfDetails['email_corporate'];
|
||||
selfEmailPersonal = selfDetails['email_personal'];
|
||||
selfEmpCode = selfDetails['emp_code'];
|
||||
selfFamilyFloaterKey = selfDetails['family_floater_key'];
|
||||
// print(clientDetails);
|
||||
selfEmpStatus = selfDetails['emp_status'];
|
||||
});
|
||||
final SharedPreferences prefs = await SharedPreferences.getInstance();
|
||||
prefs.setString('selfEmpStatus', selfEmpStatus);
|
||||
} else {
|
||||
// Handle other status messages if needed
|
||||
// ToastHelper.showErrorToast(
|
||||
// context, 'API request failed with status: ${data['status']}');
|
||||
print('API request failed with status: ${data['status']}');
|
||||
}
|
||||
print(getSelfEmployeeProfile);
|
||||
if (client_id == null || empCodeString == null) {
|
||||
return;
|
||||
}
|
||||
print('check 1');
|
||||
final response = await apiService.getSelfEmployeeProfileDetails(
|
||||
client_id!, empCodeString!);
|
||||
print('check 1');
|
||||
if (response['status'] == 'success') {
|
||||
if (response.containsKey('data')) {
|
||||
setState(() {
|
||||
dynamic selfDetails = response['data'];
|
||||
print(selfDetails);
|
||||
selfRelationship = selfDetails['relationship'];
|
||||
selfName = selfDetails['name'];
|
||||
selfMobile = selfDetails['mobile'];
|
||||
selfDesignation = selfDetails['designation'];
|
||||
selfDob = convertDate(selfDetails['dob']);
|
||||
selfDoj = convertDate(selfDetails['doj']);
|
||||
selfGender = selfDetails['gender'];
|
||||
selfEmailCorporate = selfDetails['email_corporate'];
|
||||
selfEmailPersonal = selfDetails['email_personal'];
|
||||
selfEmpCode = selfDetails['emp_code'];
|
||||
selfFamilyFloaterKey = selfDetails['family_floater_key'];
|
||||
// print(clientDetails);
|
||||
selfEmpStatus = selfDetails['emp_status'];
|
||||
});
|
||||
final SharedPreferences prefs = await SharedPreferences.getInstance();
|
||||
prefs.setString('selfEmpStatus', selfEmpStatus);
|
||||
} else {
|
||||
// Handle other status codes
|
||||
// Handle other status messages if needed
|
||||
// ToastHelper.showErrorToast(
|
||||
// context, 'Request failed with status: ${response.statusCode}');
|
||||
print('Request failed with status: ${response.statusCode}');
|
||||
// context, 'API request failed with status: ${data['status']}');
|
||||
print('API request failed with status: ${response['status']}');
|
||||
}
|
||||
} catch (e) {
|
||||
// Handle exceptions
|
||||
print('Exception occurred: $e');
|
||||
} else {
|
||||
print('API request failed with status: ${response['status']}');
|
||||
}
|
||||
}
|
||||
|
||||
@ -175,7 +166,7 @@ class _profileState extends State<profile> {
|
||||
if (selfName != null)
|
||||
Container(
|
||||
child: Column(
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
crossAxisAlignment: CrossAxisAlignment.center,
|
||||
children: [
|
||||
Row(
|
||||
mainAxisAlignment: MainAxisAlignment.start,
|
||||
@ -203,14 +194,6 @@ class _profileState extends State<profile> {
|
||||
mainAxisAlignment: MainAxisAlignment.center,
|
||||
crossAxisAlignment: CrossAxisAlignment.center,
|
||||
children: [
|
||||
AvatarDesign(
|
||||
gender:
|
||||
selfGender, // Replace with your image URL
|
||||
radius: 50.0,
|
||||
borderColor: Color(0xFFFEEDED),
|
||||
borderWidth: 4.0,
|
||||
),
|
||||
SizedBox(height: 10),
|
||||
Text(
|
||||
selfName ?? '',
|
||||
textAlign: TextAlign.center,
|
||||
@ -220,7 +203,33 @@ class _profileState extends State<profile> {
|
||||
color: Color(0xFF000000),
|
||||
),
|
||||
),
|
||||
SizedBox(height: 10),
|
||||
],
|
||||
),
|
||||
],
|
||||
),
|
||||
)
|
||||
],
|
||||
),
|
||||
Row(
|
||||
mainAxisAlignment: MainAxisAlignment.start,
|
||||
children: [
|
||||
if (!Responsive.isDesktop(context))
|
||||
Expanded(
|
||||
flex: 1,
|
||||
child: Container(
|
||||
alignment: Alignment.topLeft,
|
||||
padding: EdgeInsets.only(top: 10, left: 10),
|
||||
child: Text(''))),
|
||||
Expanded(
|
||||
flex: Responsive.isDesktop(context) ? 12 : 11,
|
||||
child: Row(
|
||||
mainAxisAlignment: MainAxisAlignment.center,
|
||||
children: [
|
||||
// Adjust space between icon and text
|
||||
Column(
|
||||
mainAxisAlignment: MainAxisAlignment.center,
|
||||
crossAxisAlignment: CrossAxisAlignment.center,
|
||||
children: [
|
||||
RichText(
|
||||
text: TextSpan(
|
||||
children: [
|
||||
@ -260,10 +269,15 @@ class _profileState extends State<profile> {
|
||||
if (selfName != null)
|
||||
Card(
|
||||
elevation: 5,
|
||||
shape: RoundedRectangleBorder(
|
||||
borderRadius:
|
||||
BorderRadius.circular(10), // Set the border radius here
|
||||
),
|
||||
child: Column(children: [
|
||||
Container(
|
||||
decoration: BoxDecoration(
|
||||
color: Colors.white,
|
||||
borderRadius: BorderRadius.circular(10),
|
||||
),
|
||||
padding: Responsive.isDesktop(context)
|
||||
? EdgeInsets.all(30)
|
||||
@ -278,6 +292,10 @@ class _profileState extends State<profile> {
|
||||
),
|
||||
),
|
||||
),
|
||||
padding: Responsive.isDesktop(context)
|
||||
? EdgeInsets.only(
|
||||
top: 15, bottom: 15, left: 15, right: 15)
|
||||
: EdgeInsets.only(top: 10, bottom: 10),
|
||||
child: Row(
|
||||
crossAxisAlignment: CrossAxisAlignment.center,
|
||||
children: [
|
||||
@ -302,7 +320,7 @@ class _profileState extends State<profile> {
|
||||
style: GoogleFonts.poppins(
|
||||
fontSize: Responsive.isDesktop(context)
|
||||
? 16
|
||||
: 12,
|
||||
: 14,
|
||||
color: Color(0xFF777777),
|
||||
fontWeight: FontWeight.w500,
|
||||
),
|
||||
@ -319,7 +337,7 @@ class _profileState extends State<profile> {
|
||||
style: GoogleFonts.poppins(
|
||||
fontSize: Responsive.isDesktop(context)
|
||||
? 16
|
||||
: 12,
|
||||
: 16,
|
||||
color: Color(0xFF2D5A82),
|
||||
fontWeight: FontWeight.w400,
|
||||
),
|
||||
@ -337,6 +355,10 @@ class _profileState extends State<profile> {
|
||||
),
|
||||
),
|
||||
),
|
||||
padding: Responsive.isDesktop(context)
|
||||
? EdgeInsets.only(
|
||||
top: 15, bottom: 15, left: 15, right: 15)
|
||||
: EdgeInsets.only(top: 10, bottom: 10),
|
||||
child: Row(
|
||||
crossAxisAlignment: CrossAxisAlignment.center,
|
||||
children: [
|
||||
@ -361,7 +383,7 @@ class _profileState extends State<profile> {
|
||||
style: GoogleFonts.poppins(
|
||||
fontSize: Responsive.isDesktop(context)
|
||||
? 16
|
||||
: 12,
|
||||
: 14,
|
||||
color: Color(0xFF777777),
|
||||
fontWeight: FontWeight.w500,
|
||||
),
|
||||
@ -378,7 +400,7 @@ class _profileState extends State<profile> {
|
||||
style: GoogleFonts.poppins(
|
||||
fontSize: Responsive.isDesktop(context)
|
||||
? 16
|
||||
: 12,
|
||||
: 16,
|
||||
color: Color(0xFF2D5A82),
|
||||
fontWeight: FontWeight.w400,
|
||||
),
|
||||
@ -396,6 +418,10 @@ class _profileState extends State<profile> {
|
||||
),
|
||||
),
|
||||
),
|
||||
padding: Responsive.isDesktop(context)
|
||||
? EdgeInsets.only(
|
||||
top: 15, bottom: 15, left: 15, right: 15)
|
||||
: EdgeInsets.only(top: 10, bottom: 10),
|
||||
child: Row(
|
||||
crossAxisAlignment: CrossAxisAlignment.center,
|
||||
children: [
|
||||
@ -420,7 +446,7 @@ class _profileState extends State<profile> {
|
||||
style: GoogleFonts.poppins(
|
||||
fontSize: Responsive.isDesktop(context)
|
||||
? 16
|
||||
: 12,
|
||||
: 14,
|
||||
color: Color(0xFF777777),
|
||||
fontWeight: FontWeight.w500,
|
||||
),
|
||||
@ -437,7 +463,7 @@ class _profileState extends State<profile> {
|
||||
style: GoogleFonts.poppins(
|
||||
fontSize: Responsive.isDesktop(context)
|
||||
? 16
|
||||
: 12,
|
||||
: 16,
|
||||
color: Color(0xFF2D5A82),
|
||||
fontWeight: FontWeight.w400,
|
||||
),
|
||||
@ -447,14 +473,10 @@ class _profileState extends State<profile> {
|
||||
],
|
||||
)),
|
||||
Container(
|
||||
decoration: BoxDecoration(
|
||||
border: Border(
|
||||
bottom: BorderSide(
|
||||
color: Color(0xFFBDBDBD),
|
||||
width: 1.0, // Adjust the width as needed
|
||||
),
|
||||
),
|
||||
),
|
||||
padding: Responsive.isDesktop(context)
|
||||
? EdgeInsets.only(
|
||||
top: 15, bottom: 15, left: 15, right: 15)
|
||||
: EdgeInsets.only(top: 10, bottom: 10),
|
||||
child: Row(
|
||||
crossAxisAlignment: CrossAxisAlignment.center,
|
||||
children: [
|
||||
@ -479,7 +501,7 @@ class _profileState extends State<profile> {
|
||||
style: GoogleFonts.poppins(
|
||||
fontSize: Responsive.isDesktop(context)
|
||||
? 16
|
||||
: 12,
|
||||
: 14,
|
||||
color: Color(0xFF777777),
|
||||
fontWeight: FontWeight.w500,
|
||||
),
|
||||
@ -496,7 +518,7 @@ class _profileState extends State<profile> {
|
||||
style: GoogleFonts.poppins(
|
||||
fontSize: Responsive.isDesktop(context)
|
||||
? 16
|
||||
: 12,
|
||||
: 16,
|
||||
color: Color(0xFF2D5A82),
|
||||
fontWeight: FontWeight.w400,
|
||||
),
|
||||
@ -591,10 +613,10 @@ class _profileState extends State<profile> {
|
||||
}
|
||||
},
|
||||
icons: [
|
||||
Icons.home,
|
||||
Icons.sticky_note_2_sharp,
|
||||
Icons.account_circle,
|
||||
Icons.help,
|
||||
Icons.home_outlined,
|
||||
Icons.sticky_note_2_outlined,
|
||||
Icons.person_outline_outlined,
|
||||
Icons.headset_mic_outlined,
|
||||
],
|
||||
labels: [
|
||||
"Home",
|
||||
|
||||
958
lib/pages/termsofuse.dart
Normal file
@ -0,0 +1,958 @@
|
||||
import 'dart:convert';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:google_fonts/google_fonts.dart';
|
||||
import 'package:jwt_decode/jwt_decode.dart';
|
||||
import 'package:shared_preferences/shared_preferences.dart';
|
||||
import '../customAppBar/customAppBar.dart';
|
||||
import '../customAppBar/customFooter.dart';
|
||||
import '../customAppBar/tabs.dart';
|
||||
import '../customAppBar/responsive.dart';
|
||||
import '../customAppBar/toastHelper.dart';
|
||||
import '../models/environment.dart';
|
||||
import 'package:http/http.dart' as http;
|
||||
|
||||
class termsofuse extends StatefulWidget {
|
||||
const termsofuse({Key? key}) : super(key: key);
|
||||
|
||||
@override
|
||||
State<termsofuse> createState() => _termsofuseState();
|
||||
}
|
||||
|
||||
class _termsofuseState extends State<termsofuse> {
|
||||
@override
|
||||
void initState() {
|
||||
super.initState();
|
||||
}
|
||||
|
||||
@override
|
||||
void dispose() {
|
||||
super.dispose();
|
||||
}
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return Scaffold(
|
||||
body: Stack(
|
||||
children: [
|
||||
SingleChildScrollView(
|
||||
child: Container(
|
||||
padding: Responsive.isDesktop(context)
|
||||
? EdgeInsets.symmetric(
|
||||
horizontal: MediaQuery.of(context).size.width * 0.2,
|
||||
vertical: MediaQuery.of(context).size.height * 0.03,
|
||||
)
|
||||
: EdgeInsets.all(10),
|
||||
color: Colors.white,
|
||||
child: Column(
|
||||
children: [
|
||||
Container(
|
||||
padding: Responsive.isDesktop(context)
|
||||
? EdgeInsets.symmetric(vertical: 15, horizontal: 25)
|
||||
: EdgeInsets.all(0),
|
||||
child: Column(
|
||||
crossAxisAlignment: CrossAxisAlignment.center,
|
||||
children: [
|
||||
Row(
|
||||
mainAxisAlignment: MainAxisAlignment.start,
|
||||
children: [
|
||||
Expanded(
|
||||
flex: 12,
|
||||
child: InkWell(
|
||||
onTap: () {
|
||||
Navigator.pushNamed(context, 'claims');
|
||||
},
|
||||
child: Row(
|
||||
mainAxisAlignment: MainAxisAlignment.start,
|
||||
children: [
|
||||
Icon(
|
||||
Icons.chevron_left,
|
||||
color: Color(0xFF000000),
|
||||
size: 30,
|
||||
),
|
||||
SizedBox(
|
||||
width: Responsive.isDesktop(context)
|
||||
? 0
|
||||
: 5),
|
||||
Column(
|
||||
mainAxisAlignment:
|
||||
MainAxisAlignment.center,
|
||||
crossAxisAlignment:
|
||||
CrossAxisAlignment.start,
|
||||
children: [
|
||||
Text(
|
||||
'Terms of Use',
|
||||
textAlign: TextAlign.start,
|
||||
style: GoogleFonts.poppins(
|
||||
fontSize: 16,
|
||||
fontWeight: FontWeight.w600,
|
||||
color: Color(0xFF000000),
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
SizedBox(height: 15),
|
||||
Container(
|
||||
decoration: BoxDecoration(
|
||||
borderRadius: BorderRadius.circular(5),
|
||||
),
|
||||
padding: Responsive.isDesktop(context)
|
||||
? EdgeInsets.symmetric(vertical: 15, horizontal: 25)
|
||||
: EdgeInsets.all(10),
|
||||
child: Column(
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
children: [
|
||||
Padding(
|
||||
padding: EdgeInsets.only(bottom: 20),
|
||||
child: Column(
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
children: [
|
||||
Text(
|
||||
'Navigating the health insurance claim process can be daunting, but understanding how to utilize a cashless claim can simplify and expedite access to medical care. Here is a detailed guide on how to effectively manage the cashless claim process.',
|
||||
style: GoogleFonts.poppins(
|
||||
fontSize:
|
||||
Responsive.isDesktop(context) ? 16 : 14,
|
||||
fontWeight: FontWeight.w400,
|
||||
color: Color(0xFF000000),
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
Padding(
|
||||
padding: EdgeInsets.only(bottom: 20),
|
||||
child: Column(
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
children: [
|
||||
Text(
|
||||
'What is a Cashless Claim?',
|
||||
style: GoogleFonts.poppins(
|
||||
fontSize:
|
||||
Responsive.isDesktop(context) ? 18 : 16,
|
||||
fontWeight: FontWeight.w500,
|
||||
color: Color(0xFF000000),
|
||||
),
|
||||
),
|
||||
SizedBox(height: 15),
|
||||
Text(
|
||||
'A cashless claim is a facility offered by health insurance companies where the insurer directly settles the medical expenses with the hospital, eliminating the need for the policyholder to pay out-of-pocket at the time of treatment. This facility is available only at network hospitals that have a tie-up with the insurance company.',
|
||||
style: GoogleFonts.poppins(
|
||||
fontSize:
|
||||
Responsive.isDesktop(context) ? 16 : 14,
|
||||
fontWeight: FontWeight.w400,
|
||||
color: Color(0xFF000000),
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
Padding(
|
||||
padding: EdgeInsets.only(bottom: 20),
|
||||
child: Column(
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
children: [
|
||||
Text(
|
||||
'Steps to File a Cashless Claim',
|
||||
style: GoogleFonts.poppins(
|
||||
fontSize:
|
||||
Responsive.isDesktop(context) ? 18 : 16,
|
||||
fontWeight: FontWeight.w500,
|
||||
color: Color(0xFF000000),
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
Padding(
|
||||
padding: EdgeInsets.only(bottom: 20, left: 15),
|
||||
child: Column(
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
children: [
|
||||
Text(
|
||||
'1. Identify Network Hospitals:',
|
||||
style: GoogleFonts.poppins(
|
||||
fontSize:
|
||||
Responsive.isDesktop(context) ? 18 : 16,
|
||||
fontWeight: FontWeight.w500,
|
||||
color: Color(0xFF000000),
|
||||
),
|
||||
),
|
||||
SizedBox(height: 10),
|
||||
Row(
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
children: <Widget>[
|
||||
Padding(
|
||||
padding:
|
||||
const EdgeInsets.only(left: 20.0),
|
||||
child: Text(
|
||||
"• ",
|
||||
style: GoogleFonts.poppins(
|
||||
fontSize:
|
||||
Responsive.isDesktop(context)
|
||||
? 16
|
||||
: 14,
|
||||
fontWeight: FontWeight.w400,
|
||||
color: Color(0xFFE26728),
|
||||
),
|
||||
),
|
||||
),
|
||||
Expanded(
|
||||
child: Text(
|
||||
'Before seeking treatment, check the list of network hospitals associated with your insurance provider. This list can usually be found on the insurance company’s website or by contacting their customer service.',
|
||||
style: GoogleFonts.poppins(
|
||||
fontSize:
|
||||
Responsive.isDesktop(context)
|
||||
? 16
|
||||
: 14,
|
||||
fontWeight: FontWeight.w400,
|
||||
color: Color(0xFF000000),
|
||||
),
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
Padding(
|
||||
padding: EdgeInsets.only(bottom: 20, left: 15),
|
||||
child: Column(
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
children: [
|
||||
Text(
|
||||
'2. Inform the Insurance Provider:',
|
||||
style: GoogleFonts.poppins(
|
||||
fontSize:
|
||||
Responsive.isDesktop(context) ? 18 : 16,
|
||||
fontWeight: FontWeight.w500,
|
||||
color: Color(0xFF000000),
|
||||
),
|
||||
),
|
||||
SizedBox(height: 10),
|
||||
Row(
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
children: <Widget>[
|
||||
Padding(
|
||||
padding:
|
||||
const EdgeInsets.only(left: 20.0),
|
||||
child: Text(
|
||||
"• ",
|
||||
style: GoogleFonts.poppins(
|
||||
fontSize:
|
||||
Responsive.isDesktop(context)
|
||||
? 16
|
||||
: 14,
|
||||
fontWeight: FontWeight.w400,
|
||||
color: Color(0xFFE26728),
|
||||
),
|
||||
),
|
||||
),
|
||||
Expanded(
|
||||
child: Text(
|
||||
'Notify your insurance company as soon as possible about the planned hospitalization. For emergency admissions, inform them within the stipulated time frame (usually 24 hours) after admission.',
|
||||
style: GoogleFonts.poppins(
|
||||
fontSize:
|
||||
Responsive.isDesktop(context)
|
||||
? 16
|
||||
: 14,
|
||||
fontWeight: FontWeight.w400,
|
||||
color: Color(0xFF000000),
|
||||
),
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
Row(
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
children: <Widget>[
|
||||
Padding(
|
||||
padding:
|
||||
const EdgeInsets.only(left: 20.0),
|
||||
child: Text(
|
||||
"• ",
|
||||
style: GoogleFonts.poppins(
|
||||
fontSize:
|
||||
Responsive.isDesktop(context)
|
||||
? 16
|
||||
: 14,
|
||||
fontWeight: FontWeight.w400,
|
||||
color: Color(0xFFE26728),
|
||||
),
|
||||
),
|
||||
),
|
||||
Expanded(
|
||||
child: Text(
|
||||
'Fill out a pre-authorization form available at the hospitals insurance desk or download it from the insurers website. This form will require details about the policyholder and the nature of the medical treatment.',
|
||||
style: GoogleFonts.poppins(
|
||||
fontSize:
|
||||
Responsive.isDesktop(context)
|
||||
? 16
|
||||
: 14,
|
||||
fontWeight: FontWeight.w400,
|
||||
color: Color(0xFF000000),
|
||||
),
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
Padding(
|
||||
padding: EdgeInsets.only(bottom: 20, left: 15),
|
||||
child: Column(
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
children: [
|
||||
Text(
|
||||
'3. Submit Pre-Authorization Form:',
|
||||
style: GoogleFonts.poppins(
|
||||
fontSize:
|
||||
Responsive.isDesktop(context) ? 18 : 16,
|
||||
fontWeight: FontWeight.w500,
|
||||
color: Color(0xFF000000),
|
||||
),
|
||||
),
|
||||
SizedBox(height: 10),
|
||||
Row(
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
children: <Widget>[
|
||||
Padding(
|
||||
padding:
|
||||
const EdgeInsets.only(left: 20.0),
|
||||
child: Text(
|
||||
"• ",
|
||||
style: GoogleFonts.poppins(
|
||||
fontSize:
|
||||
Responsive.isDesktop(context)
|
||||
? 16
|
||||
: 14,
|
||||
fontWeight: FontWeight.w400,
|
||||
color: Color(0xFFE26728),
|
||||
),
|
||||
),
|
||||
),
|
||||
Expanded(
|
||||
child: Text(
|
||||
'The completed pre-authorization form must be submitted to the hospital’s insurance desk, which will then send it to the insurer or the Third-Party Administrator (TPA) for approval.',
|
||||
style: GoogleFonts.poppins(
|
||||
fontSize:
|
||||
Responsive.isDesktop(context)
|
||||
? 16
|
||||
: 14,
|
||||
fontWeight: FontWeight.w400,
|
||||
color: Color(0xFF000000),
|
||||
),
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
Row(
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
children: <Widget>[
|
||||
Padding(
|
||||
padding:
|
||||
const EdgeInsets.only(left: 20.0),
|
||||
child: Text(
|
||||
"• ",
|
||||
style: GoogleFonts.poppins(
|
||||
fontSize:
|
||||
Responsive.isDesktop(context)
|
||||
? 16
|
||||
: 14,
|
||||
fontWeight: FontWeight.w400,
|
||||
color: Color(0xFFE26728),
|
||||
),
|
||||
),
|
||||
),
|
||||
Expanded(
|
||||
child: Text(
|
||||
'Include all necessary medical documents, such as doctor’s prescriptions, diagnosis reports, and hospital records.',
|
||||
style: GoogleFonts.poppins(
|
||||
fontSize:
|
||||
Responsive.isDesktop(context)
|
||||
? 16
|
||||
: 14,
|
||||
fontWeight: FontWeight.w400,
|
||||
color: Color(0xFF000000),
|
||||
),
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
Padding(
|
||||
padding: EdgeInsets.only(bottom: 20, left: 15),
|
||||
child: Column(
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
children: [
|
||||
Text(
|
||||
'4. Approval from Insurer:',
|
||||
style: GoogleFonts.poppins(
|
||||
fontSize:
|
||||
Responsive.isDesktop(context) ? 18 : 16,
|
||||
fontWeight: FontWeight.w500,
|
||||
color: Color(0xFF000000),
|
||||
),
|
||||
),
|
||||
SizedBox(height: 10),
|
||||
Row(
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
children: <Widget>[
|
||||
Padding(
|
||||
padding:
|
||||
const EdgeInsets.only(left: 20.0),
|
||||
child: Text(
|
||||
"• ",
|
||||
style: GoogleFonts.poppins(
|
||||
fontSize:
|
||||
Responsive.isDesktop(context)
|
||||
? 16
|
||||
: 14,
|
||||
fontWeight: FontWeight.w400,
|
||||
color: Color(0xFFE26728),
|
||||
),
|
||||
),
|
||||
),
|
||||
Expanded(
|
||||
child: Text(
|
||||
'The insurer or TPA will review the submitted documents and decide on the approval. This can take anywhere from a few hours to a couple of days.',
|
||||
style: GoogleFonts.poppins(
|
||||
fontSize:
|
||||
Responsive.isDesktop(context)
|
||||
? 16
|
||||
: 14,
|
||||
fontWeight: FontWeight.w400,
|
||||
color: Color(0xFF000000),
|
||||
),
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
Row(
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
children: <Widget>[
|
||||
Padding(
|
||||
padding:
|
||||
const EdgeInsets.only(left: 20.0),
|
||||
child: Text(
|
||||
"• ",
|
||||
style: GoogleFonts.poppins(
|
||||
fontSize:
|
||||
Responsive.isDesktop(context)
|
||||
? 16
|
||||
: 14,
|
||||
fontWeight: FontWeight.w400,
|
||||
color: Color(0xFFE26728),
|
||||
),
|
||||
),
|
||||
),
|
||||
Expanded(
|
||||
child: Text(
|
||||
'If approved, the insurer will issue an authorization letter to the hospital, detailing the covered expenses and any limits.',
|
||||
style: GoogleFonts.poppins(
|
||||
fontSize:
|
||||
Responsive.isDesktop(context)
|
||||
? 16
|
||||
: 14,
|
||||
fontWeight: FontWeight.w400,
|
||||
color: Color(0xFF000000),
|
||||
),
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
Padding(
|
||||
padding: EdgeInsets.only(bottom: 20, left: 15),
|
||||
child: Column(
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
children: [
|
||||
Text(
|
||||
'5. Hospitalization and Treatment:',
|
||||
style: GoogleFonts.poppins(
|
||||
fontSize:
|
||||
Responsive.isDesktop(context) ? 18 : 16,
|
||||
fontWeight: FontWeight.w500,
|
||||
color: Color(0xFF000000),
|
||||
),
|
||||
),
|
||||
SizedBox(height: 10),
|
||||
Row(
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
children: <Widget>[
|
||||
Padding(
|
||||
padding:
|
||||
const EdgeInsets.only(left: 20.0),
|
||||
child: Text(
|
||||
"• ",
|
||||
style: GoogleFonts.poppins(
|
||||
fontSize:
|
||||
Responsive.isDesktop(context)
|
||||
? 16
|
||||
: 14,
|
||||
fontWeight: FontWeight.w400,
|
||||
color: Color(0xFFE26728),
|
||||
),
|
||||
),
|
||||
),
|
||||
Expanded(
|
||||
child: Text(
|
||||
'Upon receiving approval, you can undergo the required treatment. The hospital will manage the coordination with the insurance company for the expenses covered under the policy.',
|
||||
style: GoogleFonts.poppins(
|
||||
fontSize:
|
||||
Responsive.isDesktop(context)
|
||||
? 16
|
||||
: 14,
|
||||
fontWeight: FontWeight.w400,
|
||||
color: Color(0xFF000000),
|
||||
),
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
Row(
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
children: <Widget>[
|
||||
Padding(
|
||||
padding:
|
||||
const EdgeInsets.only(left: 20.0),
|
||||
child: Text(
|
||||
"• ",
|
||||
style: GoogleFonts.poppins(
|
||||
fontSize:
|
||||
Responsive.isDesktop(context)
|
||||
? 16
|
||||
: 14,
|
||||
fontWeight: FontWeight.w400,
|
||||
color: Color(0xFFE26728),
|
||||
),
|
||||
),
|
||||
),
|
||||
Expanded(
|
||||
child: Text(
|
||||
'Ensure that any non-covered expenses (like consumables, personal items, or certain specific treatments) are settled directly by you.',
|
||||
style: GoogleFonts.poppins(
|
||||
fontSize:
|
||||
Responsive.isDesktop(context)
|
||||
? 16
|
||||
: 14,
|
||||
fontWeight: FontWeight.w400,
|
||||
color: Color(0xFF000000),
|
||||
),
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
Padding(
|
||||
padding: EdgeInsets.only(bottom: 20, left: 15),
|
||||
child: Column(
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
children: [
|
||||
Text(
|
||||
'6. Discharge and Settlement:',
|
||||
style: GoogleFonts.poppins(
|
||||
fontSize:
|
||||
Responsive.isDesktop(context) ? 18 : 16,
|
||||
fontWeight: FontWeight.w500,
|
||||
color: Color(0xFF000000),
|
||||
),
|
||||
),
|
||||
SizedBox(height: 10),
|
||||
Row(
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
children: <Widget>[
|
||||
Padding(
|
||||
padding:
|
||||
const EdgeInsets.only(left: 20.0),
|
||||
child: Text(
|
||||
"• ",
|
||||
style: GoogleFonts.poppins(
|
||||
fontSize:
|
||||
Responsive.isDesktop(context)
|
||||
? 16
|
||||
: 14,
|
||||
fontWeight: FontWeight.w400,
|
||||
color: Color(0xFFE26728),
|
||||
),
|
||||
),
|
||||
),
|
||||
Expanded(
|
||||
child: Text(
|
||||
'Upon receiving approval, you can undergo the required treatment. The hospital will manage the coordination with the insurance company for the expenses covered under the policy.',
|
||||
style: GoogleFonts.poppins(
|
||||
fontSize:
|
||||
Responsive.isDesktop(context)
|
||||
? 16
|
||||
: 14,
|
||||
fontWeight: FontWeight.w400,
|
||||
color: Color(0xFF000000),
|
||||
),
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
Row(
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
children: <Widget>[
|
||||
Padding(
|
||||
padding:
|
||||
const EdgeInsets.only(left: 20.0),
|
||||
child: Text(
|
||||
"• ",
|
||||
style: GoogleFonts.poppins(
|
||||
fontSize:
|
||||
Responsive.isDesktop(context)
|
||||
? 16
|
||||
: 14,
|
||||
fontWeight: FontWeight.w400,
|
||||
color: Color(0xFFE26728),
|
||||
),
|
||||
),
|
||||
),
|
||||
Expanded(
|
||||
child: Text(
|
||||
'Review the bill for any non-covered items and pay for those out of your pocket.',
|
||||
style: GoogleFonts.poppins(
|
||||
fontSize:
|
||||
Responsive.isDesktop(context)
|
||||
? 16
|
||||
: 14,
|
||||
fontWeight: FontWeight.w400,
|
||||
color: Color(0xFF000000),
|
||||
),
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
Padding(
|
||||
padding: EdgeInsets.only(bottom: 20, left: 15),
|
||||
child: Column(
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
children: [
|
||||
Text(
|
||||
'7. Post-Discharge Procedure:',
|
||||
style: GoogleFonts.poppins(
|
||||
fontSize:
|
||||
Responsive.isDesktop(context) ? 18 : 16,
|
||||
fontWeight: FontWeight.w500,
|
||||
color: Color(0xFF000000),
|
||||
),
|
||||
),
|
||||
SizedBox(height: 10),
|
||||
Row(
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
children: <Widget>[
|
||||
Padding(
|
||||
padding:
|
||||
const EdgeInsets.only(left: 20.0),
|
||||
child: Text(
|
||||
"• ",
|
||||
style: GoogleFonts.poppins(
|
||||
fontSize:
|
||||
Responsive.isDesktop(context)
|
||||
? 16
|
||||
: 14,
|
||||
fontWeight: FontWeight.w400,
|
||||
color: Color(0xFFE26728),
|
||||
),
|
||||
),
|
||||
),
|
||||
Expanded(
|
||||
child: Text(
|
||||
'Retain copies of all bills, receipts, and discharge summaries for your records.',
|
||||
style: GoogleFonts.poppins(
|
||||
fontSize:
|
||||
Responsive.isDesktop(context)
|
||||
? 16
|
||||
: 14,
|
||||
fontWeight: FontWeight.w400,
|
||||
color: Color(0xFF000000),
|
||||
),
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
Row(
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
children: <Widget>[
|
||||
Padding(
|
||||
padding:
|
||||
const EdgeInsets.only(left: 20.0),
|
||||
child: Text(
|
||||
"• ",
|
||||
style: GoogleFonts.poppins(
|
||||
fontSize:
|
||||
Responsive.isDesktop(context)
|
||||
? 16
|
||||
: 14,
|
||||
fontWeight: FontWeight.w400,
|
||||
color: Color(0xFFE26728),
|
||||
),
|
||||
),
|
||||
),
|
||||
Expanded(
|
||||
child: Text(
|
||||
'Follow up with the insurance company if there are any discrepancies or if you receive any communication regarding the claim.',
|
||||
style: GoogleFonts.poppins(
|
||||
fontSize:
|
||||
Responsive.isDesktop(context)
|
||||
? 16
|
||||
: 14,
|
||||
fontWeight: FontWeight.w400,
|
||||
color: Color(0xFF000000),
|
||||
),
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
Padding(
|
||||
padding: EdgeInsets.only(bottom: 20),
|
||||
child: Column(
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
children: [
|
||||
Text(
|
||||
'Tips for a Smooth Cashless Claim Process',
|
||||
style: GoogleFonts.poppins(
|
||||
fontSize:
|
||||
Responsive.isDesktop(context) ? 18 : 16,
|
||||
fontWeight: FontWeight.w500,
|
||||
color: Color(0xFF000000),
|
||||
),
|
||||
),
|
||||
SizedBox(height: 10),
|
||||
Row(
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
children: <Widget>[
|
||||
Padding(
|
||||
padding:
|
||||
const EdgeInsets.only(left: 20.0),
|
||||
child: Text(
|
||||
"• ",
|
||||
style: GoogleFonts.poppins(
|
||||
fontSize:
|
||||
Responsive.isDesktop(context)
|
||||
? 16
|
||||
: 14,
|
||||
fontWeight: FontWeight.w400,
|
||||
color: Color(0xFFE26728),
|
||||
),
|
||||
),
|
||||
),
|
||||
Expanded(
|
||||
child: Text(
|
||||
'Maintain Updated Records: Always keep your insurance policy documents and health records updated and accessible.',
|
||||
style: GoogleFonts.poppins(
|
||||
fontSize:
|
||||
Responsive.isDesktop(context)
|
||||
? 16
|
||||
: 14,
|
||||
fontWeight: FontWeight.w400,
|
||||
color: Color(0xFF000000),
|
||||
),
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
Row(
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
children: <Widget>[
|
||||
Padding(
|
||||
padding:
|
||||
const EdgeInsets.only(left: 20.0),
|
||||
child: Text(
|
||||
"• ",
|
||||
style: GoogleFonts.poppins(
|
||||
fontSize:
|
||||
Responsive.isDesktop(context)
|
||||
? 16
|
||||
: 14,
|
||||
fontWeight: FontWeight.w400,
|
||||
color: Color(0xFFE26728),
|
||||
),
|
||||
),
|
||||
),
|
||||
Expanded(
|
||||
child: Text(
|
||||
'Understand Your Policy: Be aware of the inclusions, exclusions, and the claim procedure specific to your health insurance policy.',
|
||||
style: GoogleFonts.poppins(
|
||||
fontSize:
|
||||
Responsive.isDesktop(context)
|
||||
? 16
|
||||
: 14,
|
||||
fontWeight: FontWeight.w400,
|
||||
color: Color(0xFF000000),
|
||||
),
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
Row(
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
children: <Widget>[
|
||||
Padding(
|
||||
padding:
|
||||
const EdgeInsets.only(left: 20.0),
|
||||
child: Text(
|
||||
"• ",
|
||||
style: GoogleFonts.poppins(
|
||||
fontSize:
|
||||
Responsive.isDesktop(context)
|
||||
? 16
|
||||
: 14,
|
||||
fontWeight: FontWeight.w400,
|
||||
color: Color(0xFFE26728),
|
||||
),
|
||||
),
|
||||
),
|
||||
Expanded(
|
||||
child: Text(
|
||||
'Communicate Clearly: Ensure clear and prompt communication with the hospitals insurance desk and your insurance provider.',
|
||||
style: GoogleFonts.poppins(
|
||||
fontSize:
|
||||
Responsive.isDesktop(context)
|
||||
? 16
|
||||
: 14,
|
||||
fontWeight: FontWeight.w400,
|
||||
color: Color(0xFF000000),
|
||||
),
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
Row(
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
children: <Widget>[
|
||||
Padding(
|
||||
padding:
|
||||
const EdgeInsets.only(left: 20.0),
|
||||
child: Text(
|
||||
"• ",
|
||||
style: GoogleFonts.poppins(
|
||||
fontSize:
|
||||
Responsive.isDesktop(context)
|
||||
? 16
|
||||
: 14,
|
||||
fontWeight: FontWeight.w400,
|
||||
color: Color(0xFFE26728),
|
||||
),
|
||||
),
|
||||
),
|
||||
Expanded(
|
||||
child: Text(
|
||||
'Check for Network Hospitals: Regularly update yourself with the list of network hospitals to avoid any last-minute surprises.',
|
||||
style: GoogleFonts.poppins(
|
||||
fontSize:
|
||||
Responsive.isDesktop(context)
|
||||
? 16
|
||||
: 14,
|
||||
fontWeight: FontWeight.w400,
|
||||
color: Color(0xFF000000),
|
||||
),
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
Row(
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
children: <Widget>[
|
||||
Padding(
|
||||
padding:
|
||||
const EdgeInsets.only(left: 20.0),
|
||||
child: Text(
|
||||
"• ",
|
||||
style: GoogleFonts.poppins(
|
||||
fontSize:
|
||||
Responsive.isDesktop(context)
|
||||
? 16
|
||||
: 14,
|
||||
fontWeight: FontWeight.w400,
|
||||
color: Color(0xFFE26728),
|
||||
),
|
||||
),
|
||||
),
|
||||
Expanded(
|
||||
child: Text(
|
||||
'Emergency Preparedness: Keep a list of nearby network hospitals for emergencies.',
|
||||
style: GoogleFonts.poppins(
|
||||
fontSize:
|
||||
Responsive.isDesktop(context)
|
||||
? 16
|
||||
: 14,
|
||||
fontWeight: FontWeight.w400,
|
||||
color: Color(0xFF000000),
|
||||
),
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
Padding(
|
||||
padding: EdgeInsets.only(bottom: 20),
|
||||
child: Column(
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
children: [
|
||||
Text(
|
||||
'Conclusion',
|
||||
style: GoogleFonts.poppins(
|
||||
fontSize:
|
||||
Responsive.isDesktop(context) ? 18 : 16,
|
||||
fontWeight: FontWeight.w500,
|
||||
color: Color(0xFF000000),
|
||||
),
|
||||
),
|
||||
SizedBox(height: 15),
|
||||
Text(
|
||||
'The cashless claim process is designed to provide financial relief and convenience during medical emergencies and planned treatments. By following the outlined steps and maintaining clear communication with your insurer, you can navigate the process smoothly and focus on recovery without financial stress.',
|
||||
style: GoogleFonts.poppins(
|
||||
fontSize:
|
||||
Responsive.isDesktop(context) ? 16 : 14,
|
||||
fontWeight: FontWeight.w400,
|
||||
color: Color(0xFF000000),
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
]),
|
||||
),
|
||||
SizedBox(height: Responsive.isDesktop(context) ? 40 : 10),
|
||||
],
|
||||
),
|
||||
),
|
||||
),
|
||||
if (Responsive.isDesktop(context))
|
||||
Align(
|
||||
alignment: Alignment.bottomCenter,
|
||||
child: Container(
|
||||
width: double.infinity,
|
||||
child: CustomFooter(),
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
||||
151
lib/service/api_service.dart
Normal file
@ -0,0 +1,151 @@
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:http/http.dart' as http;
|
||||
import 'package:nhance_app_pwa/customAppBar/toastHelper.dart';
|
||||
import 'package:nhance_app_pwa/models/environment.dart';
|
||||
import 'package:shared_preferences/shared_preferences.dart';
|
||||
import 'dart:convert';
|
||||
|
||||
class ApiService {
|
||||
final BuildContext context;
|
||||
String? _token;
|
||||
|
||||
ApiService(this.context) {
|
||||
_initializeToken();
|
||||
}
|
||||
|
||||
Future<void> _initializeToken() async {
|
||||
final prefs = await SharedPreferences.getInstance();
|
||||
_token = prefs.getString('token') ?? '';
|
||||
}
|
||||
|
||||
Future<Map<String, dynamic>> getActiveAndInactivePolicyDetails(
|
||||
String clientId, String empCode, String status, String branchID) async {
|
||||
print(_token);
|
||||
if (_token == null) {
|
||||
await _initializeToken();
|
||||
}
|
||||
final url = Uri.parse(
|
||||
'${Environment.apiUrl}getEmployeeActiveOrInactivePolicy?client_id=$clientId&emp_code=$empCode&type=$status&client_branch_id=$branchID');
|
||||
final headers = {
|
||||
'Authorization': _token ?? '',
|
||||
};
|
||||
final response = await _makeGetRequest(url, headers);
|
||||
return response;
|
||||
}
|
||||
|
||||
Future<Map<String, dynamic>> getAdvertisementImageToApi() async {
|
||||
print(_token);
|
||||
if (_token == null) {
|
||||
await _initializeToken();
|
||||
}
|
||||
final url = Uri.parse('${Environment.apiUrl}getAdvertisementImage');
|
||||
final headers = {
|
||||
'Authorization': _token ?? '',
|
||||
};
|
||||
final response = await _makeGetRequest(url, headers);
|
||||
return response;
|
||||
}
|
||||
|
||||
Future<Map<String, dynamic>> getCashlessAndReimbursementToApi() async {
|
||||
print(_token);
|
||||
if (_token == null) {
|
||||
await _initializeToken();
|
||||
}
|
||||
final url = Uri.parse('${Environment.apiUrl}getFEContent');
|
||||
final headers = {
|
||||
'Authorization': _token ?? '',
|
||||
};
|
||||
final response = await _makeGetRequest(url, headers);
|
||||
return response;
|
||||
}
|
||||
|
||||
Future<Map<String, dynamic>> getSelfEmployeeProfileDetails(
|
||||
String clientId, String empCode) async {
|
||||
print(_token);
|
||||
if (_token == null) {
|
||||
await _initializeToken();
|
||||
}
|
||||
final url = Uri.parse(
|
||||
'${Environment.apiUrl}getEmployeeProfile?emp_code=$empCode&client_id=$clientId');
|
||||
final headers = {
|
||||
'Authorization': Environment.ticketToken ?? '',
|
||||
};
|
||||
final response = await _makeGetRequest(url, headers);
|
||||
return response;
|
||||
}
|
||||
|
||||
Future<Map<String, dynamic>> getTrackClaimsList(
|
||||
String empMobileNo, String empCode) async {
|
||||
final url = Uri.parse(
|
||||
'${Environment.apiUrlTicket}/ticket/get_ticket_data?emp_code=$empCode&mobile_number=$empMobileNo');
|
||||
final response = await _makeGetRequest(url, {
|
||||
'Token': Environment.ticketToken,
|
||||
});
|
||||
return response;
|
||||
}
|
||||
|
||||
Future<Map<String, dynamic>> fetchDepartmentList() async {
|
||||
final url = Uri.parse('${Environment.apiUrlTicket}/departments');
|
||||
final response = await _makeGetRequest(url, {
|
||||
'Token': Environment.ticketToken,
|
||||
});
|
||||
return response;
|
||||
}
|
||||
|
||||
Future<Map<String, dynamic>> sendFormDataToApi(
|
||||
Map<String, dynamic> formData) async {
|
||||
final url = Uri.parse('${Environment.apiUrlTicket}/tickets/create');
|
||||
// Convert formData to Map<String, String>
|
||||
Map<String, String> stringFormData =
|
||||
formData.map((key, value) => MapEntry(key, value.toString()));
|
||||
final response = await _makePostRequest(url, stringFormData, {
|
||||
'Content-Type': 'application/x-www-form-urlencoded',
|
||||
'Token': Environment.ticketToken,
|
||||
});
|
||||
return response;
|
||||
}
|
||||
|
||||
Future<Map<String, dynamic>> sendClaimsMessageToApi(
|
||||
Map<String, dynamic> formData) async {
|
||||
final url = Uri.parse('${Environment.apiUrlTicket}/messages/create');
|
||||
// Convert formData to Map<String, String>
|
||||
Map<String, String> stringFormData =
|
||||
formData.map((key, value) => MapEntry(key, value.toString()));
|
||||
final response = await _makePostRequest(url, stringFormData, {
|
||||
'Content-Type': 'application/x-www-form-urlencoded',
|
||||
'Token': Environment.ticketToken,
|
||||
});
|
||||
return response;
|
||||
}
|
||||
|
||||
Future<Map<String, dynamic>> _makeGetRequest(
|
||||
Uri url, Map<String, String> headers) async {
|
||||
final response = await http.get(url, headers: headers);
|
||||
return _handleResponse(response);
|
||||
}
|
||||
|
||||
Future<Map<String, dynamic>> _makePostRequest(
|
||||
Uri url, Map<String, String> body, Map<String, String> headers) async {
|
||||
final response = await http.post(url, headers: headers, body: body);
|
||||
return _handleResponse(response);
|
||||
}
|
||||
|
||||
Future<Map<String, dynamic>> _handleResponse(http.Response response) async {
|
||||
if (response.statusCode == 200) {
|
||||
return jsonDecode(response.body);
|
||||
} else if (response.statusCode == 401) {
|
||||
await _clearLocalStorageAndRedirect();
|
||||
return {};
|
||||
} else {
|
||||
throw Exception('Failed to load data');
|
||||
}
|
||||
}
|
||||
|
||||
Future<void> _clearLocalStorageAndRedirect() async {
|
||||
final prefs = await SharedPreferences.getInstance();
|
||||
await prefs.clear();
|
||||
// Assuming you have access to the context
|
||||
ToastHelper.showErrorToast(context, 'Session Out');
|
||||
Navigator.pushNamed(context, 'login');
|
||||
}
|
||||
}
|
||||
@ -51,6 +51,7 @@ dependencies:
|
||||
intl: ^0.19.0
|
||||
accordion: ^2.6.0
|
||||
url_launcher: ^6.2.6
|
||||
flutter_svg: ^2.0.10+1
|
||||
|
||||
dev_dependencies:
|
||||
flutter_test:
|
||||
|
||||
@ -32,6 +32,35 @@
|
||||
<title>nhance_app_pwa</title>
|
||||
<link rel="manifest" href="manifest.json">
|
||||
|
||||
<style>
|
||||
.content {
|
||||
width: 10%;
|
||||
height: 10vh;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.overlay {
|
||||
position: fixed;
|
||||
top: 0;
|
||||
left: 0;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
background-color: #FFFCE5; /* Overlay background color with opacity */
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
/* Styles for the loading indicator */
|
||||
.indicator {
|
||||
width: 5vw;
|
||||
}
|
||||
|
||||
</style>
|
||||
|
||||
<script>
|
||||
// The value below is injected by flutter build, do not touch.
|
||||
const serviceWorkerVersion = null;
|
||||
@ -39,7 +68,10 @@
|
||||
<!-- This script adds the flutter initialization JS code -->
|
||||
<script src="flutter.js" defer></script>
|
||||
</head>
|
||||
<body>
|
||||
<body style="overflow:hidden">
|
||||
<div id="loading_indicator" class="container overlay">
|
||||
<img class="indicator" src="assets/nhance-loader.gif">
|
||||
</div>
|
||||
<script>
|
||||
window.addEventListener('load', function(ev) {
|
||||
// Download main.dart.js
|
||||
@ -55,5 +87,14 @@
|
||||
});
|
||||
});
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
<script>
|
||||
window.onLoad = function(){
|
||||
setTimeout(function () {
|
||||
var loadingIndicator = document.getElementById("loading_indicator");
|
||||
if(loadingIndicator){
|
||||
loadingIndicator.remove();
|
||||
}
|
||||
},5000);
|
||||
};
|
||||
</body>
|
||||
</html>
|
||||
|
||||