Merge branch 'fatima_merge' into 'pharmacy'

Fatima merge

See merge request Cloud_Solution/diplomatic-quarter!228
merge-requests/231/head
Mohammad Aljammal 4 years ago
commit e61e02742c

@ -72,7 +72,11 @@ flutter {
dependencies {
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
implementation "com.google.firebase:firebase-messaging:20.3.0"
implementation "com.google.firebase:firebase-messaging:21.0.0"
// implementation ('com.google.firebase:firebase-inappmessaging-display:19.1.2',{
// exclude group: 'com.google.protobuf',module: 'protobuf-javalite'
// exclude group: 'com.google.protobuf',module: 'protobuf-lite'
// })
implementation 'pub.devrel:easypermissions:0.4.0'
// implementation 'com.google.firebase:firebase-inappmessaging-display:17.2.0'
implementation 'com.google.guava:guava:27.0.1-android'

@ -8,7 +8,7 @@ buildscript {
dependencies {
classpath 'com.android.tools.build:gradle:4.0.1'
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
classpath 'com.google.gms:google-services:4.3.2'
classpath 'com.google.gms:google-services:4.3.4'
}
}

@ -3,4 +3,4 @@ distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-6.1.1-all.zip
distributionUrl=https\://services.gradle.org/distributions/gradle-6.7.1-all.zip

Binary file not shown.

After

Width:  |  Height:  |  Size: 38 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 KiB

@ -0,0 +1,6 @@
<svg xmlns="http://www.w3.org/2000/svg" width="8.134" height="14.535" viewBox="0 0 8.134 14.535">
<g id="arrow_right" transform="translate(0.5 0.707)">
<path id="Path_1250" data-name="Path 1250" d="M7.5,18" transform="translate(-0.573 -11.44)" fill="none" stroke="#000" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
<path id="Path_1251" data-name="Path 1251" d="M14.427,20.621,7.5,14.061,14.427,7.5" transform="translate(-7.5 -7.5)" fill="none" stroke="#999" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 569 B

@ -0,0 +1,25 @@
<svg xmlns="http://www.w3.org/2000/svg" width="81.943" height="22.259" viewBox="0 0 81.943 22.259">
<g id="hmg_shipping_logo" transform="translate(-114.266 -194)">
<g id="Path_1368" data-name="Path 1368" transform="translate(114.266 194)" fill="#fff">
<path d="M 79.57523345947266 21.75907135009766 L 2.36798882484436 21.75907135009766 C 1.337977647781372 21.75907135009766 0.4999999105930328 20.92110443115234 0.4999999105930328 19.89109230041504 L 0.4999999105930328 2.367981910705566 C 0.4999999105930328 1.337970972061157 1.337977647781372 0.5000042319297791 2.36798882484436 0.5000042319297791 L 79.57523345947266 0.5000042319297791 C 80.60524749755859 0.5000042319297791 81.44322204589844 1.337970972061157 81.44322204589844 2.367981910705566 L 81.44322204589844 19.89109230041504 C 81.44322204589844 20.92110443115234 80.60524749755859 21.75907135009766 79.57523345947266 21.75907135009766 Z" stroke="none"/>
<path d="M 2.367988586425781 1.000003814697266 C 1.613677978515625 1.000003814697266 1 1.613681793212891 1 2.367982864379883 L 1 19.89109420776367 C 1 20.64539337158203 1.613677978515625 21.25907135009766 2.367988586425781 21.25907135009766 L 79.57523345947266 21.25907135009766 C 80.32954406738281 21.25907135009766 80.94322204589844 20.64539337158203 80.94322204589844 19.89109420776367 L 80.94322204589844 2.367982864379883 C 80.94322204589844 1.613681793212891 80.32954406738281 1.000003814697266 79.57523345947266 1.000003814697266 L 2.367988586425781 1.000003814697266 M 2.367988586425781 3.814697265625e-06 L 79.57523345947266 3.814697265625e-06 C 80.88303375244141 3.814697265625e-06 81.94322204589844 1.060182571411133 81.94322204589844 2.367982864379883 L 81.94322204589844 19.89109420776367 C 81.94322204589844 21.19889259338379 80.88303375244141 22.25907135009766 79.57523345947266 22.25907135009766 L 2.367988586425781 22.25907135009766 C 1.0601806640625 22.25907135009766 0 21.19889259338379 0 19.89109420776367 L 0 2.367982864379883 C 0 1.060182571411133 1.0601806640625 3.814697265625e-06 2.367988586425781 3.814697265625e-06 Z" stroke="none" fill="#ccc"/>
</g>
<g id="Group_417" data-name="Group 417" transform="translate(119.082 194)">
<g id="Group_22" data-name="Group 22">
<path id="Path_20" data-name="Path 20" d="M78.019,99.015h-.15v-.279a.674.674,0,0,1-.613.328c-.679,0-.68-.46-.68-.647v-.96h.151v.954c0,.307.107.513.533.513a.55.55,0,0,0,.609-.559v-.908h.15Zm-2.548-1.606a.828.828,0,1,1-.834.829A.8.8,0,0,1,75.471,97.409Zm0,1.514a.687.687,0,1,0-.684-.687A.656.656,0,0,0,75.471,98.923Zm-1.81-1.466h.151v.326a.622.622,0,0,1,.6-.374.318.318,0,0,1,.111.02l.007.162a.376.376,0,0,0-.161-.022.558.558,0,0,0-.557.605v.843h-.151Zm-.5.307c-.008-.043-.008-.306-.008-.306h.151v1.473c0,.356-.122.746-.81.746-.454,0-.716-.143-.765-.526l.15-.012c.033.247.192.4.616.4.561,0,.659-.319.659-.6v-.282a.807.807,0,1,1-.676-1.246A.709.709,0,0,1,73.162,97.764Zm-1.341.425a.6.6,0,0,0,.669.669.613.613,0,0,0,.662-.673.666.666,0,0,0-1.331,0ZM70.548,96.85H70.7v2.166h-.149Zm-1.78,1.1c.05-.406.246-.544.69-.544.426,0,.679.106.679.461v.862c0,.118,0,.172.088.172a.375.375,0,0,0,.126-.023l.012.137a.457.457,0,0,1-.17.027.152.152,0,0,1-.165-.1.4.4,0,0,1-.021-.109c0-.031,0-.065,0-.1a.773.773,0,0,1-.691.329,1.079,1.079,0,0,1-.147-.008.643.643,0,0,1-.2-.052.418.418,0,0,1-.26-.419c0-.325.263-.434.56-.453l.51-.036c.149-.012.214-.028.214-.208,0-.2-.1-.339-.533-.339-.381,0-.5.123-.534.395Zm1.219.215a.44.44,0,0,1-.229.069l-.495.036c-.244.019-.41.09-.41.312,0,.3.287.337.466.337.292,0,.667-.138.667-.495v-.26Zm-1.639-.207a.573.573,0,0,0-.611-.411.687.687,0,0,0,0,1.373.6.6,0,0,0,.63-.457l.152-.008a.733.733,0,0,1-.782.606.828.828,0,1,1,0-1.655.693.693,0,0,1,.76.542Zm-1.877-.5h.15v1.558h-.15Zm-.5.795a.633.633,0,0,0-.656-.7.688.688,0,1,0,.656.7Zm-.019.463a.677.677,0,0,1-.642.35.828.828,0,0,1,0-1.655.717.717,0,0,1,.639.348l0-.905H66.1v2.166h-.151v-.3Zm-1.76-.578a.624.624,0,0,0-.66-.587.638.638,0,0,0-.658.587Zm-1.319.14a.635.635,0,0,0,.687.647.587.587,0,0,0,.612-.432l.152-.007a.742.742,0,0,1-.78.58.773.773,0,0,1-.823-.839.82.82,0,1,1,1.639.042ZM60,97.456h.15v.239a.667.667,0,0,1,.559-.286.517.517,0,0,1,.561.342.585.585,0,0,1,.562-.342c.422,0,.617.2.617.554v1.053H62.3V98.008a.42.42,0,0,0-.463-.459.473.473,0,0,0-.535.51v.957h-.15V97.981c0-.264-.133-.432-.464-.432a.5.5,0,0,0-.535.539v.926H60Zm18.376,0h.151v.3a.675.675,0,0,1,.642-.35.829.829,0,0,1,0,1.656.712.712,0,0,1-.638-.348l-.006.907h-.151V97.456Zm.134.765a.632.632,0,0,0,.656.7.688.688,0,1,0-.656-.7ZM66.438,97a.108.108,0,1,1,.108.114A.112.112,0,0,1,66.438,97Z" transform="translate(-53.017 -82.139)" fill="#5f6765"/>
<path id="Path_21" data-name="Path 21" d="M243.577,99.414a.109.109,0,1,1,.108.114A.112.112,0,0,1,243.577,99.414Zm-.3,0a.108.108,0,1,1,.216,0,.111.111,0,0,1-.107.114A.113.113,0,0,1,243.281,99.414Zm16.2,0a.111.111,0,0,1,.107-.114.114.114,0,0,1,0,.228A.109.109,0,0,1,259.481,99.411Zm-8.593-2.472a.107.107,0,1,1,.108.114A.109.109,0,0,1,250.889,96.939Zm-.3,0a.108.108,0,1,1,.109.114A.11.11,0,0,1,250.592,96.939Zm-8.979,0a.108.108,0,1,1,.108.114A.112.112,0,0,1,241.613,96.944Zm-.3,0a.109.109,0,1,1,.108.114A.112.112,0,0,1,241.317,96.944Zm23.346-.135h.151v2.165h-.151Zm-15.746.02h.15v2.166h-.15Zm-.609,1.513V96.825h.151v1.522c0,.187-.006.647-.684.647h-2.435a.635.635,0,0,1-.6-.261c-.079.156-.253.29-.619.29s-.538-.133-.617-.29a.633.633,0,0,1-.6.261h-.452c-.173,0-.2-.132-.194-.313a.81.81,0,0,1-.7.341.828.828,0,1,1,.838-.812l0,.462c0,.118,0,.182.088.182h.424c.428,0,.531-.206.531-.513v-.925h.15v.954c0,.307.115.512.54.512s.531-.2.531-.512v-.954h.15v.949c0,.294.113.49.532.49h.477v-2.03h.15v.892a.674.674,0,0,1,.613-.328c.679,0,.679.46.679.648v.819h.519C248.206,98.855,248.308,98.649,248.308,98.341Zm-7.416-.13a.676.676,0,1,0,.659-.7A.662.662,0,0,0,240.892,98.211Zm6.215-.17c0-.308-.107-.513-.531-.513a.551.551,0,0,0-.611.559v.768h1.142Zm4.568.156v.475c0,.119,0,.182.088.182h.866V97.99c0-.189.006-.647.685-.647a1.267,1.267,0,0,1,.249.023l-.078.129a1.081,1.081,0,0,0-.165-.013c-.425,0-.54.206-.54.513v.858h1.131v.14h-2.181a.154.154,0,0,1-.163-.093.637.637,0,0,1-.03-.208.844.844,0,0,1-.7.331.827.827,0,1,1,.837-.825Zm-1.5.013a.676.676,0,1,0,.66-.7A.666.666,0,0,0,250.175,98.21Zm12.871.191c.016.275.133.454.528.454.415,0,.527-.208.527-.513V96.79h.15v1.557c0,.186-.006.644-.678.647a.653.653,0,0,1-.584-.235.846.846,0,0,1-1.557,0,.658.658,0,0,1-.588.236h-1.8a.652.652,0,0,1-.587-.237.847.847,0,0,1-1.558,0,.652.652,0,0,1-.585.234H255.8c-.026.325-.186.642-.805.642-.455,0-.715-.142-.765-.525l.149-.013c.033.244.191.4.616.4.492,0,.62-.253.653-.5h-.62a.782.782,0,0,1-.844-.822.81.81,0,0,1,1.62.012v.669h.517c.376,0,.5-.155.524-.4,0-.047.007-.087.01-.12a.789.789,0,0,1,.827-.717.8.8,0,0,1,.832.8c.015.261.138.433.53.433H260.2v-.866c0-.307-.1-.512-.53-.512a.494.494,0,0,0-.443.168l-.131-.093a.68.68,0,0,1,.569-.214c.679,0,.686.46.686.647v.871h.5c.4,0,.507-.176.528-.443a.835.835,0,0,1,1.666-.033Zm-7.39-.237a.6.6,0,0,0-.665-.645.612.612,0,0,0-.655.647.644.644,0,0,0,.712.687h.608Zm1.344.312a.683.683,0,0,0,1.366-.029c0-.021,0-.04,0-.057a.684.684,0,0,0-1.359-.036A.6.6,0,0,0,257,98.475Zm5.9-.021c0-.022,0-.037,0-.052a.683.683,0,0,0-1.364.027.683.683,0,1,0,1.366.026Zm-18.251.96a.108.108,0,1,1,.108.114A.112.112,0,0,1,244.645,99.414Z" transform="translate(-212.721 -82.086)" fill="#5f6765"/>
<path id="Path_22" data-name="Path 22" d="M10.265,8.049a.249.249,0,0,1-.25.246.253.253,0,0,1-.255-.246.245.245,0,0,1,.255-.235A.241.241,0,0,1,10.265,8.049ZM24.791,6.639V5.126a.2.2,0,0,1,.226-.186.2.2,0,0,1,.226.193V6.572c0,.6.021,1.018-.307,1.327A1.313,1.313,0,0,1,24,8.218a1.383,1.383,0,0,1-.949-.328,1.2,1.2,0,0,1-.3-.973V5.136a.2.2,0,0,1,.23-.2.206.206,0,0,1,.233.207V6.962a.828.828,0,0,0,.194.68.876.876,0,0,0,.6.2.818.818,0,0,0,.566-.2C24.811,7.43,24.791,7.184,24.791,6.639ZM2.078,8.049a.25.25,0,0,1-.251.246.254.254,0,0,1-.256-.246.246.246,0,0,1,.256-.235A.242.242,0,0,1,2.078,8.049Zm4.484,0a.25.25,0,0,1-.251.246.254.254,0,0,1-.256-.246.246.246,0,0,1,.256-.235A.242.242,0,0,1,6.563,8.049Zm.689,0A.25.25,0,0,1,7,8.294a.252.252,0,0,1-.255-.246A.245.245,0,0,1,7,7.814.242.242,0,0,1,7.252,8.049Zm5.377-2.935.094-.047a1.613,1.613,0,0,1,.421-.118,2.131,2.131,0,0,1,.287-.02,1.56,1.56,0,0,1,1.575,1.7,2.148,2.148,0,0,1-.041.425h2.706a.878.878,0,0,0,.606-.2.829.829,0,0,0,.2-.68V3.959a.233.233,0,0,1,.462-.009V6.123a1.194,1.194,0,0,1-.3.975,1.37,1.37,0,0,1-.949.327H15.137l-4.178,0a1.275,1.275,0,0,1-.846-.315,1.086,1.086,0,0,1-.08-.086,1.121,1.121,0,0,1-.081.086,1.313,1.313,0,0,1-.935.318H7.637A1.373,1.373,0,0,1,6.72,7.1c-.1-.045-.121-.017-.151.009a1.308,1.308,0,0,1-.932.319H4.294a1.356,1.356,0,0,1-.9-.328c-.094-.045-.121-.017-.15.009a1.264,1.264,0,0,1-.846.317l-1.149,0A1.375,1.375,0,0,1,.3,7.1,1.2,1.2,0,0,1,0,6.124V5.132a.207.207,0,0,1,.232-.2.2.2,0,0,1,.23.207v1.03a.826.826,0,0,0,.2.68.878.878,0,0,0,.606.2l1.132,0a.777.777,0,0,0,.492-.2A.725.725,0,0,0,3.1,6.293V5.13a.206.206,0,0,1,.23-.2.2.2,0,0,1,.23.207v1.03a.829.829,0,0,0,.194.68.837.837,0,0,0,.546.2l1.356,0a.8.8,0,0,0,.564-.2.74.74,0,0,0,.209-.59V5.131a.232.232,0,0,1,.461.009V6.172a.826.826,0,0,0,.2.68.859.859,0,0,0,.568.2H9.032a.805.805,0,0,0,.564-.2.8.8,0,0,0,.208-.66c0-.128,0-.267,0-.417V5.129a.228.228,0,0,1,.45-.008v.729c0,.545-.021.79.212,1.008a.784.784,0,0,0,.491.2h3.554a1.794,1.794,0,0,0,.057-.462,1.169,1.169,0,0,0-1.163-1.28h-.074a1.883,1.883,0,0,0-.287.03c-.168.03-.142.026-.3.064S12.518,5.211,12.629,5.114ZM24.251,3.9A.248.248,0,0,1,24,4.14a.254.254,0,0,1-.256-.243A.246.246,0,0,1,24,3.66.242.242,0,0,1,24.251,3.9ZM35.888,8.049a.248.248,0,0,1-.249.246.254.254,0,0,1-.257-.246.247.247,0,0,1,.257-.235A.241.241,0,0,1,35.888,8.049Zm.688,0a.25.25,0,0,1-.25.246.253.253,0,0,1-.256-.246.246.246,0,0,1,.256-.235A.242.242,0,0,1,36.576,8.049Zm12.506-.626.008-.377h1.838c.716-.021.9-.317.917-.832-.027-.518-.2-.864-.917-.886a2.1,2.1,0,0,0-.308.036,2.7,2.7,0,0,0-.3.064c-.165.051-.229-.2-.119-.293l.093-.045a1.614,1.614,0,0,1,.422-.119,2.174,2.174,0,0,1,.289-.019A1.146,1.146,0,0,1,52.273,6.2a1.131,1.131,0,0,1-1.267,1.223Zm-.321-.212a.25.25,0,0,1-.251.244.253.253,0,0,1-.255-.244.245.245,0,0,1,.255-.236A.242.242,0,0,1,48.76,7.211Zm-1.589-1.43c0,.6.02,1.018-.31,1.328a1.309,1.309,0,0,1-.932.318,1.374,1.374,0,0,1-.949-.327l-.142.009a1.314,1.314,0,0,1-.933.318,1.492,1.492,0,0,1-.782-.2v.2l-2.514,0a1.373,1.373,0,0,1-.947-.327c-.094-.045-.12-.017-.148.009a1.317,1.317,0,0,1-.935.318l-1.633,0a1.341,1.341,0,0,1-.868-.326h-.135A1.376,1.376,0,0,1,35,7.425l-2.223,0a1.3,1.3,0,0,1-.3.474,1.308,1.308,0,0,1-.932.319,1.38,1.38,0,0,1-.95-.328.875.875,0,0,1-.262-.469l-2.712.007a1.376,1.376,0,0,1-.949-.327,1.2,1.2,0,0,1-.3-.975V3.949a.233.233,0,0,1,.462.009V6.172a.829.829,0,0,0,.194.68.88.88,0,0,0,.606.2l2.638,0,.023-.137V6.277a1.24,1.24,0,0,1,.3-1.01,1.38,1.38,0,0,1,.95-.328,1.309,1.309,0,0,1,.932.319,1.394,1.394,0,0,1,.308,1.125v.353c0,.111,0,.216,0,.315h2.2a.877.877,0,0,0,.605-.2.711.711,0,0,0,.194-.566V5.137a.206.206,0,0,1,.23-.208.208.208,0,0,1,.233.2l0,.321,0,.674c0,.3-.007.539.2.729a.827.827,0,0,0,.51.2l1.647,0a.811.811,0,0,0,.563-.2c.23-.218.211-.463.211-1.008l-.009-.761V3.949a.233.233,0,0,1,.462.009V5.779c0,.149,0,.286,0,.414a.806.806,0,0,0,.2.658.876.876,0,0,0,.6.2h2.038V5.126a.2.2,0,0,1,.2-.184c.179.009.25.081.258.185V6.348a.667.667,0,0,0,.193.5.88.88,0,0,0,.606.2.812.812,0,0,0,.564-.2c.23-.218.209-.463.209-1.008V5.126a.228.228,0,0,1,.45.008V6.173a.826.826,0,0,0,.194.679.877.877,0,0,0,.605.2.809.809,0,0,0,.564-.2c.23-.218.209-.463.209-1.008V5.126a.205.205,0,0,1,.227-.186.2.2,0,0,1,.226.194v.646ZM32.12,7.647c.211-.2.211-.42.209-.873V6.411c0-.5-.006-.712-.209-.9a.81.81,0,0,0-.566-.2.872.872,0,0,0-.6.2.823.823,0,0,0-.194.68v.769a.824.824,0,0,0,.194.68.872.872,0,0,0,.6.2A.8.8,0,0,0,32.12,7.647ZM20.062,7.423V3.958a.233.233,0,0,1,.462-.009V7.423Z" transform="translate(0 0.206)" fill="#3d4543"/>
<path id="Path_23" data-name="Path 23" d="M12.319,55.547V54.034a.229.229,0,0,1,.452.008V55.48c0,.6.019,1.017-.307,1.326a1.315,1.315,0,0,1-.936.319,1.383,1.383,0,0,1-.949-.329,1.2,1.2,0,0,1-.3-.974V54.044a.233.233,0,0,1,.462.012V55.87a.827.827,0,0,0,.194.68.879.879,0,0,0,.605.2.81.81,0,0,0,.564-.2C12.34,56.337,12.319,56.091,12.319,55.547Zm1.236,1.514V54.044a.2.2,0,0,1,.23-.2.2.2,0,0,1,.229.185v2.662h1.421v.368H13.555Zm5.6,0V54.029a.2.2,0,0,1,.2-.185c.179.009.25.081.258.185V54.3l0,2.758h-.463Zm1.236,0,.339-2.984a.287.287,0,0,1,.317-.228.318.318,0,0,1,.3.2l.932,2.421.9-2.425a.312.312,0,0,1,.275-.2.293.293,0,0,1,.334.227l.354,2.985h-.452l-.283-2.6-.968,2.6h-.381l-.99-2.6-.26,2.6Zm9.706-.646-.008-2.239v-.135a.21.21,0,0,1,.418-.01v3.031h-.459L28.439,54.5l.009,2.562h-.42V54.072c0-.193.175-.223.285-.223.148.006.2.069.3.221Zm5.572.646V54.034a.237.237,0,0,1,.462-.009v2.669h1.421v.368Zm3.71,0v-3.04a.238.238,0,0,1,.462.009v1.164h1.569V54.03a.237.237,0,0,1,.462-.006v3.036h-.462v-1.5H39.845v1.5Zm9.363,0V54.028a.207.207,0,0,1,.23-.184.2.2,0,0,1,.23.182v3.035ZM.227,53.856h.53a2.094,2.094,0,0,1,1.574.409,1.676,1.676,0,0,1,0,2.364,2.092,2.092,0,0,1-1.578.433H0v-2.97A.208.208,0,0,1,.227,53.856Zm2.123,1.571a1.192,1.192,0,0,0-.364-.923c-.3-.279-.638-.3-1.229-.3h-.3v2.509H.884A1.507,1.507,0,0,0,2,56.384,1.3,1.3,0,0,0,2.349,55.427ZM3.5,54.081c-.006-.157.092-.226.234-.226h.527a1.462,1.462,0,0,1,1.089.256.836.836,0,0,1,.267.639.754.754,0,0,1-.211.553.92.92,0,0,1-.549.254.5.5,0,0,1,.292.13,1.437,1.437,0,0,1,.267.447l.442.928H5.374l-.395-.836c-.237-.5-.35-.539-.814-.539H3.951v1.374H3.5V54.081Zm1.661.668a.531.531,0,0,0-.15-.384.95.95,0,0,0-.7-.169H3.952v1.15h.159a1.258,1.258,0,0,0,.88-.193A.56.56,0,0,0,5.161,54.749ZM15.7,57.061l1.057-2.739.108-.257a.307.307,0,0,1,.308-.216.316.316,0,0,1,.331.216l.128.306,1.049,2.69h-.484l-.311-.839H16.472l-.312.839Zm2.057-1.192-.58-1.567L16.6,55.869Zm6.795,1.192,1.057-2.739.107-.257a.309.309,0,0,1,.31-.216.316.316,0,0,1,.331.216l.129.306,1.046,2.69h-.481l-.314-.839H25.323l-.312.839ZM26.6,55.869,26.027,54.3l-.576,1.567Zm5.631,1.192,1.057-2.739.107-.257a.308.308,0,0,1,.308-.216.314.314,0,0,1,.329.216l.129.306,1.046,2.69H34.73l-.311-.839H33.009l-.314.839Zm2.057-1.192-.58-1.567-.574,1.567Zm8.041,1.192,1.056-2.739.108-.257a.307.307,0,0,1,.308-.216.318.318,0,0,1,.332.216l.127.306,1.047,2.69H44.83l-.314-.839H43.106l-.313.839Zm2.058-1.192L43.808,54.3l-.573,1.567Zm1.43,1.192v-2.9c0-.229.058-.319.227-.319h.717a1.244,1.244,0,0,1,.917.247.8.8,0,0,1,.268.618.685.685,0,0,1-.548.7.7.7,0,0,1,.656.718.848.848,0,0,1-.256.632c-.329.308-.76.3-1.375.3H45.82Zm1.667-2.344a.483.483,0,0,0-.133-.356,1.1,1.1,0,0,0-.79-.173h-.3v1.08h.263a1.241,1.241,0,0,0,.8-.179A.458.458,0,0,0,47.487,54.717Zm.1,1.422a.48.48,0,0,0-.155-.361,1.284,1.284,0,0,0-.887-.179h-.283v1.109h.381a1.042,1.042,0,0,0,.8-.2A.53.53,0,0,0,47.589,56.139Zm2.448-2.3h.945a1.246,1.246,0,0,1,.917.247.805.805,0,0,1,.269.618.685.685,0,0,1-.549.7.7.7,0,0,1,.655.718.852.852,0,0,1-.255.632c-.331.308-.759.3-1.376.3h-.605V53.844Zm1.667.873a.492.492,0,0,0-.132-.356,1.1,1.1,0,0,0-.789-.173h-.3v1.08h.262a1.251,1.251,0,0,0,.8-.179A.459.459,0,0,0,51.7,54.717Zm.1,1.422a.476.476,0,0,0-.155-.361,1.284,1.284,0,0,0-.887-.179h-.283v1.109h.381c.4,0,.611-.029.795-.2A.526.526,0,0,0,51.808,56.139ZM7.545,54.649c0-.506.432-.861,1.052-.869a1.986,1.986,0,0,1,.736.156c.166.064.1.369-.086.31-.157-.037-.141-.037-.31-.071a1.113,1.113,0,0,0-.247-.028c-.417,0-.684.173-.684.462,0,.3.3.4.641.564.3.145.974.381.974,1.014,0,.531-.414.94-1.123.94a1.737,1.737,0,0,1-1.052-.347l.222-.3a1.544,1.544,0,0,0,.81.275c.421,0,.667-.236.667-.531,0-.353-.435-.525-.805-.695C7.9,55.335,7.545,55.122,7.545,54.649Z" transform="translate(0 -44.081)" fill="#3d4543"/>
<g id="Group_4" data-name="Group 4" transform="translate(56.036 3.902)">
<g id="Group_1" data-name="Group 1" transform="translate(0)">
<path id="Path_3" data-name="Path 3" d="M1.455,0H13.075A1.436,1.436,0,0,1,14.53,1.417v11.7a1.436,1.436,0,0,1-1.455,1.417H1.455A1.436,1.436,0,0,1,0,13.113V1.417A1.436,1.436,0,0,1,1.455,0Z" fill="#5ab145"/>
</g>
<g id="Group_2" data-name="Group 2" transform="translate(1.733 0.952)">
<path id="Path_1" data-name="Path 1" d="M880.9,357.036v3.848a.761.761,0,0,1-.774.747h-.632a1.259,1.259,0,0,0-.88.355,1.192,1.192,0,0,0-.365.857,1.228,1.228,0,0,0,1.224,1.212h.518a.917.917,0,0,1,.909.9v2.62a.519.519,0,0,1-.528.509h-3.1a.943.943,0,0,1-.94-.774v-.043a.951.951,0,0,1-.006-.1v-2.4c0-.015,0-.03-.006-.045a.964.964,0,0,0-1.908.148v2.375a.859.859,0,0,1-.873.843h-1.892a1.255,1.255,0,0,0-.786.275,6.778,6.778,0,0,0-.883.859,9.754,9.754,0,0,1,.586-1.133,16.88,16.88,0,0,1,3.642-4.031c1.056-.895,2.119-1.69,3.006-2.424q.222-.183.428-.362a14.883,14.883,0,0,0,2.946-3.668l.057-.1c.056-.1.107-.189.153-.274C880.831,357.16,880.865,357.1,880.9,357.036Z" transform="translate(-869.833 -356.554)" fill="#fff"/>
<path id="Path_2" data-name="Path 2" d="M879.561,352.31c-.116.23-.31.6-.58,1.047a14.676,14.676,0,0,1-2.815,3.447c-.219.19-.452.384-.7.583-.9.734-1.96,1.529-2.994,2.424a16.182,16.182,0,0,0-3.432,3.892l-.011.02-.005.01a4.735,4.735,0,0,0-.44,1.182V360.5a.7.7,0,0,1,.709-.685h.719a1.229,1.229,0,0,0,1.245-1.212,1.194,1.194,0,0,0-.364-.858,1.26,1.26,0,0,0-.881-.355h-.539a.874.874,0,0,1-.888-.858v-2.72a.46.46,0,0,1,.468-.452h3.222a.876.876,0,0,1,.891.861v2.3a.939.939,0,0,0,.987.92.95.95,0,0,0,.92-.942v-2.5a.646.646,0,0,1,.657-.635h2.163a1.5,1.5,0,0,0,.877-.282A3.632,3.632,0,0,0,879.561,352.31Z" transform="translate(-868.586 -352.31)" fill="#fff"/>
</g>
</g>
</g>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

@ -0,0 +1,3 @@
<svg xmlns="http://www.w3.org/2000/svg" width="48" height="48" viewBox="0 0 48 48">
<path id="user_icon" d="M24,.563a24,24,0,1,0,24,24A24,24,0,0,0,24,.563Zm0,9.29a8.516,8.516,0,1,1-8.516,8.516A8.516,8.516,0,0,1,24,9.853Zm0,33.29a18.545,18.545,0,0,1-14.177-6.6,10.79,10.79,0,0,1,9.532-5.787,2.368,2.368,0,0,1,.687.106A12.813,12.813,0,0,0,24,31.53a12.764,12.764,0,0,0,3.958-.668,2.368,2.368,0,0,1,.687-.106,10.79,10.79,0,0,1,9.532,5.787A18.545,18.545,0,0,1,24,43.143Z" transform="translate(0 -0.563)" fill="#ccc"/>
</svg>

After

Width:  |  Height:  |  Size: 522 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 38 KiB

@ -6,7 +6,6 @@ import 'package:diplomaticquarterapp/uitl/app_shared_preferences.dart';
const MAX_SMALL_SCREEN = 660;
//const BASE_URL = 'https://hmgwebservices.com/';
const BASE_URL = 'https://uat.hmgwebservices.com/';
//const BASE_PHARMACY_URL = 'http://swd-pharapp-01:7200/api/';
const BASE_PHARMACY_URL = 'https://uat.hmgwebservices.com/epharmacy/api/';
@ -374,6 +373,7 @@ const EDIT_CUSTOMER_ADDRESS = "epharmacy/api/editcustomeraddress";
const DELETE_CUSTOMER_ADDRESS = "epharmacy/api/deletecustomeraddress";
const GET_ADDRESS = "Customers/";
const GET_Cancel_ORDER = "cancelorder/";
const WRITE_REVIEW = "Content-Type" + "text/plain; charset=utf-8";
const GET_SHOPPING_CART = "epharmacy/api/shopping_cart_items/";
const GET_SHIPPING_OPTIONS = "epharmacy/api/get_shipping_option/";
const DELETE_SHOPPING_CART = "epharmacy/api/delete_shopping_cart_items/";
@ -415,6 +415,7 @@ const GET_PATIENT_ALL_PRES_ORD =
'Services/Patients.svc/REST/PatientER_GetPatientAllPresOrders';
const PATIENT_ER_INSERT_PRES_ORDER =
'Services/Patients.svc/REST/PatientER_InsertPresOrder';
const PHARMACY_MAKE_REVIEW = 'epharmacy/api/insertreviews';
//Pharmacy wishlist
const GET_WISHLIST = "shopping_cart_items/";

@ -654,10 +654,14 @@ const Map localizedValues = {
"writeReview": {"en": "Write Review", "ar": " اكتب تقييمك"},
"shareReview": {"en": "SHARE REVIEW", "ar": " اكتب تقييمك"},
"review": {"en": " reviews", "ar": " تقييمات"},
"pendingOrder": {"en": " PENDING", "ar": " معلقة"},
"deliveredOrder": {"en": " DELIVERED", "ar": " تم التوصيل"},
"processingOrder": {"en": " PROCESSING", "ar": "قيد التنفيذ"},
"cancelledOrder": {"en": " CANCELLED", "ar": "ملغي"},
"compare": {"en": " Compare", "ar": "مقارنه"},
"medicationsRefill": {"en": " Medication Refill", "ar": "اعادة تعبئة الدواء"},
"medicationsRefill": {"en": " Medication Refill", "ar": "طلب أعادة صرف"},
"myPrescription": {"en": " My Prescriptions", "ar": "وصفاتي"},
"quantity": {"en": " QTY ", "ar": "الكمية"},
"backMyAccount": {
"en": "BACK TO MY ACCOUNT ",
"ar": " الرجوع لحسابي الشخصي"
@ -672,7 +676,7 @@ const Map localizedValues = {
"ar": " تقييمك سوف يساعد الأخرين في اختيار المنتج الأفضل"
},
"shippedMethod": {"en": "SHIP BY:", "ar": " الشحن بواسطة:"},
"orderDetail": {"en": "Order Detail", "ar": " تفاصيل الطلب"},
"orderDetail": {"en": "Order Details", "ar": " تفاصيل الطلب"},
"orderSummary": {"en": "Order Summary", "ar": " تفاصيل المنتج"},
"subtotal": {"en": "Subtotal", "ar": " المجموع الفرعي"},
"shipping": {"en": "Shipping", "ar": " الشحن"},
@ -689,6 +693,8 @@ const Map localizedValues = {
"cancelOrder": {"en": "CANCEL ORDER", "ar": "الغاء الطلب "},
"confirmAddress": {"en": "CONFIRM ADDRESS ", "ar": " تأكيد العنوان "},
"confirmLocation": {"en": "CONFIRM LOCATION ", "ar": " تأكيد الموقع "},
"conditionsHMG": {"en": "Terms & Conditions ", "ar": "الشروط و الأحكام "},
"conditions": {"en": "Terms & Conditions of Lakum", "ar": "شروط و احكام لكم"},
"confirmDeleteMsg": {
"en": "Are you sure! want to delete ",
"ar": "هل انت متأكد تريد الحذف "
@ -1188,10 +1194,6 @@ const Map localizedValues = {
"ar":"التوفر"
},
"quantity":{
"en":"Quantity",
"ar":"التوفر"
},
"quantitySize":{
"en":"Quantity",
"ar":"كميه"

@ -1,6 +1,8 @@
import 'dart:convert';
import 'package:diplomaticquarterapp/core/model/pharmacies/PharmacyImageObject.dart';
List<OrderModel> orderModelFromJson(String str) => List<OrderModel>.from(json.decode(str).map((x) => OrderModel.fromJson(x)));
String orderModelToJson(List<OrderModel> data) => json.encode(List<dynamic>.from(data.map((x) => x.toJson())));
@ -855,7 +857,7 @@ class Product {
dynamic storeIds;
dynamic manufacturerIds;
List<Review> reviews;
List<Image> images;
List<PharmacyImageObject> images;
dynamic attributes;
dynamic specifications;
dynamic associatedProductIds;
@ -968,7 +970,7 @@ class Product {
storeIds: json["store_ids"],
manufacturerIds: json["manufacturer_ids"],
reviews: List<Review>.from(json["reviews"].map((x) => Review.fromJson(x))),
images: List<Image>.from(json["images"].map((x) => Image.fromJson(x))),
images: List<PharmacyImageObject>.from(json["images"].map((x) => PharmacyImageObject.fromJson(x))),
attributes: json["attributes"],
specifications: json["specifications"],
associatedProductIds: json["associated_product_ids"],
@ -1092,38 +1094,6 @@ class Product {
};
}
class Image {
Image({
this.id,
this.position,
this.src,
this.thumb,
this.attachment,
});
dynamic id;
dynamic position;
String src;
String thumb;
String attachment;
factory Image.fromJson(Map<String, dynamic> json) => Image(
id: json["id"],
position: json["position"],
src: json["src"],
thumb: json["thumb"],
attachment: json["attachment"],
);
Map<String, dynamic> toJson() => {
"id": id,
"position": position,
"src": src,
"thumb": thumb,
"attachment": attachment,
};
}
enum ProductType { SIMPLE_PRODUCT }
final productTypeValues = EnumValues({

@ -1,32 +1,53 @@
//import 'dart:html';
import 'package:diplomaticquarterapp/core/enum/viewstate.dart';
import 'package:diplomaticquarterapp/core/model/pharmacies/Addresses.dart';
import 'package:diplomaticquarterapp/core/model/pharmacies/LacumAccountInformation.dart';
import 'package:diplomaticquarterapp/core/model/pharmacies/ShoppingCartResponse.dart';
import 'package:diplomaticquarterapp/core/model/pharmacies/payment-checkout-data.dart';
import 'package:diplomaticquarterapp/core/service/parmacyModule/order-preview-service.dart';
import 'package:diplomaticquarterapp/pages/pharmacy/order/Order.dart';
import 'package:diplomaticquarterapp/pages/pharmacy/order/OrderDetails.dart';
import 'package:diplomaticquarterapp/services/pharmacy_services/cancelOrder_service.dart';
import 'package:diplomaticquarterapp/services/pharmacy_services/orderDetails_service.dart';
import 'package:diplomaticquarterapp/services/pharmacy_services/order_service.dart';
import 'package:diplomaticquarterapp/core/model/pharmacies/order_model.dart';
import 'package:diplomaticquarterapp/uitl/app_toast.dart';
import 'package:flutter/material.dart';
import '../../../locator.dart';
import '../base_view_model.dart';
class OrderModelViewModel extends BaseViewModel {
OrderService _orderService = locator<OrderService>();
List<OrderModel> get order => _orderService.orderList;
OrderDetailsService _orderDetailsService = locator<OrderDetailsService>();
List<OrderModel> get orderDetails => _orderDetailsService.orderDetails;
CancelOrderService _cancelOrderService = locator<CancelOrderService>();
List<OrderModel> get cancelOrder => _cancelOrderService.cancelOrderList;
Future getOrder(id, pageId) async {
OrderPreviewService _orderServices = locator<OrderPreviewService>();
List<Addresses> get addresses => _orderServices.addresses;
LacumAccountInformation get lacumInformation =>
_orderServices.lacumInformation;
ShoppingCartResponse cartResponse = ShoppingCartResponse();
PaymentCheckoutData paymentCheckoutData = PaymentCheckoutData();
double totalAdditionalShippingCharge = 0;
Future getOrder(customerId, pageID) async {
print("this is customer id" + customerId);
setState(ViewState.Busy);
await _orderService.getOrder(id,pageId);
await _orderService.getOrder(customerId, pageID);
if (_orderService.hasError) {
error = _orderService.error;
setState(ViewState.Error);
} else {
//order = _orderService.orderList;
print(order.length);
setState(ViewState.Idle);
}
}
@ -38,23 +59,69 @@ class OrderModelViewModel extends BaseViewModel {
error = _orderDetailsService.error;
setState(ViewState.Error);
} else {
setState(ViewState.Idle);
}
}
Future getProductReview(orderId) async {
Future getProductReview() async {
setState(ViewState.Busy);
await _orderService.getProductReview(orderId);
// await _orderService.getProductReview();
if (_orderService.hasError) {
error = _orderService.error;
setState(ViewState.Error);
} else {
//order = _orderService.orderList;
print(order.length);
setState(ViewState.Idle);
}
}
Future getCanceledOrder(order, context) async {
print("this is order id" + order);
setState(ViewState.Busy);
dynamic res;
await _cancelOrderService.getCanceledOrder(order).then((value) {
res = value['success']['SuccessEndUserMsg'];
print(value['success']['SuccessEndUserMsg']);
AppToast.showSuccessToast(message: "Request Sent Successfully");
// Navigator.pop(context);
});
if (_cancelOrderService.hasError) {
error = _cancelOrderService.error;
setState(ViewState.Error);
AppToast.showErrorToast(message: error);
} else {
setState(ViewState.Idle);
// AppToast.showSuccessToast(message: "Request Sent Successfully");
// Navigator.push(context,
// MaterialPageRoute(builder: (context) => OrderPage()));
}
return res;
}
Future makeReview(Product product, double rating, String reviewText) async {
setState(ViewState.Busy);
await _orderDetailsService.makeReview(product, rating, reviewText);
if (_orderDetailsService.hasError) {
error = _orderDetailsService.error;
setState(ViewState.Error);
AppToast.showErrorToast(message: error);
} else {
setState(ViewState.Idle);
AppToast.showSuccessToast(
message: "Your review has been Submitted successfully");
}
}
Future makeOrder() async {
setState(ViewState.Busy);
await _orderServices.makeOrder(paymentCheckoutData, cartResponse.shoppingCarts);
if (_orderServices.hasError) {
error = _orderServices.error;
setState(ViewState.Error);
} else {
setState(ViewState.Idle);
}
}
}

@ -8,6 +8,7 @@ import 'package:diplomaticquarterapp/services/pharmacy_services/review_service.d
import 'package:diplomaticquarterapp/services/pharmacy_services/wishList_service.dart';
import 'package:diplomaticquarterapp/core/viewModels/pharmacyModule/PharmacyAddressesViewModel.dart';
import 'package:diplomaticquarterapp/core/viewModels/pharmacyModule/order_model_view_model.dart';
import 'package:diplomaticquarterapp/services/pharmacy_services/cancelOrder_service.dart';
import 'package:diplomaticquarterapp/services/pharmacy_services/order_service.dart';
import 'package:diplomaticquarterapp/uitl/navigation_service.dart';
import 'package:get_it/get_it.dart';
@ -190,6 +191,7 @@ void setupLocator() {
locator.registerLazySingleton(() => OrderDetailsService());
locator.registerLazySingleton(() => CustomerAddressesService());
locator.registerLazySingleton(() => TermsConditionService());
locator.registerLazySingleton(() => CancelOrderService());
/// View Model
locator.registerFactory(() => HospitalViewModel());

@ -1,5 +1,5 @@
import 'package:diplomaticquarterapp/core/viewModels/pharmacyModule/order_model_view_model.dart';
import 'package:diplomaticquarterapp/pages/base/base_view.dart';
import 'package:diplomaticquarterapp/models/Authentication/authenticated_user.dart';
import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart';
import 'package:flutter/material.dart';
import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart';
@ -10,18 +10,26 @@ import 'package:diplomaticquarterapp/services/pharmacy_services/order_service.da
import 'package:diplomaticquarterapp/pages/pharmacy/order/OrderDetails.dart';
import 'package:diplomaticquarterapp/core/model/pharmacies/order_model.dart';
import 'package:diplomaticquarterapp/config/shared_pref_kay.dart';
import 'package:diplomaticquarterapp/pages/base/base_view.dart';
dynamic languageID;
class OrderPage extends StatefulWidget {
// orderList({this.customerId, this.pageId});
var languageID ;
String customerID;
OrderPage({@required this.customerID});
@override
_OrderPageState createState() => _OrderPageState();
}
class _OrderPageState extends State<OrderPage> with SingleTickerProviderStateMixin{
String pageID= "1";
String customerId = "";
String page_id="";
String order ="";
List <OrderModel> orderList = [] ;
List <OrderModel> deliveredOrderList = [] ;
@ -30,20 +38,25 @@ class _OrderPageState extends State<OrderPage> with SingleTickerProviderStateMix
List <OrderModel> pendingOrderList = [];
TabController _tabController;
AppSharedPreferences sharedPref = AppSharedPreferences();
// AppSharedPreferences sharedPref = AppSharedPreferences();
getLanguageID() async {
languageID = await sharedPref.getString(APP_LANGUAGE);
}
@override
void initState() {
// WidgetsBinding.instance.addPostFrameCallback((_) => getOrder());
getLanguageID();
super.initState();
_tabController = new TabController(length: 4, vsync: this,);
}
@override
Widget build(BuildContext context) {
print( "customerID" + widget.customerID);
return BaseView<OrderModelViewModel>(
onModelReady: (model) => model.getOrder(customerId, page_id),
onModelReady: (model) => model.getOrder(widget.customerID, pageID),
builder: (_,model, wi )=> AppScaffold(
appBarTitle:TranslationBase.of(context).order,
baseViewModel: model,
@ -167,7 +180,9 @@ class _OrderPageState extends State<OrderPage> with SingleTickerProviderStateMix
MaterialPageRoute(builder: (context) => OrderDetailsPage(orderModel:deliveredOrderList[index])));
},
child: SvgPicture.asset(
'assets/images/pharmacy/arrow_right.svg',
languageID == "ar"
? 'assets/images/pharmacy/arrow_left.svg'
:'assets/images/pharmacy/arrow_right.svg',
height: 20,
width: 20,),
),
@ -196,7 +211,8 @@ class _OrderPageState extends State<OrderPage> with SingleTickerProviderStateMix
color: Colors.blue[700],
borderRadius: BorderRadius.circular(30.0)
),
child: Text(
child: deliveredOrderList[index].orderStatusId == 30
? Text(
// deliveredOrderList[0].orderStatus.toString().substring(12),
TranslationBase.of(context).deliveredOrder,
style: TextStyle(
@ -204,7 +220,17 @@ class _OrderPageState extends State<OrderPage> with SingleTickerProviderStateMix
fontSize: 15.0,
fontWeight: FontWeight.bold,
),
)
: Text(
languageID == "ar"
? deliveredOrderList[index].orderStatusn.toString():
deliveredOrderList[index].orderStatus.toString(),
style: TextStyle(
color: Colors.white,
fontSize: 15.0,
fontWeight: FontWeight.bold,
),
)
),
Container(
margin: EdgeInsets.only(left: 8, right: 8, top: 1, bottom: 8),
@ -367,7 +393,9 @@ class _OrderPageState extends State<OrderPage> with SingleTickerProviderStateMix
MaterialPageRoute(builder: (context) => OrderDetailsPage(orderModel:processingOrderList[index])));
},
child: SvgPicture.asset(
'assets/images/pharmacy/arrow_right.svg',
languageID == "ar"
? 'assets/images/pharmacy/arrow_left.svg'
:'assets/images/pharmacy/arrow_right.svg',
height: 20,
width: 20,),
),
@ -396,14 +424,26 @@ class _OrderPageState extends State<OrderPage> with SingleTickerProviderStateMix
color: Colors.green,
borderRadius: BorderRadius.circular(30.0)
),
child: Text(
processingOrderList[index].orderStatus.toString().substring(12),
child: processingOrderList[index].orderStatusId == 20
? Text(
// deliveredOrderList[0].orderStatus.toString().substring(12),
TranslationBase.of(context).processingOrder,
style: TextStyle(
color: Colors.white,
fontSize: 15.0,
fontWeight: FontWeight.bold,
),
)
: Text(
languageID == "ar"
? processingOrderList[index].orderStatusn.toString():
processingOrderList[index].orderStatus.toString(),
style: TextStyle(
color: Colors.white,
fontSize: 15.0,
fontWeight: FontWeight.bold,
),
)
),
Container(
margin: EdgeInsets.only(left: 8, right: 8, top: 1, bottom: 8),
@ -744,7 +784,9 @@ class _OrderPageState extends State<OrderPage> with SingleTickerProviderStateMix
MaterialPageRoute(builder: (context) => OrderDetailsPage(orderModel:pendingOrderList[index])));
},
child: SvgPicture.asset(
'assets/images/pharmacy/arrow_right.svg',
languageID == "ar"
? 'assets/images/pharmacy/arrow_left.svg'
:'assets/images/pharmacy/arrow_right.svg',
height: 20,
width: 20,),
),
@ -773,16 +815,26 @@ class _OrderPageState extends State<OrderPage> with SingleTickerProviderStateMix
color: Colors.orange[300],
borderRadius: BorderRadius.circular(30.0)
),
child: Text(
widget.languageID == "ar"
? pendingOrderList[index].orderStatusn.toString()
: pendingOrderList[index].orderStatus.toString().substring(12),
child: pendingOrderList[index].orderStatusId == 10
? Text(
// deliveredOrderList[0].orderStatus.toString().substring(12),
TranslationBase.of(context).pendingOrder,
style: TextStyle(
color: Colors.white,
fontSize: 15.0,
fontWeight: FontWeight.bold,
),
)
: Text(
languageID == "ar"
? pendingOrderList[index].orderStatusn.toString():
pendingOrderList[index].orderStatus.toString(),
style: TextStyle(
color: Colors.white,
fontSize: 15.0,
fontWeight: FontWeight.bold,
),
)
),
Container(
margin: EdgeInsets.all(8.0),
@ -948,7 +1000,9 @@ class _OrderPageState extends State<OrderPage> with SingleTickerProviderStateMix
MaterialPageRoute(builder: (context) => OrderDetailsPage(orderModel:cancelledOrderList[index])));
},
child: SvgPicture.asset(
'assets/images/pharmacy/arrow_right.svg',
languageID == "ar"
? 'assets/images/pharmacy/arrow_left.svg'
:'assets/images/pharmacy/arrow_right.svg',
height: 20,
width: 20,),
),
@ -977,15 +1031,26 @@ class _OrderPageState extends State<OrderPage> with SingleTickerProviderStateMix
color: Colors.red[900],
borderRadius: BorderRadius.circular(30.0)
),
child: Text( widget.languageID == "ar"
? cancelledOrderList[index].orderStatusn.toString()
: cancelledOrderList[index].orderStatus.toString().substring(12),
child: cancelledOrderList[index].orderStatusId == 40
? Text(
// deliveredOrderList[0].orderStatus.toString().substring(12),
TranslationBase.of(context).cancelledOrder,
style: TextStyle(
color: Colors.white,
fontSize: 15.0,
fontWeight: FontWeight.bold,
),
)
: Text(
languageID == "ar"
? cancelledOrderList[index].orderStatusn.toString():
cancelledOrderList[index].orderStatus.toString(),
style: TextStyle(
color: Colors.white,
fontSize: 15.0,
fontWeight: FontWeight.bold,
),
)
),
Container(
margin: EdgeInsets.only(left: 8, right: 8, top: 1, bottom: 8),
@ -1073,12 +1138,7 @@ class _OrderPageState extends State<OrderPage> with SingleTickerProviderStateMix
);
}
getLanguageID() async {
var languageID = await sharedPref.getString(APP_LANGUAGE);
setState(() {
widget.languageID = languageID;
});
}
}

@ -1,57 +1,61 @@
import 'package:diplomaticquarterapp/core/viewModels/pharmacyModule/order_model_view_model.dart';
import 'package:diplomaticquarterapp/pages/base/base_view.dart';
import 'package:diplomaticquarterapp/pages/pharmacy/order/Order.dart';
import 'package:diplomaticquarterapp/widgets/data_display/text.dart';
import 'package:diplomaticquarterapp/widgets/dialogs/confirm_dialog.dart';
import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart';
import 'package:flutter/material.dart';
import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart';
import 'package:flutter/material.dart';
import 'package:flutter_svg/flutter_svg.dart';
import 'package:diplomaticquarterapp/widgets//pharmacy/product_tile.dart';
import 'package:diplomaticquarterapp/config/config.dart';
import 'package:diplomaticquarterapp/uitl/app_shared_preferences.dart';
import 'package:diplomaticquarterapp/services/pharmacy_services/orderDetails_service.dart';
import 'package:diplomaticquarterapp/core/model/pharmacies/order_model.dart';
import 'package:diplomaticquarterapp/config/shared_pref_kay.dart';
import 'package:flutter/src/widgets/image.dart' as flutterImage;
import 'package:diplomaticquarterapp/widgets/dialogs/confirm_dialog.dart';
import 'package:diplomaticquarterapp/uitl/app_toast.dart';
import 'package:provider/provider.dart';
dynamic languageID;
class OrderDetailsPage extends StatefulWidget {
var languageID ;
OrderModel orderModel;
OrderDetailsPage({
@required this.orderModel
});
OrderDetailsPage({@required this.orderModel});
@override
_OrderDetailsPageState createState() => _OrderDetailsPageState();
}
class _OrderDetailsPageState extends State<OrderDetailsPage> {
AppSharedPreferences sharedPref = AppSharedPreferences();
String customerId="";
String page_id="";
String orderId="3516";
getLanguageID() async {
languageID = await sharedPref.getString(APP_LANGUAGE);
}
// AppSharedPreferences sharedPref = AppSharedPreferences();
String orderId = "";
String customerId;
List<OrderModel> orderList = [];
List<OrderModel> cancelledOrderList = [];
// String orderId="3516";
var model;
var isCancel = false;
var isRefund = false;
var dataIsCancel;
var dataIsRefund;
@override
void initState() {
super.initState();
getLanguageID();
super.initState();
print(widget.orderModel.orderItems.length);
getCancelOrder(widget.orderModel.id);
// cancelOrderDetail(widget.orderModel.id);
// cancelOrderDetail(order)
}
@override
@ -77,16 +81,19 @@ class _OrderDetailsPageState extends State<OrderDetailsPage> {
SvgPicture.asset(
'assets/images/pharmacy/shipping_mark_icon.svg',
width: 28,
height: 28,),
Text(TranslationBase.of(context).shippingAddress,
style: TextStyle(fontSize: 13.0, fontWeight: FontWeight.bold,
height: 28,
),
Text(
TranslationBase.of(context).shippingAddress,
style: TextStyle(
fontSize: 13.0,
fontWeight: FontWeight.bold,
),
),
],
),
),
Container(
margin: EdgeInsets.only(top: 15.0, right: 10.0),
padding: EdgeInsets.only(left: 11.0, right: 11.0),
decoration: BoxDecoration(
@ -96,12 +103,11 @@ class _OrderDetailsPageState extends State<OrderDetailsPage> {
width: 5.0,
),
color: getStatusBackgroundColor(),
borderRadius: BorderRadius.circular(30.0)
),
child: Text(widget.orderModel.orderStatus.toString().substring(12),
// widget.languageID == "ar"
// ? widget.orderModel.orderStatusn.toString()
// : widget.orderModel.orderStatus.toString().substring(12) ,
borderRadius: BorderRadius.circular(30.0)),
child: Text(
languageID == "ar"
? widget.orderModel.orderStatusn.toString():
widget.orderModel.orderStatus.toString().substring(12) ,
// TranslationBase.of(context).delivered,
style: TextStyle(
color: Colors.white,
@ -117,24 +123,36 @@ class _OrderDetailsPageState extends State<OrderDetailsPage> {
child: Row(
crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[
Text(model.order[0].shippingAddress.firstName.toString().substring(10) + ' ' +model.order[0].shippingAddress.lastName.toString().substring(9),
style: TextStyle(fontSize: 15.0, fontWeight: FontWeight.bold,
),
Text(
widget.orderModel.shippingAddress.firstName
.toString()
.substring(10) +
' ' +
widget.orderModel.shippingAddress.lastName
.toString()
.substring(9),
style: TextStyle(
fontSize: 15.0,
fontWeight: FontWeight.bold,
),
]
),
]),
),
Container(
margin: EdgeInsets.fromLTRB(10.0, 5.0, 1.0, 5.0),
child: Row(
crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[
Text(model.order[0].shippingAddress.address1.toString().substring(9),
style: TextStyle(fontSize: 15.0, fontWeight: FontWeight.bold,
Text(
widget.orderModel.shippingAddress.address1
.toString()
.substring(9),
style: TextStyle(
fontSize: 10.0,
fontWeight: FontWeight.bold,
color: Colors.grey,
),
),
],
),]
),
),
Container(
@ -142,13 +160,23 @@ class _OrderDetailsPageState extends State<OrderDetailsPage> {
child: Row(
crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[
Text(model.order[0].shippingAddress.address2.toString().substring(9),
style: TextStyle(fontSize: 15.0, fontWeight: FontWeight.bold,
Text(
widget.orderModel.shippingAddress.address2
.toString()
.substring(9) +
' ' +
widget.orderModel.shippingAddress.country
.toString() +
' ' +
widget.orderModel.shippingAddress.zipPostalCode
.toString(),
style: TextStyle(
fontSize: 10.0,
fontWeight: FontWeight.bold,
color: Colors.grey,
),
),
]
),
]),
),
Container(
child: Row(
@ -157,12 +185,16 @@ class _OrderDetailsPageState extends State<OrderDetailsPage> {
margin: EdgeInsets.fromLTRB(10.0, 5.0, 8.0, 5.0),
child: SvgPicture.asset(
'assets/images/pharmacy/mobile_number_icon.svg',
height: 13,),
height: 13,
),
),
Container(
margin: EdgeInsets.only(top: 5.0, bottom: 5.0),
child: Text(model.order[0].shippingAddress.phoneNumber.toString(),
style: TextStyle(fontSize: 15.0,
child: Text(
widget.orderModel.shippingAddress.phoneNumber
.toString(),
style: TextStyle(
fontSize: 15.0,
),
),
),
@ -183,32 +215,51 @@ class _OrderDetailsPageState extends State<OrderDetailsPage> {
child: SvgPicture.asset(
'assets/images/pharmacy/shipping_truck_icon.svg',
height: 20,
width: 20,),
width: 20,
),
),
Container(
margin: EdgeInsets.all(10.0),
child:Text(TranslationBase.of(context).shippedMethod,
style: TextStyle(fontSize: 13.0, fontWeight: FontWeight.bold,
child: Text(
TranslationBase.of(context).shippedMethod,
style: TextStyle(
fontSize: 13.0,
fontWeight: FontWeight.bold,
),
),
),
Container(
child: model.order[0].shippingRateComputationMethodSystemName == "Shipping.FixedOrByWeight"
? Container(
margin: EdgeInsets.only(bottom: 10.0, top: 10.0),
child: SvgPicture.asset(
'assets/images/pharmacy/hmg_shipping_logo.svg',
height: 25,
width: 25,),
)
: Container(
margin: EdgeInsets.only(bottom: 10.0, top: 10.0),
child: SvgPicture.asset(
'assets/images/pharmacy/aramex_shipping_logo.svg',
height: 25,
width: 25,),
),
),
child: flutterImage.Image.asset(
widget.orderModel.shippingRateComputationMethodSystemName !=
"Shipping.Aramex"
? "assets/images/pharmacy_module/payment/LogoParmacyGreen.png"
: "assets/images/pharmacy_module/payment/aramex_shipping_logo.png",
fit: BoxFit.contain,
// height: 100,
width: 100,
),
),
// Container(
// child: widget.orderModel
// .shippingRateComputationMethodSystemName ==
// "Shipping.FixedOrByWeight"
// ? Container(
// margin: EdgeInsets.only(bottom: 10.0, top: 10.0),
// child: SvgPicture.asset(
// 'assets/images/pharmacy_module/payment/hmg_shipping_logo.png',
// height: 25,
// width: 25,
// ),
// )
// : Container(
// margin: EdgeInsets.only(bottom: 10.0, top: 10.0),
// child: SvgPicture.asset(
// 'assets/images/pharmacy_module/payment/aramex_shipping_logo.png',
// height: 25,
// width: 25,
// ),
// ),
// ),
],
),
Divider(
@ -220,24 +271,21 @@ class _OrderDetailsPageState extends State<OrderDetailsPage> {
),
Row(
children: <Widget>[
Container(
margin: EdgeInsets.fromLTRB(10.0, 10.0, 1.0, 10.0),
child: SvgPicture.asset(
'assets/images/pharmacy/credit_card_icon.svg',
height: 20,
width: 20,),
),
Container(
margin: EdgeInsets.all(10.0),
child: SvgPicture.asset(
'assets/images/pharmacy/credit_card_icon.svg',
height: 20,
width: 20,),
width: 20,
),
),
Container(
margin: EdgeInsets.only(bottom: 10.0, top: 10.0),
child:Text(model.order[0].paymentName.toString().substring(12),
style: TextStyle(fontSize: 13.0, fontWeight: FontWeight.bold,
child: Text(
widget.orderModel.paymentName.toString().substring(12),
style: TextStyle(
fontSize: 13.0,
fontWeight: FontWeight.bold,
),
),
),
@ -256,8 +304,11 @@ class _OrderDetailsPageState extends State<OrderDetailsPage> {
child: Row(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Text(TranslationBase.of(context).orderDetail,
style: TextStyle(fontSize: 15.0, fontWeight: FontWeight.bold,
Text(
TranslationBase.of(context).orderDetail,
style: TextStyle(
fontSize: 15.0,
fontWeight: FontWeight.bold,
),
),
],
@ -274,11 +325,18 @@ class _OrderDetailsPageState extends State<OrderDetailsPage> {
productPrice: widget.orderModel.orderItems[index].product.price.toString(),
productRate: widget.orderModel.orderItems[index].product.approvedRatingSum.toDouble(),
productReviews:widget.orderModel.orderItems[index].product.approvedTotalReviews,
totalPrice: widget.orderModel.orderItems[index].priceExclTax.toString(),
qyt: widget.orderModel.orderItems[index].quantity.toString(),),
);
}
totalPrice: "${(widget.orderModel.orderItems[index].product.price
* widget.orderModel.orderItems[index].quantity).toStringAsFixed(2)}",
qyt: widget.orderModel.orderItems[index].quantity.toString(),
imgs: widget.orderModel.orderItems[index].product.images != null &&
widget.orderModel.orderItems[index].product.images.length != 0
? widget.orderModel.orderItems[index].product.images [0].src.toString()
: null,
status: widget.orderModel.orderStatusId,
product: widget.orderModel.orderItems[index].product,
),
);
}),
Container(
padding: EdgeInsets.only(bottom: 10.0),
@ -286,8 +344,11 @@ class _OrderDetailsPageState extends State<OrderDetailsPage> {
child: Row(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Text(TranslationBase.of(context).orderSummary,
style: TextStyle(fontSize: 15.0, fontWeight: FontWeight.bold,
Text(
TranslationBase.of(context).orderSummary,
style: TextStyle(
fontSize: 15.0,
fontWeight: FontWeight.bold,
),
),
],
@ -313,13 +374,17 @@ class _OrderDetailsPageState extends State<OrderDetailsPage> {
children: <Widget>[
Container(
margin: EdgeInsets.only(right: 5.0),
child: Text(TranslationBase.of(context).sar,
style: TextStyle(fontSize: 13.0,
child: Text(
TranslationBase.of(context).sar,
style: TextStyle(
fontSize: 13.0,
),
),
),
Text(model.order[0].orderSubtotalExclTax.toString(),
style: TextStyle(fontSize: 13.0,
Text(
widget.orderModel.orderSubtotalExclTax.toString(),
style: TextStyle(
fontSize: 13.0,
),
),
],
@ -347,13 +412,17 @@ class _OrderDetailsPageState extends State<OrderDetailsPage> {
children: <Widget>[
Container(
margin: EdgeInsets.only(right: 5.0),
child: Text(TranslationBase.of(context).sar,
style: TextStyle(fontSize: 13.0,
child: Text(
TranslationBase.of(context).sar,
style: TextStyle(
fontSize: 13.0,
),
),
),
Text(model.order[0].orderShippingExclTax.toString(),
style: TextStyle(fontSize: 13.0,
Text(
widget.orderModel.orderShippingExclTax.toString(),
style: TextStyle(
fontSize: 13.0,
),
),
],
@ -381,13 +450,17 @@ class _OrderDetailsPageState extends State<OrderDetailsPage> {
children: <Widget>[
Container(
margin: EdgeInsets.only(right: 5.0),
child: Text(TranslationBase.of(context).sar,
style: TextStyle(fontSize: 13.0,
child: Text(
TranslationBase.of(context).sar,
style: TextStyle(
fontSize: 13.0,
),
),
),
Text(model.order[0].orderTax.toString(),
style: TextStyle(fontSize: 13.0,
Text(
widget.orderModel.orderTax.toString(),
style: TextStyle(
fontSize: 13.0,
),
),
],
@ -403,7 +476,8 @@ class _OrderDetailsPageState extends State<OrderDetailsPage> {
child: Text(
TranslationBase.of(context).total,
style: TextStyle(
fontSize: 15.0,fontWeight: FontWeight.bold,
fontSize: 15.0,
fontWeight: FontWeight.bold,
),
),
),
@ -413,13 +487,19 @@ class _OrderDetailsPageState extends State<OrderDetailsPage> {
children: <Widget>[
Container(
margin: EdgeInsets.only(right: 5.0),
child: Text(TranslationBase.of(context).sar,
style: TextStyle(fontSize: 15.0,fontWeight: FontWeight.bold,
child: Text(
TranslationBase.of(context).sar,
style: TextStyle(
fontSize: 15.0,
fontWeight: FontWeight.bold,
),
),
),
Text(model.order[0].orderTotal.toString(),
style: TextStyle(fontSize: 15.0, fontWeight: FontWeight.bold,
Text(
widget.orderModel.orderTotal.toString(),
style: TextStyle(
fontSize: 15.0,
fontWeight: FontWeight.bold,
),
),
],
@ -427,25 +507,24 @@ class _OrderDetailsPageState extends State<OrderDetailsPage> {
),
],
),
widget.orderModel.orderStatusId == 10 ? InkWell(
widget.orderModel.orderStatusId == 10
? InkWell(
onTap: () {
// payOnline link
model.makeOrder();
},
child: Container(
// margin: EdgeInsets.only(top: 20.0),
height: 50.0,
color: Colors.transparent,
child: Container(
padding: EdgeInsets.only(left: 150.0, right: 150.0),
padding: EdgeInsets.only(left: 130.0, right: 130.0),
decoration: BoxDecoration(
border: Border.all(
color: Colors.green,
style: BorderStyle.solid,
width: 1.0
),
width: 4.0),
color: Colors.green,
borderRadius: BorderRadius.circular(5.0)
),
borderRadius: BorderRadius.circular(5.0)),
child: Center(
child: Text(
TranslationBase.of(context).payOnline,
@ -457,13 +536,15 @@ class _OrderDetailsPageState extends State<OrderDetailsPage> {
),
),
),
) : Container(),
)
: Container(),
// getCancelOrder(canCancel, canRefund),
isCancel ? InkWell(
isCancel
? InkWell(
onTap: () {
Navigator.push(context,
MaterialPageRoute(builder: (context) => presentConfirmDialog()));
presentConfirmDialog(model,
widget.orderModel.id); //(widget.orderModel.id));
//
},
child: Container(
// padding: EdgeInsets.only(left: 13.0, right: 13.0, top: 5.0),
@ -475,12 +556,12 @@ class _OrderDetailsPageState extends State<OrderDetailsPage> {
style: TextStyle(
color: Colors.red[900],
fontWeight: FontWeight.bold,
decoration: TextDecoration.underline
),
decoration: TextDecoration.underline),
),
),
),
) : Container(),
)
: Container(),
],
),
),
@ -489,47 +570,42 @@ class _OrderDetailsPageState extends State<OrderDetailsPage> {
);
}
Color getStatusBackgroundColor() {
print(widget.orderModel.orderStatusId);
// if(orderStatus == 'delivered')
if(widget.orderModel.orderStatusId == 30 ||widget.orderModel.orderStatusId == 997
||widget.orderModel.orderStatusId == 994)
if (widget.orderModel.orderStatusId == 30 ||
widget.orderModel.orderStatusId == 997 ||
widget.orderModel.orderStatusId == 994)
return Colors.blue[700];
else if (widget.orderModel.orderStatusId == 20 ||widget.orderModel.orderStatusId == 995
||widget.orderModel.orderStatusId == 998 ||widget.orderModel.orderStatusId == 999)
else if (widget.orderModel.orderStatusId == 20 ||
widget.orderModel.orderStatusId == 995 ||
widget.orderModel.orderStatusId == 998 ||
widget.orderModel.orderStatusId == 999)
return Colors.green;
else if (widget.orderModel.orderStatusId == 10)
return Colors.orange[300];
else if (widget.orderModel.orderStatusId == 40 ||widget.orderModel.orderStatusId == 996
||widget.orderModel.orderStatusId == 200)
return Colors.red[900];
else if (widget.orderModel.orderStatusId == 40 ||
widget.orderModel.orderStatusId == 996 ||
widget.orderModel.orderStatusId == 200) return Colors.red[900];
}
getCancelOrder(dataIsCancel) {
if(widget.orderModel.canCancel && widget.orderModel.canRefund)
{
if (widget.orderModel.canCancel && widget.orderModel.canRefund) {
setState(() {
isCancel = true;
isRefund = false;
});
}
else if (widget.orderModel.canCancel ){
} else if (widget.orderModel.canCancel) {
setState(() {
isCancel = true;
isRefund = false;
});
}
else if (widget.orderModel.canRefund){
} else if (widget.orderModel.canRefund) {
setState(() {
isCancel = false;
isRefund = true;
});
}
else {
} else {
setState(() {
isCancel = false;
isRefund = false;
@ -537,39 +613,37 @@ class _OrderDetailsPageState extends State<OrderDetailsPage> {
}
}
presentConfirmDialog(){
// .getCanceledOrder
presentConfirmDialog(cancelFunction, id) {
ConfirmDialog dialog = new ConfirmDialog(
context: context,
confirmMessage: TranslationBase.of(context).confirmCancellation,
okText: TranslationBase.of(context).confirm,
cancelText: TranslationBase.of(context).cancel_nocaps,
okFunction: () => {
// cancelOrderDetail(widget.orderModel.id),
ConfirmDialog.closeAlertDialog(context)
},
okFunction: () =>
cancelFunction.getCanceledOrder(id, context).then((value) {
print(":D");
print(value);
// Navigator.pop(context);
Navigator.push(
context,
MaterialPageRoute(
builder: (context) => OrderPage(
customerID: widget.orderModel.customerId.toString())),
);
}),
cancelFunction: () => {});
dialog.showAlertDialog(context);
}
// cancelOrderDetail(order){
// if(widget.orderModel.canCancel && widget.orderModel.canRefund == false){
//// setState(() {
// cancelOrderDetail(order);
getCanceledOrder(order) {
Navigator.pop(context);
if (widget.orderModel.canCancel && widget.orderModel.canRefund == false) {
// getCanceledOrder(order);
// AppToast.showSuccessToast(message: "Request Sent Successfully");
//// });
//// return OrderPage();
// }
// else{}
// }
// Navigator.push(context,
// MaterialPageRoute(builder: (context) => OrderPage()));
getLanguageID() async {
var languageID = await sharedPref.getString(APP_LANGUAGE);
setState(() {
widget.languageID = languageID;
});
}
}
}

@ -1,102 +1,104 @@
import 'package:diplomaticquarterapp/core/viewModels/pharmacyModule/order_model_view_model.dart';
import 'package:diplomaticquarterapp/pages/base/base_view.dart';
import 'package:diplomaticquarterapp/pages/pharmacy/profile/profile.dart';
import 'package:diplomaticquarterapp/uitl/app_shared_preferences.dart';
import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart';
import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart';
import 'package:flutter/material.dart';
import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart';
import 'package:flutter_svg/flutter_svg.dart';
import 'package:diplomaticquarterapp/config/config.dart';
import 'package:diplomaticquarterapp/uitl/app_shared_preferences.dart';
import 'package:diplomaticquarterapp/services/pharmacy_services/order_service.dart';
import 'package:diplomaticquarterapp/pages/pharmacy/profile/profile.dart';
import 'package:rating_bar/rating_bar.dart';
import 'package:diplomaticquarterapp/core/model/pharmacies/order_model.dart';
import 'package:diplomaticquarterapp/widgets//pharmacy/product_tile.dart';
import 'package:flutter_svg/svg.dart';
import 'package:intl/intl.dart';
import 'package:rating_bar/rating_bar.dart';
import 'package:flutter/src/widgets/image.dart' as flutterImage;
class ProductReviewPage extends StatefulWidget {
final Product product;
ProductReviewPage(this.product);
@override
_ProductReviewPageState createState() => _ProductReviewPageState();
}
class _ProductReviewPageState extends State<ProductReviewPage> {
String orderId ="3516";
var pharmacyUser ="";
var product ="";
var CustomerId ="";
String submitTxt ="";
var doctorRating= "";
var reviewObj = {};
AppSharedPreferences sharedPref = AppSharedPreferences();
double currentRating = 0;
String reviewText = "";
TextEditingController _reviewController = new TextEditingController();
bool finishReview = false;
@override
Widget build(BuildContext context) {
double ratingValue = double.parse("${widget.product.approvedRatingSum}");
return BaseView<OrderModelViewModel>(
onModelReady: (model)=>model.getProductReview(orderId),
builder: (_, model, wi) => AppScaffold(
appBarTitle: TranslationBase.of(context).writeReview,
isShowAppBar: true,
isPharmacy: true,
body: Container(
color: Colors.white,
child: SingleChildScrollView(
child: !finishReview ? SingleChildScrollView(
child: Column(
children: <Widget>[
// Container(
// child: productTile(productName: 'Panadol Extra 500 MG', productPrice: '10.00', productRate: 3.00,
// productReviews:4, ),
// ),
Row(
mainAxisAlignment: MainAxisAlignment.spaceEvenly,
children: [
Container(
margin: EdgeInsets.only(left: 10),
child: SvgPicture.asset(
// model.order[0].orderItems[0].product.images[0].src.toString(),
'assets/images/al-habib_onlne_pharmacy_bg.png',
margin: EdgeInsets.symmetric(vertical: 8, horizontal: 16),
child: Row(
mainAxisAlignment: MainAxisAlignment.start,
children: [
widget.product.images != null
? flutterImage.Image.network(
widget.product.images[0].src,
fit: BoxFit.cover,
height: 80,
)
: flutterImage.Image.asset(
"assets/images/no_image.png",
fit: BoxFit.cover,
width: 80,
height: 80,
),
),]
),
Container(
margin: EdgeInsets.only(top :15.0, bottom: 15.0),
Expanded(
child: Container(
child: Column(
children: <Widget>[
Row(
children: <Widget>[
Text(model.order[0].orderItems[0].product.name.toString(),
style: TextStyle(fontSize: 16.0,
),
),
],
),
Row(
children: [
Container(
margin: EdgeInsets.only(left: 5),
child: Text(model.order[0].orderItems[0].product.price.toString(),
style: TextStyle(fontSize: 16.0, fontWeight: FontWeight.bold,
margin: EdgeInsets.all(5),
child: Align(
alignment: Alignment.topLeft,
child: RichText(
text: TextSpan(
text: widget.product.name,
style: TextStyle(
color: Colors.black,
fontSize: 14,
fontWeight: FontWeight.normal),
),
),
),
),
Container(
margin: EdgeInsets.only(left: 5),
child: Text(TranslationBase.of(context).sar,
style: TextStyle(fontSize: 16.0, fontWeight: FontWeight.bold,
margin: EdgeInsets.all(5),
child: Align(
alignment: Alignment.topLeft,
child: RichText(
text: TextSpan(
text:
'${widget.product.price} ${TranslationBase.of(context).sar}',
style: TextStyle(
fontWeight: FontWeight.bold,
color: Colors.black,
fontSize: 13),
),
),
),
],
),
Row(
mainAxisAlignment: MainAxisAlignment.start,
children: [
Container(
margin: EdgeInsets.all(5),
child: Align(
alignment: Alignment.topLeft,
child: RatingBar.readOnly(
initialRating: 3,
initialRating: ratingValue,
size: 15.0,
filledColor: Colors.yellow[700],
emptyColor: Colors.grey[500],
@ -107,17 +109,20 @@ class _ProductReviewPageState extends State<ProductReviewPage> {
),
),
),
Container(
child: Text(model.order[0].orderItems[0].product.approvedRatingSum.toString(),
style: TextStyle(fontSize: 14.0, fontWeight: FontWeight.bold,
),
),
SizedBox(
width: 20,
),
Container(
margin: EdgeInsets.only(left: 5),
child: Text("(" + model.order[0].orderItems[0].product.approvedTotalReviews.toString()
+ ' ' + TranslationBase.of(context).review +")",
style: TextStyle(fontSize: 12.0,
child: Align(
child: RichText(
text: TextSpan(
text:
'(${widget.product.approvedTotalReviews} reviews)',
style: TextStyle(
fontWeight: FontWeight.bold,
color: Colors.grey,
fontSize: 13),
),
),
),
),
@ -126,6 +131,9 @@ class _ProductReviewPageState extends State<ProductReviewPage> {
],
),
),
),
]),
),
Divider(
color: Colors.grey[350],
height: 20,
@ -141,8 +149,6 @@ class _ProductReviewPageState extends State<ProductReviewPage> {
mainAxisSize: MainAxisSize.max,
children: <Widget>[
RatingBar(
// initialRating:
// this.doctor.actualDoctorRate.toDouble(),
size: 40.0,
filledColor: Colors.yellow[700],
emptyColor: Colors.grey[500],
@ -150,51 +156,79 @@ class _ProductReviewPageState extends State<ProductReviewPage> {
halfFilledIcon: Icons.star_half,
filledIcon: Icons.star,
emptyIcon: Icons.star,
onRatingChanged: (rating) {
currentRating = rating;
},
),
],
),
),
Container(
padding: EdgeInsets.fromLTRB(8.0, 20.0, 8.0,20.0),
padding: EdgeInsets.symmetric(horizontal: 16, vertical: 16),
child: Column(
children: <Widget>[
TextFormField(
controller: _reviewController,
maxLines: 6,
minLines: 4,
decoration: InputDecoration(
contentPadding: const EdgeInsets.symmetric(vertical: 60.0),
border: InputBorder.none,
hintText: 'Tell us more about product!',
focusedBorder: OutlineInputBorder(
borderRadius: BorderRadius.circular(5.0),
borderSide: BorderSide(width: 1, color: Colors.grey[400]),
borderSide:
BorderSide(width: 1, color: Colors.grey[400]),
),
enabledBorder: OutlineInputBorder(
borderRadius: BorderRadius.all(Radius.circular(5.0)),
borderSide: BorderSide(color: Colors.grey[400], width: 1),
borderRadius:
BorderRadius.all(Radius.circular(5.0)),
borderSide:
BorderSide(color: Colors.grey[400], width: 1),
),
),
onChanged: (value) {
setState(() {
reviewText = value;
});
},
textAlign: TextAlign.start,
textAlignVertical: TextAlignVertical.top,
),
],
),
),
InkWell(
onTap: () {
// Navigator.push(context,
// MaterialPageRoute(builder: (context) => ));
},
onTap: reviewText != null && reviewText != ""
? () {
model
.makeReview(
widget.product, ratingValue, reviewText)
.then((value) {
setState(() {
finishReview = true;
});
});
}
: null,
child: Container(
margin: EdgeInsets.symmetric(vertical: 8, horizontal: 16),
height: 50.0,
width: 400.0,
color: Colors.transparent,
child: Container(
decoration: BoxDecoration(
border: Border.all(
color: Colors.yellow[700],
color: _reviewController.value.text != null &&
_reviewController.value.text != ""
? Colors.yellow[700]
: Color(0xFFf5d69c),
style: BorderStyle.solid,
width: 1.0
),
color: Colors.yellow[700],
borderRadius: BorderRadius.circular(5.0)
),
width: 1.0),
color: _reviewController.value.text != null &&
_reviewController.value.text != ""
? Colors.yellow[700]
: Color(0xFFf5d69c),
borderRadius: BorderRadius.circular(5.0)),
child: Center(
child: Text(
TranslationBase.of(context).shareReview,
@ -210,14 +244,12 @@ class _ProductReviewPageState extends State<ProductReviewPage> {
),
],
),
) : getReviewedProduct(),
),
),
),),
);
}
//new screen is showing after submitting the review
Widget getReviewedProduct() {
return Column(
@ -229,20 +261,26 @@ class _ProductReviewPageState extends State<ProductReviewPage> {
SvgPicture.asset(
'assets/images/pharmacy/check_icon.svg',
width: 28,
height: 28,),
height: 28,
),
Container(
margin: EdgeInsets.only(left: 10.0),
child: Text(TranslationBase.of(context).reviewSuccessful,
style: TextStyle(fontSize: 20.0, fontWeight: FontWeight.bold,
margin: EdgeInsets.symmetric(horizontal: 8),
child: Text(
TranslationBase.of(context).reviewSuccessful,
style: TextStyle(
fontSize: 20.0,
fontWeight: FontWeight.bold,
),
),
),
],
),
Container(
margin: EdgeInsets.only(top:5.0, bottom: 20.0 ),
child: Text(TranslationBase.of(context).reviewShared,
style: TextStyle(fontSize: 15.0,
margin: EdgeInsets.symmetric(horizontal: 8, vertical: 8),
child: Text(
TranslationBase.of(context).reviewShared,
style: TextStyle(
fontSize: 15.0,
),
),
),
@ -251,10 +289,11 @@ class _ProductReviewPageState extends State<ProductReviewPage> {
child: SvgPicture.asset(
'assets/images/pharmacy/success_review_icon.svg',
width: 100,
height: 100,),
height: 100,
),
),
Container(
margin: EdgeInsets.only(left: 20.0, right: 20.0),
margin: EdgeInsets.symmetric(horizontal: 16),
child: Column(
children: <Widget>[
Row(
@ -263,17 +302,15 @@ class _ProductReviewPageState extends State<ProductReviewPage> {
SvgPicture.asset(
'assets/images/pharmacy/quote_start.svg',
width: 15,
height: 15,),
],
height: 15,
),
Row(
mainAxisAlignment: MainAxisAlignment.center,
children:<Widget> [
Text(TranslationBase.of(context).reviewComment,
style: TextStyle(fontSize: 15.0,
],
),
Text(
TranslationBase.of(context).reviewComment,
style: TextStyle(
fontSize: 15.0,
),
],
),
Row(
mainAxisAlignment: MainAxisAlignment.end,
@ -281,7 +318,8 @@ class _ProductReviewPageState extends State<ProductReviewPage> {
SvgPicture.asset(
'assets/images/pharmacy/quote_end.svg',
width: 15,
height: 15,),
height: 15,
),
],
),
],
@ -299,17 +337,16 @@ class _ProductReviewPageState extends State<ProductReviewPage> {
);
},
child: Container(
height: 50.0, color: Colors.transparent,
height: 50.0,
color: Colors.transparent,
child: Container(
decoration: BoxDecoration(
border: Border.all(
color: Colors.orange,
style: BorderStyle.solid,
width: 1.0
),
width: 1.0),
color: Colors.transparent,
borderRadius: BorderRadius.circular(5.0)
),
borderRadius: BorderRadius.circular(5.0)),
child: Center(
child: Text(
TranslationBase.of(context).backMyAccount,
@ -327,23 +364,4 @@ class _ProductReviewPageState extends State<ProductReviewPage> {
);
}
// submit(){
// this.orderId.id = "0";
// this.reviewObj.position = 0;
// this.reviewObj.customerId = this.pharmacyUser.CustomerId;
// this.reviewObj.productId = this.product.id;
// this.reviewObj.storeId = 2;
// this.reviewObj.isApproved = false;
// this.reviewObj.title ='';
// this.reviewObj.reviewText = this.submitTxt;
// this.reviewObj.rating = this.doctorRating;
// this.reviewObj.replyText = null;
// this.reviewObj.helpfulYesTotal = 0;
// this.reviewObj.helpfulNoTotal = 0;
// this.reviewObj.createdOnUtc = new Date().toString();
// this.submitProductReview();
// }
submitProductReview(){
}
}

@ -1,16 +1,25 @@
import 'package:diplomaticquarterapp/config/shared_pref_kay.dart';
import 'package:diplomaticquarterapp/core/viewModels/pharmacyModule/order_model_view_model.dart';
import 'package:diplomaticquarterapp/models/Authentication/authenticated_user.dart';
import 'package:diplomaticquarterapp/pages/ContactUs/LiveChat/livechat_page.dart';
import 'package:diplomaticquarterapp/pages/ContactUs/findus/findus_page.dart';
import 'package:diplomaticquarterapp/pages/DrawerPages/family/my-family.dart';
import 'package:diplomaticquarterapp/pages/login/welcome.dart';
import 'package:diplomaticquarterapp/pages/medical/prescriptions/prescriptions_home_page.dart';
import 'package:diplomaticquarterapp/pages/pharmacies/screens/lakum-main-page.dart';
import 'package:diplomaticquarterapp/pages/pharmacies/screens/lakum-terms-conditions-page.dart';
import 'package:diplomaticquarterapp/pages/pharmacies/screens/pharmacy-terms-conditions-page.dart';
import 'package:diplomaticquarterapp/pages/pharmacies/wishlist.dart';
import 'package:diplomaticquarterapp/pages/pharmacy/order/Order.dart';
import 'package:diplomaticquarterapp/pages/pharmacy/pharmacyAddresses/PharmacyAddresses.dart';
import 'package:diplomaticquarterapp/uitl/app_toast.dart';
import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart';
import 'package:diplomaticquarterapp/widgets/avatar/large_avatar.dart';
import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart';
import 'package:flutter/material.dart';
import 'package:flutter_svg/flutter_svg.dart';
import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart';
import 'package:diplomaticquarterapp/core/viewModels/pharmacyModule/order_model_view_model.dart';
import 'package:diplomaticquarterapp/pages/base/base_view.dart';
import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart';
import 'package:diplomaticquarterapp/config/config.dart';
import 'package:diplomaticquarterapp/core/model/pharmacies/order_model.dart';
@ -18,6 +27,7 @@ import 'package:diplomaticquarterapp/uitl/app_shared_preferences.dart';
import 'package:diplomaticquarterapp/pages/pharmacies/my_reviews.dart';
import 'package:diplomaticquarterapp/pages/pharmacies/compare.dart';
dynamic languageID ;
class PharmacyProfilePage extends StatefulWidget {
@override
_ProfilePageState createState() => _ProfilePageState();
@ -25,9 +35,56 @@ class PharmacyProfilePage extends StatefulWidget {
class _ProfilePageState extends State<PharmacyProfilePage> {
AppSharedPreferences sharedPref = AppSharedPreferences();
String customerId = "";
String page_id = "";
AuthenticatedUser user;
bool isLogin = false;
String firstName;
String customerId;
String lastName, mobileNo, identificationNo;
int languageId;
_ProfilePageState({this.customerId });
getLanguageID() async {
languageID = await sharedPref.getString(APP_LANGUAGE);
}
getCustomer() async {
String custID;
custID = await sharedPref.getString(PHARMACY_CUSTOMER_ID);
setState(() {
customerId = custID;
});
print("customer Id is"+ customerId);
return customerId;
}
getUser() async {
var userData = await sharedPref.getObject(USER_PROFILE);
if (userData != null){ user = AuthenticatedUser.fromJson(userData);
setState(() {
firstName = user.firstName.toString();
print("this is user" + user.firstName.toString());
print("this is user" + user.firstNameN.toString());
});
} else{
if(userData == null){
Navigator.push(context,
MaterialPageRoute(builder: (context) =>
WelcomeLogin()),
);
}
}
// this.isLogin = user != null;
}
void initState() {
getCustomer();
getLanguageID();
super.initState();
getUser();
}
@override
Widget build(BuildContext context) {
return BaseView<OrderModelViewModel>(
@ -60,19 +117,21 @@ class _ProfilePageState extends State<PharmacyProfilePage> {
children: [
Text(
TranslationBase.of(context).welcome,
style: TextStyle(
fontSize: 14.0,
style: TextStyle(fontSize: 14.0,
fontWeight: FontWeight.bold,
color: Colors.grey),
color:Colors.grey
),
),
Text(
"Name",
// model.order[0].customer.firstName.toString(),
languageID == "ar"
? user.firstNameN.toString()+ " " + user.lastNameN.toString()
: user.firstName.toString()+ " " + user.lastName.toString(),
style: TextStyle(
fontSize: 16.0, fontWeight: FontWeight.bold),
fontSize: 14.0, fontWeight: FontWeight.bold),
),
],
),
)
],
),
@ -93,13 +152,18 @@ class _ProfilePageState extends State<PharmacyProfilePage> {
Expanded(
child: InkWell(
onTap: () {
if(customerId == null){
AppToast.showErrorToast(message: "Customer not found");
return;
}
Navigator.push(
context,
MaterialPageRoute(
builder: (context) => OrderPage()));
builder: (context) => OrderPage(customerID: customerId)));
},
child: Column(
children: <Widget>[
// Image(image: AssetImage('assets/images/pharmacy/orders_icon.svg')),
SvgPicture.asset(
'assets/images/pharmacy/orders_icon.svg',
width: 50,
@ -121,6 +185,12 @@ class _ProfilePageState extends State<PharmacyProfilePage> {
),
Expanded(
child: InkWell(
onTap: () {
Navigator.push(
context,
MaterialPageRoute(
builder: (context) => LakumMainPage()));
},
child: Column(
children: <Widget>[
SvgPicture.asset(
@ -154,8 +224,8 @@ class _ProfilePageState extends State<PharmacyProfilePage> {
'assets/images/pharmacy/wishlist_icon.svg',
width: 50,
height: 50,
),
SizedBox(
),SizedBox(
height: 5,
),
Text(
@ -176,8 +246,7 @@ class _ProfilePageState extends State<PharmacyProfilePage> {
context,
MaterialPageRoute(
builder: (context) => MyReviewsPage()));
},
child: Column(
},child: Column(
children: <Widget>[
SvgPicture.asset(
'assets/images/pharmacy/review_icon.svg',
@ -235,8 +304,7 @@ class _ProfilePageState extends State<PharmacyProfilePage> {
Navigator.push(
context,
MaterialPageRoute(
builder: (context) =>
HomePrescriptionsPage()));
builder: (context) => HomePrescriptionsPage()));
},
child: Row(
children: <Widget>[
@ -273,11 +341,8 @@ class _ProfilePageState extends State<PharmacyProfilePage> {
},
child: Row(
children: <Widget>[
SvgPicture.asset(
'assets/images/pharmacy/compare.png',
width: 28,
height: 28,
),
Image.asset('assets/images/pharmacy/compare.png',
width: 35, height: 35),
SizedBox(
width: 15,
),
@ -302,8 +367,7 @@ class _ProfilePageState extends State<PharmacyProfilePage> {
Navigator.push(
context,
MaterialPageRoute(
builder: (context) =>
HomePrescriptionsPage()));
builder: (context) => HomePrescriptionsPage()));
},
child: Row(
children: <Widget>[
@ -369,8 +433,7 @@ class _ProfilePageState extends State<PharmacyProfilePage> {
Navigator.push(
context,
MaterialPageRoute(
builder: (context) =>
PharmacyAddressesPage()));
builder: (context) => PharmacyAddressesPage()));
},
child: Row(
children: <Widget>[
@ -391,6 +454,74 @@ class _ProfilePageState extends State<PharmacyProfilePage> {
],
),
),
SizedBox(
height: 5,
),
Divider(
color: Colors.grey,
height: 20,
),
InkWell(
onTap: () {
Navigator.push(
context,
MaterialPageRoute(
builder: (context) => PharmacyTermsConditions()));
},
child: Row(
children: <Widget>[
Image.asset('assets/images/pharmacy/terms.png',
width: 25,
height: 25,
),
SizedBox(
width: 10,
),
Text(
TranslationBase.of(context).conditionsHMG,
style: TextStyle(
fontSize: 13.0,
),
),
],
),
),
SizedBox(
height: 5,
),
Divider(
color: Colors.grey,
height: 20,
),
InkWell(
onTap: () {
Navigator.push(
context,
MaterialPageRoute(
builder: (context) => LakumTermsConditions(this.identificationNo, this.firstName, this.lastName,
this.mobileNo, this.languageId)));
},
child: Row(
children: <Widget>[
Image.asset('assets/images/pharmacy/terms.png',
width: 25,
height: 25,
),
// IconButton(icon: Icon(Icons.error_outline), iconSize: 30,
// color: Colors.black,),
SizedBox(
width: 10,
),
Text(
TranslationBase.of(context).conditions,
style: TextStyle(
fontSize: 13.0,
),
),
],
),
),
],
),
),
@ -486,7 +617,9 @@ class _ProfilePageState extends State<PharmacyProfilePage> {
),
),
),
),
);
}
}
));
}}

@ -16,24 +16,29 @@ class CancelOrderService extends BaseService{
AuthenticatedUser authUser = new AuthenticatedUser();
AuthProvider authProvider = new AuthProvider();
List<OrderModel> get orderDetails => orderDetails;
List<OrderModel> _orderList = List();
List<OrderModel> get orderList => _orderList;
List<OrderModel> _cancelOrderList = List();
List<OrderModel> get cancelOrderList => _cancelOrderList;
String url ="";
Future cancelOrderDetail(order) async {
Future getCanceledOrder(order) async {
print("step 1");
hasError = false;
dynamic res;
await baseAppClient.getPharmacy(GET_Cancel_ORDER+order,
onSuccess: (dynamic response, int statusCode) {
_orderList.clear();
response['orders'].forEach((item) {
_orderList.add(OrderModel.fromJson(item));
});
res = response;
print(res);
// _cancelOrderList.clear();
// response['success'].forEach((item) {
// _cancelOrderList.add(OrderModel.fromJson(item));
// });
}, onFailure: (String error, int statusCode) {
hasError = true;
super.error = error;
});
return res;
}
}

@ -23,7 +23,7 @@ class OrderDetailsService extends BaseService{
Future getOrderDetails(orderId) async {
print("step 1");
print("step 2" + orderId);
hasError = false;
await baseAppClient.getPharmacy(GET_ORDER_DETAILS+orderId,
onSuccess: (dynamic response, int statusCode) {
@ -36,4 +36,40 @@ class OrderDetailsService extends BaseService{
super.error = error;
});
}
Future makeReview(Product product, double rating, String reviewText) async {
hasError = false;
super.error = "";
var customerId = await sharedPref.getString(PHARMACY_CUSTOMER_ID);
Map<String, dynamic> body = Map();
Map<String, dynamic> reviewBody = Map();
reviewBody["created_on_utc"] = DateTime.now().toString();
reviewBody["customer_id"] = customerId;
reviewBody["helpful_no_total"] = 0;
reviewBody["helpful_yes_total"] = 0;
reviewBody["id"] = 0;
reviewBody["is_approved"] = false;
reviewBody["position"] = 0;
reviewBody["product_id"] = product.id;
reviewBody["rating"] = rating;
reviewBody["reply_text"] = reviewText;
reviewBody["store_id"] = 2;
reviewBody["title"] = "";
body['review'] = reviewBody;
await baseAppClient.post("$PHARMACY_MAKE_REVIEW",
onSuccess: (response, statusCode) async {
/*
"success": {
"SuccessEndUserMsg": "Your request has been completed successfuly.",
"SuccessEndUserMsgN": "تمت العملية بنجاح"
}
*/
}, onFailure: (String error, int statusCode) {
hasError = true;
super.error = error;
}, body: body);
}
}

@ -18,12 +18,12 @@ class OrderService extends BaseService{
List<OrderModel> get orderList => _orderList;
String url ="";
Future getOrder(custmerId, page_id) async {
print("step 1");
Future getOrder(customerId, pageId) async {
hasError = false;
url =GET_ORDER+"customer=1,fields=id,order_total,order_status,order_statusn,order_status_id,created_on_utc&page=1&limit=200&customer_id=1367368";
// url =GET_ORDER+"customer=1,fields=id,order_total,order_status,order_statusn,order_status_id,created_on_utc&page=$page_id&limit=200&customer_id=$custmerId";
// url =GET_ORDER+"customer=1,fields=id,order_total,order_status,order_statusn,order_status_id,created_on_utc&page=1&limit=200&customer_id=1367368";
url =GET_ORDER+"customer=1,fields=id,order_total,order_status,order_statusn,order_status_id,created_on_utc&page=$pageId&limit=200&customer_id=$customerId";
print(url);
await baseAppClient.getPharmacy(url,
onSuccess: (dynamic response, int statusCode) {
_orderList.clear();

@ -0,0 +1,40 @@
import 'package:diplomaticquarterapp/config/config.dart';
import 'package:diplomaticquarterapp/config/shared_pref_kay.dart';
import 'package:diplomaticquarterapp/core/model/pharmacies/order_model.dart';
import 'package:diplomaticquarterapp/core/service/base_service.dart';
import 'package:diplomaticquarterapp/models/Authentication/authenticated_user.dart';
import 'package:diplomaticquarterapp/services/authentication/auth_provider.dart';
import 'package:diplomaticquarterapp/uitl/app_shared_preferences.dart';
import 'package:flutter/material.dart';
class writeReviewService extends BaseService{
AppSharedPreferences sharedPref = AppSharedPreferences();
AppGlobal appGlobal = new AppGlobal();
AuthenticatedUser authUser = new AuthenticatedUser();
AuthProvider authProvider = new AuthProvider();
List<OrderModel> get writeReview => writeReview;
List<OrderModel> _writeReviewList = List();
List<OrderModel> get orderList => _writeReviewList;
Future getProductReview() async {
hasError = false;
await baseAppClient.getPharmacy(WRITE_REVIEW,
onSuccess: (dynamic response, int statusCode) {
_writeReviewList.clear();
response[''].forEach((item) {
_writeReviewList.add(OrderModel.fromJson(item));
});
}, onFailure: (String error, int statusCode) {
hasError = true;
super.error = error;
});
}
}

@ -777,9 +777,15 @@ class TranslationBase {
String get noOrder => localizedValues['noOrder'][locale.languageCode];
String get review => localizedValues['review'][locale.languageCode];
String get deliveredOrder => localizedValues['deliveredOrder'][locale.languageCode];
String get pendingOrder => localizedValues['pendingOrder'][locale.languageCode];
String get processingOrder => localizedValues['processingOrder'][locale.languageCode];
String get cancelledOrder => localizedValues['cancelledOrder'][locale.languageCode];
String get compare => localizedValues['compare'][locale.languageCode];
String get medicationsRefill => localizedValues['medicationsRefill'][locale.languageCode];
String get myPrescription => localizedValues['myPrescription'][locale.languageCode];
String get quantity => localizedValues['quantity'][locale.languageCode];
String get conditionsHMG => localizedValues['conditionsHMG'][locale.languageCode];
String get conditions => localizedValues['conditions'][locale.languageCode];
// pharmacy module
@ -1077,7 +1083,6 @@ class TranslationBase {
String get specification => localizedValues['specification'][locale.languageCode];
String get details => localizedValues['details'][locale.languageCode];
String get availability => localizedValues['availability'][locale.languageCode];
String get quantity => localizedValues['quantity'][locale.languageCode];
String get quantitySize => localizedValues['quantitySize'][locale.languageCode];
String get addToCart => localizedValues['addToCart'][locale.languageCode];
String get buyNow => localizedValues['buyNow'][locale.languageCode];

@ -1,12 +1,12 @@
import 'package:diplomaticquarterapp/core/model/pharmacies/order_model.dart';
import 'package:diplomaticquarterapp/core/viewModels/pharmacyModule/product_detail_view_model.dart';
import 'package:diplomaticquarterapp/pages/pharmacies/screens/cart-order-page.dart';
import 'package:diplomaticquarterapp/pages/pharmacy/order/ProductReview.dart';
import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart';
import 'package:flutter/material.dart';
import 'package:flutter_html/style.dart';
import 'package:flutter/src/widgets/image.dart' as flutterImage;
import 'package:font_awesome_flutter/font_awesome_flutter.dart';
import 'package:rating_bar/rating_bar.dart';
import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart';
class productTile extends StatelessWidget {
final String productName;
@ -18,18 +18,26 @@ class productTile extends StatelessWidget {
final bool isOrderDetails;
final String productImage;
final bool showLine;
final String img;
final String imgs;
final int status;
final Product product;
final dynamic productID;
productTile(
{this.productName,
this.productPrice,
this.productRate,
this.productReviews,
this.qyt,
this.totalPrice,
this.productReviews,
this.isOrderDetails = false,
this.productImage,
this.showLine = true,
this.img,
this.imgs,
this.status,
this.product,
this.productID,
});
@ -45,14 +53,25 @@ class productTile extends StatelessWidget {
children: [
Row(
children: [
Container(
this.imgs != null && this.imgs.length > 0
? Container(
margin: EdgeInsets.only(left: 10),
child: Image.network(
productImage.trim(),
imgs,
// productImage.trim(),
fit: BoxFit.cover,
width: 80,
height: 80,
),
)
: Container(
margin: EdgeInsets.only(left: 10),
child: Image.asset(
"assets/images/no_image.png",
width: 80,
height: 80,
)
// fit: BoxFit.cover,
),
Expanded(
flex: 5,
@ -155,7 +174,9 @@ class productTile extends StatelessWidget {
margin: EdgeInsets.only(bottom: 5.0),
child: RichText(
text: TextSpan(
text: 'QYT: $qyt',
text: TranslationBase.of(context).quantity +
"" +
'$qyt',
style: TextStyle(
fontWeight: FontWeight.bold,
color: Colors.grey,
@ -200,8 +221,9 @@ class productTile extends StatelessWidget {
)
: Container(),
// this.isOrderDetails == true && model.order[0].orderStatusId == 30?
this.isOrderDetails == true
? Expanded(
if (status == 30 && this.isOrderDetails == true)
Expanded(
child: Row(
mainAxisAlignment: MainAxisAlignment.spaceAround,
children: [
@ -241,11 +263,12 @@ class productTile extends StatelessWidget {
Navigator.push(
context,
MaterialPageRoute(
builder: (context) => ProductReviewPage()));
builder: (context) =>
ProductReviewPage(product)));
},
child: Container(
padding: EdgeInsets.only(
left: 13.0, right: 13.0, top: 5.0),
padding:
EdgeInsets.only(left: 13.0, right: 13.0, top: 5.0),
height: 30.0,
decoration: BoxDecoration(
border: Border.all(
@ -265,15 +288,14 @@ class productTile extends StatelessWidget {
),
],
),
)
: Container(),
),
/*Container(
),*/
],
),
);
}
}
deleteFromWishlistFunction(itemID) async {
ProductDetailViewModel x = new ProductDetailViewModel();
await x.deletWishlistData(itemID);
@ -285,3 +307,6 @@ addToCartFunction(quantity, itemID) async {
await x.addToCartData(quantity, itemID);
}
}

@ -45,7 +45,7 @@ dependencies:
url_launcher: ^5.5.0
shared_preferences: ^0.5.8
flutter_flexible_toast: ^0.1.4
firebase_messaging: ^7.0.0
firebase_messaging: ^7.0.3
android_intent: ^0.3.7+7
# Progress bar
progress_hud_v2: ^2.0.0

Loading…
Cancel
Save