Consultation OK

This commit is contained in:
Brice Zele 2021-11-29 12:30:04 +01:00
parent a52ff41487
commit 26c6de01a6
15 changed files with 3827 additions and 2209 deletions

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,619 @@
{
"acrobat-reader": 60095,
"applemusic": 60096,
"atlassian": 60097,
"aws": 60098,
"baidu": 60099,
"bing": 60100,
"bower": 60101,
"dailymotion": 60102,
"delicious": 60103,
"deviantart": 60104,
"disqus": 60105,
"flipboard": 60106,
"graphql": 60107,
"hexo": 60108,
"hipchat": 60109,
"icq": 60110,
"invision": 60111,
"jekyll": 60112,
"jira": 60113,
"json": 60114,
"livestream": 60115,
"messenger": 60116,
"meteor": 60117,
"onenote": 60118,
"mongodb": 60119,
"netflix": 60120,
"nginx": 60121,
"odnoklassniki": 60122,
"onedrive": 60123,
"origin": 60124,
"pingdom": 60125,
"rails": 60126,
"raspberry-pi": 60127,
"redis": 60128,
"redux": 60129,
"saucelabs": 60130,
"scorp": 60131,
"sentry": 60132,
"shazam": 60133,
"shopify": 60134,
"sinaweibo": 60135,
"slides": 60136,
"sublimetext": 60137,
"swift": 60138,
"ted": 60139,
"telegram": 60140,
"tesla": 60141,
"tinder": 60142,
"treehouse": 60143,
"twoo": 60144,
"udacity": 60145,
"webstorm": 60146,
"wix": 60147,
"yandex-international": 60148,
"yandex": 60149,
"ember": 60087,
"cpanel": 60088,
"viber": 60089,
"deskpro": 60090,
"discord": 60091,
"discourse": 60092,
"adobe": 60059,
"algolia": 60060,
"atom": 60061,
"babel": 60062,
"coffeescript": 60063,
"electronjs": 60064,
"mysql": 60065,
"oracle": 60066,
"php": 60067,
"sourcetree": 60068,
"ubuntu": 60069,
"unity": 60070,
"unreal-engine": 60071,
"webpack": 60072,
"angelist": 60026,
"app-store": 60027,
"digg": 60030,
"dockers": 60031,
"envato": 60032,
"gitlab": 60033,
"google-drive": 60034,
"google-play": 60035,
"grunt": 60036,
"gulp": 60037,
"hacker-news": 60038,
"imdb": 60039,
"jenkins": 60040,
"joomla": 60041,
"kickstarter": 60042,
"laravel": 60043,
"less": 60044,
"line": 60045,
"npm": 60046,
"periscope": 60047,
"product-hunt": 60048,
"quora": 60049,
"skyatlas": 60050,
"stylus": 60051,
"travis": 60052,
"trello": 60053,
"uber": 60054,
"vine": 60055,
"visual-studio": 60056,
"vk": 60057,
"vuejs": 60058,
"microsoft": 60025,
"blogger": 60028,
"500px": 59658,
"amazon": 59659,
"ampproject": 59660,
"android": 59661,
"angularjs": 59662,
"apple": 59663,
"behance": 59664,
"bitbucket": 59665,
"bluetooth-b": 59666,
"cloudflare": 59667,
"codepen": 59668,
"css3": 59669,
"dribbble": 59670,
"dropbox": 59671,
"facebook": 59672,
"flickr": 59673,
"foursquare": 59674,
"git": 59675,
"github": 59676,
"google-plus": 59677,
"google": 59678,
"hangout": 59679,
"houzz": 59680,
"html5": 59681,
"instagram": 59682,
"java": 59683,
"jquery": 59684,
"jsfiddle": 59685,
"linkedin": 59686,
"linux": 59687,
"magento": 59688,
"maxcdn": 59689,
"medium": 59690,
"meetup": 59691,
"nodejs": 59692,
"opencart": 59693,
"pinterest": 59694,
"playstation": 59695,
"python": 59696,
"react": 59697,
"reddit": 59698,
"ruby": 59699,
"sass": 59700,
"skype": 59701,
"slack": 59702,
"snapchat": 59703,
"soundcloud": 59704,
"spotify": 59705,
"stack-overflow": 59706,
"steam": 59707,
"stumbleupon": 59708,
"svn": 59709,
"swarm": 59710,
"tripadvisor": 59711,
"tumblr": 59712,
"twitch": 59713,
"twitter": 59714,
"vimeo": 59715,
"wetransfer": 59716,
"whatsapp": 59717,
"wifi-logo": 59718,
"wikipedia": 59719,
"windows": 59720,
"wordpress": 59721,
"xbox": 59722,
"yahoo": 59723,
"yelp": 59724,
"youtube-play": 59725,
"cocoapods": 60200,
"composer": 60201,
"yarn": 60202,
"language": 59943,
"toggle-off": 59948,
"toggle-on": 60029,
"anchor": 60094,
"archive": 60150,
"at": 60151,
"ban": 60152,
"battery-half": 60153,
"battery-full": 60154,
"battery-empty": 60155,
"battery-quarter": 60156,
"battery-three-quarters": 60157,
"bell-alt": 60158,
"bell": 60159,
"bookmark-alt": 60160,
"bookmark": 60161,
"bug": 60162,
"calculator": 60163,
"calendar": 60164,
"crosshairs": 60165,
"desktop": 60166,
"download": 60167,
"film": 60168,
"history": 60169,
"hourglass-end": 60170,
"hourglass-half": 60171,
"hourglass-start": 60172,
"hourglass": 60173,
"info": 60174,
"key": 60175,
"keyboard": 60176,
"laptop": 60177,
"lightbulb": 60178,
"magnet": 60179,
"map-marker-alt": 60180,
"map-marker": 60181,
"map": 60182,
"mobile-alt": 60183,
"mobile": 60184,
"paw": 60185,
"phone": 60186,
"power": 60187,
"qrcode": 60188,
"question": 60189,
"search": 60190,
"sitemap": 60191,
"star-half": 60192,
"stopwatch": 60193,
"tablet-alt": 60194,
"tablet": 60195,
"ticket": 60196,
"tv": 60197,
"upload": 60198,
"user-secret": 60199,
"camera": 59798,
"clock": 59799,
"close-a": 59800,
"code": 59801,
"comment": 59802,
"commenting": 59803,
"comments": 59804,
"crop": 59805,
"cursor": 59806,
"database": 59807,
"date": 59808,
"earth": 59809,
"email": 59810,
"eye": 59811,
"female": 59812,
"favorite": 59813,
"filter": 59814,
"fire": 59815,
"flag": 59816,
"flash": 59817,
"home": 59818,
"link": 59819,
"locked": 59820,
"male": 59821,
"minus-a": 59822,
"more-v-a": 59823,
"more-v": 59824,
"move-h-a": 59825,
"move-h": 59826,
"nav-icon-a": 59827,
"nav-icon-grid-a": 59828,
"nav-icon-grid": 59829,
"nav-icon-list-a": 59830,
"nav-icon-list": 59831,
"nav-icon": 59832,
"navigate": 59833,
"paper-plane": 59834,
"person": 59835,
"persons": 59836,
"picture": 59837,
"plus-a": 59838,
"print": 59839,
"quote-a-left": 59840,
"quote-a-right": 59841,
"quote-left": 59842,
"quote-right": 59843,
"reply": 59844,
"rss": 59845,
"scissors": 59846,
"share-a": 59847,
"share": 59848,
"trash": 59849,
"unlocked": 59850,
"usb": 59851,
"wifi": 59852,
"world-o": 59853,
"world": 59854,
"zoom": 59855,
"adjust": 60015,
"recycle": 60016,
"pinboard": 60093,
"zoom-minus": 60082,
"zoom-plus": 60083,
"check": 60084,
"asterisk": 60085,
"hashtag": 60086,
"checkbox-active": 59778,
"checkbox-passive": 59779,
"radio-btn-active": 59780,
"radio-btn-passive": 59781,
"shopping-bag-1": 60011,
"shopping-bag": 60012,
"shopping-barcode": 60017,
"shopping-basket-add": 60018,
"shopping-basket-remove": 60019,
"shopping-basket": 60020,
"shopping-package": 60021,
"shopping-pos-machine": 60022,
"shopping-sale": 60023,
"shopping-store": 60024,
"angle-dobule-down": 59748,
"angle-dobule-left": 59749,
"angle-dobule-right": 59750,
"angle-dobule-up": 59751,
"angle-down": 59752,
"angle-left": 59753,
"angle-right": 59754,
"angle-up": 59755,
"arrow-down-l": 59756,
"arrow-down": 59757,
"arrow-expand": 59758,
"arrow-h": 59759,
"arrow-left-l": 59760,
"arrow-left": 59761,
"arrow-move": 59762,
"arrow-resize": 59763,
"arrow-return-left": 59764,
"arrow-return-right": 59765,
"arrow-right-l": 59766,
"arrow-right": 59767,
"arrow-swap": 59768,
"arrow-up-l": 59769,
"arrow-up": 59770,
"arrow-v": 59771,
"caret-down": 59772,
"caret-left": 59773,
"caret-right": 59774,
"caret-up": 59775,
"fi": 59776,
"fontisto": 59777,
"backward": 59866,
"eject": 59867,
"equalizer": 59868,
"forward": 59869,
"headphone": 59870,
"heart": 59871,
"mic": 59872,
"music-note": 59873,
"pause": 59874,
"play-list": 59875,
"play": 59876,
"player-settings": 59877,
"podcast": 59878,
"random": 59879,
"record": 59880,
"star": 59881,
"step-backwrad": 59882,
"step-forward": 59883,
"stop": 59884,
"volume-down": 59885,
"volume-mute": 59886,
"volume-off": 59887,
"volume-up": 59888,
"airplay": 60008,
"bold": 59918,
"broken-link": 59919,
"center-align": 59920,
"close": 59921,
"columns": 59922,
"copy": 59923,
"eraser": 59924,
"export": 59925,
"file-1": 59926,
"file-2": 59927,
"folder": 59928,
"font": 59929,
"import": 59930,
"indent": 59931,
"italic": 59932,
"justify": 59933,
"left-align": 59934,
"link2": 59935,
"list-1": 59936,
"list-2": 59937,
"outdent": 59938,
"paperclip": 59939,
"paragraph": 59940,
"paste": 59941,
"preview": 59942,
"print2": 59943,
"redo": 59944,
"right-align": 59945,
"save-1": 59946,
"save": 59947,
"scissors2": 59948,
"strikethrough": 59949,
"subscript": 59950,
"superscript": 59951,
"table-1": 59952,
"table-2": 59953,
"text-height": 59954,
"text-width": 59955,
"underline": 59956,
"undo": 59957,
"cloud-down": 59958,
"cloud-refresh": 59959,
"cloud-up": 59960,
"cloudy-gusts": 59961,
"cloudy": 59962,
"compass": 59963,
"day-cloudy": 59964,
"day-haze": 59965,
"day-lightning": 59966,
"day-rain": 59967,
"day-snow": 59968,
"day-sunny": 59969,
"fog": 59970,
"horizon-alt": 59971,
"horizon": 59972,
"lightning": 59973,
"lightnings": 59974,
"night-alt-cloudy": 59975,
"night-alt-lightning": 59976,
"night-alt-rain": 59977,
"night-alt-snow": 59978,
"night-clear": 59979,
"rain": 59980,
"rainbow": 59981,
"rains": 59982,
"snow": 59983,
"snows": 59984,
"thermometer": 59985,
"umbrella": 59986,
"wind": 59987,
"confused": 59988,
"dizzy": 59989,
"expressionless": 59990,
"frowning": 59991,
"heart-eyes": 59992,
"laughing": 59993,
"mad": 59994,
"nervous": 59995,
"neutral": 59996,
"open-mouth": 59997,
"rage": 59998,
"slightly-smile": 59999,
"smiley": 60000,
"smiling": 60001,
"stuck-out-tongue": 60002,
"sunglasses": 60003,
"surprised": 60004,
"tongue": 60005,
"wink": 60006,
"zipper-mouth": 60007,
"aids": 60233,
"ambulance": 60234,
"bandage": 60235,
"bed-patient": 60236,
"blood-drop": 60237,
"blood-test": 60238,
"blood": 60239,
"dna": 60240,
"doctor": 60241,
"drug-pack": 60242,
"first-aid-alt": 60243,
"heart-alt": 60244,
"heartbeat-alt": 60245,
"heartbeat": 60246,
"helicopter-ambulance": 60247,
"hospital": 60248,
"injection-syringe": 60249,
"laboratory": 60250,
"nurse": 60251,
"nursing-home": 60252,
"paralysis-disability": 60253,
"pills": 60254,
"prescription": 60255,
"pulse": 60256,
"stethoscope": 60257,
"surgical-knife": 60258,
"tablets": 60259,
"test-bottle": 60260,
"test-tube-alt": 60261,
"test-tube": 60262,
"thermometer-alt": 60263,
"american-express": 59856,
"credit-card": 59857,
"google-wallet": 59858,
"iyzigo": 59859,
"mastercard": 59860,
"paypal-p": 59861,
"paypal": 59862,
"payu": 59863,
"troy": 59864,
"visa": 59865,
"dinners-club": 60010,
"apple-pay": 60009,
"discover": 60013,
"jcb": 60014,
"dislike": 59796,
"like": 59797,
"audio-description": 59648,
"blind": 59649,
"braille": 59650,
"deaf": 59651,
"fa-american-sign-language-interpreting": 59652,
"low-vision": 59654,
"tty": 59655,
"universal-acces": 59656,
"wheelchair": 59657,
"area-chart": 59732,
"bar-chart": 59733,
"line-chart": 59734,
"pie-chart-1": 59735,
"pie-chart-2": 59736,
"chrome": 59726,
"edge": 59727,
"firefox": 59728,
"internet-explorer": 59729,
"opera": 59730,
"safari": 59731,
"bitcoin": 59737,
"dollar": 59738,
"euro": 59739,
"gbp": 59740,
"gg": 59741,
"ils": 59742,
"inr": 59743,
"krw": 59744,
"rouble": 59745,
"tl": 59746,
"yen": 59747,
"genderless": 59782,
"intersex": 59783,
"mars-double": 59784,
"mars-stroke-h": 59785,
"mars-stroke-v": 59786,
"mars-stroke": 59787,
"mars": 59788,
"mercury": 59789,
"neuter": 59790,
"transgender-alt": 59791,
"transgender": 59792,
"venus-double": 59793,
"venus-mars": 59794,
"venus": 59795,
"automobile": 59899,
"bicycle": 59900,
"bus": 59901,
"car": 59902,
"helicopter": 59903,
"metro": 59904,
"motorcycle": 59905,
"plane": 59906,
"rocket": 59907,
"ship": 59908,
"subway": 59909,
"taxi": 59910,
"train": 59911,
"truck": 59912,
"yacht": 59913,
"beach-slipper": 60203,
"bus-ticket": 60204,
"cocktail": 60205,
"compass-alt": 60206,
"direction-sign": 60207,
"do-not-disturb": 60208,
"flotation-ring": 60209,
"holiday-village": 60210,
"hot-air-balloon": 60211,
"hotel-alt": 60212,
"hotel": 60213,
"island": 60214,
"money-symbol": 60215,
"parasol": 60216,
"passport-alt": 60217,
"passport": 60218,
"photograph": 60219,
"plane-ticket": 60220,
"room": 60221,
"sait-boat": 60222,
"snorkel": 60223,
"suitcase-alt": 60224,
"suitcase": 60225,
"sun": 60226,
"sunglasses-alt": 60227,
"swimsuit": 60228,
"tent": 60229,
"ticket-alt": 60230,
"train-ticket": 60231,
"wallet": 60232,
"circle-o-notch": 59889,
"propeller-1": 59890,
"propeller-2": 59891,
"propeller-3": 59892,
"propeller-4": 59893,
"spinner-cog": 59894,
"spinner-fidget": 59895,
"spinner-refresh": 59896,
"spinner-rotate-forward": 59897,
"spinner": 59898,
"snowflake": 60081,
"snowflake-1": 60073,
"snowflake-2": 60074,
"snowflake-3": 60075,
"snowflake-4": 60076,
"snowflake-5": 60077,
"snowflake-6": 60078,
"snowflake-7": 60079,
"snowflake-8": 60080,
"curve": 59915,
"ellipse": 59916,
"rectangle": 59917,
"shield": 59914
}

View File

@ -606,7 +606,7 @@
"PRIME_AMOUNT": "Montant de la prime", "PRIME_AMOUNT": "Montant de la prime",
"AYANT_DROIT": "Ayant(s) droit(s)", "AYANT_DROIT": "Ayant(s) droit(s)",
"SELECT_SUBSCRIPTION": "Sélectionner une souscription", "SELECT_SUBSCRIPTION": "Sélectionner une souscription",
"SAISIR_FEUILLE_SOIN": "Saisir une feuille de soin", "SAISIR_FEUILLE_SOIN": "Créer une consultation",
"MODIFIER_FEUILLE_SOIN": "Modifier une feuille de soin", "MODIFIER_FEUILLE_SOIN": "Modifier une feuille de soin",
"FACTURER_FEUILLES_SOINS": "Facturer les feuilles de soins", "FACTURER_FEUILLES_SOINS": "Facturer les feuilles de soins",
"FICHE_DE_SOIN": "Fiche de soins", "FICHE_DE_SOIN": "Fiche de soins",
@ -637,5 +637,30 @@
"CONDITION_PRISE_CHARGE": "Condition de prise en charge", "CONDITION_PRISE_CHARGE": "Condition de prise en charge",
"AFFECTION_COURANTE": "Affection courante", "AFFECTION_COURANTE": "Affection courante",
"AFFECTION_LONGUE": "Affection longue durée", "AFFECTION_LONGUE": "Affection longue durée",
"EXONERE": "Exonéré" "EXONERE": "Exonéré",
"DATE_ACCIDENT": "Date accident",
"DATE_DEBUT_GROSSESSE": "Date début de grossesse",
"DATE_FIN_GROSSESSE": "Date fin de grossesse",
"SCAN": "Scanner",
"BRING_YOUR_CAMERA_CLOSER_TO_SCAN_QR_CODE": "Approchez votre caméra du QR Code afin de le scanner",
"CLOSE": "Fermer",
"EMPTY_LIST": "Liste vide",
"NO_ASSURE_MATCH_SEARCH": "Aucun assuré ne correspond à la recherche",
"LIST_ASSURE": "Liste des assurés",
"ASSURE_NON_EN_REGLE": "Assuré non en règle",
"CLASSE_PRESTATAIRE": "Classe de prestataire",
"FRAIS_DEPLACEMENT": "Frais de déplacement",
"AJOUTER_MEDICAMENT": "Ajouter médicament/appareil",
"AJOUTER_EXAMEN": "Ajouter examen",
"NAME": "Nom",
"POSOLOGIE": "Posologie",
"QUANTITE": "Quantité",
"LISTE_MEDICAMENT": "Liste des médicaments",
"PRESTATION": "Prestation",
"MEDICAMENT": "Médicament",
"EXAMEN": "Examen",
"PRESTATION_SUCCESSFULLY_ADD": "Prestation ajouté avec succès",
"EXAMENS_SUCCESSFULLY_ADD": "Examens ajouté avec succès",
"PRESCRIPTIONS_SUCCESSFULLY_ADD": "Prescription ajouté avec succès",
"YOU_MUST_ADD_AT_LEAST_ONE_PRESTATION": "Vous devez ajouter au moins une prestation"
} }

View File

@ -7,8 +7,12 @@
*/ */
import InsuranceActions from './insurance.type'; import InsuranceActions from './insurance.type';
import { import {
createConsultationUrl,
getDrugAndDevicesUrl,
getInsuranceListUrl, getInsuranceListUrl,
getInsurancePrimeAmountUrl, getInsurancePrimeAmountUrl,
getNetworkActsUrl,
getProviderClassUrl,
getUserByIdQRCodeUrl, getUserByIdQRCodeUrl,
getUserByNameOrNumberUrl, getUserByNameOrNumberUrl,
subscribeInsuranceUrl, subscribeInsuranceUrl,
@ -281,3 +285,150 @@ export const fetchGetUserByNameOrNumber = (network_id, id) => {
onError: fetchGetUserByNameOrNumberError, onError: fetchGetUserByNameOrNumberError,
}); });
}; };
/************************************************************/
export const fetchGetDrugAppareilPending = () => ({
type: InsuranceActions.GET_DRUG_APPAREIL_PENDING,
});
export const fetchGetDrugAppareilReset = () => ({
type: InsuranceActions.GET_DRUG_APPAREIL_RESET,
});
export const fetchGetDrugAppareilSuccess = (authkey: any) => ({
type: InsuranceActions.GET_DRUG_APPAREIL_SUCCESS,
payload: authkey,
});
export const fetchGetDrugAppareilError = (error: any) => ({
type: InsuranceActions.GET_DRUG_APPAREIL_ERROR,
payload: error,
});
export const fetchGetDrugAppareil = (network_id, name) => {
return ApiAction({
url: `${getDrugAndDevicesUrl}?network_id=${network_id}&name=${name}`,
method: 'GET',
onLoading: fetchGetDrugAppareilPending,
onSuccess: fetchGetDrugAppareilSuccess,
onError: fetchGetDrugAppareilError,
});
};
/************************************************************/
export const fetchAddDrugPending = () => ({
type: InsuranceActions.ADD_DRUG_PENDING,
});
export const fetchAddDrugReset = () => ({
type: InsuranceActions.ADD_DRUG_RESET,
});
export const fetchAddDrugSuccess = (authkey: any) => ({
type: InsuranceActions.ADD_DRUG_SUCCESS,
payload: authkey,
});
export const fetchAddDrugError = (error: any) => ({
type: InsuranceActions.ADD_DRUG_ERROR,
payload: error,
});
export const fetchAddDrug = (data) => {
return ApiAction({
url: `${getDrugAndDevicesUrl}`,
method: 'POST',
data,
onLoading: fetchAddDrugPending,
onSuccess: fetchAddDrugSuccess,
onError: fetchAddDrugError,
});
};
/************************************************************/
export const fetchGetProviderClassPending = () => ({
type: InsuranceActions.GET_PROVIDER_CLASS_PENDING,
});
export const fetchGetProviderClassReset = () => ({
type: InsuranceActions.GET_PROVIDER_CLASS_RESET,
});
export const fetchGetProviderClassSuccess = (authkey: any) => ({
type: InsuranceActions.GET_PROVIDER_CLASS_SUCCESS,
payload: authkey,
});
export const fetchGetProviderClassError = (error: any) => ({
type: InsuranceActions.GET_PROVIDER_CLASS_ERROR,
payload: error,
});
export const fetchGetProviderClass = (network_id) => {
return ApiAction({
url: `${getProviderClassUrl}?network_id=${network_id}`,
method: 'GET',
onLoading: fetchGetProviderClassPending,
onSuccess: fetchGetProviderClassSuccess,
onError: fetchGetProviderClassError,
});
};
/************************************************************/
export const fetchGetNetworkActsPending = () => ({
type: InsuranceActions.GET_NETWORK_ACT_PENDING,
});
export const fetchGetNetworkActsReset = () => ({
type: InsuranceActions.GET_NETWORK_ACT_RESET,
});
export const fetchGetNetworkActsSuccess = (authkey: any) => ({
type: InsuranceActions.GET_NETWORK_ACT_SUCCESS,
payload: authkey,
});
export const fetchGetNetworkActsError = (error: any) => ({
type: InsuranceActions.GET_NETWORK_ACT_ERROR,
payload: error,
});
export const fetchGetNetworkActs = (network_id, code = '') => {
return ApiAction({
url: `${getNetworkActsUrl}?network_id=${network_id}&code=${code}`,
method: 'GET',
onLoading: fetchGetNetworkActsPending,
onSuccess: fetchGetNetworkActsSuccess,
onError: fetchGetNetworkActsError,
});
};
/************************************************************/
export const fetchCreateConsultationPending = () => ({
type: InsuranceActions.CREATE_CONSULTATION_PENDING,
});
export const fetchCreateConsultationReset = () => ({
type: InsuranceActions.CREATE_CONSULTATION_RESET,
});
export const fetchCreateConsultationSuccess = (authkey: any) => ({
type: InsuranceActions.CREATE_CONSULTATION_SUCCESS,
payload: authkey,
});
export const fetchCreateConsultationError = (error: any) => ({
type: InsuranceActions.CREATE_CONSULTATION_ERROR,
payload: error,
});
export const fetchCreateConsultation = (data) => {
return ApiAction({
url: `${createConsultationUrl}`,
method: 'POST',
data,
onLoading: fetchCreateConsultationPending,
onSuccess: fetchCreateConsultationSuccess,
onError: fetchCreateConsultationError,
});
};

View File

@ -287,3 +287,153 @@ export const getUserByNameOrNumberReducer = (state = INITIAL_STATE, action: Insu
} }
}; };
export const getDrugAppareilReducer = (state = INITIAL_STATE, action: InsuranceActions) => {
switch (action.type) {
case InsuranceActions.GET_DRUG_APPAREIL_PENDING:
return {
...state,
loading: true
}
case InsuranceActions.GET_DRUG_APPAREIL_SUCCESS:
return {
loading: false,
result: action.payload,
error: null
}
case InsuranceActions.GET_DRUG_APPAREIL_ERROR:
return {
...state,
loading: false,
result: null,
error: action.payload
}
case InsuranceActions.GET_DRUG_APPAREIL_RESET:
return INITIAL_STATE;
default:
return state
}
};
export const addDrugReducer = (state = INITIAL_STATE, action: InsuranceActions) => {
switch (action.type) {
case InsuranceActions.ADD_DRUG_PENDING:
return {
...state,
loading: true
}
case InsuranceActions.ADD_DRUG_SUCCESS:
return {
loading: false,
result: action.payload,
error: null
}
case InsuranceActions.ADD_DRUG_ERROR:
return {
...state,
loading: false,
result: null,
error: action.payload
}
case InsuranceActions.ADD_DRUG_RESET:
return INITIAL_STATE;
default:
return state
}
};
export const getProviderClassReducer = (state = INITIAL_STATE, action: InsuranceActions) => {
switch (action.type) {
case InsuranceActions.GET_PROVIDER_CLASS_PENDING:
return {
...state,
loading: true
}
case InsuranceActions.GET_PROVIDER_CLASS_SUCCESS:
return {
loading: false,
result: action.payload,
error: null
}
case InsuranceActions.GET_PROVIDER_CLASS_ERROR:
return {
...state,
loading: false,
result: null,
error: action.payload
}
case InsuranceActions.GET_PROVIDER_CLASS_RESET:
return INITIAL_STATE;
default:
return state
}
};
export const getNetworkActReducer = (state = INITIAL_STATE, action: InsuranceActions) => {
switch (action.type) {
case InsuranceActions.GET_NETWORK_ACT_PENDING:
return {
...state,
loading: true
}
case InsuranceActions.GET_NETWORK_ACT_SUCCESS:
return {
loading: false,
result: action.payload,
error: null
}
case InsuranceActions.GET_NETWORK_ACT_ERROR:
return {
...state,
loading: false,
result: null,
error: action.payload
}
case InsuranceActions.GET_NETWORK_ACT_RESET:
return INITIAL_STATE;
default:
return state
}
};
export const createConsultationReducer = (state = INITIAL_STATE, action: InsuranceActions) => {
switch (action.type) {
case InsuranceActions.CREATE_CONSULTATION_PENDING:
return {
...state,
loading: true
}
case InsuranceActions.CREATE_CONSULTATION_SUCCESS:
return {
loading: false,
result: action.payload,
error: null
}
case InsuranceActions.CREATE_CONSULTATION_ERROR:
return {
...state,
loading: false,
result: null,
error: action.payload
}
case InsuranceActions.CREATE_CONSULTATION_RESET:
return INITIAL_STATE;
default:
return state
}
};

View File

@ -16,6 +16,11 @@ const selectActivatePaySubscriptionReducer = (state) => state.activatePaySubscri
const selectAddBeneficiaryToSubscriptionReducer = (state) => state.addBeneficiaryToSubscription; const selectAddBeneficiaryToSubscriptionReducer = (state) => state.addBeneficiaryToSubscription;
const selectGetUserByIdQRCodeReducer = (state) => state.getUserByIdQRCodeReducer; const selectGetUserByIdQRCodeReducer = (state) => state.getUserByIdQRCodeReducer;
const selectGetUserByNameOrNumberReducer = (state) => state.getUserByNameOrNumberReducer; const selectGetUserByNameOrNumberReducer = (state) => state.getUserByNameOrNumberReducer;
const selectGetDrugAppareilReducer = (state) => state.getDrugAppareilReducer;
const selectAddDrugReducer = (state) => state.addDrugReducer;
const selectGetProviderClassReducer = (state) => state.getProviderClassReducer;
const selectGetNetworkActReducer = (state) => state.getNetworkActReducer;
const selectCreateConsultationReducer = (state) => state.createConsultationReducer;
export const selectInsuranceList = createSelector( export const selectInsuranceList = createSelector(
[selectInsuranceListReducer], [selectInsuranceListReducer],
@ -60,3 +65,23 @@ export const selectGetUserByNameOrNumber = createSelector(
[selectGetUserByNameOrNumberReducer], [selectGetUserByNameOrNumberReducer],
(getUserByNameOrNumber) => getUserByNameOrNumber (getUserByNameOrNumber) => getUserByNameOrNumber
); );
export const selectGetDrugAppareil = createSelector(
[selectGetDrugAppareilReducer],
(getDrugAppareil) => getDrugAppareil
);
export const selectAddDrug = createSelector(
[selectAddDrugReducer],
(addDrugReducer) => addDrugReducer
);
export const selectGetProviderClass = createSelector(
[selectGetProviderClassReducer],
(getProviderClassReducer) => getProviderClassReducer
);
export const selectCreateConsultation = createSelector(
[selectCreateConsultationReducer],
(createConsultationReducer) => createConsultationReducer
);
export const selectGetNetworkAct = createSelector(
[selectGetNetworkActReducer],
(getNetworkActReducer) => getNetworkActReducer
);

View File

@ -51,6 +51,29 @@ const InsuranceActions = {
GET_USER_BY_NAME_OR_NUMBER_ERROR: 'GET_USER_BY_NAME_OR_NUMBER_ERROR', GET_USER_BY_NAME_OR_NUMBER_ERROR: 'GET_USER_BY_NAME_OR_NUMBER_ERROR',
GET_USER_BY_NAME_OR_NUMBER_RESET: 'GET_USER_BY_NAME_OR_NUMBER_RESET', GET_USER_BY_NAME_OR_NUMBER_RESET: 'GET_USER_BY_NAME_OR_NUMBER_RESET',
GET_DRUG_APPAREIL_PENDING: 'GET_DRUG_APPAREIL_PENDING',
GET_DRUG_APPAREIL_SUCCESS: 'GET_DRUG_APPAREIL_SUCCESS',
GET_DRUG_APPAREIL_ERROR: 'GET_DRUG_APPAREIL_ERROR',
GET_DRUG_APPAREIL_RESET: 'GET_DRUG_APPAREIL_RESET',
ADD_DRUG_PENDING: 'ADD_DRUG_PENDING',
ADD_DRUG_SUCCESS: 'ADD_DRUG_SUCCESS',
ADD_DRUG_ERROR: 'ADD_DRUG_ERROR',
ADD_DRUG_RESET: 'ADD_DRUG_RESET',
GET_PROVIDER_CLASS_PENDING: 'GET_PROVIDER_CLASS_PENDING',
GET_PROVIDER_CLASS_SUCCESS: 'GET_PROVIDER_CLASS_SUCCESS',
GET_PROVIDER_CLASS_ERROR: 'GET_PROVIDER_CLASS_ERROR',
GET_PROVIDER_CLASS_RESET: 'GET_PROVIDER_CLASS_RESET',
GET_NETWORK_ACT_PENDING: 'GET_NETWORK_ACT_PENDING',
GET_NETWORK_ACT_SUCCESS: 'GET_NETWORK_ACT_SUCCESS',
GET_NETWORK_ACT_ERROR: 'GET_NETWORK_ACT_ERROR',
GET_NETWORK_ACT_RESET: 'GET_NETWORK_ACT_RESET',
CREATE_CONSULTATION_PENDING: 'CREATE_CONSULTATION_PENDING',
CREATE_CONSULTATION_SUCCESS: 'CREATE_CONSULTATION_SUCCESS',
CREATE_CONSULTATION_ERROR: 'CREATE_CONSULTATION_ERROR',
CREATE_CONSULTATION_RESET: 'CREATE_CONSULTATION_RESET',
} }
export default InsuranceActions; export default InsuranceActions;

View File

@ -53,7 +53,12 @@ import ReattachAccountReducer from "./ReattachAccountReducer";
import { import {
activatePaySubscriptionReducer, activatePaySubscriptionReducer,
addBeneficiaryToSubscriptionReducer, addBeneficiaryToSubscriptionReducer,
addDrugReducer,
createConsultationReducer,
getDrugAppareilReducer,
getInsurancePrimeAmountReducer, getInsurancePrimeAmountReducer,
getNetworkActReducer,
getProviderClassReducer,
getSubscriptionListReducer, getSubscriptionListReducer,
getUserByIdQRCodeReducer, getUserByIdQRCodeReducer,
getUserByNameOrNumberReducer, getUserByNameOrNumberReducer,
@ -156,6 +161,11 @@ const rootReducer = persistCombineReducers(persistConfig, {
addBeneficiaryToSubscription: addBeneficiaryToSubscriptionReducer, addBeneficiaryToSubscription: addBeneficiaryToSubscriptionReducer,
getUserByIdQRCodeReducer: getUserByIdQRCodeReducer, getUserByIdQRCodeReducer: getUserByIdQRCodeReducer,
getUserByNameOrNumberReducer: getUserByNameOrNumberReducer, getUserByNameOrNumberReducer: getUserByNameOrNumberReducer,
getDrugAppareilReducer: getDrugAppareilReducer,
addDrugReducer: addDrugReducer,
getProviderClassReducer: getProviderClassReducer,
getNetworkActReducer: getNetworkActReducer,
createConsultationReducer: createConsultationReducer
}); });
export default rootReducer; export default rootReducer;

View File

@ -1,18 +1,19 @@
import React,{Component} from 'react'; import React, {Component} from 'react';
import {StyleSheet,View,Text,Image,StatusBar,ScrollView,Alert} from 'react-native'; import {Alert, Image, ScrollView, StatusBar, StyleSheet, Text, View} from 'react-native';
import { Fumi } from 'react-native-textinput-effects'; import {Fumi} from 'react-native-textinput-effects';
import * as Animatable from 'react-native-animatable'
let theme=require('./../../utils/theme.json');
import I18n from 'react-native-i18n' import I18n from 'react-native-i18n'
import FontAwesomeIcon from 'react-native-vector-icons/FontAwesome5' import FontAwesomeIcon from 'react-native-vector-icons/FontAwesome5'
import {readUser,AssignAgentGeo} from './../../webservice/AuthApi';
import {responsiveHeight, responsiveWidth} from 'react-native-responsive-dimensions';
import MapView,{Marker} from 'react-native-maps';
import Icon from 'react-native-vector-icons/FontAwesome5' import Icon from 'react-native-vector-icons/FontAwesome5'
import {AssignAgentGeo, getCodeInformation} from './../../webservice/AuthApi';
import {responsiveHeight, responsiveWidth} from 'react-native-responsive-dimensions';
import Button from 'apsl-react-native-button' import Button from 'apsl-react-native-button'
import {IlinkEmitter} from "../../utils/events"; import {IlinkEmitter} from "../../utils/events";
import {Dropdown} from "react-native-material-dropdown";
require('./../../utils/Translations') require('./../../utils/Translations')
const route=require('./../../route.json') const route = require('./../../route.json');
let theme = require('./../../utils/theme.json');
/*var Fabric = require('react-native-fabric'); /*var Fabric = require('react-native-fabric');
var { Crashlytics } = Fabric; var { Crashlytics } = Fabric;
@ -26,55 +27,61 @@ export default class AddNetwork extends Component {
statusBarColor: theme.primaryDarkAdvanced, statusBarColor: theme.primaryDarkAdvanced,
statusBarTextColorScheme: 'light', statusBarTextColorScheme: 'light',
}; };
static navigationOptions = ({navigation})=>{ static navigationOptions = ({navigation}) => {
return { return {
drawerLabel:navigation.getParam("name",I18n.t('ADD_NETWORK')), drawerLabel: navigation.getParam("name", I18n.t('ADD_NETWORK')),
drawerIcon: ({ tintColor }) => ( drawerIcon: ({tintColor}) => (
<Icon <Icon
name={'user'} name={'user'}
size={24} size={24}
/> />
), ),
}}; }
};
updateLangue(){ updateLangue() {
this.props.navigation.setParams({name:I18n.t('CHANGE_INFORMATION')}) this.props.navigation.setParams({name: I18n.t('CHANGE_INFORMATION')})
this.forceUpdate() this.forceUpdate()
} }
static options(passProps){
static options(passProps) {
return { return {
topBar:{ topBar: {
title:{ title: {
text:"", text: "",
}, },
backButton: { backButton: {
visible: true, visible: true,
color:"white" color: "white"
}, },
buttonsRight:[], buttonsRight: [],
buttonColor:"white", buttonColor: "white",
background:{ background: {
color:theme.primaryDark color: theme.primaryDark
} }
} }
} }
} }
constructor(props) { constructor(props) {
super(props) super(props)
this.state=this.generateState() this.state = this.generateState()
IlinkEmitter.on("langueChange", this.updateLangue.bind(this)) IlinkEmitter.on("langueChange", this.updateLangue.bind(this))
} }
generateState() { generateState() {
return { return {
isLoading:false, isLoading: false,
notifi:false notifi: false,
isNanoSante: false,
provider_classes: [],
provider_class: null
} }
} }
render(){ render() {
return ( return (
<View style={style.container}> <View style={style.container}>
<StatusBar <StatusBar
@ -82,19 +89,19 @@ export default class AddNetwork extends Component {
barStyle="light-content" barStyle="light-content"
translucent={true} translucent={true}
/> />
<ScrollView style={{flex:1 ,paddingTop:30}}> <ScrollView style={{flex: 1, paddingTop: 30}}>
<View style={style.appContainer}> <View style={style.appContainer}>
<Image source={require('./../../datas/img/icon3.png')} <Image source={require('./../../datas/img/icon3.png')}
style={{width:responsiveWidth(90),resizeMode:"contain"}}/> style={{width: responsiveWidth(90), resizeMode: "contain"}}/>
</View> </View>
<Text style={style.title}>{I18n.t('ADD_NETWORK')}</Text> <Text style={style.title}>{I18n.t('ADD_NETWORK')}</Text>
<Fumi iconClass={FontAwesomeIcon} <Fumi iconClass={FontAwesomeIcon}
iconName={"code"} iconName={"code"}
labelStyle={style.labelInput} labelStyle={style.labelInput}
inputStyle={{color:'black'}} inputStyle={{color: 'black'}}
value={this.state.validateCode} value={this.state.validateCode}
label={I18n.t('SPONSOR_CODE')} label={I18n.t('SPONSOR_CODE')}
onChangeText={(text)=>this.setState({validateCode:text})} onChangeText={(text) => this.setState({validateCode: text})}
style={style.input}/> style={style.input}/>
<Fumi <Fumi
@ -107,13 +114,46 @@ export default class AddNetwork extends Component {
keyboardType={"phone-pad"} keyboardType={"phone-pad"}
autoCorrect={false} autoCorrect={false}
value={this.state.enterPhone} value={this.state.enterPhone}
inputStyle={{color:'black'}} inputStyle={{color: 'black'}}
ref={(com)=>{this.numberRef=com}} ref={(com) => {
onChangeText={(text)=>this.setState({enterPhone:text})} this.numberRef = com
}}
onChangeText={(text) => this.setState({enterPhone: text})}
labelStyle={style.labelInput} labelStyle={style.labelInput}
/> />
{this.state.provider_classes.length >= 1 && <View
style={{
width: responsiveWidth(90),
marginTop: 20,
alignSelf: 'center',
borderRadius: 10,
paddingLeft: 20,
paddingRight: 20,
backgroundColor: 'white'
}}>
<Dropdown
label={I18n.t('CLASSE_PRESTATAIRE')}
data={this.state.provider_classes}
useNativeDriver={true}
value={this.state.provider_class === null ? "" :
this.state.provider_class}
onChangeText={(value, index, data) => {
console.log("Value", value);
this.setState({provider_class: value});
}}
valueExtractor={(value) => {
return value
}}
labelExtractor={(value) => {
return value.name
}}
/>
</View>}
<Button style={style.btnStyle} textStyle={style.btnTextStyle} <Button style={style.btnStyle} textStyle={style.btnTextStyle}
isLoading={this.state.isLoading} onPress={()=>this.validateNetwork()} isLoading={this.state.isLoading} onPress={() => this.validateNetwork()}
>{I18n.t('VALIDATE')}</Button> >{I18n.t('VALIDATE')}</Button>
</ScrollView> </ScrollView>
@ -121,24 +161,48 @@ export default class AddNetwork extends Component {
} }
async validateNetwork() { async validateNetwork() {
const {validateCode,isLoading,enterPhone}=this.state
if(validateCode!==undefined && validateCode!==null && enterPhone!==null){ const {validateCode, isLoading, enterPhone} = this.state;
this.setState({isLoading:true})
let res=await AssignAgentGeo(validateCode,enterPhone) if (validateCode !== undefined && validateCode !== null && enterPhone !== null) {
this.setState({isLoading:false}) this.setState({isLoading: true});
if(res){ let codeInformation = await getCodeInformation(validateCode);
if(res['success']!==undefined){
if (codeInformation) {
console.log("codeInformation", codeInformation);
if (codeInformation.hasOwnProperty('provider_classes')) {
if (this.state.provider_classes.length >= 1)
await this.submitNetwork();
this.setState({provider_classes: codeInformation.provider_classes});
this.setState({isLoading: false});
} else {
await this.submitNetwork();
}
}
}
}
async submitNetwork() {
const {validateCode, isLoading, enterPhone} = this.state;
let res = await AssignAgentGeo(validateCode, enterPhone, this.state.provider_class !== null ? this.state.provider_class.id : null);
this.setState({isLoading: false});
if (res) {
if (res['success'] !== undefined) {
Alert.alert( Alert.alert(
I18n.t('ADD_SUCCES'), I18n.t('ADD_SUCCES'),
I18n.t('ADD_SUCCESS_TEXT') I18n.t('ADD_SUCCESS_TEXT')
, [ , [
{text: 'OK', onPress: () =>{ {
this.setState({validateCode:"",enterPhone:""}) text: 'OK', onPress: () => {
}} this.setState({validateCode: "", enterPhone: "", provider_classes: [], provider_class: null})
}
}
]) ])
}else{ } else {
if(res['error']) { if (res['error']) {
let error = res["error"]; let error = res["error"];
Alert.alert("Une erreur est survenu", Alert.alert("Une erreur est survenu",
res["error_msg"] res["error_msg"]
@ -146,8 +210,8 @@ export default class AddNetwork extends Component {
text: "Ok", onPress: () => { text: "Ok", onPress: () => {
} }
}]); }]);
}else{ } else {
if(res['error']) { if (res['error']) {
let error = res["error"]; let error = res["error"];
Alert.alert("Une erreur est survenu", Alert.alert("Une erreur est survenu",
"Verifier que les champs sont bien rempli" "Verifier que les champs sont bien rempli"
@ -157,78 +221,76 @@ export default class AddNetwork extends Component {
}]); }]);
} }
} }
/* Crashlytics.recordError({"type":"erreur lors de la creation","data":res})
Answers.logCustom("error",res)*/
}
} }
} }
} }
} }
const style=StyleSheet.create({ const style = StyleSheet.create({
btnHelpText:{ btnHelpText: {
color:'white', color: 'white',
fontWeight:'bold' fontWeight: 'bold'
}, },
btnHelp:{ btnHelp: {
width:responsiveWidth(10), width: responsiveWidth(10),
marginTop:responsiveHeight(10), marginTop: responsiveHeight(10),
alignSelf:'flex-end', alignSelf: 'flex-end',
marginRight:20, marginRight: 20,
borderColor:'transparent', borderColor: 'transparent',
backgroundColor:theme.primaryDark backgroundColor: theme.primaryDark
}, },
btnTextStyle:{ btnTextStyle: {
color:"white", color: "white",
fontWeight:'bold', fontWeight: 'bold',
}, },
btnStyle:{ btnStyle: {
alignSelf:'center', alignSelf: 'center',
width:responsiveWidth(95), width: responsiveWidth(95),
marginTop:20, marginTop: 20,
borderColor:'transparent', borderColor: 'transparent',
backgroundColor:theme.primaryDarkAdvanced, backgroundColor: theme.primaryDarkAdvanced,
height:responsiveHeight(8) height: responsiveHeight(8)
}, },
appContainer:{ appContainer: {
flexDirection:'row', flexDirection: 'row',
justifyContent:'center', justifyContent: 'center',
alignItems:'center' alignItems: 'center'
}, },
container:{ container: {
alignItems:'center', alignItems: 'center',
justifyContent:'center', justifyContent: 'center',
alignSelf:'center', alignSelf: 'center',
flex:1, flex: 1,
width:responsiveWidth(100), width: responsiveWidth(100),
height:responsiveHeight(100), height: responsiveHeight(100),
backgroundColor:theme.primary}, backgroundColor: theme.primary
input:{
height:responsiveHeight(10),
width:responsiveWidth(90),
borderRadius:10,
marginTop:20,
color:"black"
}, },
logo:{ input: {
width:128, height: responsiveHeight(10),
height:128 width: responsiveWidth(90),
borderRadius: 10,
marginTop: 20,
color: "black"
}, },
nameApp:{ logo: {
fontSize:27, width: 128,
fontWeight:'bold', height: 128
color:'white'
}, },
title:{ nameApp: {
fontSize:22, fontSize: 27,
fontWeight:'bold', fontWeight: 'bold',
margin:10, color: 'white'
},
title: {
fontSize: 22,
fontWeight: 'bold',
margin: 10,
color:'white' color: 'white'
}, },
subtitle:{ subtitle: {
fontSize:20, fontSize: 20,
margin:10, margin: 10,
color:'white' color: 'white'
} }
}) })

View File

@ -1,20 +1,19 @@
import React, { Component } from 'react'; import React, {Component} from 'react';
import { StyleSheet, View, Text, Image, StatusBar, TouchableOpacity, ScrollView, ProgressBarAndroid, Alert } from 'react-native'; import {Alert, Image, ProgressBarAndroid, ScrollView, StatusBar, StyleSheet, Text, View} from 'react-native';
let theme = require('./../../utils/theme.json');
import Icon from 'react-native-vector-icons/MaterialIcons'; import Icon from 'react-native-vector-icons/MaterialIcons';
import { readUser, deleteUser } from './../../webservice/AuthApi'; import {deleteUser, readUser} from './../../webservice/AuthApi';
import { getAgentNetworksList } from './../../webservice/NetworkApi' import {getAgentNetworksList} from './../../webservice/NetworkApi'
import { responsiveHeight, responsiveWidth } from 'react-native-responsive-dimensions'; import {responsiveHeight, responsiveWidth} from 'react-native-responsive-dimensions';
import MapView, { Marker } from 'react-native-maps'; import MapView, {Marker} from 'react-native-maps';
import * as Utils from '../../utils/DeviceUtils'; import * as Utils from '../../utils/DeviceUtils';
import Button from 'apsl-react-native-button';
import { Typography, FontWeight } from '../../config/typography';
import CardView from "react-native-cardview"; import CardView from "react-native-cardview";
import I18n from 'react-native-i18n' import I18n from 'react-native-i18n'
import { Header } from 'react-native-elements' import {IlinkEmitter} from "../../utils/events";
import { IlinkEmitter } from "../../utils/events"; import {Card, CardAction, CardButton, CardContent, CardTitle} from 'react-native-material-cards'
import { Card, CardTitle, CardContent, CardAction, CardButton, CardImage } from 'react-native-material-cards' import {Color} from '../../config/Color';
import { Color } from '../../config/Color'; import Fontisto from "react-native-vector-icons/Fontisto";
let theme = require('./../../utils/theme.json');
let route = require('../../route.json'); let route = require('../../route.json');
require('./../../utils/Translations') require('./../../utils/Translations')
@ -32,7 +31,7 @@ export default class UserAccount extends Component {
statusBarColor: theme.primaryDarkAdvanced, statusBarColor: theme.primaryDarkAdvanced,
statusBarTextColorScheme: 'light', statusBarTextColorScheme: 'light',
}; };
static navigationOptions = ({ navigation }) => { static navigationOptions = ({navigation}) => {
return { return {
headerTitle: I18n.t('USER_ACCOUNT'), headerTitle: I18n.t('USER_ACCOUNT'),
headerStyle: { headerStyle: {
@ -42,7 +41,7 @@ export default class UserAccount extends Component {
headerTitleStyle: { headerTitleStyle: {
color: "white" color: "white"
}, },
drawerIcon: ({ tintColor }) => ( drawerIcon: ({tintColor}) => (
<Icon <Icon
name={'person'} name={'person'}
size={24} size={24}
@ -50,6 +49,7 @@ export default class UserAccount extends Component {
), ),
} }
}; };
static options(passProps) { static options(passProps) {
return { return {
topBar: { topBar: {
@ -76,13 +76,14 @@ export default class UserAccount extends Component {
} }
}; };
} }
constructor(props) { constructor(props) {
super(props) super(props)
this.state = this.initState(); this.state = this.initState();
IlinkEmitter.on("langueChange", this.updateLangue.bind(this)) IlinkEmitter.on("langueChange", this.updateLangue.bind(this))
readUser().then((user) => { readUser().then((user) => {
if (user !== null) { if (user !== null) {
this.setState({ user: user }) this.setState({user: user})
this.updateContent(user) this.updateContent(user)
} }
@ -90,19 +91,22 @@ export default class UserAccount extends Component {
} }
updateLangue() { updateLangue() {
this.props.navigation.setParams({ name: I18n.t('USER_ACCOUNT') }) this.props.navigation.setParams({name: I18n.t('USER_ACCOUNT')})
this.forceUpdate() this.forceUpdate()
} }
updateContent(user) { updateContent(user) {
getAgentNetworksList(user.agentId).then((networks) => { getAgentNetworksList(user.agentId).then((networks) => {
console.log("networks", networks.networks);
if (networks['success'] !== undefined) { if (networks['success'] !== undefined) {
this.setState({ mynetworks: networks.networks }) this.setState({mynetworks: networks.networks})
} }
}); });
this.setState({ user: user }); this.setState({user: user});
} }
initState() { initState() {
@ -118,7 +122,7 @@ export default class UserAccount extends Component {
let cat = ""; let cat = "";
const { user } = this.state const {user} = this.state
if (user.category !== undefined || user.category !== null) if (user.category !== undefined || user.category !== null)
cat = user.category === 'super' ? I18n.t("ADMIN") : user.category === 'hyper' ? cat = user.category === 'super' ? I18n.t("ADMIN") : user.category === 'hyper' ?
@ -137,17 +141,23 @@ export default class UserAccount extends Component {
}}> }}>
<View style={styles.userInformation}> <View style={styles.userInformation}>
<ScrollView> <ScrollView>
<View style={{ flex: 1, justifyContent: 'center', alignItems: 'center' }}> <View style={{flex: 1, justifyContent: 'center', alignItems: 'center'}}>
<Image source={require('./../../datas/img/users/man.png')} style={{ width: 92, height: 92 }} /> <Image source={require('./../../datas/img/users/man.png')}
style={{width: 92, height: 92}}/>
</View> </View>
<View style={{ flex: 1, flexDirection: 'row' }}> <View style={{flex: 1, flexDirection: 'row'}}>
{user.category === undefined || user.category === null ? {user.category === undefined || user.category === null ?
this.getHeaderLeftProfil(user) : this.getHeaderLeftAgentProfil(user) this.getHeaderLeftProfil(user) : this.getHeaderLeftAgentProfil(user)
} }
<View style={{ flex: user.category === undefined || user.category === null ? 2 : 2 }}> <View style={{flex: user.category === undefined || user.category === null ? 2 : 2}}>
<Text style={styles.textInformation} >{this.state.user.firstname}</Text> <Text style={styles.textInformation}>{this.state.user.firstname}</Text>
<Text style={styles.textInformation} >{this.state.user.lastname}</Text> <Text style={styles.textInformation}>{this.state.user.lastname}</Text>
{<Text style={{ color: 'white', fontSize: 17, fontWeight: 'bold', textAlign: 'center' }}>{cat}</Text> {<Text style={{
color: 'white',
fontSize: 17,
fontWeight: 'bold',
textAlign: 'center'
}}>{cat}</Text>
} }
</View> </View>
@ -165,32 +175,40 @@ export default class UserAccount extends Component {
marginLeft: 10, marginRight: 10, marginTop: 15, marginBottom: 5, fontSize: 17, marginLeft: 10, marginRight: 10, marginTop: 15, marginBottom: 5, fontSize: 17,
fontWeight: 'bold', color: 'black' fontWeight: 'bold', color: 'black'
}}>{I18n.t("ACCOUNT_INFO")}</Text> }}>{I18n.t("ACCOUNT_INFO")}</Text>
<CardView style={{ marginLeft: 10, marginRight: 10, paddingBottom: 20 }}> <CardView style={{marginLeft: 10, marginRight: 10, paddingBottom: 20}}>
<ScrollView> <ScrollView>
{user.category !== undefined && user.category !== null ? this {user.category !== undefined && user.category !== null ? this
.addAgentInformation(user) : null} .addAgentInformation(user) : null}
<Text style={styles.textInformation2}> <Text style={styles.textInformation2}>
<Icon name={"location-on"} size={18} />{" " + this.state.user.country}</Text> <Icon name={"location-on"} size={18}/>{" " + this.state.user.country}</Text>
{user.balance !== undefined && user.balance !== null ? this.showBalance(user) : null} {user.balance !== undefined && user.balance !== null ? this.showBalance(user) : null}
<Text style={styles.textInformation2}> <Text style={styles.textInformation2}>
<Icon name={"mail"} size={18} />{" " + this.state.user.email}</Text> <Icon name={"mail"} size={18}/>{" " + this.state.user.email}</Text>
<Text style={styles.textInformation2}> <Text style={styles.textInformation2}>
<Icon name={"phone"} size={18} /> <Icon name={"phone"} size={18}/>
{" " + this.state.user.phone}</Text> {" " + this.state.user.phone}</Text>
{this.showPhoneSup()} {this.showPhoneSup()}
<Text style={styles.textInformation2}> <Text style={styles.textInformation2}>
<Icon name={"account-balance-wallet"} size={18} /> <Icon name={"account-balance-wallet"} size={18}/>
{" " + this.state.user.network}</Text> {" " + this.state.user.network}</Text>
</ScrollView> </ScrollView>
</CardView> </CardView>
{user.category === 'geolocated' ? {user.category === 'geolocated' ?
(<Text style={{ marginLeft: 10, marginRight: 10, marginTop: 15, marginBottom: 5, fontSize: 17, fontWeight: 'bold', color: 'black' }}>{I18n.t("MY_NETWORK")}</Text>) (<Text style={{
marginLeft: 10,
marginRight: 10,
marginTop: 15,
marginBottom: 5,
fontSize: 17,
fontWeight: 'bold',
color: 'black'
}}>{I18n.t("MY_NETWORK")}</Text>)
: null} : null}
{user.category === 'geolocated' ? (this.state.mynetworks.length > 0 ? this.state.mynetworks.map(item => this.generateItemNetwork(item)) : this.showLoader()) : null} {user.category === 'geolocated' ? (this.state.mynetworks.length > 0 ? this.state.mynetworks.map(item => this.generateItemNetwork(item)) : this.showLoader()) : null}
@ -200,42 +218,58 @@ export default class UserAccount extends Component {
</View> </View>
) )
} }
showPhoneSup() { showPhoneSup() {
if (this.state.user.phoneTransaction != undefined && this.state.user.phoneTransaction != null) { if (this.state.user.phoneTransaction != undefined && this.state.user.phoneTransaction != null) {
return (<Text style={styles.textInformation2}> return (<Text style={styles.textInformation2}>
<Icon name={"phone"} size={18} /> <Icon name={"phone"} size={18}/>
{" " + this.state.user.phoneTransaction}</Text> {" " + this.state.user.phoneTransaction}</Text>
) )
} }
} }
getHeaderLeftProfil(user) { getHeaderLeftProfil(user) {
return (<View style={{ flex: 2 }}> return (<View style={{flex: 2}}>
<Text style={{ color: 'white', fontSize: 15, fontWeight: 'bold', textAlign: 'center' }}>{I18n.t("NETWORK")}</Text> <Text style={{
<Text style={{ color: 'white', fontSize: 15, textAlign: 'center' }}>{user.network}</Text> color: 'white',
fontSize: 15,
fontWeight: 'bold',
textAlign: 'center'
}}>{I18n.t("NETWORK")}</Text>
<Text style={{color: 'white', fontSize: 15, textAlign: 'center'}}>{user.network}</Text>
</View>) </View>)
} }
getHeaderRight(user) { getHeaderRight(user) {
return (<View style={{ flex: 0 }}> return (<View style={{flex: 0}}>
</View>) </View>)
} }
getHeaderRightAgent(user) { getHeaderRightAgent(user) {
return (<View style={{ flex: 2 }}> return (<View style={{flex: 2}}>
<Text style={{ color: 'white', fontSize: 15, textAlign: 'center', fontWeight: 'bold' }}>{I18n.t("MEMBER_CODE")}</Text> <Text style={{
<Text style={{ color: 'white', fontSize: 13, textAlign: 'center' }}>{user.code_membre}</Text> color: 'white',
fontSize: 15,
textAlign: 'center',
fontWeight: 'bold'
}}>{I18n.t("MEMBER_CODE")}</Text>
<Text style={{color: 'white', fontSize: 13, textAlign: 'center'}}>{user.code_membre}</Text>
</View>) </View>)
} }
getHeaderLeftAgentProfil(user) { getHeaderLeftAgentProfil(user) {
return (<View style={{ flex: 2 }}> return (<View style={{flex: 2}}>
<Text style={{ color: 'white', fontSize: 15, fontWeight: 'bold', textAlign: 'center' }}>{I18n.t("NETWORK")}</Text> <Text style={{
<Text style={{ color: 'white', fontSize: 13, textAlign: 'center' }}>{user.network}</Text> color: 'white',
fontSize: 15,
fontWeight: 'bold',
textAlign: 'center'
}}>{I18n.t("NETWORK")}</Text>
<Text style={{color: 'white', fontSize: 13, textAlign: 'center'}}>{user.network}</Text>
</View>) </View>)
} }
@ -243,40 +277,50 @@ export default class UserAccount extends Component {
console.log(user) console.log(user)
if (user.category === "geolocated") { if (user.category === "geolocated") {
(<View> (<View>
<Text style={{ marginLeft: 10, marginTop: 10, color: theme.primaryDark }}> <Text style={{marginLeft: 10, marginTop: 10, color: theme.primaryDark}}>
<Icon name={'code'} size={18} color={theme.primaryDark} style={{ paddingRight: 10 }} /> <Icon name={'code'} size={18} color={theme.primaryDark} style={{paddingRight: 10}}/>
{" " + user.code_parrain}</Text> {" " + user.code_parrain}</Text>
</View>) </View>)
} else } else
return (<View> return (<View>
<Text style={{ marginLeft: 10, marginTop: 10, color: theme.primaryDark }}> <Text style={{marginLeft: 10, marginTop: 10, color: theme.primaryDark}}>
<Icon name={'code'} size={18} color={theme.primaryDark} style={{ paddingRight: 10 }} /> <Icon name={'code'} size={18} color={theme.primaryDark} style={{paddingRight: 10}}/>
{" " + user.code_parrain}</Text> {" " + user.code_parrain}</Text>
<View style={{ flexDirection: 'row', justifyContent: 'space-between', width: responsiveWidth(90), marginRight: 50 }}> <View style={{
<Text style={{ marginLeft: 12, marginTop: 10, color: theme.primaryDark }}> flexDirection: 'row',
<Icon name={"group-work"} color={theme.primaryDark} size={18} /> justifyContent: 'space-between',
{" " + ((user.nbre_reseau === null || user.nbre_reseau === undefined) ? 0 : user.nbre_reseau) + " " + I18n.t("FREE")}</Text> width: responsiveWidth(90),
<Text style={{ marginLeft: 12, marginTop: 10, color: theme.primaryDark }}> marginRight: 50
<Icon name={"book"} color={theme.primaryDark} size={18} />{" " + ((user.nbre_reseau === null || user.nbre_membre === undefined) ? 0 : user.nbre_membre) + " " + I18n.t("SAVED")}</Text> }}>
<Text style={{marginLeft: 12, marginTop: 10, color: theme.primaryDark}}>
<Icon name={"group-work"} color={theme.primaryDark} size={18}/>
{" " + ((user.nbre_reseau === null || user.nbre_reseau === undefined) ? 0 : user.nbre_reseau) + " " + I18n.t("FREE")}
</Text>
<Text style={{marginLeft: 12, marginTop: 10, color: theme.primaryDark}}>
<Icon name={"book"} color={theme.primaryDark}
size={18}/>{" " + ((user.nbre_reseau === null || user.nbre_membre === undefined) ? 0 : user.nbre_membre) + " " + I18n.t("SAVED")}
</Text>
</View> </View>
</View>) </View>)
} }
mapUser(user) { mapUser(user) {
const myPosition = { latitude: parseFloat(user.latitude), longitude: parseFloat(user.longitude) } const myPosition = {latitude: parseFloat(user.latitude), longitude: parseFloat(user.longitude)}
return (<MapView return (<MapView
liteMode liteMode
ref={(ref) => { this.mapRef = ref }} ref={(ref) => {
this.mapRef = ref
}}
style={styles.map} style={styles.map}
> >
{this.state.myPosition !== undefined ? {this.state.myPosition !== undefined ?
<Marker <Marker
title={"Vous êtes ici"} title={"Vous êtes ici"}
minZoomLevel={10} minZoomLevel={10}
coordinate={{ longitude: myPosition.longitude, latitude: myPosition.latitude }} coordinate={{longitude: myPosition.longitude, latitude: myPosition.latitude}}
/> : /> :
null} null}
</MapView> </MapView>
@ -285,14 +329,22 @@ export default class UserAccount extends Component {
showBalance(user) { showBalance(user) {
return <Text style={styles.textInformation2}> return <Text style={styles.textInformation2}>
<Icon name={"folder"} size={18} />{" " + this.state.user.balance + " "}</Text> <Icon name={"folder"} size={18}/>{" " + this.state.user.balance + " "}</Text>
} }
makeGeolocatedNetworkList() { makeGeolocatedNetworkList() {
return (<View> return (<View>
<Text style={{ marginLeft: 10, marginRight: 10, marginTop: 15, marginBottom: 5, fontSize: 17, fontWeight: 'bold', color: 'black' }}>Mes reseaux</Text> <Text style={{
marginLeft: 10,
marginRight: 10,
marginTop: 15,
marginBottom: 5,
fontSize: 17,
fontWeight: 'bold',
color: 'black'
}}>Mes reseaux</Text>
</View>) </View>)
} }
@ -300,18 +352,25 @@ export default class UserAccount extends Component {
generateItemNetwork(item) { generateItemNetwork(item) {
return ( return (
<Card > <Card>
<CardTitle <CardTitle
title={item.name} title={item.name}
subtitle={item.phone} subtitle={item.phone}
/> />
<CardContent> <CardContent>
<View Style={{ flex: 1 }}> <View Style={{flex: 1}}>
<Text style={styles.textInformation2}> <Text style={styles.textInformation2}>
<Icon name={"code"} size={18} />{" " + item.code_membre + " "}</Text> <Icon name={"code"} size={18}/>{" " + item.code_membre + " "}</Text>
<Text style={styles.textInformation2}> <Text style={styles.textInformation2}>
<Icon name={"people"} size={18} />{" " + item.code_parrain + " "}</Text> <Icon name={"people"} size={18}/>{" " + item.code_parrain + " "}</Text>
{item.provider_class !== null && (
<>
<Text style={styles.textInformation2}>
<Fontisto name={"doctor"} size={18}/>{" " + item.provider_class + " "}</Text>
</>
)}
</View> </View>
</CardContent> </CardContent>
@ -324,11 +383,14 @@ export default class UserAccount extends Component {
I18n.t("TITLE_SUPPRESS_CONFIRM"), I18n.t("TITLE_SUPPRESS_CONFIRM"),
I18n.t("TEXT_SUPPRESS_CONFIRM"), I18n.t("TEXT_SUPPRESS_CONFIRM"),
[ [
{ text: I18n.t('NO'), onPress: () => { } }, {
text: I18n.t('NO'), onPress: () => {
}
},
{ {
text: I18n.t("YES"), onPress: () => { text: I18n.t("YES"), onPress: () => {
deleteUser(item).then(() => { deleteUser(item).then(() => {
this.setState({ isLoading: true }) this.setState({isLoading: true})
this.updateContent(this.state.user) this.updateContent(this.state.user)
}) })
}, },
@ -345,9 +407,9 @@ export default class UserAccount extends Component {
} }
showLoader() { showLoader() {
return (<View style={{ height: responsiveHeight(20) }}><ProgressBarAndroid return (<View style={{height: responsiveHeight(20)}}><ProgressBarAndroid
style={{ justifyContent: "center", alignItems: "center" }} style={{justifyContent: "center", alignItems: "center"}}
/></View>) /></View>)
} }
} }
@ -392,7 +454,7 @@ const styles = StyleSheet.create({
alignItems: 'center', alignItems: 'center',
shadowColor: Color.borderColor, shadowColor: Color.borderColor,
borderColor: Color.borderColor, borderColor: Color.borderColor,
shadowOffset: { width: 1.5, height: 1.5 }, shadowOffset: {width: 1.5, height: 1.5},
shadowOpacity: 1.0, shadowOpacity: 1.0,
elevation: 5, elevation: 5,
borderRadius: 10, borderRadius: 10,

View File

@ -1373,7 +1373,7 @@ class WalletDetail extends Component {
</View>} </View>}
{(wallet.type === "ilink-world" || wallet.type === "ilink") && {(wallet.type === "ilink-world" || wallet.type === "ilink" || wallet.type === "visa") &&
<View style={styles.transactionContainer}> <View style={styles.transactionContainer}>
<View style={[styles.containerTouch]}> <View style={[styles.containerTouch]}>

File diff suppressed because it is too large Load Diff

View File

@ -606,7 +606,7 @@
"PRIME_AMOUNT": "Montant de la prime", "PRIME_AMOUNT": "Montant de la prime",
"AYANT_DROIT": "Ayant(s) droit(s)", "AYANT_DROIT": "Ayant(s) droit(s)",
"SELECT_SUBSCRIPTION": "Sélectionner une souscription", "SELECT_SUBSCRIPTION": "Sélectionner une souscription",
"SAISIR_FEUILLE_SOIN": "Saisir une feuille de soin", "SAISIR_FEUILLE_SOIN": "Créer une consultation",
"MODIFIER_FEUILLE_SOIN": "Modifier une feuille de soin", "MODIFIER_FEUILLE_SOIN": "Modifier une feuille de soin",
"FACTURER_FEUILLES_SOINS": "Facturer les feuilles de soins", "FACTURER_FEUILLES_SOINS": "Facturer les feuilles de soins",
"FICHE_DE_SOIN": "Fiche de soins", "FICHE_DE_SOIN": "Fiche de soins",
@ -647,5 +647,20 @@
"EMPTY_LIST": "Liste vide", "EMPTY_LIST": "Liste vide",
"NO_ASSURE_MATCH_SEARCH": "Aucun assuré ne correspond à la recherche", "NO_ASSURE_MATCH_SEARCH": "Aucun assuré ne correspond à la recherche",
"LIST_ASSURE": "Liste des assurés", "LIST_ASSURE": "Liste des assurés",
"ASSURE_NON_EN_REGLE": "Assuré non en règle" "ASSURE_NON_EN_REGLE": "Assuré non en règle",
"CLASSE_PRESTATAIRE": "Classe de prestataire",
"FRAIS_DEPLACEMENT": "Frais de déplacement",
"AJOUTER_MEDICAMENT": "Ajouter médicament/appareil",
"AJOUTER_EXAMEN": "Ajouter examen",
"NAME": "Nom",
"POSOLOGIE": "Posologie",
"QUANTITE": "Quantité",
"LISTE_MEDICAMENT": "Liste des médicaments",
"PRESTATION": "Prestation",
"MEDICAMENT": "Médicament",
"EXAMEN": "Examen",
"PRESTATION_SUCCESSFULLY_ADD": "Prestation ajouté avec succès",
"EXAMENS_SUCCESSFULLY_ADD": "Examens ajouté avec succès",
"PRESCRIPTIONS_SUCCESSFULLY_ADD": "Prescription ajouté avec succès",
"YOU_MUST_ADD_AT_LEAST_ONE_PRESTATION": "Vous devez ajouter au moins une prestation"
} }

View File

@ -1,5 +1,4 @@
import React from 'react'; import React from 'react';
import axios from "axios";
import I18n from 'react-native-i18n' import I18n from 'react-native-i18n'
import {db} from './persistences/db'; import {db} from './persistences/db';
import { import {
@ -297,18 +296,19 @@ export const generateAgentGeo = async (newPhone) => {
"type": "generateNetworkAgentForGeo", "type": "generateNetworkAgentForGeo",
"tag": "member", "tag": "member",
"code_parrain": user.code_membre, "code_parrain": user.code_membre,
'phone': newPhone 'phone': newPhon
}, memberActionUrl) }, memberActionUrl)
return items; return items;
} }
export const AssignAgentGeo = async (codeValidation, phone) => { export const AssignAgentGeo = async (codeValidation, phone, provider_class) => {
const user = await readUser(); const user = await readUser();
const items = await queryData({ const items = await queryData({
"type": "assignNetworkAgentToGeo", "type": "assignNetworkAgentToGeo",
"tag": "member", "tag": "member",
"agentId": user.agentId, "agentId": user.agentId,
'code_parrain': codeValidation, 'code_parrain': codeValidation,
"phone": phone "phone": phone,
"provider_class_id": provider_class
}, memberActionUrl) }, memberActionUrl)
return items; return items;
} }

View File

@ -84,7 +84,11 @@ export const payBillUrl = testBaseUrl + '/walletService/transactions/ilink';
export const getInsuranceListUrl = testBaseUrl + '/nanoSanteService/insurances'; export const getInsuranceListUrl = testBaseUrl + '/nanoSanteService/insurances';
export const getUserByIdQRCodeUrl = testBaseUrl + '/nanoSanteService/qrcode/read'; export const getUserByIdQRCodeUrl = testBaseUrl + '/nanoSanteService/qrcode/read';
export const getUserByNameOrNumberUrl = testBaseUrl + '/nanoSanteService/insured'; export const getUserByNameOrNumberUrl = testBaseUrl + '/nanoSanteService/insured';
export const getDrugAndDevicesUrl = testBaseUrl + '/nanoSanteService/drugs-and-devices';
export const subscribeInsuranceUrl = testBaseUrl + '/nanoSanteService/insurances/subscriptions'; export const subscribeInsuranceUrl = testBaseUrl + '/nanoSanteService/insurances/subscriptions';
export const getProviderClassUrl = testBaseUrl + '/nanoSanteService/provider-classes';
export const getNetworkActsUrl = testBaseUrl + '/nanoSanteService/acts';
export const createConsultationUrl = testBaseUrl + '/nanoSanteService/health-care-sheets/consultation';
export const getInsurancePrimeAmountUrl = testBaseUrl + '/nanoSanteService/insurances/subscriptions/bonus-amount'; export const getInsurancePrimeAmountUrl = testBaseUrl + '/nanoSanteService/insurances/subscriptions/bonus-amount';
export const uploadInsuranceImagetUrl = 'https://test.ilink-app.com:8086/insurances/subscriptions/upload-images'; export const uploadInsuranceImagetUrl = 'https://test.ilink-app.com:8086/insurances/subscriptions/upload-images';