Ancillary order fixes, QLine API integrated & other enhancements

pull/116/head
haroon amjad 1 month ago
parent c97a492244
commit 796aeb03d3

@ -0,0 +1,5 @@
<svg width="40" height="40" viewBox="0 0 40 40" fill="none" xmlns="http://www.w3.org/2000/svg">
<rect width="40" height="40" rx="10" fill="#EFEFF0"/>
<path d="M14.0753 9.25021C13.2113 9.25016 12.4632 9.25011 11.8634 9.33132C11.2162 9.41894 10.5997 9.61694 10.1035 10.1166C9.61238 10.6111 9.42254 11.2171 9.33787 11.8513C9.2582 12.448 9.25824 13.1949 9.25828 14.0698L9.25828 14.1308C9.25828 14.3712 9.2561 14.6022 9.25402 14.8221C9.24862 15.3915 9.24394 15.8867 9.27973 16.2795C9.33543 16.8907 9.49919 17.4598 9.99582 17.9599C10.3701 18.3368 10.9888 18.3482 11.3777 17.9854C11.7665 17.6225 11.7783 17.0228 11.4039 16.6458C11.3286 16.5699 11.2602 16.48 11.2267 16.1128C11.1997 15.8167 11.2031 15.4635 11.208 14.9542C11.2103 14.717 11.2128 14.4458 11.2128 14.1308C11.2128 13.1779 11.2148 12.5551 11.2763 12.0945C11.3346 11.6576 11.4308 11.5121 11.5116 11.4306C11.5875 11.3542 11.7172 11.2642 12.1337 11.2078C12.5823 11.1471 13.1922 11.145 14.1415 11.145L25.8593 11.145C26.8086 11.145 27.4185 11.1471 27.867 11.2078C28.2835 11.2642 28.4133 11.3542 28.4891 11.4306C28.57 11.5121 28.6662 11.6576 28.7245 12.0945C28.786 12.5551 28.7879 13.1779 28.7879 14.1308C28.7879 14.444 28.7905 14.7139 28.7927 14.9501C28.7975 15.4613 28.8009 15.8159 28.7737 16.1125C28.7402 16.4796 28.6717 16.5697 28.5961 16.6458C28.2218 17.0228 28.2336 17.6225 28.6224 17.9854C29.0113 18.3482 29.6299 18.3368 30.0043 17.9599C30.5007 17.4599 30.6647 16.8911 30.7207 16.2798C30.7567 15.8861 30.752 15.3898 30.7467 14.8191C30.7446 14.6001 30.7425 14.3702 30.7425 14.1308L30.7425 14.0698C30.7425 13.1949 30.7425 12.448 30.6629 11.8513C30.5782 11.2171 30.3884 10.6111 29.8972 10.1166C29.4011 9.61695 28.7845 9.41894 28.1374 9.33132C27.5376 9.25012 26.7894 9.25016 25.9255 9.25021L14.0753 9.25021Z" fill="#8F9AA3"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M14.9847 29.8165C15.9786 31.0614 17.9981 31.0614 18.9921 29.8165C19.2106 29.5428 19.6488 29.2974 20.0003 29.2974C20.3518 29.2974 20.79 29.5428 21.0086 29.8165C22.0025 31.0614 24.022 31.0614 25.016 29.8165L25.5671 29.1263C25.6367 29.0391 25.7683 28.9739 25.9361 28.9818C26.1042 28.9898 26.2188 29.0662 26.2713 29.1496C26.6934 29.8193 27.4142 30.0602 28.0409 30.0126C28.65 29.9663 29.3162 29.6346 29.6255 28.9757C29.8189 28.6746 29.7452 27.999 29.6842 27.6989L27.7532 18.5617C27.5206 17.4608 27.3318 16.5674 27.0926 15.8695C26.8432 15.1417 26.5131 14.5436 25.9479 14.0868C25.3832 13.6304 24.7289 13.4325 23.9643 13.3395C23.2301 13.2502 22.3142 13.2502 21.1841 13.2502L18.8166 13.2502C17.6864 13.2502 16.7705 13.2502 16.0363 13.3395C15.2717 13.4325 14.6175 13.6304 14.0527 14.0868C13.4875 14.5436 13.1575 15.1417 12.908 15.8695C12.6688 16.5674 12.4801 17.4608 12.2474 18.5617L10.3164 27.6989C10.2554 27.999 10.1818 28.6746 10.3751 28.9757C10.6844 29.6346 11.3506 29.9663 11.9597 30.0126C12.5865 30.0602 13.3072 29.8193 13.7293 29.1496C13.7819 29.0662 13.8965 28.9898 14.0645 28.9818C14.2323 28.9739 14.3639 29.0391 14.4336 29.1263L14.9847 29.8165ZM20.0003 17.2502C20.4145 17.2502 20.7503 17.586 20.7503 18.0002C20.7503 18.4144 20.4145 18.7502 20.0003 18.7502L17.0003 18.7502C16.5861 18.7502 16.2503 18.4144 16.2503 18.0002C16.2503 17.586 16.5861 17.2502 17.0003 17.2502L20.0003 17.2502ZM22.7503 22.0002C22.7503 21.586 22.4145 21.2502 22.0003 21.2502L16.0003 21.2502C15.5861 21.2502 15.2503 21.586 15.2503 22.0002C15.2503 22.4144 15.5861 22.7502 16.0003 22.7502L22.0003 22.7502C22.4145 22.7502 22.7503 22.4144 22.7503 22.0002Z" fill="#8F9AA3"/>
</svg>

After

Width:  |  Height:  |  Size: 3.4 KiB

@ -0,0 +1,4 @@
<svg width="40" height="40" viewBox="0 0 40 40" fill="none" xmlns="http://www.w3.org/2000/svg">
<rect width="40" height="40" rx="10" fill="#EFEFF0"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M19.999 9.25C18.3178 9.25 16.9509 9.81794 15.7588 10.4355C15.3986 10.6222 15.0639 10.8068 14.7441 10.9832C13.9617 11.4148 13.2681 11.7974 12.5066 12.0404C12.0593 12.1831 11.6631 12.3095 11.3821 12.4196C11.1177 12.5232 10.8035 12.6652 10.5805 12.913C10.3802 13.1356 10.2773 13.3855 10.2091 13.6245C10.1472 13.8415 10.0943 14.1352 10.0435 14.417C8.80553 21.2827 11.5125 27.787 18.123 30.3179C18.7727 30.5667 19.2513 30.75 20.0023 30.75C20.7534 30.75 21.2319 30.5667 21.8816 30.3179C28.4919 27.7869 31.1962 21.2824 29.9579 14.417C29.9071 14.1352 29.8541 13.8413 29.7922 13.6243C29.7239 13.3853 29.621 13.1354 29.4207 12.9128C29.1977 12.665 28.8835 12.523 28.619 12.4195C28.3381 12.3094 27.9419 12.1831 27.4946 12.0404C26.7327 11.7974 26.0386 11.4148 25.2555 10.9831C24.9356 10.8067 24.6007 10.6221 24.2405 10.4355C23.0477 9.81795 21.6803 9.25 19.999 9.25ZM25.3338 17.9429C25.8544 17.7585 26.127 17.187 25.9426 16.6664C25.7582 16.1458 25.1868 15.8733 24.6662 16.0576C23.788 16.3686 22.9486 16.9618 22.212 17.6078C21.465 18.2629 20.7666 19.0235 20.1733 19.7347C19.734 20.2613 19.3456 20.7689 19.0304 21.1997C18.7416 20.8538 18.454 20.6011 18.1797 20.4182C17.9053 20.2353 17.5523 20.0003 17 20.0003C16.4477 20.0003 16 20.448 16 21.0003C16 21.521 16.398 21.9487 16.9064 21.9959C17.1104 22.0149 17.6649 22.5661 18.1056 23.4475C18.2668 23.7698 18.5889 23.9805 18.9489 23.999C19.3087 24.0174 19.6508 23.8406 19.8441 23.5365C19.8441 23.5365 20.1922 23.0141 20.3574 22.7801C20.6885 22.3111 21.1572 21.6774 21.7091 21.0159C22.2628 20.3521 22.888 19.6751 23.5307 19.1115C24.1837 18.5388 24.8002 18.1319 25.3338 17.9429Z" fill="#8F9AA3"/>
</svg>

After

Width:  |  Height:  |  Size: 1.8 KiB

@ -0,0 +1,4 @@
<svg width="40" height="40" viewBox="0 0 40 40" fill="none" xmlns="http://www.w3.org/2000/svg">
<rect width="40" height="40" rx="10" fill="#EFEFF0"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M18 30.75C17.7007 30.75 17.4476 30.6611 17.2239 30.5507C17.0235 30.4518 16.8014 30.3117 16.5667 30.1637L14.6291 28.9417C14.3742 28.7809 14.2283 28.6899 14.114 28.6327C14.0083 28.5747 13.9326 28.6033 13.9079 28.6249C13.7948 28.678 13.6438 28.7696 13.371 28.9417L12.8622 29.2911C12.6515 29.4359 12.3974 29.6033 12.1271 29.7447C11.655 29.9917 10.8144 30.3299 10.0558 29.8414C9.54247 29.5107 9.38152 28.9658 9.3149 28.487C9.24992 28.0198 9.24996 27.4095 9.25 26.7008L9.25 15.9998C9.24998 14.6191 9.24997 13.5075 9.36641 12.6336C9.48716 11.7274 9.74526 10.9648 10.346 10.3587C10.9476 9.75161 11.706 9.48992 12.6074 9.36764C13.4748 9.24997 14.5775 9.24998 15.9446 9.25L28.016 9.25C28.4911 9.25 28.8802 9.4793 29.1687 9.7609C29.4541 10.0395 29.6847 10.4083 29.8722 10.8101C30.2537 11.6272 30.5229 12.7386 30.6684 13.9644C30.7158 14.3637 30.7614 14.7478 30.7473 15.0722C30.7309 15.4502 30.6325 15.8306 30.3326 16.1652C30.0239 16.5095 29.6366 16.6432 29.2576 16.6998C28.921 16.7501 28.5084 16.7501 28.0646 16.75L26.75 16.75L26.75 26.7008C26.75 27.4095 26.7501 28.0198 26.6851 28.487C26.6185 28.9658 26.4575 29.5107 25.9441 29.8414C25.1856 30.3299 24.345 29.9917 23.8729 29.7447C23.6025 29.6033 23.3485 29.4359 23.1377 29.2911L22.629 28.9417C22.3562 28.7696 22.2052 28.678 22.0921 28.6249C22.0674 28.6033 21.9917 28.5747 21.8859 28.6327C21.7717 28.6899 21.6258 28.7809 21.3709 28.9417L19.4333 30.1636C19.1987 30.3116 18.9765 30.4518 18.7761 30.5507C18.5524 30.6611 18.2993 30.75 18 30.75ZM28.121 10.8343C28.0611 10.7759 27.9721 10.7748 27.9121 10.8329C27.8853 10.8591 27.854 10.8934 27.8186 10.938C27.652 11.1477 27.469 11.4974 27.3014 11.9962C27.0311 12.8006 26.836 13.8859 26.7724 15.1219C26.7702 15.1644 26.7682 15.2071 26.7663 15.25H28.016C28.5254 15.25 28.8236 15.248 29.0358 15.2163C29.2003 15.1917 29.2417 15.1699 29.2487 15.0072C29.2569 14.8192 29.2283 14.5588 29.173 14.0921C29.0404 12.9728 28.7989 12.0569 28.513 11.4445C28.3694 11.1368 28.2313 10.942 28.121 10.8343ZM18.75 15C18.75 14.5858 18.4142 14.25 18 14.25C17.5858 14.25 17.25 14.5858 17.25 15V15.3336C16.8358 15.4281 16.4543 15.6005 16.1358 15.8393C15.6318 16.2173 15.25 16.7968 15.25 17.5C15.25 18.2032 15.6318 18.7827 16.1358 19.1607C16.6396 19.5385 17.3011 19.75 18 19.75C18.4057 19.75 18.7441 19.8743 18.9642 20.0393C19.1841 20.2042 19.25 20.3748 19.25 20.5C19.25 20.6252 19.1841 20.7958 18.9642 20.9607C18.7441 21.1257 18.4057 21.25 18 21.25C17.3316 21.25 16.9095 20.929 16.7922 20.6803C16.6157 20.3056 16.1688 20.145 15.7941 20.3216C15.4194 20.4981 15.2588 20.945 15.4354 21.3197C15.7653 22.0197 16.4613 22.4848 17.25 22.6655V23C17.25 23.4142 17.5858 23.75 18 23.75C18.4142 23.75 18.75 23.4142 18.75 23V22.6664C19.1642 22.5719 19.5457 22.3995 19.8642 22.1607C20.3682 21.7827 20.75 21.2032 20.75 20.5C20.75 19.7968 20.3682 19.2173 19.8642 18.8393C19.3604 18.4615 18.6989 18.25 18 18.25C17.5943 18.25 17.2559 18.1257 17.0358 17.9607C16.8159 17.7958 16.75 17.6252 16.75 17.5C16.75 17.3748 16.8159 17.2042 17.0358 17.0393C17.2559 16.8743 17.5943 16.75 18 16.75C18.6684 16.75 19.0905 17.071 19.2078 17.3197C19.3843 17.6944 19.8312 17.855 20.2059 17.6784C20.5806 17.5019 20.7412 17.055 20.5646 16.6803C20.2347 15.9803 19.5387 15.5152 18.75 15.3345V15Z" fill="#8F9AA3"/>
</svg>

After

Width:  |  Height:  |  Size: 3.4 KiB

@ -0,0 +1,5 @@
<svg width="40" height="40" viewBox="0 0 40 40" fill="none" xmlns="http://www.w3.org/2000/svg">
<rect width="40" height="40" rx="10" fill="#EFEFF0"/>
<path d="M19.3977 30.75C17.8566 30.7501 15.2938 30.75 14.3115 30.6472C13.3021 30.5416 12.4409 30.3186 11.6961 29.7919C11.3058 29.5159 10.9572 29.1871 10.662 28.8146C10.0922 28.0955 9.84896 27.2576 9.73485 26.2842C9.62496 25.3469 9.62498 24.1743 9.625 22.7262V20.1427C9.625 18.7244 9.625 17.6117 9.68419 16.711C9.74444 15.7942 9.86898 15.0295 10.1501 14.3175C10.9935 12.1815 12.7672 10.5187 14.9872 9.73655C16.3696 9.24947 18.0563 9.24968 20.8959 9.25005C22.4509 9.2495 23.923 9.24911 24.7818 9.5517C26.1584 10.0367 27.2668 11.071 27.7956 12.4103C27.9789 12.8744 28.0545 13.3601 28.0903 13.9047C28.125 14.4333 28.125 15.0809 28.125 15.88V17.0263C28.125 17.5641 27.6891 18 27.1513 18C26.6136 18 26.1776 17.5641 26.1776 17.0263V15.9132C26.1776 15.073 26.1771 14.49 26.1471 14.0333C26.1177 13.5854 26.0628 13.327 25.9852 13.1303C25.6751 12.345 25.0094 11.7033 24.1368 11.3959C23.6334 11.2185 22.9663 11.2046 21.1322 11.2046C20.8341 11.2046 20.4773 11.2057 20.1392 11.2073C19.801 11.2088 19.2476 11.2113 18.7855 11.4802C18.4807 11.6575 18.26 11.8594 18.1333 12.08C17.9159 12.4584 17.7915 12.8655 17.7915 13.3332L17.828 14.3736C17.8359 14.7537 17.8239 15.1972 17.7092 15.6254C17.4857 16.4593 16.8343 17.1107 16.0004 17.3342C15.5722 17.4489 15.1287 17.4609 14.7486 17.453L13.7082 17.4165C13.2615 17.4165 12.8414 17.5299 12.4748 17.7294C12.2474 17.8532 12.026 18.0963 11.853 18.3873C11.5724 18.8595 11.5723 19.4981 11.5723 19.7651L11.5724 22.6653C11.5724 24.1887 11.5739 25.246 11.6689 26.0558C11.7611 26.8426 11.9305 27.2754 12.1861 27.5979C12.3639 27.8222 12.5763 28.0233 12.8177 28.1941C13.1756 28.4471 13.6595 28.6139 14.5134 28.7032C15.3828 28.7942 17.7891 28.7954 19.3977 28.7954C19.9375 28.7954 20.375 29.233 20.375 29.7727C20.375 30.3125 19.9375 30.75 19.3977 30.75Z" fill="#8F9AA3"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M25.8795 19.5736C25.7039 19.2011 25.3179 18.9743 24.907 19.0023C24.4962 19.0303 24.1445 19.3073 24.021 19.7002L22.5883 24.2588L22.071 23.1615C21.9375 22.8782 21.8079 22.6032 21.6745 22.3809C21.5251 22.1319 21.3276 21.8718 21.0217 21.6712C20.712 21.4682 20.3934 21.393 20.1018 21.3611C19.8477 21.3332 19.5513 21.3333 19.2556 21.3333L18.375 21.3333C17.8227 21.3333 17.375 21.781 17.375 22.3333C17.375 22.8856 17.8227 23.3333 18.375 23.3333H19.2153C19.5679 23.3333 19.7521 23.3347 19.8838 23.3491C19.9001 23.3509 19.9134 23.3527 19.9241 23.3544C19.9331 23.3674 19.9449 23.3855 19.9595 23.4098C20.035 23.5356 20.1221 23.7177 20.2785 24.0496L21.8705 27.4264C22.0461 27.7989 22.4321 28.0257 22.843 27.9977C23.2538 27.9697 23.6055 27.6927 23.729 27.2998L25.1617 22.7412L25.679 23.8385C25.8125 24.1218 25.9421 24.3968 26.0755 24.6191C26.2249 24.8681 26.4224 25.1282 26.7283 25.3288C27.038 25.5318 27.3566 25.6069 27.6482 25.6389C27.9023 25.6668 28.1987 25.6667 28.4944 25.6667L29.375 25.6667C29.9273 25.6667 30.375 25.2189 30.375 24.6667C30.375 24.1144 29.9273 23.6667 29.375 23.6667H28.5347C28.1822 23.6667 27.9979 23.6653 27.8662 23.6508C27.8499 23.6491 27.8366 23.6473 27.8259 23.6456C27.8169 23.6325 27.8051 23.6145 27.7905 23.5902C27.715 23.4643 27.6279 23.2823 27.4715 22.9504L25.8795 19.5736ZM19.9028 23.3262L19.9013 23.3246C19.9012 23.3245 19.9018 23.325 19.9028 23.3262ZM27.8472 23.6738L27.8487 23.6754C27.8488 23.6755 27.8483 23.675 27.8472 23.6738Z" fill="#8F9AA3"/>
</svg>

After

Width:  |  Height:  |  Size: 3.4 KiB

@ -0,0 +1,4 @@
<svg width="40" height="40" viewBox="0 0 40 40" fill="none" xmlns="http://www.w3.org/2000/svg">
<rect width="40" height="40" rx="10" fill="#EFEFF0"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M25.312 9.93059C23.9686 9.74998 22.2479 9.74999 20.0572 9.75H19.9428C17.7521 9.74999 16.0314 9.74998 14.688 9.93059C13.3114 10.1157 12.2191 10.5027 11.3609 11.3609C10.5027 12.2191 10.1157 13.3114 9.93059 14.688C9.74998 16.0314 9.74999 17.7521 9.75 19.9428V20.0572C9.74999 22.2479 9.74998 23.9686 9.93059 25.312C10.1157 26.6886 10.5027 27.7809 11.3609 28.6391C12.2191 29.4973 13.3114 29.8843 14.688 30.0694C16.0314 30.25 17.7521 30.25 19.9428 30.25H20.0572C22.2479 30.25 23.9686 30.25 25.312 30.0694C26.6886 29.8843 27.7809 29.4973 28.6391 28.6391C29.4973 27.7809 29.8843 26.6886 30.0694 25.312C30.25 23.9686 30.25 22.2479 30.25 20.0572V19.9428C30.25 17.7521 30.25 16.0314 30.0694 14.688C29.8843 13.3114 29.4973 12.2191 28.6391 11.3609C27.7809 10.5027 26.6886 10.1157 25.312 9.93059ZM15.75 21C15.75 20.5858 15.4142 20.25 15 20.25C14.5858 20.25 14.25 20.5858 14.25 21V25C14.25 25.4142 14.5858 25.75 15 25.75C15.4142 25.75 15.75 25.4142 15.75 25V21ZM20 14.25C20.4142 14.25 20.75 14.5858 20.75 15L20.75 25C20.75 25.4142 20.4142 25.75 20 25.75C19.5858 25.75 19.25 25.4142 19.25 25L19.25 15C19.25 14.5858 19.5858 14.25 20 14.25ZM25.75 19C25.75 18.5858 25.4142 18.25 25 18.25C24.5858 18.25 24.25 18.5858 24.25 19L24.25 25C24.25 25.4142 24.5858 25.75 25 25.75C25.4142 25.75 25.75 25.4142 25.75 25V19Z" fill="#8F9AA3"/>
</svg>

After

Width:  |  Height:  |  Size: 1.5 KiB

@ -0,0 +1,4 @@
<svg width="32" height="32" viewBox="0 0 32 32" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M14.0404 16.6255C13.8528 16.438 13.5985 16.3326 13.3333 16.3326C12.9899 16.3326 12.656 16.3326 12.3333 16.3337V21.804C13.8723 22.2393 14.9999 23.6543 14.9999 25.3326V26.666C14.9999 27.2183 14.5522 27.666 13.9999 27.666C13.4476 27.666 12.9999 27.2183 12.9999 26.666V25.3326C12.9999 24.4122 12.2537 23.666 11.3333 23.666C10.4128 23.666 9.66659 24.4122 9.66659 25.3326V26.666C9.66659 27.2183 9.21887 27.666 8.66659 27.666C8.1143 27.666 7.66659 27.2183 7.66659 26.666V25.3326C7.66659 23.6543 8.79425 22.2393 10.3333 21.804V16.3679C9.77118 16.3904 9.26164 16.4274 8.81092 16.488C7.61078 16.6494 6.60028 16.9946 5.79772 17.7971C4.99517 18.5997 4.64997 19.6102 4.48862 20.8103C4.33321 21.9663 4.33323 23.436 4.33325 25.2594V29.3326C4.33325 29.8849 4.78097 30.3326 5.33325 30.3326H26.6666C27.2189 30.3326 27.6666 29.8849 27.6666 29.3326V25.2595C27.6666 23.436 27.6666 21.9663 27.5112 20.8103C27.3499 19.6102 27.0047 18.5997 26.2021 17.7971C25.3996 16.9946 24.3891 16.6494 23.1889 16.488C22.9237 16.4523 22.638 16.4249 22.3333 16.4037V23.9335C22.9311 24.2793 23.3333 24.9257 23.3333 25.666C23.3333 26.7705 22.4378 27.666 21.3333 27.666C20.2287 27.666 19.3333 26.7705 19.3333 25.666C19.3333 24.9257 19.7355 24.2793 20.3333 23.9335V16.3378C19.8092 16.3326 19.2527 16.3326 18.6672 16.3326C18.402 16.3326 18.147 16.438 17.9595 16.6255L15.9999 18.5851L14.0404 16.6255Z" fill="#2E3039"/>
<path d="M15.9999 1.66602C12.8703 1.66602 10.3333 4.20307 10.3333 7.33268V8.66602C10.3333 11.7956 12.8703 14.3327 15.9999 14.3327C19.1295 14.3327 21.6666 11.7956 21.6666 8.66602V7.33268C21.6666 4.20307 19.1295 1.66602 15.9999 1.66602Z" fill="#2E3039"/>
</svg>

After

Width:  |  Height:  |  Size: 1.7 KiB

@ -0,0 +1,3 @@
<svg width="32" height="32" viewBox="0 0 32 32" fill="none" xmlns="http://www.w3.org/2000/svg">
<path fill-rule="evenodd" clip-rule="evenodd" d="M28.835 8.71465C29 10.2375 29 12.157 29 14.6057L29 17.393V17.3931C29 19.8418 29 21.7612 28.835 23.284C28.6667 24.8381 28.3169 26.0973 27.5358 27.1724C27.0629 27.8232 26.4905 28.3956 25.8397 28.8685C24.7646 29.6496 23.5054 29.9993 21.9514 30.1677C20.4285 30.3327 18.5091 30.3327 16.0604 30.3327H16.0603H15.9397C13.491 30.3327 11.5715 30.3327 10.0486 30.1677C8.49458 29.9993 7.23541 29.6496 6.16031 28.8685C5.50945 28.3956 4.93708 27.8232 4.4642 27.1724C3.6831 26.0973 3.33334 24.8381 3.16497 23.284C2.99998 21.7612 2.99999 19.8418 3 17.3931V17.393L3 14.6056V14.6056C2.99999 12.1569 2.99998 10.2375 3.16497 8.71465C3.33334 7.1606 3.6831 5.90143 4.4642 4.82633C4.93708 4.17547 5.50945 3.6031 6.16032 3.13022C7.23541 2.34911 8.49459 1.99936 10.0486 1.83099C11.5715 1.666 13.4909 1.666 15.9395 1.66602H15.9396H16.0604H16.0605C18.5091 1.66601 20.4285 1.666 21.9514 1.83099C23.5054 1.99936 24.7646 2.34911 25.8397 3.13022C26.4905 3.6031 27.0629 4.17547 27.5358 4.82633C28.3169 5.90143 28.6667 7.1606 28.835 8.71465ZM16 5.66602C16.7364 5.66602 17.3333 6.26297 17.3333 6.99935V9.24299C17.6276 9.59842 17.8786 9.66602 18 9.66602C18.1485 9.66602 18.4909 9.56487 18.8693 8.95942C19.2595 8.33494 20.0821 8.14507 20.7066 8.53531C21.3311 8.92555 21.521 9.74814 21.1307 10.3726C20.4782 11.4167 19.4088 12.3327 18 12.3327C17.7685 12.3327 17.5462 12.3079 17.3333 12.262L17.3333 13.0409C17.8948 13.4337 18.584 13.666 19.3333 13.666C20.2769 13.666 21.1252 13.2976 21.7432 12.7042C22.2744 12.1942 23.1185 12.2114 23.6285 12.7426C24.1385 13.2738 24.1213 14.1178 23.5901 14.6278C22.49 15.6841 20.9852 16.3327 19.3333 16.3327C18.6338 16.3327 17.9606 16.2163 17.3333 16.002V18.0531C18.0392 17.9934 18.7108 17.8873 19.335 17.7423C21.0296 17.3485 23 18.5587 23 20.5393C23 21.5265 22.4537 22.5524 21.4063 22.9419C20.935 23.1172 20.4345 23.269 19.911 23.3954C19.3839 23.5228 18.9627 23.8554 18.7618 24.3012L18.6199 24.6159C18.1546 25.6483 17.1409 26.3327 16 26.3327C14.8591 26.3327 13.8454 25.6483 13.3801 24.6159L13.2382 24.3012C13.0373 23.8554 12.6161 23.5228 12.089 23.3954C11.5655 23.269 11.065 23.1172 10.5937 22.9419C9.54632 22.5524 9 21.5265 9 20.5393C9 18.5587 10.9704 17.3485 12.665 17.7423C13.2892 17.8873 13.9608 17.9934 14.6667 18.0531V16.002C14.0394 16.2164 13.3662 16.3327 12.6667 16.3327C11.0148 16.3327 9.51001 15.6841 8.4099 14.6278C7.87872 14.1178 7.86154 13.2738 8.37154 12.7426C8.88155 12.2114 9.72559 12.1942 10.2568 12.7042C10.8748 13.2976 11.7231 13.666 12.6667 13.666C13.416 13.666 14.1052 13.4337 14.6667 13.0409V12.262C14.4538 12.3079 14.2315 12.3327 14 12.3327C12.5912 12.3327 11.5218 11.4167 10.8693 10.3726C10.4791 9.74814 10.6689 8.92555 11.2934 8.53531C11.9179 8.14507 12.7405 8.33494 13.1307 8.95942C13.5091 9.56487 13.8515 9.66602 14 9.66602C14.1214 9.66602 14.3724 9.59842 14.6667 9.24299L14.6667 6.99935C14.6667 6.26297 15.2636 5.66602 16 5.66602Z" fill="#2E3039"/>
</svg>

After

Width:  |  Height:  |  Size: 3.0 KiB

@ -0,0 +1,5 @@
<svg width="32" height="32" viewBox="0 0 32 32" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M22.6653 22.6661C22.6653 23.4025 22.0683 23.9994 21.332 23.9994H11.9986C11.2622 23.9994 10.6653 23.4025 10.6653 22.6661C10.6653 21.9297 11.2622 21.3328 11.9986 21.3328L21.332 21.3328C22.0683 21.3328 22.6653 21.9297 22.6653 22.6661Z" fill="#2E3039"/>
<path d="M21.332 18.6661C22.0683 18.6661 22.6653 18.0691 22.6653 17.3328C22.6653 16.5964 22.0683 15.9994 21.332 15.9994H17.332C16.5956 15.9994 15.9986 16.5964 15.9986 17.3328C15.9986 18.0691 16.5956 18.6661 17.332 18.6661H21.332Z" fill="#2E3039"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M9.914 30.1957C11.2237 30.3327 12.8674 30.3327 14.9222 30.3326H16.0893C18.6133 30.3327 20.6318 30.3327 22.2158 30.1315C23.8485 29.9242 25.2156 29.4832 26.3074 28.4519C27.4103 27.41 27.8922 26.0876 28.1169 24.5088C28.332 22.9972 28.332 21.0775 28.3319 18.7058V10.5061C28.332 9.44052 28.332 8.57711 28.2856 7.87234C28.2379 7.14617 28.1371 6.4986 27.8927 5.87972C27.1877 4.09398 25.7098 2.71495 23.8744 2.06828C22.7293 1.66483 20.7665 1.66535 18.6932 1.66608C14.907 1.6656 12.6581 1.66531 10.8149 2.31475C7.8549 3.35765 5.48993 5.57464 4.3654 8.42272C3.99058 9.372 3.82454 10.3916 3.7442 11.6141C3.66528 12.815 3.66528 14.2985 3.66528 16.1895L3.66528 19.6342C3.66526 21.565 3.66523 23.1286 3.81175 24.3783C3.9639 25.6762 4.28823 26.7934 5.04801 27.7521C5.44158 28.2488 5.90631 28.6871 6.4268 29.0552C7.41982 29.7574 8.56811 30.0549 9.914 30.1957ZM24.5279 26.5541C24.0036 27.0494 23.2622 27.3717 21.8899 27.546C20.4879 27.7241 18.6342 27.7265 15.9986 27.7265H14.9954C12.8506 27.7265 11.3424 27.7249 10.1831 27.6036C9.04458 27.4845 8.39935 27.2622 7.92225 26.9248C7.6003 26.6971 7.31714 26.429 7.08008 26.1298C6.73933 25.6999 6.51341 25.1228 6.39043 24.0737C6.26385 22.9941 6.26175 21.5843 6.26175 19.553L6.26164 15.6861C6.26162 15.3301 6.26185 14.4787 6.63601 13.8491C6.86658 13.4611 7.1618 13.137 7.46507 12.9719C7.95375 12.7059 8.51401 12.5547 9.10957 12.5547L10.4967 12.6034C11.0035 12.6139 11.5949 12.5979 12.1658 12.4449C13.2777 12.147 14.1463 11.2784 14.4442 10.1665C14.5972 9.59562 14.6132 9.00423 14.6027 8.49744L14.554 7.11029C14.554 6.4867 14.7199 5.94386 15.0097 5.43931C15.1786 5.14519 15.4729 4.87601 15.8792 4.63959C16.4954 4.28105 17.2333 4.27772 17.6842 4.27569C18.1351 4.27366 18.6108 4.2721 19.0082 4.2721C21.4537 4.2721 22.3432 4.2907 23.0143 4.52717C24.1778 4.93711 25.0654 5.79264 25.4789 6.83979C25.5824 7.10198 25.6555 7.44654 25.6948 8.0438C25.7348 8.6527 25.7354 9.42996 25.7354 10.5503V18.6054C25.7354 21.1014 25.7323 22.8344 25.5465 24.1402C25.3672 25.4 25.041 26.0694 24.5279 26.5541Z" fill="#2E3039"/>
</svg>

After

Width:  |  Height:  |  Size: 2.6 KiB

@ -0,0 +1,5 @@
<svg width="40" height="40" viewBox="0 0 40 40" fill="none" xmlns="http://www.w3.org/2000/svg">
<rect width="40" height="40" rx="10" fill="#EFEFF0"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M17.75 15C17.75 12.659 18.86 10.576 20.582 9.251C20.262 9.25 19.929 9.25 19.583 9.25H18.417C16.466 9.25 14.929 9.25 13.729 9.402C12.5 9.558 11.51 9.886 10.726 10.626C9.93498 11.373 9.58099 12.325 9.41299 13.505C9.25 14.6469 9.25 16.1048 9.25 17.9406L9.25 22.059C9.25 23.8948 9.25 25.3531 9.41299 26.495C9.58099 27.675 9.93498 28.627 10.726 29.374C11.51 30.114 12.5 30.442 13.729 30.598C14.929 30.75 16.466 30.75 18.417 30.75H19.583C21.534 30.75 23.071 30.75 24.271 30.598C25.5 30.442 26.49 30.114 27.274 29.374C28.065 28.627 28.419 27.675 28.587 26.495C28.75 25.3531 28.75 23.8952 28.75 22.0594V21.206C27.656 21.869 26.372 22.25 25 22.25C20.996 22.25 17.75 19.004 17.75 15ZM14 20C13.448 20 13 20.448 13 21C13 21.552 13.448 22 14 22H17.108C17.661 22 18.108 21.552 18.108 21C18.108 20.448 17.661 20 17.108 20H14ZM13 25C13 24.448 13.448 24 14 24L22 24C22.552 24 23 24.448 23 25C23 25.552 22.552 26 22 26L14 26C13.448 26 13 25.552 13 25Z" fill="#8F9AA3"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M19.25 15C19.25 11.824 21.824 9.25 25 9.25C28.176 9.25 30.75 11.824 30.75 15C30.75 18.176 28.176 20.75 25 20.75C21.824 20.75 19.25 18.176 19.25 15ZM27.707 13.25C27.845 13.64 27.641 14.069 27.25 14.207C27.027 14.286 26.746 14.467 26.43 14.744C26.122 15.014 25.818 15.342 25.547 15.668C25.276 15.992 24.796 16.671 24.633 16.902C24.488 17.13 24.232 17.263 23.962 17.249C23.692 17.235 23.45 17.077 23.329 16.836C23.124 16.425 22.952 16.286 22.896 16.249C22.892 16.246 22.887 16.243 22.884 16.241C22.525 16.185 22.25 15.875 22.25 15.5C22.25 15.086 22.586 14.75 23 14.75C23.352 14.75 23.565 14.892 23.723 14.998L23.729 15.001C23.816 15.06 23.905 15.129 23.993 15.212C24.114 15.053 24.249 14.882 24.395 14.707C24.696 14.346 25.055 13.955 25.441 13.616C25.82 13.284 26.267 12.964 26.75 12.793C27.14 12.655 27.569 12.859 27.707 13.25Z" fill="#8F9AA3"/>
</svg>

After

Width:  |  Height:  |  Size: 2.0 KiB

@ -0,0 +1,5 @@
<svg width="40" height="40" viewBox="0 0 40 40" fill="none" xmlns="http://www.w3.org/2000/svg">
<rect width="40" height="40" rx="10" fill="#EFEFF0"/>
<path d="M18.2215 12.1982C18.7926 12.0686 19.3878 12 20.0002 12C24.4185 12 28.0002 15.5817 28.0002 20C28.0002 22.0411 27.2363 23.904 25.9769 25.3181V24C25.9769 23.4477 25.5292 23 24.9769 23C24.4246 23 23.9769 23.4477 23.9769 24V27.5C23.9769 28.0523 24.4246 28.5 24.9769 28.5H28.5002C29.0525 28.5 29.5002 28.0523 29.5002 27.5C29.5002 26.9477 29.0525 26.5 28.5002 26.5H27.5996C29.0955 24.7526 30.0002 22.482 30.0002 20C30.0002 14.4772 25.5231 10 20.0002 10C19.2379 10 18.4943 10.0855 17.7789 10.2478C17.2403 10.37 16.9028 10.9057 17.025 11.4443C17.1472 11.9829 17.6829 12.3204 18.2215 12.1982Z" fill="#8F9AA3"/>
<path d="M11.5 11.5156C10.9477 11.5156 10.5 11.9633 10.5 12.5156C10.5 13.0679 10.9477 13.5156 11.5 13.5156H12.3873C10.8993 15.261 10 17.5254 10 20.0001C10 25.5229 14.4772 30.0001 20 30.0001C20.7623 30.0001 21.5059 29.9146 22.2213 29.7523C22.7599 29.6301 23.0974 29.0944 22.9752 28.5558C22.853 28.0172 22.3173 27.6796 21.7787 27.8019C21.2076 27.9314 20.6124 28.0001 20 28.0001C15.5817 28.0001 12 24.4184 12 20.0001C12 17.9716 12.7545 16.1191 14 14.7082L14 16.0001C14 16.5524 14.4477 17.0001 15 17.0001C15.5523 17.0001 16 16.5524 16 16.0001V12.5156C16 11.9633 15.5523 11.5156 15 11.5156L11.5 11.5156Z" fill="#8F9AA3"/>
</svg>

After

Width:  |  Height:  |  Size: 1.4 KiB

@ -728,6 +728,8 @@ class ApiConsts {
static String GET_TAMARA_INSTALLMENTS_URL = "https://mdlaboratories.com/tamaralive/Home/GetInstallments";
static String GET_TAMARA_PAYMENT_STATUS = 'https://mdlaboratories.com/tamaralive/api/OnlineTamara/order_status?orderid=';
static String QLINE_URL = "https://ms.hmg.com/nscapi/api/PatientCall/PatientInQueue_Detail";
// static String GET_TAMARA_INSTALLMENTS_URL = "https://epharmacy.hmg.com/tamara/Home/getinstallments";
// var payFortEnvironment = FortEnvironment.test;
@ -744,6 +746,7 @@ class ApiConsts {
GET_TAMARA_INSTALLMENTS_URL = "https://mdlaboratories.com/tamaralive/Home/GetInstallments";
GET_TAMARA_PAYMENT_STATUS = 'https://mdlaboratories.com/tamaralive/api/OnlineTamara/order_status?orderid=';
rcBaseUrl = 'https://rc.hmg.com/';
QLINE_URL = "https://ms.hmg.com/nscapi/api/PatientCall/PatientInQueue_Detail";
break;
case AppEnvironmentTypeEnum.dev:
baseUrl = "https://uat.hmgwebservices.com/";
@ -754,6 +757,7 @@ class ApiConsts {
GET_TAMARA_INSTALLMENTS_URL = "https://epharmacy.hmg.com/tamara/Home/getinstallments";
GET_TAMARA_PAYMENT_STATUS = 'https://epharmacy.hmg.com/tamara/api/OnlineTamara/order_status?orderid=';
rcBaseUrl = 'https://rc.hmg.com/uat/';
QLINE_URL = "https://ms.hmg.com/nscapi/api/PatientCall/PatientInQueue_Detail";
break;
case AppEnvironmentTypeEnum.uat:
baseUrl = "https://uat.hmgwebservices.com/";
@ -764,6 +768,7 @@ class ApiConsts {
GET_TAMARA_INSTALLMENTS_URL = "https://epharmacy.hmg.com/tamara/Home/getinstallments";
GET_TAMARA_PAYMENT_STATUS = 'https://epharmacy.hmg.com/tamara/api/OnlineTamara/order_status?orderid=';
rcBaseUrl = 'https://rc.hmg.com/uat/';
QLINE_URL = "https://ms.hmg.com/nscapi/api/PatientCall/PatientInQueue_Detail";
break;
case AppEnvironmentTypeEnum.preProd:
baseUrl = "https://webservices.hmg.com/";
@ -774,6 +779,7 @@ class ApiConsts {
GET_TAMARA_INSTALLMENTS_URL = "https://epharmacy.hmg.com/tamara/Home/getinstallments";
GET_TAMARA_PAYMENT_STATUS = 'https://epharmacy.hmg.com/tamara/api/OnlineTamara/order_status?orderid=';
rcBaseUrl = 'https://rc.hmg.com/';
QLINE_URL = "https://ms.hmg.com/nscapi/api/PatientCall/PatientInQueue_Detail";
break;
case AppEnvironmentTypeEnum.qa:
baseUrl = "https://uat.hmgwebservices.com/";
@ -784,6 +790,7 @@ class ApiConsts {
GET_TAMARA_INSTALLMENTS_URL = "https://epharmacy.hmg.com/tamara/Home/getinstallments";
GET_TAMARA_PAYMENT_STATUS = 'https://epharmacy.hmg.com/tamara/api/OnlineTamara/order_status?orderid=';
rcBaseUrl = 'https://rc.hmg.com/uat/';
QLINE_URL = "https://ms.hmg.com/nscapi/api/PatientCall/PatientInQueue_Detail";
break;
case AppEnvironmentTypeEnum.staging:
baseUrl = "https://uat.hmgwebservices.com/";
@ -794,6 +801,7 @@ class ApiConsts {
GET_TAMARA_INSTALLMENTS_URL = "https://epharmacy.hmg.com/tamara/Home/getinstallments";
GET_TAMARA_PAYMENT_STATUS = 'https://epharmacy.hmg.com/tamara/api/OnlineTamara/order_status?orderid=';
rcBaseUrl = 'https://rc.hmg.com/uat/';
QLINE_URL = "https://ms.hmg.com/nscapi/api/PatientCall/PatientInQueue_Detail";
break;
}
}

@ -192,6 +192,16 @@ class AppAssets {
static const String weight_tracker_icon = '$svgBasePath/weight_tracker_icon.svg';
static const String ask_doctor_medical_file_icon = '$svgBasePath/ask_doctor_medical_file_icon.svg';
static const String internet_pairing_icon = '$svgBasePath/internet_pairing_icon.svg';
static const String my_doctors_icon = '$svgBasePath/my_doctors_icon.svg';
static const String my_sick_leave_icon = '$svgBasePath/my_sick_leave_icon.svg';
static const String my_radiology_icon = '$svgBasePath/my_radiology_icon.svg';
static const String monthly_reports_icon = '$svgBasePath/monthly_reports_icon.svg';
static const String medical_reports_icon = '$svgBasePath/medical_reports_icon.svg';
static const String sick_leave_report_icon = '$svgBasePath/sick_leave_report_icon.svg';
static const String update_insurance_icon = '$svgBasePath/update_insurance_icon.svg';
static const String insurance_approval_icon = '$svgBasePath/insurance_approval_icon.svg';
static const String invoices_list_icon = '$svgBasePath/invoices_list_icon.svg';
static const String ancillary_orders_list_icon = '$svgBasePath/ancillary_orders_list_icon.svg';
//bottom navigation//

@ -913,14 +913,14 @@ class Utils {
return AppColors.primaryRedColor;
}
static String getCardButtonText(int currentQueueStatus) {
static String getCardButtonText(int currentQueueStatus, String roomNumber) {
switch (currentQueueStatus) {
case 0:
return "Please wait! you will be called for vital signs".needTranslation;
case 1:
return "Please visit Room S5 for vital signs".needTranslation;
return "Please visit Room $roomNumber for vital signs".needTranslation;
case 2:
return "Please visit Room S5 to the Doctor".needTranslation;
return "Please visit Room $roomNumber to the Doctor".needTranslation;
}
return "";
}

@ -586,6 +586,7 @@ class AuthenticationViewModel extends ChangeNotifier {
activation.list!.first.bloodGroup = activation.patientBlodType;
_appState.setAuthenticatedUser(activation.list!.first);
_appState.setPrivilegeModelList(activation.list!.first.listPrivilege!);
_appState.setUserBloodGroup = activation.patientBlodType ?? "N/A";
}
// _appState.setUserBloodGroup = (activation.patientBlodType ?? "");
_appState.setAppAuthToken = activation.authenticationTokenId;

@ -0,0 +1,40 @@
class PatientQueueDetails {
int? patientID;
String? patientName;
String? queueNo;
int? callType;
String? roomNo;
String? calledOn;
bool? servingNow;
PatientQueueDetails(
{this.patientID,
this.patientName,
this.queueNo,
this.callType,
this.roomNo,
this.calledOn,
this.servingNow});
PatientQueueDetails.fromJson(Map<String, dynamic> json) {
patientID = json['patientID'];
patientName = json['patientName'];
queueNo = json['queueNo'];
callType = json['callType'];
roomNo = json['roomNo'];
calledOn = json['calledOn'];
servingNow = json['servingNow'];
}
Map<String, dynamic> toJson() {
final Map<String, dynamic> data = new Map<String, dynamic>();
data['patientID'] = this.patientID;
data['patientName'] = this.patientName;
data['queueNo'] = this.queueNo;
data['callType'] = this.callType;
data['roomNo'] = this.roomNo;
data['calledOn'] = this.calledOn;
data['servingNow'] = this.servingNow;
return data;
}
}

@ -13,6 +13,7 @@ import 'package:hmg_patient_app_new/features/my_appointments/models/resp_models/
import 'package:hmg_patient_app_new/features/my_appointments/models/resp_models/hospital_model.dart' show HospitalsModel;
import 'package:hmg_patient_app_new/features/my_appointments/models/resp_models/patient_appointment_history_response_model.dart';
import 'package:hmg_patient_app_new/features/my_appointments/models/resp_models/patient_appointment_share_response_model.dart';
import 'package:hmg_patient_app_new/features/my_appointments/models/resp_models/patient_queue_details_response_model.dart';
import 'package:hmg_patient_app_new/services/logger_service.dart';
abstract class MyAppointmentsRepo {
@ -58,6 +59,8 @@ abstract class MyAppointmentsRepo {
Future<Either<Failure, GenericApiModel<dynamic>>> sendAskDocCallRequest(
{required PatientAppointmentHistoryResponseModel patientAppointmentHistoryResponseModel, required String requestType, required String remarks, required String userMobileNumber});
Future<Either<Failure, GenericApiModel<List<PatientQueueDetails>>>> getPatientAppointmentQueueDetails({required int appointmentNo, required int patientID});
}
class MyAppointmentsRepoImp implements MyAppointmentsRepo {
@ -746,4 +749,35 @@ class MyAppointmentsRepoImp implements MyAppointmentsRepo {
return Left(UnknownFailure(e.toString()));
}
}
@override
Future<Either<Failure, GenericApiModel<List<PatientQueueDetails>>>> getPatientAppointmentQueueDetails({required int appointmentNo, required int patientID}) async {
Map<String, dynamic> mapDevice = {"appointmentNo": appointmentNo, "patientID": patientID, "apiKey": "EE17D21C7943485D9780223CCE55DCE5"};
try {
GenericApiModel<List<PatientQueueDetails>>? apiResponse;
Failure? failure;
await apiClient.post(ApiConsts.QLINE_URL, onFailure: (error, statusCode, {messageStatus, failureType}) {
failure = failureType;
}, onSuccess: (response, statusCode, {messageStatus, errorMessage}) {
try {
final list = response['data'];
final queueList = list.map((item) => PatientQueueDetails.fromJson(item as Map<String, dynamic>)).toList().cast<PatientQueueDetails>();
apiResponse = GenericApiModel<List<PatientQueueDetails>>(
messageStatus: messageStatus,
statusCode: statusCode,
errorMessage: null,
data: queueList,
);
} catch (e) {
failure = DataParsingFailure(e.toString());
}
}, body: mapDevice, isExternal: true, isAllowAny: true);
if (failure != null) return Left(failure!);
if (apiResponse == null) return Left(ServerFailure("Unknown error"));
return Right(apiResponse!);
} catch (e) {
return Left(UnknownFailure(e.toString()));
}
}
}

@ -6,6 +6,7 @@ import 'package:hmg_patient_app_new/features/my_appointments/models/resp_models/
import 'package:hmg_patient_app_new/features/my_appointments/models/resp_models/get_tamara_installments_details_response_model.dart';
import 'package:hmg_patient_app_new/features/my_appointments/models/resp_models/patient_appointment_history_response_model.dart';
import 'package:hmg_patient_app_new/features/my_appointments/models/resp_models/patient_appointment_share_response_model.dart';
import 'package:hmg_patient_app_new/features/my_appointments/models/resp_models/patient_queue_details_response_model.dart';
import 'package:hmg_patient_app_new/features/my_appointments/my_appointments_repo.dart';
import 'package:hmg_patient_app_new/features/my_appointments/utils/appointment_type.dart';
import 'package:hmg_patient_app_new/services/error_handler_service.dart';
@ -37,8 +38,11 @@ class MyAppointmentsViewModel extends ChangeNotifier {
DateTime? start = null;
DateTime? end = null;
bool isAppointmentQueueDetailsLoading = false;
bool isPatientHasQueueAppointment = false;
int currentQueueStatus = 0;
List<PatientQueueDetails> patientQueueDetailsList = [];
late PatientQueueDetails currentPatientQueueDetails;
List<PatientAppointmentHistoryResponseModel> patientAppointmentsHistoryList = [];
List<PatientAppointmentHistoryResponseModel> filteredAppointmentList = [];
@ -88,7 +92,7 @@ class MyAppointmentsViewModel extends ChangeNotifier {
isTamaraDetailsLoading = true;
isAppointmentPatientShareLoading = true;
isEyeMeasurementsAppointmentsLoading = true;
isPatientHasQueueAppointment = false;
isAppointmentQueueDetailsLoading = true;
notifyListeners();
}
@ -218,6 +222,10 @@ class MyAppointmentsViewModel extends ChangeNotifier {
patientAppointmentsHistoryList.addAll(patientArrivedAppointmentsHistoryList);
filteredAppointmentList.addAll(patientAppointmentsHistoryList);
if (patientArrivedAppointmentsHistoryList.isNotEmpty) {
getPatientAppointmentQueueDetails(appointmentNo: patientArrivedAppointmentsHistoryList.first.appointmentNo, patientID: patientArrivedAppointmentsHistoryList.first.patientID);
}
print('Upcoming Appointments: ${patientUpcomingAppointmentsHistoryList.length}');
print('Arrived Appointments: ${patientArrivedAppointmentsHistoryList.length}');
print('All Appointments: ${patientAppointmentsHistoryList.length}');
@ -659,6 +667,50 @@ class MyAppointmentsViewModel extends ChangeNotifier {
);
}
Future<void> getPatientAppointmentQueueDetails({required int appointmentNo, required int patientID, Function(dynamic)? onSuccess, Function(String)? onError}) async {
isAppointmentQueueDetailsLoading = true;
notifyListeners();
final result = await myAppointmentsRepo.getPatientAppointmentQueueDetails(appointmentNo: appointmentNo, patientID: patientID);
isAppointmentQueueDetailsLoading = false;
result.fold(
// (failure) async => await errorHandlerService.handleError(failure: failure),
(failure) async {
if (onError != null) {
onError(failure.message);
}
},
(apiResponse) {
if (apiResponse.messageStatus == 2) {
onError!(apiResponse.errorMessage!);
} else if (apiResponse.messageStatus == 1) {
if (apiResponse.data != null && apiResponse.data!.isNotEmpty) {
isPatientHasQueueAppointment = true;
patientQueueDetailsList = apiResponse.data!;
for (var element in patientQueueDetailsList) {
if (element.patientID == patientID) {
currentPatientQueueDetails = element;
currentQueueStatus = element.callType!;
// currentQueueStatus = 2;
break;
}
}
// patientQueueDetailsList.first.callType = 1;
patientQueueDetailsList.removeWhere((element) => element.patientID == patientID);
} else {
isPatientHasQueueAppointment = false;
}
notifyListeners();
if (onSuccess != null) {
onSuccess(apiResponse.data);
}
}
},
);
}
Future<void> sendAskDocCallRequest({
required PatientAppointmentHistoryResponseModel patientAppointmentHistoryResponseModel,
required String requestType,

@ -70,7 +70,6 @@ class _AppointmentDetailsPageState extends State<AppointmentDetailsPage> {
scheduleMicrotask(() async {
CalenderUtilsNew calendarUtils = await CalenderUtilsNew.instance;
var doesExist = await calendarUtils.checkIfEventExist("${widget.patientAppointmentHistoryResponseModel.appointmentNo}");
print("the appointment reminder exist $doesExist");
myAppointmentsViewModel.setAppointmentReminder(doesExist, widget.patientAppointmentHistoryResponseModel);
setState((){
@ -82,7 +81,6 @@ class _AppointmentDetailsPageState extends State<AppointmentDetailsPage> {
@override
Widget build(BuildContext context) {
AppState appState = getIt.get<AppState>();
myAppointmentsViewModel = Provider.of<MyAppointmentsViewModel>(context, listen: false);
prescriptionsViewModel = Provider.of<PrescriptionsViewModel>(context, listen: false);
bookAppointmentsViewModel = Provider.of<BookAppointmentsViewModel>(context, listen: false);
@ -390,7 +388,7 @@ class _AppointmentDetailsPageState extends State<AppointmentDetailsPage> {
label: "${LocaleKeys.radiology.tr(context: context)} ${LocaleKeys.radiologySubtitle.tr(context: context)}",
textColor: AppColors.blackColor,
backgroundColor: AppColors.whiteColor,
svgIcon: AppAssets.allergy_info_icon,
svgIcon: AppAssets.radiology_icon,
isLargeText: true,
iconSize: 36.w,
).onPress(() async {

@ -42,7 +42,8 @@ class AppointmentQueuePage extends StatelessWidget {
color: AppColors.whiteColor,
borderRadius: 20.h,
hasShadow: false,
side: BorderSide(color: Utils.getCardBorderColor(myAppointmentsVM.currentQueueStatus), width: 2.w),
side:
BorderSide(color: myAppointmentsVM.isAppointmentQueueDetailsLoading ? AppColors.whiteColor : Utils.getCardBorderColor(myAppointmentsVM.currentQueueStatus), width: 2.w),
),
child: Padding(
padding: EdgeInsets.all(16.h),
@ -59,16 +60,19 @@ class AppointmentQueuePage extends StatelessWidget {
),
Utils.buildSvgWithAssets(icon: AppAssets.waiting_icon, width: 24.h, height: 24.h),
],
),
).toShimmer2(isShow: myAppointmentsVM.isAppointmentQueueDetailsLoading),
SizedBox(height: 10.h),
"Hala ${appState!.getAuthenticatedUser()!.firstName}!!!".needTranslation.toText16(isBold: true),
"Hala ${appState!.getAuthenticatedUser()!.firstName}!!!".needTranslation.toText16(isBold: true).toShimmer2(isShow: myAppointmentsVM.isAppointmentQueueDetailsLoading),
SizedBox(height: 8.h),
"Thank you for your patience, here is your queue number.".needTranslation.toText12(fontWeight: FontWeight.w500, color: AppColors.textColorLight),
"Thank you for your patience, here is your queue number."
.needTranslation
.toText12(fontWeight: FontWeight.w500, color: AppColors.textColorLight)
.toShimmer2(isShow: myAppointmentsVM.isAppointmentQueueDetailsLoading),
SizedBox(height: 8.h),
"IMD W-A-5".needTranslation.toText32(isBold: true),
myAppointmentsVM.currentPatientQueueDetails.queueNo!.toText32(isBold: true).toShimmer2(isShow: myAppointmentsVM.isAppointmentQueueDetailsLoading),
SizedBox(height: 8.h),
CustomButton(
text: Utils.getCardButtonText(myAppointmentsVM.currentQueueStatus),
text: Utils.getCardButtonText(myAppointmentsVM.currentQueueStatus, myAppointmentsVM.currentPatientQueueDetails.roomNo!),
onPressed: () {},
backgroundColor: Utils.getCardButtonColor(myAppointmentsVM.currentQueueStatus),
borderColor: Utils.getCardButtonColor(myAppointmentsVM.currentQueueStatus).withValues(alpha: 0.01),
@ -80,15 +84,16 @@ class AppointmentQueuePage extends StatelessWidget {
height: 40.h,
iconColor: AppColors.whiteColor,
iconSize: 18.h,
),
).toShimmer2(isShow: myAppointmentsVM.isAppointmentQueueDetailsLoading),
],
),
),
),
SizedBox(height: 16.h),
Container(
decoration: RoundedRectangleBorder().toSmoothCornerDecoration(
color: AppColors.whiteColor,
myAppointmentsVM.patientQueueDetailsList.isNotEmpty
? Container(
decoration: RoundedRectangleBorder().toSmoothCornerDecoration(
color: AppColors.whiteColor,
borderRadius: 20.h,
hasShadow: true,
),
@ -97,14 +102,14 @@ class AppointmentQueuePage extends StatelessWidget {
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
"Serving Now".needTranslation.toText16(isBold: true),
SizedBox(height: 18.h),
ListView.separated(
"Serving Now".needTranslation.toText16(isBold: true).toShimmer2(isShow: myAppointmentsVM.isAppointmentQueueDetailsLoading),
SizedBox(height: 18.h),
ListView.separated(
padding: EdgeInsets.zero,
shrinkWrap: true,
itemCount: 3,
physics: NeverScrollableScrollPhysics(),
itemBuilder: (BuildContext context, int index) {
itemCount: myAppointmentsVM.patientQueueDetailsList.length,
physics: NeverScrollableScrollPhysics(),
itemBuilder: (BuildContext context, int index) {
return Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
crossAxisAlignment: CrossAxisAlignment.start,
@ -113,28 +118,32 @@ class AppointmentQueuePage extends StatelessWidget {
Row(
crossAxisAlignment: CrossAxisAlignment.center,
children: [
"Room: S2".toText12(fontWeight: FontWeight.w500),
SizedBox(width: 8.w),
AppCustomChipWidget(
deleteIcon: AppAssets.call_for_vitals,
labelText: "Call for vital signs".needTranslation,
iconColor: AppColors.primaryRedColor,
textColor: AppColors.primaryRedColor,
iconSize: 14.w,
backgroundColor: AppColors.primaryRedColor.withValues(alpha: 0.1),
labelPadding: EdgeInsetsDirectional.only(start: 8.h, end: -2.h),
),
"Room: ${myAppointmentsVM.patientQueueDetailsList[index].roomNo}".toText12(fontWeight: FontWeight.w500),
SizedBox(width: 8.w),
AppCustomChipWidget(
deleteIcon: myAppointmentsVM.patientQueueDetailsList[index].callType == 1 ? AppAssets.call_for_vitals : AppAssets.call_for_doctor,
labelText:
myAppointmentsVM.patientQueueDetailsList[index].callType == 1 ? "Call for vital signs".needTranslation : "Call for Doctor".needTranslation,
iconColor: myAppointmentsVM.patientQueueDetailsList[index].callType == 1 ? AppColors.primaryRedColor : AppColors.successColor,
textColor: myAppointmentsVM.patientQueueDetailsList[index].callType == 1 ? AppColors.primaryRedColor : AppColors.successColor,
iconSize: 14.w,
backgroundColor: myAppointmentsVM.patientQueueDetailsList[index].callType == 1
? AppColors.primaryRedColor.withValues(alpha: 0.1)
: AppColors.successColor.withValues(alpha: 0.1),
labelPadding: EdgeInsetsDirectional.only(start: 8.h, end: -2.h),
),
],
),
],
);
},
separatorBuilder: (BuildContext cxt, int index) => SizedBox(height: 8.h),
),
],
),
).toShimmer2(isShow: myAppointmentsVM.isAppointmentQueueDetailsLoading),
],
),
),
),
)
: SizedBox.shrink(),
SizedBox(height: 16.h),
Container(
decoration: RoundedRectangleBorder().toSmoothCornerDecoration(
@ -174,7 +183,7 @@ class AppointmentQueuePage extends StatelessWidget {
SizedBox(height: 16.h),
],
),
).toShimmer2(isShow: myAppointmentsVM.isAppointmentQueueDetailsLoading),
),
),
],

@ -17,6 +17,7 @@ import 'package:hmg_patient_app_new/features/my_appointments/my_appointments_vie
import 'package:hmg_patient_app_new/features/my_appointments/utils/appointment_type.dart';
import 'package:hmg_patient_app_new/generated/locale_keys.g.dart';
import 'package:hmg_patient_app_new/presentation/appointments/appointment_details_page.dart';
import 'package:hmg_patient_app_new/presentation/appointments/appointment_queue_page.dart';
import 'package:hmg_patient_app_new/presentation/appointments/widgets/ask_doctor_request_type_select.dart';
import 'package:hmg_patient_app_new/presentation/book_appointment/widgets/appointment_calendar.dart';
import 'package:hmg_patient_app_new/presentation/medical_file/eye_measurement_details_page.dart';
@ -180,12 +181,14 @@ class AppointmentCard extends StatelessWidget {
).toShimmer2(isShow: isLoading),
AppCustomChipWidget(labelText: isLoading ? 'Olaya' : patientAppointmentHistoryResponseModel.projectName!).toShimmer2(isShow: isLoading),
AppCustomChipWidget(
labelPadding: EdgeInsetsDirectional.only(start: -4.w, end: 6.w),
icon: AppAssets.appointment_calendar_icon,
labelText: isLoading
? 'Cardiology'
: "${DateUtil.formatDateToDate(DateUtil.convertStringToDate(patientAppointmentHistoryResponseModel.appointmentDate), false)} ${DateUtil.formatDateToTimeLang(DateUtil.convertStringToDate(patientAppointmentHistoryResponseModel.appointmentDate), false)}",
).toShimmer2(isShow: isLoading),
AppCustomChipWidget(
labelPadding: EdgeInsetsDirectional.only(start: -2.w, end: 6.w),
isIconPNG: true,
icon: getIt.get<AppState>().getAuthenticatedUser()?.gender == 1 ? AppAssets.male_img : AppAssets.femaleImg,
iconSize: 18.h,

@ -149,6 +149,7 @@ class AppointmentCheckinBottomSheet extends StatelessWidget {
onSuccess: (apiResponse) {
LoaderBottomSheet.hideLoader();
showCommonBottomSheetWithoutHeight(context, title: "Success".needTranslation, child: Utils.getSuccessWidget(loadingText: LocaleKeys.success.tr()), callBackFunc: () {
myAppointmentsViewModel.getPatientAppointmentQueueDetails(appointmentNo: patientAppointmentHistoryResponseModel.appointmentNo, patientID: patientAppointmentHistoryResponseModel.patientID);
Navigator.of(context).pop();
Navigator.pushAndRemoveUntil(
context,

@ -99,6 +99,7 @@ class AppointmentDoctorCard extends StatelessWidget {
labelPadding: EdgeInsetsDirectional.only(start: 6.w, end: 6.w),
),
AppCustomChipWidget(
labelPadding: EdgeInsetsDirectional.only(start: -4.w, end: 6.w),
icon: AppAssets.doctor_calendar_icon,
labelText: "${DateUtil.formatDateToDate(DateUtil.convertStringToDate(patientAppointmentHistoryResponseModel.appointmentDate), false)} ${DateUtil.formatDateToTimeLang(
DateUtil.convertStringToDate(patientAppointmentHistoryResponseModel.appointmentDate),
@ -106,6 +107,7 @@ class AppointmentDoctorCard extends StatelessWidget {
)}",
),
AppCustomChipWidget(
labelPadding: EdgeInsetsDirectional.only(start: -4.w, end: 6.w),
icon: !patientAppointmentHistoryResponseModel.isLiveCareAppointment!
? AppAssets.walkin_appointment_icon
: AppAssets.small_livecare_icon,

@ -45,20 +45,22 @@ class BodyTypeListing extends StatelessWidget {
? AppColors.chipPrimaryRedBorderColor
: AppColors.blackColor,
iconSize: 16,
labelPadding:
EdgeInsetsDirectional.only(start: 8.h, end: 0.h),
padding:
EdgeInsets.symmetric(vertical: 16.h, horizontal: 12.h),
deleteIconSize: Size(18.h, 18.h),
shape: SmoothRectangleBorder(
borderRadius: BorderRadius.circular(10),
smoothness: 10,
labelPadding: EdgeInsetsDirectional.only(start: 8.w, end: 8.w),
padding: EdgeInsets.symmetric(vertical: 16.h, horizontal: 12.w),
deleteIconSize: Size(18.w, 18.h),
shape: SmoothRectangleBorder(
borderRadius: BorderRadius.circular(10.r),
smoothness: 10,
side: BorderSide(
color: index == selectedBodyAreaIndex
? AppColors.chipPrimaryRedBorderColor
: AppColors.borderGrayColor,
width: 1),
)).onPress(() => onCategoryChanged(index))))
)).onPress(
() => onCategoryChanged(index),
),
),
)
],
),
);

@ -90,7 +90,7 @@ class LandingPageData {
),
ServiceCardData(
serviceName: "radiology_results",
icon: AppAssets.home_lab_result_icon,
icon: AppAssets.my_radiology_icon,
title: "Radiology",
subtitle: "Results",
backgroundColor: AppColors.whiteColor,
@ -120,7 +120,7 @@ class LandingPageData {
),
ServiceCardData(
serviceName: "my_doctors",
icon: AppAssets.insurance_update_icon,
icon: AppAssets.my_doctors_icon,
title: "My",
subtitle: "Doctors",
backgroundColor: AppColors.whiteColor,
@ -130,7 +130,7 @@ class LandingPageData {
),
ServiceCardData(
serviceName: "sick_leaves",
icon: AppAssets.insurance_update_icon,
icon: AppAssets.my_sick_leave_icon,
title: "Sick",
subtitle: "Leaves",
backgroundColor: AppColors.whiteColor,

@ -25,6 +25,7 @@ import 'package:hmg_patient_app_new/features/my_appointments/models/resp_models/
import 'package:hmg_patient_app_new/features/my_appointments/my_appointments_view_model.dart';
import 'package:hmg_patient_app_new/features/prescriptions/prescriptions_view_model.dart';
import 'package:hmg_patient_app_new/generated/locale_keys.g.dart';
import 'package:hmg_patient_app_new/presentation/appointments/appointment_queue_page.dart';
import 'package:hmg_patient_app_new/presentation/appointments/my_appointments_page.dart';
import 'package:hmg_patient_app_new/presentation/appointments/widgets/appointment_card.dart';
import 'package:hmg_patient_app_new/presentation/authentication/quick_login.dart';
@ -291,15 +292,15 @@ class _LandingPageState extends State<LandingPage> {
],
),
SizedBox(height: 10.h),
"Hala ${appState!.getAuthenticatedUser()!.firstName}!!!".needTranslation.toText16(isBold: true),
"Hala ${appState.getAuthenticatedUser()!.firstName}!!!".needTranslation.toText16(isBold: true),
SizedBox(height: 8.h),
"Thank you for your patience, here is your queue number."
.needTranslation
.toText12(fontWeight: FontWeight.w500, color: AppColors.textColorLight),
SizedBox(height: 8.h),
"IMD W-A-5".needTranslation.toText28(isBold: true),
myAppointmentsVM.currentPatientQueueDetails.queueNo!.toText28(isBold: true),
SizedBox(height: 12.h),
Row(
myAppointmentsVM.patientQueueDetailsList.isNotEmpty ? Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
crossAxisAlignment: CrossAxisAlignment.center,
children: [
@ -307,24 +308,24 @@ class _LandingPageState extends State<LandingPage> {
Row(
crossAxisAlignment: CrossAxisAlignment.center,
children: [
"IMD W-A-2".needTranslation.toText12(isBold: true),
myAppointmentsVM.patientQueueDetailsList.first.queueNo!.toText12(isBold: true),
SizedBox(width: 8.w),
AppCustomChipWidget(
deleteIcon: AppAssets.call_for_vitals,
labelText: "Call for vital signs".needTranslation,
iconColor: AppColors.primaryRedColor,
textColor: AppColors.primaryRedColor,
deleteIcon: myAppointmentsVM.patientQueueDetailsList.first.callType == 1 ? AppAssets.call_for_vitals : AppAssets.call_for_doctor,
labelText: myAppointmentsVM.patientQueueDetailsList.first.callType == 1 ? "Call for vital signs".needTranslation : "Call for Doctor".needTranslation,
iconColor: myAppointmentsVM.patientQueueDetailsList.first.callType == 1 ? AppColors.primaryRedColor : AppColors.successColor,
textColor: myAppointmentsVM.patientQueueDetailsList.first.callType == 1 ? AppColors.primaryRedColor : AppColors.successColor,
iconSize: 14.w,
backgroundColor: AppColors.primaryRedColor.withValues(alpha: 0.1),
backgroundColor: myAppointmentsVM.patientQueueDetailsList.first.callType == 1 ? AppColors.primaryRedColor.withValues(alpha: 0.1) : AppColors.successColor.withValues(alpha: 0.1),
labelPadding: EdgeInsetsDirectional.only(start: 8.h, end: -2.h),
),
],
),
],
),
) : SizedBox(height: 12.h),
SizedBox(height: 8.h),
CustomButton(
text: Utils.getCardButtonText(myAppointmentsVM.currentQueueStatus),
text: Utils.getCardButtonText(myAppointmentsVM.currentQueueStatus, myAppointmentsVM.currentPatientQueueDetails.roomNo!),
onPressed: () {},
backgroundColor: Utils.getCardButtonColor(myAppointmentsVM.currentQueueStatus),
borderColor: Utils.getCardButtonColor(myAppointmentsVM.currentQueueStatus).withValues(alpha: 0.01),
@ -340,7 +341,13 @@ class _LandingPageState extends State<LandingPage> {
],
),
),
)
).onPress(() {
Navigator.of(context).push(
CustomPageRoute(
page: AppointmentQueuePage(),
),
);
})
: (immediateLiveCareVM.patientHasPendingLiveCareRequest && index == 0)
? Column(
children: [

@ -192,20 +192,21 @@ class _MedicalFilePageState extends State<MedicalFilePage> {
AppCustomChipWidget(
icon: AppAssets.file_icon,
labelText: "${LocaleKeys.fileno.tr(context: context)}: ${appState.getAuthenticatedUser()!.patientId}",
labelPadding: EdgeInsetsDirectional.only(end: 6.w),
labelPadding: EdgeInsetsDirectional.only(start: -4.w, end: 6.w),
onChipTap: () {
navigationService.pushPage(
page: FamilyMedicalScreen(
profiles: medicalFileViewModel.patientFamilyFiles,
onSelect: (FamilyFileResponseModelLists p1) {},
));
),
);
},
),
AppCustomChipWidget(
icon: AppAssets.checkmark_icon,
labelText: LocaleKeys.verified.tr(context: context),
iconColor: AppColors.successColor,
labelPadding: EdgeInsetsDirectional.only(end: 6.w),
labelPadding: EdgeInsetsDirectional.only(start: -4.w, end: 6.w),
),
],
),
@ -227,9 +228,9 @@ class _MedicalFilePageState extends State<MedicalFilePage> {
),
AppCustomChipWidget(
icon: AppAssets.blood_icon,
labelText: "Blood: ${appState.getUserBloodGroup.isEmpty ? "N/A" : appState.getUserBloodGroup.isEmpty}",
labelText: "Blood: ${appState.getUserBloodGroup.isEmpty ? "N/A" : appState.getUserBloodGroup}",
iconColor: AppColors.primaryRedColor,
labelPadding: EdgeInsetsDirectional.only(end: 4.w),
labelPadding: EdgeInsetsDirectional.only(start: -4.w, end: 6.w),
padding: EdgeInsets.zero,
),
Consumer<InsuranceViewModel>(builder: (context, insuranceVM, child) {
@ -240,7 +241,7 @@ class _MedicalFilePageState extends State<MedicalFilePage> {
textColor: insuranceVM.isInsuranceExpired ? AppColors.primaryRedColor : AppColors.successColor,
iconSize: 12.w,
backgroundColor: insuranceVM.isInsuranceExpired ? AppColors.primaryRedColor.withOpacity(0.1) : AppColors.successColor.withOpacity(0.1),
labelPadding: EdgeInsetsDirectional.only(end: 8.w),
labelPadding: EdgeInsetsDirectional.only(start: -4.w, end: 6.w),
);
}),
],
@ -939,7 +940,7 @@ class _MedicalFilePageState extends State<MedicalFilePage> {
label: "Update Insurance".needTranslation,
textColor: AppColors.blackColor,
backgroundColor: AppColors.whiteColor,
svgIcon: AppAssets.eye_result_icon,
svgIcon: AppAssets.update_insurance_icon,
isLargeText: true,
iconSize: 36.w,
).onPress(() {
@ -949,7 +950,7 @@ class _MedicalFilePageState extends State<MedicalFilePage> {
label: "${LocaleKeys.insurance.tr(context: context)} ${LocaleKeys.approvals.tr(context: context)}",
textColor: AppColors.blackColor,
backgroundColor: AppColors.whiteColor,
svgIcon: AppAssets.eye_result_icon,
svgIcon: AppAssets.insurance_approval_icon,
isLargeText: true,
iconSize: 36.w,
).onPress(() {
@ -963,7 +964,7 @@ class _MedicalFilePageState extends State<MedicalFilePage> {
label: "My Invoices List".needTranslation,
textColor: AppColors.blackColor,
backgroundColor: AppColors.whiteColor,
svgIcon: AppAssets.eye_result_icon,
svgIcon: AppAssets.invoices_list_icon,
isLargeText: true,
iconSize: 36.w,
),
@ -971,7 +972,7 @@ class _MedicalFilePageState extends State<MedicalFilePage> {
label: "Ancillary Orders List".needTranslation,
textColor: AppColors.blackColor,
backgroundColor: AppColors.whiteColor,
svgIcon: AppAssets.eye_result_icon,
svgIcon: AppAssets.ancillary_orders_list_icon,
isLargeText: true,
iconSize: 36.w,
),
@ -1026,7 +1027,7 @@ class _MedicalFilePageState extends State<MedicalFilePage> {
label: LocaleKeys.monthlyReports.tr(context: context),
textColor: AppColors.blackColor,
backgroundColor: AppColors.whiteColor,
svgIcon: AppAssets.eye_result_icon,
svgIcon: AppAssets.monthly_reports_icon,
isLargeText: true,
iconSize: 36.h,
),
@ -1034,7 +1035,7 @@ class _MedicalFilePageState extends State<MedicalFilePage> {
label: "Medical Reports".needTranslation,
textColor: AppColors.blackColor,
backgroundColor: AppColors.whiteColor,
svgIcon: AppAssets.allergy_info_icon,
svgIcon: AppAssets.medical_reports_icon,
isLargeText: true,
iconSize: 36.h,
).onPress(() {
@ -1050,7 +1051,7 @@ class _MedicalFilePageState extends State<MedicalFilePage> {
label: "Sick Leave Report".needTranslation,
textColor: AppColors.blackColor,
backgroundColor: AppColors.whiteColor,
svgIcon: AppAssets.vaccine_info_icon,
svgIcon: AppAssets.sick_leave_report_icon,
isLargeText: true,
iconSize: 36.h,
).onPress(() {

@ -47,7 +47,9 @@ class _PatientSickleavesListPageState extends State<PatientSickleavesListPage> {
return Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
SizedBox(height: 24.h),
ListView.separated(
padding: EdgeInsets.zero,
scrollDirection: Axis.vertical,
itemCount: medicalFileVM.isPatientSickLeaveListLoading
? 3

@ -180,7 +180,6 @@ class _AncillaryOrderPaymentPageState extends State<AncillaryOrderPaymentPage> {
),
),
),
// Payment Summary Footer
todoVM.isProcessingPayment ? SizedBox.shrink() : _buildPaymentSummary()
],
@ -220,7 +219,7 @@ class _AncillaryOrderPaymentPageState extends State<AncillaryOrderPaymentPage> {
children: [
"Amount before tax".needTranslation.toText14(isBold: true),
Utils.getPaymentAmountWithSymbol(
amountBeforeTax.toString().toText16(isBold: true),
amountBeforeTax.toStringAsFixed(2).toText16(isBold: true),
AppColors.blackColor,
13,
isSaudiCurrency: true,
@ -234,7 +233,7 @@ class _AncillaryOrderPaymentPageState extends State<AncillaryOrderPaymentPage> {
children: [
"VAT 15%".needTranslation.toText14(isBold: true, color: AppColors.greyTextColor),
Utils.getPaymentAmountWithSymbol(
taxAmount.toString().toText14(isBold: true, color: AppColors.greyTextColor),
taxAmount.toStringAsFixed(2).toText14(isBold: true, color: AppColors.greyTextColor),
AppColors.greyTextColor,
13,
isSaudiCurrency: true,
@ -250,7 +249,7 @@ class _AncillaryOrderPaymentPageState extends State<AncillaryOrderPaymentPage> {
children: [
"".needTranslation.toText14(isBold: true),
Utils.getPaymentAmountWithSymbol(
widget.totalAmount.toString().toText24(isBold: true),
widget.totalAmount.toStringAsFixed(2).toText24(isBold: true),
AppColors.blackColor,
17,
isSaudiCurrency: true,

@ -1,6 +1,7 @@
import 'dart:async';
import 'package:collection/collection.dart';
import 'package:easy_localization/easy_localization.dart';
import 'package:flutter/material.dart';
import 'package:flutter_staggered_animations/flutter_staggered_animations.dart';
import 'package:hmg_patient_app_new/core/app_assets.dart';
@ -13,6 +14,7 @@ import 'package:hmg_patient_app_new/extensions/widget_extensions.dart';
import 'package:hmg_patient_app_new/features/todo_section/models/resp_models/ancillary_order_list_response_model.dart';
import 'package:hmg_patient_app_new/features/todo_section/models/resp_models/ancillary_order_procedures_detail_response_model.dart';
import 'package:hmg_patient_app_new/features/todo_section/todo_section_view_model.dart';
import 'package:hmg_patient_app_new/generated/locale_keys.g.dart';
import 'package:hmg_patient_app_new/presentation/todo_section/ancillary_order_payment_page.dart';
import 'package:hmg_patient_app_new/presentation/todo_section/widgets/ancillary_orders_list.dart';
import 'package:hmg_patient_app_new/theme/colors.dart';
@ -130,7 +132,6 @@ class _AncillaryOrderDetailsListState extends State<AncillaryOrderDetailsList> {
if (viewModel.patientAncillaryOrderProceduresList.isNotEmpty) {
orderData = viewModel.patientAncillaryOrderProceduresList[0];
}
return Column(
children: [
Expanded(
@ -618,39 +619,102 @@ class _AncillaryOrderDetailsListState extends State<AncillaryOrderDetailsList> {
Widget _buildStickyPaymentButton(orderData) {
final isButtonEnabled = selectedProcedures.isNotEmpty;
return Column(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
SizedBox(height: 16.h),
_buildSummarySection(orderData),
SizedBox(height: 16.h),
CustomButton(
borderWidth: 0,
backgroundColor: AppColors.infoLightColor,
text: "Proceed to Payment".needTranslation,
onPressed: () {
// Navigate to payment page with selected procedures
Navigator.of(context).push(
CustomPageRoute(
page: AncillaryOrderPaymentPage(
appointmentNoVida: widget.appointmentNoVida,
orderNo: widget.orderNo,
projectID: widget.projectID,
selectedProcedures: selectedProcedures,
totalAmount: _getTotalAmount(),
appointmentDate: orderData.appointmentDate,
),
return Container(
decoration: RoundedRectangleBorder().toSmoothCornerDecoration(
color: AppColors.whiteColor,
borderRadius: 24.r,
hasShadow: true,
),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
SizedBox(height: 4.h),
Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
Expanded(child: LocaleKeys.upcomingPaymentNow.tr(context: context).toText12(fontWeight: FontWeight.w500, color: AppColors.greyTextColor)),
],
),
SizedBox(height: 18.h),
Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
SizedBox(
width: 150.h,
child: Utils.getPaymentMethods(),
),
);
},
isDisabled: !isButtonEnabled,
textColor: AppColors.whiteColor,
borderRadius: 12.r,
borderColor: Colors.transparent,
padding: EdgeInsets.symmetric(vertical: 16.h),
),
SizedBox(height: 22.h),
],
).paddingSymmetrical(24.w, 0);
Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
Utils.getPaymentAmountWithSymbol(_getTotalAmount().toStringAsFixed(2).toText24(isBold: true), AppColors.blackColor, 17, isSaudiCurrency: true),
],
),
],
),
SizedBox(height: 16.h),
CustomButton(
borderWidth: 0,
backgroundColor: AppColors.infoLightColor,
text: "Proceed to Payment".needTranslation,
onPressed: () {
// Navigate to payment page with selected procedures
Navigator.of(context).push(
CustomPageRoute(
page: AncillaryOrderPaymentPage(
appointmentNoVida: widget.appointmentNoVida,
orderNo: widget.orderNo,
projectID: widget.projectID,
selectedProcedures: selectedProcedures,
totalAmount: _getTotalAmount(),
appointmentDate: orderData.appointmentDate,
),
),
);
},
isDisabled: !isButtonEnabled,
textColor: AppColors.whiteColor,
borderRadius: 12.r,
borderColor: Colors.transparent,
padding: EdgeInsets.symmetric(vertical: 16.h),
),
SizedBox(height: 22.h),
],
).paddingOnly(left: 16.h, top: 24.h, right: 16.h, bottom: 0.h),
);
// Column(
// mainAxisAlignment: MainAxisAlignment.spaceBetween,
// children: [
// SizedBox(height: 16.h),
// _buildSummarySection(orderData),
// SizedBox(height: 16.h),
// CustomButton(
// borderWidth: 0,
// backgroundColor: AppColors.infoLightColor,
// text: "Proceed to Payment".needTranslation,
// onPressed: () {
// // Navigate to payment page with selected procedures
// Navigator.of(context).push(
// CustomPageRoute(
// page: AncillaryOrderPaymentPage(
// appointmentNoVida: widget.appointmentNoVida,
// orderNo: widget.orderNo,
// projectID: widget.projectID,
// selectedProcedures: selectedProcedures,
// totalAmount: _getTotalAmount(),
// appointmentDate: orderData.appointmentDate,
// ),
// ),
// );
// },
// isDisabled: !isButtonEnabled,
// textColor: AppColors.whiteColor,
// borderRadius: 12.r,
// borderColor: Colors.transparent,
// padding: EdgeInsets.symmetric(vertical: 16.h),
// ),
// SizedBox(height: 22.h),
// ],
// ).paddingSymmetrical(24.w, 0);
}
}

@ -68,6 +68,7 @@ class _ToDoPageState extends State<ToDoPage> {
children: [
SizedBox(height: 16.h),
"Ancillary Orders".needTranslation.toText18(isBold: true),
SizedBox(height: 24.h),
Consumer<TodoSectionViewModel>(
builder: (BuildContext context, TodoSectionViewModel todoSectionViewModel, Widget? child) {
return todoSectionViewModel.isAncillaryOrdersLoading
@ -82,8 +83,9 @@ class _ToDoPageState extends State<ToDoPage> {
orderNo: order.orderNo ?? 0,
projectID: order.projectID ?? 0,
projectName: order.projectName ?? "",
)));
log("View details for order: ${order.orderNo}");
),
),
);
},
);
},

@ -35,10 +35,10 @@ class AncillaryOrdersList extends StatelessWidget {
shrinkWrap: true,
physics: const NeverScrollableScrollPhysics(),
itemCount: orders.length,
padding: EdgeInsets.zero,
separatorBuilder: (BuildContext context, int index) => SizedBox(height: 12.h),
itemBuilder: (context, index) {
final order = orders[index];
return AnimationConfiguration.staggeredList(
position: index,
duration: const Duration(milliseconds: 500),

Loading…
Cancel
Save