{"version":3,"sources":["components/Validator.js","common/constants.js","components/DocsCreateButton.js","components/DocsPhotoButton.js","components/DownloadButtonAuth.js","common/language.js","common/language_ca.js","common/language_es.js","common/utils.js","resources/docs.js","common/styles.js","components/MyLoading.js","components/TextFieldShow.js","components/User.js","components/CustomFields.js","settings.js","components/AddMember.js","components/Banks.js","components/PaymentSystems.js","components/PostalLabels.js","components/RecercatHeader.js","components/RecercatAddMember.js","components/RecercatValidateRequest.js","components/RecercatResumeCenter.js","components/Password.js","components/SignUp.js","components/Emails.js","resources/users_permissions.js","resources/associations.js","components/MapCatalonia.js","components/Map.js","components/Dashboard.js","components/NotFound.js","components/ClassroomsRequests.js","components/ExportButton.js","components/Inputs.js","components/BackLink.js","resources/donations_users.js","resources/donations_projects.js","resources/donations_certificates.js","components/Reports.js","components/Paginador.js","components/PublicEvents.js","components/CheckMembers.js","components/Annuary.js","components/ModulesView.js","customRoutes.js","resources/groups_quotes_periods.js","resources/groups_quotes.js","common/fields.js","resources/groups_cards.js","resources/users_groups_quotes.js","resources/users_groups.js","resources/users_annuary.js","resources/users_groups_responsabilities.js","resources/users_edited_books.js","resources/users_recognitions.js","resources/users_schedules.js","components/UsersAddressesCreateButton.js","resources/users_addresses.js","resources/emails.js","resources/social_nets.js","resources/users_families.js","components/DownloadXLSButton.js","components/UsersPostalLabelsCreateButton.js","components/MyFilterUsers.js","components/BulkDeleteButton.js","components/BulkGroupsButton.js","components/ImportButton.js","components/RemittancesUsers.js","components/DownloadSEPAButton.js","components/DownloadPDFButton.js","components/Empty.js","resources/remittances.js","resources/users_contacts.js","resources/users_emails.js","resources/users_economic_data.js","resources/users_demografy.js","resources/users_workers.js","resources/users_activities.js","resources/users_trainings.js","resources/users_social_projects.js","resources/users_shows.js","resources/users_sections.js","resources/classrooms.js","resources/real_state_payments.js","resources/insurances.js","resources/agreements.js","resources/real_state.js","resources/real_state_activities.js","resources/users.js","components/MySearch.js","resources/groups.js","resources/modules.js","resources/recercat_centers.js","resources/docs_fac.js","resources/alerts.js","components/Bookings.js","resources/events.js","resources/custom_fields_options.js","resources/custom_fields.js","common/dataProvider.js","components/Alerts.js","components/MyLayout.js","common/authProvider.js","App.js","reportWebVitals.js","index.js"],"names":["validateMaxLength","max","message","msg","replace","value","length","undefined","validateMinMaxLengthAndCharacters","decimal","match","validateEmail","email","validateTrue","validateInteger","isNaN","Number","validateIntegerLowerOrEqualThan","limit","validateDouble","validateDoubleGreatZero","validateDoubleGreatOrEqualThan","validatePercent","projectUrl","window","location","hostname","port","apiUrl","donationsUrl","apiOrigin","maxDocFileSize","maxImgFileSize","getLanguageFromStorage","localStorage","getItem","apiDefaultLanguage","userLocale","locales","ca","caLocale","es","esLocale","targets","targetsResources","targetsEmails","emailsStatus","usersEditedBooksType","modules","GESTIO","CONTACTS_FAC","FEDERATION","DIGITAL_CARDS","MEMBER_FAC","RECERCAT","REAL_STATE","AGREEMENTS","INSURANCES","ALERTS","REPORTS","DOCUMENTS_FAC","CALENDAR","REMITTANCES","POSTAL_LABELS","DONATIONS","WALLETS","CUSTOM_FIELDS","FACM","CLASSROOMS","modulesOptions","recercatActions","cardTypes","choicesTypeUser","translate","id","name","choicesLanguage","moreLanguagesEnabled","choices","push","choicesGenderUser","choicesAlertsType","choicesMonths","choicesDays","months","i","choicesCustomFieldsType","choicesDelegations","choicesProperty","choicesCession","choicesClassroomsType","choicesDonationsUsersPaymentMethod","choicesDonationsUsersPublicPaymentMethod","choicesDonationsUsersStatus","choicesRealStateUse","choicesDonationsProjectsFacValidationStatus","choicesRealStateActivitiesType","choicesRealStateActivitiesInsuranceWho","choicesRealStatePaymentsType","choicesRealStatePaymentsPayer","choicesTrainingsType0","choicesTrainingsTrainingType","choicesTrainingsPeriodicity","choicesTrainingsAges","choicesTrainingsType1","choicesTrainingsFormalArt","choicesTrainingsFormal","choicesSocialProjects","choicesYears","currentYear","Date","getFullYear","arrYears","choicesShowsType","choicesAdult","choicesRemittancesStatus","choicesRegion","choicesProvince","choicesCountry","DocsCreateButton","target","items_id","label","icon","topToolbar","btnClassname","onSuccess","useState","showDialog","setShowDialog","useCreate","create","loading","notify","useNotify","refresh","useRefresh","useTranslate","allowableAllDocs","labelInputFile","labelButton","iconButton","handleClick","handleCloseClick","handleSubmit","values","a","payload","data","onFailure","error","TopToolbar","Button","onClick","className","Dialog","fullWidth","open","onClose","DialogTitle","FormWithRedirect","resource","save","initialValues","associations_id","render","handleSubmitWithRedirect","pristine","saving","DialogContent","FileInput","source","accept","validate","required","maxSize","FileField","title","ImageInput","ImageField","DialogActions","disabled","SaveButton","DocsCameraButton","props","useStylesWebcam","stopVideo","video","document","querySelector","videoStart","navigator","mediaDevices","getUserMedia","audio","width","height","then","stream","srcObject","catch","console","log","tracks","getTracks","stop","setTimeout","container","spacing","item","xs","playsInline","autoPlay","context","getElementById","getContext","drawImage","createElement","img","toDataURL","headers","Headers","Accept","set","content","fetch","method","body","JSON","stringify","e","finally","variant","makeStyles","theme","card","minHeight","display","flexDirection","flex","textDecoration","color","marginBottom","main","overflow","padding","justifyContent","alignItems","palette","type","DocsDeleteButton","setOpen","Confirm","isOpen","onConfirm","alert","deletePhoto","DownloadButtonAuth","link","createRef","handleAction","current","href","record","result","blob","URL","createObjectURL","download","click","role","ref","style","startIcon","DownloadPublicDoc","doc","messages","ra","action","add_filter","add","back","bulk_actions","cancel","clear_input_value","clone","create_item","delete","edit","export","list","remove_filter","remove","search","show","sort","undo","confirm","unselect","expand","close","open_menu","close_menu","boolean","true","false","null","page","dashboard","not_found","empty","invite","input","file","upload_several","upload_single","image","references","all_missing","many_missing","single_missing","password","toggle_visible","toggle_hidden","about","are_you_sure","bulk_delete_content","bulk_delete_title","delete_content","delete_title","details","invalid_form","no","yes","unsaved_changes","navigation","no_results","no_more_results","page_out_of_boundaries","page_out_from_end","page_out_from_begin","page_range_info","page_rows_per_page","next","prev","skip_nav","sort_by","ASC","DESC","auth","user_menu","username","sign_in","sign_in_error","logout","auth_check_error","auth_account_locked","auth_too_many_attempts","auth_invalid_credentials","notification","updated","created","deleted","bad_item","logged_out","item_doesnt_exist","http_error","data_provider_error","canceled","i18n_error","validation","minLength","maxLength","minValue","maxValue","number","oneOf","regex","common","name_internal","description","actions","actived","actived_female","visible","priority","comment","status","month_1","month_2","month_3","month_4","month_5","month_6","month_7","month_8","month_9","month_10","month_11","month_12","months_1","months_2","months_3","months_4","months_5","months_6","months_7","months_8","months_9","months_10","months_11","months_12","year","language","language_0","language_1","minMaxLengthAndCharacters","labels","day_week_1","day_week_2","day_week_3","day_week_4","day_week_5","day_week_6","day_week_7","day_week_complete_1","day_week_complete_2","day_week_complete_3","day_week_complete_4","day_week_complete_5","day_week_complete_6","day_week_complete_7","notFoundPage","goBack","date_from","date_to","time_to","download_ok","excel","pdf","main_menu","home","groups","users","recercat_users","recercat_centers","docs_fac","remittances","classrooms","users_groups","associations","modules_view","real_state","agreements","insurances","permissions","subscriptions","options","contacts","events","reports","members","members_federation","birthdays","members_legend_female","members_legend_male","members_legend_no_binary","members_legend_no_informed","members_legend_companies","last_joins","last_joins_pending","members_view","events_view","members_federation_view","members_view_requests","members_federation_view_requests","members_add","people","age_sufix","age_pyramid","today","next_events","statistics_total_members","statistics_avg_age","statistics_gender","remittances_legend_accepted","remittances_legend_returned","remittances_add","subscription_active_modules","subscription_view_all_modules","subscription","subscription_name","subscription_status","subscription_date_expiration","subscription_users","subscription_size","subscription_change","help","help_manual_link","help_description_sifac","help_description","federation_members","federation_total_people","federation_avg_age","federation_avg_age_associations","federation_economic_data_incomings","federation_economic_data_expenses","federation_economic_data_inversions","federation_users","federation_users_number","federation_volunteers","federation_workers","federation_managers","federation_responsabilities","federation_num_data","federation_gender","federation_map","federation_associations","alert_subscription_admin","facm_auditory","facm_projects","facm_num_events","facm_num_entities","facm_num_assistants","to_desactive","to_active_button","change_modules_title","to_activate","to_activate_sifac","annuary","annuary_desc","annuary_item_id","annuary_item_group","annuary_item_calc","annuary_item_name","annuary_item_value","annuary_item_percent","annuary_item_avg","annuary_exporter_file_name","annuary_last_years","responsabilities","responsabilities_responsability","responsabilities_date","responsabilities_desc","responsabilities_exporter_file_name","responsabilities_list_entity_name","responsabilities_list_entity_city","generate","tab_data","tab_subscriptions","tab_admin","tab_statistics","generate_data_demo","report_users","report_groups","report_emails","report_emails_not_sent","report_docs","report_mb","report_remittances","report_remittances_users","report_last_action","trial","begin","end","email_sent_tooltip_button","email_sent_tooltip_sending","email_sent_tooltip_done","email_sent","email_sent_title","email_sent_ask","email_sent_ask_again","email_sent_ko","error_title","forgot_password_title","forgot_password_desc","forgot_password_ok","forgot_password_link","reset_password_title","reset_password_button","reset_password_ok","reset_password_ok_link","send_button","signup","link_or","register","desc","ok","ok_login","form_lopd","form_lopd_validator","form_lopd_link","form_terms","form_terms_link","form_terms_validator","form_newsletter","lopd","terms","module","option","docs","date_init","date_expiration","user","status0","status1","group","addChild","tab_users","tab_main","tab_quotes","tab_docs","tab_subgroups","tab_responsabilities","num_members","card_digital","card_digital_wallets","groups_cards","design_title","pos_x","pos_y","size_x","size_y","num_lines","font_size","font_color","opacity","rectangle_round","type_0","type_0_default_title","type_1","type_1_default_title","type_2","type_2_default_title","type_3","type_3_default_title","type_4","type_4_default_title","type_5","type_5_default_title","type_6","type_6_default_title","type_7","type_7_default_title","type_8","type_8_default_title","type_9","type_9_default_title","type_10","type_10_default_title","type_11","type_11_default_title","type_12","type_12_default_title","type_13","type_13_default_title","type_14","type_14_default_title","type_15","type_15_default_title","type_16","type_16_default_title","type_17","type_17_default_title","type_18","type_18_default_title","type_19","type_19_default_title","type_20","type_20_default_title","type_21","type_21_default_title","type_22","type_22_default_title","type_23","type_23_default_title","type_24","type_24_default_title","type_25","type_25_default_title","type_26","type_26_default_title","position","position_0","position_1","position_2","position_3","position_4","position_5","position_6","alignment","alignment_0","alignment_1","alignment_2","alignment_3","uppercase","pdf_view","regenerate","regenerate_title","regenerate_text","regenerated_ok","pdf_card_filename","pdf_card_ok","pdf_card_download","send_dialog_button","send_dialog_action","send_dialog_action_0","send_dialog_action_1","send_dialog_block_size","send_dialog_regenerate","send_dialog_text2","pdf_card_preview","create_config","edit_config","config","background","settings_pdf","settings_wallets_google","settings_wallets_apple","background_google_wallet","google_wallet_icon","apple_wallet_icon","google_wallet_background_color","tab_main_0","tab_main_1","tab_more","tab_groups","tab_responsabilities_fac","tab_contacts","tab_contacts_rel","tab_economic_data","tab_workers_0","tab_workers_1","tab_images","tab_family","tab_history","tab_social_nets","user_type","user_type_0","user_type_1","without_group","first_name","name_company","last_name_1","last_name_2","email_secondary","email_secondary_list","code","address","neighborhood","zip","city","region","country","lat","lng","phones","phone","mobile","web","phone_emergency","birthday","foundation_date","foundation_age","job","nif","nif_only","gender","gender_1","gender_2","gender_3","bank_data","bank_iban","bank_swift","bank_payer","no_users_title","no_users_ask","person","payment_cash","newsletter","age","others","import","import_title","import_template","add_to_group","add_member_comments","add_member_send","validate_title","validate_done","validate_send_email","welcome_email_sent","welcome_email_sent_title","welcome_email_sent_ask","welcome_email_sent_ask_again","welcome_email_sent_ok","welcome_email_tooltip_button","welcome_email_tooltip_sending","welcome_email_tooltip_done","welcome_email_sent_ko","group_left_email_sent","group_left_email_sent_title","group_left_email_sent_ask","group_left_email_sent_ask_again","group_left_email_sent_ok","group_left_email_tooltip_button","group_left_email_tooltip_sending","group_left_email_tooltip_done","group_left_email_sent_ko","digital_card_send","digital_card_send_title","digital_card_send_ask","digital_card_send_ask_again","digital_card_send_ok","digital_card_tooltip_button","digital_card_tooltip_sending","digital_card_tooltip_done","digital_card_send_ko","exporter_file_name","exporter_file_name_csv","alerts","delete_all","delete_all_confirm_title","delete_all_confirm_description","delete_all_confirm_description_ask","delete_all_ok","delete_all_ko","group_changes","group_changes_title","group_changes_action","group_changes_action_1","group_changes_action_2","group_changes_action_3","group_changes_date_1","group_changes_date_2","group_changes_date_3","group_changes_confirm","group_changes_destination_group","group_changes_ok_1","group_changes_ok_2","group_changes_ok_3","group_changes_ko_1","group_changes_ko_2","group_changes_ko_3","users_filter","filters","field","operator","filter_1","filter_2","filter_3","filter_4","filter_5","filter_6","filter_7","filter_8","filter_9","filter_10","filter_11","filter_12","filter_13","filter_14","filter_15","filter_16","filter_17","filter_18","filter_19","filter_20","filter_21","filter_22","filter_23","filter_24","filter_25","filter_26","filter_27","filter_28","filter_29","filter_30","filter_31","filter_32","filter_33","filter_34","filter_35","filter_36","filter_37","filter_38","filter_39","filter_40","filter_41","filter_50","filter_51","filter_80","filter_81","filter_82","filter_83","filter_84","filter_85","filter_86","filter_87","filter_88","filter_89","filter_90","filter_91","filter_99","filter_100","filter_101","filter_102","filter_103","filter_104","filter_105","filter_106","filter_107","filter_108","filter_109","filter_110","filter_111","filter_112","filter_113","filter_114","filter_121","filter_122","filter_123","filter_125","filter_126","filter_127","filter_128","filter_129","filter_130","filter_131","filter_132","filter_133","filter_134","filter_135","filter_136","filter_137","filter_138","filter_139","filter_140","filter_141","filter_200","filter_201","filter_202","filter_203","filter_300","filter_301","filter_302","filter_303","filter_304","filter_305","filter_306","filter_307","filter_308","filter_309","filter_310","filter_311","filter_312","filter_313","filter_314","filter_315","filter_316","filter_317","filter_318","filter_319","filter_320","filter_321","filter_322","filter_323","filter_324","filter_325","filter_326","filter_327","filter_350","filter_351","filter_352","filter_353","filter_354","filter_355","filter_356","filter_400","filter_401","filter_402","filter_403","filter_404","filter_405","filter_406","filter_407","filter_408","filter_409","filter_410","filter_450","filter_451","filter_452","filter_453","filter_454","filter_455","filter_456","filter_457","filter_458","filter_459","filter_460","filter_470","filter_471","filter_472","filter_473","filter_474","filter_475","filter_476","filter_480","filter_481","filter_482","filter_483","filter_484","filter_485","filter_486","filter_490","filter_491","filter_500","filter_501","filter_502","filter_503","filter_504","filter_600","filter_601","filter_602","filter_603","filter_604","filter_605","filter_606","filter_700","filter_701","filter_702","filter_703","filter_750","filter_751","filter_752","filter_800","filter_801","filter_802","filter_op_1","filter_op_2","filter_op_3","filter_op_4","filter_op_5","filter_op_6","filter_op_7","filter_op_8","filter_op_9","filter_op_10","users_permissions","email_sent_ok","email_tooltip_button","email_tooltip_sending","email_tooltip_done","role_SIFAC","role_ADMIN","role_ADMIN_CONTACTS","role_ADMIN_READER","users_federation","tab","tab_managers","tab_managers_1","tab_managers_2","tab_managers_other","tab_classrooms","acronym","reg_name","reg_num","bcin","bcil","tickets","xtac","culture_interest","public_utility","soft_cat","rcat","last_managers_change","next_managers_change","delegation","host","host_entities","more_federations","federations","members_cards","logo_federation","internal_regulation","federation_plate","ownership","property","rent","expropied","license","regulations","missing","robbed","missing_date","history_title","history","history_equipment","history_current","census","mailing_lists","activities_users","books","edited_books_title","edited_books_books","edited_books_book_entity","edited_books_newsletter","edited_books_magazine","highlighted_dates","notable_individuals","links","edited_books_memory","edited_books_date","edited_books_period","event","recognitions","recognitions_date","schedules","schedules_day_week","schedules_time_start","schedules_time_finish","addresses","ship_address","province","gmaps","addresses_create","addresses_edit","is_foundation_address","ship_to_same","building","regultations","total_m2","date_join","date_left","responsability","num_member","last_num_inserted","qr_code","left","left_send_email","groups_quotes","date_payment","month_payment","period","quantity","apply_to_all","is_donation","apply_to_all_list","apply_to_all_donation","apply_to_all_donation_title","apply_to_all_donation_desc","apply_to_all_donation_ok","apply_to_all_donation_ko","users_groups_quotes","group_quote","group_quote_period","discount_ini","discount_end","discount_percent","discount_quantity","manual_quantity","tab_remittances_users","concept","date_creation","count_users","sum_quantity","sepa","link_user","statusFilterAll","statusFilter0","statusFilter1","payer","iban","status_form","status_new","check_reemit","check_sent_return_notification","comments","comments_form","default_name","groups_with_quotes","edit_state","returns","refresh_payer","refresh_payer_confirm","no_remittances_users_title","no_remittances_users_ask","payer_payment_cash","payment_system","bank","cash","pdf_filename","pdf_ok","resume_total_plural","resume_total","resume_bank_plural","resume_bank","resume_cash_plural","resume_cash","create_remittance","check_partial_quotes","last_receips","send_returned_notification_title","send_returned_notification_content","send_returned_notification_content_again","send_returned_ko","send_returned_tooltip_button","send_returned_tooltip_sending","send_returned_tooltip_done","exporter_header_returned_status","ibans","create_iban","public_id","ordering","swift","sufix","returns_tax","bank_country_iso","no_ibans","name_create_remittance","payment_systems","main_menu_title","plattform","plattform_0","plattform_1","merchant","pswd","terminal","url_ok","url_ko","url_async","real","url","url_test","currency","encrypt","transaction_type","donations_projects","associations_name","reports_title","description_short","date_start","date_finish","minimum_amount","amount","public_entity","public_fac","public_fac_date","public_sum_donations","payment_card","payment_systems_id","payment_systems_fac","payment_transfer","payment_transfer_ibans_id","ibans_iban","legal_text_1","legal_text_2","legal_text_3","confirmation_text_1","confirmation_text_2","confirmation_email_1","count_donations","sum_donations","sum_donations_percent","remaining_days","minute","minutes","hour","hours","day","days","seconds","second","filter_only_current","only_pending","images","legal_text","public","preview","view","fac_validation_status","fac_validation_status_0","fac_validation_status_1","fac_validation_status_2","fac_validation_status_3","fac_validation_actions","fac_validation_actions_1","target_by_date","reports_desc","reports_transfer_validations","reports_transfer_validations_desc","reports_payments","reports_payments_desc","reports_certificates","reports_certificates_desc","validate_request","validate_request_button","validate_request_desc","view_web","friendly_url","utils","copy_clipboard_success","copy_clipboard_error","public_donations_projects","not_actived","for","live","early","finished","goal","view_all_projects","remain","remain_1","win","more_info","contribute","association_not_found","go_back","filter_date_after","filter_date_before","filter_organizer_all","ago","return","donations_users","create_to","pay","donations_projects_id","donations_projects_name","order_id","date_time","payment_method","payment_method_0","payment_method_1","payment_method_2","status_0","status_1","status_2","date","send_confirmation","transaction_id","certificate","send_status","send_date_time","confirmation_status","confirmation_date_time","only_accepted","only_certificate_not_sent","pdf_download","validate_transfer","pdf_certificate_filename","pdf_certificate_ok","pdf_certificate_ko","email_sent_ask_all","email_send_all_button","email_send_all_button_title","email_sent_confirmation","email_sent_confirmation_title","email_sent_confirmation_ask","email_sent_confirmation_ask_again","email_sent_confirmation_ko","email_sent_confirmation_tooltip_button","email_sent_confirmation_tooltip_sending","email_sent_confirmation_tooltip_done","want_certificate","copy","copy_title","donations_users_rel","donations_certificates","donations_payments","postal_labels","colxrows","margins_cell","margins_page","num_columns","num_rows","template","available_fields","fields","line_separator","margin_cell_left","margin_cell_top","margin_cell_right","margin_cell_bottom","margin_page_left","margin_page_top","margin_page_right","margin_page_bottom","last_row","generate_button_title","generate_modal_title","generate_modal_desc","generate_modal_button","generate_format","generate_pdf_filename","generate_ok_message","add_formats","no_classrooms_title","no_classrooms_ask","seats","type0","type1","type2","type3","type4","type5","type6","type7","type8","type9","type10","m2","is_public","show_fac","is_requestable","is_for_events","photos","overlapable","link_back","accessible","cession","rentable","lift","visibility","outdoor","use","use_0","use_1","use_2","use_others","identifier","acquisition_date","sale_date","guaranteed_value","cadastral_reference","insurance","docs_deed","docs_map","activities","activities_in_real_state","payments","real_state_activities","type_other","agreements_id","date_alert","insurance_who","insurance_who_0","insurance_who_1","relations","docs_contracts","docs_insurances","real_state_id","real_state_payments","payer_0","payer_1","payer_2","payer_3","payer_other","financing","financing_type","docs_billing","date_renewal","renewal_duration","date_renewal_quote","classrooms_activities","classrooms_payments","date_day","date_month","action_send_email","action_popup","postpone","date_apply","postpone_ok","delete_ok","size","fieldExcel","fieldDoc","fieldImg","change","webcam","webcam_capture","webcam_error","delete_photo_title","delete_photo_ask","imported","imported_none","copy_link","start","classroom","activity","is_public_filter","show_fac_filter","repetitive","repetitive_limit","repetitive_mode_edition_title_save","repetitive_mode_edition_title_delete","repetitive_mode_edition_only_one","repetitive_mode_edition_only_future","repetitive_mode_edition_all","repetitive_mode_edition_save","repetitive_mode_edition_delete","repetitive_mode_edition_delete_confirmation","repetitive_mode_edition_delete_confirmation_2","repetitive_mode_edition_cancel","overlapable_title","overlapable_ask","images_desc","docs_desc","docs_mark","bookings","exporter_header_id","exporter_header_title","exporter_header_date_start","exporter_header_date_finish","exporter_header_classrooms_name","exporter_header_activities_name","exporter_header_is_public","export_title","export_form_text","export_form_from","export_form_to","organizer","alert_days","alert_days_none","alert_days_0","alert_days_1","alert_days_2","alert_days_3","alert_days_4","alert_days_5","alert_days_6","alert_days_7","alert_days_8","alert_days_9","alert_days_10","alert_days_11","alert_days_12","alert_days_13","alert_days_14","tickets_url","max_assistants","is_internal","is_internal_filter","public_events","event_not_found","filter_activity","filter_organizer","filter_province","filter_region","filter_city","filter_activity_all","filter_province_all","filter_region_all","filter_city_all","no_centers_title","no_centers_ask","column_center","column_city","actions_revoke","actions_validate","actions_deny","actions_title0","actions_title1","actions_title2","actions_title3","actions_title4","actions_title5","actions_title6","action_button0","action_button1","action_button2","action_button3","action_button4","action_button5","action_button6","validate_num_member","revoke_send_email","revoke_title","revoke_ask","deny_ask","revoke_comment","revoke_button","resume_send","resume_send_title","resume_send_ask","resume_send_ask_again","resume_send_ok","resume_send_tooltip_button","resume_send_send_tooltip_sending","resume_send_tooltip_done","resume_send_ko","dashboard_resume_title","dashboard_resume_num_members","dashboard_resume_num_centers","dashboard_graphic_title","dashboard_graphic_cards","validation_email_code_0","validation_email_code_1","validation_email_code_2","validation_email_code_3","validation_email_code_4","validation_email_code_5","validation_email_code_6","validation_email_error","form_title","form_title_send_email","form_title_validate_ok","form_title_validate_ko","required_fields","resume_title","resume_pending_center","resume_pending_irmu","resume_validated","resume_error","resume_actions_accept","resume_actions_deny","resume_actions_revoke","resume_actions_logout","resume_dialog_title_3","resume_dialog_desc_3","resume_dialog_button_3","resume_dialog_title_5","resume_dialog_desc_5","resume_dialog_button_5","resume_dialog_title_4","resume_dialog_desc_4","resume_dialog_button_4","resume_dialog_title_8","resume_dialog_desc_8","resume_dialog_button_8","delete_center_title","delete_center_ask","documents_fac","create_user_button","create_user_title","create_group_button","create_group_title","email_sent_0","email_sent_title_0","email_sent_ask_0","email_sent_ask_all_0","email_sent_ask_again_0","email_send_all_button_0","email_send_all_button_title_0","email_sent_ko_0","email_sent_tooltip_button_0","email_sent_tooltip_sending_0","email_sent_tooltip_done_0","email_sent_1","email_sent_title_1","email_sent_ask_1","email_sent_ask_all_1","email_sent_ask_again_1","email_send_all_button_1","email_send_all_button_title_1","email_sent_ko_1","email_sent_tooltip_button_1","email_sent_tooltip_sending_1","email_sent_tooltip_done_1","email_only_pending","email_all","email_send_button","email_send_all_advise","email_status_0","email_status_1","email_status_2","email_status_3","email_status_4","delete_all_button","delete_all_button_title","delete_all_ask","reminder","reminder_0","reminder_1","reminder_2","reminder_3","reminder_4","reminder_5","reminder_6","reminder_7","reminder_8","social_nets","users_families","users_activities","create_button","assistants","adult","total_quantity","total_assistants","users_trainings","title0","title1","create0","create1","edit0","edit1","training_type","training_type0","training_type1","training_type2","training_type3","training_type99","training_type_others","periodicities","periodicity0","periodicity1","periodicity2","periodicity3","periodicity4","periodicity5","periodicity6","ages","ages0","ages1","ages2","ages3","ages4","num_classrooms","formal","students","teachers_workers","teachers_volunteers","total_hours","total_quantity0","total_quantity1","total_teachers_workers","total_teachers_volunteers","total_students","type11","type12","type13","type14","type15","type16","type99","type20","type21","type22","type23","type24","type25","type26","type27","formal_art_0","formal_art_1","formal_0","formal_1","users_social_projects","users_sections","participants","num_sections","total_participants","users_shows","total_inversion","amateur","amateur_1","amateur_2","adult_1","adult_2","adult_3","inversion","occupancy","check_members","status_3","checker_name","checker_num_member","checker_date","users_annuary","answered_status","answered_status_0","answered_status_1","answered_date_time","expiration_date","sent_status","reminder_status","confirm_status","send","send_dialog_text1_0","send_dialog_text1_1","send_dialog_text3","expired","email_sent_2","email_sent_title_2","email_sent_ask_2","email_sent_ask_again_2","email_sent_ko_2","email_sent_tooltip_button_2","email_sent_tooltip_sending_2","email_sent_tooltip_done_2","form_send","form_already_answered","form_general_data","form_activities","form_trainings_art","form_trainings","form_classrooms","form_social_nets","form_social_nets_title","form_economic_data","form_economic_data_incomings","form_economic_data_expenses","form_economic_data_inversion","form_shows","form_sections","form_workers","form_volunteers","form_edited_books_books","form_edited_books_newsletters","form_edited_books_magazines","form_entity","form_desc_activities","form_desc_classrooms","form_desc_shows","form_desc_sections","form_desc_trainings_art","form_desc_trainings","form_desc_workers","form_desc_volunteers","form_desc_social_nets","form_desc_economic_data","form_desc_edited_books_books","form_desc_edited_books_newsletters","form_desc_edited_books_magazines","users_economic_data","incomings","expenses","total","services","subsidies","rentals","products","privates","edit_title","exp_rentals","exp_workers","exp_material","exp_professionals","exp_groups","exp_supplies","exp_maintenance","exp_marketing","exp_others","avg_quote","detail","inv_building","inv_theatre","inv_bar","inv_accessibility","inv_security","inv_others","users_demografy","avg_age","avg_age_managers","percent_man","percent_woman","percent_no_binary","users_workers","create_0","create_1","edit_title_0","edit_title_1","administration","concierge","clean_up","comunication","accounting","maintenance","management","total_0","total_1","settings","data_desc","ibans_desc","payment_systems_desc","postal_labels_desc","alerts_desc","emails","emails_desc","emails_logs","emails_logs_desc","users_desc","maintenance_desc","profile","profile_desc","subscription_desc","bank_sufix","change_password","add_member","add_member_desc","add_member_actived","add_member_logo","add_member_bank_data","add_member_notification","add_member_form_text","add_member_lopd","add_member_form_sent","add_member_help","add_member_help_1","add_member_view_form","add_member_edit_form","add_member_pending_list","recercat_add_member","recercat_add_member_desc","recercat_add_member_actived","recercat_add_member_form_sent","recercat_add_member_help_1","emails_subject","emails_content","emails_message","emails_attached","emails_copy","emails_copy_desc","emails_vars","ibans_copy","ibans_copy_desc","done","backup","backup_desc","remittances_subscriptions","remittances_subscriptions_desc","sa_postal_labels","sa_postal_labels_desc","emails_WELCOME","emails_WELCOME_desc","emails_WELCOME_vars","emails_GROUP_LEFT","emails_GROUP_LEFT_desc","emails_GROUP_LEFT_vars","emails_CLASSROOM_REQUEST","emails_CLASSROOM_REQUEST_desc","emails_CLASSROOM_REQUEST_vars","emails_ADDMEMBER_REQUEST","emails_ADDMEMBER_REQUEST_desc","emails_ADDMEMBER_REQUEST_vars","emails_UNDELIVERED_EMAILS","emails_UNDELIVERED_EMAILS_desc","emails_UNDELIVERED_EMAILS_vars","emails_RESET_PSWD","emails_RESET_PSWD_desc","emails_RESET_PSWD_vars","emails_RECEIVE_RETURNED","emails_RECEIVE_RETURNED_desc","emails_RECEIVE_RETURNED_vars","emails_RECEIVE_RETURNED_CASH","emails_RECEIVE_RETURNED_CASH_desc","emails_RECEIVE_RETURNED_CASH_vars","emails_EVENT_INVITE","emails_EVENT_INVITE_desc","emails_EVENT_INVITE_vars","emails_EVENT_REMINDER","emails_EVENT_REMINDER_desc","emails_EVENT_REMINDER_vars","emails_ANNUARY_SEND","emails_ANNUARY_SEND_desc","emails_ANNUARY_SEND_vars","emails_ANNUARY_REMINDER","emails_ANNUARY_REMINDER_desc","emails_ANNUARY_REMINDER_vars","emails_ANNUARY_CONFIRM","emails_ANNUARY_CONFIRM_desc","emails_ANNUARY_CONFIRM_vars","emails_DIGITAL_CARD_SEND","emails_DIGITAL_CARD_SEND_desc","emails_DIGITAL_CARD_SEND_vars","emails_RECERCAT_USER_VALIDATE_EMAIL","emails_RECERCAT_USER_VALIDATE_EMAIL_desc","emails_RECERCAT_USER_VALIDATE_EMAIL_vars","emails_RECERCAT_USER_REQUEST_OK","emails_RECERCAT_USER_REQUEST_OK_desc","emails_RECERCAT_USER_REQUEST_OK_vars","emails_RECERCAT_USER_REQUEST_KO","emails_RECERCAT_USER_REQUEST_KO_desc","emails_RECERCAT_USER_REQUEST_KO_vars","emails_RECERCAT_CARD_REVOKED_BY_IRMU_CENTER_DELETED","emails_RECERCAT_CARD_REVOKED_BY_IRMU_CENTER_DELETED_desc","emails_RECERCAT_CARD_REVOKED_BY_IRMU_CENTER_DELETED_vars","emails_RECERCAT_IRMU_RESUME","emails_RECERCAT_IRMU_RESUME_desc","emails_RECERCAT_IRMU_RESUME_vars","emails_RECERCAT_CENTER_RESUME","emails_RECERCAT_CENTER_RESUME_desc","emails_RECERCAT_CENTER_RESUME_vars","emails_RECERCAT_REQUEST_DENIED_BY_IRMU","emails_RECERCAT_REQUEST_DENIED_BY_IRMU_desc","emails_RECERCAT_REQUEST_DENIED_BY_IRMU_vars","emails_RECERCAT_REQUEST_DENIED_BY_CENTER","emails_RECERCAT_REQUEST_DENIED_BY_CENTER_desc","emails_RECERCAT_REQUEST_DENIED_BY_CENTER_vars","emails_RECERCAT_CARD_REVOKED_BY_IRMU","emails_RECERCAT_CARD_REVOKED_BY_IRMU_desc","emails_RECERCAT_CARD_REVOKED_BY_IRMU_vars","emails_RECERCAT_CARD_REVOKED_BY_CENTER","emails_RECERCAT_CARD_REVOKED_BY_CENTER_desc","emails_RECERCAT_CARD_REVOKED_BY_CENTER_vars","emails_ANNUARY_FORM_ANSWERED","emails_ANNUARY_FORM_ANSWERED_desc","emails_ANNUARY_FORM_ANSWERED_vars","emails_ANNUARY_FORM_NUM_MEMBERS","emails_ANNUARY_FORM_NUM_MEMBERS_desc","emails_ANNUARY_FORM_NUM_MEMBERS_vars","emails_DONATIONS_USERS_CONFIRMATION","emails_DONATIONS_USERS_CONFIRMATION_desc","emails_DONATIONS_USERS_CONFIRMATION_vars","emails_DONATIONS_USERS_PRE_CONFIRMATION_TRANSFER","emails_DONATIONS_USERS_PRE_CONFIRMATION_TRANSFER_desc","emails_DONATIONS_USERS_PRE_CONFIRMATION_TRANSFER_vars","emails_DONATIONS_USERS_CERTIFICATE","emails_DONATIONS_USERS_CERTIFICATE_desc","emails_DONATIONS_USERS_CERTIFICATE_vars","emails_DONATIONS_RESUME_ASSOCIATION","emails_DONATIONS_RESUME_ASSOCIATION_desc","emails_DONATIONS_RESUME_ASSOCIATION_vars","emails_DONATIONS_RESUME_FAC","emails_DONATIONS_RESUME_FAC_desc","emails_DONATIONS_RESUME_FAC_vars","emails_DONATIONS_VALIDATE_REQUEST","emails_DONATIONS_VALIDATE_REQUEST_desc","emails_DONATIONS_VALIDATE_REQUEST_vars","emails_DONATIONS_VALIDATE_ACCEPTED","emails_DONATIONS_VALIDATE_ACCEPTED_desc","emails_DONATIONS_VALIDATE_ACCEPTED_vars","emails_DONATIONS_VALIDATE_REJECTED","emails_DONATIONS_VALIDATE_REJECTED_desc","emails_DONATIONS_VALIDATE_REJECTED_vars","emails_NEW_ADMIN","emails_NEW_ADMIN_desc","emails_NEW_ADMIN_vars","emails_NEW_ADMIN_PERMISSION","emails_NEW_ADMIN_PERMISSION_desc","emails_NEW_ADMIN_PERMISSION_vars","emails_ASSOCIATIONS_TRIAL","emails_ASSOCIATIONS_TRIAL_desc","emails_ASSOCIATIONS_TRIAL_vars","emails_ASSOCIATIONS_BEGIN","emails_ASSOCIATIONS_BEGIN_desc","emails_ASSOCIATIONS_BEGIN_vars","emails_ASSOCIATIONS_END","emails_ASSOCIATIONS_END_desc","emails_ASSOCIATIONS_END_vars","emails_ALERT","emails_ALERT_desc","emails_ALERT_vars","emails_SKELETON","emails_SKELETON_desc","emails_SKELETON_vars","emails_SA_SKELETON","emails_SA_SKELETON_desc","emails_SA_SKELETON_vars","emails_headers","emails_headers_sender_name","emails_headers_sender_email","emails_headers_reply_to","emails_headers_cc","emails_headers_bcc","emails_headers_vars","classrooms_requests","classrooms_requests_desc","classrooms_requests_actived","classrooms_requests_logo","classrooms_requests_notification","classrooms_requests_text","classrooms_requests_lopd","classrooms_requests_form_sent","classrooms_requests_help","classrooms_requests_help_1","classrooms_requests_view_form","donations_certificates_desc","donations_certificates_donations_users_certificate","donations_certificates_donations_users_certificate_vars_title","donations_certificates_donations_users_certificate_vars","donations_certificates_header","donations_certificates_sign","donations_certificates_footer","donations_own","donations_own_desc","donations_own_donations_own_header","donations_own_donations_own_footer","donations_own_donations_own_privacy","donations_own_donations_own_terms","donations_own_donations_own_fiscal","donations_own_donations_own_css","annuary_form","annuary_form_desc","annuary_form_logo","annuary_form_notification","annuary_form_notification_association","annuary_form_notification_num_members","annuary_form_text","annuary_form_lopd","annuary_form_sent","templates_copied","profile_user_tab","profile_pswd_tab","profile_password","profile_password_confirmation","profile_changed","form_not_actived","recercat_form_title","recercat_association_not_found","recercat_request_send","form_request_title","form_event_data_title","form_requester_data_title","form_event_date","form_event_duration","form_event_recurrency","form_event_name","form_event_description","form_event_resources","form_event_comments","form_event_phone","form_doc","form_doc_title","date_ordered","from","to","subject","date_sent","error_message","status_4","contact","only_not_sent","custom_fields","main_menu_desc","target_2","title_2","target_31","title_31","target_50","title_50","max_length","default_value","form_web","form_annuary","delete_ask","custom_fields_options","resources","add_root","new_node","item_moved","recent","i18nProvider","polyglotI18nProvider","locale","setActivePermissionData","permission_id","parse","indexPermission","setItem","permissions_groups","members_group_id","members_pending_group_id","associations_logo_doc","subscriptionModule","found","active_permission","modules_options","dateEventToCatalan","dateStart","dateFinish","dateStartDate","dateFinishDate","dataSenseHora1","getMonth","getDate","dataSenseHora2","format","timeEventToCatalan","dateOnlyToCatalan","dateAndTimeToCatalan","structArrayToIdList","arrayStruct","arrayIds","join","dateParser","toIsoString","tzo","getTimezoneOffset","dif","pad","num","getHours","getMinutes","getSeconds","Math","floor","abs","LinearProgressWithLabel","linearProgressValue","Box","sx","mr","LinearProgress","minWidth","round","RemainingTime","nSeconds","remainText","agoText","retValue","DateTimeField","FunctionField","sortable","DatagridNoResults","CopyToClipboard","textToCopy","clipboard","writeText","err","bind","DocsList","strTarget","strRedirect","order","ResourceContextProvider","List","basePath","filter","bulkActionButtons","pagination","perPage","Datagrid","renderFile","TextField","renderSize","OrderDocs","direction","MarkDocs","redirect","privacy","DeleteButton","undoable","EditDocButton","useUpdate","update","Grid","TextInput","mark","DocsListShow","resource_name","context_provider","base_path","mimeType","includes","docs_id","fileExtension","split","pop","classIcon","defaultStyles","docx","xlsx","xls","txt","png","webm","mp4","extension","ImageViewer","imageUrl","setImageUrl","useEffect","urlApi1","response","fetchImage","is_div","backgroundImage","link_name","src","alt","BoxPhotoUser","camera","emptyImg","default_img","reference","per_page","textAlign","ReferenceManyField","SingleFieldList","linkType","useStyles","appBar","menu","marginTop","filter_list_item","maxWidth","MyLoading","TextFieldShow","link_with_protocol","emptyText","TextHtmlShow","dangerouslySetInnerHTML","__html","UserAvatarIcon","Avatar","GroupsAvatarIcon","EventsAvatarIcon","RealStateAvatarIcon","AgreementsAvatarIcon","InsurancesAvatarIcon","AlertsAvatarIcon","UserAvatarField","UserFullNameTxt","RenderAge","birthday_arr","substring","birthday_date","ageDifMs","now","getTime","ageDate","getUTCFullYear","RenderDate","date_str","RenderGender","RenderBoolean","ChipFieldUserName","useRecordContext","Chip","UserInput","dataProvider","useDataProvider","info","setInfo","setLoading","setError","resettable","getList","AutocompleteInput","optionText","complete_name","suggestionLimit","clearAlwaysVisible","chipsUsers","chips","map","clickable","fetchCustomFields","setCustomFields","only_form_web","only_form_annuary","CustomFieldsEdit","accordion","prefix","customFields","Typography","Divider","defaultExpanded","CustomFieldsForm","element","index","validations","sm","multiline","NumberInput","DateInput","BooleanInput","SelectInput","optionValue","FormDataConsumer","formData","fieldKey","CheckboxGroupInput","row","CustomFieldsShow","divider","aux_prefix","find","arr","updateAssociationInfo","authHeaders","request","Request","json","reload","SettingsNotAvailable","bgcolor","align","SettingsEmailsItem","classes","useHistory","setError2","availableCustomFieldsTemplates","getOne","params","sender_name","sender_email","reply_to","cc","bcc","formProps","TabbedShowLayout","syncWithLocation","Tab","contentClassName","path","BootstrapDialog","styled","ListActionsIbansList","IbansCreateButton","FormContent","IbansEditButton","ListActions","MyCreateButton","MyEditButton","PostalLabelsCreateButton","PostalLabelsEditButton","RecercatHeader","OptionsRecercatCentersInput","useFormState","recercat_centers_city","ReferenceInput","q","largeIconOK","fontSize","largeIconKO","UsersGrid","TableContainer","component","Paper","Table","TableHead","TableRow","TableCell","TableBody","border","doAction","user_group_id","Header","domain","replaceAll","SendEmailIconStatus","openAgain","setOpenAgain","sentEmail","again","handleClickEmail","condition","tooltip_button","tooltip_ko","tooltip_sending","tooltip_done","popup_title","popup_content","popup_content_again","email_status","welcome_status","left_status","returned_status","invite_status","card_send_status","resume_send_status","trial_status","begin_status","end_status","stopPropagation","PermissionsList","createForm","editForm","hasCreate","noEdit","user_permission_public_id","choicesRoles","PermissionsFormNew","initialValue","PermissionsFormEdit","AssociationsList","useMediaQuery","breakpoints","down","chipsSubscriptions","DateField","showTime","EditButton","arrSubscriptions","substr","dateNow","date30d","setDate","aux_subscription","React","CreateButton","AssociationsEdit","toISOString","slice","future","mutationMode","TabbedForm","FormTab","AssociationsCreate","Create","SimpleForm","OptionsInput","modules_id","OptionForm","AssociationsFilter","Filter","alwaysOn","ElementTitle","MapPoint","point_x","point","nitems","x","point_y","y","id_circle","id_text","cx","cy","r","stroke","strokeWidth","fill","TooltipRegion","triggerRef","rx","ry","MapCatalonia","hover","points","pathRef","d","transform","Map","setHover","itemPoint","xmlns","ariaLabel","parentElement","onMouseEnter","onMouseOver","onMouseDown","preventDefault","label_title","m","p","IconButton","right","top","grey","b","users_id","secondary","ListItem","ListItemButton","Link","pathname","ListItemIcon","ListItemText","primary","COLORS","flexGrow","class","activeModulesList","FacmChart","dataKey","current_year","color_cy","color_ly","last_year","dataKey_current_year","dataKey_last_year","ResponsiveContainer","LineChart","margin","bottom","CartesianGrid","strokeDasharray","XAxis","YAxis","yAxisId","angle","dx","Tooltip","Line","RADIAN","PI","renderCustomizedLabel","midAngle","innerRadius","outerRadius","percent","radius","cos","sin","textAnchor","dominantBaseline","toFixed","DashboardSuperadmin","DashboardRecercat","md","DashboardFACM","DashboardFederation","DashboardDefault","CardStatusRecercat","Card","CardContent","gutterBottom","statistics","members_total","recercat_num_centers","CardStatusFederation","federation_economic_data","economic_data_incomings","economic_data_with","economic_data_expenses","economic_data_inversion","groups_members_name","federations_total","getTooltipMessage","avg_age_with","placement","arrow","cursor","parseFloat","BarChart","layout","tickFormatter","formatXAxis","Bar","volunteers_with","volunteers","workers_with","workers","CustomTooltip","active","borderRadius","toLocaleString","minimumFractionDigits","maximumFractionDigits","tick","CardStatusFederationUsers","federation_data_gender","federations_gender_female","federations_gender_male","federations_gender_nobinary","responsabilities_gender_woman","responsabilities_gender_man","responsabilities_gender_no_binary","federations_people_associations","federations_people_people","federations_avg_age_associations","federations_avg_age","federations_gender_associations","PieChart","Legend","Pie","labelLine","entry","Cell","CardStatusFederationManagers","federation_responsabilities_data_gender","responsabilities_with","responsabilities_avg_age_with","responsabilities_avg_age","CardStatusDefault","data_gender","members_female_num","members_male_num","members_nobinary_num","members_total_persons_gender","members_total_persons_age","members_avg_birthday","CardFACMProjects","CardFACMEvents","CardRecercatChart","stackId","CardMapFederation","CardChartMembers","CardRemittances","CardActions","CardPyramide","members_total_persons_age_and_gender","ComposedChart","pyramid","unit","reversed","interval","dot","CardFederationEvolution","CardEventsCalendar","classrooms_name","ShowButton","CardPendingUsers","user_complete_name","members_group_pending","members_total_pending","CardLastJoinedUsers","members_group","CardFederationBirthdays","birthdays_current_year","years_old","CardSupport","CardSubscriptions","subscription_info","module_option_name","module_option_public_id","users_num","users_num_max","users_num_percent","docs_size","docs_size_max","docs_size_percent","root","HeaderPage","ExportButton","maxResults","alwaysEnabled","defaultIcon","customExporter","exporter","customSort","rest","useListContext","filterValues","currentSort","exporterFromContext","useCallback","fetchRelatedRecords","sanitizeRestProps","CityInput","cities","setCities","BackLink","flexWrap","DonationsUsersList","current_path","report","backLink","page_transfer_validations","page_donations_project","page_donations_project_fac","is_fac","is_donation_own","can_create_donations","can_go_back","only_transfer","filterDefaultValues","getOrderId","NumberField","donations_projects_payment_systems_fac","periodical","toString","padStart","RenderStatus","orange","green","red","ConfirmButton","donations_users_id","DateTimeInput","MyFilter","DonationsUsersDetails","items","itemsForExport","jsonExport","rename","csv","csv_new","downloadCSV","filterExport","EditDonationButton","useRedirect","disableEnforceFocus","CreateDonationButton","DonationsUsersForm","RadioButtonGroupInput","DonationsProjectsList","handleClickView","handleClickDonations","handleClickPreview","hash_preview","only_current","remaining_seconds","DonationsPaymentsList","deepOrange","MyFilterPayments","ibans_id","exporterPayments","url_association","ListActionsPayments","filterExportPayments","MyActions","DonationsProjectsEdit","errorMessage","HttpError","toolbar","include_payment_system_fac","FormToolbar","Toolbar","textOverflow","whiteSpace","ValidateButton","ValidateRequestButton","DonationsCertificatesList","donations_certificates_id","DownloadCertificate","Error","contentDisposition","get","fileName","trim","tempLink","setAttribute","appendChild","removeChild","revokeObjectURL","AnnuaryActions","last_years","annuaryExporter","annuaryItemsForExport","annuaryItem","calc","avg","ResponsabilitiesActions","date_query","responsabilitiesExporter","responsabilitiesItemsForExport","responsabilityItem","responsability_name","entity_name","entity_city","paginationContainer","Paginador","onPageChange","totalPages","ceil","Pagination","count","hidePrevButton","hideNextButton","onChange","TicketsButton","show_tickets_url","FormTitle","users_name","media","paddingBottom","actionSpacer","ModuleView","ids","openDialog","closeDialog","lg","xl","exact","Dashboard","createHistory","imgName","noLayout","BooleanField","listUrl","formUrl","formCompleteUrl","parseInt","useGetList","gestioAvailableTemplates","federationAvailableTemplates","digitalCardsAvailableTemplates","remittancesAvailableTemplates","calendarAvailableTemplates","recercatAvailableTemplates","donationsOwnAvailableTemplates","indexOf","setLanguage","showPasswordFields","setShowPasswordFields","storedLanguage","password_confirmation","marginY","FormControlLabel","control","Checkbox","checked","PasswordInput","errorApi","setErrorApi","formSent","setFormSent","associations_id_string","openLopd","setOpenLopd","closeErrorDialog","closeLopdDialog","dividers","usersGroupsId","setUsersGroupsId","setAction","list_group_pending_center","list_group_pending_irmu","list_group_members","users_groups_id","center_hash","setClassrooms","classrooms_id_string","classrooms_id","rc_string","rc","openTerms","setOpenTerms","footer","setFooter","setTerms","setLopd","signup_footer","closeTermsDialog","openAnnuaryDialog","setOpenAnnuaryDialog","openResponsabilitiesDialog","setOpenResponsabilitiesDialog","openDonationsPaymentsDialog","setOpenDonationsPaymentsDialog","openDonationsCertificatesDialog","setOpenDonationsCertificatesDialog","datesLastMonthStc","firstDayLastMonth","lastDayLastMonth","datesLastMonth","handleCloseResponsabilitiesClick","handleResponsabilitiesSubmit","resp","handleDonationsProjectsClick","handleDonationsTransferValidationsClick","handleCloseDonationsCertificatesClick","handleSubmitDonationsCertificates","handleCloseDonationsPaymentsClick","handleSubmitDonationsPayments","DONATIONS_OWN","step","ReferenceArrayInput","SelectArrayInput","year_string","last_years_string","date_query_string","responsabilities_string","toLocaleDateString","useLocation","searchParams","URLSearchParams","setPage","setSearch","setOrganizer","setActivity","setProvince","setRegion","setCity","dateStartAfter","setDateStartAfter","dateStartBefore","setDateStartBefore","setEvents","setActivities","organizers","setOrganizers","provinces","setProvinces","regions","setRegions","events_fac","updateUrl","newSearch","newPage","scrollTo","organizers_id","activities_id","start_gte","start_lte","provinces_id","regions_id","cities_id","onSubmit","placeholder","Select","labelId","MenuItem","events_address","events_cities_name","activities_name","organizers_name","events_id_string","events_id","cities_name","ArrowBack","fullHeightHover","annuaryForm","setAnnuaryForm","token_string","token","answered","ArrayInput","SimpleFormIterator","disableReordering","inline","getItemLabel","checkMemberData","setCheckMemberData","id_string","hash_string","hash","date_checker","rowCell","GroupQuotePeriodList","groups_quotes_id","GroupQuotePeriodEdit","GroupsQuotesList","group_id","groups_id","SelectField","choicesTypeQuote","ApplyToRemittancesButton","CreateCustomButton","GroupsQuotesEdit","customToolbarStyles","CustomToolbar","GroupsQuotesCreate","groups_id_string","ElementTitleEdit","ElementTitleNew","ElementTitleGroupsQuotes","PDFField","GroupsCardsList","pdfUrl","setPdfUrl","setTitle","updatePDFCardView","handleChangeType","card_type","choicesTypeGroupCard","label_create","label_edit","GroupsCardsItems","choicesPosition","choicesTypeGroupCardConfig","GroupsCardsCreateButton","GroupsCardsEditButton","DialogContentCards","NumberInputSizeYConditioned","NumberInputNumLinesConditioned","NumberInputFontSizeConditioned","BooleanInputUppercaseConditioned","ColorInputConditioned","TitleInputConditioned","SelectInputAlignmentConditioned","choicesAlignmentGroupCard","OpacityInputConditioned","RectangleRoundInputConditioned","MessageInputConditioned","arrFields","cardType","arrPositions","DownloadDemoCard","DownloadCard","RegenerateCard","regenerateCard","GroupsCardsSendButton","num_pending","num_total","option_0","option_1","UsersGroupsQuotesList","OptionsQuotesInput","OptionsQuotesPeriodsInput","UsersGroupsQuotesEdit","initialFormState","useForm","defaultValues","setValue","reset","watch","UsersGroupsQuotesShowList","UsersGroupsShow","card_hash","groups_public_id","UsersGroupsEdit","GroupForm","GroupFormNew","NumMemberInput","LastNumMemberInserted","setGroup","LeftGroupUserButton","UsersAnnuaryShow","UsersAnnuaryList","CustomEditButton","CustomCreateButton","lastYear","CustomForm","UsersAnnuarySendButton","UsersGroupsResponsabilitiesShow","UsersGroupsResponsabilitiesEdit","userId","GroupResponsabilityForm","GroupResponsabilityFormNew","GroupResponsabilitiesToolbar","eventsForExport","group_name","UsersGroupsResponsabilitiesList","GroupResponsabilityFormCreate","GroupResponsabilityFormEdit","UsersEditedBooksShow","UsersEditedBooksEdit","UsersEditedBooksFormHighlightedDates","UsersEditedBooksForm","UsersRecognitionsShow","UsersRecognitionsEdit","UsersRecognitionsForm","UsersSchedulesShow","day_week","time_start","time_finish","UsersSchedulesEdit","UsersSchedulesForm","formatTime","timeParser","v","UsersAddressesCreateButton","UsersAddressesEditButton","AddressDialogContent","UsersAddressesShow","UsersAddressesEdit","EmailsHistoryList","rowClick","from_name","from_email","UserLinkButton","CardHeader","avatar","EmailsDetails","html","SocialNetsList","net","net_link","SocialNetsFormNew","SocialNetsFormEdit","SocialNetsListShow","UsersFamiliesList","UserFamilyFormNew","allowEmpty","UsersFamiliesShow","DownloadXLSButton","mainLoading","queryStringFilter","encodeURIComponent","queryStringFilterSearch","UsersPostalLabelsCreateButton","FormatDialogContent","optionRenderer","MyFilterUsers","federationCustomFields","setFederationCustomFields","federationSportsCustomFields","setFederationSportsCustomFields","isFetching","isLoading","setPerPage","hasPreviousPage","hasNextPage","setSort","setFilters","displayedFilters","fieldsString","showFilter","hideFilter","selectedIds","onSelect","onToggleItem","onUnselectItems","defaultTitle","refetch","fieldsDate","fieldsNumber","fieldsBoolean","fieldsUserType","fieldsQuote","fieldsRemittance","fieldsGender","fieldsDocs","fieldsNets","fieldsProperty","fieldsCession","fieldsDelegation","fieldsClassrooms","fieldsEconomicData","fieldsDemografy","fieldsWorkers","fieldsActivities","fieldsActivitiesSelect","fieldsShows","fieldsShowsSelect","fieldsSections","fieldsSectionsSelect","fieldsCensusSelect","fieldsBooksSelect","fieldsMailingListsSelect","fieldsClassroomsTypeSelect","fieldsTrainingsType0Select","fieldsTrainingsType1Select","fieldsTrainingsFormalArtSelect","fieldsTrainingsFormalSelect","fieldsSocialProjecteTypeSelect","fieldsGroupSelect","fieldsRegionSelect","fieldsProvinceSelect","fieldsCountrySelect","fieldsRecercatCenterSelect","defaultYear","button_title","f","o","scopedFormData","getSource","filterChoice","checkCustomFieldType","filterOperations","filterBooleanChoice","getChoices","typeList","ct_id","operatorsToApply","BulkDeleteButton","setSelectedIds","unselectAll","useUnselectAll","handleClose","handleDelete","deletePromises","Promise","allSettled","results","errors","reason","DialogContentText","BulkGroupsButton","group_public_id","source_group_id","changePromises","newValues","resolve","reject","successCount","styleNotification","SaveContext","source_groups_id","date_action","ImportButton","handleClickGetTemplate","handleSubmit2","RemittancesUsersEditButton","remittances_users_id","reemit","return_notification","RemittancesUsersRefreshButton","RemittancesUsersToolbar","remittances_id","remittance_user","payer_first_name","payer_last_name_1","payer_last_name_2","payer_iban","payer_nif","RemittancesUsersCreateButton","DownloadSEPAButton","ms","strName","require","fileDownload","xmlValue","DownloadPDFButton","Empty","subtitle","_a","useResourceContext","emptyMessage","smart_count","_","useGetResourceLabel","getResourceLabel","inviteMessage","paragraph","text","RemittancesList","AccountBalanceBigIcon","RemittancesFilter","ListActionsRemittancesList","users_deleted","RemittancesEdit","RenderPaymentSystem","useStylesRemittanceInfo","RemittanceResume","Intl","NumberFormat","total_bank","total_cash","EqualizerIcon","num_receips","AccountBalanceIcon","num_receips_bank","EuroIcon","num_receips_cash","RemittancesUsersFilter","RemittancesUsersItemsDetails","payer_name","tamCols","RemittancesUsersItemsForm","CustomToolbarCreateRemittance","RemittancesCreate","default_remittance_name","returnsRenderer","choice","str","ibans_name","UsersContactsList","rel","initial_values","users_rel_id","user_rel","UserContactForm","UsersContactsShow","only_valid_contacts","UsersEmailsList","UserEmailForm","UsersEmailsShow","UsersEconomicDataList","UsersEconomicDataEditButton","RenderEconomicDataTotalIncoming","RenderEconomicDataTotalExpenses","RenderEconomicDataTotalInversion","RenderEconomicDataTotal","UsersEconomicDataShow","UsersEconomicDataToolbar","UsersEconomicDataCreateButton","UsersEconomicDataForm","UsersEconomicDataDetails","total_incomings","total_expenses","UsersDemografyList","UsersDemografyToolbar","UsersDemografyCreateButton","UsersDemografyEditButton","UsersDemografyForm","UsersWorkersList","UsersWorkersEditButton","RenderWorkersTotal","UsersWorkersShow","UsersWorkersToolbar","UsersWorkersCreateButton","UsersWorkersForm","UsersWorkersDetails","total_workers","UsersActivitiesList","RenderTotalQuantity","forEach","RenderTotalAssistants","UsersActivitiesShow","UsersActivitiesDetails","ArrayField","ReferenceField","UsersTrainingsList","RenderTotalStudents","RenderTotalTeachersWorkers","total_teachers","RenderTotalTeachersVolunteers","UsersTrainingsShow","UsersTrainingsDetails","UsersSocialProjectsList","UsersSocialProjectsShow","UsersSocialProjectsDetails","UsersShowsList","RenderTotalInversion","UsersShowsShow","UsersShowsDetails","UsersSectionsList","RenderNumSections","RenderTotalParticipants","UsersSectionsShow","UsersSectionsDetails","ClassroomsList","user_classroom","UsersClassroomsShow","UsersClassroomsDetails","target_photo","target_doc","ListActionsClassrooms","ClassroomsCreateButton","automaticName","setAutomaticName","ClassroomsActions","ClassroomsEdit","autoFocus","RealStatePaymentsList","RealStatePaymentsDetails","RealStatePaymentsEdit","RealStatePaymentsCreate","InsurancesList","chipsRealState","InsurancesDetails","InsurancesEdit","InsurancesCreate","AgreementsList","AgreementsDetails","AgreementsEdit","AgreementsCreate","RealStateList","RealStateEdit","RealStateShow","useShowController","Show","SimpleShowLayout","RealStateActions","RealStateCreate","RealStateInput","RealStateActivitiesList","real_state_name","chipRealState","chipAgreement","agreements_name","RealStateActivitiesDetails","RealStateActivitiesEdit","AgreementsInput","RealStateActivitiesCreate","UsersList","firstName","setFirstName","lastName1","setLastName1","lastName2","setLastName2","setEmail","recercatCentersId","setRecercatCentersId","recercat_centers_id","rowsPerPageOptions","ChipField","send_email","BulkActionButtonToolbar","exporterRecercat","exporterFAC","getAge","dateString","birthDate","group_num_member","center","recercat_centers_public_id","ElementTitleUsers","UserEditActions","UsersEdit","UsersCreate","UsersFilter","UsersShow","social_nets_reference","users_contacts_reference","users_emails_reference","users_contacts_row_click","memory","ReferenceArrayField","RenderBankData","UsersShowActions","ValidateUserButton","backgroundColor","paper","MySearch","historySize","ListItemAvatar","primary_text","secondary_text","GroupsList","TreeWithDetails","GroupsCreate","GroupsEdit","nodeActions","titleField","allowMultipleRoots","draggable","linkTo","NodeActions","DeleteMenuItemWithConfirmation","ContactsHeader","ShowController","controllerProps","has_more_config","is_editable","ModulesList","ModulesEdit","RichTextField","ModulesCreate","RecercatCentersList","CorporateFareIcon","RecercatCentersFilter","ListActionsRecercatCentersList","confirmTitle","confirmContent","RecercatCentersEdit","RecercatCentersCreate","next_public_id","DocsFacList","DcoumentsFACHeader","AlertsList","AlertsDetails","AlertsEdit","AlertsCreate","BookingsList","BookingsToolbar","label_button","RefreshButton","booking","BookingsCreateButton","BookingsDeleteAllButton","handleConfirm","BookingsSendAllButton","ActivitiesFilter","ClassroomsFilter","onlyForEvents","PublicFilter","ShowFacFilter","IsInternalFilter","CalendarFilters","EventsActions","endPoint","daysLater","setMinutes","converter","String","borderColor","editable","groupId","EventsList","ListProps","CalendarProps","timeZone","scrollTime","slotDuration","slotLabelInterval","allDaySlot","nowIndicator","displayEventTime","convertToEvent","eventClick","clickInfo","jsEvent","tagName","linkToRecord","eventContent","CreateDialogProps","EditDialogProps","CreateDialogForm","EditDialogForm","EventToolbar","repetitive_id","data1","SaveButtonWithEditionMode","formState","edition_mode","DeleteButtonWithEditionMode","FormEvent","dt_start","dt_end","hoursLater","repetitive_days","mark_title","ClassroomInput","valor","ColorInputHidden","setColor","removeItem","CustomFieldsOptionsList","custom_fields_id","CustomFieldsOptionsEditButton","CustomFieldsOptionsEdit","CustomFieldsOptionsCreate","CustomFieldsList","CustomFieldsListTarget","CustomFieldsDetails","CustomFieldsCreate","httpClient","fetchUtils","fetchJson","convertDataRequestToHTTP","queryString","targets_str","destination","GET_LIST","Object","keys","key","GET_ONE","GET_MANY","GET_MANY_REFERENCE","UPDATE","CREATE","rawFile","FormData","append","DELETE","convertHTTPResponse","hasOwnProperty","totalElements","Array","isArray","UPDATE_MANY","all","responses","DELETE_MANY","simpleRestProvider","Alerts","postponeId","setPostponeId","error1","numAlerts","setNumAlerts","anchorEl","setAnchorEl","Boolean","tomorrow","tomorrowISO","fetchData","users_permissions_id","infoData","num_alerts","intervalId","setInterval","clearInterval","currentTarget","Badge","badgeContent","Menu","MenuListProps","PaperProps","maxHeight","TransitionComponent","Fade","ConfigurationMenu","PermissionsMenu","menuItem","MyUserMenu","UserMenu","MyAppBar","members_group_link","handleClickSettings","AppBar","userMenu","wrap","MenuItemLink","primaryText","MyLayout","Layout","removeStorage","authProvider","login","users_login_id","checkError","checkAuth","getPermissions","CustomLoginForm","Login","LoginForm","NotFound","App","Admin","disableTelemetry","customRoutes","customReducers","tree","catchAll","loginPage","Resource","usersIcon","AssociationsIcon","modulesIcon","reportWebVitals","onPerfEntry","Function","getCLS","getFID","getFCP","getLCP","getTTFB","generalClassName","ReactDOM","StrictMode","classList"],"mappings":"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","file":"static/js/main.920940e4.chunk.js","sourcesContent":["\r\nimport { email\r\n} from 'react-admin';\r\n\r\nvar EMAIL_REGEX = /^(([^<>()\\[\\]\\\\.,;:\\s@\"]+(\\.[^<>()\\[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/; // eslint-disable-line no-useless-escape\r\n\r\n\r\nexport const validateMaxLength = (max, message = '') => {    \r\n  let msg = message.replace('%{max}', max);\r\n  return (\r\n    value => value && value.length > max ? msg : undefined\r\n  );\r\n};\r\n\r\nexport const validateMinMaxLengthAndCharacters = (message = '') => {  \r\n    \r\n  let msg = message.replace('%{max}', 15);\r\n  msg = msg.replace('%{min}', 8);\r\n    \r\n  var decimal=  /^(?=.*\\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[^a-zA-Z0-9])(?!.*\\s).{8,15}$/;\r\n    \r\n  return (value => value && value.match(decimal) ? undefined : msg);\r\n\r\n};\r\n\r\n/*\r\nexport var regex = lodashMemoize(function (pattern, message) {\r\n    if (message === void 0) { message = 'ra.validation.regex'; }\r\n    return function (value, values) {\r\n        return !isEmpty(value) && typeof value === 'string' && !pattern.test(value)\r\n            ? getMessage(message, { pattern: pattern }, value, values)\r\n            : undefined;\r\n    };\r\n}, function (pattern, message) {\r\n    return pattern.toString() + message;\r\n});*/\r\n\r\n/*export const validateEmail = ( message = '') => {    \r\n    return (\r\n    value => value && !email() ? message : undefined\r\n    );\r\n};*/\r\nexport const validateEmail = () => {    \r\n  return (\r\n    email()\r\n  );\r\n};\r\n\r\nexport const validateTrue = (message = '') => {\r\n    \r\n  return (\r\n    value => !value ? message : undefined\r\n  );\r\n};\r\n\r\n\r\nexport const validateInteger = (message = '') =>\r\n{    \r\n  return (\r\n    value => value && ( isNaN(Number(value)) || !(isNaN(Number(value))) && (value > 10000000 || value < 0) ) ? message : undefined\r\n  );\r\n};\r\n\r\nexport const validateIntegerLowerOrEqualThan = (limit,message = '') =>\r\n{    \r\n  let msg = message.replace('%{max}', limit);\r\n  return (\r\n    value => value && ( isNaN(Number(value)) || !(isNaN(Number(value))) && (value > limit ) ) ? msg : undefined\r\n  );\r\n};\r\n\r\nexport const validateDouble = (message = '') =>\r\n{    \r\n  return (\r\n    value => value && ( isNaN(Number(value)) || !(isNaN(Number(value))) && (value > 100000000 || value < -100000000) ) ? message : undefined\r\n  );\r\n};\r\n\r\nexport const validateDoubleGreatZero = (message = '') =>\r\n{    \r\n  return (\r\n    value => value && ( isNaN(Number(value)) || !(isNaN(Number(value))) && (value <= 0 ) ) ? message : undefined\r\n  );\r\n};\r\n\r\nexport const validateDoubleGreatOrEqualThan = (limit, message = '') =>\r\n{    \r\n  return (\r\n    value => value && ( isNaN(Number(value)) || !(isNaN(Number(value))) && (value < limit ) ) ? message : undefined\r\n  );\r\n};\r\n    \r\nexport const validateNumber = (message = 'Must be a number') =>\r\n  value => value && isNaN(Number(value)) ? message : undefined;\r\n    \r\nexport const validatePercent = (message = '') =>\r\n{    \r\n  return (\r\n    value => value && ( isNaN(Number(value)) || !(isNaN(Number(value))) && (value > 100 || value < 0) ) ? message : undefined\r\n  );\r\n};","// ENVIRONMENT VARIABLES\r\nimport caLocale from \"@fullcalendar/core/locales/ca\";\r\nimport esLocale from \"@fullcalendar/core/locales/es\";\r\n//export const apiUrl = process.env.REACT_APP_API_URL;\r\nexport const projectUrl = (window.location.hostname === 'localhost' ? 'http://' : 'https://') + window.location.hostname + (window.location.port && window.location.port !== 80 ? (':' + window.location.port) : '');\r\n\r\nexport const apiUrl = window.location.hostname === 'localhost' ? 'http://localhost:81' :\r\n  window.location.hostname === 'testentitats.sifac.cat' ? 'https://testentitats.sifac.cat:8443' :\r\n    window.location.hostname === 'entitats.sifac.cat' ? 'https://entitats.sifac.cat:8443' :\r\n      window.location.hostname === 'admin.gestioentitats.cat' ? 'https://api.gestioentitats.cat:8443' :\r\n        'https://api.gestioentitats.cat:8443';\r\n\r\nexport const donationsUrl = window.location.hostname === 'localhost' ? 'http://localhost:3001' :\r\n  window.location.hostname === 'testentitats.sifac.cat' ? 'https://testdonatius.sifac.cat' :\r\n    window.location.hostname === 'entitats.sifac.cat' ? 'https://donatius.sifac.cat' :\r\n      window.location.hostname === 'admin.gestioentitats.cat' ? 'https://donatius.gestioentitats.cat' :\r\n        'https://donatius.sifac.cat';\r\n\r\n// CONSTANTS\r\nexport const apiOrigin = 'http://localhost:3000';\r\n\r\nexport const maxDocFileSize = 20000000; // API limitada a 25MB\r\nexport const maxImgFileSize = 5000000; // API limitada a 25MB\r\n\r\nexport const timeZone = 'Europe/Madrid'; \r\n\r\nexport const getLanguageFromStorage = () => {\r\n  const languageId = localStorage.getItem('language'); \r\n  const languageMap = { 0: 'ca', 1: 'es' }; \r\n  return languageMap[languageId] || 'ca'; \r\n};\r\n\r\nexport const getImagePath = (imageName) => {\r\n  const language = getLanguageFromStorage(); \r\n  \r\n  const imageFolder = language === 'ca' ? 'img_ca' : 'img_es';\r\n\r\n  return `/img/${imageFolder}/${imageName}`;\r\n};\r\n\r\nexport const apiDefaultLanguage = getLanguageFromStorage();\r\n\r\nexport const  userLocale = getLanguageFromStorage();\r\n\r\nexport const locales = {\r\n    ca: caLocale,\r\n    es: esLocale,\r\n};\r\n\r\nexport const targets = {\r\n  ASSOCIATION : 0,\r\n  GROUP : 1,\r\n  USER : 2,\r\n  MODULE : 3,\r\n  EVENT : 4,\r\n  ACTIVITY : 5,\r\n  ACTIVITY_CATEGORY : 6,\r\n  CLASSROOM_PHOTO : 7,\r\n  USER_PHOTO : 8,\r\n  TEMPLATE : 9,\r\n  CLASSROOM_DOC: 10,\r\n  USER_CLASSROOM_DOC: 11,\r\n  USER_CLASSROOM_PHOTO: 12,\r\n  GROUP_CARD: 13,\r\n  DOCUMENT_FAC: 14,\r\n  EVENT_IMAGE: 15,\r\n  USER_MORE_PHOTOS : 16,\r\n  REAL_STATE_DEED : 17,\r\n  REAL_STATE_MAP : 18,\r\n  REAL_STATE_ACTIVITY_CONTRACT : 19,\r\n  REAL_STATE_ACTIVITY_INSURANCE : 20,\r\n  REAL_STATE_PAYMENT : 21,\r\n  AGREEMENT : 22,\r\n  INSURANCE : 23,\r\n  DONATION_PROJECT_IMAGE : 24,\r\n  DONATION_CERTIFICATE_HEADER : 25,\r\n  DONATION_CERTIFICATE_FOOTER : 26,\r\n  DONATION_CERTIFICATE_SIGN : 27,\r\n  GROUP_CARD_GOOGLE_WALLET: 28,\r\n  GROUP_CARD_GOOGLE_WALLET_ICON: 29,\r\n  SETTINGS_DOCS : 30,\r\n  USER_FEDERATION: 31,\r\n  GROUP_CARD_APPLE_WALLET_ICON: 32,\r\n  USER_FEDERATION_SPORTS: 50,\r\n};\r\n        \r\nexport const targetsResources = [\r\n  'settings',\r\n  'groups-tree',\r\n  'users',\r\n  'modules',\r\n  'events',\r\n  'activities',\r\n  'activities_categories',\r\n  'classrooms',\r\n  '',\r\n  'settings-emails',\r\n  'classrooms',\r\n  'users_classrooms',\r\n  'users_classrooms',\r\n  'groups-tree',\r\n  'docs_fac',\r\n  'events',\r\n  'users',\r\n  'real_state',\r\n  'real_state',\r\n  'real_state_activities',\r\n  'real_state_activities',\r\n  'real_state_payments',\r\n  'agreements',\r\n  'insurances',\r\n  'donations_projects',\r\n  'settings',\r\n  'settings',\r\n  'settings',\r\n  'users',\r\n  'users',\r\n  'settings-docs',\r\n];\r\n\r\nexport const targetsEmails = {\r\n  NEWADMIN : 0,\r\n  WELCOME : 1,\r\n  CLASSROOMREQUEST : 2,\r\n  ADDMEMBERREQUEST : 3,\r\n  RECEIVERETURNED : 4,\r\n  ALIVE : 5,\r\n  EVENT_INVITE : 6,\r\n  EVENT_REMINDER: 7, \r\n  UNDELIVERED_EMAILS : 8,\r\n  ANNUARY_SEND : 9,\r\n  ANNUARY_REMINDER: 10, \r\n  ANNUARY_FORM_ANSWERED: 11,\r\n  ANNUARY_FORM_NUM_MEMBERS: 12,\r\n  DIGITAL_CARD_SEND: 13,\r\n  ANNUARY_CONFIRM: 14,\r\n  RECERCAT_USER_VALIDATE_EMAIL : 15,\r\n  RECERCAT_CENTER_RESUME : 17,\r\n  RECERCAT_REQUEST_DENIED_BY_IRMU : 18,\r\n  RECERCAT_REQUEST_DENIED_BY_CENTER : 19,\r\n  RECERCAT_CARD_REVOKED_BY_IRMU : 20,\r\n  RECERCAT_CARD_REVOKED_BY_CENTER : 21,\r\n  RECERCAT_IRMU_RESUME : 22,\r\n  RECERCAT_USER_REQUEST_OK: 23,\r\n  RECERCAT_USER_REQUEST_KO: 24,\r\n  RECERCAT_CARD_REVOKED_BY_IRMU_CENTER_DELETED: 25,\r\n  ALERT_PROCUREMENT: 26,\r\n  RESET_PSWD: 27,\r\n  NEWADMIN_PERMISSION: 28,\r\n  DONATIONS_USERS_CERTIFICATE: 29 ,\r\n  DONATIONS_USERS_CONFIRMATION: 30,\r\n  DONATIONS_RESUME_ASSOCIATION: 31,\r\n  DONATIONS_RESUME_FAC: 32,\r\n  DONATIONS_VALIDATE_REQUEST: 33,\r\n  DONATIONS_VALIDATE_ACCEPTED: 34,\r\n  DONATIONS_VALIDATE_REJECTED: 35,\r\n  ALERT: 36,\r\n  DONATIONS_USERS_PRE_CONFIRMATION_TRANSFER: 37,\r\n  ASSOCIATIONS_TRIAL: 38,\r\n  ASSOCIATIONS_BEGIN: 39,\r\n  ASSOCIATIONS_END: 40,\r\n  GROUP_LEFT: 41,\r\n};\r\n        \r\nexport const emailsStatus = {\r\n  NOT_SENT: 0,\r\n  SENDING_TO_SMTP: 1,\r\n  SENDING_TO_SMTP_ERROR: 2,\r\n  SENT_TO_SMTP_OK: 3,\r\n  SENT_SERVER_ERROR: 4,    \r\n};\r\n\r\nexport const usersEditedBooksType = {\r\n  BOOKS: 1,\r\n  BOOK_ENTITY: 2,\r\n  NEWSLETTER: 3,\r\n  MAGAZINE: 4,\r\n  HIGHLIGHTED_DATES: 5,\r\n  NOTABLE_INDIVIDUALS: 6,\r\n  LINKS: 7\r\n};\r\n\r\nexport const modules = {\r\n  GESTIO : 'GESTIO',\r\n  CONTACTS_FAC : 'CONTACTS_FAC',\r\n  FEDERATION: 'FEDERATION',\r\n  DIGITAL_CARDS: 'DIGITAL_CARDS',\r\n  MEMBER_FAC: 'MEMBER_FAC',\r\n  RECERCAT: 'RECERCAT',\r\n  REAL_STATE: 'REAL_STATE',\r\n  AGREEMENTS: 'AGREEMENTS',\r\n  INSURANCES: 'INSURANCES',\r\n  ALERTS: 'ALERTS',\r\n  REPORTS: 'REPORTS',\r\n  DOCUMENTS_FAC: 'DOCUMENTS_FAC',\r\n  CALENDAR: 'CALENDAR',\r\n  REMITTANCES: 'REMITTANCES',\r\n  POSTAL_LABELS: 'POSTAL_LABELS',\r\n  DONATIONS: 'DONATIONS',\r\n  WALLETS: 'WALLETS',\r\n  CUSTOM_FIELDS: 'CUSTOM_FIELDS',\r\n  FACM: 'FACM',\r\n  CLASSROOMS: 'CLASSROOMS',\r\n};\r\n\r\nexport const modulesOptions = {\t\r\n  DOCUMENTS_FAC_R: 'DOCUMENTS_FAC_R',\r\n  DOCUMENTS_FAC_W: 'DOCUMENTS_FAC_W',\r\n  CALENDAR_STD: 'CALENDAR_STD',\r\n  CALENDAR_FAC: 'CALENDAR_FAC',\r\n  CALENDAR_FAC_PUBLISHERS: 'CALENDAR_FAC_PUBLISHERS',\r\n  DONATIONS_FAC: 'DONATIONS_FAC',\r\n  DONATIONS_OWN: 'DONATIONS_OWN',\r\n  CLASSROOMS_STD: 'CLASSROOMS_STD',\r\n  CLASSROOMS_FAC: 'CLASSROOMS_FAC',\r\n};\r\n    \r\nexport const recercatActions = {\r\n  IRMU_REVOKE : 0,\r\n  IRMU_VALIDATE : 1,\r\n  IRMU_DENY : 2,\r\n  CENTER_VALIDATE : 3,\r\n  CENTER_REVOKE : 4,\r\n  CENTER_DENY : 5,\r\n  USER_VALIDATE : 6,\r\n  USER_REQUEST: 7,\r\n  CENTER_LOGOUT : 8,\r\n};\r\n\r\nexport const cardTypes = {\r\n  PDF : 0,\r\n  GOOGLE_WALLET : 1,\r\n  APPLE_WALLET : 2,\r\n  GOOGLE_WALLET_CONFIG : 3,\r\n  APPLE_WALLET_CONFIG : 4\r\n};\r\n\r\nexport const choicesTypeUser = (translate) => [\r\n  { id: 0, name: translate('users.user_type_0') },\r\n  { id: 1, name: translate('users.user_type_1') }\r\n];\r\n\r\nexport const choicesLanguage = (translate, moreLanguagesEnabled) => {\r\n  const choices = [{ id: 0, name: translate('common.language_0') }];\r\n  if (moreLanguagesEnabled) {\r\n    choices.push({ id: 1, name: translate('common.language_1') });\r\n  }\r\n  return choices;\r\n};\r\n\r\nexport const choicesGenderUser = (translate) => [\r\n  { id: 0, name: '' },\r\n  { id: 1, name: translate('users.gender_1') },\r\n  { id: 2, name: translate('users.gender_2') },\r\n  { id: 3, name: translate('users.gender_3') }\r\n];\r\n\r\nexport const choicesAlertsType = (translate) => [\r\n    { id: 1, name: translate('alerts.type_1')},\r\n    { id: 2, name: translate('alerts.type_2')},\r\n    { id: 3, name: translate('alerts.type_3')},\r\n    { id: 4, name: translate('alerts.type_4')},\r\n    { id: 5, name: translate('alerts.type_5')},\r\n    { id: 6, name: translate('alerts.type_6')},\r\n    { id: 7, name: translate('alerts.type_7')},\r\n    { id: 8, name: translate('alerts.type_8')},\r\n    { id: 9, name: translate('alerts.type_9')}\r\n];\r\n\r\nexport const choicesMonths = (translate) => [\r\n  { id: 1, name: translate('common.months_1') },\r\n  { id: 2, name: translate('common.months_2') },\r\n  { id: 3, name: translate('common.months_3') },\r\n  { id: 4, name: translate('common.months_4') },\r\n  { id: 5, name: translate('common.months_5') },\r\n  { id: 6, name: translate('common.months_6') },\r\n  { id: 7, name: translate('common.months_7') },\r\n  { id: 8, name: translate('common.months_8') },\r\n  { id: 9, name: translate('common.months_9') },\r\n  { id: 10, name: translate('common.months_10') },\r\n  { id: 11, name: translate('common.months_11') },\r\n  { id: 12, name: translate('common.months_12') },\r\n];\r\n\r\nexport const choicesDays = (translate) => {\r\n  const months = [];\r\n  for (let i = 1; i <= 31; i++) {\r\n    months.push({ id: i, name: i });\r\n  }\r\n  return months;\r\n};\r\n\r\nexport const choicesCustomFieldsType = (translate) => [\r\n  { id: 1, name: translate('custom_fields.type_1') },\r\n  { id: 2, name: translate('custom_fields.type_2') },\r\n  { id: 3, name: translate('custom_fields.type_3') },\r\n  { id: 4, name: translate('custom_fields.type_4') },\r\n  { id: 5, name: translate('custom_fields.type_5') },\r\n  { id: 6, name: translate('custom_fields.type_6') },\r\n  { id: 7, name: translate('custom_fields.type_7') },\r\n  { id: 8, name: translate('custom_fields.type_8') }\r\n];\r\n\r\nexport const choicesDelegations = [\r\n  { id: 4, name: 'DT Barcelonès' },\r\n  { id: 5, name: 'DT Baix Llobregat' } ,\r\n  { id: 6, name: 'DT Centre - Litoral' },\r\n  { id: 1, name: 'DT Girona' } ,\r\n  { id: 7, name: 'DT Catalunya Central' },\r\n  { id: 8, name: 'DT Penedès' },\r\n  { id: 2, name: 'DT Camp de Tarragona - Terres de l\\'Ebre' },\r\n  { id: 3, name: 'DT Ponent - Alt Pirineu' }\r\n];\r\n\r\nexport const choicesProperty = [\r\n  { id: 1, name: 'Ajuntament' } ,\r\n  { id: 2, name: 'Privat' },\r\n  { id: 3, name: 'Església' },\r\n  { id: 4, name: 'Generalitat' },\r\n  { id: 5, name: 'Estat' }\r\n];\r\n\r\nexport const choicesCession = [                        \r\n  { id: 1, name: 'Ocupat' } ,\r\n  { id: 2, name: 'Llogat' },\r\n  { id: 3, name: 'Cedit' }\r\n];\r\n\r\nexport const choicesClassroomsType = (translate) => \r\n  [\r\n    { id: 0, name: translate('classrooms.type0')  },\r\n    { id: 1, name: translate('classrooms.type1')  },\r\n    { id: 2, name: translate('classrooms.type2')  },\r\n    { id: 3, name: translate('classrooms.type3')  },\r\n    { id: 4, name: translate('classrooms.type4')  },\r\n    { id: 5, name: translate('classrooms.type5')  },\r\n    { id: 6, name: translate('classrooms.type6')  },\r\n    { id: 7, name: translate('classrooms.type7')  },\r\n    { id: 8, name: translate('classrooms.type8')  },\r\n    { id: 9, name: translate('classrooms.type9')  },\r\n    { id: 10, name: translate('classrooms.type10')  }\r\n  ];\r\n  \r\nexport const choicesDonationsUsersPaymentMethod = (translate) => \r\n  [\r\n    { id: 0, name: translate('donations_users.payment_method_0')  },\r\n    { id: 1, name: translate('donations_users.payment_method_1')  },\r\n    { id: 2, name: translate('donations_users.payment_method_2')  }\r\n  ];\r\n\r\nexport const choicesDonationsUsersPublicPaymentMethod = (translate) => \r\n  [    \r\n    { id: 1, name: translate('donations_users.payment_method_1')  }\r\n  ];\r\n\r\nexport const choicesDonationsUsersStatus = (translate) => \r\n[    \r\n  { id: 0, name: translate('donations_users.status_0')  },\r\n  { id: 1, name: translate('donations_users.status_1')  },\r\n  { id: 2, name: translate('donations_users.status_2')  }\r\n];\r\n\r\nexport const choicesRealStateUse = (translate) => \r\n  [    \r\n    { id: 1, name: translate('real_state.use_1')  },\r\n    { id: 2, name: translate('real_state.use_2')  },\r\n    { id: 0, name: translate('real_state.use_0')  }\r\n  ];\r\n\r\nexport const choicesDonationsProjectsFacValidationStatus = (translate) =>\r\n[\r\n    { id: 0, name: translate('donations_projects.fac_validation_status_0')  },\r\n    { id: 1, name: translate('donations_projects.fac_validation_status_1')  },\r\n    { id: 2, name: translate('donations_projects.fac_validation_status_2')  },\r\n    { id: 3, name: translate('donations_projects.fac_validation_status_3')  }\r\n];\r\n\r\nexport const choicesRealStateActivitiesType = (translate) => \r\n  [    \r\n    { id: 1, name: translate('real_state_activities.type_1')  },\r\n    { id: 2, name: translate('real_state_activities.type_2')  },\r\n    { id: 0, name: translate('real_state_activities.type_0')  }\r\n  ];\r\n\r\nexport const choicesRealStateActivitiesInsuranceWho = (translate) => \r\n  [    \r\n    { id: 0, name: translate('real_state_activities.insurance_who_0')  },\r\n    { id: 1, name: translate('real_state_activities.insurance_who_1')  }\r\n  ];\r\n\r\nexport const choicesRealStatePaymentsType = (translate) => \r\n  [    \r\n    { id: 1, name: translate('real_state_payments.type_1')  },\r\n    { id: 2, name: translate('real_state_payments.type_2')  },\r\n    { id: 3, name: translate('real_state_payments.type_3')  },\r\n    { id: 4, name: translate('real_state_payments.type_4')  },\r\n    { id: 5, name: translate('real_state_payments.type_5')  },\r\n    { id: 6, name: translate('real_state_payments.type_6')  },\r\n    { id: 7, name: translate('real_state_payments.type_7')  },\r\n    { id: 8, name: translate('real_state_payments.type_8')  },\r\n    { id: 9, name: translate('real_state_payments.type_9')  },\r\n    { id: 0, name: translate('real_state_payments.type_0')  }\r\n  ];\r\n  \r\nexport const choicesRealStatePaymentsPayer = (translate) => \r\n  [    \r\n    { id: 1, name: translate('real_state_payments.payer_1')  },\r\n    { id: 2, name: translate('real_state_payments.payer_2')  },\r\n    { id: 3, name: translate('real_state_payments.payer_3')  },\r\n    { id: 0, name: translate('real_state_payments.payer_0')  }\r\n  ];\r\n  \r\nexport const choicesTrainingsType0 = (translate) => \r\n  [\r\n    { id: 0, name: translate('users_trainings.type0')  },\r\n    { id: 1, name: translate('users_trainings.type1')  },\r\n    { id: 2, name: translate('users_trainings.type2')  },\r\n    { id: 3, name: translate('users_trainings.type3')  },\r\n    { id: 4, name: translate('users_trainings.type4')  },\r\n    { id: 5, name: translate('users_trainings.type5')  },\r\n    { id: 6, name: translate('users_trainings.type6')  },\r\n    { id: 7, name: translate('users_trainings.type7')  },\r\n    { id: 8, name: translate('users_trainings.type8')  },\r\n    { id: 9, name: translate('users_trainings.type9')  },\r\n    { id: 10, name: translate('users_trainings.type10')  },\r\n    { id: 11, name: translate('users_trainings.type11')  },\r\n    { id: 12, name: translate('users_trainings.type12')  },\r\n    { id: 13, name: translate('users_trainings.type13')  },\r\n    { id: 14, name: translate('users_trainings.type14')  },\r\n    { id: 15, name: translate('users_trainings.type15')  },\r\n    { id: 16, name: translate('users_trainings.type16')  },\r\n    { id: 99, name: translate('users_trainings.type99')  }\r\n  ];\r\n  \r\nexport const choicesTrainingsTrainingType = (translate) => \r\n  [\r\n    { id: 0, name: translate('users_trainings.training_type0')  },\r\n    { id: 1, name: translate('users_trainings.training_type1')  },\r\n    { id: 2, name: translate('users_trainings.training_type2')  },\r\n    { id: 3, name: translate('users_trainings.training_type3')  },\r\n    { id: 4, name: translate('users_trainings.training_type99')  }\r\n  ];\r\n  \r\nexport const choicesTrainingsPeriodicity = (translate) => \r\n  [\r\n    { id: 0, name: translate('users_trainings.periodicity0')  },\r\n    { id: 1, name: translate('users_trainings.periodicity1')  },\r\n    { id: 2, name: translate('users_trainings.periodicity2')  },\r\n    { id: 3, name: translate('users_trainings.periodicity3')  },\r\n    { id: 4, name: translate('users_trainings.periodicity4')  },\r\n    { id: 5, name: translate('users_trainings.periodicity5')  },\r\n    { id: 6, name: translate('users_trainings.periodicity6')  }\r\n  ];\r\n\r\nexport const choicesTrainingsAges = (translate) => \r\n  [\r\n    { id: 0, name: translate('users_trainings.ages0')  },\r\n    { id: 1, name: translate('users_trainings.ages1')  },\r\n    { id: 2, name: translate('users_trainings.ages2')  },\r\n    { id: 3, name: translate('users_trainings.ages3')  },\r\n    { id: 4, name: translate('users_trainings.ages4')  }\r\n  ];\r\n\r\nexport const choicesTrainingsType1 = (translate) => \r\n  [\r\n    { id: 20, name: translate('users_trainings.type20')  },    \r\n    { id: 22, name: translate('users_trainings.type22')  },\r\n    { id: 23, name: translate('users_trainings.type23')  },\r\n    { id: 24, name: translate('users_trainings.type24')  },\r\n    { id: 25, name: translate('users_trainings.type25')  },\r\n    { id: 26, name: translate('users_trainings.type26')  },\r\n    { id: 21, name: translate('users_trainings.type21')  },\r\n    { id: 27, name: translate('users_trainings.type27')  }\r\n  ];\r\n\r\n\r\nexport const choicesTrainingsFormalArt = (translate) => \r\n  [\r\n    { id: 0, name: translate('users_trainings.formal_art_0')  },\r\n    { id: 1, name: translate('users_trainings.formal_art_1')  }\r\n  ];\r\n\r\nexport const choicesTrainingsFormal = (translate) => \r\n  [\r\n    { id: 0, name: translate('users_trainings.formal_0')  },\r\n    { id: 1, name: translate('users_trainings.formal_1')  }\r\n  ];\r\n\r\nexport const choicesSocialProjects = (translate) => \r\n  [\r\n    { id: 0, name: translate('users_social_projects.type0')  },\r\n    { id: 1, name: translate('users_social_projects.type1')  },\r\n    { id: 2, name: translate('users_social_projects.type2')  },\r\n    { id: 3, name: translate('users_social_projects.type3')  },\r\n    { id: 4, name: translate('users_social_projects.type4')  },\r\n    { id: 5, name: translate('users_social_projects.type5')  },\r\n    { id: 6, name: translate('users_social_projects.type6')  },\r\n    { id: 7, name: translate('users_social_projects.type7')  },\r\n    { id: 8, name: translate('users_social_projects.type8')  }\r\n  ];\r\n  \r\nexport const choicesYears = (translate) => { \r\n  let currentYear = new Date().getFullYear();\r\n  let i = 0;\r\n  let arrYears = [];\r\n  for (i = 1984; i <= (currentYear+1);i++)\r\n  {\r\n    arrYears.push({ id: i, name: i });\r\n  }\r\n    \r\n  return arrYears;\r\n};\r\n\r\nexport const choicesShowsType = (translate) => { \r\n  return ([                        \r\n    { id: 1, name: translate('users_shows.type_1')  },\r\n    { id: 2, name: translate('users_shows.type_2')  },\r\n    { id: 3, name: translate('users_shows.type_3')  },\r\n    { id: 4, name: translate('users_shows.type_4')  }\r\n  ]);\r\n};\r\n\r\nexport const choicesAdult = (translate) => { \r\n  return ([                        \r\n    { id: 1, name: translate('users_shows.adult_1')  },\r\n    { id: 2, name: translate('users_shows.adult_2')  },\r\n    { id: 3, name: translate('users_shows.adult_3')  }\r\n  ]);\r\n};\r\n\r\nexport const choicesRemittancesStatus = (translate) => {\r\n  return ([\r\n    { id: 0, name: translate('remittances.status0') },\r\n    { id: 1, name: translate('remittances.status1') }\r\n  ]);\r\n};\r\n\r\n\r\nexport const choicesRegion = [\r\n  { id: 0, name : ''},\r\n  { id: 1, name : 'L\\'Alt Camp'},\r\n  { id: 2, name : 'L\\'Alt Empordà'},\r\n  { id: 3, name : 'L\\'Alt Penedès'},\r\n  { id: 4, name : 'L\\'Alt Urgell'},\r\n  { id: 5, name : 'L\\'Alta Ribagorça'},\r\n  { id: 6, name : 'L\\'Anoia'},\r\n  { id: 7, name : 'El Bages'},\r\n  { id: 8, name : 'El Baix Camp'},\r\n  { id: 9, name : 'El Baix Ebre'},\r\n  { id: 10, name : 'El Baix Empordà'},\r\n  { id: 11, name : 'El Baix Llobregat'},\r\n  { id: 12, name : 'El Baix Penedès'},\r\n  { id: 13, name : 'El Barcelonès'},\r\n  { id: 14, name : 'El Berguedà'},\r\n  { id: 15, name : 'La Cerdanya'},\r\n  { id: 16, name : 'La Conca de Barberà'},\r\n  { id: 17, name : 'El Garraf'},\r\n  { id: 18, name : 'Les Garrigues'},\r\n  { id: 19, name : 'La Garrotxa'},\r\n  { id: 20, name : 'El Gironès'},\r\n  { id: 21, name : 'El Maresme'},\r\n  { id: 22, name : 'El Montsià'},\r\n  { id: 23, name : 'La Noguera'},\r\n  { id: 24, name : 'Osona'},\r\n  { id: 25, name : 'El Pallars Jussà'},\r\n  { id: 26, name : 'El Pallars Sobirà'},\r\n  { id: 27, name : 'El Pla de l\\'Estany'},\r\n  { id: 28, name : 'El Pla d\\'Urgell'},\r\n  { id: 29, name : 'El Priorat'},\r\n  { id: 30, name : 'La Ribera d\\'Ebre'},\r\n  { id: 31, name : 'El Ripollès'},\r\n  { id: 32, name : 'La Segarra'},\r\n  { id: 33, name : 'El Segrià'},\r\n  { id: 34, name : 'La Selva'},\r\n  { id: 35, name : 'El Solsonès'},\r\n  { id: 36, name : 'El Tarragonès'},\r\n  { id: 37, name : 'La Terra Alta'},\r\n  { id: 38, name : 'L\\'Urgell'},\r\n  { id: 39, name : 'La Vall d\\'Aran'},\r\n  { id: 40, name : 'El Vallès Occidental'},\r\n  { id: 41, name : 'El Vallès Oriental'},\r\n  { id: 42, name : 'El Moianès'},\r\n];\r\n    \r\nexport const choicesProvince = [\r\n  { id: 0, name : ''},\r\n  { id: 1, name : 'Àlaba'},\r\n  { id: 2, name : 'Alacant'},\r\n  { id: 3, name : 'Albacete'},\r\n  { id: 4, name : 'Almeria'},\r\n  { id: 5, name : 'Astúries'},\r\n  { id: 6, name : 'Àvila'},\r\n  { id: 7, name : 'Badajoz'},\r\n  { id: 8, name : 'Barcelona'},\r\n  { id: 9, name : 'Biscaia'},\r\n  { id: 10, name : 'Burgos'},\r\n  { id: 11, name : 'Càceres'},\r\n  { id: 12, name : 'Cadis'},\r\n  { id: 13, name : 'Cantàbria'},\r\n  { id: 14, name : 'Castelló'},\r\n  { id: 15, name : 'Ceuta'},\r\n  { id: 16, name : 'Ciudad Real'},\r\n  { id: 17, name : 'Conca'},\r\n  { id: 18, name : 'Còrdova'},\r\n  { id: 19, name : 'Girona'},\r\n  { id: 20, name : 'Granada'},\r\n  { id: 21, name : 'Guadalajara'},\r\n  { id: 22, name : 'Guipúscoa'},\r\n  { id: 23, name : 'Huelva'},\r\n  { id: 24, name : 'Illes Balears'},\r\n  { id: 25, name : 'Jaén'},\r\n  { id: 26, name : 'La Corunya'},\r\n  { id: 27, name : 'La Rioja'},\r\n  { id: 28, name : 'Las Palmas'},\r\n  { id: 29, name : 'Lleida'},\r\n  { id: 30, name : 'Lleó'},\r\n  { id: 31, name : 'Lugo'},\r\n  { id: 32, name : 'Madrid'},\r\n  { id: 33, name : 'Màlaga'},\r\n  { id: 34, name : 'Melilla'},\r\n  { id: 35, name : 'Múrcia'},\r\n  { id: 36, name : 'Navarra'},\r\n  { id: 37, name : 'Osca'},\r\n  { id: 38, name : 'Ourense'},\r\n  { id: 39, name : 'Palència'},\r\n  { id: 40, name : 'Pontevedra'},\r\n  { id: 41, name : 'Salamanca'},\r\n  { id: 42, name : 'Santa Cruz de Tenerife'},\r\n  { id: 43, name : 'Saragossa'},\r\n  { id: 44, name : 'Segòvia'},\r\n  { id: 45, name : 'Sevilla'},\r\n  { id: 46, name : 'Sòria'},\r\n  { id: 47, name : 'Tarragona'},\r\n  { id: 48, name : 'Terol'},\r\n  { id: 49, name : 'Toledo'},\r\n  { id: 50, name : 'València'},\r\n  { id: 51, name : 'Valladolid'},\r\n  { id: 52, name : 'Zamora'},\r\n];\r\n\r\nexport const choicesCountry = [\r\n  { id: 0, name : '' },\r\n  { id: 1, name : 'Espanya' },\r\n  { id: 2, name : 'França' },\r\n];","import React, { useState } from 'react';\r\nimport {\r\n  required,\r\n  Button,\r\n  SaveButton,\r\n  useCreate,\r\n  useNotify,\r\n  FormWithRedirect,\r\n  useRefresh, TopToolbar, useTranslate, ImageInput, ImageField, FileInput, FileField\r\n} from 'react-admin';\r\nimport IconContentAdd from '@material-ui/icons/Add';\r\nimport IconCancel from '@material-ui/icons/Cancel';\r\n\r\nimport Dialog from '@material-ui/core/Dialog';\r\nimport DialogTitle from '@material-ui/core/DialogTitle';\r\nimport DialogContent from '@material-ui/core/DialogContent';\r\nimport DialogActions from '@material-ui/core/DialogActions';\r\n\r\nimport {maxDocFileSize,maxImgFileSize,targets} from './../common/constants';\r\n\r\n\r\nexport const DocsCreateButton = ({ target, items_id , label, icon, topToolbar, btnClassname, onSuccess, ...props }) => {\r\n  \r\n  const [showDialog, setShowDialog] = useState(false);\r\n  const [create, { loading }] = useCreate('docs');\r\n  const notify = useNotify();\r\n  const refresh = useRefresh();    \r\n  const translate = useTranslate();  \r\n\r\n  let allowableAllDocs = false;\r\n  let labelInputFile = '';    \r\n  let maxDocFileSizeMin = maxDocFileSize / 1000000;\r\n  let maxImgFileSizeMin = maxImgFileSize / 1000000;\r\n\r\n  let labelButton = label;\r\n  let iconButton = icon ? icon : <IconContentAdd/>;\r\n    \r\n  if (target==targets.GROUP || target==targets.USER || target==targets.TEMPLATE || target==targets.CLASSROOM_DOC || target==targets.EVENT || target==targets.DOCUMENT_FAC ||\r\n        target==targets.REAL_STATE_DEED || target==targets.REAL_STATE_MAP || target==targets.REAL_STATE_ACTIVITY_CONTRACT || target==targets.REAL_STATE_ACTIVITY_INSURANCE || \r\n        target==targets.REAL_STATE_PAYMENT || target==targets.AGREEMENT || target==targets.INSURANCE || target==targets.SETTINGS_DOCS )\r\n  {\r\n    labelInputFile = translate('docs.fieldDoc').replace('%size%',maxDocFileSizeMin);\r\n    allowableAllDocs = true;\r\n  }\r\n  else\r\n  {\r\n    labelInputFile = translate('docs.fieldImg').replace('%size%',maxImgFileSizeMin);\r\n    allowableAllDocs = false;\r\n  }\r\n\r\n  const handleClick = () => {\r\n    setShowDialog(true);\r\n  };\r\n\r\n  const handleCloseClick = () => {\r\n    setShowDialog(false);\r\n  };\r\n\r\n  const handleSubmit = async values => {\r\n    create(\r\n      { payload: { data: values } },\r\n      {\r\n        onSuccess: ({ data }) => {\r\n          setShowDialog(false);\r\n          refresh();\r\n          if (onSuccess) onSuccess();\r\n        },\r\n        onFailure: ( error ) => {                    \r\n          notify(error.message, 'error');\r\n        }\r\n      }\r\n    );\r\n  };\r\n\r\n  return (\r\n    <>\r\n      {(topToolbar ? \r\n        <TopToolbar>\r\n          <Button onClick={handleClick} label={labelButton} className=\"\">\r\n            {iconButton}\r\n          </Button>\r\n        </TopToolbar> \r\n        :\r\n        <Button onClick={handleClick} label={labelButton} className={btnClassname}>\r\n          {iconButton}\r\n        </Button>\r\n      )}\r\n\r\n      <Dialog\r\n        fullWidth\r\n        open={showDialog}\r\n        onClose={handleCloseClick}\r\n        aria-label={translate('docs.create')}\r\n      >\r\n        <DialogTitle>{translate('docs.create')}</DialogTitle>\r\n\r\n        <FormWithRedirect\r\n          resource=\"docs\"\r\n          save={handleSubmit}\r\n          initialValues={{ associations_id : localStorage.getItem('associations_id'), target: target, items_id: items_id }}\r\n          render={({\r\n            handleSubmitWithRedirect,\r\n            pristine,\r\n            saving\r\n          }) => (\r\n            <>\r\n              <DialogContent>\r\n                {allowableAllDocs ? ( \r\n                  <FileInput source=\"image\" label={labelInputFile} accept=\"\" validate={required()} maxSize={maxDocFileSize} >\r\n                    <FileField source=\"image\" title=\"title\" />\r\n                  </FileInput>\r\n                ) : (\r\n                  <ImageInput source=\"image\" label={labelInputFile} accept=\"image/*\" validate={required()} maxSize={maxImgFileSize} >\r\n                    <ImageField fullWidth source=\"image\" title=\"title\" />\r\n                  </ImageInput>\r\n                )}\r\n              </DialogContent>\r\n              <DialogActions>\r\n                <Button label=\"ra.action.cancel\" onClick={handleCloseClick} disabled={loading} >\r\n                  <IconCancel />\r\n                </Button>\r\n                <SaveButton\r\n                  handleSubmitWithRedirect={\r\n                    handleSubmitWithRedirect\r\n                  }\r\n                  pristine={pristine}\r\n                  saving={saving}\r\n                  disabled={loading}\r\n                />\r\n              </DialogActions>\r\n            </>\r\n          )}\r\n        />\r\n      </Dialog>\r\n            \r\n    </>\r\n  );\r\n};\r\n","import React, { useState , useCallback } from 'react';\r\nimport { useForm } from 'react-final-form';\r\nimport {\r\n    required,\r\n    Button,\r\n    SaveButton,\r\n    TextInput,\r\n    useCreate,\r\n    useNotify,\r\n    FormWithRedirect,\r\n    useRefresh, TopToolbar, useTranslate, ImageInput, ImageField, FileInput, FileField, useRedirect, Confirm\r\n} from 'react-admin';\r\n\r\nimport {\r\n    Grid,\r\n    Card,\r\n    CardMedia,\r\n    CardContent,\r\n    CardActions,\r\n    Typography,\r\n} from '@material-ui/core';\r\n\r\n\r\nimport { makeStyles } from '@material-ui/core/styles';\r\n\r\nimport IconContentAdd from '@material-ui/icons/Add';\r\nimport IconCancel from '@material-ui/icons/Cancel';\r\nimport IconSave from '@material-ui/icons/Save';\r\n\r\nimport Dialog from '@material-ui/core/Dialog';\r\nimport DialogTitle from '@material-ui/core/DialogTitle';\r\nimport DialogContent from '@material-ui/core/DialogContent';\r\nimport DialogActions from '@material-ui/core/DialogActions';\r\n\r\n\r\nimport PhotoCameraIcon from '@material-ui/icons/PhotoCamera';\r\n\r\n\r\nimport {maxDocFileSize, maxImgFileSize, apiUrl, apiOrigin, apiDefaultLanguage, targets } from './../common/constants';\r\n\r\nexport const DocsCameraButton = ({ target, items_id , label, icon, topToolbar, ...props }) => {\r\n\r\n    const [showDialog, setShowDialog] = useState(false);\r\n    const [create, { loading }] = useCreate('docs');\r\n    const notify = useNotify();\r\n    const refresh = useRefresh();    \r\n    const translate = useTranslate();  \r\n    const classes = useStylesWebcam(props);\r\n\r\n    let labelButton = label;\r\n    let iconButton = icon ? icon : <IconContentAdd/>;\r\n\r\n    const handleClick = () => {\r\n        setShowDialog(true);\r\n        setTimeout( videoStart , 100);\r\n    };\r\n\r\n    const handleCloseClick = () => {\r\n        stopVideo();\r\n        setShowDialog(false);\r\n    };\r\n\r\n    const handleSubmit = async values => {\r\n        create(\r\n            { payload: { data: values } },\r\n            {\r\n                onSuccess: ({ data }) => {\r\n                    setShowDialog(false);\r\n                    refresh();\r\n                },\r\n                onFailure: ( error ) => {\r\n                    notify(error.message, 'error');\r\n                }\r\n            }\r\n        );\r\n    };\r\n\r\n    // WEBCAM\r\n    var video = document.querySelector(\"#video\");  \r\n\r\n    function videoStart()\r\n    {\r\n        video = document.querySelector(\"#video\");  \r\n  \r\n        // Basic settings for the video to get from Webcam  \r\n        const constraints = {  \r\n            audio: false,  \r\n            video: {  \r\n                width: 200 , height: 200  \r\n            }  \r\n        };  \r\n      \r\n        // This condition will ask permission to user for Webcam access  \r\n        if (navigator.mediaDevices.getUserMedia) {  \r\n            navigator.mediaDevices.getUserMedia(constraints)  \r\n                .then(function (stream) {  \r\n                    video.srcObject = stream;  \r\n                })  \r\n                .catch(function (error) {  \r\n                    console.log(error);\r\n\r\n                    notify( translate('docs.webcam_error') ,'error'); \r\n                    setShowDialog(false);\r\n                });  \r\n        }  \r\n    }    \r\n  \r\n    function stopVideo() {  \r\n        video = document.querySelector(\"#video\"); \r\n        var stream = video.srcObject;  \r\n        var tracks = stream.getTracks();  \r\n  \r\n        for (var i = 0; i < tracks.length; i++) {  \r\n            var track = tracks[i];  \r\n            track.stop();  \r\n        }  \r\n        video.srcObject = null;  \r\n    }  \r\n\r\n    const handleClickCapture = () => {\r\n        var canvas = document.getElementById('canvas');  \r\n        var context = canvas.getContext('2d');  \r\n  \r\n        // Capture the image into canvas from Webcam streaming Video element  \r\n        video = document.querySelector(\"#video\");  \r\n        context.drawImage(video, 0, 0);\r\n        //setTimeout( function() {  }, 1000); \r\n    };\r\n\r\n\r\n    //const handleClickSave = () => {\r\n        //const dispatch = useDispatch();\r\n        //const redirect = useRedirect();\r\n        //const notify = useNotify();\r\n        //const [loading, setLoading] = useState(false);\r\n        const handleClickSave = () => {\r\n            //dispatch(fetchStart()); // start the global loading indicator \r\n\r\n            var destinationCanvas = document.createElement(\"canvas\");  \r\n            var destCtx = destinationCanvas.getContext('2d');  \r\n\r\n\r\n  /*          let link = document.getElementById('linkImage');\r\n              var filename = \"example.jpg\";\r\n              //link.setAttribute('download', 'example.png');\r\n              link.setAttribute('download', filename);\r\n              link.setAttribute('href', destinationCanvas.toDataURL(\"image/jpg\"));\r\n              link.click();\r\n*/\r\n\r\n            var canvas = document.getElementById(\"canvas\");\r\n            var img    = canvas.toDataURL(\"image/png\");\r\n            //window.location = img;\r\n            //  return;\r\n\r\n            \r\n        /*\r\n            destinationCanvas.height = 200;  \r\n            destinationCanvas.width = 200;  \r\n      \r\n            destCtx.translate(video.videoWidth, 0);  \r\n            destCtx.scale(-1, 1);  \r\n            destCtx.drawImage(document.getElementById(\"canvas\"), 0, 0);  */\r\n      \r\n            // Get base64 data to send to server for upload  \r\n            //var imagebase64data = destinationCanvas.toDataURL(\"image/png\");  \r\n            img = img.replace('data:image/png;base64,', '');  \r\n\r\n            let headers = new Headers({ Accept: 'application/json' });\r\n            headers.set('Access-Control-Allow-Origin', apiOrigin );\r\n            headers.set('Authorization', localStorage.getItem('auth'));\r\n            headers.set('Accept-Language', apiDefaultLanguage);\r\n            headers.set('Role', localStorage.getItem('active_permission'));\r\n            headers.set('Content-Type', 'application/json');\r\n\r\n            const data = { associations_id : localStorage.getItem('associations_id'), target: target, items_id: items_id, content: img };\r\n            fetch(apiUrl + '/docs/photo', { method: 'POST', headers: headers, body: JSON.stringify(data) })\r\n                .then(() => {\r\n                    //alert(1);\r\n                    //notify('Comment approved');\r\n                    //redirect('/comments');\r\n                    stopVideo();\r\n                    setShowDialog(false);\r\n                    refresh();\r\n                })\r\n                .catch((e) => {\r\n                    //alert(2);\r\n                    //notify('Error: comment not approved', { type: 'warning' })\r\n                })\r\n                .finally(() => {\r\n                    //alert(3);\r\n                    //setLoading(false);\r\n                    //dispatch(fetchEnd()); // stop the global loading indicator\r\n\r\n                });\r\n        };\r\n    //};\r\n\r\n   \r\n/*\r\n    const handleClickSave = () => {\r\n        // Below new canvas to generate flip/mirron image from existing canvas  \r\n        var destinationCanvas = document.createElement(\"canvas\");  \r\n        var destCtx = destinationCanvas.getContext('2d');  \r\n    \r\n        destinationCanvas.height = 500;  \r\n        destinationCanvas.width = 500;  \r\n  \r\n        destCtx.translate(video.videoWidth, 0);  \r\n        destCtx.scale(-1, 1);  \r\n        destCtx.drawImage(document.getElementById(\"canvas\"), 0, 0);  \r\n  \r\n        // Get base64 data to send to server for upload  \r\n        var imagebase64data = destinationCanvas.toDataURL(\"image/png\");  \r\n        imagebase64data = imagebase64data.replace('data:image/png;base64,', '');  \r\n\r\n        let headers = new Headers({ Accept: 'application/json' });\r\n        headers.set('Access-Control-Allow-Origin', apiOrigin );\r\n        headers.set('Authorization', localStorage.getItem('auth'));\r\n        headers.set('Role', localStorage.getItem('active_permission'));\r\n        headers.set('Accept-Language', apiDefaultLanguage);\r\n\r\n        const result = await fetch(apiUrl + '/remittances/pdf/' + remittances_id , { \r\n          headers: headers\r\n        });\r\n\r\n        $.ajax({  \r\n            type: 'POST',  \r\n            url: '/docs/photo',  \r\n            data: { associations_id : localStorage.getItem('associations_id'), target: target, items_id: items_id, file: imagebase64data },\r\n            contentType: 'application/json; charset=utf-8',  \r\n            dataType: 'text',  \r\n            success: function (out) {  \r\n                alert('Image uploaded successfully..');  \r\n            }  \r\n        });  \r\n    };*/\r\n\r\n    return (\r\n        <>\r\n            <Button onClick={handleClick} label={labelButton} className=\"btnPhotoUser btnWebcam\">\r\n               {iconButton}\r\n            </Button>\r\n\r\n            <Dialog\r\n                fullWidth\r\n                open={showDialog}\r\n                onClose={handleCloseClick}\r\n                aria-label={translate('docs.webcam')}\r\n            >\r\n                <DialogTitle>{translate('docs.webcam')}</DialogTitle>\r\n\r\n\r\n                <Grid container spacing={0}>\r\n\r\n                    <Grid item xs={6} className=\"gridWebCam\"> \r\n                        <center><video id=\"video\" playsInline autoPlay className=\"webCamCapture1\" width=\"200\" height=\"200\"></video> \r\n                        <br/><Button label={translate('docs.webcam_capture')} onClick={handleClickCapture} >\r\n                            <PhotoCameraIcon />\r\n                        </Button></center>\r\n                    </Grid> \r\n\r\n                    <Grid item xs={6} className=\"gridWebCam\"> \r\n                        <center>\r\n                        <canvas id=\"canvas\" className=\"webCamCapture2\"  width=\"200\" height=\"200\"></canvas> \r\n                        </center>\r\n                    </Grid> \r\n\r\n                </Grid>\r\n\r\n                <DialogActions>\r\n                    <Button label=\"ra.action.cancel\" onClick={handleCloseClick} >\r\n                        <IconCancel />\r\n                    </Button>\r\n                    <Button label={translate('ra.action.save')} onClick={handleClickSave} variant=\"contained\">\r\n                        <IconSave />\r\n                    </Button>\r\n                    <a id=\"linkImage\"></a>\r\n                </DialogActions>\r\n\r\n            </Dialog>\r\n        </>\r\n    );\r\n}\r\n\r\nconst useStylesWebcam = makeStyles(theme => ({\r\n    card: {\r\n        minHeight: 52,\r\n        display: 'flex',\r\n        flexDirection: 'column',\r\n        flex: '1',\r\n        '& a': {\r\n            textDecoration: 'none',\r\n            color: 'inherit',\r\n        },\r\n        marginBottom: 20\r\n    },\r\n    main: (props: Props) => ({\r\n        overflow: 'inherit',\r\n        padding: 16,\r\n        display: 'flex',\r\n        justifyContent: 'space-between',\r\n        alignItems: 'right',\r\n        '& .icon': {\r\n            color: theme.palette.type === 'dark' ? 'inherit' : '#FF6600',\r\n        },\r\n    }),\r\n    title: {},\r\n}));\r\n\r\n\r\n\r\nexport const DocsDeleteButton = ({ target, items_id , label, icon, topToolbar, onSuccess, ...props }) => {\r\n\r\n    const [open, setOpen] = useState(false);\r\n    const [showDialog, setShowDialog] = useState(false);\r\n    const [create, { loading }] = useCreate('docs');\r\n    const notify = useNotify();\r\n    const refresh = useRefresh();    \r\n    const translate = useTranslate();  \r\n    const classes = useStylesWebcam(props);\r\n\r\n    let labelButton = label;\r\n    let iconButton = icon ? icon : <IconContentAdd/>;\r\n    \r\n    const deletePhoto = () => {\r\n\r\n        let headers = new Headers({ Accept: 'application/json' });\r\n        headers.set('Access-Control-Allow-Origin', apiOrigin );\r\n        headers.set('Authorization', localStorage.getItem('auth'));\r\n        headers.set('Accept-Language', apiDefaultLanguage);\r\n        headers.set('Role', localStorage.getItem('active_permission'));\r\n        headers.set('Content-Type', 'application/json');\r\n\r\n        fetch(apiUrl + '/docs/photo?items_id='+items_id+'&target='+target, { method: 'DELETE', headers: headers })\r\n            .then(() => {\r\n                //alert(1);\r\n                //notify('Comment approved');\r\n                //redirect('/comments');\r\n                setShowDialog(false);\r\n                refresh();\r\n                if (onSuccess) onSuccess();\r\n            })\r\n            .catch((e) => {\r\n                alert(2);\r\n                //notify('Error: comment not approved', { type: 'warning' })\r\n            })\r\n            .finally(() => {\r\n                //alert(3);\r\n                //setLoading(false);\r\n                //dispatch(fetchEnd()); // stop the global loading indicator\r\n            });\r\n    };\r\n    \r\n    const handleClick = () => setOpen(true);\r\n    const handleDialogClose = () => setOpen(false);\r\n\r\n    const handleConfirm = () => {\r\n        deletePhoto();\r\n        setOpen(false);\r\n    };\r\n\r\n    return (\r\n        <>\r\n            <Button onClick={handleClick} label={labelButton} className=\"btnPhotoUser btnDeletePhoto\">\r\n               {iconButton}\r\n            </Button>\r\n\r\n            <Confirm\r\n                isOpen={open}\r\n                loading={loading}\r\n                title={translate('docs.delete_photo_title')}\r\n                content={translate('docs.delete_photo_ask')}\r\n                onConfirm={handleConfirm}\r\n                onClose={handleDialogClose}\r\n            />\r\n\r\n        </>\r\n    );\r\n}","import { createRef } from 'react';\r\n\r\nimport {\r\n  useTranslate ,\r\n  Button   \r\n} from 'react-admin';\r\n\r\nimport SaveIcon from '@material-ui/icons/GetApp';\r\n\r\nimport { apiUrl, apiOrigin, apiDefaultLanguage,  } from './../common/constants';\r\n\r\n\r\nexport function DownloadButtonAuth ({ ...props}) {\r\n  const link = createRef();\r\n  const translate = useTranslate(); \r\n\r\n  const handleAction = async () => {\r\n    if (link.current.href) { return; }  \r\n\r\n    let headers = new Headers({ Accept: 'application/json' });\r\n    headers.set('Access-Control-Allow-Origin', apiOrigin );\r\n    headers.set('Authorization', localStorage.getItem('auth'));\r\n    headers.set('Accept-Language', apiDefaultLanguage);\r\n    headers.set('Role', localStorage.getItem('active_permission'));\r\n\r\n    const result = await fetch(apiUrl + '/docs/download/' + props.record.id , {\t\r\n      headers: headers\r\n    });\r\n    \r\n    const blob = await result.blob();\r\n    const href = window.URL.createObjectURL(blob);\r\n    \r\n    link.current.download = props.record.name;\r\n    link.current.href = href;\r\n      \r\n    link.current.click();\r\n  };\r\n\r\n  return (\r\n    <a role='button' ref={link} onClick={handleAction} style={{ textDecoration: 'none' }}>\r\n      <Button label={props.label} startIcon={<SaveIcon />} />\r\n    </a>\r\n  );\r\n\r\n}\r\n\r\nexport function DownloadPublicDoc ({ ...props}) {\r\n  const link = createRef();\r\n  const translate = useTranslate(); \r\n\r\n  const handleAction = async () => {\r\n    if (link.current.href) { return; }  \r\n\r\n    let headers = new Headers({ Accept: 'application/json' });\r\n    headers.set('Access-Control-Allow-Origin', apiOrigin );\r\n    headers.set('Accept-Language', apiDefaultLanguage);\r\n\r\n    const result = await fetch(apiUrl + '/docs/download/public/' + props.doc.id , {\t\r\n      headers: headers\r\n    });\r\n    \r\n    const blob = await result.blob();\r\n    const href = window.URL.createObjectURL(blob);\r\n    \r\n    link.current.download = props.doc.name;\r\n    link.current.href = href;\r\n      \r\n    link.current.click();\r\n  };\r\n\r\n  return (<a ref={link} onClick={handleAction}>{props.doc.name}</a>);\r\n\r\n}","import { useTranslate } from 'react-admin';\r\n\r\nimport polyglotI18nProvider from 'ra-i18n-polyglot';\r\n\r\nimport {getLanguageFromStorage} from './constants';\r\n\r\nimport {caMessages} from './language_ca';\r\nimport {esMessages} from './language_es';\r\n\r\n\r\nconst messages = {\r\n  ca: caMessages,\r\n  es: esMessages\r\n};\r\n\r\nconst i18nProvider = polyglotI18nProvider(locale => messages[getLanguageFromStorage()]);\r\nexport { useTranslate, i18nProvider };\r\n\r\n","export const caMessages = {\r\n  ra: {\r\n    action: {\r\n      add_filter: 'Afegir filtre',\r\n      add: 'Afegir',\r\n      back: 'Tornar',\r\n      bulk_actions: '1 element seleccionat |||| %{smart_count} elements seleccionats',\r\n      cancel: 'Cancel·lar',\r\n      clear_input_value: 'Netejar valor',\r\n      clone: 'Clonar',\r\n      create: 'Afegir',\r\n      create_item: 'Afegir', /* %{item} */\r\n      delete: 'Esborrar',\r\n      edit: 'Modificar',\r\n      export: 'Exportar',\r\n      list: 'Llistar',\r\n      refresh: 'Refrescar',\r\n      remove_filter: 'Esborrar aquest filtre',\r\n      remove: 'Esborrar',\r\n      save: 'Desar',\r\n      search: 'Cercar',\r\n      show: 'Mostrar',\r\n      sort: 'Ordenar',\r\n      undo: 'Desfer',\r\n      confirm: 'Confirmeu',\r\n      unselect: 'Desseleccionar',\r\n      expand: 'Ampliar',\r\n      close: 'Tanca',\r\n      open_menu: 'Obre el menú',\r\n      close_menu: 'Tanca el menú',\r\n    },\r\n    boolean: {\r\n      true: 'Si',\r\n      false: 'No',\r\n      null: ' ',\r\n    },\r\n    page: {\r\n      create: 'Afegir', /* %{name} */\r\n      dashboard: 'Inici',\r\n      edit: '%{name} #%{id}',\r\n      error: 'S\\'ha produït un error',\r\n      list: 'Llista de %{name}',\r\n      loading: 'Carregant...',\r\n      not_found: 'No s\\'ha trobat',\r\n      show: '%{name} #%{id}',\r\n      empty: 'Encara no hi ha %{name}.',\r\n      invite: '¿Vols afegir-ne una?',\r\n    },\r\n    input: {\r\n      file: {\r\n        upload_several: 'Arrossega els fitxers a pujar o clica per seleccionar-ne un.',\r\n        upload_single: 'Arrossega el fitxer a pujar o clica per seleccionar-lo.',\r\n      },\r\n      image: {\r\n        upload_several: 'Arrossega les imatges a pujar o clica per seleccionar-ne una.',\r\n        upload_single: 'Arrossega la imatge a pujar o clica per seleccionar-la.',\r\n      },\r\n      references: {\r\n        all_missing: 'No s\\'han pogut trobar referències.',\r\n        many_missing: 'Almenys una de les referències associades no sembla estar disponible.',\r\n        single_missing: 'La referència associada ja no està disponible.',\r\n      },\r\n      password: {\r\n        toggle_visible: 'Amagueu la contrasenya',\r\n        toggle_hidden: 'Mostrar contrasenya',\r\n      },\r\n    },\r\n    message: {\r\n      about: 'Sobre',\r\n      are_you_sure: 'Està segur?',\r\n      bulk_delete_content: 'Està segur d\\'esborrar l\\'element %{name}? |||| Està segur d\\'esborrar aquests %{smart_count} elements?',\r\n      bulk_delete_title: 'Esborrar %{name} |||| Esborrar %{smart_count} %{name} elements',\r\n      delete_content: 'Està segur d\\'esborrar-lo?',\r\n      delete_title: 'Esborrar registre' , /* %{name} #%{id}\" */\r\n      details: 'Detalls',\r\n      error: 'S\\'ha prodït un error al client i la seva petició no s\\'ha pogut completar.',\r\n      invalid_form: 'El formulari no és vàlid. Si us plau, revisa els errors',\r\n      loading: 'La pàgina s\\'està carregant, esperi un moment si us plau',\r\n      no: 'No',\r\n      not_found: 'O bé ha escrit una URL incorrecta, o bé ha navegat a un enllaç erroni.',\r\n      yes: 'Sí',\r\n      unsaved_changes: 'Alguns dels canvis no s\\'han desat. Esteu segur que voleu ignorar-les?',\r\n    },\r\n    navigation: {\r\n      no_results: 'No hi ha registres',\r\n      no_more_results: 'La pàgina número %{page} està fora de rang. Provi amb la pàgina anterior.',\r\n      page_out_of_boundaries: 'Pàgina número %{page} fora de rang',\r\n      page_out_from_end: 'No es pot anar més enllà de la última pàgina',\r\n      page_out_from_begin: 'No es pot anar més enllà de la pàgina 1',\r\n      page_range_info: '%{offsetBegin} - %{offsetEnd} de %{total}',\r\n      page_rows_per_page: 'Files per pàgina:',\r\n      next: 'Següent',\r\n      prev: 'Anterior',\r\n      skip_nav: 'Ves al contingut',\r\n    },\r\n    sort: {\r\n      sort_by: 'Ordenar per %{field} %{order}',\r\n      ASC: 'ascendent',\r\n      DESC: 'descendent',\r\n    },\r\n    auth: {\r\n      user_menu: 'Perfil',\r\n      username: 'Usuari',\r\n      password: 'Contrasenya',\r\n      sign_in: 'Inicia sessió',\r\n      sign_in_error: 'Ha fallat l\\'autenticació, si us plau torni a provar-ho',\r\n      logout: 'Tancar sessió',\r\n      auth_check_error: 'Inicieu la sessió per continuar',\r\n      error: 'Usuari o contrasenya incorrecta',\r\n      auth_account_locked: 'El compte està bloquejat. Espera uns minuts i torna a provar-ho',\r\n      auth_too_many_attempts:'S\\'han fet massa intents d\\'inici de sessió. Per seguretat el compte ha quedat bloquejat durant 5 minuts.',\r\n      auth_invalid_credentials:'Usuari o contrasenya incorrecta'\r\n    },\r\n    notification: {\r\n      updated: 'Registre actualitzat |||| %{smart_count} registres actualitzats',\r\n      created: 'Registre creat',\r\n      deleted: 'Registre eliminat |||| %{smart_count} registres eliminats',\r\n      bad_item: 'Element incorrecte',\r\n      logged_out: 'La seva sessió ha finalitzat, torneu a connectar-se.',\r\n      item_doesnt_exist: 'L\\'element no existeix',\r\n      http_error: 'Error de comunicació amb el servidor',\r\n      data_provider_error: 'Error del dataProvider. Comprova la consola per més detalls.',\r\n      canceled: 'Acció cancel·lada',\r\n      i18n_error: 'No es poden carregar les traduccions per a l\\'idioma especificat',\r\n    },\r\n    validation: {\r\n      required: 'Obligatori',\r\n      minLength: 'Longitud mínima de %{min} caràcters',\r\n      maxLength: 'Màxim %{max} caràcters',\r\n      minValue: 'El valor mínim és %{min}',\r\n      maxValue: 'El valor màxim és %{max}',\r\n      number: 'Número invàlid',\r\n      email: 'Ha de ser una adreça electrònica vàlida',\r\n      oneOf: 'Ha de ser un d\\'aquests valors: %{options}',\r\n      regex: 'Ha de complir el format (expressió regular): %{pattern}', \r\n    }\r\n  },\r\n\r\n\r\n  common : {\r\n    id : 'Id',\r\n    name : 'Nom',\r\n    name_internal : 'Nom intern',\r\n    description : 'Descripció',\r\n    email : 'Correu electrònic',\r\n    image : 'Imatge',\r\n    action : 'Acció',\r\n    actions : 'Accions',\r\n    search : 'Cercar',\r\n    actived : 'Actiu',\r\n    actived_female : 'Activa',\r\n    edit : 'Editar',\r\n    visible: 'Visible',\r\n    priority: 'Ordre',\r\n    comment: 'Comentari',\r\n    loading: 'Carregant...',\r\n    data: 'Dades',\r\n    type: 'Tipus',\r\n    status: 'Estat',\r\n    month_1: 'Gen',\r\n    month_2: 'Feb',\r\n    month_3: 'Mar',\r\n    month_4: 'Abr',\r\n    month_5: 'Mai',\r\n    month_6: 'Jun',\r\n    month_7: 'Jul',\r\n    month_8: 'Ago',\r\n    month_9: 'Set',\r\n    month_10: 'Oct',\r\n    month_11: 'Nov',\r\n    month_12: 'Des',     \r\n    months_1: 'Gener',\r\n    months_2: 'Febrer',\r\n    months_3: 'Març',\r\n    months_4: 'Abril',\r\n    months_5: 'Maig',\r\n    months_6: 'Juny',\r\n    months_7: 'Juliol',\r\n    months_8: 'Agost',\r\n    months_9: 'Setembre',\r\n    months_10: 'Octubre',\r\n    months_11: 'Novembre',\r\n    months_12: 'Desembre',    \r\n    year : 'Any',\r\n    language: 'Idioma',\r\n    language_0: 'Català',\r\n    language_1: 'Castellà',\r\n    notification : { \r\n      updated: 'Element actualitzat',\r\n      error: 'S\\'ha produït un error'\r\n    },\r\n    validation: {\r\n      required: 'Obligatori',\r\n      minLength: 'Longitud mínima de %{min} caràcters',\r\n      maxLength: 'Màxim %{max} caràcters',\r\n      minValue: 'El valor mínim és %{min}',\r\n      maxValue: 'El valor màxim és %{max}',\r\n      number: 'Número invàlid',\r\n      email: 'El format del correu electrònic no és correcte',\r\n      oneOf: 'Ha de ser un d\\'aquests valors: %{options}',\r\n      regex: 'Ha de complir el format (expressió regular): %{pattern}',\r\n      minMaxLengthAndCharacters: '%{min}-%{max} caràcters, amb un número, lletra, majúscula, minúscula i caràcter especial',\r\n    },\r\n    yes: 'Sí',\r\n    no: 'No' ,\r\n    labels: 'Etiquetes',\r\n    day_week_1: 'Dill',\r\n    day_week_2: 'Dm',\r\n    day_week_3: 'Dim',\r\n    day_week_4: 'Dij',\r\n    day_week_5: 'Div',\r\n    day_week_6: 'Dis',\r\n    day_week_7: 'Diu',\r\n    day_week_complete_1: 'Dilluns',\r\n    day_week_complete_2: 'Dimarts',\r\n    day_week_complete_3: 'Dimecres',\r\n    day_week_complete_4: 'Dijous',\r\n    day_week_complete_5: 'Divendres',\r\n    day_week_complete_6: 'Dissabte',\r\n    day_week_complete_7: 'Diumenge',\r\n    title: 'Títol',\r\n    link: 'Enllaç',\r\n    notFoundPage: 'La pàgina no existeix',\r\n    goBack: 'Tornar enrere',\r\n    date_from: 'Des del ',\r\n    date_to: ' fins el ',\r\n    time_to: 'A les ',\r\n    download_ok: 'El fitxer s\\'ha generat correctament. Consulta la carpeta de descàrregues del navegador',\r\n    excel: 'Excel',\r\n    pdf: 'PDF',    \r\n  },\r\n  main_menu : {\r\n    home: 'Inici',\r\n    groups: 'Grups',\r\n    users: 'Contactes',\r\n    recercat_users: 'Carnets',\r\n    recercat_centers: 'Centres',\r\n    docs_fac: 'Documents',\r\n    remittances: 'Rebuts',\r\n    classrooms: 'Espais',\r\n    users_groups : 'Assignació a grup',\r\n    associations: 'Clients',\r\n    modules: 'Mòduls',\r\n    modules_view: 'Més Apps...',\r\n    real_state: 'Immobles',\r\n    agreements: 'Convenis',\r\n    insurances: 'Assegurances',\r\n    permissions: 'Permisos',\r\n    subscriptions: 'Subscripcions',\r\n    options: 'Opcions',\r\n    contacts: 'Contactes FAC',\r\n    events: 'Agenda',\r\n    reports: 'Informes',\r\n  },\r\n  dashboard : {\r\n    members: 'Evolució i composició',  \r\n    members_federation: 'Evolució',  \r\n    birthdays: 'Aniversaris',\r\n    members_legend_female : 'Dones',\r\n    members_legend_male : 'Homes',\r\n    members_legend_no_binary : 'No binaris',\r\n    members_legend_no_informed : 'No informat',\r\n    members_legend_companies : 'Entitats jurídiques',\r\n    last_joins: 'més recents',    \r\n    last_joins_pending: 'Sol·licituds pendents de validar',\r\n    members_view: 'Veure tots',\r\n    events_view: 'Veure totes',\r\n    members_federation_view: 'Veure totes',\r\n    members_view_requests: 'Veure totes',\r\n    members_federation_view_requests: 'Veure totes',\r\n    members_add: 'Afegir',\r\n    people: 'persones',\r\n    age_sufix: 'anys',\r\n    age_pyramid: 'Piràmide d\\'edats',\r\n    today: 'Activitats d\\'avui',\r\n    next_events: 'Properes activitats',\r\n    statistics_total_members: 'Número',\r\n    statistics_avg_age: 'Mitjana d\\'edat', \r\n    statistics_gender: 'Per gènere',    \r\n    remittances: 'Rebuts',\r\n    remittances_legend_accepted: 'Acceptats',\r\n    remittances_legend_returned: 'Impagats',\r\n    remittances_add: 'Crear una remesa',\r\n    subscription_active_modules: \"Mòduls actius\",\r\n    subscription_view_all_modules: \"Afegir mòduls\",\r\n    subscription: 'Dades de la subscripció',\r\n    subscription_name: 'Pla de servei',\r\n    subscription_status: 'Estat',\r\n    subscription_date_expiration: 'Data d\\'expiració',\r\n    subscription_users : 'contactes',        \r\n    subscription_size : 'MB',\r\n    subscription_change : 'Modificar',\r\n    help: 'Suport a l\\'usuari',\r\n    help_manual_link: 'Manual d\\'usuari',       \r\n    help_description_sifac: 'Per a qualsevol consulta o suggeriment sobre l\\'ús de l\\'aplicatiu envia un correu electrònic a suport@sifac.cat o bé truca al telèfon 691957814 de dilluns a divendres de 9h a 13h i de 16h a 19h.',\r\n    help_description: 'Per a qualsevol consulta o suggeriment sobre l\\'ús de l\\'aplicatiu envieu un correu electrònic a admin@gestioentitats.cat. Us respondrem el més aviat possible.',                \r\n    federation_members: 'Número',\r\n    federation_total_people: 'Número de socis d\\'entitats',\r\n    federation_avg_age: 'Mitjana d\\'edat',\r\n    federation_avg_age_associations: 'Mitjana d\\'antiguitat',\r\n    federation_economic_data_incomings: 'Ingressos',\r\n    federation_economic_data_expenses: 'Despeses',\r\n    federation_economic_data_inversions: 'Inversions',\r\n    federation_users: 'Persones associades dels ateneus',\r\n    federation_users_number: 'Número',\r\n    federation_volunteers: 'Voluntaris',\r\n    federation_workers: 'Personal remunerat',\r\n    federation_managers: 'Juntes directives',\r\n    federation_responsabilities: 'Membres',    \r\n    federation_num_data: 'Dades de %num% entitat%s%',\r\n    federation_gender: 'Per gènere',    \r\n    federation_map: 'Delegacions territorials',        \r\n    federation_associations: 'entitats',\r\n    alert_subscription_admin: 'Algunes funcions no estan operatives perquè no s\\'ha detectat cap subscripció del Gestió d\\'entitats activa. Si us plau, contacta amb l\\'equip de suport.',    \r\n    facm_auditory : 'Actes a l\\'auditori',\r\n    facm_projects : 'Projectes',\r\n    facm_num_events: 'Actes',\r\n    facm_num_entities: 'Entitats',\r\n    facm_num_assistants: 'Assistents',\r\n  },\r\n  \r\n  modules_view : {\r\n    title: \"Mòduls disponibles\",\r\n    actived: \"Activat\",   \r\n    to_desactive: \"Desactivar\",   \r\n    to_active_button: \"Activar\",    \r\n    change_modules_title: \"Activar/desactivar mòduls\",\r\n    to_activate: \"Per a modificar els mòduls actius i/o el pla de servei contractat, poseu-vos en contacte per correu electrònic a admin@gestioentitats.cat. Us respondrem el més aviat possible.\",\r\n    to_activate_sifac: \"Per a modificar els mòduls actius i/o el pla de servei contractat, poseu-vos en contacte per correu electrònic a suport@sifac.cat o bé truca al telèfon 691957814 de dilluns a divendres de 9h a 13h i de 16h a 19h.\",    \r\n  },\r\n  \r\n  reports: {\r\n    title: 'Generar informe',  \r\n    annuary: 'Anuari',        \r\n    annuary_desc: 'Dades per a realitzar l\\'anuari',\r\n    annuary_item_id: 'Id',\r\n    annuary_item_group: 'Àmbit',\r\n    annuary_item_calc: 'Càlcul',\r\n    annuary_item_name: 'Nom',\r\n    annuary_item_value: 'Quantitat',\r\n    annuary_item_percent: '%',\r\n    annuary_item_avg: 'Mitjana',\r\n    annuary_exporter_file_name: 'anuari',\r\n    annuary_last_years: 'Generar l\\'informe amb dades d\\'anys anteriors si no existeixen dades per l\\'any seleccionat',\r\n    responsabilities: 'Directius d\\'entitats',      \r\n    responsabilities_responsability: 'Càrrec',   \r\n    responsabilities_date: 'Data',   \r\n    responsabilities_desc: 'Llistat de directius d\\'entitats',    \r\n    responsabilities_exporter_file_name: 'directius',\r\n    responsabilities_list_entity_name: 'Entitat',\r\n    responsabilities_list_entity_city: 'Població',\r\n    generate: 'Generar',    \r\n    no_results: 'No hi ha resultats'\r\n  },\r\n  associations : {\r\n    subscriptions : 'Subscripcions',\r\n    tab_data : 'Dades',\r\n    tab_subscriptions : 'Subscripcions',\r\n    tab_admin : 'Administradors',\r\n    tab_statistics : 'Estadístiques',\r\n    generate_data_demo : 'Generar dades de prova',\r\n        \r\n    report_users: 'Usuaris',\r\n    report_groups: 'Grups',\r\n    report_emails: 'Emails',\r\n    report_emails_not_sent: 'No enviats (48h)',\r\n    report_docs: 'Docs',\r\n    report_mb: 'MB',\r\n    report_remittances: 'Remeses',\r\n    report_remittances_users: 'Rebuts',\r\n    report_last_action: 'Última acció',\r\n    \r\n    trial: 'Període de prova',\r\n    begin: 'Inici subscripció',\r\n    end: 'Període de prova exhaurit',\r\n    \r\n    email_sent_tooltip_button: 'Enviar notificació',\r\n    email_sent_tooltip_sending: 'S\\'està enviant notificació...',\r\n    email_sent_tooltip_done: 'S\\'ha enviat la notificació',\r\n    email_sent: 'Notificació',\r\n    email_sent_title: 'Enviar notificació',\r\n    email_sent_ask: 'Segur que vols enviar-li la notificació?' ,  \r\n    email_sent_ask_again: 'Ja s\\'ha enviat anteriorment la notificació. Segur que vols tornar a enviar-li?',        \r\n    email_sent_ko: 'La notificació no s\\'ha pogut entregar al destinatari',\r\n        \r\n  },\r\n  auth: {\r\n    error_title: 'S\\'ha produït un error',\r\n    forgot_password_title: 'No recordes la teva contrasenya?',\r\n    forgot_password_desc: 'Introdueix el teu correu electrònic i t\\'enviarem les instruccions per a crear una nova contrasenya.',\r\n    forgot_password_ok: 'Revisa el teu correu electrònic. <br/><br/> Si ets un usuari administrador t\\'hem enviat les instruccions per a canviar la contrasenya.',\r\n    forgot_password_link: 'Ja recordo la contrasenya',\r\n    reset_password_title: 'Escriu la teva nova contrasenya',\r\n    reset_password_button: 'Canviar contrasenya',\r\n    reset_password_ok: 'La teva contrasenya s\\'ha actualitzat correctament',\r\n    reset_password_ok_link: 'Anar a la pàgina d\\'autenticació',\r\n    send_button: 'Enviar',\r\n    error: 'Error'    \r\n  },\r\n  signup : {\r\n    link_or: \"o\",\r\n    link: \"Registra't\",\r\n    title: 'Registreu-vos per a provar l\\'aplicatiu',\r\n    register: 'Registre de nou usuari',\r\n    desc: 'Introduiu el nom de la vostra entitat i el correu electrònic, i us enviarem l\\'accés per a provar l\\'aplicatiu <b>gratuïtament durant 30 dies</b>, sense introducció de dades bancàries. Transcorregut aquest període ja decidireu si voleu activar el pla de servei.',\r\n    ok: 'Hem rebut les vostres dades correctament. <br/><br/>En breu rebreu un correu electrònic amb les credencials d\\'accés a l\\'aplicatiu.',\r\n    ok_login: 'Accedir',\r\n    name: 'Nom de l\\'entitat',\r\n    send_button: 'Registra\\'t',\r\n    \r\n    form_lopd: 'Accepto que es tractin les meves dades per atendre la sol·licitud de registre',\r\n    form_lopd_validator: 'Heu d\\'acceptar el tractament de les dades',        \r\n    form_lopd_link: 'política de privacitat',\r\n    \r\n    form_terms: 'Accepto els ',\r\n    form_terms_link: 'termes i condicions',\r\n    form_terms_validator: 'Heu d\\'acceptar els termes i condicions',\r\n    \r\n    form_newsletter: 'Accepto que es tractin les meves dades per rebre les ofertes i novetats',\r\n    \r\n    lopd : \"Política de privacitat\",\r\n    terms : \"Termes i condicions\",\r\n    \r\n  },\r\n  \r\n  subscriptions : {\r\n    modules : 'Mòduls',\r\n    module : 'Mòdul',\r\n    options : 'Opcions',\r\n    option : 'Opció',\r\n    docs: 'Imatges',        \r\n    date_init: 'Data d\\'inici',\r\n    date_expiration: 'Data d\\'expiració'\r\n  },\r\n  permissions : {\r\n    user : 'Usuari',\r\n    status : 'Estat',\r\n    status0: 'Pendent',\r\n    status1 : 'Alta'\r\n  },\r\n  groups : {\r\n    title: 'Grups',\r\n    group: 'Grup',\r\n    edit : 'Modificar',\r\n    addChild: 'Afegir fill',\r\n    tab_users : 'Persones' ,\r\n    tab_main : 'Grup' ,\r\n    tab_quotes : 'Quotes' ,\r\n    tab_docs : 'Documents',\r\n    tab_subgroups : 'Subgrups' ,\r\n    tab_responsabilities : 'Càrrecs' , \r\n    num_members: 'Membres actuals' ,\r\n    name: 'Nom del grup',\r\n    card: 'Carnet digital',\r\n    card_digital: 'Es poden generar carnets digitals en PDF',\r\n    card_digital_wallets: 'Es poden generar carnets digitals a Google Wallet i Apple Wallet'\r\n  },\r\n  groups_cards : {\r\n    design_title: 'Disseny del carnet',\r\n    type: 'Element',\r\n    name: 'Títol',\r\n    pos_x: 'M.Esquerre (%)',\r\n    pos_y: 'M.Superior (%)',\r\n    size_x: 'Amplada (%)',\r\n    size_y: 'Alçada (%)',\r\n    num_lines: 'Núm. línies màxim',\r\n    font_size: 'T.Lletra (%)',\r\n    font_color: 'Color',\r\n    opacity: 'Opacitat (%)',\r\n    rectangle_round: 'Extrems arrodonits (%)',\r\n    title: 'Nom del camp',\r\n    message: 'Valor del camp',\r\n    status: 'Visible',\r\n    type_0: 'Nom de l\\'entitat',\r\n    type_0_default_title: 'Entitat',\r\n    type_1: 'Logotip de l\\'entitat',\r\n    type_1_default_title: '',\r\n    type_2: 'Nom + Cognom1 + Cognom2 (membre)',\r\n    type_2_default_title: 'Nom',\r\n    type_3: 'Nom + Cognom1 (membre)',\r\n    type_3_default_title: 'Nom',\r\n    type_4: 'Cognom1 Cognom2, Nom (membre)',\r\n    type_4_default_title: 'Nom',\r\n    type_5: 'Núm. membre (membre)',\r\n    type_5_default_title: 'Número',\r\n    type_6: 'Fotografia (membre)',\r\n    type_6_default_title: '',\r\n    type_7: 'DNI/NIF (membre)',\r\n    type_7_default_title: 'DNI/NIF',\r\n    type_8: 'Data d\\'expedició',\r\n    type_8_default_title: 'Expedició',\r\n    type_9: 'Data d\\'alta',\r\n    type_9_default_title: 'Data ingrés',\r\n    type_10: 'Codi QR',\r\n    type_10_default_title: '',\r\n    type_11: 'Nom del grup',\r\n    type_11_default_title: 'Grup/secció',\r\n    type_12: 'Correu electrònic (membre)',\r\n    type_12_default_title: 'Correu electrònic',\r\n    type_13: 'Nom (membre)',\r\n    type_13_default_title: 'Nom',\r\n    type_14: 'Cognom1 (membre)',\r\n    type_14_default_title: '1r cognom',\r\n    type_15: 'Cognom2 (membre)',\r\n    type_15_default_title: '2n cognom',\r\n    type_16: 'Cognom1 + Cognom2 (membre)',\r\n    type_16_default_title: 'Cognoms',\r\n    type_17: 'Nom del centre',\r\n    type_17_default_title: 'Nom del centre',\r\n    type_18: 'Població del centre',\r\n    type_18_default_title: 'Població del centre',\r\n    type_19: 'Adreça de l\\'entitat',\r\n    type_19_default_title: 'Adreça de l\\'entitat',\r\n    type_20: 'Població de l\\'entitat',\r\n    type_20_default_title: 'Població de l\\'entitat',\r\n    type_21: 'Telèfon de l\\'entitat',\r\n    type_21_default_title: 'Telèfon de l\\'entitat',\r\n    type_22: 'Marc semi-transparent',\r\n    type_22_default_title: '',\r\n    type_23: 'Color de fons',\r\n    type_23_default_title: '',\r\n    type_24: 'Camp de text',\r\n    type_24_default_title: '',\r\n    type_25: 'Color de títols dels camps',\r\n    type_25_default_title: '',\r\n    type_26: 'Color de lletra',\r\n    type_26_default_title: '',\r\n    position: 'Posició',\r\n    position_0: 'Títol capçalera frontal',\r\n    position_1: 'Títol capçalera posterior',\r\n    position_2: 'Camp principal',\r\n    position_3: 'Camp secundari',\r\n    position_4: 'Camp auxiliar',\r\n    position_5: 'Camp sota QR',\r\n    position_6: 'Camp part posterior',\r\n    alignment: 'Aliniament',\r\n    alignment_0: 'Esquerre',\r\n    alignment_1: 'Centrat',\r\n    alignment_2: 'Dreta',\r\n    alignment_3: 'Justificat',\r\n    uppercase: 'Majúscules',\r\n    pdf_view: 'Descarregar carnet en PDF',\r\n    regenerate: 'Regenerar codi QR',\r\n    regenerate_title: 'Regenerar codi QR',\r\n    regenerate_text: 'Segur que vols regenerar el codi QR del carnet digital? Aquesta operació només s\\'hauria de realitzar en cas de pèrdua o robatori del carnet. El carnet anterior deixarà de ser vàlid. Aquesta operació no envia el carnet al contacte, caldrà fer-ho manualment.',\r\n    regenerated_ok: 'Codi QR regenerat correctament',\r\n    pdf_card_filename: 'carnet.pdf',\r\n    pdf_card_ok: 'El carnet s\\'ha generat correctament. Consulta la carpeta de descàrregues del navegador',\r\n    pdf_card_download: 'Previsualització',        \r\n    send_dialog_button: 'Enviar carnets digitals',\r\n    send_dialog_action: 'Acció a realitzar',\r\n    send_dialog_action_0: 'Enviar el carnet digital només als contactes que no s\\'ha enviat (%num_pending%)',\r\n    send_dialog_action_1: 'Enviar el carnet digital a tots els contactes del grup (%num_total%)',     \r\n    send_dialog_block_size: 'Límit enviament',                \r\n    send_dialog_regenerate: 'Regenerar el codi QR. Si marques aquesta opció, els contactes que ja disposaven de carnet digital disposaran d\\'un carnet nou i l\\'anterior serà invàlid. Si no la marques, els usuaris que ja disposaven de carnet digital mantindran el seu codi QR, i l\\'anterior carnet continuarà essent vàlid.',        \r\n    send_dialog_text2: 'S\\'enviarà als contactes que disposin de correu electrònic. L\\'enviament s\\'executarà en segon pla i pot trigar uns minuts. Podràs consultar l\\'estat de l\\'enviament a la fitxa de cada contacte o usant els filtres del llistat de contactes.',\r\n    pdf_card_preview: 'Carregant la previsualització del carnet...',\r\n    create: 'Afegir element',\r\n    create_config: 'Afegir configuració',\r\n    edit: 'Modificar element',    \r\n    edit_config: 'Modificar configuració',\r\n    config: 'Configuració',\r\n    background: 'Imatge de fons',\r\n    settings_pdf: \"Carnet en PDF\",\r\n    settings_wallets_google: \"Google Wallet\",\r\n    settings_wallets_apple: \"Apple Wallet (fitxer .pkpass)\",\r\n    background_google_wallet: \"Imatge inferior del carnet\",\r\n    google_wallet_icon: \"Icona\",\r\n    apple_wallet_icon: \"Imatge de capçalera\",\r\n    google_wallet_background_color: \"Color de fons\"\r\n  },\r\n  users : {\r\n    tab_main : 'Dades bàsiques',\r\n    tab_main_0 : 'Dades personals',\r\n    tab_main_1 : 'Dades generals',\r\n    tab_more : 'Més dades',\r\n    tab_groups : 'Grups' ,\r\n    tab_responsabilities : 'Càrrecs' ,\r\n    tab_responsabilities_fac : 'Càrrecs a la FAC' ,\r\n    tab_quotes : 'Quotes' ,\r\n    tab_contacts : 'Contactes relacionats',\r\n    tab_contacts_rel : 'Contactes relacionats',\r\n    tab_economic_data : 'Pressupost anual',\r\n    tab_workers_0 : 'Personal remunerat',\r\n    tab_workers_1 : 'Voluntaris',\r\n    tab_docs : 'Documents',\r\n    tab_images : 'Imatges',\r\n    tab_family : 'Família',\r\n    tab_history : 'Historial',\r\n    tab_social_nets : 'Xarxes socials',\r\n    user_type: 'Tipus',\r\n    user_type_0: 'Física',\r\n    user_type_1: 'Jurídica',\r\n    group: 'Grup',\r\n    groups: 'Grups',\r\n    without_group : 'Sense grup',\r\n    first_name : 'Nom',\r\n    name_company : 'Nom fiscal',\r\n    last_name_1 : 'Primer cognom',\r\n    last_name_2 : 'Segon cognom',\r\n    email : 'Correu electrònic',\r\n    email_secondary : 'Correu electrònic secundari',\r\n    email_secondary_list : 'Adreces de correu electrònic addicionals',\r\n    code : 'Número intern',\r\n    address : 'Adreça',\r\n    neighborhood : 'Barri',\r\n    zip : 'Codi postal',\r\n    city : 'Població',\r\n    region : 'Comarca',\r\n    country : 'País',\r\n    lat: \"Coord. Latitud\",\r\n    lng: \"Coord. Longitud\",\r\n    phones : 'Telèfons',\r\n    phone : 'Telèfon fix',\r\n    mobile : 'Telèfon mòbil',\r\n    web: 'Pàgina web',\r\n    phone_emergency : 'Telèfon d\\'emergència',\r\n    birthday : 'Data de naixement',\r\n    foundation_date: 'Data de fundació',\r\n    foundation_age : 'Antiguitat',\r\n    job : 'Professió',\r\n    nif : 'NIF',\r\n    nif_only : 'NIF',\r\n    gender : 'Gènere',\r\n    gender_1 : 'Home',\r\n    gender_2 : 'Dona',\r\n    gender_3 : 'No binari',\r\n    comment : 'Observacions',\r\n    bank_data: 'Dades bancàries',\r\n    bank_iban: 'IBAN',\r\n    bank_swift: 'BIC/SWIFT',\r\n    bank_payer: 'Pagador',\r\n    no_users_title : 'Encara no hi ha persones.',\r\n    no_users_ask : 'Vols afegir-ne?',\r\n    person: 'Persona',\r\n    payment_cash: 'Paga en efectiu',\r\n    newsletter: 'Accepta rebre comunicacions de l\\'entitat',\r\n    age: 'Edat',\r\n    age_sufix: 'anys',\r\n    others: 'Altres',\r\n    import : 'Importar',\r\n    import_title : 'Importar persones per a aquest grup des de Excel',\r\n    import_template : 'Descarrega la plantilla Excel',\r\n    add_to_group: 'Afegir a',        \r\n    add_member_comments: 'Dubtes, comentaris o suggeriments',\r\n    add_member_send: 'Enviar',\r\n    validate: 'Validar',\r\n    validate_title: 'Validar soci/a',\r\n    validate_done: 'S\\'ha validat el soci/a',\r\n    validate_send_email: 'Enviar correu electrònic predefinit de benvinguda ara',\r\n    welcome_email_sent: 'Correu de benvinguda',\r\n    welcome_email_sent_title: 'Correu de benvinguda',\r\n    welcome_email_sent_ask: 'Segur que vols enviar-li el correu de benvinguda predefinit?' ,  \r\n    welcome_email_sent_ask_again: 'Ja s\\'ha enviat anteriorment el correu de benvinguda. Segur que vols tornar a enviar-li?',\r\n    welcome_email_sent_ok: 'Enviament realitzat!',\r\n    welcome_email_tooltip_button: 'Enviar correu de benvinguda',\r\n    welcome_email_tooltip_sending: 'S\\'està enviant el correu de benvinguda...',\r\n    welcome_email_tooltip_done: 'S\\'ha enviat el correu de benvinguda',\r\n    welcome_email_sent_ko: 'El correu de benvinguda no s\\'ha pogut entregar al destinatari',\r\n    \r\n    group_left_email_sent: 'Correu de baixa',\r\n    group_left_email_sent_title: 'Correu de baixa',\r\n    group_left_email_sent_ask: 'Segur que vols enviar-li el correu de baixa predefinit?' ,  \r\n    group_left_email_sent_ask_again: 'Ja s\\'ha enviat anteriorment el correu de baixa. Segur que vols tornar a enviar-li?',\r\n    group_left_email_sent_ok: 'Enviament realitzat!',\r\n    group_left_email_tooltip_button: 'Enviar correu de baixa',\r\n    group_left_email_tooltip_sending: 'S\\'està enviant el correu de baixa...',\r\n    group_left_email_tooltip_done: 'S\\'ha enviat el correu de baixa',\r\n    group_left_email_sent_ko: 'El correu de baixa no s\\'ha pogut entregar al destinatari',\r\n        \r\n    digital_card_send: 'Carnet digital',\r\n    digital_card_send_title: 'Carnet digital',\r\n    digital_card_send_ask: 'Segur que vols enviar-li el carnet digital?' ,  \r\n    digital_card_send_ask_again: 'Ja s\\'ha enviat anteriorment el carnet digital. Segur que vols tornar a enviar-li?',\r\n    digital_card_send_ok: 'Enviament realitzat!',\r\n    digital_card_tooltip_button: 'Enviar carnet digital',\r\n    digital_card_tooltip_sending: 'S\\'està enviant el carnet digital...',\r\n    digital_card_tooltip_done: 'S\\'ha enviat el carnet digital',\r\n    digital_card_send_ko: 'El carnet digital no s\\'ha pogut entregar al destinatari',\r\n        \r\n    exporter_file_name: 'contactes.xlsx',\r\n    exporter_file_name_csv: 'contactes',\r\n    export: 'Exportar',\r\n    alerts: 'Avisos',    \r\n    \r\n    delete_all: 'Esborrar',\r\n    delete_all_confirm_title: 'Confirmació d\\'eliminació de %num_registers% registre/s',\r\n    delete_all_confirm_description: 'S\\'esborraran totes les seves dades, documents, imatges, reserves, rebuts, històric de grups, ... i qualsevol dada associada que tinguin. ',\r\n    delete_all_confirm_description_ask: 'Estàs segur que vols eliminar els contactes seleccionats?',\r\n    delete_all_ok: 'registres esborrats correctament',\r\n    delete_all_ko: 'Alguns registres no s\\'han pogut esborrar: ',\r\n    \r\n    group_changes: 'Canvis en grups',\r\n    group_changes_title: 'Canvis pels %num_registers% contacte/s seleccionat/s',\r\n    group_changes_action: 'Acció a realitzar',\r\n    group_changes_action_1: 'Baixa del grup %group_name%',\r\n    group_changes_action_2: 'Moure a grup',\r\n    group_changes_action_3: 'Assignar a grup',\r\n    group_changes_date_1: 'Data de baixa',\r\n    group_changes_date_2: 'Data de moviment',\r\n    group_changes_date_3: 'Data d\\'alta',\r\n    group_changes_confirm: 'Confirmar',\r\n    group_changes_destination_group: 'Grup destí',\r\n    group_changes_ok_1: '%num_registers% contactes s\\'han donat de baixa correctament',\r\n    group_changes_ok_2: '%num_registers% contactes s\\'han mogut correctament',\r\n    group_changes_ok_3: '%num_registers% contactes s\\'han assignat correctament',\r\n    group_changes_ko_1: '%num_registers% contactes no s\\'han pogut donar de baixa',\r\n    group_changes_ko_2: '%num_registers% contactes no s\\'han pogut moure',\r\n    group_changes_ko_3: '%num_registers% contactes no s\\'han pogut assignar',\r\n    \r\n  },      \r\n  users_filter: {\r\n    title: 'Filtrar',\r\n    filters: 'Filtres',\r\n    field: 'Camp',\r\n    operator: 'Operador',\r\n    value: 'Valor',\r\n    year: 'Any',\r\n        \r\n    filter_1: 'Nom',\r\n    filter_2: 'Primer cognom',\r\n    filter_3: 'Segon cognom',        \r\n    filter_4: 'Correu-e principal',\r\n    filter_5: 'Tipus de contacte',\r\n    filter_6: 'Adreça',\r\n    filter_7: 'Barri',\r\n    filter_8: 'Codi postal',\r\n    filter_9: 'Població',\r\n    filter_10: 'Comarca',\r\n    filter_11: 'País',\r\n    filter_12: 'NIF',\r\n    filter_13: 'Pàgina web',\r\n    filter_14: 'Data naixement',\r\n    filter_15: 'Data de fundació',\r\n    filter_16: 'Edat',\r\n    filter_17: 'Antiguitat',\r\n    filter_18: 'Correu-e addicional',\r\n    filter_19: 'IBAN',\r\n    filter_20: 'Quota',\r\n    filter_21: 'Últim rebut',\r\n    filter_22: 'Nom complet',\r\n    filter_23: 'Telèfon fix',\r\n    filter_24: 'Telèfon mòbil',\r\n    filter_25: 'Telèfon emergència',\r\n    filter_26: 'Gènere',\r\n    filter_27: 'Professió',\r\n    filter_28: 'Accepta comunicacions',\r\n    filter_29: 'BIC/SWIFT',\r\n    filter_30: 'Paga en efectiu',\r\n    filter_31: 'Fotografia',\r\n    filter_32: 'Documents',\r\n    filter_33: 'Grup: Data alta al grup',\r\n    filter_34: 'Grup: Núm. membre',\r\n    filter_35: 'Xarxes socials',\r\n    filter_36: 'Observacions',\r\n    filter_37: 'Avisos',\r\n    filter_38: 'Grup',  \r\n    filter_39: 'Centre',  \r\n    filter_40: 'Imatges',  \r\n    filter_41: 'Correu-e secundari',\r\n        \r\n    filter_50: 'Grup: S\\'ha enviat el correu de benvinguda',\r\n    filter_51: 'Grup: S\\'ha enviat el carnet digital',\r\n        \r\n    /* FEDERACIO */\r\n    filter_80: 'Adreces: Adreça',\r\n    filter_81: 'Adreces: Codi postal',\r\n    filter_82: 'Adreces: Població',\r\n    filter_83: 'Adreces: Comarca',\r\n    filter_84: 'Adreces: Província',\r\n    filter_85: 'Adreces: País',\r\n    filter_86: 'Adreces: Adreça d\\'enviament',\r\n    filter_87: 'Adreces: Codi postal d\\'enviament',\r\n    filter_88: 'Adreces: Població d\\'enviament',\r\n    filter_89: 'Adreces: Comarca d\\'enviament',\r\n    filter_90: 'Adreces: Província d\\'enviament',\r\n    filter_91: 'Adreces: País d\\'enviament',\r\n        \r\n    filter_99: 'Nom popular',\r\n    filter_100: 'Acrònim',\r\n    filter_101: 'Nom del registre',\r\n    filter_102: 'Núm. del registre',\r\n    filter_103: 'BCIN',\r\n    filter_104: 'BCIL',\r\n    filter_105: 'Sistema de venda d\\'entrades',\r\n    filter_106: 'Forma part de l\\'XTAC',\r\n    filter_107: 'Entitat interès cultural',\r\n    filter_108: 'Entitat d\\'utilitat pública',\r\n    filter_109: 'Accés al Programa Cat',\r\n    filter_110: 'Últim canvi de junta',\r\n    filter_111: 'Proper canvi de junta',\r\n    filter_112: 'Delegació',\r\n    filter_113: 'Acull altres entitats',\r\n    filter_114: 'Entitats que acull',    \r\n    filter_121: 'Carnets de socis',\r\n    filter_122: 'Logo de la FAC al carnet',\r\n    filter_123: 'Reglament intern',    \r\n    filter_125: 'Placa de la FAC',\r\n    filter_126: 'Llicència d\\'activitats',        \r\n    filter_127: 'Titularitat de l\\'ateneu',\r\n    filter_128: 'La propietat és',\r\n    filter_129: 'Cedit/Llogat',\r\n    filter_130: 'Expropiat actualment',\r\n    filter_131: 'Adaptats a la nova LOPD',\r\n    filter_132: 'Normatives vigents de',\r\n    filter_133: 'Memòria',\r\n    filter_134: 'Forma part d\\'altres federacions',\r\n    filter_135: 'Federacions que forma part',\r\n    filter_136: 'Carnet RCAT',\r\n    filter_137: 'Entitat activa',\r\n    filter_138: 'Entitat desapareguda',\r\n    filter_139: 'Espoliada pel franquisme',\r\n    filter_140: 'Data desaparició',\r\n    filter_141: 'Personatge vinculat a ressaltar',    \r\n        \r\n    filter_200: 'Espais',\r\n    filter_201: 'Espais: Total m2',\r\n    filter_202: 'Espais: m2',\r\n    filter_203: 'Espais: capacitat',\r\n        \r\n    filter_300: 'Pressupost anual',\r\n    filter_301: 'Pressupost: total ingressos',\r\n    filter_302: 'Pressupost: total despeses',\r\n    filter_303: 'Pressupost: total inversió obres',\r\n    filter_304: 'Pressupost: resultat',\r\n    filter_305: 'Pressupost (ingressos): quotes de socis',\r\n    filter_306: 'Pressupost (ingressos): serveis oferts',\r\n    filter_307: 'Pressupost (ingressos): subvencions',\r\n    filter_308: 'Pressupost (ingressos): arrendaments',\r\n    filter_309: 'Pressupost (ingressos): venda de productes',\r\n    filter_310: 'Pressupost (ingressos): ajuts privats',\r\n    filter_311: 'Pressupost (ingressos): altres',\r\n    filter_312: 'Pressupost (despeses): lloguers',\r\n    filter_313: 'Pressupost (despeses): personal',\r\n    filter_314: 'Pressupost (despeses): material',\r\n    filter_315: 'Pressupost (despeses): professionals externs',\r\n    filter_316: 'Pressupost (despeses): catxés de grups',\r\n    filter_317: 'Pressupost (despeses): subministraments',\r\n    filter_318: 'Pressupost (despeses): manteniment',\r\n    filter_319: 'Pressupost (despeses): comunicació i publicitat',\r\n    filter_320: 'Pressupost (despeses): altres',\r\n    filter_321: 'Pressupost (inversió obres): edifici',\r\n    filter_322: 'Pressupost (inversió obres): teatre',\r\n    filter_323: 'Pressupost (inversió obres): bar',\r\n    filter_324: 'Pressupost (inversió obres): accessibilitat',\r\n    filter_325: 'Pressupost (inversió obres): seguretat',\r\n    filter_326: 'Pressupost (inversió obres): altres',\r\n    filter_327: 'Pressupost: Mitjana de la quota anual',\r\n    \r\n    filter_350: 'Dades demogràfiques',\r\n    filter_351: 'Dades demogràfiques: Núm. de socis',\r\n    filter_352: 'Dades demogràfiques: Mitjana d\\'edat',\r\n    filter_353: 'Dades demogràfiques: Mitjana d\\'edat junta directiva',\r\n    filter_354: 'Dades demogràfiques: Homes (%)',\r\n    filter_355: 'Dades demogràfiques: Dones (%)',\r\n    filter_356: 'Dades demogràfiques: No binaris (%)',\r\n       \r\n    filter_400: 'Personal remunerat',\r\n    filter_401: 'Personal remunerat: total personal',\r\n    filter_402: 'Personal remunerat: administració',\r\n    filter_403: 'Personal remunerat: tècnic d\\'activitats',\r\n    filter_404: 'Personal remunerat: consergeria',\r\n    filter_405: 'Personal remunerat: neteja',\r\n    filter_406: 'Personal remunerat: comunicació',\r\n    filter_407: 'Personal remunerat: comptabilitat',\r\n    filter_408: 'Personal remunerat: manteniment',\r\n    filter_409: 'Personal remunerat: gerència',\r\n    filter_410: 'Personal remunerat: altres',\r\n        \r\n    filter_450: 'Voluntaris',\r\n    filter_451: 'Voluntaris: total',\r\n    filter_452: 'Voluntaris: administració',\r\n    filter_453: 'Voluntaris: tècnic d\\'activitats',\r\n    filter_454: 'Voluntaris: consergeria',\r\n    filter_455: 'Voluntaris: neteja',\r\n    filter_456: 'Voluntaris: comunicació',\r\n    filter_457: 'Voluntaris: comptabilitat',\r\n    filter_458: 'Voluntaris: manteniment',\r\n    filter_459: 'Voluntaris: gerència',\r\n    filter_460: 'Voluntaris: altres',\r\n    \r\n    filter_470: 'Formacions en arts: total hores',\r\n    filter_471: 'Formacions en arts: estudiants per formació',\r\n    filter_472: 'Formacions en arts: estudiants per tipus de formació',\r\n    filter_473: 'Formacions en arts: professorat remunerat per formació',\r\n    filter_474: 'Formacions en arts: professorat remunerat per tipus de formació',\r\n    filter_475: 'Formacions en arts: professorat voluntari per formació',\r\n    filter_476: 'Formacions en arts: professorat voluntari per tipus de formació',\r\n    \r\n    filter_480: 'Formacions: total hores',\r\n    filter_481: 'Formacions: estudiants per formació',\r\n    filter_482: 'Formacions: estudiants per tipus de formació',\r\n    filter_483: 'Formacions: professorat remunerat per formació',\r\n    filter_484: 'Formacions: professorat remunerat per tipus de formació',\r\n    filter_485: 'Formacions: professorat voluntari per formació',\r\n    filter_486: 'Formacions: professorat voluntari per tipus de formació',\r\n    \r\n    filter_490: 'Projectes socials',\r\n    filter_491: 'Projectes socials per tipus',\r\n       \r\n    filter_500: 'Activitats',\r\n    filter_501: 'Activitats: total activitats anuals',        \r\n    filter_502: 'Activitats: total assistents anuals',\r\n    filter_503: 'Activitats: quantitat',\r\n    filter_504: 'Activitats: assistents',\r\n        \r\n    filter_600: 'Espectacles',\r\n    filter_601: 'Espectacles: total funcions',\r\n    filter_602: 'Espectacles: total assistents',\r\n    filter_603: 'Espectacles: total pressupost',\r\n    filter_604: 'Espectacles: funcions',\r\n    filter_605: 'Espectacles: assistents',\r\n    filter_606: 'Espectacles: pressupost',\r\n        \r\n    filter_700: 'Seccions',\r\n    filter_701: 'Seccions: núm. de seccions',\r\n    filter_702: 'Seccions: total participants',\r\n    filter_703: 'Seccions: participants',\r\n                \r\n    filter_750: 'Ha respost el formulari per a l\\'anuari',\r\n    filter_751: 'S\\'ha enviat el formulari per a l\\'anuari',\r\n    filter_752: 'S\\'ha enviat el recordatori del formulari',\r\n       \r\n    filter_800: 'Forma part d\\'un cens',\r\n    filter_801: 'Llibres',\r\n    filter_802: 'Enviaments',\r\n                                \r\n    filter_op_1: 'Conté',        \r\n    filter_op_2: 'És igual a',\r\n    filter_op_3: 'És diferent a',   \r\n    filter_op_4: 'És major que',\r\n    filter_op_5: 'És major o igual que',\r\n    filter_op_6: 'És menor que',\r\n    filter_op_7: 'És menor o igual que',   \r\n    filter_op_8: 'No conté',\r\n    filter_op_9: 'En té',\r\n    filter_op_10: 'No en té',\r\n        \r\n  },\r\n    \r\n  users_permissions: {\r\n    email_sent: 'Correu d\\'alta d\\'administrador/a',\r\n    email_sent_title: 'Correu d\\'alta d\\'administrador/a',\r\n    email_sent_ask: 'Segur que vols enviar-li el correu d\\'alta d\\'administrador/a predefinit? Es generarà una nova contrasenya.' ,  \r\n    email_sent_ask_again: 'Ja s\\'ha enviat anteriorment el correu d\\'alta d\\'administrador/a. Segur que vols tornar a enviar-li? Es generarà una nova contrasenya.',\r\n    email_sent_ok: 'Enviament realitzat!',\r\n    email_tooltip_button: 'Enviar correu d\\'alta d\\'administrador/a',\r\n    email_tooltip_sending: 'S\\'està enviant el correu de d\\'alta d\\'administrador/a...',\r\n    email_tooltip_done: 'S\\'ha enviat el correu d\\'alta d\\'administrador/a',\r\n    email_sent_ko: 'El correu d\\'alta d\\'administrador no s\\'ha pogut entregar al destinatari',  \r\n    role: 'Permisos',\r\n    role_SIFAC: 'Superadministrador',\r\n    role_ADMIN: 'Administrador',\r\n    role_ADMIN_CONTACTS: 'Administrador (lectura + edició contactes)',\r\n    role_ADMIN_READER: 'Administrador (lectura)',\r\n  },\r\n        \r\n  users_federation : {\r\n    tab: 'Dades Federació',\r\n    tab_more: 'Més Federació',\r\n    tab_managers: 'Junta directiva',\r\n    tab_managers_1: 'Junta directiva actual',\r\n    tab_managers_2: 'Membres d\\'anteriors juntes directives',\r\n    tab_managers_other: 'Membre de juntes directives d\\'altres contactes',\r\n    tab_classrooms: 'Espais',  \r\n    name: 'Nom popular',\r\n    acronym: 'Acrònim',\r\n    reg_name: 'Nom del registre',\r\n    reg_num: 'Núm. del registre',    \r\n    bcin: 'BCIN',\r\n    bcil: 'BCIL',\r\n    tickets: 'Sistema de venda d\\'entrades',\r\n    xtac: 'Forma part de l\\'XTAC',\r\n    culture_interest: 'Entitat interès cultural',\r\n    public_utility: 'Entitat d\\'utilitat pública',\r\n    soft_cat: 'Accés al Programa Cat',\r\n    rcat: 'Carnet RCAT',\r\n    last_managers_change: 'Últim canvi de junta',\r\n    next_managers_change: 'Proper canvi de junta',\r\n    delegation: 'Forma part d\\'una delegació?',\r\n    host: 'S\\'acullen altres entitats',\r\n    host_entities: 'Quines entitats?',\r\n    more_federations: 'Forma part d\\'altres federacions',\r\n    federations: 'Quines federacions?',\r\n    lopd: 'Adaptats nou Reglament Europeu Protecció Dades (LOPD)',\r\n    members_cards: 'Carnets de socis',\r\n    logo_federation: 'Hi ha logo de la FAC',\r\n    internal_regulation: 'Reglament intern',\r\n    federation_plate: 'Placa de la FAC',\r\n    ownership: 'Titularitat de l\\'ateneu',\r\n    property: 'La propietat és',\r\n    rent: 'Cedit/Llogat',\r\n    expropied: 'Està expropiat actualment',\r\n    license: 'Té llicència d\\'activitats',\r\n    regulations: 'Normatives vigents de',\r\n    \r\n    actived: 'Entitat activa',\r\n    missing: 'Entitat desapareguda',\r\n    robbed: 'Espoliada pel franquisme',\r\n    missing_date: 'Data desaparició',\r\n    history_title: 'Història',\r\n    history: 'Història Ateneu - L\\'entitat',\r\n    history_equipment: 'Història entitat - L\\'equipament, infraestructura',\r\n    history_current: 'Història Ateneu - Situació actual',\r\n            \r\n    census: 'Forma part d\\'un cens',\r\n    mailing_lists: 'Enviaments',\r\n    activities_users: 'Etiquetes',\r\n    books: 'Llibres',\r\n                            \r\n    edited_books_title: 'Publicacions de l\\'entitat',\r\n    edited_books_books: 'Llibres editats',\r\n    edited_books_book_entity: 'Llibre de l\\'ateneu',\r\n    edited_books_newsletter: 'Butlletí electrònic',\r\n    edited_books_magazine: 'Revista',\r\n    highlighted_dates: 'Dates a ressaltar',\r\n    notable_individuals: 'Personatges vinculats a ressaltar',\r\n    links: 'Enllaços d\\'interès',\r\n    edited_books_memory: 'Memòria',\r\n    edited_books_date: 'Data',\r\n    edited_books_period: 'Periodicitat',\r\n    event: 'Esdeveniment',\r\n        \r\n    recognitions: 'Reconeixements',\r\n    recognitions_date: 'Data',\r\n        \r\n    schedules: 'Horaris',\r\n    schedules_day_week: 'Dia',\r\n    schedules_time_start: 'Hora inici',\r\n    schedules_time_finish: 'Hora fi',\r\n                \r\n    addresses: 'Adreces',\r\n    ship_address: 'Adreça d\\'enviament',\r\n    province: 'Província',\r\n    gmaps: 'Google Maps',\r\n    addresses_create: 'Afegir adreça',\r\n    addresses_edit: 'Modificar adreça',\r\n    is_foundation_address: 'És l\\'adreça de fundació de l\\'entitat',\r\n    ship_to_same: 'L\\'adreça d\\'enviament és la mateixa adreça',\r\n    building: 'Edifici',\r\n    regultations: 'Regulacions',\r\n    others: 'Altres',\r\n    classrooms: 'Espais',        \r\n    total_m2: 'Total m2',    \r\n        \r\n  },\r\n    \r\n  users_groups :{\r\n    date_join : 'Data alta',\r\n    date_left : 'Data baixa',\r\n    responsability: 'Càrrec',\r\n    num_member : 'Núm. membre',\r\n    last_num_inserted: 'Núm. membre més recent: ',\r\n    exporter_file_name: 'carrecs',\r\n    qr_code: 'Codi QR',\r\n    left: 'Donar de baixa',\r\n    left_send_email: 'Enviar correu electrònic predefinit de baixa a la persona ara',\r\n  },\r\n  groups_quotes: {\r\n    title: 'Periodicitats i imports',\r\n    date_payment : 'Data de pagament',\r\n    month_payment : 'Inici',\r\n    period : 'Periodicitat',\r\n    quantity: 'Import',\r\n    apply_to_all: 'Aplicar la quota a tots els membres automàticament',\r\n    is_donation: 'És un donatiu',    \r\n    apply_to_all_list: 'S\\'aplica automàticament',\r\n    apply_to_all_donation: 'Aplicar a rebuts',\r\n    apply_to_all_donation_title: 'Establir rebuts existents com a donatius',\r\n    apply_to_all_donation_desc: 'Estàs segur que vols establir tots els rebuts ja emesos per aquesta quota com a donatius? Aquesta acció no es pot desfer.',\r\n    apply_to_all_donation_ok: 'S\\'han establert tots els rebuts d\\'aquesta quota com a donatius',\r\n    apply_to_all_donation_ko: 'No s\\'ha pogut realitzar l\\'acció',\r\n  },\r\n  users_groups_quotes : {\r\n    group: 'Grup',\r\n    group_quote : 'Quota',\r\n    group_quote_period : 'Periodicitat',\r\n    quantity : 'Import',\r\n    discount_ini : 'Inici',\r\n    discount_end : 'Fi',\r\n    discount_percent : 'Dte (%)',        \r\n    discount_quantity : 'Dte (€)',\r\n    manual_quantity : 'Import manual (€)',\r\n    comment: 'Comentari'\r\n  },\r\n  remittances: {\r\n    tab_main: 'Remesa',\r\n    tab_remittances_users: 'Rebuts',\r\n    concept: 'Concepte',\r\n    quantity: 'Import',\r\n    date_creation : 'Data',\r\n    count_users: 'Rebuts',\r\n    sum_quantity : 'Import',\r\n    sepa: 'Fitxer SEPA',\r\n    pdf: 'Rebuts PDF',\r\n    link_user: 'Persona',\r\n    status: 'Estat',\r\n    status0: 'Acceptat',\r\n    status1: 'Impagat',\r\n    statusFilterAll: 'Tots',\r\n    statusFilter0: 'Acceptats',\r\n    statusFilter1: 'Impagats',        \r\n    payer: 'Pagador',\r\n    iban: 'IBAN',\r\n    nif: 'NIF',       \r\n    status_form: 'Canviar estat del rebut', \r\n    status_new: 'Nou estat', \r\n    check_reemit: 'Es podrà tornar a generar el rebut en una nova remesa',\r\n    check_sent_return_notification: 'Enviar la notificació d\\'impagament al prémer Desar',\r\n    comments: 'Observacions',\r\n    comments_form: 'Observacions sobre l\\'estat del rebut',\r\n    default_name: 'Remesa_',\r\n    groups_with_quotes: 'Generar automàticament els rebuts de',\r\n    edit_state : 'Modificar',\r\n    returns: 'Incorporar rebuts impagats d\\'altres remeses',\r\n    refresh_payer: 'Actualitzar dades',\r\n    refresh_payer_confirm: 'S\\'han actualitzat les dades de pagament de l\\'usuari',\r\n    no_remittances_users_title : 'remeses de rebuts',\r\n    no_remittances_users_ask : 'Vols afegir-ne una?',\r\n    payer_payment_cash : 'És un pagament en efectiu',\r\n    payment_system : 'Forma de pagament',\r\n    bank: 'Rebut bancari',\r\n    cash : 'Efectiu',\r\n    pdf_filename: 'rebuts',\r\n    pdf_ok: 'El fitxer s\\'ha generat correctament. Consulta la carpeta de descàrregues del navegador',\r\n    ref: 'Ref.',\r\n    resume_total_plural: 'rebuts a la remesa',\r\n    resume_total: 'rebuts a la remesa',\r\n    resume_bank_plural: 'rebuts domiciliats',\r\n    resume_bank: 'rebut domiciliat',\r\n    resume_cash_plural: 'rebuts en efectiu',\r\n    resume_cash: 'rebut en efectiu',\r\n    create: 'Afegir rebut', \r\n    create_remittance: 'Afegir remesa' ,\r\n    check_partial_quotes: 'Incloure quotes proporcionals dels nous membres. Per exemple, si hi ha un nou membre al febrer i la propera quota periòdica no és fins el gener de l\\'any següent, es generarà un rebut amb la part proporcional dels mesos restants.',\r\n    name: 'Remesa',\r\n    last_receips: 'Últims rebuts emesos',\r\n    send_returned_notification_title: 'Enviar notificació d\\'impagament',\r\n    send_returned_notification_content: 'Segur que vols enviar-li el correu d\\'impagament predefinit?',\r\n    send_returned_notification_content_again: 'Ja s\\'ha enviat anteriorment el correu. Segur que vols tornar a enviar-li el correu d\\'impagament predefinit?',  \r\n    send_returned_ko: 'El correu no s\\'ha pogut entregar al destinatari',\r\n    send_returned_tooltip_button: 'Enviar notificació d\\'impagament',\r\n    send_returned_tooltip_sending: 'S\\'està enviant la notificació d\\'impagament...',\r\n    send_returned_tooltip_done: 'S\\'ha enviat la notififcació d\\'impagament',        \r\n    exporter_file_name: 'rebuts',\r\n    exporter_header_returned_status: 'Notificació d\\'impagament enviada',\r\n    is_donation: 'És un donatiu',    \r\n  },   \r\n  ibans : {\r\n    create_iban: 'Afegir compte',\r\n    public_id: 'Identificador',\r\n    name: 'Nom del compte',\r\n    ordering: 'Ordenant',\r\n    iban: 'IBAN',\r\n    swift: 'BIC/SWIFT',\r\n    sufix: 'Sufix',\r\n    nif: 'NIF/CIF',\r\n    returns_tax: 'Comissió de devolució (€)',\r\n    bank_country_iso: 'País (ISO)',        \r\n    create: 'Afegir compte', \r\n    edit: 'Editar compte', \r\n    no_ibans: 'comptes configurats',\r\n    name_create_remittance: 'Compte',\r\n  },\r\n  payment_systems: {\r\n    main_menu_title: 'Passarel·les bancàries',\r\n    create: 'Afegir passarel·la',\r\n    edit: 'Modificar passarel·la',\r\n    public_id: 'Identificador',\r\n    plattform: 'Tipus',\r\n    plattform_0: 'Redsys',\r\n    plattform_1: 'Addon Payments',\r\n    name: 'Nom',\r\n    merchant: 'Comerç',\r\n    pswd: 'Contrasenya',\r\n    terminal: 'Terminal / Account',\r\n    url_ok: 'Url retorn OK',\r\n    url_ko: 'Url retorn KO',\r\n    url_async: 'Url de notificació',\r\n    real: 'Entorn real',\r\n    url: 'Url connexió (mode REAL)',\r\n    url_test: 'Url connexió (mode TEST)',\r\n    currency: 'Moneda',\r\n    encrypt: 'Clau d\\'encriptació',\r\n    transaction_type: 'Tipus de transacció',\r\n    exporter_file_name: 'pasarelles',\r\n  }, \r\n  donations_projects: {\r\n    id: 'Id projecte',\r\n    main_menu_title: 'Donatius',\r\n    associations_id: 'Id entitat',\r\n    associations_name: 'Entitat',\r\n    reports_title: 'Projectes per a rebre donacions de les entitats federades',    \r\n    name: 'Projecte',\r\n    create: 'Afegir projecte',\r\n    description_short: 'Descripció curta per mostrar al llistat públic de projectes',\r\n    description: 'Descripció llarga',\r\n    video: 'Adreça de vídeo Youtube',\r\n    date_start: 'Inici de la campanya',\r\n    date_finish: 'Finalització',\r\n    minimum_amount: 'Import mínim del donatiu (€)',\r\n    amount: 'Objectiu recaptació (€)',\r\n    public_entity: 'Públic a la web',\r\n    public_fac: 'Públic a la web de la FAC',\r\n    public_fac_date: 'Data límit publicació',\r\n    public_sum_donations: 'Publicar total aportacions',\r\n    payment_card: 'Targeta',\r\n    payment_systems_id: 'Passarel·la de pagament',\r\n    payment_systems_fac: 'Formes de pagament de la FAC',\r\n    payment_transfer: 'Transferència bancària',\r\n    payment_transfer_ibans_id: 'Al compte bancari',\r\n    ibans_iban: 'Abonament al compte bancari',\r\n    legal_text_1: 'Text legal',\r\n    legal_text_2: 'Text legal',\r\n    legal_text_3: 'Paràgraf de justificació en el certificat de donació',\r\n    confirmation_text_1: 'Text de confirmació',\r\n    confirmation_text_2: 'Text de confirmació',\r\n    confirmation_email_1: 'Text correu-e de confirmació',\r\n    count_donations: 'Finançadors',\r\n    sum_donations: 'Import finançadors',\r\n    sum_donations_percent: '% recaptat',\r\n    remaining_days: 'Temps restant',\r\n    minute: 'minut',\r\n    minutes: 'minuts',\r\n    hour: 'hora',\r\n    hours: 'hores',\r\n    day: 'dia',\r\n    days: 'dies',\r\n    seconds: 'segons',\r\n    second: 'segon',\r\n    filter_only_current: 'Projectes vigents',\r\n    only_pending: 'Pendents de validació',\r\n    images: 'Imatges',\r\n    legal_text: 'Textos legals',\r\n    payment_systems: 'Forma de pagament',\r\n    public: 'Publicació',\r\n    preview: 'Previsualització',\r\n    view: 'Web',\r\n    fac_validation_status: 'Validació FAC',\r\n    fac_validation_status_0: 'Mode edició',\r\n    fac_validation_status_1: 'Pendent de validació',\r\n    fac_validation_status_2: 'Validat',\r\n    fac_validation_status_3: 'Rebutjat',\r\n    fac_validation_actions: 'Accions',\r\n    fac_validation_actions_1: 'Sol·licitar validació',\r\n    edit: 'Modificar',\r\n    validate: 'Validar',\r\n    target_by_date: 'Objectiu en un interval de dates',\r\n    reports: 'Donatius: Projectes de les entitats',\r\n    reports_desc: 'Validar els projectes de les entitats federades, consultar mecenes i afegir donatius en efectiu o transferència bancària.',\r\n    reports_transfer_validations: 'Donatius: Validació de transferències bancàries',    \r\n    reports_transfer_validations_desc: 'Validar els donatius realitzats mitjançant transferència bancària.',\r\n    reports_payments: 'Donatius: Pagaments a les entitats',\r\n    reports_payments_desc: 'Consulta dels imports a transferir a les entitats',\r\n    reports_certificates: 'Donatius: Certificats de donació',\r\n    reports_certificates_desc: 'Genera els certificats de donació',    \r\n    validate_request: 'Sol·licitar validació',\r\n    validate_request_button: 'Sol·licitar',\r\n    validate_request_desc: 'Sol·licitar que la FAC revisi i validi el projecte per a publicar-se i poder començar a rebre donatius. A partir d\\'aquest moment no podreu modificar el projecte',\r\n    exporter_file_name: 'projectes',\r\n    view_web: 'Veure a la web',\r\n    friendly_url: 'URL pública',\r\n    city: 'Població',\r\n    phone: 'Telèfon de contacte',\r\n    email: 'Correu-e de contacte',\r\n    friendly_url: 'Adreça pública',\r\n    comments_actived: 'Comentaris actius',\r\n    contact_data: 'Dades de contacte',\r\n  }, \r\n  utils : {\r\n    copy_clipboard_success: 'S\\'ha copiat al porta-retalls',\r\n    copy_clipboard_error: 'No s\\'ha pogut copiar al porta-retalls',\r\n  },\r\n  public_donations_projects: {\r\n    not_actived: 'L\\'entitat no té projectes de donatius actius',\r\n    for: 'Per',\r\n    live: 'En marxa!',\r\n    early: 'Començarà aviat',\r\n    finished: 'Finalitzat!',\r\n    count_donations: 'Finançadors',\r\n    goal: 'Objectiu',\r\n    view_all_projects: 'Tots els projectes',\r\n    remain: 'Queden',\r\n    remain_1: 'Queda',\r\n    win: 'Aconseguits',\r\n    more_info: '+ Info',\r\n    contribute: 'Aportar',\r\n    association_not_found : 'L\\'entitat no s\\'ha trobat o hi ha hagut un error',\r\n    not_found : 'El projecte no s\\'ha trobat o hi ha hagut un error',\r\n    view_web: 'Agenda web',\r\n    go_back: 'Tornar enrere',\r\n    search: 'Cercar',\r\n    filter_date_after: 'Comença després de',\r\n    filter_date_before: 'Comença abans de',\r\n    filter_organizer_all: 'Totes les entitats',\r\n    comments: 'Comentaris de finançadors',\r\n    ago: 'fa',\r\n    close: 'D\\'acord',\r\n    return: 'Tornar',\r\n    preview: 'Aquesta pàgina és una previsualització del projecte'\r\n  },\r\n  donations_users: {\r\n    main_menu_title: 'Finançadors',\r\n    create: 'Afegir donatiu',\r\n    create_to: 'Fer aportarció a ',\r\n    edit: 'Modificar',\r\n    cancel: 'Cancel·lar',\r\n    pay: 'Pagar',\r\n    donations_projects_id: 'Id projecte',\r\n    donations_projects_name: 'Nom projecte',\r\n    associations_id: 'Id entitat',\r\n    associations_name: 'Entitat',\r\n    order_id: 'Referència',\r\n    date_time: 'Data donació',\r\n    user_type: 'Persona',\r\n    first_name: 'Nom',\r\n    last_name_1: 'Cognom 1',\r\n    last_name_2: 'Cognom 2',\r\n    email: 'Correu-e',\r\n    nif: 'DNI/NIF',\r\n    address: 'Adreça',\r\n    zip: 'Codi postal',\r\n    city: 'Població',\r\n    country: 'País',\r\n    phone: 'Telèfon',\r\n    payment_method: 'Forma de pagament',\r\n    payment_method_0: 'Transferència',\r\n    payment_method_1: 'Targeta',\r\n    payment_method_2: 'Efectiu',\r\n    amount: 'Import',\r\n    status: 'Estat',\r\n    status_0: 'Pendent',\r\n    status_1: 'Confirmat',\r\n    status_2: 'Rebutjat',\r\n    date: 'Data de l\\'ingrés',    \r\n    send_confirmation: 'Enviar correu de confirmació al donant',\r\n    transaction_id: 'Codi de transacció',\r\n    comment: 'Comentari',\r\n    certificate: 'Certificat donació',\r\n    send_status: 'Certificat enviat',\r\n    send_date_time: 'Data enviament',\r\n    confirmation_status: 'Confirmació enviada al donant',\r\n    confirmation_date_time: 'Data enviament',\r\n    only_accepted: 'Només pagaments confirmats',\r\n    only_pending: 'Només pagaments pendents',    \r\n    only_certificate_not_sent: 'Només certificats no enviats',\r\n    pdf_download: 'Descarregar',\r\n    validate: 'Confirmar',\r\n    validate_transfer: 'Confirmar transferència',\r\n    pdf_certificate_filename: 'certificat_donacio.pdf',\r\n    pdf_certificate_ok: 'El certificat de donació s\\'ha generat amb èxit. Consulteu la carpeta de descàrregues del navegador.',\r\n    pdf_certificate_ko: 'El certificat de donació no s\\'ha pogut generar.',\r\n    actions: 'Accions',\r\n    email_sent: 'Certificat de donació',\r\n    email_sent_title: 'Certificat de donació',\r\n    email_sent_ask: 'Segur que vols enviar-li el certificat de donació?' ,  \r\n    email_sent_ask_all: 'Segur que vols enviar el certificat de donació predefinit a totes les persones que encara no s\\'hagi enviat?' ,  \r\n    email_sent_ask_again: 'Ja s\\'ha enviat anteriorment el certificat de donació. Segur que vols tornar a enviar-li?',        \r\n    email_send_all_button: 'Certificats de donació',\r\n    email_send_all_button_title: 'Enviar certificats de donació',\r\n    email_sent_ko: 'El certificat de donació no s\\'ha pogut entregar al destinatari',\r\n    email_sent_tooltip_button: 'Enviar certificat de donació',\r\n    email_sent_tooltip_sending: 'S\\'està enviant el certificat de donació...',\r\n    email_sent_tooltip_done: 'S\\'ha enviat el certificat de donació',\r\n    email_sent_confirmation: 'Confirmació del donatiu',\r\n    email_sent_confirmation_title: 'Confirmació del donatiu',\r\n    email_sent_confirmation_ask: 'Segur que vols enviar-li la confirmació de la donació?' ,  \r\n    email_sent_confirmation_ask_again: 'Ja s\\'ha enviat anteriorment la confirmació de la donació. Segur que vols tornar a enviar-li?',        \r\n    email_sent_confirmation_ko: 'La confirmació del donatiu no s\\'ha pogut entregar al destinatari',\r\n    email_sent_confirmation_tooltip_button: 'Enviar confirmació del donatiu',\r\n    email_sent_confirmation_tooltip_sending: 'S\\'està enviant confirmació del donatiu...',\r\n    email_sent_confirmation_tooltip_done: 'S\\'ha enviat la confirmació del donatiu',\r\n    exporter_file_name: 'financadors',\r\n    want_certificate: 'Vol certificat de donació',\r\n    copy: 'Copiar',\r\n    copy_title: 'Copiar transferència',\r\n    donations_users_rel: 'Donatiu relacionat'\r\n  }, \r\n  donations_certificates : {\r\n      title: 'Certificats de donació',\r\n      generate: 'Veure',\r\n      status : 'Estat enviament',\r\n      date_time : 'Data enviament',\r\n      exporter_file_name: 'certificats',\r\n  },\r\n  donations_payments : {\r\n      title: 'Pagaments a les entitats',\r\n      date_from: 'Des de',\r\n      date_to: 'Fins',\r\n      generate: 'Veure',      \r\n      reports_title: 'Pagament de les donacions a les entitats entre el %date_from% i %date_to%',\r\n      exporter_file_name: 'pagaments'\r\n  },\r\n  postal_labels : {\r\n    create: 'Afegir format',\r\n    edit: 'Editar format',\r\n    name: 'Nom',\r\n    colxrows: \"Columnes x files\",\r\n    margins_cell: \"Marges de l'etiqueta (cm)\",\r\n    margins_page: \"Marges de la pàgina (cm)\",\r\n    num_columns: \"Núm. columnes\",\r\n    num_rows: \"Núm. files\",   \r\n    template: \"Plantilla\",\r\n    available_fields: \"Camps disponibles:\",\r\n    fields: \"%nom% | %cognom1% | %cognom2% | %adreca% | %cp% | %poblacio% | %comarca% | %provincia% | %pais%\",\r\n    font_size: \"Tamany de lletra (punts)\",\r\n    line_separator: \"Separació entre línies (punts)\",\r\n    margin_cell_left: \"Esquerre\",\r\n    margin_cell_top: \"Superior\",\r\n    margin_cell_right: \"Dret\",\r\n    margin_cell_bottom: \"Inferior\",\r\n    margin_page_left: \"Esquerre\",\r\n    margin_page_top: \"Superior\",\r\n    margin_page_right: \"Dret\",\r\n    margin_page_bottom: \"Inferior\",\r\n    last_row: \"Emplenar l'última fila de cada pàgina\",\r\n    priority: \"Ordre\",    \r\n    generate_button_title : \"Etiquetes\",\r\n    generate_modal_title : \"Generar etiquetes postals\",\r\n    generate_modal_desc : \"Vols generar un document PDF (DIN A4) amb les etiquetes de les adreces postals dels contactes?\",\r\n    generate_modal_button : \"Generar\",\r\n    generate_format : \"Format de la pàgina (columnes x files)\",    \r\n    generate_pdf_filename: \"etiquetes.pdf\",\r\n    generate_ok_message : \"Les etiquetes s'han generat amb èxit. Consulteu la carpeta de descàrregues del navegador.\",\r\n    add_formats: \"Afegir formats\",\r\n  },\r\n  classrooms: {\r\n    no_classrooms_title : 'Encara no hi ha espais',\r\n    no_classrooms_ask : 'Vols afegir-ne un?',\r\n    create: 'Afegir espai',\r\n    seats: 'Capacitat (persones)',\r\n    type: 'Tipus d\\'espai',\r\n    type0: 'Cafeteria / Restaurant',\r\n    type1: 'Teatre',\r\n    type2: 'Sala exposicions',\r\n    type3: 'Arxius',\r\n    type4: 'Biblioteca',\r\n    type5: 'Equipaments esportius',\r\n    type6: 'Sales polivalents',\r\n    type7: 'Sales de cinema',\r\n    type8: 'Auditori',\r\n    type9: 'Jardí/Pati exterior',\r\n    type10: 'Altres',\r\n    m2: 'Tamany (m2)',\r\n    is_public: 'L\\'espai és visible a la pàgina web',\r\n    show_fac: 'L\\'espai és visible a la pàgina de la FAC',\r\n    is_requestable: 'Es pot demanar l\\'ús d\\'aquest espai a través de la pàgina web',\r\n    is_for_events: 'Es poden programar esdeveniments en aquest espai',\r\n    data: 'Dades',\r\n    photos: 'Fotografies',\r\n    docs: 'Fitxa tècnica',\r\n    color: 'Color en el calendari',\r\n    overlapable: 'Es permet la superposició d\\'esdeveniments en aquest espai',\r\n    link_back: 'Tornar',\r\n    accessible: 'És accessible',\r\n    cession: 'En cessió',\r\n    rent: 'Llogat',\r\n    rentable: 'Disponible per a llogar',\r\n    lift: 'Té ascensor',\r\n    visibility: 'Visibilitat',\r\n    events: 'Esdeveniments',\r\n    outdoor: 'És exterior',\r\n  },\r\n  real_state: {\r\n      create: 'Afegir immoble',      \r\n      address: \"Adreça\",\r\n      city: \"Població\",\r\n      use: \"Ús\",\r\n      use_0: \"Altres\",\r\n      use_1: \"En lloguer\",\r\n      use_2: \"En cessió\",\r\n      use_others: 'Altres usos',\r\n      identifier: \"Identificador\",\r\n      acquisition_date: 'Data d\\'adquisició',\r\n      sale_date: 'Data de venda',\r\n      amount: 'Valor comptable',\r\n      guaranteed_value: 'Valor assegurat',\r\n      cadastral_reference: 'Referència cadastral',\r\n      comments: 'Observacions',\r\n      docs: 'Documents',\r\n      description: 'Descripció',\r\n      insurance: 'Assegurança',\r\n      insurances: 'Assegurances',\r\n      docs_deed: 'Escriptures propietat, registre mercantil...',\r\n      docs_map: 'Plànols',\r\n      activities: 'Activitat',\r\n      activities_in_real_state: 'Activitats en immobles',\r\n      payments: 'Despeses',\r\n      agreements: \"Convenis\",\r\n      filter_only_current: \"Només actuals\",      \r\n      exporter_file_name: 'immobles',\r\n  },\r\n  real_state_activities : {      \r\n      create: 'Afegir activitat',\r\n      name: 'Nom de l\\'activitat',\r\n      user: 'Contacte',\r\n      type: 'Tipus de relació',\r\n      type_0: 'Altres',\r\n      type_1: 'Conveni',\r\n      type_2: 'Contracte',\r\n      type_other: 'Tipus de relació',\r\n      agreements_id: 'Conveni',\r\n      date_start: \"Data inici\",\r\n      date_finish: \"Data final\",\r\n      date_alert: \"Data preavís\",\r\n      insurance_who: 'Responsable assegurança',\r\n      insurance_who_0: 'La persona',\r\n      insurance_who_1: 'Nosaltres',\r\n      relations: 'Relació amb la comunitat propietaris',      \r\n      comments: 'Observacions',\r\n      docs: 'Documents',\r\n      docs_contracts: 'Contractes',\r\n      docs_insurances: 'Assegurances',\r\n      real_state_id: 'Id immoble',\r\n      real_state: 'Nom immoble',\r\n      exporter_file_name: 'activitat_immobles'\r\n  },\r\n  real_state_payments : {\r\n      create: 'Afegir despesa',\r\n      type: 'Tipus',\r\n      type_0: 'Altres',\r\n      type_1: 'Llum',\r\n      type_2: 'Aigua',\r\n      type_3: 'Gas',\r\n      type_4: 'Telèfon',\r\n      type_5: 'Assegurança',\r\n      type_6: 'Obres',\r\n      type_7: 'Manteniment',\r\n      type_8: 'Reparacions',\r\n      type_9: 'Transformacions',\r\n      type_other: 'Tipus',\r\n      date_payment: \"Data pagament\",\r\n      amount: 'Import',\r\n      payer: 'Pagador',\r\n      payer_0: 'Altres',\r\n      payer_1: 'Nosaltres',\r\n      payer_2: 'Comunitat',\r\n      payer_3: 'Llogater',\r\n      payer_other: 'Pagador',\r\n      financing: 'Finançament',\r\n      financing_type: 'Tipus de finançament',\r\n      docs: 'Documents',\r\n      docs_billing: 'Factures',\r\n      comments: 'Observacions',\r\n      exporter_file_name: 'pagaments'\r\n  },\r\n  agreements: {\r\n      create: 'Afegir conveni',\r\n      users: \"Persones\",\r\n      date_start: \"Data inici\",\r\n      date_finish: \"Data final\",\r\n      date_alert: \"Data preavís\",\r\n      date_renewal: \"Data renovació\",\r\n      renewal_duration: \"Duració renovació\",\r\n      date_renewal_quote: \"Renovació quota\",\r\n      comments: 'Observacions',\r\n      users: \"Contactes\",\r\n      real_state: \"Immobles\",      \r\n      docs: 'Documents',\r\n      filter_only_current: \"Només vigents\",\r\n      exporter_file_name: 'convenis',\r\n  },\r\n  classrooms_activities: {\r\n      create: 'Afegir activitat',\r\n  },\r\n  classrooms_payments: {\r\n      create: 'Afegir pagament',\r\n  },\r\n  insurances: {\r\n      create: 'Afegir assegurança',\r\n      real_state: 'Immobles',\r\n      date_start: 'Data inici',\r\n      date_finish: 'Data final',\r\n      date_alert: 'Data alerta',\r\n      date_renewal: 'Data renovació',\r\n      renewal_duration: 'Durada renovació',\r\n      comments: 'Observacions',\r\n      docs: 'Documents',\r\n      filter_only_current: \"Només vigents\",\r\n      exporter_file_name: 'assegurances',\r\n  },\r\n  alerts: {      \r\n      create: 'Afegir alerta',      \r\n      type: 'Tipus',\r\n      type_1: 'Genèrica puntual',\r\n      type_2: 'Periòdica anual',\r\n      type_3: 'Periòdica mensual',\r\n      type_4: 'Preavís activitat immoble',\r\n      type_5: 'Preavís conveni',\r\n      type_6: 'Renovació conveni',\r\n      type_7: 'Actualització quota conveni',\r\n      type_8: 'Preavís assegurança',\r\n      type_9: 'Esdeveniment',\r\n      message: 'Missatge a mostrar',\r\n      date_alert: 'Data puntual',\r\n      date_day: 'Dia del mes',\r\n      date_month: 'Mes',\r\n      actions: 'Accions',\r\n      action_send_email: 'Enviament de correu electrònic als administradors',\r\n      action_popup: 'Mostrar missatge a la finestra d\\'alertes dels administradors',\r\n      actived: 'Activa',\r\n      delete_all: 'Esborrar totes les alertes',\r\n      no_results: 'No hi ha alertes',\r\n      filter_only_current: 'Només actives',      \r\n      postpone: 'Posposar alerta',\r\n      date_apply: 'Nova data',\r\n      postpone_ok: 'S\\'ha posposat l\\'alerta',\r\n      delete: 'Esborrar',\r\n      delete_ok: 'S\\'ha esborrat l\\'alerta',\r\n      delete_all_ok: 'S\\'han esborrat totes les alertes',\r\n  },  \r\n  docs: {\r\n    docs: 'Documents',\r\n    create: 'Afegir',\r\n    edit: 'Canviar el nom',\r\n    actions: 'Accions',\r\n    download: 'Descarregar',\r\n    size : 'Tamany',\r\n    fieldExcel : 'Document .xlsx (màx. %size%MB)',\r\n    fieldDoc : 'Document (màx. %size%MB)',\r\n    fieldImg : 'Imatge (màx. %size%MB)',\r\n    change : 'Canviar',\r\n    webcam: 'Foto des de webcam',\r\n    webcam_capture: 'Capturar',\r\n    webcam_error: 'No s\\'ha detectat la webcam',\r\n    delete_photo_title : 'Esborrar fotografia',\r\n    delete_photo_ask : 'Segur que vols esborrar la fotografia?',        \r\n    imported: 'Importació finalitzada correctament. S\\'han importat %num% registres',\r\n    imported_none: 'No hi ha registres per importar',\r\n    copy_link: 'Adreça pública',    \r\n  },\r\n  events: {\r\n    create: 'Afegir esdeveniment',\r\n    edit: 'Modificar',\r\n    name: 'Nom de l\\'esdeveniment',\r\n    description: 'Descripció',\r\n    start: 'Data inici',\r\n    end: 'Data fi',\r\n    classroom: 'Espai',\r\n    activity: 'Activitat',\r\n    is_public: 'Publicar-la a la web d\\'entitat',\r\n    is_public_filter: 'Publicades a web',\r\n    show_fac: 'Publicar-la a la web de la FAC',\r\n    show_fac_filter: 'Publicades a FAC',\r\n    repetitive: 'Generar repeticions',\r\n    repetitive_limit: 'Finalitza el dia',\r\n    repetitive_mode_edition_title_save: 'Edita l\\'esdeveniment periòdic',\r\n    repetitive_mode_edition_title_delete: 'Esborrar l\\'esdeveniment periòdic',\r\n    repetitive_mode_edition_only_one: 'Aquest esdeveniment',\r\n    repetitive_mode_edition_only_future: 'Aquest esdeveniment i els següents',\r\n    repetitive_mode_edition_all: 'Tots els esdeveniments',\r\n    repetitive_mode_edition_save: 'Desar',\r\n    repetitive_mode_edition_delete: 'Esborrar',\r\n    repetitive_mode_edition_delete_confirmation: 'Segur que vols esborrar els esdeveniments?',\r\n    repetitive_mode_edition_delete_confirmation_2: 'Estàs segur/a que vols esborrar els esdeveniments?',\r\n    repetitive_mode_edition_cancel: 'Cancel·lar',\r\n    overlapable_title: 'Superposició d\\'esdeveniments',\r\n    overlapable_ask: 'Vols permetre la celebració de diversos esdeveniments en el mateix espai i temps?',\r\n    data: 'Dades',\r\n    images: 'Imatges',\r\n    images_desc: '* Pots marcar les imatges que s\\'enviaran en el correu electrònic d\\'invitació. Tingues en compte de reduir al màxim el pes del arxius.',\r\n    docs: 'Documents',\r\n    docs_desc: '* Pots marcar els documents que s\\'enviaran en el correu electrònic d\\'invitació. Tingues en compte de reduir al màxim el pes del arxius.',\r\n    docs_mark: 'Adjunt a correu d\\'invitació (*)',\r\n    bookings: 'Persones',\r\n    exporter_file_name: 'activitats',\r\n    exporter_header_id: 'Identificador intern',\r\n    exporter_header_title: 'Esdeveniment',\r\n    exporter_header_date_start: 'Data inicial',\r\n    exporter_header_date_finish: 'Data final',\r\n    exporter_header_classrooms_name: 'Espai',\r\n    exporter_header_activities_name: 'Activitat',\r\n    exporter_header_is_public: 'És públic',\r\n    export_title: 'Exportar activitats',\r\n    export_form_text: 'Data d\\'inici',\r\n    export_form_from: 'Des del',\r\n    export_form_to: 'Fins el',\r\n    pdf_filename: 'esdeveniments',\r\n    organizer: 'Organitzador',\r\n    address: 'Adreça de l\\'esdeveniment',\r\n    city: 'Població',\r\n    alert_days: 'Avís als administradors',\r\n    alert_days_none: 'Sense avís',\r\n    alert_days_0: 'El mateix dia',\r\n    alert_days_1: '1 dia abans',\r\n    alert_days_2: '2 dies abans',\r\n    alert_days_3: '3 dies abans',\r\n    alert_days_4: '4 dies abans',\r\n    alert_days_5: '5 dies abans',\r\n    alert_days_6: '6 dies abans',\r\n    alert_days_7: '7 dies abans',\r\n    alert_days_8: '8 dies abans',\r\n    alert_days_9: '9 dies abans',\r\n    alert_days_10: '10 dies abans',\r\n    alert_days_11: '11 dies abans',\r\n    alert_days_12: '12 dies abans',\r\n    alert_days_13: '13 dies abans',\r\n    alert_days_14: '14 dies abans',\r\n    tickets_url: 'URL venda d\\'entrades',\r\n    max_assistants: 'Número d\\'assistents',\r\n    is_internal: 'És un esdeveniment intern',\r\n    is_internal_filter: 'Esdeveniment intern',\r\n  },\r\n  public_events: {\r\n    not_actived: 'L\\'entitat no té l\\'agenda activa',\r\n    association_not_found : 'L\\'entitat no s\\'ha trobat o hi ha hagut un error',\r\n    event_not_found : 'L\\'activitat no s\\'ha trobat o hi ha hagut un error',\r\n    view_web: 'Agenda web',\r\n    go_back: 'Tornar enrere',\r\n    search: 'Cercar',\r\n    filter_date_after: 'Comença després de',\r\n    filter_date_before: 'Comença abans de',\r\n    filter_activity: 'Activitat',\r\n    filter_organizer: 'Organitzador',\r\n    filter_province: 'Província',\r\n    filter_region: 'Comarca',\r\n    filter_city: 'Població',\r\n    filter_organizer_all: 'Totes les entitats',\r\n    filter_activity_all: 'Totes les activitats',\r\n    filter_province_all: 'Totes les províncies',\r\n    filter_region_all: 'Totes les comarques',\r\n    filter_city_all: 'Totes les poblacions',\r\n    more_info: '+ Info',\r\n    tickets: 'Entrades',\r\n  },\r\n  recercat_centers:\r\n    {\r\n      public_id: 'Codi',\r\n      name: 'Nom',\r\n      city: 'Població',\r\n      email: 'Correu electrònic',\r\n      actived: 'Actiu',\r\n      create: 'Afegir centre',\r\n      no_centers_title : 'centres',\r\n      no_centers_ask : 'Vols afegir-ne un?',\r\n      column_center: 'Centre',      \r\n      column_city: 'Població (seu de l\\'entitat)',      \r\n      actions: 'Accions',\r\n      actions_revoke: 'Revocar',\r\n      actions_validate: 'Validar', \r\n      actions_deny: 'Denegar', \r\n      actions_title0: 'Revocar carnet',    \r\n      actions_title1: 'Validar sol·licitud de carnet',    \r\n      actions_title2: 'Denegar sol·licitud de carnet',\r\n      actions_title3: 'Validar sol·licitud de carnet',\r\n      actions_title4: 'Revocar carnet',\r\n      actions_title5: 'Denegar sol·licitud de carnet',\r\n      actions_title6: 'Validar sol·licitud de carnet',        \r\n      action_button0: 'Revocar',\r\n      action_button1: 'Validar',\r\n      action_button2: 'Denegar',\r\n      action_button3: 'Validar',\r\n      action_button4: 'Revocar',\r\n      action_button5: 'Denegar',\r\n      action_button6: 'Validar',        \r\n      validate_num_member: 'Número de carnet',    \r\n      validate_send_email: 'Enviar el carnet digital a la persona',    \r\n      revoke_send_email: 'Enviar missatge de confirmació a la persona',\r\n      revoke_title: 'Revocar carnet',    \r\n      revoke_ask: 'Segur que vols revocar el carnet? S\\'esborraran les dades personals i no es podran recuperar.',    \r\n      deny_ask: 'Segur que vols denegar la sol·licitud de carnet? S\\'esborraran les dades personals i no es podran recuperar.',    \r\n      revoke_comment: 'Motiu',    \r\n      revoke_button: 'Revocar',        \r\n      resume_send: 'Enviament de resum',\r\n      resume_send_title: 'Enviament de resum',\r\n      resume_send_ask: 'Segur que vols enviar un resum dels carnets al centre?' ,  \r\n      resume_send_ask_again: 'Ja s\\'ha enviat anteriorment un resum dels carnets al centre. Segur que vols tornar a enviar-lo?',\r\n      resume_send_ok: 'Enviament realitzat!',\r\n      resume_send_tooltip_button: 'Enviar resum de carnets',\r\n      resume_send_send_tooltip_sending: 'S\\'està enviant el resum de carnets...',\r\n      resume_send_tooltip_done: 'S\\'ha enviat el resum de carnets',\r\n      resume_send_ko: 'El resum de carnets no s\\'ha pogut entregar al destinatari',\r\n        \r\n      dashboard_resume_title: 'Estat de carnets',\r\n      dashboard_resume_num_members: 'Carnets actius',\r\n      dashboard_resume_num_centers: 'Total de centres actius',\r\n      dashboard_graphic_title: 'Carnets validats',\r\n      dashboard_graphic_cards: 'Carnets',\r\n                \r\n      validation_email_code_0: 'La vostra sol·licitud per obtenir el Carnet digital Recercat ha estat acceptada correctament.<br/><br />Properament us enviarem el Carnet digital Recercat a la vostra adreça electrònica.<br /><br />Reviseu la carpeta de correu brossa de la vostra bústia.<br /><br />',\r\n      validation_email_code_1: 'El codi de l\\'adreça no és correcta',\r\n      validation_email_code_2: 'La sol·licitud no s\\'ha trobat o ja no està activa',\r\n      validation_email_code_3: 'La teva sol·licitud ja està en curs.',\r\n      validation_email_code_4: 'L\\'entitat de l\\'adreça no és correcta.',\r\n      validation_email_code_5: 'El formulari de sol·licitud de carnets Recercat està desactivat.',\r\n      validation_email_code_6: 'L\\'enllaç ja no és vàlid. Si us plau, torneu a fer la sol·licitud.',\r\n      validation_email_error: 'S\\'ha produït un error intentant validar la sol·licitud',\r\n        \r\n      form_title: 'Formulari de sol·licitud del Carnet digital Recercat',\r\n      form_title_send_email: 'Formulari de sol·licitud del Carnet digital Recercat',\r\n      form_title_validate_ok: 'Confirmació de sol·licitud del carnet Recercat',\r\n      form_title_validate_ko: 'Sol·licitud del carnet Recercat',\r\n      required_fields: '* Tots els camps són necessaris',        \r\n        \r\n      resume_title: 'Estat dels carnets Recercat',\r\n      resume_pending_center: 'Pendents de validació centre',\r\n      resume_pending_irmu: 'Pendents de validació per l\\'IRMU',\r\n      resume_validated: 'Validats per l\\'IRMU',\r\n      resume_error: 'No s\\'han pogut recuperar les dades, l\\'adreça no és vàlida.',\r\n      resume_actions_accept: 'Acceptar',\r\n      resume_actions_deny: 'Denegar',\r\n      resume_actions_revoke: 'Revocar',\r\n      resume_actions_logout: 'Tancar sessió',\r\n        \r\n      resume_dialog_title_3: 'Acceptar sol·licitud de carnet',\r\n      resume_dialog_desc_3: 'La sol·licitud continuarà el seu procés i passarà a l\\'estat Pendent de Validació IRMU.',\r\n      resume_dialog_button_3: 'Acceptar',\r\n      resume_dialog_title_5: 'Denegar sol·licitud',\r\n      resume_dialog_desc_5: 'Segur que vols denegar la sol·licitud de carnet? La persona rebrà un correu electrònic predefinit informant-lo de la denegació i s\\'esborraran totes les seves dades.',\r\n      resume_dialog_button_5: 'Denegar',\r\n      resume_dialog_title_4: 'Revocar carnet',\r\n      resume_dialog_desc_4: 'Segur que vols revocar el carnet? La persona rebrà un correu electrònic predefinit informant-lo de la baixa i s\\'esborraran totes les seves dades.',\r\n      resume_dialog_button_4: 'Revocar',\r\n      resume_dialog_title_8: 'Tancar sessió',\r\n      resume_dialog_desc_8: 'Segur que vols tancar la sessió? L\\'enllaç deixarà de ser vàlid i només podràs tornar a accedir a aquesta pàgina si reps un nou correu d\\'estat de carnets Recercat.',\r\n      resume_dialog_button_8: 'Tancar sessió',\r\n        \r\n      delete_center_title: 'Segur que vols esborrar el centre? ',\r\n      delete_center_ask: 'Es revocaran tots els seus carnets actuals, es denegaran les sol·licituds de carnet pendents i es devincularà el centre de qualsevol carnet en el passat. S\\'enviarà una notificació a totes les persones afectades.',\r\n        \r\n    },\r\n    \r\n  documents_fac : {\r\n    title: 'Documents de la FAC',\r\n    description: 'En aquest apartat podeu consultar els documents disponibles per a les associacions federades.'\r\n  },\r\n    \r\n  bookings: {\r\n    create_user_button: 'Persona',\r\n    create_user_title: 'Afegir persona',\r\n    create_group_button: 'Grup',\r\n    create_group_title: 'Afegir grup',\r\n        \r\n    status_0: 'Invitació',\r\n    email_sent_0: 'Correu d\\'invitació',\r\n    email_sent_title_0: 'Correu d\\'invitació',\r\n    email_sent_ask_0: 'Segur que vols enviar-li el correu d\\'invitació predefinit?' ,  \r\n    email_sent_ask_all_0: 'Segur que vols enviar el correu d\\'invitació predefinit a totes les persones que encara no s\\'hagi enviat?' ,  \r\n    email_sent_ask_again_0: 'Ja s\\'ha enviat anteriorment el correu d\\'invitació. Segur que vols tornar a enviar-li?',        \r\n    email_send_all_button_0: 'Invitacions',\r\n    email_send_all_button_title_0: 'Enviar invitacions',\r\n    email_sent_ko_0: 'La invitació no s\\'ha pogut entregar al destinatari',\r\n    email_sent_tooltip_button_0: 'Enviar invitació',\r\n    email_sent_tooltip_sending_0: 'S\\'està enviant la invitació...',\r\n    email_sent_tooltip_done_0: 'S\\'ha enviat la invitació',\r\n        \r\n    status_1: 'Recordatori',\r\n    email_sent_1: 'Correu de recordatori',\r\n    email_sent_title_1: 'Correu de recordatori',\r\n    email_sent_ask_1: 'Segur que vols enviar-li el correu de recordatori predefinit?' ,  \r\n    email_sent_ask_all_1: 'Segur que vols enviar el correu de recordatori predefinit a totes les persones que encara no s\\'hagi enviat?' ,  \r\n    email_sent_ask_again_1: 'Ja s\\'ha enviat anteriorment el correu de recordatori. Segur que vols tornar a enviar-li?',              \r\n    email_send_all_button_1: 'Recordatoris',\r\n    email_send_all_button_title_1: 'Enviar recordatoris',\r\n    email_sent_ko_1: 'El recordatori no s\\'ha pogut entregar al destinatari',\r\n    email_sent_tooltip_button_1: 'Enviar recordatori',\r\n    email_sent_tooltip_sending_1: 'S\\'està enviant el recordatori...',\r\n    email_sent_tooltip_done_1: 'S\\'ha enviat el recordatori',\r\n        \r\n    email_sent_ok: 'Enviament realitzat!', \r\n    email_only_pending: 'A les persones que encara no s\\'ha enviat',\r\n    email_all: 'A totes les persones',\r\n    email_send_button: 'Enviar',\r\n    email_send_all_advise: 'L\\'enviament massiu s\\'executarà en segon pla i pot trigar uns minuts.',\r\n            \r\n    email_status_0: '',\r\n    email_status_1: 'Enviant...',\r\n    email_status_2: 'Error enviant!',\r\n    email_status_3: 'Enviat!',\r\n    email_status_4: 'Retornat!',\r\n        \r\n    delete_all_button: 'Esborrar',        \r\n    delete_all_button_title: 'Esborrar persones',\r\n    delete_all_ask: 'Segur que vols esborrar totes les persones de l\\'esdeveniment?' ,  \r\n    reminder: 'Enviar recordatori a totes les persones',\r\n    reminder_0: 'No enviar',\r\n    reminder_1: 'El mateix dia a les 7h',\r\n    reminder_2: 'El mateix dia a les 8h',\r\n    reminder_3: 'El mateix dia a les 9h',\r\n    reminder_4: 'El mateix dia a les 10h',  \r\n    reminder_5: 'El dia anterior a les 19h',    \r\n    reminder_6: 'El dia anterior a les 20h',        \r\n    reminder_7: 'El dia anterior a les 21h',        \r\n    reminder_8: 'El dia anterior a les 22h',  \r\n        \r\n    exporter_file_name: 'persones_esdeveniment',\r\n    exporter_header_id : 'Identificador',\r\n  },\r\n  social_nets : {\r\n    title : 'Xarxa social',\r\n    link : 'Nom d\\'usuari'\r\n  },\r\n  users_families : {\r\n    name : 'Nom'\r\n  },\r\n  users_activities: {\r\n    title: 'Activitats',\r\n    create_button: 'Afegir',\r\n    create: 'Afegir resum anual d\\'activitats',\r\n    edit: 'Modificar resum anual d\\'activitats',\r\n    name: 'Activitat',\r\n    quantity: 'Quantitat',\r\n    assistants: 'Assistents',\r\n    adult: 'Públic',\r\n    total_quantity: 'Núm. activitats',\r\n    total_assistants: 'Total assistents',\r\n  },\r\n  users_trainings : {\r\n    title0: 'Formació en arts',\r\n    title1: 'Formacions',\r\n    create_button: 'Afegir',\r\n    create0: 'Afegir resum anual de formacions en arts',\r\n    create1: 'Afegir resum anual de formacions',\r\n    edit0: 'Modificar resum anual de formacions en arts',\r\n    edit1: 'Modificar resum anual de formacions',        \r\n    type: 'Formació',\r\n    training_type: 'Tipus d\\'activitat',\r\n    training_type0: 'Curs',\r\n    training_type1: 'Taller',\r\n    training_type2: 'Esplai',\r\n    training_type3: 'Aula',\r\n    training_type99: 'Altres',\r\n    training_type_others: 'Tipus d\\'activitat (si no està a la llista)',\r\n    periodicities: 'Periodicitat',\r\n    periodicity0: 'Diària',\r\n    periodicity1: 'Setmanal',\r\n    periodicity2: 'Mensual',\r\n    periodicity3: 'Curs lectiu',\r\n    periodicity4: 'Estiu',\r\n    periodicity5: 'Nadal',\r\n    periodicity6: 'Setmana Santa',\r\n    ages: 'Franja d\\'edats',\r\n    ages0: 'Infantil (menys de 12 anys)',\r\n    ages1: 'Juvenil (12-18 anys)',\r\n    ages2: 'Adults (18-40 anys)',\r\n    ages3: 'Veterans (40+ anys)',\r\n    ages4: 'Mix de diferents edats',\r\n    num_classrooms: 'Núm. d\\'espais',\r\n    formal: 'Formal / No formal',\r\n    students: 'Estudiants',\r\n    teachers_workers: 'Professorat remunerat',\r\n    teachers_volunteers: 'Professorat voluntari',\r\n    total_hours: 'Total d\\'hores',\r\n    total_quantity0: 'Núm. formacions en art',\r\n    total_quantity1: 'Núm. formacions',\r\n    total_teachers_workers: 'Total professorat remunerat',\r\n    total_teachers_volunteers: 'Total professorat voluntari',\r\n    total_students: 'Total estudiants',\r\n    type0: 'Teatre',\r\n    type1: 'Dansa',\r\n    type2: 'Circ',\r\n    type3: 'Coral',\r\n    type4: 'Cant',\r\n    type5: 'Instruments musicals',\r\n    type6: 'Arts plàstiques',\r\n    type7: 'Arts audiovisuals-digitals',\r\n    type8: 'Escriptura i expressió literària',\r\n    type9: 'Fotografia',\r\n    type10: 'Dansa iniciació',\r\n    type11: 'Dansa contemporània',\r\n    type12: 'Música instrument',\r\n    type13: 'Llenguatge musical',\r\n    type14: 'Combo',\r\n    type15: 'Pintura artística',\r\n    type16: 'Manga',\r\n    type99: 'Altres',    \r\n    type20: 'Idiomes',\r\n    type21: 'Esportives - Altres',\r\n    type22: 'Esportives - Futbol',\r\n    type23: 'Esportives - Bàsquet',\r\n    type24: 'Esportives - Tennis taula',\r\n    type25: 'Esportives - Escacs',\r\n    type26: 'Esportives - Excursionisme',\r\n    type27: 'Curs Robòtica/Tecnologia',\r\n    formal_art_0: 'Formal',\r\n    formal_art_1: 'No formal',\r\n    formal_0: 'Formal/federada',\r\n    formal_1: 'No formal'    \r\n  },  \r\n  users_social_projects: {\r\n    title: 'Projectes socials',\r\n    create_button: \"Afegir\",\r\n    create: 'Afegir resum anual de projectes socials',    \r\n    edit: 'Modificar resum anual de projectes socials',\r\n    type: \"Tipus de destinatari\",\r\n    quantity: \"Quantitat\",\r\n    total_quantity: \"Quantitat total\",\r\n    type0: 'Migració',\r\n    type1: 'Violència masclista',\r\n    type2: 'Discapacitat',\r\n    type3: 'Atur',\r\n    type4: 'Famílies monoparentals',\r\n    type5: 'Tercera edat (persones grans)',\r\n    type6: 'Salut mental',\r\n    type7: 'Inserció sociolaboral',\r\n    type8: 'Altres'\r\n  },\r\n  users_sections: {\r\n    title: 'Seccions',\r\n    create_button: 'Afegir',\r\n    create: 'Afegir resum anual de seccions',\r\n    edit: 'Modificar resum anual de seccions',\r\n    participants: 'Participants',\r\n    num_sections: 'Núm. seccions',\r\n    total_participants: 'Total participants',\r\n    name: 'Secció',\r\n    quantity: 'Quantitat',\r\n    assistants: 'Assistents',\r\n    total_quantity: 'Núm. activitats',\r\n    total_assistants: 'Total assistents',\r\n  },\r\n  users_shows: {\r\n    title: 'Espectacles',\r\n    create_button: 'Afegir',\r\n    create: 'Afegir resum anual d\\'espectacles',\r\n    edit: 'Modificar resum anual d\\'espectacles',\r\n    name: 'Espectacle',\r\n    total_quantity: 'Núm. funcions',\r\n    total_assistants: 'Total assistents',\r\n    total_inversion: 'Total pressupost',\r\n    type: 'Tipus',\r\n    type_1: 'Teatre',\r\n    type_2: 'Dansa',\r\n    type_3: 'Música',\r\n    type_4: 'Altres',\r\n    amateur: 'Amateur/Professional',\r\n    amateur_1: 'Amateur',\r\n    amateur_2: 'Professional',\r\n    adult: 'Públic',\r\n    adult_1: 'Infantil',\r\n    adult_2: 'Adult',\r\n    adult_3: 'Per a tots els públics',\r\n    quantity: 'Núm. funcions',\r\n    assistants: 'Assistents',\r\n    inversion: 'Pressupost',\r\n    occupancy: 'Ocupació (%)',        \r\n  },\r\n  check_members: {\r\n    not_found: 'El carnet no és vàlid',\r\n    status_1: 'Vàlid',\r\n    status_2: 'No vàlid',\r\n    status_3: 'No vàlid',\r\n    checker_name: 'Nom i cognoms',\r\n    checker_num_member: 'Número',\r\n    checker_date: 'Data de validació',\r\n  },\r\n  users_annuary : {\r\n    tab: 'Anuari',   \r\n    title: 'Formulari per a l\\'anuari',        \r\n    answered_status: 'Respost',\r\n    answered_status_0: 'No',\r\n    answered_status_1: 'Sí',\r\n    answered_date_time: 'Data de resposta',\r\n    expiration_date: 'Data límit per a respondre',\r\n    sent_status: 'Enviament',\r\n    reminder_status: 'Recordatori'  ,\r\n    confirm_status: 'Confirmació'  ,\r\n    send: 'Enviar',\r\n    create_button: 'Enviar nou formulari',\r\n    edit: 'Editar formulari',\r\n    send_dialog_button: 'Formulari anuari',\r\n    send_dialog_action: 'Acció a realitzar',\r\n    send_dialog_action_0: 'Enviar enllaç del formulari a tots els contactes',\r\n    send_dialog_action_1: 'Enviar recordatori amb l\\'enllaç al formulari a tots els contactes',        \r\n    send_dialog_text1_0: 'S\\'enviarà un missatge predefinit a tots els contactes del grup als quals encara no s\\'hagi enviat amb l\\'enllaç per a respondre el formulari.',\r\n    send_dialog_text1_1: 'S\\'enviarà un recordatori amb l\\'enllaç del formulari a tots els membres del grup que ja s\\'hagi enviat i encara no hagin respost.',\r\n    send_dialog_text2: 'La data límit per a respondre el formulari serà la que indiquis a continuació.',\r\n    send_dialog_text3: 'L\\'enviament s\\'executarà en segon pla i pot trigar uns minuts. Podràs consultar l\\'estat de l\\'enviament i de les repostes a la fitxa de cada contacte o usant els filtres del llistat de contactes.',\r\n        \r\n    not_found: 'El formulari no s\\'ha trobat o no està disponible',\r\n    expired: 'S\\'ha acabat el termini per a respondre el formulari, si us plau, posa\\'t en contacte amb la FAC.',\r\n        \r\n    email_sent_0: 'Correu amb el formulari',\r\n    email_sent_title_0: 'Correu amb enllaç al formulari',\r\n    email_sent_ask_0: 'Segur que vols enviar-li l\\'enllaç al formulari?' ,   \r\n    email_sent_ask_again_0: 'Ja s\\'ha enviat anteriorment el correu amb l\\'enllaç al formulari. Segur que vols tornar a enviar-li? Es generarà un nou enllaç.',   \r\n    email_sent_ko_0: 'El formulari no s\\'ha pogut entregar al destinatari',\r\n    email_sent_tooltip_button_0: 'Enviar formulari',\r\n    email_sent_tooltip_sending_0: 'S\\'està enviant la el formulari...',\r\n    email_sent_tooltip_done_0: 'S\\'ha enviat el formulari',\r\n        \r\n    email_sent_1: 'Correu de recordatori',\r\n    email_sent_title_1: 'Correu de recordatori',\r\n    email_sent_ask_1: 'Segur que vols enviar-li el correu de recordatori predefinit?' ,  \r\n    email_sent_ask_again_1: 'Ja s\\'ha enviat anteriorment el correu de recordatori. Segur que vols tornar a enviar-lo?', \r\n    email_sent_ko_1: 'El recordatori no s\\'ha pogut entregar al destinatari',\r\n    email_sent_tooltip_button_1: 'Enviar recordatori',\r\n    email_sent_tooltip_sending_1: 'S\\'està enviant el recordatori...',\r\n    email_sent_tooltip_done_1: 'S\\'ha enviat el recordatori',\r\n        \r\n    email_sent_2: 'Correu de confirmació',\r\n    email_sent_title_2: 'Correu de confirmació',\r\n    email_sent_ask_2: 'Segur que vols enviar-li el correu de confirmació predefinit?' ,  \r\n    email_sent_ask_again_2: 'Ja s\\'ha enviat anteriorment el correu de confirmació. Segur que vols tornar a enviar-lo?', \r\n    email_sent_ko_2: 'El correu de confirmació no s\\'ha pogut entregar al destinatari',\r\n    email_sent_tooltip_button_2: 'Enviar confirmació',\r\n    email_sent_tooltip_sending_2: 'S\\'està enviant el correu de confirmació...',\r\n    email_sent_tooltip_done_2: 'S\\'ha enviat el correu de confirmació',\r\n        \r\n    form_title: 'Formulari per a l\\'anuari %year%',\r\n    form_send: 'Enviar',\r\n    form_already_answered: 'El formulari ja ha estat respost, si voleu modificar les vostres dades, si us plau, poseu-vos en contacte amb la FAC.',\r\n    form_general_data: 'Dades generals de l\\'entitat',\r\n    form_activities: 'Activitats',\r\n    form_trainings_art: 'Formacions en art',\r\n    form_trainings: 'Formacions',\r\n    form_classrooms: 'Espais',\r\n    form_social_nets: 'L\\'entitat a la xarxa',\r\n    form_social_nets_title: 'Xarxes socials',\r\n    form_economic_data: 'Dades econòmiques',\r\n    form_economic_data_incomings: 'Ingressos',\r\n    form_economic_data_expenses: 'Despeses',\r\n    form_economic_data_inversion: 'Inversió',\r\n    form_shows: 'Espectacles',\r\n    form_sections: 'Seccions de l\\'entitat',\r\n    form_workers: 'Personal remunerat',\r\n    form_volunteers: 'Voluntaris',\r\n    form_edited_books_books: 'Llibre de l\\'ateneu',\r\n    form_edited_books_newsletters: 'Butlletí electrònic',\r\n    form_edited_books_magazines: 'Revista',\r\n    form_entity: 'Nom de l\\'entitat',\r\n        \r\n    form_desc_activities: 'Les activitats que es desenvolupen al vostre ateneu. Diferents a les formacions i cursos.',\r\n    form_desc_classrooms : 'Els espais físics o equipaments que disposeu a l\\'ateneu.',\r\n    form_desc_shows: 'Els actes que es representen a l’ateneu.',\r\n    form_desc_sections: 'Grups de l’entitat.',\r\n    form_desc_trainings_art: 'Cursos amb una finalitat formativa o d\\'ensenyament en arts que es desenvolupen a la seva entitat.',\r\n    form_desc_trainings: 'Cursos amb una finalitat formativa o d\\'ensenyament que es desenvolupen a la seva entitat.',\r\n    form_desc_workers: 'Persones contractades que reben un salari a la vostre entitat.',\r\n    form_desc_volunteers: 'Persones que ofereixen el seu temps, experiència, coneixements i treball per a la vostra entitat sense rebre una compensació econòmica.',\r\n    form_desc_social_nets: 'La vostra presència en les xarxes socials digitals.',\r\n    form_desc_economic_data: 'Les dades generals de les despeses, ingressos i inversions generals que s\\'han fet a l\\'ateneu.',\r\n    form_desc_edited_books_books: 'Llibres publicats des de la vostra entitat.',\r\n    form_desc_edited_books_newsletters: 'Tipus de publicacions periòdiques o que publiqueu de manera regular amb les notícies del vostre ateneu.',\r\n    form_desc_edited_books_magazines: 'Tipus de publicació periòdica amb articles de informació general o determinada del vostre ateneu.'\r\n                \r\n  },\r\n  users_economic_data : {\r\n    incomings: 'Ingressos',\r\n    expenses: 'Despeses',\r\n    total: 'Resultat',\r\n    inversion: 'Inversió en obres',\r\n    members : 'Quotes de socis',\r\n    services : 'Serveis oferts',\r\n    subsidies : 'Subvencions (Generalitat, Diputació, Ajuntament o altres)',\r\n    rentals : 'Arrendaments',\r\n    products : 'Venda de productes',\r\n    privates : 'Ajuts privats',\r\n    others : 'Altres',\r\n    create: 'Afegir pressupost anual',\r\n    create_button: 'Afegir',\r\n    edit_title: 'Modificar pressupost anual',\r\n    exp_rentals: 'Lloguers',\r\n    exp_workers: 'Personal',\r\n    exp_material: 'Material',\r\n    exp_professionals: 'Professionals externs',\r\n    exp_groups: 'Catxés de grups',\r\n    exp_supplies: 'Subministraments',\r\n    exp_maintenance: 'Manteniment',\r\n    exp_marketing: 'Comunicació i publicitat',\r\n    exp_others: 'Altres',\r\n    avg_quote: 'Mitjana de la quota de soci/a anual',\r\n    detail: 'Detall',\r\n    inv_building: 'A l\\'edifici en general',\r\n    inv_theatre: 'Al teatre',\r\n    inv_bar: 'Al bar',\r\n    inv_accessibility: 'Accessibilitat',\r\n    inv_security: 'Seguretat',\r\n    inv_others: 'Altres',        \r\n        \r\n  },\r\n  \r\n    users_demografy: {\r\n        title: 'Dades demogràfiques',\r\n        create: 'Afegir',      \r\n        edit_title: 'Modificar dades demogràfiques',\r\n        year: 'Any',\r\n        num_members: 'Núm. de socis',\r\n        avg_age: 'Mitjana d\\'edat',\r\n        avg_age_managers: 'Mitjana d\\'edat junta directiva',\r\n        percent_man: 'Homes (%)',\r\n        percent_woman: 'Dones (%)',\r\n        percent_no_binary: 'No binaris (%)'\r\n    }, \r\n\r\n  users_workers : {\r\n    create_0: 'Afegir resum anual del personal remunerat',\r\n    create_1: 'Afegir resum anual del voluntariat',\r\n    create_button: 'Afegir',\r\n    edit_title_0: 'Modificar resum anual del personal remunerat',\r\n    edit_title_1: 'Modificar resum anual del voluntariat',\r\n    administration: 'Administració',\r\n    activities: 'Tècnic d\\'activitats',\r\n    concierge: 'Consergeria',\r\n    clean_up: 'Neteja',\r\n    comunication : 'Comunicació',\r\n    accounting : 'Comptabilitat',\r\n    maintenance : 'Manteniment',\r\n    management : 'Gerència',\r\n    others : 'Altres'      ,\r\n    total_0: 'Total personal remunerat',\r\n    total_1: 'Total personal voluntariat'\r\n  },\r\n  settings :{\r\n    data : 'Dades de l\\'entitat',\r\n    data_desc : 'Nom, correu-e, adreça, logotip...',\r\n    ibans : 'Bancs',        \r\n    ibans_desc : 'Configuració de comptes bancaris', \r\n    payment_systems : 'TPV', \r\n    payment_systems_desc : 'Configuració de passarel·les bancàries', \r\n    postal_labels : 'Etiquetes postals',        \r\n    postal_labels_desc : 'Configuració del format de les etiquetes postals', \r\n    alerts: 'Alertes',\r\n    alerts_desc: 'Configuració de les alertes',\r\n    emails: 'Plantilles de correus electrònics',        \r\n    emails_desc: 'Continguts dels correus electrònics que reben les persones',      \r\n    emails_logs: 'Registre d\\'enviament de correus electrònics',        \r\n    emails_logs_desc: 'Consulta el registre dels enviaments de correus electrònics als contactes',      \r\n    users: 'Usuaris administradors',        \r\n    users_desc: 'Persones i permissos d\\'accés',    \r\n    maintenance: 'Accions de Superadmin',        \r\n    maintenance_desc: 'Processos de base de dades...',   \r\n    profile: 'Perfil d\\'usuari',        \r\n    profile_desc: 'Canvi de contrasenya',        \r\n    subscription : 'Subscripció' ,   \r\n    subscription_desc : 'Canviar la subscripció' ,\r\n    returns_tax: 'Comissió de devolució (€)',\r\n    bank_sufix: 'Sufix ordenant',\r\n    change_password: 'Modificar contrasenya',\r\n        \r\n    add_member: 'Sol·licitud d\\'alta de membres des de la web',    \r\n    add_member_desc: 'Configuració del formulari d\\'inscripció',\r\n    add_member_actived: 'Permetre la inscripció des de la web',\r\n    add_member_logo: 'Mostrar la capçalera amb el logotip i les dades de l\\'entitat en el formulari',\r\n    add_member_bank_data: 'Demanar dades bancàries',\r\n    add_member_notification: 'Enviar notificació a l\\'entitat al rebre una sol·licitud',\r\n    add_member_form_text: 'Text explicatiu del formulari (HTML)',\r\n    add_member_lopd: 'Text legal sobre el tractament de les dades (HTML)',\r\n    add_member_form_sent: 'Text de confirmació de formulari enviat (HTML)',\r\n    add_member_help: 'Com mostrem el formulari a la nostra pàgina web?',    \r\n    add_member_help_1: 'Afegeix el següent codi HTML a la pàgina on vulguis mostrar el formulari de sol·licitud de soci:',    \r\n    add_member_view_form: 'Accedir al formulari' ,\r\n    add_member_edit_form: 'Configurar formulari' ,\r\n    add_member_pending_list: 'Accedir al llistat de sol·licituds' ,\r\n        \r\n    recercat_add_member: 'Formulari de sol·licitud del Carnet digital Recercat',\r\n    recercat_add_member_desc: 'Configuració del formulari',\r\n    recercat_add_member_actived: 'Formulari actiu',\r\n    recercat_add_member_form_sent: 'Text de confirmació de formulari enviat',   \r\n    recercat_add_member_help_1: 'Afegeix el següent codi HTML a la pàgina on vulguis mostrar el formulari de sol·licitud de carnet',  \r\n                \r\n    emails_subject : 'Tema',\r\n    emails_content : 'Contingut del missatge',\r\n    emails_message : 'Missatge',\r\n    emails_attached : 'Arxius',   \r\n    emails_copy : 'Copiar plantilles necessàries a les entitats',   \r\n    emails_copy_desc : 'Es copiaran les plantilles de correus a aquelles entitats que encara no les tinguin. Útil per quan creem una nova plantilla. Si alguna entitat ja la té, no es sobrescriurà.',   \r\n    emails_vars : 'Variables disponibles',\r\n        \r\n    ibans_copy : 'Crear registre de IBAN\\'s',   \r\n    ibans_copy_desc : 'Es copiaran els IBAN\\'s actuals de totes les entitats, a una taula específica d\\'IBAN\\'s (si encara no s\\'havia fet), per a poder treballar a partir d\\'ara amb múltiples IBAN\\'s per entitat.',   \r\n    done : 'Acció realitzada',\r\n    \r\n    backup : 'Crear còpia de seguretat',   \r\n    backup_desc : 'Es realitza una còpia de seguretat de la base de dades en aquest moment.',   \r\n        \r\n    remittances_subscriptions: 'Crear subscripció a Rebuts per a totes les entitats',\r\n    remittances_subscriptions_desc: 'Es crearà una subscripció a Rebuts de totes les entitats que tinguin la subscripció Gestió d\\'entitats, sempre i quan no la tinguin ja, i no siguin l\\'entitat Recercat.',\r\n    \r\n    sa_postal_labels: 'Crea configuració d\\'etiquetes postals per a totes les entitats',\r\n    sa_postal_labels_desc: 'Es crearà una configuració per defecte per a totes les entitats que encara no tinguin cap configuració d\\'etiquetes configurada. ',\r\n        \r\n    emails_WELCOME : 'Correu de benvinguda de soci/a',\r\n    emails_WELCOME_desc : 'Plantilla per defecte per als nous clients',\r\n    emails_WELCOME_vars : '%nom_entitat% | %nom% | %nom_complet% | %nom_grup% | %num_soci% | %data_ingres%',\r\n    \r\n    emails_GROUP_LEFT : 'Correu de baixa de soci/a',\r\n    emails_GROUP_LEFT_desc : 'Plantilla per defecte per a informar de la baixa de soci',\r\n    emails_GROUP_LEFT_vars : '%nom_entitat% | %nom% | %nom_complet% | %nom_grup% | %num_soci% | %data_ingres% | %data_baixa%',\r\n        \r\n    emails_CLASSROOM_REQUEST : 'SISTEMA - Notificació de que s\\'ha rebut una sol·licitud d\\'espai',\r\n    emails_CLASSROOM_REQUEST_desc : 'Correu que reben les entitats quan hi ha una sol·licitud d\\'ús d\\'espai',\r\n    emails_CLASSROOM_REQUEST_vars : '%back_url% | %classroom_name% | %date_request% | %event_date% | %event_duration% | %event_recurrency% | %event_name% | %event_description% | %event_resources% | %comments% | %first_name% | %last_name_1% | %last_name_2% | %email% | %phone%',\r\n        \r\n    emails_ADDMEMBER_REQUEST : 'SISTEMA - Notificació de que s\\'ha rebut una sol·licitud de soci/a',\r\n    emails_ADDMEMBER_REQUEST_desc : 'Correu que reben les entitats quan hi ha una sol·licitud d\\'alta de soci',\r\n    emails_ADDMEMBER_REQUEST_vars : '%back_url%',\r\n        \r\n    emails_UNDELIVERED_EMAILS : 'SISTEMA - Notificació de correus no enviats /a',\r\n    emails_UNDELIVERED_EMAILS_desc : 'Correu que reben les entitats quan alguns correus no s\\'han pogut enviar',\r\n    emails_UNDELIVERED_EMAILS_vars : '%emails_list%',\r\n        \r\n    emails_RESET_PSWD : 'SISTEMA - Notificació de recuperació de contrasenya',\r\n    emails_RESET_PSWD_desc : 'Correu que reben els usuaris administradors si obliden la contrasenya',\r\n    emails_RESET_PSWD_vars : '%reset_link%',\r\n                \r\n    emails_RECEIVE_RETURNED : 'Correu de rebut retornat (banc)',\r\n    emails_RECEIVE_RETURNED_desc : 'Plantilla per defecte per als nous clients',\r\n    emails_RECEIVE_RETURNED_vars : '%nom% | %email_entitat%',\r\n        \r\n    emails_RECEIVE_RETURNED_CASH : 'Correu de rebut impagat (efectiu)',\r\n    emails_RECEIVE_RETURNED_CASH_desc : 'Plantilla per defecte per als nous clients',\r\n    emails_RECEIVE_RETURNED_CASH_vars : '%nom% | %email_entitat%',\r\n        \r\n    emails_EVENT_INVITE : 'Correu d\\'invitació a esdeveniment',\r\n    emails_EVENT_INVITE_desc : 'Plantilla per defecte per als nous clients',\r\n    emails_EVENT_INVITE_vars : '%nom% | %nom_esdeveniment% | %activitat% | %data_ini% | %espai% | %email_entitat% | %url_event%',\r\n        \r\n    emails_EVENT_REMINDER : 'Correu de recordatori d\\'esdeveniment',\r\n    emails_EVENT_REMINDER_desc : 'Plantilla per defecte per als nous clients',\r\n    emails_EVENT_REMINDER_vars : '%nom% | %nom_esdeveniment% | %tipus% | %data_ini% | %data_fi% | %espai% | %url_event%',\r\n        \r\n    emails_ANNUARY_SEND : 'Anuari: Correu amb l\\'enllaç al formulari',\r\n    emails_ANNUARY_SEND_desc : 'Plantilla per defecte per als nous clients',\r\n    emails_ANNUARY_SEND_vars : '%nom% | %year% | %date_expiration% | %link%',\r\n        \r\n    emails_ANNUARY_REMINDER : 'Anuari: Correu de recordatori amb l\\'enllaç al formulari',\r\n    emails_ANNUARY_REMINDER_desc : 'Plantilla per defecte per als nous clients',\r\n    emails_ANNUARY_REMINDER_vars :  '%nom% | %year% | %date_expiration% | %link%',\r\n        \r\n    emails_ANNUARY_CONFIRM : 'Anuari: Correu de confirmació amb l\\'enllaç a les dades introduïdes',\r\n    emails_ANNUARY_CONFIRM_desc : 'Plantilla per defecte per als nous clients',\r\n    emails_ANNUARY_CONFIRM_vars :  '%nom% | %year% | %date_expiration% | %link%',\r\n        \r\n    emails_DIGITAL_CARD_SEND : 'Correu d\\'entrega del carnet digital',\r\n    emails_DIGITAL_CARD_SEND_desc : 'Plantilla per defecte per als nous clients',\r\n    emails_DIGITAL_CARD_SEND_vars :  '%nom% | %nom_complet% | %nom_entitat% | %nom_grup% | %num_membre% | %google_wallet_link% | %google_wallet_image_and_link% | %apple_wallet_link% | %apple_wallet_image_and_link%',\r\n    \r\n    emails_RECERCAT_USER_VALIDATE_EMAIL : 'Correu de validació de la sol·licitud web',\r\n    emails_RECERCAT_USER_VALIDATE_EMAIL_desc : 'Plantilla per defecte per als nous clients',\r\n    emails_RECERCAT_USER_VALIDATE_EMAIL_vars : '%nom_entitat% | %nom% | %nom_complet% | %nom_entitat% | %nom_centre% | %link%',\r\n        \r\n    emails_RECERCAT_USER_REQUEST_OK : 'Correu de sol·licitud acceptada',\r\n    emails_RECERCAT_USER_REQUEST_OK_desc : 'Plantilla per defecte per als nous clients',\r\n    emails_RECERCAT_USER_REQUEST_OK_vars : '%nom_entitat% | %nom% | %nom_complet% | %nom_entitat% | %nom_centre% | %link%',\r\n        \r\n    emails_RECERCAT_USER_REQUEST_KO : 'Correu de de sol·licitud errònia',\r\n    emails_RECERCAT_USER_REQUEST_KO_desc : 'Plantilla per defecte per als nous clients',\r\n    emails_RECERCAT_USER_REQUEST_KO_vars : '%nom_entitat% | %nom% | %nom_complet% | %nom_entitat% | %nom_centre% | %link%',\r\n        \r\n    emails_RECERCAT_CARD_REVOKED_BY_IRMU_CENTER_DELETED : 'Correu de revocació de carnet degut a centre eliminat',\r\n    emails_RECERCAT_CARD_REVOKED_BY_IRMU_CENTER_DELETED_desc : 'Plantilla per defecte per als nous clients',\r\n    emails_RECERCAT_CARD_REVOKED_BY_IRMU_CENTER_DELETED_vars : '%nom_entitat% | %nom% | %nom_complet% | %nom_entitat% | %nom_centre% | %link%',\r\n        \r\n    emails_RECERCAT_IRMU_RESUME : 'Correu de resum (IRMU)',\r\n    emails_RECERCAT_IRMU_RESUME_desc : 'Plantilla per defecte per als nous clients',\r\n    emails_RECERCAT_IRMU_RESUME_vars : '%nom_entitat% | %link% | %num_validats% | %num_pendents_irmu% | %num_pendents_centre%',\r\n        \r\n    emails_RECERCAT_CENTER_RESUME : 'Correu de resum (centre)',\r\n    emails_RECERCAT_CENTER_RESUME_desc : 'Plantilla per defecte per als nous clients',\r\n    emails_RECERCAT_CENTER_RESUME_vars : '%nom_entitat% | %nom_centre% | %num_membre% | %link% | %num_validats% | %num_pendents_irmu% | %num_pendents_centre%',\r\n        \r\n    emails_RECERCAT_REQUEST_DENIED_BY_IRMU : 'Correu de sol·licitud denegada des de l\\'IRMU',\r\n    emails_RECERCAT_REQUEST_DENIED_BY_IRMU_desc : 'Plantilla per defecte per als nous clients',\r\n    emails_RECERCAT_REQUEST_DENIED_BY_IRMU_vars : '%nom% | %nom_complet% | %nom_entitat% | %nom_centre%',\r\n        \r\n    emails_RECERCAT_REQUEST_DENIED_BY_CENTER : 'Correu de sol·licitud denegada des del centre',\r\n    emails_RECERCAT_REQUEST_DENIED_BY_CENTER_desc : 'Plantilla per defecte per als nous clients',\r\n    emails_RECERCAT_REQUEST_DENIED_BY_CENTER_vars : '%nom% | %nom_complet% | %nom_entitat% | %nom_centre%',\r\n        \r\n    emails_RECERCAT_CARD_REVOKED_BY_IRMU : 'Correu de carnet revocat des de l\\'IRMU',\r\n    emails_RECERCAT_CARD_REVOKED_BY_IRMU_desc : 'Plantilla per defecte per als nous clients',\r\n    emails_RECERCAT_CARD_REVOKED_BY_IRMU_vars : '%nom% | %nom_complet% | %nom_entitat% | %nom_centre% | %num_membre%',\r\n        \r\n    emails_RECERCAT_CARD_REVOKED_BY_CENTER : 'Correu de carnet revocat des del centre',\r\n    emails_RECERCAT_CARD_REVOKED_BY_CENTER_desc : 'Plantilla per defecte per als nous clients',\r\n    emails_RECERCAT_CARD_REVOKED_BY_CENTER_vars : '%nom% | %nom_complet% | %nom_entitat% | %nom_centre% | %num_membre%',\r\n                \r\n    emails_ANNUARY_FORM_ANSWERED : 'FEDERACIÓ - Correu de notificació de resposta de formulari de l\\'anuari',\r\n    emails_ANNUARY_FORM_ANSWERED_desc : 'Només el rep la FAC',\r\n    emails_ANNUARY_FORM_ANSWERED_vars :  '%name% | %year%',\r\n        \r\n    emails_ANNUARY_FORM_NUM_MEMBERS : 'FEDERACIÓ - Correu de notificació de canvi de número de socis',\r\n    emails_ANNUARY_FORM_NUM_MEMBERS_desc : 'Només el rep la FAC',\r\n    emails_ANNUARY_FORM_NUM_MEMBERS_vars :  '%nom% | %year% | %old_num_members% | %new_num_members%',\r\n    \r\n    emails_DONATIONS_USERS_CONFIRMATION : 'Donatius: Correu de confirmació d\\'una donació',\r\n    emails_DONATIONS_USERS_CONFIRMATION_desc : 'El rep el donant automàticament en el moment de fer la donació a través de la web',\r\n    emails_DONATIONS_USERS_CONFIRMATION_vars :  '%nom% | %nom_complet% | %referencia% | %amount% | %nom_projecte% | %date_time% | %entitat_projecte%',\r\n    \r\n    emails_DONATIONS_USERS_PRE_CONFIRMATION_TRANSFER : 'Donatius: Correu amb instruccions per a fer la transferència bancària',\r\n    emails_DONATIONS_USERS_PRE_CONFIRMATION_TRANSFER_desc : 'El rep el donant automàticament en el moment de fer la donació per transferència bancària',\r\n    emails_DONATIONS_USERS_PRE_CONFIRMATION_TRANSFER_vars :  '%nom% | %nom_complet% | %referencia% | %amount% | %bank_ordering% | %bank_iban% | %bank_swift% | %nom_projecte% | %date_time% | %entitat_projecte%',\r\n    \r\n    emails_DONATIONS_USERS_CERTIFICATE : 'Correu d\\'enviament del certificat de donació',\r\n    emails_DONATIONS_USERS_CERTIFICATE_desc : 'El rep el donant',\r\n    emails_DONATIONS_USERS_CERTIFICATE_vars : '%year% | %nom% | %nom_complet% | %nif% | %total_sum_donations%',\r\n    \r\n    emails_DONATIONS_RESUME_ASSOCIATION : 'Donatius: Correu de resum dels donatius',\r\n    emails_DONATIONS_RESUME_ASSOCIATION_desc : 'El reben setmanalment les entitats. Un correu per cada projecte de donatius actius',\r\n    emails_DONATIONS_RESUME_ASSOCIATION_vars : '%project_name% | %amount% | %count_donations% | %sum_donations% | %sum_donations_percent% | %avg_donations% | %date_start% | %date_finish% | %if_target_by_date_ini% | %if_target_by_date_end%',\r\n    \r\n    emails_DONATIONS_RESUME_FAC : 'Donatius: Correu de resum dels donatius',\r\n    emails_DONATIONS_RESUME_FAC_desc : 'El rep setmanalment la FAC, amb el resum de tots els projectes actius',\r\n    emails_DONATIONS_RESUME_FAC_vars : '%iteration_project_ini% | %iteration_project_end% | %total_projects% | %total_sum_donations% | %total_count_donations% | %total_avg_donations% | %association_name% | %project_name% | %amount% | %count_donations% | %sum_donations% | %sum_donations_percent% | %avg_donations% | %date_start% | %date_finish% | %if_target_by_date_ini% | %if_target_by_date_end%',\r\n      \r\n    emails_DONATIONS_VALIDATE_REQUEST : 'Donatius: Correu de sol·licitud de validació',\r\n    emails_DONATIONS_VALIDATE_REQUEST_desc : 'El rep la FAC quan l\\'entitat demana de validar el projecte',\r\n    emails_DONATIONS_VALIDATE_REQUEST_vars : '%association_name% | %project_name%',\r\n    \r\n    emails_DONATIONS_VALIDATE_ACCEPTED : 'Donatius: Correu de validació de projecte',\r\n    emails_DONATIONS_VALIDATE_ACCEPTED_desc : 'El rep l\\'entitat quan la FAC ha validat el projecte.',\r\n    emails_DONATIONS_VALIDATE_ACCEPTED_vars : '%association_name% | %project_name%',\r\n    \r\n    emails_DONATIONS_VALIDATE_REJECTED : 'Donatius: Correu de denegació de validació de projecte',\r\n    emails_DONATIONS_VALIDATE_REJECTED_desc : 'El rep l\\'entitat quan la FAC ha rebutjat el projecte.',\r\n    emails_DONATIONS_VALIDATE_REJECTED_vars : '%association_name% | %project_name%',\r\n        \r\n    emails_NEW_ADMIN : 'SISTEMA - Correu d\\'invitació d\\'administrador (primera vegada)',  \r\n    emails_NEW_ADMIN_desc : 'El reben els nous administradors',  \r\n    emails_NEW_ADMIN_vars : '%back_url% | %auth_user% | %auth_pswd% | %association_name%',  \r\n    \r\n    emails_NEW_ADMIN_PERMISSION : 'SISTEMA - Correu d\\'invitació d\\'administrador',  \r\n    emails_NEW_ADMIN_PERMISSION_desc : 'El reben els administradors que ja tenen algun permís previ.',  \r\n    emails_NEW_ADMIN_PERMISSION_vars : '%back_url% | %auth_user% | %association_name%',  \r\n    \r\n    emails_ASSOCIATIONS_TRIAL : 'SISTEMA - Correu de suport durant el període de prova',  \r\n    emails_ASSOCIATIONS_TRIAL_desc : 'S\\'envia manualment a les associacions durant el període de prova',  \r\n    emails_ASSOCIATIONS_TRIAL_vars : '%nom% | %email%',  \r\n    \r\n    emails_ASSOCIATIONS_BEGIN : 'SISTEMA - Correu d\\'inici de la subscripció',  \r\n    emails_ASSOCIATIONS_BEGIN_desc : 'S\\'envia manualment a les associacions',  \r\n    emails_ASSOCIATIONS_BEGIN_vars : '%nom% | %email%',  \r\n    \r\n    emails_ASSOCIATIONS_END : 'SISTEMA - Correu de finalització de període de prova',  \r\n    emails_ASSOCIATIONS_END_desc : 'S\\'envia manualment a les associacions',  \r\n    emails_ASSOCIATIONS_END_vars : '%nom% | %email%',  \r\n    \r\n    emails_ALERT : 'SISTEMA - Alertes de les entitats',\r\n    emails_ALERT_desc : 'Notificació d\\'alerta',\r\n    emails_ALERT_vars : '%association_name% | %message% | %date_alert%',\r\n             \r\n    emails_SKELETON : 'Esquelet de tots els correus',\r\n    emails_SKELETON_desc : 'Plantilla per defecte per als nous clients',\r\n    emails_SKELETON_vars : '%tema% | %contingut% | %nom_entitat% | %email_entitat% | %logotip%',\r\n        \r\n    emails_SA_SKELETON : 'SISTEMA - Esquelet de tots els correus',\r\n    emails_SA_SKELETON_desc : 'Esquelet de tots els correus enviats des del sistema',\r\n    emails_SA_SKELETON_vars : '%tema% | %contingut%',\r\n        \r\n    emails_headers : 'Capçalera',\r\n    emails_headers_sender_name : 'Nom del remitent',\r\n    emails_headers_sender_email : 'Correu electrònic del remitent',\r\n    emails_headers_reply_to : 'Respondre a',\r\n    emails_headers_cc : 'Cc',\r\n    emails_headers_bcc : 'Bcc',\r\n    emails_headers_vars : '%nom_entitat% | %email_entitat%', \r\n        \r\n    classrooms_requests: 'Sol·licitud d\\'ús d\\'espais des de la web',\r\n    classrooms_requests_desc: 'Configuració de la sol·licitud d\\'espais',\r\n    classrooms_requests_actived: 'Permetre la sol·licitud d\\'ús des de la web',\r\n    classrooms_requests_logo: 'Mostrar la capçalera amb el logotip i les dades de l\\'entitat en el formulari',\r\n    classrooms_requests_notification: 'Enviar notificació a l\\'entitat al rebre una sol·licitud',\r\n    classrooms_requests_text: 'Text a la capçalera de la pàgina de resum d\\'espais',\r\n    classrooms_requests_lopd: 'Text legal de política de protecció de dades',\r\n    classrooms_requests_form_sent: 'Text de confirmació de formulari enviat',\r\n    classrooms_requests_help: 'Com mostrem els espais a la nostra pàgina web?',    \r\n    classrooms_requests_help_1: 'Afegeix el següent codi HTML a la pàgina on vulguis mostrar els espais de l\\'entitat:',    \r\n    classrooms_requests_view_form: 'Accedir a la web' ,\r\n    \r\n    donations_certificates: 'Certificat de donacions',\r\n    donations_certificates_desc: 'Configuració del contingut del certificat de donació (HTML)',\r\n    donations_certificates_donations_users_certificate: 'Contingut del certificat de donació',\r\n    donations_certificates_donations_users_certificate_vars_title: 'Variables disponibles',\r\n    \r\n    donations_certificates_donations_users_certificate_vars: '%year% | %entitat_nom% | %entitat_address% | %entitat_zip% | %entitat_city% | %entitat_country% | %entitat_nif% | %entitat_email% | %entitat_firma% | %nom% | %cognom1% | %cognom2% | %email% | %nom_complet% | %nif% | %address% | %zip% | %phone% | %city% | %country% | %iteration_donations_ini% | %amount% | %date_time% | %nom_projecte% | %justificacio_projecte% | %iteration_donations_end% | %total_sum_donations% | %data_certificat%',\r\n    donations_certificates_header: 'Capçalera',\r\n    donations_certificates_sign: 'Firma del responsable',\r\n    donations_certificates_footer : 'Peu del certificat',\r\n    \r\n    docs: 'Documents públics',\r\n    docs_desc: 'Imatges, documents... de l\\'entitat accessibles a través d\\'una URL pública',\r\n    \r\n    donations_own: 'Pàgina de donatius',\r\n    donations_own_desc: 'Configuració del disseny de la pàgina de donatius',\r\n    donations_own_donations_own_header: 'Capçalera',\r\n    donations_own_donations_own_footer: 'Peu',\r\n    donations_own_donations_own_privacy: 'Política de privadesa',\r\n    donations_own_donations_own_terms: 'Termes i condicions',\r\n    donations_own_donations_own_fiscal: 'Beneficis fiscals',\r\n    donations_own_donations_own_css: 'CSS addicional',\r\n            \r\n    annuary_form: 'Formulari per a realitzar l\\'anuari',\r\n    annuary_form_desc: 'Configuració del formulari per a realitzar l\\'anuari',\r\n    annuary_form_logo: 'Mostrar la capçalera amb el logotip i les dades de la FAC en el formulari',\r\n    annuary_form_notification: 'Enviar notificació a la FAC al rebre una resposta',\r\n    annuary_form_notification_association: 'Enviar notificació a l\\'entitat al respondre el formulari amb un enllaç a les seves respostes',\r\n    annuary_form_notification_num_members: 'Enviar notificació a la FAC al modificar el número de membres d\\'una entitat',\r\n    annuary_form_text: 'Text a la capçalera de la pàgina',\r\n    annuary_form_lopd: 'Text legal de política de protecció de dades',\r\n    annuary_form_sent: 'Text de confirmació de formulari enviat',\r\n        \r\n    templates_copied: 'S\\'han copiat les plantilles a totes les entitats',\r\n        \r\n    profile_user_tab: 'Usuari',\r\n    profile_pswd_tab: 'Contrasenya',\r\n    profile_password: 'Nova contrasenya',\r\n    profile_password_confirmation: 'Confirma contrasenya',\r\n    profile_changed: 'S\\'ha modificat el perfil d\\'usuari',\r\n        \r\n        \r\n        \r\n  },\r\n  contacts : {\r\n    title: 'Contactes de la FAC',\r\n    description: 'En aquest apartat trobaràs una base de dades general i compartida per a tots els ateneus amb la finalitat d\\'ajudar-vos a tenir actualitzats els contactes d\\'administracions i contactes d\\'interès. <br/>Us agrairem que si trobeu algun error ens ho feu saber per poder-lo corregir el més aviat possible.'\r\n  },\r\n  add_member : {\r\n    association_not_found: 'No s\\'ha trobat l\\'entitat',\r\n    form_not_actived: 'Disculpeu les molèsties, el formulari no està actiu.',\r\n    form_title: 'Sol·licitud d\\'alta de soci/a',\r\n    recercat_form_title: 'Sol·licitud de carnet Recercat',\r\n    recercat_association_not_found: 'La pàgina no s\\'ha trobat',\r\n    recercat_request_send : 'Enviar sol·licitud',\r\n    form_lopd: 'Consento el tractament de les dades per a les finalitats descrites a l’enllaç següent: ',\r\n    form_lopd_validator: 'Heu de consentir el tractament de les dades',        \r\n    lopd: 'Tractament de les dades',\r\n  },\r\n  classrooms_requests : {\r\n    association_not_found: 'No s\\'ha trobat l\\'entitat o l\\'espai no està disponible',\r\n    form_not_actived: 'No hi ha espais disponibles',\r\n    form_title: 'Els nostres espais',\r\n    form_request_title: 'Sol·licitud d\\'ús de l\\'espai',\r\n    form_event_data_title: 'Dades de l\\'activitat:',\r\n    form_requester_data_title: 'Dades del sol·licitant:',\r\n    form_event_date: 'Data i hora',\r\n    form_event_duration: 'Durada (hores)',\r\n    form_event_recurrency: 'És una activitat recurrent? Indica totes les dates.',\r\n    form_event_name: 'Nom de l\\'activitat',\r\n    form_event_description: 'Descripció',\r\n    form_event_resources: 'Recursos que es necessiten per a l\\'activitat',\r\n    form_event_comments: 'Altres comentaris',\r\n    form_event_phone: 'Telèfon de contacte',        \r\n    form_send: 'Sol·licitar',   \r\n    form_doc: 'Veure fitxa tècnica',\r\n    form_doc_title: 'fitxa_tècnica'\r\n  },\r\n  emails: {\r\n    main_menu_title: 'Correus electrònics enviats',\r\n    create: 'Afegir emails',\r\n    type: 'Plantilla',\r\n    date_ordered: 'Data',\r\n    from: 'Remitent',\r\n    to: 'Destinatari',\r\n    subject: 'Tema',\r\n    content: 'Contingut',\r\n    docs: 'Adjunts',\r\n    date_sent: 'Data',\r\n    status: 'Estat',\r\n    error_message: 'Missatge d\\'error',        \r\n    status_0: 'No enviat',\r\n    status_1: 'Enviant a servidor de correu...',\r\n    status_2: 'Error en el servidor de correu',\r\n    status_3: 'Enviat',\r\n    status_4: 'Correu rebutjat',\r\n    exporter_file_name: 'emails',\r\n    contact: 'Contacte',\r\n    only_not_sent: 'Només correus no enviats'\r\n  }, \r\n  custom_fields: {\r\n    main_menu_title: 'Camps addicionals',\r\n    main_menu_desc: 'Administra camps addicionals per a emmagatzemar més dades dels contactes',\r\n    target_2: 'Dades de contactes',    \r\n    title_2: 'Camps addicionals',\r\n    target_31: 'Dades generals de federació',\r\n    title_31: 'Camps addicionals generals de Federació',\r\n    target_50: 'Dades esportives de federació',\r\n    title_50: 'Àrea esportiva i d\\'activitats de la salut i el benestar',\r\n    create: 'Afegir camp addicional',        \r\n    name: 'Nom',\r\n    type: 'Tipus de camp',\r\n    type_1: 'Text curt',\r\n    type_2: 'Text llarg',\r\n    type_3: 'Text amb format',\r\n    type_4: 'Numèric',\r\n    type_5: 'Data',\r\n    type_6: 'Booleà S/N',\r\n    type_7: 'Selecció',\r\n    type_8: 'Selecció múltiple',\r\n    required: 'Emplenat obligatori',\r\n    max_length: 'Màx. longitud',\r\n    default_value: 'Valor per defecte',\r\n    actived: 'Visible',    \r\n    priority: 'Ordre',\r\n    form_web: 'Visible al formulari d\\'alta de soci',\r\n    form_annuary: 'Visible al formulari de l\\'anuari',\r\n    options: 'Opcions',\r\n    delete_title: 'Segur que vols esborrar el camp addicional? ',\r\n    delete_ask: 'S\\'esborraran totes les dades dels contactes introduïdes en aquest camp addicional.',\r\n  }, \r\n  custom_fields_options: {\r\n    create: 'Afegir opció',    \r\n    name: 'Opcions',\r\n    priority: 'Ordre',\r\n    edit: 'Editar opció',\r\n    delete_title: 'Segur que vols esborrar aquesta opció? ',\r\n    delete_ask: 'S\\'esborraran totes les dades dels contactes introduïdes amb aquesta opció.',\r\n  },   \r\n  resources : {\r\n    users : {\r\n      name: 'Contactes'\r\n    },\r\n    events : {\r\n      name: 'Activitats'\r\n    },\r\n    groups : {\r\n      name: 'Grups'\r\n    },\r\n    real_state: {\r\n      name: 'Immobles'      \r\n    },\r\n    agreements: {\r\n      name: 'Convenis'\r\n    },\r\n    insurances: {\r\n      name: 'Assegurances'\r\n    }\r\n  },\r\n  'ra-tree' : {\r\n    action : {\r\n      add_root : 'Afegir grup',\r\n    },\r\n    new_node: 'Nou node',\r\n    item_moved : 'S\\'ha desplaçat el grup'\r\n  },\r\n  'ra-search' : {\r\n    recent : 'Cerques recents'\r\n  },\r\n\r\n\r\n};\r\n\r\n","export const esMessages = {\r\n  ra: {\r\n    action: {\r\n      add_filter: 'Añadir filtro',\r\n        add: 'Añadir',\r\n        back: 'Volver',\r\n        bulk_actions: '1 elemento seleccionado |||| %{smart_count} elementos seleccionados',\r\n        cancel: 'Cancelar',\r\n        clear_input_value: 'Limpiar valor',\r\n        clone: 'Clonar',\r\n        create: 'Añadir',\r\n        create_item: 'Añadir', /* %{item} */\r\n        delete: 'Eliminar',\r\n        edit: 'Modificar',\r\n        export: 'Exportar',\r\n        list: 'Listar',\r\n        refresh: 'Refrescar',\r\n        remove_filter: 'Eliminar este filtro',\r\n        remove: 'Eliminar',\r\n        save: 'Guardar',\r\n        search: 'Buscar',\r\n        show: 'Mostrar',\r\n        sort: 'Ordenar',\r\n        undo: 'Deshacer',\r\n        confirm: 'Confirmar',\r\n        unselect: 'Deseleccionar',\r\n        expand: 'Expandir',\r\n        close: 'Cerrar',\r\n        open_menu: 'Abrir menú',\r\n        close_menu: 'Cerrar menú',\r\n    },\r\n    boolean: {\r\n      true: 'Si',\r\n      false: 'No',\r\n      null: ' ',\r\n    },\r\n    page: {\r\n      create: 'Añadir', /* %{name} */\r\n      dashboard: 'Inicio',\r\n      edit: '%{name} #%{id}',\r\n      error: 'Se ha producido un error',\r\n      list: 'Lista de %{name}',\r\n      loading: 'Cargando...',\r\n      not_found: 'No se ha encontrado',\r\n      show: '%{name} #%{id}',\r\n      empty: 'Aún no hay %{name}.',\r\n      invite: '¿Quieres añadir una?',\r\n    },\r\n    input: {\r\n      file: {\r\n        upload_several: 'Arrastra los archivos a subir o pulsa para seleccionar uno.',\r\n        upload_single: 'Arrastra el archivo a subir o pulsa para seleccionarlo.',\r\n      },\r\n      image: {\r\n        upload_several: 'Arrastra las imágenes para subirlas o haz clic para seleccionar una.',\r\n        upload_single: 'Arrastra la imagen para subirla o haz clic para seleccionarla.',\r\n      },\r\n      references: {\r\n        all_missing: 'No se han podido encontrar referencias.',\r\n        many_missing: 'Al menos una de las referencias asociadas no parece estar disponible.',\r\n        single_missing: 'La referencia asociada ya no está disponible.',\r\n      },\r\n      password: {\r\n        toggle_visible: 'Ocultar la contraseña',\r\n        toggle_hidden: 'Mostrar contraseña',\r\n      },\r\n    },\r\n    message: {\r\n      about: 'Sobre',\r\n      are_you_sure: '¿Esta seguro?',\r\n      bulk_delete_content: '¿Está seguro de borrar el elemento %{name}? |||| ¿Está seguro de borrar estos %{smart_count} elementos?',\r\n      bulk_delete_title: 'Borrar %{name} |||| Borrar %{smart_count} elementos de %{name}',\r\n      delete_content: '¿Está seguro de borrarlo',\r\n      delete_title: 'Borrar registro' , /* %{name} #%{id}\" */\r\n      details: 'Detalles',\r\n      error: 'Se ha producido un error en el cliente y su solicitud no se ha podido completar.',\r\n      invalid_form: 'El formulario no es válido. Por favor, revisa los errores',\r\n      loading: 'La página se está cargando, por favor espere un momento',\r\n      no: 'No',\r\n      not_found: 'O bien ha escrito una URL incorrecta, o bien ha navegado a un enlace erróneo.',\r\n      yes: 'Sí',\r\n      unsaved_changes: 'Algunos de los cambios no se han guardado. ¿Está seguro de que quiere ignorarlos',\r\n    },\r\n    navigation: {\r\n      no_results: 'No hay registros',\r\n      no_more_results: 'La página número %{page} está fuera de rango. Pruebe con la página anterior.',\r\n      page_out_of_boundaries: 'Página número %{page} fuera de rango',\r\n      page_out_from_end: 'No se puede ir más allá de la última página',\r\n      page_out_from_begin: 'No se puede ir más allá de la página 1',\r\n      page_range_info: '%{offsetBegin} - %{offsetEnd} de %{total}',\r\n      page_rows_per_page: 'Filas por página:',\r\n      next: 'Siguiente',\r\n      prev: 'Anterior',\r\n      skip_nav: 'Ve al contenido',\r\n    },\r\n    sort: {\r\n      sort_by: 'Ordenar por %{field} %{order}',\r\n      ASC: 'ascendente',\r\n      DESC: 'descendente',\r\n    },\r\n    auth: {\r\n      user_menu: 'Perfil',\r\n      username: 'Usuario',\r\n      password: 'Contraseña',\r\n      sign_in: 'Iniciar sesion',\r\n      sign_in_error: 'Ha fallado la autenticación, por favor intente de nuevo',\r\n      logout: 'Cerrar sesion',\r\n      auth_check_error: 'Inicie sesión para continuar',\r\n      error: 'Usuario o contraseña incorrecta',\r\n      auth_account_locked: 'La cuenta está bloqueada. Espera unos minutos y vuelve a intentarlo',\r\n      auth_too_many_attempts: 'Se han realizado demasiados intentos de inicio de sesión. Por seguridad, la cuenta ha quedado bloqueada durante 5 minutos.',\r\n      auth_invalid_credentials: 'Usuario o contraseña incorrecta'\r\n    },\r\n    notification: {\r\n      updated: 'Registro actualizado |||| %{smart_count} registros actualizados',\r\n      created: 'Registro creado',\r\n      deleted: 'Registro eliminado |||| %{smart_count} registros eliminados',\r\n      bad_item: 'Elemento incorrecto',\r\n      logged_out: 'Su sesión ha finalizado, vuelva a iniciar sesión.',\r\n      item_doesnt_exist: 'El elemento no existe',\r\n      http_error: 'Error de comunicación con el servidor',\r\n      data_provider_error: 'Error del dataProvider. Comprueba la consola para más detalles.',\r\n      canceled: 'Acción cancelada',\r\n      i18n_error: 'No se pueden cargar las traducciones para el idioma especificado',\r\n    },\r\n    validation: {\r\n      required: 'Obligatorio',\r\n      minLength: 'Longitud mínima de %{min} carácteres',\r\n      maxLength: 'Máximo %{max} carácteres',\r\n      minValue: 'El valor mínimo es %{min}',\r\n      maxValue: 'El valor máximo es %{max}',\r\n      number: 'Número inválido',\r\n      email: 'Debe ser una dirección de correo electrónico válida',\r\n      oneOf: 'Debe ser uno de estos valores: %{options}',\r\n      regex: 'Debe cumplir el formato (expresión regular): %{pattern}', \r\n    }\r\n  },\r\n\r\n\r\n  common : {\r\n    id : 'Id',\r\n    name : 'Nombre',\r\n    name_internal : 'Nombre interno',\r\n    description : 'Descripción',\r\n    email : 'Correo electrónico',\r\n    image : 'Imagen',\r\n    action : 'Acción',\r\n    actions : 'Acciones',\r\n    search : 'Buscar',\r\n    actived : 'Activo',\r\n    actived_female : 'Activa',\r\n    edit : 'Editar',\r\n    visible: 'Visible',\r\n    priority: 'Orden',\r\n    comment: 'Comentario',\r\n    loading: 'Cargando...',\r\n    data: 'Datos',\r\n    type: 'Tipo',\r\n    status: 'Estado',\r\n    month_1: 'Ene',\r\n    month_2: 'Feb',\r\n    month_3: 'Mar',\r\n    month_4: 'Abr',\r\n    month_5: 'May',\r\n    month_6: 'Jun',\r\n    month_7: 'Jul',\r\n    month_8: 'Ago',\r\n    month_9: 'Sep',\r\n    month_10: 'Oct',\r\n    month_11: 'Nov',\r\n    month_12: 'Dic',     \r\n    months_1: 'Enero',\r\n    months_2: 'Febrero',\r\n    months_3: 'Marzo',\r\n    months_4: 'Abril',\r\n    months_5: 'Mayo',\r\n    months_6: 'Junio',\r\n    months_7: 'Julio',\r\n    months_8: 'Agosto',\r\n    months_9: 'Septiembre',\r\n    months_10: 'Octubre',\r\n    months_11: 'Noviembre',\r\n    months_12: 'Diciembre',    \r\n    year : 'Año',\r\n    language: 'Idioma',\r\n    language_0: 'Català',\r\n    language_1: 'Castellà',\r\n    notification : { \r\n      updated: 'Elemento actualizado',\r\n      error: 'Se ha producido un error'\r\n    },\r\n    validation: {\r\n      required: 'Obligatorio',\r\n      minLength: 'Longitud mínima de %{min} carácteres',\r\n      maxLength: 'Máximo %{max} carácteres',\r\n      minValue: 'El valor mínimo és %{min}',\r\n      maxValue: 'El valor máximo és %{max}',\r\n      number: 'Número inválido',\r\n      email: 'El formato del correo electrónico no es correcto',\r\n      oneOf: 'Debe ser uno de estos valores: %{options}',\r\n      regex: 'Debe cumplir con el formato (expresión regular): %{pattern',\r\n      minMaxLengthAndCharacters: '%{min}-%{max} caracteres, con un número, letra, mayúscula, minúscula y carácter especial',\r\n    },\r\n    yes: 'Sí',\r\n    no: 'No' ,\r\n    labels: 'Etiquetas',\r\n    day_week_1: 'lun',\r\n    day_week_2: 'mar',\r\n    day_week_3: 'mie',\r\n    day_week_4: 'jue',\r\n    day_week_5: 'vie',\r\n    day_week_6: 'sab',\r\n    day_week_7: 'dom',\r\n    day_week_complete_1: 'Lunes',\r\n    day_week_complete_2: 'Marte',\r\n    day_week_complete_3: 'Miercoles',\r\n    day_week_complete_4: 'Jueves',\r\n    day_week_complete_5: 'Viernes',\r\n    day_week_complete_6: 'Sabado',\r\n    day_week_complete_7: 'Domingo',\r\n    title: 'Título',\r\n    link: 'Enlace',\r\n    notFoundPage: 'La página no existe',\r\n    goBack: 'Volver atrás',\r\n    date_from: 'Desde ',\r\n    date_to: ' hasta el ',\r\n    time_to: 'A las ',\r\n    download_ok: 'El archivo se ha generado correctamente. Consulta la carpeta de descargas del navegador',\r\n    excel: 'Excel',\r\n    pdf: 'PDF',    \r\n  },\r\n  main_menu : {\r\n    home: 'Inicio',\r\n    groups: 'Grupos',\r\n    users: 'Contactos',\r\n    recercat_users: 'Carnets',\r\n    recercat_centers: 'Centros',\r\n    docs_fac: 'Documentos',\r\n    remittances: 'Recibos',\r\n    classrooms: 'Espacios',\r\n    users_groups : 'Asignación a grupo',\r\n    associations: 'Clientes',\r\n    modules: 'Módulos',\r\n    modules_view: 'Más Apps...',\r\n    real_state: 'Inmuebles',\r\n    agreements: 'Convenios',\r\n    insurances: 'Seguros',\r\n    permissions: 'Permisos',\r\n    subscriptions: 'Suscripciones',\r\n    options: 'Opciones',\r\n    contacts: 'Contactos FAC',\r\n    events: 'Agenda',\r\n    reports: 'Informes',\r\n  },\r\n  dashboard : {\r\n    members: 'Evolución de socios',  \r\n    members_federation: 'Evolución',  \r\n    birthdays: 'Aniversarios',\r\n    members_legend_female : 'Mujeres',\r\n    members_legend_male : 'Hombres',\r\n    members_legend_no_binary : 'No binarios',\r\n    members_legend_no_informed : 'No informados',\r\n    members_legend_companies : 'Entidades jurídicas',\r\n    last_joins: 'mas recientes',    \r\n    last_joins_pending: 'Solicitudes pendientes de validar',\r\n    members_view: 'Ver todos',\r\n    events_view: 'Ver todas',\r\n    members_federation_view: 'Ver todas',\r\n    members_view_requests: 'Ver todas',\r\n    members_federation_view_requests: 'Ver todas',\r\n    members_add: 'Añadir',\r\n    people: 'personas',\r\n    age_sufix: 'años',\r\n    age_pyramid: 'Pirámide de edades',\r\n    today: 'Actividades de hoy',\r\n    next_events: 'Próximas actividades',\r\n    statistics_total_members: 'Número de socios',\r\n    statistics_avg_age: 'Media de edad', \r\n    statistics_gender: 'Por genero',    \r\n    remittances: 'Recibos',\r\n    remittances_legend_accepted: 'Aceptados',\r\n    remittances_legend_returned: 'Impagados',\r\n    remittances_add: 'Crear una remesa',\r\n    subscription_active_modules: \"Módulos activos\",\r\n    subscription_view_all_modules: \"Añadir módulos\",\r\n    subscription: 'Datos de la suscripción',\r\n    subscription_name: 'Plan de servicio',\r\n    subscription_status: 'Estado',\r\n    subscription_date_expiration: 'Fecha de expiración',\r\n    subscription_users : 'contactos',        \r\n    subscription_size : 'MB',\r\n    subscription_change : 'Modificar',\r\n    help: 'Soporte al usuario',\r\n    help_manual_link: 'Manual de usuario',       \r\n    help_description_sifac: 'Para cualquier consulta o sugerencia sobre el uso de la aplicación, envía un correo electrónico a soporte@sifac.cat o llama al teléfono 691957814 de lunes a viernes de 9h a 13h y de 16h a 19h.',\r\n    help_description: 'Para cualquier consulta o sugerencia sobre el uso de la aplicación, envía un correo electrónico a soporte@sifac.cat. Os reponderemos lo antes posible.',                \r\n    federation_members: 'Número',\r\n    federation_total_people: 'Número de socios de entidades',\r\n    federation_avg_age: 'Media de edad',\r\n    federation_avg_age_associations: 'Media de antigüedad',\r\n    federation_economic_data_incomings: 'Ingresos',\r\n    federation_economic_data_expenses: 'Gastos',\r\n    federation_economic_data_inversions: 'Inversiones',\r\n    federation_users: 'Personas associadas de los ateneos',\r\n    federation_users_number: 'Número',\r\n    federation_volunteers: 'Voluntarios',\r\n    federation_workers: 'Personal remunerado',\r\n    federation_managers: 'Juntas directivas',\r\n    federation_responsabilities: 'Miembros',    \r\n    federation_num_data: 'Datos de %num% entitad%s%',\r\n    federation_gender: 'Por género',\r\n    federation_map: 'Delegaciones territoriales',        \r\n    federation_associations: 'entidades',\r\n    alert_subscription_admin: 'Algunas funciones no están operativas porque no se ha detectado ninguna suscripción del Gestión de entidades activa. Por favor, contacta con el equipo de apoyo.',\r\n    facm_auditory : 'Actos en auditori',\r\n    facm_projects : 'Proyectos',\r\n    facm_num_events: 'Actos',\r\n    facm_num_entities: 'Entidades',\r\n    facm_num_assistants: 'Asistentes',\r\n  },\r\n  \r\n  modules_view : {\r\n    title: \"Módulos disponibles\",\r\n    actived: \"Activado\",   \r\n    to_desactive: \"Desactivar\",   \r\n    to_active_button: \"Activar\",    \r\n    change_modules_title: \"Activar/desactivar módulos\",\r\n    to_activate: \"Para modificar los módulos activos y/o el plan de servicio contratado, ponte en contacto por correo electrónico a admin@gestioentitats.cat. Os responderemos lo antes posible.\",\r\n    to_activate_sifac: \"Para modificar los módulos activos y/o el plan de servicio contratado, ponte en contacto por correo electrónico a suport@sifac.cat o bien llama al teléfono 691957814 de lunes a viernes de 9h a 13h y de 16h a 19h.\",    \r\n  },\r\n  \r\n  reports: {\r\n    title: 'Generar informe',  \r\n    annuary: 'Anuario',        \r\n    annuary_desc: 'Datos para realizar el anuario',\r\n    annuary_item_id: 'Id',\r\n    annuary_item_group: 'Ámbito',\r\n    annuary_item_calc: 'Cálculo',\r\n    annuary_item_name: 'Nombre',\r\n    annuary_item_value: 'Cantidad',\r\n    annuary_item_percent: '%',\r\n    annuary_item_avg: 'Media',\r\n    annuary_exporter_file_name: 'anuario',\r\n    annuary_last_years: 'Generar el informe con datos de años anteriores si no existen datos del año seleccionado',\r\n    responsabilities: 'Directivos de entidades',      \r\n    responsabilities_responsability: 'Cargo',   \r\n    responsabilities_date: 'Fecha',   \r\n    responsabilities_desc: 'Listado de directivos de entidades',    \r\n    responsabilities_exporter_file_name: 'directivos',\r\n    responsabilities_list_entity_name: 'Entidad',\r\n    responsabilities_list_entity_city: 'Población',\r\n    generate: 'Generar',    \r\n    no_results: 'No hay resultados'\r\n  },\r\n  associations : {\r\n    subscriptions : 'Suscripciones',\r\n    tab_data : 'Datos',\r\n    tab_subscriptions : 'Suscripciones',\r\n    tab_admin : 'Administradores',\r\n    tab_statistics : 'Estadísticas',\r\n    generate_data_demo : 'Generar datos de prueba',\r\n        \r\n    report_users: 'Usuarios',\r\n    report_groups: 'Grupos',\r\n    report_emails: 'Emails',\r\n    report_emails_not_sent: 'No enviados (48h)',\r\n    report_docs: 'Docs',\r\n    report_mb: 'MB',\r\n    report_remittances: 'Remesas',\r\n    report_remittances_users: 'Recibos',\r\n    report_last_action: 'Última acción',\r\n    \r\n    trial: 'Periodo de prueba',\r\n    begin: 'Inicio suscripción',\r\n    end: 'Final suscripción',\r\n    \r\n    email_sent_tooltip_button: 'Enviar notificación',\r\n    email_sent_tooltip_sending: 'Se está enviando notificación...',\r\n    email_sent_tooltip_done: 'Se ha enviado notificación',\r\n    email_sent: 'Notificación',\r\n    email_sent_title: 'Enviar notificación',\r\n    email_sent_ask: 'Seguro que quieres enviarle la notificación?' ,  \r\n    email_sent_ask_again: 'Ya se ha enviado anteriormente la notificación. ¿Seguro que quieres volver a enviarle?',        \r\n    email_sent_ko: 'La notificación no se ha podido entregar al destinatario',\r\n        \r\n  },\r\n  auth: {\r\n    error_title: 'Se ha producido un error',\r\n    forgot_password_title: '¿No recuerdas tú contraseña?',\r\n    forgot_password_desc: 'Introduce tu correo electrónico y recibirás instrucciones para restablecerla.',\r\n    forgot_password_ok: 'Revisa tu correo electrónico. <br/><br/> Si eres un usuario administrador te hemos mandado las instruciones para modificar la contraseña.',\r\n    forgot_password_link: 'Ya recuerdo la contraseña',\r\n    reset_password_title: 'Escribe tu nueva contraseña',\r\n    reset_password_button: 'Modificar contraseña',\r\n    reset_password_ok: 'Tú contraseña se ha actualizado correctamente',\r\n    reset_password_ok_link: 'Ir a la página de autenticación',\r\n    send_button: 'Enviar',\r\n    error: 'Error'    \r\n  },\r\n  signup : {\r\n    link_or: \"o\",\r\n    link: \"Regístrate\",\r\n    title: 'Regístrate para probar la aplicación',\r\n    register: 'Registro de nuevo usuario',\r\n    desc: 'Introduce el nombre de tu entidad y el correo electrónico, y te enviaremos el acceso para probar la aplicación <b>gratis durante 30 días</b>, sin necesidad de datos bancarios. Al finalizar este período, podrás decidir si deseas activar el plan de servicio.',\r\n    ok: 'Hemos recibido tus datos correctamente. <br/><br/>En breve recibirás un correo electrónico con las credenciales de acceso a la aplicación.',\r\n    ok_login: 'Acceder',\r\n    name: 'Nombre de la entidad',\r\n    send_button: 'Regístrate',\r\n    \r\n    form_lopd: 'Acepto que se traten mis datos para atender la solicitud de registro',\r\n    form_lopd_validator: 'Debes aceptar el tratamiento de los datos',\r\n    form_lopd_link: 'política de privacidad',\r\n    \r\n    form_terms: 'Acepto los ',\r\n    form_terms_link: 'términos y condiciones',\r\n    form_terms_validator: 'Debes aceptar los términos y condiciones',\r\n    \r\n    form_newsletter: 'Acepto que se traten mis datos para recibir ofertas y novedades',\r\n    \r\n    lopd: \"Política de privacidad\",\r\n    terms: \"Términos y condiciones\",\r\n    \r\n  },\r\n  \r\n  subscriptions : {\r\n    modules: 'Módulos',\r\n    module: 'Módulo',\r\n    options: 'Opciones',\r\n    option: 'Opción',\r\n    docs: 'Imágenes',\r\n    date_init: 'Fecha de inicio',\r\n    date_expiration: 'Fecha de expiración',\r\n  },\r\n  permissions : {\r\n    user : 'Usuario',\r\n    status : 'Estado',\r\n    status0: 'Pendiente',\r\n    status1 : 'Alta'\r\n  },\r\n  groups : {\r\n    title: 'Grupos',\r\n    group: 'Grupo',\r\n    edit: 'Modificar',\r\n    addChild: 'Añadir hijo',\r\n    tab_users: 'Personas',\r\n    tab_main: 'Grupo',\r\n    tab_quotes: 'Cuotas',\r\n    tab_docs: 'Documentos',\r\n    tab_subgroups: 'Subgrupos',\r\n    tab_responsabilities: 'Cargos',\r\n    num_members: 'Miembros actuales',\r\n    name: 'Nombre del grupo',\r\n    card: 'Carnet digital',\r\n    card_digital: 'Se pueden generar carnets digitales en PDF',\r\n    card_digital_wallets: 'Se pueden generar carnets digitales en Google Wallet y Apple Wallet',\r\n  },\r\n  groups_cards : {    \r\n    design_title: 'Diseño del carnet',\r\n    type: 'Elemento',\r\n    name: 'Títol',\r\n    pos_x: 'M. Izquierda (%)',\r\n    pos_y: 'M. Superior (%)',\r\n    size_x: 'Ancho (%)',\r\n    size_y: 'Alto (%)',\r\n    num_lines: 'Núm. máximo de líneas',\r\n    font_size: 'T. Letra (%)',\r\n    font_color: 'Color',\r\n    opacity: 'Opacidad (%)',\r\n    rectangle_round: 'Esquinas redondeadas (%)',\r\n    title: 'Nombre del campo',\r\n    message: 'Valor del campo',\r\n    status: 'Visible',\r\n    type_0: 'Nombre de la entidad',\r\n    type_0_default_title: 'Entidad',\r\n    type_1: 'Logotipo de la entidad',\r\n    type_1_default_title: '',\r\n    type_2: 'Nombre + Apellido1 + Apellido2 (miembro)',\r\n    type_2_default_title: 'Nombre',\r\n    type_3: 'Nombre + Apellido1 (miembro)',\r\n    type_3_default_title: 'Nombre',\r\n    type_4: 'Apellido1 Apellido2, Nombre (miembro)',\r\n    type_4_default_title: 'Nombre',\r\n    type_5: 'Núm. de miembro (miembro)',\r\n    type_5_default_title: 'Número',\r\n    type_6: 'Fotografía (miembro)',\r\n    type_6_default_title: '',\r\n    type_7: 'DNI/NIF (miembro)',\r\n    type_7_default_title: 'DNI/NIF',\r\n    type_8: 'Fecha de expedición',\r\n    type_8_default_title: 'Expedición',\r\n    type_9: 'Fecha de alta',\r\n    type_9_default_title: 'Fecha alta',\r\n    type_10: 'Código QR',\r\n    type_10_default_title: '',\r\n    type_11: 'Nombre del grupo',\r\n    type_11_default_title: 'Grupo/sección',\r\n    type_12: 'Correo electrónico (miembro)',\r\n    type_12_default_title: 'Correo electrónico',\r\n    type_13: 'Nombre (miembro)',\r\n    type_13_default_title: 'Nombre',\r\n    type_14: 'Apellido1 (miembro)',\r\n    type_14_default_title: '1r apellido',\r\n    type_15: 'Apellido2 (miembro)',\r\n    type_15_default_title: '2o apellido',\r\n    type_16: 'Apellido1 + Apellido2 (miembro)',\r\n    type_16_default_title: 'Apellidos',\r\n    type_17: 'Nombre del centro',\r\n    type_17_default_title: 'Nombre del centro',\r\n    type_18: 'Localidad del centro',\r\n    type_18_default_title: 'Población del centro',\r\n    type_19: 'Dirección de la entidad',\r\n    type_19_default_title: 'Dirección de la entidad',\r\n    type_20: 'Localidad de la entidad',\r\n    type_20_default_title: 'Población de la entidad',\r\n    type_21: 'Teléfono de la entidad',\r\n    type_21_default_title: 'Teléfono de la entidad',\r\n    type_22: 'Marco semi-transparente',\r\n    type_22_default_title: '',\r\n    type_23: 'Color de fondo',\r\n    type_23_default_title: '',\r\n    type_24: 'Campo de texto',\r\n    type_24_default_title: '',\r\n    type_25: 'Color de títulos de los campos',\r\n    type_25_default_title: '',\r\n    type_26: 'Color de letra',\r\n    type_26_default_title: '',\r\n    position: 'Posición',\r\n    position_0: 'Título cabecera frontal',\r\n    position_1: 'Título cabecera posterior',\r\n    position_2: 'Campo principal',\r\n    position_3: 'Campo secundario',\r\n    position_4: 'Campo auxiliar',\r\n    position_5: 'Campo bajo QR',\r\n    position_6: 'Campo parte posterior',\r\n    alignment: 'Alineación',\r\n    alignment_0: 'Izquierda',\r\n    alignment_1: 'Centrado',\r\n    alignment_2: 'Derecha',\r\n    alignment_3: 'Justificado',\r\n    uppercase: 'Mayúsculas',\r\n    pdf_view: 'Descargar carnet',\r\n    regenerate: 'Regenerar código QR',\r\n    regenerate_title: 'Regenerar código QR',\r\n    regenerate_text: '¿Seguro que deseas regenerar el código QR del carnet digital? Esta operación solo debe realizarse en caso de pérdida o robo del carnet. El carnet anterior dejará de ser válido. Esta operación no envía el carnet al contacto; deberá hacerse manualmente.',\r\n    regenerated_ok: 'Código QR regenerado correctamente',\r\n    pdf_card_filename: 'carnet.pdf',\r\n    pdf_card_ok: 'El carnet se ha generado correctamente. Consulta la carpeta de descargas del navegador',\r\n    pdf_card_download: 'Previsualización',\r\n    send_dialog_button: 'Enviar carnets digitales',\r\n    send_dialog_action: 'Acción a realizar',\r\n    send_dialog_action_0: 'Enviar el carnet digital solo a los contactos a quienes no se ha enviado (%num_pending%)',\r\n    send_dialog_action_1: 'Enviar el carnet digital a todos los contactos del grupo (%num_total%)',\r\n    send_dialog_block_size: 'Límite de envío',\r\n    send_dialog_regenerate: 'Regenerar el código QR. Si seleccionas esta opción, los contactos que ya tenían carnet digital tendrán uno nuevo y el anterior será inválido. Si no lo seleccionas, los usuarios que ya tenían carnet digital mantendrán su código QR, y el carnet anterior continuará siendo válido.',\r\n    send_dialog_text2: 'Se enviará a los contactos que dispongan de correo electrónico. El envío se ejecutará en segundo plano y puede tardar unos minutos. Podrás consultar el estado del envío en la ficha de cada contacto o usando los filtros de la lista de contactos.',\r\n    pdf_card_preview: 'Cargando la previsualización del carnet...',\r\n    create: 'Añadir elemento',\r\n    create_config: 'Añadir configuración',\r\n    edit: 'Modificar elemento',\r\n    edit_config: 'Modificar configuración',\r\n    config: 'Configuración',\r\n    background: 'Imagen de fondo',\r\n    settings_pdf: \"Carnet en PDF\",\r\n    settings_wallets_google: \"Google Wallet\",\r\n    settings_wallets_apple: \"Apple Wallet (fichero .pkpass)\",\r\n    background_google_wallet: \"Imagen inferior del carnet\",\r\n    google_wallet_icon: \"Icono\",\r\n    apple_wallet_icon: \"Imagen de cabecera\",\r\n    google_wallet_background_color: \"Color de fondo\"\r\n  },\r\n  users : {\r\n    tab_main: 'Datos básicos',\r\n    tab_main_0: 'Datos personales',\r\n    tab_main_1: 'Datos generales',\r\n    tab_more: 'Más datos',\r\n    tab_groups: 'Grupos',\r\n    tab_responsabilities: 'Cargos',\r\n    tab_responsabilities_fac: 'Cargos en la FAC',\r\n    tab_quotes: 'Cuotas',\r\n    tab_contacts: 'Contactos relacionados',\r\n    tab_contacts_rel: 'Contactos relacionados',\r\n    tab_economic_data: 'Presupuesto anual',\r\n    tab_workers_0: 'Personal remunerado',\r\n    tab_workers_1: 'Voluntarios',\r\n    tab_docs: 'Documentos',\r\n    tab_images: 'Imágenes',\r\n    tab_family: 'Familia',\r\n    tab_history: 'Historial',\r\n    tab_social_nets: 'Redes sociales',\r\n    user_type: 'Tipo',\r\n    user_type_0: 'Física',\r\n    user_type_1: 'Jurídica',\r\n    group: 'Grupo',\r\n    groups: 'Grupos',\r\n    without_group: 'Sin grupo',\r\n    first_name: 'Nombre',\r\n    name_company: 'Nombre fiscal',\r\n    last_name_1: 'Primer apellido',\r\n    last_name_2: 'Segundo apellido',\r\n    email: 'Correo electrónico',\r\n    email_secondary: 'Correo electrónico secundario',\r\n    email_secondary_list: 'Direcciones de correo electrónico adicionales',\r\n    code: 'Número interno',\r\n    address: 'Dirección',\r\n    neighborhood: 'Barrio',\r\n    zip: 'Código postal',\r\n    city: 'Población',\r\n    region: 'Comarca',\r\n    country: 'País',\r\n    lat: \"Coord. Latitud\",\r\n    lng: \"Coord. Longitud\",\r\n    phones: 'Teléfonos',\r\n    phone: 'Teléfono fijo',\r\n    mobile: 'Teléfono móvil',\r\n    web: 'Página web',\r\n    phone_emergency: 'Teléfono de emergencia',\r\n    birthday: 'Fecha de nacimiento',\r\n    foundation_date: 'Fecha de fundación',\r\n    foundation_age: 'Antigüedad',\r\n    job: 'Profesión',\r\n    nif: 'NIF',\r\n    nif_only: 'NIF',\r\n    gender: 'Género',\r\n    gender_1: 'Hombre',\r\n    gender_2: 'Mujer',\r\n    gender_3: 'No binario',\r\n    comment: 'Observaciones',\r\n    bank_data: 'Datos bancarios',\r\n    bank_iban: 'IBAN',\r\n    bank_swift: 'BIC/SWIFT',\r\n    bank_payer: 'Pagador',\r\n    no_users_title: 'Aún no hay personas.',\r\n    no_users_ask: '¿Quieres añadir algunas?',\r\n    person: 'Persona',\r\n    payment_cash: 'Pago en efectivo',\r\n    newsletter: 'Acepta recibir comunicaciones de la entidad',\r\n    age: 'Edad',\r\n    age_sufix: 'años',\r\n    others: 'Otros',\r\n    import: 'Importar',\r\n    import_title: 'Importar personas para este grupo desde Excel',\r\n    import_template: 'Descargar la plantilla Excel',\r\n    add_to_group: 'Añadir a',\r\n    add_member_comments: 'Dudas, comentarios o sugerencias',\r\n    add_member_send: 'Enviar',\r\n    validate: 'Validar',\r\n    validate_title: 'Validar socio/a',\r\n    validate_done: 'Se ha validado el socio/a',\r\n    validate_send_email: 'Enviar correo electrónico de bienvenida ahora',\r\n    welcome_email_sent: 'Correo de bienvenida',\r\n    welcome_email_sent_title: 'Correo de bienvenida',\r\n    welcome_email_sent_ask: '¿Seguro que quieres enviarle el correo de bienvenida predeterminado?',\r\n    welcome_email_sent_ask_again: 'Ya se ha enviado previamente el correo de bienvenida. ¿Seguro que quieres enviarlo nuevamente?',\r\n    welcome_email_sent_ok: '¡Envío realizado!',\r\n    welcome_email_tooltip_button: 'Enviar correo de bienvenida',\r\n    welcome_email_tooltip_sending: 'Se está enviando el correo de bienvenida...',\r\n    welcome_email_tooltip_done: 'Se ha enviado el correo de bienvenida',\r\n    welcome_email_sent_ko: 'No se ha podido entregar el correo de bienvenida al destinatario',\r\n    \r\n    group_left_email_sent: 'Correo de baja',\r\n    group_left_email_sent_title: 'Correo de baja',\r\n    group_left_email_sent_ask: '¿Seguro que quieres enviarle el correo de baja predeterminado?',\r\n    group_left_email_sent_ask_again: 'Ya se ha enviado previamente el correo de baja. ¿Seguro que quieres enviarlo nuevamente?',\r\n    group_left_email_sent_ok: '¡Envío realizado!',\r\n    group_left_email_tooltip_button: 'Enviar correo de baja',\r\n    group_left_email_tooltip_sending: 'Se está enviando el correo de baja...',\r\n    group_left_email_tooltip_done: 'Se ha enviado el correo de baja',\r\n    group_left_email_sent_ko: 'No se ha podido entregar el correo de baja al destinatario',\r\n       \r\n    digital_card_send: 'Carnet digital',\r\n    digital_card_send_title: 'Carnet digital',\r\n    digital_card_send_ask: '¿Seguro que quieres enviarle el carnet digital?',\r\n    digital_card_send_ask_again: 'El carnet digital ya se envió. ¿Deseas enviarlo otra vez??',\r\n    digital_card_send_ok: '¡Envío realizado!',\r\n    digital_card_tooltip_button: 'Enviar carnet digital',\r\n    digital_card_tooltip_sending: 'Se está enviando el carnet digital...',\r\n    digital_card_tooltip_done: 'Se ha enviado el carnet digital',\r\n    digital_card_send_ko: 'No se ha podido entregar el carnet digital al destinatario',\r\n        \r\n    exporter_file_name: 'contactos.xlsx',\r\n    exporter_file_name_csv: 'contactos',\r\n    export: 'Exportar',\r\n    alerts: 'Avisos',    \r\n    \r\n    delete_all: 'Eliminar',\r\n    delete_all_confirm_title: 'Confirmación de eliminación de %num_registers% registros',\r\n    delete_all_confirm_description: 'Se eliminarán todos sus datos, documentos, imágenes, reservas, recibos, histórico de grupos, ... y cualquier dato asociado que tengan.',\r\n    delete_all_confirm_description_ask: '¿Estás seguro de que quieres eliminar los contactos seleccionados?',\r\n    delete_all_ok: 'registros eliminados correctamente',\r\n    delete_all_ko: 'Algunos registros no se han podido eliminar: ',\r\n    \r\n    group_changes: 'Cambios en grupos',\r\n    group_changes_title: 'Cambios para los %num_registers% contacto/s seleccionado/s',\r\n    group_changes_action: 'Acción a realizar',\r\n    group_changes_action_1: 'Baja del grupo %group_name%',\r\n    group_changes_action_2: 'Mover a grupo',\r\n    group_changes_action_3: 'Asignar a grupo',\r\n    group_changes_date_1: 'Fecha de baja',\r\n    group_changes_date_2: 'Fecha de movimiento',\r\n    group_changes_date_3: 'Fecha de alta',\r\n    group_changes_confirm: 'Confirmar',\r\n    group_changes_destination_group: 'Grupo destino',\r\n    group_changes_ok_1: '%num_registers% contactos se han dado de baja correctamente',\r\n    group_changes_ok_2: '%num_registers% contactos se han movido correctamente',\r\n    group_changes_ok_3: '%num_registers% contactos se han asignado correctamente',\r\n    group_changes_ko_1: '%num_registers% contactos no se han podido dar de baja',\r\n    group_changes_ko_2: '%num_registers% contactos no se han podido mover',\r\n    group_changes_ko_3: '%num_registers% contactos no se han podido asignar',\r\n    \r\n  },      \r\n  users_filter: {\r\n    title: 'Filtrar',\r\n    filters: 'Filtros',\r\n    field: 'Campo',\r\n    operator: 'Operador',\r\n    value: 'Valor',\r\n    year: 'Año',\r\n    \r\n    filter_1: 'Nombre',\r\n    filter_2: 'Primer apellido',\r\n    filter_3: 'Segundo apellido',\r\n    filter_4: 'Correo electrónico principal',\r\n    filter_5: 'Tipo de contacto',\r\n    filter_6: 'Dirección',\r\n    filter_7: 'Barrio',\r\n    filter_8: 'Código postal',\r\n    filter_9: 'Población',\r\n    filter_10: 'Comarca',\r\n    filter_11: 'País',\r\n    filter_12: 'NIF',\r\n    filter_13: 'Página web',\r\n    filter_14: 'Fecha de nacimiento',\r\n    filter_15: 'Fecha de fundación',\r\n    filter_16: 'Edad',\r\n    filter_17: 'Antigüedad',\r\n    filter_18: 'Correo electrónico adicional',\r\n    filter_19: 'IBAN',\r\n    filter_20: 'Cuota',\r\n    filter_21: 'Último recibo',\r\n    filter_22: 'Nombre completo',\r\n    filter_23: 'Teléfono fijo',\r\n    filter_24: 'Teléfono móvil',\r\n    filter_25: 'Teléfono de emergencia',\r\n    filter_26: 'Género',\r\n    filter_27: 'Profesión',\r\n    filter_28: 'Acepta comunicaciones',\r\n    filter_29: 'BIC/SWIFT',\r\n    filter_30: 'Pago en efectivo',\r\n    filter_31: 'Fotografía',\r\n    filter_32: 'Documentos',\r\n    filter_33: 'Grupo: Fecha de alta en el grupo',\r\n    filter_34: 'Grupo: Número de miembro',\r\n    filter_35: 'Redes sociales',\r\n    filter_36: 'Observaciones',\r\n    filter_37: 'Avisos',\r\n    filter_38: 'Grupo',\r\n    filter_39: 'Centro',\r\n    filter_40: 'Imágenes',\r\n    filter_41: 'Correo electrónico secundario',\r\n        \r\n    filter_50: 'Grupo: Se ha enviado el correo de bienvenida',\r\n    filter_51: 'Grupo: Se ha enviado el carnet digital',\r\n        \r\n    /* FEDERACIO */\r\n    filter_80: 'Direcciones: Dirección',\r\n    filter_81: 'Direcciones: Código postal',\r\n    filter_82: 'Direcciones: Población',\r\n    filter_83: 'Direcciones: Comarca',\r\n    filter_84: 'Direcciones: Provincia',\r\n    filter_85: 'Direcciones: País',\r\n    filter_86: 'Direcciones: Dirección de envío',\r\n    filter_87: 'Direcciones: Código postal de envío',\r\n    filter_88: 'Direcciones: Población de envío',\r\n    filter_89: 'Direcciones: Comarca de envío',\r\n    filter_90: 'Direcciones: Provincia de envío',\r\n    filter_91: 'Direcciones: País de envío',\r\n        \r\n    filter_99: 'Nombre popular',\r\n    filter_100: 'Acrónimo',\r\n    filter_101: 'Nombre del registro',\r\n    filter_102: 'Número del registro',\r\n    filter_103: 'BCIN',\r\n    filter_104: 'BCIL',\r\n    filter_105: 'Sistema de venta de entradas',\r\n    filter_106: 'Forma parte del XTAC',\r\n    filter_107: 'Entidad de interés cultural',\r\n    filter_108: 'Entidad de utilidad pública',\r\n    filter_109: 'Acceso al Programa Cat',\r\n    filter_110: 'Último cambio de junta',\r\n    filter_111: 'Próximo cambio de junta',\r\n    filter_112: 'Delegación',\r\n    filter_113: 'Acoge otras entidades',\r\n    filter_114: 'Entidades que acoge',\r\n    filter_121: 'Carnés de socios',\r\n    filter_122: 'Logo de la FAC en el carnet',\r\n    filter_123: 'Reglamento interno',\r\n    filter_125: 'Placa de la FAC',\r\n    filter_126: 'Licencia de actividades',\r\n    filter_127: 'Titularidad del ateneo',\r\n    filter_128: 'La propiedad es',\r\n    filter_129: 'Cedido/Alquilado',\r\n    filter_130: 'Expropiado actualmente',\r\n    filter_131: 'Adaptados a la nueva LOPD',\r\n    filter_132: 'Normativas vigentes de',\r\n    filter_133: 'Memoria',\r\n    filter_134: 'Forma parte de otras federaciones',\r\n    filter_135: 'Federaciones de las que forma parte',\r\n    filter_136: 'Carnet RCAT',\r\n    filter_137: 'Entidad activa',\r\n    filter_138: 'Entidad desaparecida',\r\n    filter_139: 'Despojada por el franquismo',\r\n    filter_140: 'Fecha de desaparición',\r\n    filter_141: 'Personaje vinculado a resaltar',\r\n        \r\n    filter_200: 'Espacios',\r\n    filter_201: 'Espacios: Total m2',\r\n    filter_202: 'Espacios: m2',\r\n    filter_203: 'Espacios: capacidad',\r\n\r\n    filter_300: 'Presupuesto anual',\r\n    filter_301: 'Presupuesto: total ingresos',\r\n    filter_302: 'Presupuesto: total gastos',\r\n    filter_303: 'Presupuesto: total inversión obras',\r\n    filter_304: 'Presupuesto: resultado',\r\n    filter_305: 'Presupuesto (ingresos): cuotas de socios',\r\n    filter_306: 'Presupuesto (ingresos): servicios ofrecidos',\r\n    filter_307: 'Presupuesto (ingresos): subvenciones',\r\n    filter_308: 'Presupuesto (ingresos): arrendamientos',\r\n    filter_309: 'Presupuesto (ingresos): venta de productos',\r\n    filter_310: 'Presupuesto (ingresos): ayudas privadas',\r\n    filter_311: 'Presupuesto (ingresos): otros',\r\n    filter_312: 'Presupuesto (gastos): alquileres',\r\n    filter_313: 'Presupuesto (gastos): personal',\r\n    filter_314: 'Presupuesto (gastos): material',\r\n    filter_315: 'Presupuesto (gastos): profesionales externos',\r\n    filter_316: 'Presupuesto (gastos): cachés de grupos',\r\n    filter_317: 'Presupuesto (gastos): suministros',\r\n    filter_318: 'Presupuesto (gastos): mantenimiento',\r\n    filter_319: 'Presupuesto (gastos): comunicación y publicidad',\r\n    filter_320: 'Presupuesto (gastos): otros',\r\n    filter_321: 'Presupuesto (inversión obras): edificio',\r\n    filter_322: 'Presupuesto (inversión obras): teatro',\r\n    filter_323: 'Presupuesto (inversión obras): bar',\r\n    filter_324: 'Presupuesto (inversión obras): accesibilidad',\r\n    filter_325: 'Presupuesto (inversión obras): seguridad',\r\n    filter_326: 'Presupuesto (inversión obras): otros',\r\n    filter_327: 'Presupuesto: Media de la cuota anual',\r\n\r\n    filter_350: 'Datos demográficos',\r\n    filter_351: 'Datos demográficos: Núm. de socios',\r\n    filter_352: 'Datos demográficos: Media de edad',\r\n    filter_353: 'Datos demográficos: Media de edad junta directiva',\r\n    filter_354: 'Datos demográficos: Hombres (%)',\r\n    filter_355: 'Datos demográficos: Mujeres (%)',\r\n    filter_356: 'Datos demográficos: No binarios (%)',\r\n\r\n    filter_400: 'Personal remunerado',\r\n    filter_401: 'Personal remunerado: total personal',\r\n    filter_402: 'Personal remunerado: administración',\r\n    filter_403: 'Personal remunerado: técnico de actividades',\r\n    filter_404: 'Personal remunerado: conserjería',\r\n    filter_405: 'Personal remunerado: limpieza',\r\n    filter_406: 'Personal remunerado: comunicación',\r\n    filter_407: 'Personal remunerado: contabilidad',\r\n    filter_408: 'Personal remunerado: mantenimiento',\r\n    filter_409: 'Personal remunerado: gerencia',\r\n    filter_410: 'Personal remunerado: otros',\r\n        \r\n    filter_450: 'Voluntarios',\r\n    filter_451: 'Voluntarios: total',\r\n    filter_452: 'Voluntarios: administración',\r\n    filter_453: 'Voluntarios: técnico de actividades',\r\n    filter_454: 'Voluntarios: conserjería',\r\n    filter_455: 'Voluntarios: limpieza',\r\n    filter_456: 'Voluntarios: comunicación',\r\n    filter_457: 'Voluntarios: contabilidad',\r\n    filter_458: 'Voluntarios: mantenimiento',\r\n    filter_459: 'Voluntarios: gerencia',\r\n    filter_460: 'Voluntarios: otros',\r\n\r\n    filter_470: 'Formaciones en artes: total horas',\r\n    filter_471: 'Formaciones en artes: estudiantes por formación',\r\n    filter_472: 'Formaciones en artes: estudiantes por tipo de formación',\r\n    filter_473: 'Formaciones en artes: profesorado remunerado por formación',\r\n    filter_474: 'Formaciones en artes: profesorado remunerado por tipo de formación',\r\n    filter_475: 'Formaciones en artes: profesorado voluntario por formación',\r\n    filter_476: 'Formaciones en artes: profesorado voluntario por tipo de formación',\r\n\r\n    filter_480: 'Formaciones: total horas',\r\n    filter_481: 'Formaciones: estudiantes por formación',\r\n    filter_482: 'Formaciones: estudiantes por tipo de formación',\r\n    filter_483: 'Formaciones: profesorado remunerado por formación',\r\n    filter_484: 'Formaciones: profesorado remunerado por tipo de formación',\r\n    filter_485: 'Formaciones: profesorado voluntario por formación',\r\n    filter_486: 'Formaciones: profesorado voluntario por tipo de formación',\r\n\r\n    filter_490: 'Proyectos sociales',\r\n    filter_491: 'Proyectos sociales por tipo',\r\n\r\n    filter_500: 'Actividades',\r\n    filter_501: 'Actividades: total actividades anuales',\r\n    filter_502: 'Actividades: total asistentes anuales',\r\n    filter_503: 'Actividades: cantidad',\r\n    filter_504: 'Actividades: asistentes',\r\n\r\n    filter_600: 'Espectáculos',\r\n    filter_601: 'Espectáculos: total funciones',\r\n    filter_602: 'Espectáculos: total asistentes',\r\n    filter_603: 'Espectáculos: total presupuesto',\r\n    filter_604: 'Espectáculos: funciones',\r\n    filter_605: 'Espectáculos: asistentes',\r\n    filter_606: 'Espectáculos: presupuesto',\r\n\r\n    filter_700: 'Secciones',\r\n    filter_701: 'Secciones: núm. de secciones',\r\n    filter_702: 'Secciones: total participantes',\r\n    filter_703: 'Secciones: participantes',\r\n\r\n    filter_750: 'Ha respondido el formulario para el anuario',\r\n    filter_751: 'Se ha enviado el formulario para el anuario',\r\n    filter_752: 'Se ha enviado el recordatorio del formulario',\r\n\r\n    filter_800: 'Forma parte de un censo',\r\n    filter_801: 'Libros',\r\n    filter_802: 'Envíos',\r\n\r\n    filter_op_1: 'Contiene',\r\n    filter_op_2: 'Es igual a',\r\n    filter_op_3: 'Es diferente a',\r\n    filter_op_4: 'Es mayor que',\r\n    filter_op_5: 'Es mayor o igual que',\r\n    filter_op_6: 'Es menor que',\r\n    filter_op_7: 'Es menor o igual que',\r\n    filter_op_8: 'No contiene',\r\n    filter_op_9: 'En tiene',\r\n    filter_op_10: 'No en tiene',\r\n       \r\n  },\r\n    \r\n  users_permissions: {\r\n    email_sent: 'Correo de alta de administrador/a',\r\n    email_sent_title: 'Correo de alta de administrador/a',\r\n    email_sent_ask: '¿Seguro que quieres enviarle el correo de alta de administrador/a predefinido? Se generará una nueva contraseña.',\r\n    email_sent_ask_again: 'Ya se ha enviado anteriormente el correo de alta de administrador/a. ¿Seguro que quieres volver a enviárselo? Se generará una nueva contraseña.',\r\n    email_sent_ok: '¡Envío realizado!',\r\n    email_tooltip_button: 'Enviar correo de alta de administrador/a',\r\n    email_tooltip_sending: 'Se está enviando el correo de alta de administrador/a...',\r\n    email_tooltip_done: 'Se ha enviado el correo de alta de administrador/a',\r\n    email_sent_ko: 'El correo de alta de administrador no se ha podido entregar al destinatario',\r\n    role: 'Permisos',\r\n    role_SIFAC: 'Superadministrador',\r\n    role_ADMIN: 'Administrador',\r\n    role_ADMIN_CONTACTS: 'Administrador (lectura + edición de contactos)',\r\n    role_ADMIN_READER: 'Administrador (lectura)',\r\n  },\r\n        \r\n  users_federation : {\r\n    tab: 'Datos de la Federación',\r\n    tab_more: 'Más Federación',\r\n    tab_managers: 'Junta directiva',\r\n    tab_managers_1: 'Junta directiva actual',\r\n    tab_managers_2: 'Miembros de juntas directivas anteriores',\r\n    tab_managers_other: 'Miembro de juntas directivas de otros contactos',\r\n    tab_classrooms: 'Espacios',\r\n    name: 'Nombre popular',\r\n    acronym: 'Acrónimo',\r\n    reg_name: 'Nombre del registro',\r\n    reg_num: 'Número del registro',\r\n    bcin: 'BCIN',\r\n    bcil: 'BCIL',\r\n    tickets: 'Sistema de venta de entradas',\r\n    xtac: 'Forma parte de la XTAC',\r\n    culture_interest: 'Entidad de interés cultural',\r\n    public_utility: 'Entidad de utilidad pública',\r\n    soft_cat: 'Acceso al Programa Cat',\r\n    rcat: 'Carnet RCAT',\r\n    last_managers_change: 'Último cambio de junta',\r\n    next_managers_change: 'Próximo cambio de junta',\r\n    delegation: '¿Forma parte de una delegación?',\r\n    host: '¿Acoge otras entidades?',\r\n    host_entities: '¿Qué entidades?',\r\n    more_federations: 'Forma parte de otras federaciones',\r\n    federations: '¿Qué federaciones?',\r\n    lopd: 'Adaptado al nuevo Reglamento Europeo de Protección de Datos (LOPD)',\r\n    members_cards: 'Carnets de socios',\r\n    logo_federation: '¿Tiene logo de la FAC?',\r\n    internal_regulation: 'Reglamento interno',\r\n    federation_plate: 'Placa de la FAC',\r\n    ownership: 'Titularidad del ateneo',\r\n    property: 'La propiedad es',\r\n    rent: 'Cedido/Alquilado',\r\n    expropied: 'Está expropiado actualmente',\r\n    license: '¿Tiene licencia de actividades?',\r\n    regulations: 'Normativas vigentes de',\r\n    \r\n    actived: 'Entidad activa',\r\n    missing: 'Entidad desaparecida',\r\n    robbed: 'Espoliada por el franquismo',\r\n    missing_date: 'Fecha de desaparición',\r\n    history_title: 'Historia',\r\n    history: 'Historia Ateneo - La entidad',\r\n    history_equipment: 'Historia de la entidad - El equipamiento, infraestructura',\r\n    history_current: 'Historia Ateneo - Situación actual',\r\n    \r\n    census: 'Forma parte de un censo',\r\n    mailing_lists: 'Envíos',\r\n    activities_users: 'Etiquetas',\r\n    books: 'Libros',\r\n    \r\n    edited_books_title: 'Publicaciones de la entidad',\r\n    edited_books_books: 'Libros editados',\r\n    edited_books_book_entity: 'Libro del ateneo',\r\n    edited_books_newsletter: 'Boletín electrónico',\r\n    edited_books_magazine: 'Revista',\r\n    highlighted_dates: 'Fechas a resaltar',\r\n    notable_individuals: 'Personajes vinculados a resaltar',\r\n    links: 'Enlaces de interés',\r\n    edited_books_memory: 'Memoria',\r\n    edited_books_date: 'Fecha',\r\n    edited_books_period: 'Periodicidad',\r\n    event: 'Evento',\r\n    \r\n    recognitions: 'Reconocimientos',\r\n    recognitions_date: 'Fecha',\r\n    \r\n    schedules: 'Horarios',\r\n    schedules_day_week: 'Día',\r\n    schedules_time_start: 'Hora de inicio',\r\n    schedules_time_finish: 'Hora de fin',\r\n    \r\n    addresses: 'Direcciones',\r\n    ship_address: 'Dirección de envío',\r\n    province: 'Provincia',\r\n    gmaps: 'Google Maps',\r\n    addresses_create: 'Añadir dirección',\r\n    addresses_edit: 'Modificar dirección',\r\n    is_foundation_address: '¿Es la dirección de fundación de la entidad?',\r\n    ship_to_same: 'La dirección de envío es la misma que la dirección principal',\r\n    building: 'Edificio',\r\n    regultations: 'Regulaciones',\r\n    others: 'Otros',\r\n    classrooms: 'Espacios',\r\n    total_m2: 'Total m2',\r\n        \r\n  },\r\n    \r\n  users_groups :{\r\n    date_join: 'Fecha de alta',\r\n    date_left: 'Fecha de baja',\r\n    responsability: 'Cargo',\r\n    num_member: 'Número de miembro',\r\n    last_num_inserted: 'Número de miembro más reciente: ',\r\n    exporter_file_name: 'cargos',\r\n    qr_code: 'Código QR',\r\n    left: 'Dar de baja',\r\n    left_send_email: 'Enviar correo electrónico predeterminado de baja a la persona ahora',\r\n  },\r\n  groups_quotes: {\r\n    title: 'Periodicidades e importes',\r\n    date_payment: 'Fecha de pago',\r\n    month_payment: 'Inicio',\r\n    period: 'Periodicidad',\r\n    quantity: 'Importe',\r\n    apply_to_all: 'Aplicar la cuota a todos los miembros automáticamente',\r\n    is_donation: 'Es un donativo', \r\n    apply_to_all_list: 'Se aplica automáticamente',\r\n    apply_to_all_donation: 'Aplicar a recibos',\r\n    apply_to_all_donation_title: 'Establecer recibos existentes como donativos',\r\n    apply_to_all_donation_desc: '¿Estás seguro que quieres establecer todos los recibos ya emitidos para esta cuota como donativos? Esta acción no se puede deshacer.',\r\n    apply_to_all_donation_ok: 'Se han establecido todos los recibos de esta cuota como donativos',\r\n    apply_to_all_donation_ko: 'No se ha podido realizar la acción',\r\n  },\r\n  users_groups_quotes : {\r\n    group: 'Grupo',\r\n    group_quote: 'Cuota',\r\n    group_quote_period: 'Periodicidad',\r\n    quantity: 'Importe',\r\n    discount_ini: 'Inicio',\r\n    discount_end: 'Fin',\r\n    discount_percent: 'Dto (%)',\r\n    discount_quantity: 'Dto (€)',\r\n    manual_quantity: 'Importe manual (€)',\r\n    comment: 'Comentario'\r\n  },\r\n  remittances: {\r\n    tab_main: 'Remesa',\r\n    tab_remittances_users: 'Recibos',\r\n    concept: 'Concepto',\r\n    quantity: 'Importe',\r\n    date_creation: 'Fecha',\r\n    count_users: 'Recibos',\r\n    sum_quantity: 'Importe',\r\n    sepa: 'Archivo SEPA',\r\n    pdf: 'Recibos PDF',\r\n    link_user: 'Persona',\r\n    status: 'Estado',\r\n    status0: 'Aceptado',\r\n    status1: 'Impagado',\r\n    statusFilterAll: 'Todos',\r\n    statusFilter0: 'Aceptados',\r\n    statusFilter1: 'Impagados',\r\n    payer: 'Pagador',\r\n    iban: 'IBAN',\r\n    nif: 'NIF',\r\n    status_form: 'Cambiar estado del recibo',\r\n    status_new: 'Nuevo estado',\r\n    check_reemit: 'Se podrá volver a generar el recibo en una nueva remesa',\r\n    check_sent_return_notification: 'Enviar la notificación de impago al pulsar Guardar',\r\n    comments: 'Observaciones',\r\n    comments_form: 'Observaciones sobre el estado del recibo',\r\n    default_name: 'Remesa_',\r\n    groups_with_quotes: 'Generar automáticamente los recibos de',\r\n    edit_state: 'Modificar',\r\n    returns: 'Incorporar recibos impagados de otras remesas',\r\n    refresh_payer: 'Actualizar datos',\r\n    refresh_payer_confirm: 'Se han actualizado los datos de pago del usuario',\r\n    no_remittances_users_title: 'remesas de recibos',\r\n    no_remittances_users_ask: '¿Quieres añadir una?',\r\n    payer_payment_cash: 'Es un pago en efectivo',\r\n    payment_system: 'Forma de pago',\r\n    bank: 'Recibo bancario',\r\n    cash: 'Efectivo',\r\n    pdf_filename: 'recibos',\r\n    pdf_ok: 'El archivo se ha generado correctamente. Consulta la carpeta de descargas del navegador',\r\n    ref: 'Ref.',\r\n    resume_total_plural: 'recibos en la remesa',\r\n    resume_total: 'recibos en la remesa',\r\n    resume_bank_plural: 'recibos domiciliados',\r\n    resume_bank: 'recibo domiciliado',\r\n    resume_cash_plural: 'recibos en efectivo',\r\n    resume_cash: 'recibo en efectivo',\r\n    create: 'Añadir recibo',\r\n    create_remittance: 'Añadir remesa',\r\n    check_partial_quotes: 'Incluir cuotas proporcionales de los nuevos miembros. Por ejemplo, si hay un nuevo miembro en febrero y la siguiente cuota periódica no es hasta enero del siguiente año, se generará un recibo con la parte proporcional de los meses restantes.',\r\n    name: 'Remesa',\r\n    last_receips: 'Últimos recibos emitidos',\r\n    send_returned_notification_title: 'Enviar notificación de impago',\r\n    send_returned_notification_content: '¿Seguro que quieres enviar el correo de impago predefinido?',\r\n    send_returned_notification_content_again: 'Ya se ha enviado anteriormente el correo. ¿Seguro que quieres volver a enviar el correo de impago predefinido?',\r\n    send_returned_ko: 'El correo no se ha podido entregar al destinatario',\r\n    send_returned_tooltip_button: 'Enviar notificación de impago',\r\n    send_returned_tooltip_sending: 'Se está enviando la notificación de impago...',\r\n    send_returned_tooltip_done: 'Se ha enviado la notificación de impago',\r\n    exporter_file_name: 'recibos',\r\n    exporter_header_returned_status: 'Notificación de impago enviada',\r\n    is_donation: 'Es un donativo',    \r\n  },   \r\n  ibans : {\r\n    create_iban: 'Añadir cuenta',\r\n    public_id: 'Identificador',\r\n    name: 'Nombre de la cuenta',\r\n    ordering: 'Ordenando',\r\n    iban: 'IBAN',\r\n    swift: 'BIC/SWIFT',\r\n    sufix: 'Sufijo',\r\n    nif: 'NIF/CIF',\r\n    returns_tax: 'Comisión de devolución (€)',\r\n    bank_country_iso: 'País (ISO)',\r\n    create: 'Añadir cuenta',\r\n    edit: 'Editar cuenta',\r\n    no_ibans: 'cuentas configuradas',\r\n    name_create_remittance: 'Cuenta',\r\n  },\r\n  payment_systems: {\r\n   main_menu_title: 'Pasarelas bancarias',\r\n    create: 'Añadir pasarela',\r\n    edit: 'Modificar pasarela',\r\n    public_id: 'Identificador',\r\n    plattform: 'Tipo',\r\n    plattform_0: 'Redsys',\r\n    plattform_1: 'Addon Payments',\r\n    name: 'Nombre',\r\n    merchant: 'Comercio',\r\n    pswd: 'Contraseña',\r\n    terminal: 'Terminal / Cuenta',\r\n    url_ok: 'Url retorno OK',\r\n    url_ko: 'Url retorno KO',\r\n    url_async: 'Url de notificación',\r\n    real: 'Entorno real',\r\n    url: 'Url de conexión (modo REAL)',\r\n    url_test: 'Url de conexión (modo TEST)',\r\n    currency: 'Moneda',\r\n    encrypt: 'Clave de encriptación',\r\n    transaction_type: 'Tipo de transacción',\r\n    exporter_file_name: 'pasarelas',\r\n  }, \r\n  donations_projects: {\r\n    id: 'Id proyecto',\r\n    main_menu_title: 'Donativos',\r\n    associations_id: 'Id entidad',\r\n    associations_name: 'Entidad',\r\n    reports_title: 'Proyectos para recibir donaciones de las entidades federadas',\r\n    name: 'Proyecto',\r\n    create: 'Añadir proyecto',\r\n    description_short: 'Descripción corta para mostrar en la lista pública de proyectos',\r\n    description: 'Descripción larga',\r\n    video: 'Dirección de video Youtube',\r\n    date_start: 'Inicio de la campaña',\r\n    date_finish: 'Finalización',\r\n    minimum_amount: 'Importe mínimo de la donación (€)',\r\n    amount: 'Objetivo recaudación (€)',\r\n    public_entity: 'Público en la web',\r\n    public_fac: 'Público en la web de la FAC',\r\n    public_fac_date: 'Fecha límite publicación',\r\n    public_sum_donations: 'Publicar total aportaciones',\r\n    payment_card: 'Tarjeta',\r\n    payment_systems_id: 'Pasarela de pago',\r\n    payment_systems_fac: 'Formas de pago de la FAC',\r\n    payment_transfer: 'Transferencia bancaria',\r\n    payment_transfer_ibans_id: 'A la cuenta bancaria',\r\n    ibans_iban: 'Abono a la cuenta bancaria',\r\n    legal_text_1: 'Texto legal',\r\n    legal_text_2: 'Texto legal',\r\n    legal_text_3: 'Párrafo de justificación en el certificado de donación',\r\n    confirmation_text_1: 'Texto de confirmación',\r\n    confirmation_text_2: 'Texto de confirmación',\r\n    confirmation_email_1: 'Texto correo-e de confirmación',\r\n    count_donations: 'Financiadores',\r\n    sum_donations: 'Importe financiadores',\r\n    sum_donations_percent: '% recaudado',\r\n    remaining_days: 'Tiempo restante',\r\n    minute: 'minuto',\r\n    minutes: 'minutos',\r\n    hour: 'hora',\r\n    hours: 'horas',\r\n    day: 'día',\r\n    days: 'días',\r\n    seconds: 'segundos',\r\n    second: 'segundo',\r\n    filter_only_current: 'Proyectos vigentes',\r\n    only_pending: 'Pendientes de validación',\r\n    images: 'Imágenes',\r\n    legal_text: 'Textos legales',\r\n    payment_systems: 'Forma de pago',\r\n    public: 'Publicación',\r\n    preview: 'Previsualización',\r\n    view: 'Web',\r\n    fac_validation_status: 'Validación FAC',\r\n    fac_validation_status_0: 'Modo edición',\r\n    fac_validation_status_1: 'Pendiente de validación',\r\n    fac_validation_status_2: 'Validado',\r\n    fac_validation_status_3: 'Rechazado',\r\n    fac_validation_actions: 'Acciones',\r\n    fac_validation_actions_1: 'Solicitar validación',\r\n    edit: 'Modificar',\r\n    validate: 'Validar',\r\n    target_by_date: 'Objetivo en un intervalo de fechas',\r\n    reports: 'Donativos: Proyectos de las entidades',\r\n    reports_desc: 'Validar los proyectos de las entidades federadas, consultar mecenas y añadir donativos en efectivo o transferencia bancaria.',\r\n    reports_transfer_validations: 'Donativos: Validación de transferencias bancarias',\r\n    reports_transfer_validations_desc: 'Validar los donativos realizados mediante transferencia bancaria.',\r\n    reports_payments: 'Donativos: Pagos a las entidades',\r\n    reports_payments_desc: 'Consulta de los importes a transferir a las entidades',\r\n    reports_certificates: 'Donativos: Certificados de donación',\r\n    reports_certificates_desc: 'Generar los certificados de donación',\r\n    validate_request: 'Solicitar validación',\r\n    validate_request_button: 'Solicitar',\r\n    validate_request_desc: 'Solicitar que la FAC revise y valide el proyecto para publicarse y comenzar a recibir donativos. A partir de ese momento no podrá modificar el proyecto',\r\n    exporter_file_name: 'proyectos',\r\n    view_web: 'Ver en la web',\r\n    friendly_url: 'URL pública',\r\n    city: 'Localidad',\r\n    phone: 'Teléfono de contacto',\r\n    email: 'Correo-e de contacto',\r\n    friendly_url: 'Dirección pública',\r\n    comments_actived: 'Comentarios activos',\r\n    contact_data: 'Datos de contacto',\r\n  }, \r\n  utils : {\r\n    copy_clipboard_success: 'Se ha copiado al portapapeles',\r\n    copy_clipboard_error: 'No se ha podido copiar al portapapeles',\r\n  },\r\n  public_donations_projects: {\r\n   not_actived: 'La entidad no tiene proyectos de donaciones activos',\r\n    for: 'Por',\r\n    live: '¡En marcha!',\r\n    early: 'Comenzará pronto',\r\n    finished: '¡Finalizado!',\r\n    count_donations: 'Financiadores',\r\n    goal: 'Objetivo',\r\n    view_all_projects: 'Todos los proyectos',\r\n    remain: 'Quedan',\r\n    remain_1: 'Queda',\r\n    win: 'Logrado',\r\n    more_info: '+ Info',\r\n    contribute: 'Aportar',\r\n    association_not_found: 'La entidad no se ha encontrado o ha ocurrido un error',\r\n    not_found: 'El proyecto no se ha encontrado o ha ocurrido un error',\r\n    view_web: 'Agenda web',\r\n    go_back: 'Volver',\r\n    search: 'Buscar',\r\n    filter_date_after: 'Comienza después de',\r\n    filter_date_before: 'Comienza antes de',\r\n    filter_organizer_all: 'Todas las entidades',\r\n    comments: 'Comentarios de financiadores',\r\n    ago: 'hace',\r\n    close: 'De acuerdo',\r\n    return: 'Volver',\r\n    preview: 'Esta página es una previsualización del proyecto'\r\n  },\r\n  donations_users: {\r\n    main_menu_title: 'Financiadores',\r\n    create: 'Agregar donativo',\r\n    create_to: 'Hacer aportación a ',\r\n    edit: 'Modificar',\r\n    cancel: 'Cancelar',\r\n    pay: 'Pagar',\r\n    donations_projects_id: 'Id proyecto',\r\n    donations_projects_name: 'Nombre del proyecto',\r\n    associations_id: 'Id entidad',\r\n    associations_name: 'Entidad',\r\n    order_id: 'Referencia',\r\n    date_time: 'Fecha de donación',\r\n    user_type: 'Persona',\r\n    first_name: 'Nombre',\r\n    last_name_1: 'Apellido 1',\r\n    last_name_2: 'Apellido 2',\r\n    email: 'Correo electrónico',\r\n    nif: 'DNI/NIF',\r\n    address: 'Dirección',\r\n    zip: 'Código postal',\r\n    city: 'Ciudad',\r\n    country: 'País',\r\n    phone: 'Teléfono',\r\n    payment_method: 'Método de pago',\r\n    payment_method_0: 'Transferencia',\r\n    payment_method_1: 'Tarjeta',\r\n    payment_method_2: 'Efectivo',\r\n    amount: 'Importe',\r\n    status: 'Estado',\r\n    status_0: 'Pendiente',\r\n    status_1: 'Confirmado',\r\n    status_2: 'Rechazado',\r\n    date: 'Fecha de ingreso',\r\n    send_confirmation: 'Enviar correo de confirmación al donante',\r\n    transaction_id: 'Código de transacción',\r\n    comment: 'Comentario',\r\n    certificate: 'Certificado de donación',\r\n    send_status: 'Certificado enviado',\r\n    send_date_time: 'Fecha de envío',\r\n    confirmation_status: 'Confirmación enviada al donante',\r\n    confirmation_date_time: 'Fecha de envío',\r\n    only_accepted: 'Solo pagos confirmados',\r\n    only_pending: 'Solo pagos pendientes',\r\n    only_certificate_not_sent: 'Solo certificados no enviados',\r\n    pdf_download: 'Descargar',\r\n    validate: 'Confirmar',\r\n    validate_transfer: 'Confirmar transferencia',\r\n    pdf_certificate_filename: 'certificado_donacion.pdf',\r\n    pdf_certificate_ok: 'El certificado de donación se ha generado con éxito. Consulte la carpeta de descargas del navegador.',\r\n    pdf_certificate_ko: 'El certificado de donación no se ha podido generar.',\r\n    actions: 'Acciones',\r\n    email_sent: 'Certificado de donación',\r\n    email_sent_title: 'Certificado de donación',\r\n    email_sent_ask: '¿Seguro que deseas enviar el certificado de donación?',\r\n    email_sent_ask_all: '¿Seguro que deseas enviar el certificado de donación predefinido a todas las personas a quienes aún no se ha enviado?',\r\n    email_sent_ask_again: 'El certificado de donación ya se ha enviado anteriormente. ¿Seguro que deseas enviarlo de nuevo?',\r\n    email_send_all_button: 'Certificados de donación',\r\n    email_send_all_button_title: 'Enviar certificados de donación',\r\n    email_sent_ko: 'No se pudo entregar el certificado de donación al destinatario',\r\n    email_sent_tooltip_button: 'Enviar certificado de donación',\r\n    email_sent_tooltip_sending: 'Se está enviando el certificado de donación...',\r\n    email_sent_tooltip_done: 'El certificado de donación se ha enviado',\r\n    email_sent_confirmation: 'Confirmación de la donación',\r\n    email_sent_confirmation_title: 'Confirmación de la donación',\r\n    email_sent_confirmation_ask: '¿Seguro que deseas enviar la confirmación de la donación?',\r\n    email_sent_confirmation_ask_again: 'La confirmación de la donación ya se ha enviado anteriormente. ¿Seguro que deseas enviarla de nuevo?',\r\n    email_sent_confirmation_ko: 'No se pudo entregar la confirmación de la donación al destinatario',\r\n    email_sent_confirmation_tooltip_button: 'Enviar confirmación de la donación',\r\n    email_sent_confirmation_tooltip_sending: 'Se está enviando la confirmación de la donación...',\r\n    email_sent_confirmation_tooltip_done: 'Se ha enviado la confirmación de la donación',\r\n    exporter_file_name: 'financiadores',\r\n    want_certificate: '¿Quiere certificado de donación?',\r\n    copy: 'Copiar',\r\n    copy_title: 'Copiar transferencia',\r\n    donations_users_rel: 'Donativo relacionado'\r\n  }, \r\n  donations_certificates : {\r\n      title: 'Certificados de donación',\r\n      generate: 'Ver',\r\n      status : 'Estado envío',\r\n      date_time : 'Fecha envío',\r\n      exporter_file_name: 'certificados',\r\n  },\r\n  donations_payments : {\r\n      title: 'Pagos a las entidades',\r\n      date_from: 'Desde',\r\n      date_to: 'Hasta',\r\n      generate: 'Ver',\r\n      reports_title: 'Pago de las donaciones a las entidades entre el %date_from% y %date_to%',\r\n      exporter_file_name: 'pagos'\r\n  },\r\n  postal_labels : {\r\n    create: 'Añadir formato',\r\n    edit: 'Editar formato',\r\n    name: 'Nombre',\r\n    colxrows: 'Columnas x filas',\r\n    margins_cell: 'Márgenes de la etiqueta (cm)',\r\n    margins_page: 'Márgenes de la página (cm)',\r\n    num_columns: 'Número de columnas',\r\n    num_rows: 'Número de filas',\r\n    template: 'Plantilla',\r\n    available_fields: 'Campos disponibles:',\r\n    fields: '%nombre% | %apellido1% | %apellido2% | %direccion% | %cp% | %poblacion% | %comarca% | %provincia% | %pais%',\r\n    font_size: 'Tamaño de letra (puntos)',\r\n    line_separator: 'Separación entre líneas (puntos)',\r\n    margin_cell_left: 'Izquierdo',\r\n    margin_cell_top: 'Superior',\r\n    margin_cell_right: 'Derecho',\r\n    margin_cell_bottom: 'Inferior',\r\n    margin_page_left: 'Izquierdo',\r\n    margin_page_top: 'Superior',\r\n    margin_page_right: 'Derecho',\r\n    margin_page_bottom: 'Inferior',\r\n    last_row: 'Rellenar la última fila de cada página',\r\n    priority: 'Orden',\r\n    generate_button_title: 'Etiquetas',\r\n    generate_modal_title: 'Generar etiquetas postales',\r\n    generate_modal_desc: '¿Quieres generar un documento PDF (DIN A4) con las etiquetas de las direcciones postales de los contactos?',\r\n    generate_modal_button: 'Generar',\r\n    generate_format: 'Formato de la página (columnas x filas)',\r\n    generate_pdf_filename: 'etiquetas.pdf',\r\n    generate_ok_message: 'Las etiquetas se han generado con éxito. Consulta la carpeta de descargas del navegador.',\r\n    add_formats: 'Añadir formatos',\r\n  },\r\n  classrooms: {\r\n    no_classrooms_title: 'Aún no hay espacios',\r\n    no_classrooms_ask: '¿Quieres añadir uno?',\r\n    create: 'Añadir espacio',\r\n    seats: 'Capacidad (personas)',\r\n    type: 'Tipo de espacio',\r\n    type0: 'Cafetería / Restaurante',\r\n    type1: 'Teatro',\r\n    type2: 'Sala de exposiciones',\r\n    type3: 'Archivos',\r\n    type4: 'Biblioteca',\r\n    type5: 'Instalaciones deportivas',\r\n    type6: 'Salas polivalentes',\r\n    type7: 'Salas de cine',\r\n    type8: 'Auditorio',\r\n    type9: 'Jardín/Patio exterior',\r\n    type10: 'Otros',\r\n    m2: 'Tamaño (m2)',\r\n    is_public: 'El espacio es visible en la página web',\r\n    show_fac: 'El espacio es visible en la página de la FAC',\r\n    is_requestable: 'Se puede solicitar el uso de este espacio a través de la página web',\r\n    is_for_events: 'Se pueden programar eventos en este espacio',\r\n    data: 'Datos',\r\n    photos: 'Fotografías',\r\n    docs: 'Ficha técnica',\r\n    color: 'Color en el calendario',\r\n    overlapable: 'Se permite la superposición de eventos en este espacio',\r\n    link_back: 'Volver',\r\n    accessible: 'Es accesible',\r\n    cession: 'En cesión',\r\n    rent: 'Alquilado',\r\n    rentable: 'Disponible para alquilar',\r\n    lift: 'Tiene ascensor',\r\n    visibility: 'Visibilidad',\r\n    events: 'Eventos',\r\n    outdoor: 'Es exterior',\r\n  },\r\n  real_state: {\r\n    create: 'Añadir inmueble',\r\n    address: \"Dirección\",\r\n    city: \"Población\",\r\n    use: \"Uso\",\r\n    use_0: \"Otros\",\r\n    use_1: \"En alquiler\",\r\n    use_2: \"En cesión\",\r\n    use_others: 'Otros usos',\r\n    identifier: \"Identificador\",\r\n    acquisition_date: 'Fecha de adquisición',\r\n    sale_date: 'Fecha de venta',\r\n    amount: 'Valor contable',\r\n    guaranteed_value: 'Valor asegurado',\r\n    cadastral_reference: 'Referencia catastral',\r\n    comments: 'Observaciones',\r\n    docs: 'Documentos',\r\n    description: 'Descripción',\r\n    insurance: 'Seguro',\r\n    insurances: 'Seguros',\r\n    docs_deed: 'Escrituras de propiedad, registro mercantil...',\r\n    docs_map: 'Planos',\r\n    activities: 'Actividad',\r\n    activities_in_real_state: 'Actividades en inmuebles',\r\n    payments: 'Gastos',\r\n    agreements: \"Convenios\",\r\n    filter_only_current: \"Sólo actuales\",\r\n    exporter_file_name: 'inmuebles',\r\n  },\r\n  real_state_activities : {      \r\n    create: 'Añadir actividad',\r\n    name: 'Nombre de la actividad',\r\n    user: 'Contacto',\r\n    type: 'Tipo de relación',\r\n    type_0: 'Otros',\r\n    type_1: 'Convenio',\r\n    type_2: 'Contrato',\r\n    type_other: 'Tipo de relación',\r\n    agreements_id: 'Convenio',\r\n    date_start: \"Fecha inicio\",\r\n    date_finish: \"Fecha fin\",\r\n    date_alert: \"Fecha preaviso\",\r\n    insurance_who: 'Responsable seguro',\r\n    insurance_who_0: 'La persona',\r\n    insurance_who_1: 'Nosotros',\r\n    relations: 'Relación con la comunidad de propietarios',\r\n    comments: 'Observaciones',\r\n    docs: 'Documentos',\r\n    docs_contracts: 'Contratos',\r\n    docs_insurances: 'Seguros',\r\n    real_state_id: 'Id inmueble',\r\n    real_state: 'Nombre inmueble',\r\n    exporter_file_name: 'actividad_inmuebles',\r\n  },\r\n  real_state_payments : {\r\n    create: 'Añadir gasto',\r\n    type: 'Tipo',\r\n    type_0: 'Otros',\r\n    type_1: 'Luz',\r\n    type_2: 'Agua',\r\n    type_3: 'Gas',\r\n    type_4: 'Teléfono',\r\n    type_5: 'Seguro',\r\n    type_6: 'Obras',\r\n    type_7: 'Mantenimiento',\r\n    type_8: 'Reparaciones',\r\n    type_9: 'Transformaciones',\r\n    type_other: 'Tipo',\r\n    date_payment: \"Fecha pago\",\r\n    amount: 'Importe',\r\n    payer: 'Pagador',\r\n    payer_0: 'Otros',\r\n    payer_1: 'Nosotros',\r\n    payer_2: 'Comunidad',\r\n    payer_3: 'Inquilino',\r\n    payer_other: 'Pagador',\r\n    financing: 'Financiación',\r\n    financing_type: 'Tipo de financiación',\r\n    docs: 'Documentos',\r\n    docs_billing: 'Facturas',\r\n    comments: 'Observaciones',\r\n    exporter_file_name: 'pagos',\r\n  },\r\n  agreements: {\r\n    create: 'Añadir convenio',\r\n    users: \"Personas\",\r\n    date_start: \"Fecha inicio\",\r\n    date_finish: \"Fecha fin\",\r\n    date_alert: \"Fecha aviso\",\r\n    date_renewal: \"Fecha renovación\",\r\n    renewal_duration: \"Duración renovación\",\r\n    date_renewal_quote: \"Renovación cuota\",\r\n    comments: 'Observaciones',\r\n    users: \"Contactos\",\r\n    real_state: \"Inmuebles\",\r\n    docs: 'Documentos',\r\n    filter_only_current: \"Solo vigentes\",\r\n    exporter_file_name: 'convenios',\r\n  },\r\n  classrooms_activities: {\r\n     create: 'Añadir actividad',\r\n  },\r\n  classrooms_payments: {\r\n     create: 'Añadir pago',\r\n  },\r\n  insurances: {\r\n    create: 'Añadir seguro',\r\n    real_state: 'Inmuebles',\r\n    date_start: 'Fecha inicio',\r\n    date_finish: 'Fecha final',\r\n    date_alert: 'Fecha alerta',\r\n    date_renewal: 'Fecha renovación',\r\n    renewal_duration: 'Duración renovación',\r\n    comments: 'Observaciones',\r\n    docs: 'Documentos',\r\n    filter_only_current: \"Sólo vigentes\",\r\n    exporter_file_name: 'seguros',\r\n  },\r\n  alerts: {      \r\n    create: 'Añadir alerta',      \r\n    type: 'Tipo',\r\n    type_1: 'Genérica puntual',\r\n    type_2: 'Periódica anual',\r\n    type_3: 'Periódica mensual',\r\n    type_4: 'Preaviso actividad inmueble',\r\n    type_5: 'Preaviso convenio',\r\n    type_6: 'Renovación convenio',\r\n    type_7: 'Actualización cuota convenio',\r\n    type_8: 'Preaviso seguro',\r\n    type_9: 'Evento',\r\n    message: 'Mensaje a mostrar',\r\n    date_alert: 'Fecha puntual',\r\n    date_day: 'Día del mes',\r\n    date_month: 'Mes',\r\n    actions: 'Acciones',\r\n    action_send_email: 'Envío de correo electrónico a los administradores',\r\n    action_popup: 'Mostrar mensaje en la ventana de alertas de los administradores',\r\n    actived: 'Activa',\r\n    delete_all: 'Borrar todas las alertas',\r\n    no_results: 'No hay alertas',\r\n    filter_only_current: 'Sólo activas',      \r\n    postpone: 'Posponer alerta',\r\n    date_apply: 'Nueva fecha',\r\n    postpone_ok: 'Se ha pospuesto la alerta',\r\n    delete: 'Borrar',\r\n    delete_ok: 'Se ha borrado la alerta',\r\n    delete_all_ok: 'Se han borrado todas las alertas',\r\n  },  \r\n  docs: {\r\n    docs: 'Documentos',\r\n    create: 'Añadir',\r\n    edit: 'Cambiar el nombre',\r\n    actions: 'Acciones',\r\n    download: 'Descargar',\r\n    size: 'Tamaño',\r\n    fieldExcel: 'Documento .xlsx (máx. %size%MB)',\r\n    fieldDoc: 'Documento (máx. %size%MB)',\r\n    fieldImg: 'Imagen (máx. %size%MB)',\r\n    change: 'Cambiar',\r\n    webcam: 'Foto desde webcam',\r\n    webcam_capture: 'Capturar',\r\n    webcam_error: 'No se ha detectado la webcam',\r\n    delete_photo_title: 'Borrar fotografía',\r\n    delete_photo_ask: '¿Estás seguro de que quieres borrar la fotografía?',\r\n    imported: 'Importación finalizada correctamente. Se han importado %num% registros',\r\n    imported_none: 'No hay registros para importar',\r\n    copy_link: 'Dirección pública',\r\n  },\r\n  events: {\r\n    create: 'Añadir evento',\r\n    edit: 'Modificar',\r\n    name: 'Nombre del evento',\r\n    description: 'Descripción',\r\n    start: 'Fecha inicio',\r\n    end: 'Fecha fin',\r\n    classroom: 'Espacio',\r\n    activity: 'Actividad',\r\n    is_public: 'Publicarlo en la web de la entidad',\r\n    is_public_filter: 'Publicados en la web',\r\n    show_fac: 'Publicarlo en la web de la FAC',\r\n    show_fac_filter: 'Publicados en FAC',\r\n    repetitive: 'Generar repeticiones',\r\n    repetitive_limit: 'Finaliza el día',\r\n    repetitive_mode_edition_title_save: 'Editar el evento periódico',\r\n    repetitive_mode_edition_title_delete: 'Borrar el evento periódico',\r\n    repetitive_mode_edition_only_one: 'Este evento',\r\n    repetitive_mode_edition_only_future: 'Este evento y los siguientes',\r\n    repetitive_mode_edition_all: 'Todos los eventos',\r\n    repetitive_mode_edition_save: 'Guardar',\r\n    repetitive_mode_edition_delete: 'Borrar',\r\n    repetitive_mode_edition_delete_confirmation: '¿Estás seguro de que quieres borrar los eventos?',\r\n    repetitive_mode_edition_delete_confirmation_2: '¿Estás seguro/a de que quieres borrar los eventos?',\r\n    repetitive_mode_edition_cancel: 'Cancelar',\r\n    overlapable_title: 'Superposición de eventos',\r\n    overlapable_ask: '¿Quieres permitir la celebración de varios eventos en el mismo espacio y tiempo?',\r\n    data: 'Datos',\r\n    images: 'Imágenes',\r\n    images_desc: '* Puedes marcar las imágenes que se enviarán en el correo electrónico de invitación. Ten en cuenta reducir al máximo el tamaño de los archivos.',\r\n    docs: 'Documentos',\r\n    docs_desc: '* Puedes marcar los documentos que se enviarán en el correo electrónico de invitación. Ten en cuenta reducir al máximo el tamaño de los archivos.',\r\n    docs_mark: 'Adjunto al correo de invitación (*)',\r\n    bookings: 'Personas',\r\n    exporter_file_name: 'actividades',\r\n    exporter_header_id: 'Identificador interno',\r\n    exporter_header_title: 'Evento',\r\n    exporter_header_date_start: 'Fecha inicial',\r\n    exporter_header_date_finish: 'Fecha final',\r\n    exporter_header_classrooms_name: 'Espacio',\r\n    exporter_header_activities_name: 'Actividad',\r\n    exporter_header_is_public: 'Es público',\r\n    export_title: 'Exportar actividades',\r\n    export_form_text: 'Fecha de inicio',\r\n    export_form_from: 'Desde',\r\n    export_form_to: 'Hasta',\r\n    pdf_filename: 'eventos',\r\n    organizer: 'Organizador',\r\n    address: 'Dirección del evento',\r\n    city: 'Población',\r\n    alert_days: 'Aviso a los administradores',\r\n    alert_days_none: 'Sin aviso',\r\n    alert_days_0: 'El mismo día',\r\n    alert_days_1: '1 día antes',\r\n    alert_days_2: '2 días antes',\r\n    alert_days_3: '3 días antes',\r\n    alert_days_4: '4 días antes',\r\n    alert_days_5: '5 días antes',\r\n    alert_days_6: '6 días antes',\r\n    alert_days_7: '7 días antes',\r\n    alert_days_8: '8 días antes',\r\n    alert_days_9: '9 días antes',\r\n    alert_days_10: '10 días antes',\r\n    alert_days_11: '11 días antes',\r\n    alert_days_12: '12 días antes',\r\n    alert_days_13: '13 días antes',\r\n    alert_days_14: '14 días antes',\r\n    tickets_url: 'URL venta de entradas',\r\n    max_assistants: 'Número de asistentes',\r\n    is_internal: 'És un evento interno',\r\n    is_internal_filter: 'Evento interno',\r\n  },\r\n  public_events: {\r\n    not_actived: 'La entidad no tiene la agenda activa',\r\n    association_not_found: 'La entidad no se ha encontrado o ha habido un error',\r\n    event_not_found: 'La actividad no se ha encontrado o ha habido un error',\r\n    view_web: 'Agenda web',\r\n    go_back: 'Volver atrás',\r\n    search: 'Buscar',\r\n    filter_date_after: 'Comienza después de',\r\n    filter_date_before: 'Comienza antes de',\r\n    filter_activity: 'Actividad',\r\n    filter_organizer: 'Organizador',\r\n    filter_province: 'Provincia',\r\n    filter_region: 'Comarca',\r\n    filter_city: 'Población',\r\n    filter_organizer_all: 'Todas las entidades',\r\n    filter_activity_all: 'Todas las actividades',\r\n    filter_province_all: 'Todas las provincias',\r\n    filter_region_all: 'Todas las comarcas',\r\n    filter_city_all: 'Todas las poblaciones',\r\n    more_info: '+ Info',\r\n    tickets: 'Entradas',\r\n  },\r\n  recercat_centers:\r\n    {\r\n    public_id: 'Código',\r\n    name: 'Nombre',\r\n    city: 'Población',\r\n    email: 'Correo electrónico',\r\n    actived: 'Activo',\r\n    create: 'Añadir centro',\r\n    no_centers_title: 'centros',\r\n    no_centers_ask: '¿Quieres añadir uno?',\r\n    column_center: 'Centro',      \r\n    column_city: 'Población (sede de la entidad)',      \r\n    actions: 'Acciones',\r\n    actions_revoke: 'Revocar',\r\n    actions_validate: 'Validar',\r\n    actions_deny: 'Denegar',\r\n    actions_title0: 'Revocar carnet',    \r\n    actions_title1: 'Validar solicitud de carnet',    \r\n    actions_title2: 'Denegar solicitud de carnet',\r\n    actions_title3: 'Validar solicitud de carnet',\r\n    actions_title4: 'Revocar carnet',\r\n    actions_title5: 'Denegar solicitud de carnet',\r\n    actions_title6: 'Validar solicitud de carnet',        \r\n    action_button0: 'Revocar',\r\n    action_button1: 'Validar',\r\n    action_button2: 'Denegar',\r\n    action_button3: 'Validar',\r\n    action_button4: 'Revocar',\r\n    action_button5: 'Denegar',\r\n    action_button6: 'Validar',        \r\n    validate_num_member: 'Número de carnet',\r\n    validate_send_email: 'Enviar el carnet digital a la persona',\r\n    revoke_send_email: 'Enviar mensaje de confirmación a la persona',\r\n    revoke_title: 'Revocar carnet',    \r\n    revoke_ask: '¿Estás seguro de que quieres revocar el carnet? Se borrarán los datos personales y no se podrán recuperar.',    \r\n    deny_ask: '¿Estás seguro de que quieres denegar la solicitud de carnet? Se borrarán los datos personales y no se podrán recuperar.',    \r\n    revoke_comment: 'Motivo',    \r\n    revoke_button: 'Revocar',        \r\n    resume_send: 'Envío de resumen',\r\n    resume_send_title: 'Envío de resumen',\r\n    resume_send_ask: '¿Estás seguro de que quieres enviar un resumen de los carnets al centro?',  \r\n    resume_send_ask_again: 'Ya se ha enviado anteriormente un resumen de los carnets al centro. ¿Estás seguro de que quieres volver a enviarlo?',\r\n    resume_send_ok: '¡Envío realizado!',\r\n    resume_send_tooltip_button: 'Enviar resumen de carnets',\r\n    resume_send_send_tooltip_sending: 'Se está enviando el resumen de carnets...',\r\n    resume_send_tooltip_done: 'Se ha enviado el resumen de carnets',\r\n    resume_send_ko: 'No se ha podido entregar el resumen de carnets al destinatario',\r\n        \r\n    dashboard_resume_title: 'Estado de carnets',\r\n    dashboard_resume_num_members: 'Carnets activos',\r\n    dashboard_resume_num_centers: 'Total de centros activos',\r\n    dashboard_graphic_title: 'Carnets validados',\r\n    dashboard_graphic_cards: 'Carnets',\r\n\r\n    validation_email_code_0: 'Su solicitud para obtener el Carnet digital Recercat ha sido aceptada correctamente.<br/><br />Pronto le enviaremos el Carnet digital Recercat a su dirección de correo electrónico.<br /><br />Revise la carpeta de correo no deseado de su bandeja de entrada.<br /><br />',\r\n    validation_email_code_1: 'El código de la dirección no es correcto',\r\n    validation_email_code_2: 'La solicitud no se ha encontrado o ya no está activa',\r\n    validation_email_code_3: 'Su solicitud ya está en curso.',\r\n    validation_email_code_4: 'La entidad de la dirección no es correcta.',\r\n    validation_email_code_5: 'El formulario de solicitud de carnets Recercat está desactivado.',\r\n    validation_email_code_6: 'El enlace ya no es válido. Por favor, vuelva a realizar la solicitud.',\r\n    validation_email_error: 'Se ha producido un error al intentar validar la solicitud',\r\n\r\n    form_title: 'Formulario de solicitud del Carnet digital Recercat',\r\n    form_title_send_email: 'Formulario de solicitud del Carnet digital Recercat',\r\n    form_title_validate_ok: 'Confirmación de solicitud del carnet Recercat',\r\n    form_title_validate_ko: 'Solicitud del carnet Recercat',\r\n    required_fields: '* Todos los campos son necesarios',\r\n\r\n    resume_title: 'Estado de los carnets Recercat',\r\n    resume_pending_center: 'Pendientes de validación centro',\r\n    resume_pending_irmu: 'Pendientes de validación por el IRMU',\r\n    resume_validated: 'Validados por el IRMU',\r\n    resume_error: 'No se han podido recuperar los datos, la dirección no es válida.',\r\n    resume_actions_accept: 'Aceptar',\r\n    resume_actions_deny: 'Denegar',\r\n    resume_actions_revoke: 'Revocar',\r\n    resume_actions_logout: 'Cerrar sesión',\r\n        \r\n    resume_dialog_title_3: 'Aceptar solicitud de carnet',\r\n    resume_dialog_desc_3: 'La solicitud continuará su proceso y pasará al estado Pendiente de Validación IRMU.',\r\n    resume_dialog_button_3: 'Aceptar',\r\n    resume_dialog_title_5: 'Denegar solicitud',\r\n    resume_dialog_desc_5: '¿Estás seguro de que deseas denegar la solicitud de carnet? La persona recibirá un correo electrónico predefinido informándole de la denegación y se borrarán todos sus datos.',\r\n    resume_dialog_button_5: 'Denegar',\r\n    resume_dialog_title_4: 'Revocar carnet',\r\n    resume_dialog_desc_4: '¿Estás seguro de que deseas revocar el carnet? La persona recibirá un correo electrónico predefinido informándole de la baja y se borrarán todos sus datos.',\r\n    resume_dialog_button_4: 'Revocar',\r\n    resume_dialog_title_8: 'Cerrar sesión',\r\n    resume_dialog_desc_8: '¿Estás seguro de que deseas cerrar la sesión? El enlace dejará de ser válido y solo podrás volver a acceder a esta página si recibes un nuevo correo de estado de carnets Recercat.',\r\n    resume_dialog_button_8: 'Cerrar sesión',\r\n\r\n    delete_center_title: '¿Estás seguro de que deseas borrar el centro?',\r\n    delete_center_ask: 'Se revocarán todos sus carnets actuales, se denegarán las solicitudes de carnet pendientes y se desvinculará el centro de cualquier carnet en el pasado. Se enviará una notificación a todas las personas afectadas.',\r\n        \r\n    },\r\n    \r\n  documents_fac : {\r\n    title: 'Documentos de la FAC',\r\n    description: 'En esta sección podéis consultar los documentos disponibles para las asociaciones federadas.'\r\n  },\r\n    \r\n  bookings: {\r\n    create_user_button: 'Persona',\r\n    create_user_title: 'Añadir persona',\r\n    create_group_button: 'Grupo',\r\n    create_group_title: 'Añadir grupo',\r\n\r\n    status_0: 'Invitación',\r\n    email_sent_0: 'Correo de invitación',\r\n    email_sent_title_0: 'Correo de invitación',\r\n    email_sent_ask_0: '¿Estás seguro de que quieres enviar el correo de invitación predeterminado?',\r\n    email_sent_ask_all_0: '¿Estás seguro de que quieres enviar el correo de invitación predeterminado a todas las personas a las que aún no se les ha enviado?',\r\n    email_sent_ask_again_0: 'El correo de invitación ya ha sido enviado anteriormente. ¿Estás seguro de que quieres enviarlo de nuevo?',\r\n    email_send_all_button_0: 'Invitaciones',\r\n    email_send_all_button_title_0: 'Enviar invitaciones',\r\n    email_sent_ko_0: 'La invitación no se ha podido entregar al destinatario',\r\n    email_sent_tooltip_button_0: 'Enviar invitación',\r\n    email_sent_tooltip_sending_0: 'Se está enviando la invitación...',\r\n    email_sent_tooltip_done_0: 'La invitación ha sido enviada',\r\n\r\n    status_1: 'Recordatorio',\r\n    email_sent_1: 'Correo de recordatorio',\r\n    email_sent_title_1: 'Correo de recordatorio',\r\n    email_sent_ask_1: '¿Estás seguro de que quieres enviar el correo de recordatorio predeterminado?',\r\n    email_sent_ask_all_1: '¿Estás seguro de que quieres enviar el correo de recordatorio predeterminado a todas las personas a las que aún no se les ha enviado?',\r\n    email_sent_ask_again_1: 'El correo de recordatorio ya ha sido enviado anteriormente. ¿Estás seguro de que quieres enviarlo de nuevo?',\r\n    email_send_all_button_1: 'Recordatorios',\r\n    email_send_all_button_title_1: 'Enviar recordatorios',\r\n    email_sent_ko_1: 'El recordatorio no se ha podido entregar al destinatario',\r\n    email_sent_tooltip_button_1: 'Enviar recordatorio',\r\n    email_sent_tooltip_sending_1: 'Se está enviando el recordatorio...',\r\n    email_sent_tooltip_done_1: 'El recordatorio ha sido enviado',\r\n\r\n    email_sent_ok: '¡Envío realizado!',\r\n    email_only_pending: 'A las personas a las que aún no se les ha enviado',\r\n    email_all: 'A todas las personas',\r\n    email_send_button: 'Enviar',\r\n    email_send_all_advise: 'El envío masivo se ejecutará en segundo plano y puede tardar unos minutos.',\r\n\r\n    email_status_0: '',\r\n    email_status_1: 'Enviando...',\r\n    email_status_2: '¡Error enviando!',\r\n    email_status_3: '¡Enviado!',\r\n    email_status_4: '¡Devuelto!',\r\n\r\n    delete_all_button: 'Borrar',\r\n    delete_all_button_title: 'Borrar personas',\r\n    delete_all_ask: '¿Estás seguro de que quieres borrar a todas las personas del evento?',\r\n    reminder: 'Enviar recordatorio a todas las personas',\r\n    reminder_0: 'No enviar',\r\n    reminder_1: 'El mismo día a las 7h',\r\n    reminder_2: 'El mismo día a las 8h',\r\n    reminder_3: 'El mismo día a las 9h',\r\n    reminder_4: 'El mismo día a las 10h',\r\n    reminder_5: 'El día anterior a las 19h',\r\n    reminder_6: 'El día anterior a las 20h',\r\n    reminder_7: 'El día anterior a las 21h',\r\n    reminder_8: 'El día anterior a las 22h',\r\n\r\n    exporter_file_name: 'personas_evento',\r\n    exporter_header_id : 'Identificador',\r\n  },\r\n  social_nets : {\r\n   title: 'Red social',\r\n    link: 'Nombre de usuario'\r\n  },\r\n  users_families : {\r\n    name : 'Nombre'\r\n  },\r\n  users_activities: {\r\n    title: 'Actividades',\r\n    create_button: 'Añadir',\r\n    create: 'Añadir resumen anual de actividades',\r\n    edit: 'Modificar resumen anual de actividades',\r\n    name: 'Actividad',\r\n    quantity: 'Cantidad',\r\n    assistants: 'Asistentes',\r\n    adult: 'Público',\r\n    total_quantity: 'Número de actividades',\r\n    total_assistants: 'Total de asistentes',\r\n  },\r\n  users_trainings : {\r\n    title0: 'Formación en artes',\r\n    title1: 'Formaciones',\r\n    create_button: 'Añadir',\r\n    create0: 'Añadir resumen anual de formaciones en artes',\r\n    create1: 'Añadir resumen anual de formaciones',\r\n    edit0: 'Modificar resumen anual de formaciones en artes',\r\n    edit1: 'Modificar resumen anual de formaciones',\r\n    type: 'Formación',\r\n    training_type: 'Tipo de actividad',\r\n    training_type0: 'Curso',\r\n    training_type1: 'Taller',\r\n    training_type2: 'Esparcimiento',\r\n    training_type3: 'Aula',\r\n    training_type99: 'Otros',\r\n    training_type_others: 'Tipo de actividad (si no está en la lista)',\r\n    periodicities: 'Periodicidad',\r\n    periodicity0: 'Diaria',\r\n    periodicity1: 'Semanal',\r\n    periodicity2: 'Mensual',\r\n    periodicity3: 'Curso lectivo',\r\n    periodicity4: 'Verano',\r\n    periodicity5: 'Navidad',\r\n    periodicity6: 'Semana Santa',\r\n    ages: 'Franja de edades',\r\n    ages0: 'Infantil (menos de 12 años)',\r\n    ages1: 'Juvenil (12-18 años)',\r\n    ages2: 'Adultos (18-40 años)',\r\n    ages3: 'Veteranos (40+ años)',\r\n    ages4: 'Mix de diferentes edades',\r\n    num_classrooms: 'Núm. de espacios',\r\n    formal: 'Formal / No formal',\r\n    students: 'Estudiantes',\r\n    teachers_workers: 'Profesorado remunerado',\r\n    teachers_volunteers: 'Profesorado voluntario',\r\n    total_hours: 'Total de horas',\r\n    total_quantity0: 'Número de formaciones en arte',\r\n    total_quantity1: 'Número de formaciones',\r\n    total_teachers_workers: 'Total profesorado remunerado',\r\n    total_teachers_volunteers: 'Total profesorado voluntario',\r\n    total_students: 'Total estudiantes',\r\n    type0: 'Teatro',\r\n    type1: 'Danza',\r\n    type2: 'Circo',\r\n    type3: 'Coral',\r\n    type4: 'Canto',\r\n    type5: 'Instrumentos musicales',\r\n    type6: 'Artes plásticas',\r\n    type7: 'Artes audiovisuales-digitales',\r\n    type8: 'Escritura y expresión literaria',\r\n    type9: 'Fotografía',\r\n    type10: 'Danza iniciación',\r\n    type11: 'Danza contemporánea',\r\n    type12: 'Música instrumento',\r\n    type13: 'Lenguage musical',\r\n    type14: 'Combo',\r\n    type15: 'Pintura artística',\r\n    type16: 'Manga',\r\n    type99: 'Otros',    \r\n    type20: 'Idiomas',\r\n    type21: 'Deportivas - Otras',\r\n    type22: 'Deportivas - Fútbol',\r\n    type23: 'Deportivas - Baloncesto',\r\n    type24: 'Deportivas - Tenis de mesa',\r\n    type25: 'Deportivas - Ajedrez',\r\n    type26: 'Deportivas - Senderismo',\r\n    type27: 'Curso Robótica/Tecnología',\r\n    formal_art_0: 'Formal',\r\n    formal_art_1: 'No formal',\r\n    formal_0: 'Formal/federada',\r\n    formal_1: 'No formal'\r\n  },  \r\n  users_social_projects: {\r\n    title: 'Proyectos sociales',\r\n    create_button: \"Añadir\",\r\n    create: 'Añadir resumen anual de proyectos sociales',    \r\n    edit: 'Modificar resumen anual de proyectos sociales',\r\n    type: \"Tipo de destinatario\",\r\n    quantity: \"Cantidad\",\r\n    total_quantity: \"Cantidad total\",\r\n    type0: 'Migración',\r\n    type1: 'Violencia machista',\r\n    type2: 'Discapacidad',\r\n    type3: 'Desempleo',\r\n    type4: 'Familias monoparentales',\r\n    type5: 'Tercera edad (personas mayores)',\r\n    type6: 'Salud mental',\r\n    type7: 'Inserción sociolaboral',\r\n    type8: 'Otros'\r\n  },\r\n  users_sections: {\r\n    title: 'Secciones',\r\n    create_button: 'Añadir',\r\n    create: 'Añadir resumen anual de secciones',\r\n    edit: 'Modificar resumen anual de secciones',\r\n    participants: 'Participantes',\r\n    num_sections: 'Núm. secciones',\r\n    total_participants: 'Total participantes',\r\n    name: 'Sección',\r\n    quantity: 'Cantidad',\r\n    assistants: 'Asistentes',\r\n    total_quantity: 'Núm. actividades',\r\n    total_assistants: 'Total asistentes',\r\n  },\r\n  users_shows: {\r\n    title: 'Espectáculos',\r\n    create_button: 'Añadir',\r\n    create: 'Añadir resumen anual de espectáculos',\r\n    edit: 'Modificar resumen anual de espectáculos',\r\n    name: 'Espectáculo',\r\n    total_quantity: 'Núm. funciones',\r\n    total_assistants: 'Total asistentes',\r\n    total_inversion: 'Total presupuesto',\r\n    type: 'Tipo',\r\n    type_1: 'Teatro',\r\n    type_2: 'Danza',\r\n    type_3: 'Música',\r\n    type_4: 'Otros',\r\n    amateur: 'Amateur/Profesional',\r\n    amateur_1: 'Amateur',\r\n    amateur_2: 'Profesional',\r\n    adult: 'Público',\r\n    adult_1: 'Infantil',\r\n    adult_2: 'Adulto',\r\n    adult_3: 'Para todos los públicos',\r\n    quantity: 'Núm. funciones',\r\n    assistants: 'Asistentes',\r\n    inversion: 'Presupuesto',\r\n    occupancy: 'Ocupación (%)',    \r\n  },\r\n  check_members: {\r\n    not_found: 'El carnet no es válido',\r\n    status_1: 'Válido',\r\n    status_2: 'No válido',\r\n    status_3: 'No válido',\r\n    checker_name: 'Nombre y apellidos',\r\n    checker_num_member: 'Número',\r\n    checker_date: 'Fecha de validación',\r\n  },\r\n  users_annuary : {\r\n    tab: 'Anuario',\r\n    title: 'Formulario para el anuario',\r\n    answered_status: 'Respondido',\r\n    answered_status_0: 'No',\r\n    answered_status_1: 'Sí',\r\n    answered_date_time: 'Fecha de respuesta',\r\n    expiration_date: 'Fecha límite para responder',\r\n    sent_status: 'Envío',\r\n    reminder_status: 'Recordatorio',\r\n    confirm_status: 'Confirmación',\r\n    send: 'Enviar',\r\n    create_button: 'Enviar nuevo formulario',\r\n    edit: 'Editar formulario',\r\n    send_dialog_button: 'Formulario anuario',\r\n    send_dialog_action: 'Acción a realizar',\r\n    send_dialog_action_0: 'Enviar enlace del formulario a todos los contactos',\r\n    send_dialog_action_1: 'Enviar recordatorio con el enlace al formulario a todos los contactos',\r\n    send_dialog_text1_0: 'Se enviará un mensaje predefinido a todos los contactos del grupo a los que aún no se les haya enviado con el enlace para responder al formulario.',\r\n    send_dialog_text1_1: 'Se enviará un recordatorio con el enlace del formulario a todos los miembros del grupo a los que ya se les haya enviado y aún no hayan respondido.',\r\n    send_dialog_text2: 'La fecha límite para responder al formulario será la que indiques a continuación.',\r\n    send_dialog_text3: 'El envío se ejecutará en segundo plano y puede tardar unos minutos. Podrás consultar el estado del envío y las respuestas en la ficha de cada contacto o usando los filtros de la lista de contactos.',\r\n    \r\n    not_found: 'El formulario no se ha encontrado o no está disponible',\r\n    expired: 'Se ha acabado el plazo para responder al formulario, por favor, contacta con la FAC.',\r\n    \r\n    email_sent_0: 'Correo con el formulario',\r\n    email_sent_title_0: 'Correo con enlace al formulario',\r\n    email_sent_ask_0: '¿Seguro que quieres enviarle el enlace al formulario?',\r\n    email_sent_ask_again_0: 'Ya se ha enviado previamente el correo con el enlace al formulario. ¿Seguro que quieres volver a enviárselo? Se generará un nuevo enlace.',\r\n    email_sent_ko_0: 'No se ha podido entregar el formulario al destinatario',\r\n    email_sent_tooltip_button_0: 'Enviar formulario',\r\n    email_sent_tooltip_sending_0: 'Se está enviando el formulario...',\r\n    email_sent_tooltip_done_0: 'Se ha enviado el formulario',\r\n    \r\n    email_sent_1: 'Correo de recordatorio',\r\n    email_sent_title_1: 'Correo de recordatorio',\r\n    email_sent_ask_1: '¿Seguro que quieres enviarle el correo de recordatorio predefinido?',\r\n    email_sent_ask_again_1: 'Ya se ha enviado previamente el correo de recordatorio. ¿Seguro que quieres volver a enviarlo?',\r\n    email_sent_ko_1: 'No se ha podido entregar el recordatorio al destinatario',\r\n    email_sent_tooltip_button_1: 'Enviar recordatorio',\r\n    email_sent_tooltip_sending_1: 'Se está enviando el recordatorio...',\r\n    email_sent_tooltip_done_1: 'Se ha enviado el recordatorio',\r\n    \r\n    email_sent_2: 'Correo de confirmación',\r\n    email_sent_title_2: 'Correo de confirmación',\r\n    email_sent_ask_2: '¿Seguro que quieres enviarle el correo de confirmación predefinido?',\r\n    email_sent_ask_again_2: 'Ya se ha enviado previamente el correo de confirmación. ¿Seguro que quieres volver a enviarlo?',\r\n    email_sent_ko_2: 'No se ha podido entregar el correo de confirmación al destinatario',\r\n    email_sent_tooltip_button_2: 'Enviar confirmación',\r\n    email_sent_tooltip_sending_2: 'Se está enviando el correo de confirmación...',\r\n    email_sent_tooltip_done_2: 'Se ha enviado el correo de confirmación',\r\n    \r\n    form_title: 'Formulario para el anuario %year%',\r\n    form_send: 'Enviar',\r\n    form_already_answered: 'El formulario ya ha sido respondido, si deseas modificar tus datos, por favor, contacta con la FAC.',\r\n    form_general_data: 'Datos generales de la entidad',\r\n    form_activities: 'Actividades',\r\n    form_trainings_art: 'Formaciones en arte',\r\n    form_trainings: 'Formaciones',\r\n    form_classrooms: 'Espacios',\r\n    form_social_nets: 'La entidad en la red',\r\n    form_social_nets_title: 'Redes sociales',\r\n    form_economic_data: 'Datos económicos',\r\n    form_economic_data_incomings: 'Ingresos',\r\n    form_economic_data_expenses: 'Gastos',\r\n    form_economic_data_inversion: 'Inversión',\r\n    form_shows: 'Espectáculos',\r\n    form_sections: 'Secciones de la entidad',\r\n    form_workers: 'Personal remunerado',\r\n    form_volunteers: 'Voluntarios',\r\n    form_edited_books_books: 'Libro del ateneo',\r\n    form_edited_books_newsletters: 'Boletín electrónico',\r\n    form_edited_books_magazines: 'Revista',\r\n    form_entity: 'Nombre de la entidad',\r\n    \r\n    form_desc_activities: 'Las actividades que se desarrollan en tu ateneo. Diferentes de las formaciones y cursos.',\r\n    form_desc_classrooms: 'Los espacios físicos o equipamientos que dispone tu ateneo.',\r\n    form_desc_shows: 'Los actos que se representan en el ateneo.',\r\n    form_desc_sections: 'Grupos de la entidad.',\r\n    form_desc_trainings_art: 'Cursos con un fin formativo o de enseñanza en artes que se desarrollan en tu entidad.',\r\n    form_desc_trainings: 'Cursos con un fin formativo o de enseñanza que se desarrollan en tu entidad.',\r\n    form_desc_workers: 'Personas contratadas que reciben un salario en tu entidad.',\r\n    form_desc_volunteers: 'Personas que ofrecen su tiempo, experiencia, conocimientos y trabajo para tu entidad sin recibir compensación económica.',\r\n    form_desc_social_nets: 'Tu presencia en las redes sociales digitales.',\r\n    form_desc_economic_data: 'Los datos generales de los gastos, ingresos e inversiones generales realizados en tu ateneo.',\r\n    form_desc_edited_books_books: 'Libros publicados desde tu entidad.',\r\n    form_desc_edited_books_newsletters: 'Tipo de publicaciones periódicas o que publicas regularmente con las noticias de tu ateneo.',\r\n    form_desc_edited_books_magazines: 'Tipo de publicación periódica con artículos de información general o determinada sobre tu ateneo.'\r\n\r\n  },\r\n  users_economic_data : {\r\n    incomings: 'Ingresos',\r\n    expenses: 'Gastos',\r\n    total: 'Resultado',\r\n    inversion: 'Inversión en obras',\r\n    members: 'Cuotas de socios',\r\n    services: 'Servicios ofrecidos',\r\n    subsidies: 'Subvenciones (Generalitat, Diputación, Ayuntamiento u otros)',\r\n    rentals: 'Arrendamientos',\r\n    products: 'Venta de productos',\r\n    privates: 'Ayudas privadas',\r\n    others: 'Otros',\r\n    create: 'Añadir presupuesto anual',\r\n    create_button: 'Añadir',\r\n    edit_title: 'Modificar presupuesto anual',\r\n    exp_rentals: 'Alquileres',\r\n    exp_workers: 'Personal',\r\n    exp_material: 'Material',\r\n    exp_professionals: 'Profesionales externos',\r\n    exp_groups: 'Cachets de grupos',\r\n    exp_supplies: 'Suministros',\r\n    exp_maintenance: 'Mantenimiento',\r\n    exp_marketing: 'Comunicación y publicidad',\r\n    exp_others: 'Otros',\r\n    avg_quote: 'Media de la cuota de socio/a anual',\r\n    detail: 'Detalle',\r\n    inv_building: 'En el edificio en general',\r\n    inv_theatre: 'En el teatro',\r\n    inv_bar: 'En el bar',\r\n    inv_accessibility: 'Accesibilidad',\r\n    inv_security: 'Seguridad',\r\n    inv_others: 'Otros',\r\n        \r\n  },\r\n  \r\n    users_demografy: {\r\n        title: 'Datos demográficos',\r\n        create: 'Añadir',\r\n        edit_title: 'Modificar datos demográficos',\r\n        year: 'Año',\r\n        num_members: 'Número de socios',\r\n        avg_age: 'Edad media',\r\n        avg_age_managers: 'Edad media de la junta directiva',\r\n        percent_man: 'Hombres (%)',\r\n        percent_woman: 'Mujeres (%)',\r\n        percent_no_binary: 'No binarios (%)'\r\n    }, \r\n\r\n  users_workers : {\r\n    create_0: 'Añadir resumen anual del personal remunerado',\r\n    create_1: 'Añadir resumen anual del voluntariado',\r\n    create_button: 'Añadir',\r\n    edit_title_0: 'Modificar resumen anual del personal remunerado',\r\n    edit_title_1: 'Modificar resumen anual del voluntariado',\r\n    administration: 'Administración',\r\n    activities: 'Técnico de actividades',\r\n    concierge: 'Conserjería',\r\n    clean_up: 'Limpieza',\r\n    comunication: 'Comunicación',\r\n    accounting: 'Contabilidad',\r\n    maintenance: 'Mantenimiento',\r\n    management: 'Gerencia',\r\n    others: 'Otros',\r\n    total_0: 'Total personal remunerado',\r\n    total_1: 'Total personal voluntariado'\r\n  },\r\n  settings :{\r\n    data: 'Datos de la entidad',\r\n    data_desc: 'Nombre, correo electrónico, dirección, logotipo...',\r\n    ibans: 'Bancos',\r\n    ibans_desc: 'Configuración de cuentas bancarias',\r\n    payment_systems: 'TPV',\r\n    payment_systems_desc: 'Configuración de pasarelas bancarias',\r\n    postal_labels: 'Etiquetas postales',\r\n    postal_labels_desc: 'Configuración del formato de las etiquetas postales',\r\n    alerts: 'Alertas',\r\n    alerts_desc: 'Configuración de las alertas',\r\n    emails: 'Plantillas de correos electrónicos',\r\n    emails_desc: 'Contenidos de los correos electrónicos que reciben las personas',\r\n    emails_logs: 'Registro de envío de correos electrónicos',\r\n    emails_logs_desc: 'Consulta el registro de los envíos de correos electrónicos a los contactos',\r\n    users: 'Usuarios administradores',\r\n    users_desc: 'Personas y permisos de acceso',\r\n    maintenance: 'Acciones de Superadmin',\r\n    maintenance_desc: 'Procesos de base de datos...',\r\n    profile: 'Perfil de usuario',\r\n    profile_desc: 'Cambio de contraseña',\r\n    subscription: 'Suscripción',\r\n    subscription_desc: 'Cambiar la suscripción',\r\n    returns_tax: 'Comisión de devolución (€)',\r\n    bank_sufix: 'Sufijo ordenante',\r\n    change_password: 'Modificar contraseña',\r\n\r\n    add_member: 'Solicitud de alta de socios desde la web',\r\n    add_member_desc: 'Configuración del formulario de inscripción',\r\n    add_member_actived: 'Permitir la inscripción de socios desde la web',\r\n    add_member_logo: 'Mostrar la cabecera con el logotipo y los datos de la entidad en el formulario',\r\n    add_member_bank_data: 'Solicitar datos bancarios',\r\n    add_member_notification: 'Enviar notificación a la entidad al recibir una solicitud',\r\n    add_member_form_text: 'Texto explicativo del formulario (HTML)',\r\n    add_member_lopd: 'Texto legal sobre el tratamiento de los datos (HTML)',\r\n    add_member_form_sent: 'Texto de confirmación de formulario enviado (HTML)',\r\n    add_member_help: '¿Cómo mostramos el formulario en nuestra página web?',\r\n    add_member_help_1: 'Añade el siguiente código HTML a la página donde quieras mostrar el formulario de solicitud de socio:',\r\n    add_member_view_form: 'Acceder al formulario',\r\n    add_member_edit_form: 'Configurar formulario',\r\n    add_member_pending_list: 'Acceder al listado de solicitudes' ,\r\n\r\n    recercat_add_member: 'Formulario de solicitud del Carnet digital Recercat',\r\n    recercat_add_member_desc: 'Configuración del formulario',\r\n    recercat_add_member_actived: 'Formulario activo',\r\n    recercat_add_member_form_sent: 'Texto de confirmación de formulario enviado',\r\n    recercat_add_member_help_1: 'Añade el siguiente código HTML a la página donde quieras mostrar el formulario de solicitud de carnet',\r\n                \r\n    emails_subject: 'Asunto',\r\n    emails_content: 'Contenido del mensaje',\r\n    emails_message: 'Mensaje',\r\n    emails_attached: 'Archivos',\r\n    emails_copy: 'Copiar plantillas necesarias a las entidades',\r\n    emails_copy_desc: 'Se copiarán las plantillas de correos a aquellas entidades que aún no las tengan. Útil cuando se cree una nueva plantilla. Si alguna entidad ya la tiene, no se sobrescribirá.',\r\n    emails_vars: 'Variables disponibles',\r\n\r\n    ibans_copy: 'Crear registro de IBAN\\'s',\r\n    ibans_copy_desc: 'Se copiarán los IBAN\\'s actuales de todas las entidades a una tabla específica de IBAN\\'s (si aún no se había hecho), para poder trabajar a partir de ahora con múltiples IBAN\\'s por entidad.',\r\n    done: 'Acción realizada',\r\n\r\n    backup: 'Crear copia de seguridad',\r\n    backup_desc: 'Se realizará una copia de seguridad de la base de datos en este momento.',\r\n\r\n    remittances_subscriptions: 'Crear suscripción a Recibos para todas las entidades',\r\n    remittances_subscriptions_desc: 'Se creará una suscripción a Recibos de todas las entidades que tengan la suscripción Gestión de entidades, siempre y cuando no la tengan ya, y no sean la entidad Recercat.',\r\n\r\n    sa_postal_labels: 'Crear configuración de etiquetas postales para todas las entidades',\r\n    sa_postal_labels_desc: 'Se creará una configuración por defecto para todas las entidades que aún no tengan ninguna configuración de etiquetas configurada.',\r\n\r\n    emails_WELCOME: 'Correo de bienvenida de socio/a',\r\n    emails_WELCOME_desc : 'Plantilla por defecto para los nuevos clientes',\r\n    emails_WELCOME_vars : '%nom_entitat% | %nom% | %nom_complet% | %nom_grup% | %num_soci% | %data_ingres%',\r\n    \r\n    emails_GROUP_LEFT: \"Correo de baja de miembro\",\r\n    emails_GROUP_LEFT_desc : 'Plantilla por defecto para infromar la baja de socio',\r\n    emails_GROUP_LEFT_vars : '%nom_entitat% | %nom% | %nom_complet% | %nom_grup% | %num_soci% | %data_ingres% | %data_baixa%',\r\n        \r\n    emails_CLASSROOM_REQUEST: \"SISTEMA - Notificación de que se ha recibido una solicitud de espacio\",\r\n    emails_CLASSROOM_REQUEST_desc: \"Correo que reciben las entidades cuando hay una solicitud de uso de espacio\",\r\n    emails_CLASSROOM_REQUEST_vars : '%back_url% | %classroom_name% | %date_request% | %event_date% | %event_duration% | %event_recurrency% | %event_name% | %event_description% | %event_resources% | %comments% | %first_name% | %last_name_1% | %last_name_2% | %email% | %phone%',\r\n        \r\n    emails_ADDMEMBER_REQUEST : \"SISTEMA - Notificación de que se ha recibido una solicitud de socio\",\r\n    emails_ADDMEMBER_REQUEST_desc: 'Correo que reciben las entidades cuando hay una solicitud de alta de socio',\r\n    emails_ADDMEMBER_REQUEST_vars : '%back_url%',\r\n        \r\n    emails_UNDELIVERED_EMAILS: 'SISTEMA - Notificación de correos no enviados',\r\n    emails_UNDELIVERED_EMAILS_desc: 'Correo que reciben las entidades cuando algunos correos no se han podido enviar',\r\n    emails_UNDELIVERED_EMAILS_vars : '%emails_list%',\r\n        \r\n    emails_RESET_PSWD: 'SISTEMA - Notificación de recuperación de contraseña',\r\n    emails_RESET_PSWD_desc: 'Correo que reciben los usuarios administradores si olvidan la contraseña',\r\n    emails_RESET_PSWD_vars : '%reset_link%',\r\n                \r\n    emails_RECEIVE_RETURNED: 'Correo de recibo retornado (banco)',\r\n    emails_RECEIVE_RETURNED_desc: 'Plantilla por defecto para los nuevos clientes',\r\n    emails_RECEIVE_RETURNED_vars : '%nom% | %email_entitat%',\r\n        \r\n    emails_RECEIVE_RETURNED_CASH: 'Correo de recibo impagado (efectivo)',\r\n    emails_RECEIVE_RETURNED_CASH_desc: 'Plantilla por defecto para los nuevos clientes',\r\n    emails_RECEIVE_RETURNED_CASH_vars : '%nom% | %email_entitat%',\r\n        \r\n    emails_EVENT_INVITE: 'Correo de invitación a evento',\r\n    emails_EVENT_INVITE_desc: 'Plantilla por defecto para los nuevos clientes',\r\n    emails_EVENT_INVITE_vars : '%nom% | %nom_esdeveniment% | %activitat% | %data_ini% | %espai% | %email_entitat% | %url_event%',\r\n        \r\n    emails_EVENT_REMINDER: 'Correo de recordatorio de evento',\r\n    emails_EVENT_REMINDER_desc: 'Plantilla por defecto para los nuevos clientes',    \r\n    emails_EVENT_REMINDER_vars : '%nom% | %nom_esdeveniment% | %tipus% | %data_ini% | %data_fi% | %espai% | %url_event%',\r\n        \r\n    emails_ANNUARY_SEND: 'Correo con el enlace al formulario del anuario',\r\n    emails_ANNUARY_SEND_desc: 'Plantilla por defecto para los nuevos clientes',\r\n    emails_ANNUARY_SEND_vars : '%nom% | %year% | %date_expiration% | %link%',\r\n        \r\n    emails_ANNUARY_REMINDER: 'Correo de recordatorio con el enlace al formulario del anuario',\r\n    emails_ANNUARY_REMINDER_desc: 'Plantilla por defecto para los nuevos clientes',\r\n    emails_ANNUARY_REMINDER_vars :  '%nom% | %year% | %date_expiration% | %link%',\r\n        \r\n    emails_ANNUARY_CONFIRM: 'Correo de confirmación con el enlace a los datos introducidos',\r\n    emails_ANNUARY_CONFIRM_desc: 'Plantilla por defecto para los nuevos clientes',\r\n    emails_ANNUARY_CONFIRM_vars :  '%nom% | %year% | %date_expiration% | %link%',\r\n        \r\n    emails_DIGITAL_CARD_SEND: 'Correo de entrega del carnet digital',\r\n    emails_DIGITAL_CARD_SEND_desc: 'Plantilla por defecto para los nuevos clientes',\r\n    emails_DIGITAL_CARD_SEND_vars :  '%nom% | %nom_complet% | %nom_entitat% | %nom_grup% | %num_membre% | %google_wallet_link% | %google_wallet_image_and_link% | %apple_wallet_link% | %apple_wallet_image_and_link%',\r\n    \r\n    emails_RECERCAT_USER_VALIDATE_EMAIL: 'Correo de validación de la solicitud web',\r\n    emails_RECERCAT_USER_VALIDATE_EMAIL_desc: 'Plantilla por defecto para los nuevos clientes',\r\n    emails_RECERCAT_USER_VALIDATE_EMAIL_vars : '%nom_entitat% | %nom% | %nom_complet% | %nom_entitat% | %nom_centre% | %link%',\r\n        \r\n    emails_RECERCAT_USER_REQUEST_OK: 'Correo de solicitud aceptada',\r\n    emails_RECERCAT_USER_REQUEST_OK_desc: 'Plantilla por defecto para los nuevos clientes',\r\n    emails_RECERCAT_USER_REQUEST_OK_vars : '%nom_entitat% | %nom% | %nom_complet% | %nom_entitat% | %nom_centre% | %link%',\r\n        \r\n    emails_RECERCAT_USER_REQUEST_KO: 'Correo de solicitud errónea',\r\n    emails_RECERCAT_USER_REQUEST_KO_desc: 'Plantilla por defecto para los nuevos clientes',\r\n    emails_RECERCAT_USER_REQUEST_KO_vars : '%nom_entitat% | %nom% | %nom_complet% | %nom_entitat% | %nom_centre% | %link%',\r\n        \r\n    emails_RECERCAT_CARD_REVOKED_BY_IRMU_CENTER_DELETED: 'Correo de revocación de carnet debido a centro eliminado',\r\n    emails_RECERCAT_CARD_REVOKED_BY_IRMU_CENTER_DELETED_desc: 'Plantilla por defecto para los nuevos clientes',\r\n    emails_RECERCAT_CARD_REVOKED_BY_IRMU_CENTER_DELETED_vars : '%nom_entitat% | %nom% | %nom_complet% | %nom_entitat% | %nom_centre% | %link%',\r\n        \r\n    emails_RECERCAT_IRMU_RESUME: 'Correo de resumen (IRMU)',\r\n    emails_RECERCAT_IRMU_RESUME_desc: 'Plantilla por defecto para los nuevos clientes',\r\n    emails_RECERCAT_IRMU_RESUME_vars : '%nom_entitat% | %link% | %num_validats% | %num_pendents_irmu% | %num_pendents_centre%',\r\n        \r\n    emails_RECERCAT_CENTER_RESUME: 'Correo de resumen (centro)',\r\n    emails_RECERCAT_CENTER_RESUME_desc: 'Plantilla por defecto para los nuevos clientes',\r\n    emails_RECERCAT_CENTER_RESUME_vars : '%nom_entitat% | %nom_centre% | %num_membre% | %link% | %num_validats% | %num_pendents_irmu% | %num_pendents_centre%',\r\n    \r\n    emails_RECERCAT_REQUEST_DENIED_BY_IRMU : 'Correo de solicitud denegada desde IRMU',\r\n    emails_RECERCAT_REQUEST_DENIED_BY_IRMU_desc : 'Plantilla por defecto para nuevos clientes',\r\n    emails_RECERCAT_REQUEST_DENIED_BY_IRMU_vars : '%nom% | %nom_complet% | %nom_entitat% | %nom_centre%',\r\n        \r\n    emails_RECERCAT_REQUEST_DENIED_BY_CENTER: 'Correo de solicitud denegada desde el centro',\r\n    emails_RECERCAT_REQUEST_DENIED_BY_CENTER_desc: 'Plantilla por defecto para los nuevos clientes',\r\n    emails_RECERCAT_REQUEST_DENIED_BY_CENTER_vars : '%nom% | %nom_complet% | %nom_entitat% | %nom_centre%',\r\n        \r\n    emails_RECERCAT_CARD_REVOKED_BY_IRMU: 'Correo de carnet revocado desde el IRMU',\r\n    emails_RECERCAT_CARD_REVOKED_BY_IRMU_desc: 'Plantilla por defecto para los nuevos clientes',    \r\n    emails_RECERCAT_CARD_REVOKED_BY_IRMU_vars : '%nom% | %nom_complet% | %nom_entitat% | %nom_centre% | %num_membre%',\r\n        \r\n    emails_RECERCAT_CARD_REVOKED_BY_CENTER: 'Correo de carnet revocado desde el centro',\r\n    emails_RECERCAT_CARD_REVOKED_BY_CENTER_desc: 'Plantilla por defecto para los nuevos clientes',\r\n    emails_RECERCAT_CARD_REVOKED_BY_CENTER_vars : '%nom% | %nom_complet% | %nom_entitat% | %nom_centre% | %num_membre%',\r\n                \r\n    emails_ANNUARY_FORM_ANSWERED: 'FEDERACIÓN - Correo de notificación de respuesta de formulario del anuario',\r\n    emails_ANNUARY_FORM_ANSWERED_desc: 'Solo lo recibe la FAC',\r\n    emails_ANNUARY_FORM_ANSWERED_vars :  '%name% | %year%',\r\n        \r\n    emails_ANNUARY_FORM_NUM_MEMBERS: 'FEDERACIÓN - Correo de notificación de cambio de número de socios',\r\n    emails_ANNUARY_FORM_NUM_MEMBERS_desc: 'Solo lo recibe la FAC',\r\n    emails_ANNUARY_FORM_NUM_MEMBERS_vars :  '%nom% | %year% | %old_num_members% | %new_num_members%',\r\n    \r\n    emails_DONATIONS_USERS_CONFIRMATION: 'Donaciones: Correo de confirmación de una donación',\r\n    emails_DONATIONS_USERS_CONFIRMATION_desc: 'Lo recibe el donante automáticamente en el momento de hacer la donación a través de la web',\r\n    emails_DONATIONS_USERS_CONFIRMATION_vars :  '%nom% | %nom_complet% | %referencia% | %amount% | %nom_projecte% | %date_time% | %entitat_projecte%',\r\n    \r\n    emails_DONATIONS_USERS_PRE_CONFIRMATION_TRANSFER: 'Donaciones: Correo con instrucciones para hacer la transferencia bancaria',\r\n    emails_DONATIONS_USERS_PRE_CONFIRMATION_TRANSFER_desc: 'Lo recibe el donante automáticamente en el momento de hacer la donación por transferencia bancaria',\r\n    emails_DONATIONS_USERS_PRE_CONFIRMATION_TRANSFER_vars :  '%nom% | %nom_complet% | %referencia% | %amount% | %bank_ordering% | %bank_iban% | %bank_swift% | %nom_projecte% | %date_time% | %entitat_projecte%',\r\n    \r\n    emails_DONATIONS_USERS_CERTIFICATE: 'Correo de envío del certificado de donación',\r\n    emails_DONATIONS_USERS_CERTIFICATE_desc: 'Lo recibe el donante',\r\n    emails_DONATIONS_USERS_CERTIFICATE_vars : '%year% | %nom% | %nom_complet% | %nif% | %total_sum_donations%',\r\n    \r\n    emails_DONATIONS_RESUME_ASSOCIATION: 'Donaciones: Correo de resumen de las donaciones',\r\n    emails_DONATIONS_RESUME_ASSOCIATION_desc: 'Lo reciben semanalmente las entidades. Un correo por cada proyecto de donaciones activas',\r\n    emails_DONATIONS_RESUME_ASSOCIATION_vars : '%project_name% | %amount% | %count_donations% | %sum_donations% | %sum_donations_percent% | %avg_donations% | %date_start% | %date_finish% | %if_target_by_date_ini% | %if_target_by_date_end%',\r\n    \r\n    emails_DONATIONS_RESUME_FAC: 'Donaciones: Correo de resumen de las donaciones',\r\n    emails_DONATIONS_RESUME_FAC_desc: 'Lo recibe semanalmente la FAC, con el resumen de todos los proyectos activos',\r\n    emails_DONATIONS_RESUME_FAC_vars : '%iteration_project_ini% | %iteration_project_end% | %total_projects% | %total_sum_donations% | %total_count_donations% | %total_avg_donations% | %association_name% | %project_name% | %amount% | %count_donations% | %sum_donations% | %sum_donations_percent% | %avg_donations% | %date_start% | %date_finish% | %if_target_by_date_ini% | %if_target_by_date_end%',\r\n      \r\n    emails_DONATIONS_VALIDATE_REQUEST: 'Donaciones: Correo de solicitud de validación',\r\n    emails_DONATIONS_VALIDATE_REQUEST_desc: 'Lo recibe la FAC cuando la entidad solicita validar el proyecto',\r\n    emails_DONATIONS_VALIDATE_REQUEST_vars : '%association_name% | %project_name%',\r\n    \r\n    emails_DONATIONS_VALIDATE_ACCEPTED: 'Donaciones: Correo de validación de proyecto',\r\n    emails_DONATIONS_VALIDATE_ACCEPTED_desc: 'Lo recibe la entidad cuando la FAC ha validado el proyecto.',\r\n    emails_DONATIONS_VALIDATE_ACCEPTED_vars : '%association_name% | %project_name%',\r\n    \r\n    emails_DONATIONS_VALIDATE_REJECTED: 'Donaciones: Correo de denegación de validación de proyecto',\r\n    emails_DONATIONS_VALIDATE_REJECTED_desc: 'Lo recibe la entidad cuando la FAC ha rechazado el proyecto.',\r\n    emails_DONATIONS_VALIDATE_REJECTED_vars : '%association_name% | %project_name%',\r\n        \r\n    emails_NEW_ADMIN: 'SISTEMA - Correo de invitación de administrador (primera vez)',  \r\n    emails_NEW_ADMIN_desc: 'Lo reciben los nuevos administradores',\r\n    emails_NEW_ADMIN_vars : '%back_url% | %auth_user% | %auth_pswd% | %association_name%',  \r\n    \r\n    emails_NEW_ADMIN_PERMISSION : 'SISTEMA - Correo de invitación de administrador',  \r\n    emails_NEW_ADMIN_PERMISSION_desc : 'Lo reciben los administradores que ya tienen un permiso previo.',  \r\n    emails_NEW_ADMIN_PERMISSION_vars : '%back_url% | %auth_user% | %association_name%',  \r\n    \r\n    emails_ASSOCIATIONS_TRIAL: 'SISTEMA - Correo de soporte durante el período de prueba',  \r\n    emails_ASSOCIATIONS_TRIAL_desc: 'Se envía manualmente a las asociaciones durante el período de prueba', \r\n    emails_ASSOCIATIONS_TRIAL_vars : '%nom% | %email%',  \r\n    \r\n    emails_ASSOCIATIONS_BEGIN: 'SISTEMA - Correo de inicio de la suscripción',  \r\n    emails_ASSOCIATIONS_BEGIN_desc: 'Se envía manualmente a las asociaciones',\r\n    emails_ASSOCIATIONS_BEGIN_vars : '%nom% | %email%',  \r\n    \r\n    emails_ASSOCIATIONS_END: 'SISTEMA - Correo de baja de la suscripción',  \r\n    emails_ASSOCIATIONS_END_desc: 'Se envía manualmente a las asociaciones',\r\n    emails_ASSOCIATIONS_END_vars : '%nom% | %email%',  \r\n    \r\n    emails_ALERT: 'SISTEMA - Alertas de las entidades',\r\n    emails_ALERT_desc: 'Notificación de alerta',\r\n    emails_ALERT_vars : '%association_name% | %message% | %date_alert%',\r\n             \r\n    emails_SKELETON: 'Esqueleto de todos los correos',\r\n    emails_SKELETON_desc: 'Plantilla por defecto para los nuevos clientes',\r\n    emails_SKELETON_vars : '%tema% | %contingut% | %nom_entitat% | %email_entitat% | %logotip%',\r\n        \r\n   emails_SA_SKELETON: 'SISTEMA - Esqueleto de todos los correos',\r\n    emails_SA_SKELETON_desc: 'Esqueleto de todos los correos enviados desde el sistema',\r\n    emails_SA_SKELETON_vars : '%tema% | %contingut%',\r\n        \r\n    emails_headers: 'Cabecera',\r\n    emails_headers_sender_name: 'Nombre del remitente',\r\n    emails_headers_sender_email: 'Correo electrónico del remitente',\r\n    emails_headers_reply_to: 'Responder a',\r\n    emails_headers_cc: 'Cc',\r\n    emails_headers_bcc: 'Bcc',\r\n    emails_headers_vars : '%nom_entitat% | %email_entitat%', \r\n        \r\n    classrooms_requests: 'Solicitud de uso de espacios desde la web',\r\n    classrooms_requests_desc: 'Configuración de la solicitud de espacios',\r\n    classrooms_requests_actived: 'Permitir la solicitud de uso desde la web',\r\n    classrooms_requests_logo: 'Mostrar la cabecera con el logotipo y los datos de la entidad en el formulario',\r\n    classrooms_requests_notification: 'Enviar notificación a la entidad al recibir una solicitud',\r\n    classrooms_requests_text: 'Texto en la cabecera de la página de resumen de espacios',\r\n    classrooms_requests_lopd: 'Texto legal de política de protección de datos',\r\n    classrooms_requests_form_sent: 'Texto de confirmación de formulario enviado',\r\n    classrooms_requests_help: '¿Cómo mostramos los espacios en nuestra página web?',\r\n    classrooms_requests_help_1: 'Añade el siguiente código HTML en la página donde quieras mostrar los espacios de la entidad:',\r\n    classrooms_requests_view_form: 'Acceder a la web',\r\n    \r\n    donations_certificates: 'Certificado de donaciones',\r\n    donations_certificates_desc: 'Configuración del contenido del certificado de donación (HTML)',\r\n    donations_certificates_donations_users_certificate: 'Contenido del certificado de donación',\r\n    donations_certificates_donations_users_certificate_vars_title: 'Variables disponibles',\r\n    \r\n    donations_certificates_donations_users_certificate_vars: '%year% | %entitat_nom% | %entitat_address% | %entitat_zip% | %entitat_city% | %entitat_country% | %entitat_nif% | %entitat_email% | %entitat_firma% | %nom% | %cognom1% | %cognom2% | %email% | %nom_complet% | %nif% | %address% | %zip% | %phone% | %city% | %country% | %iteration_donations_ini% | %amount% | %date_time% | %nom_projecte% | %justificacio_projecte% | %iteration_donations_end% | %total_sum_donations% | %data_certificat%',\r\n    donations_certificates_header: 'Cabecera',\r\n    donations_certificates_sign: 'Firma del responsable',\r\n    donations_certificates_footer: 'Pie del certificado',\r\n    \r\n    docs: 'Documentos públicos',\r\n    docs_desc: 'Imágenes, documentos... de la entidad accesibles a través de una URL pública',\r\n    \r\n   donations_own: 'Página de donativos',\r\n    donations_own_desc: 'Configuración del diseño de la página de donativos',\r\n    donations_own_donations_own_header: 'Cabecera',\r\n    donations_own_donations_own_footer: 'Pie',\r\n    donations_own_donations_own_privacy: 'Política de privacidad',\r\n    donations_own_donations_own_terms: 'Términos y condiciones',\r\n    donations_own_donations_own_fiscal: 'Beneficios fiscales',\r\n    donations_own_donations_own_css: 'CSS adicional',\r\n            \r\n    annuary_form: 'Formulario para realizar el anuario',\r\n    annuary_form_desc: 'Configuración del formulario para realizar el anuario',\r\n    annuary_form_logo: 'Mostrar la cabecera con el logotipo y los datos de la FAC en el formulario',\r\n    annuary_form_notification: 'Enviar notificación a la FAC al recibir una respuesta',\r\n    annuary_form_notification_association: 'Enviar notificación a la entidad al responder el formulario con un enlace a sus respuestas',\r\n    annuary_form_notification_num_members: 'Enviar notificación a la FAC al modificar el número de miembros de una entidad',\r\n    annuary_form_text: 'Texto en la cabecera de la página',\r\n    annuary_form_lopd: 'Texto legal de política de protección de datos',\r\n    annuary_form_sent: 'Texto de confirmación de formulario enviado',\r\n        \r\n    templates_copied: 'Se han copiado las plantillas a todas las entidades',\r\n\r\n    profile_user_tab: 'Usuario',\r\n    profile_pswd_tab: 'Contraseña',\r\n    profile_password: 'Nueva contraseña',\r\n    profile_password_confirmation: 'Confirmar contraseña',\r\n    profile_changed: 'Se ha modificado el perfil del usuario',\r\n        \r\n        \r\n        \r\n  },\r\n  contacts : {\r\n    title: 'Contactos de la FAC',\r\n    description: 'En esta sección encontrarás una base de datos general y compartida para todos los ateneos con el objetivo de ayudaros a mantener actualizados los contactos de administraciones y contactos de interés. <br/>Os agradeceremos que si encontráis algún error nos lo hagáis saber para poder corregirlo lo antes posible.'\r\n  },\r\n  add_member : {\r\n    association_not_found: 'No se ha encontrado la entidad',\r\n    form_not_actived: 'Disculpen las molestias, el formulario no está activo.',\r\n    form_title: 'Solicitud de alta de socio/a',\r\n    recercat_form_title: 'Solicitud de carnet Recercat',\r\n    recercat_association_not_found: 'La página no se ha encontrado',\r\n    recercat_request_send: 'Enviar solicitud',\r\n    form_lopd: 'Consiento el tratamiento de los datos para los fines descritos en el siguiente enlace:',\r\n    form_lopd_validator: 'Debe consentir el tratamiento de los datos',\r\n    lopd: 'Tratamiento de los datos',\r\n  },\r\n  classrooms_requests : {\r\n    association_not_found: 'No se ha encontrado la entidad o el espacio no está disponible',\r\n    form_not_actived: 'No hay espacios disponibles',\r\n    form_title: 'Nuestros espacios',\r\n    form_request_title: 'Solicitud de uso del espacio',\r\n    form_event_data_title: 'Datos de la actividad:',\r\n    form_requester_data_title: 'Datos del solicitante:',\r\n    form_event_date: 'Fecha y hora',\r\n    form_event_duration: 'Duración (horas)',\r\n    form_event_recurrency: '¿Es una actividad recurrente? Indica todas las fechas.',\r\n    form_event_name: 'Nombre de la actividad',\r\n    form_event_description: 'Descripción',\r\n    form_event_resources: 'Recursos que se necesitan para la actividad',\r\n    form_event_comments: 'Otros comentarios',\r\n    form_event_phone: 'Teléfono de contacto',\r\n    form_send: 'Solicitar',\r\n    form_doc: 'Ver ficha técnica',\r\n    form_doc_title: 'ficha_técnica',\r\n  },\r\n  emails: {\r\n    main_menu_title: 'Correos electrónicos enviados',\r\n    create: 'Agregar correos',\r\n    type: 'Plantilla',\r\n    date_ordered: 'Fecha',\r\n    from: 'Remitente',\r\n    to: 'Destinatario',\r\n    subject: 'Asunto',\r\n    content: 'Contenido',\r\n    docs: 'Adjuntos',\r\n    date_sent: 'Fecha',\r\n    status: 'Estado',\r\n    error_message: 'Mensaje de error',\r\n    status_0: 'No enviado',\r\n    status_1: 'Enviando al servidor de correo...',\r\n    status_2: 'Error en el servidor de correo',\r\n    status_3: 'Enviado',\r\n    status_4: 'Correo rechazado',\r\n    exporter_file_name: 'emails',\r\n    contact: 'Contacto',\r\n    only_not_sent: 'Solo correos no enviados',\r\n  }, \r\n  custom_fields: {\r\n    main_menu_title: 'Campos adicionales',\r\n    main_menu_desc: 'Administra campos adicionales para almacenar más datos de los contactos',\r\n    target_2: 'Datos de contactos',    \r\n    title_2: 'Campos adicionales',\r\n    target_31: 'Datos generales de federación',\r\n    title_31: 'Campos adicionales generales de Federación',\r\n    target_50: 'Datos deportivos de la federación',\r\n    title_50: 'Área deportiva y de actividades de la salud y el bienestar',\r\n    create: 'Añadir campo adicional',        \r\n    name: 'Nombre',\r\n    type: 'Tipo de campo',\r\n    type_1: 'Texto corto',\r\n    type_2: 'Texto largo',\r\n    type_3: 'Texto con formato',\r\n    type_4: 'Numérico',\r\n    type_5: 'Fecha',\r\n    type_6: 'Booleano S/N',\r\n    type_7: 'Selección',\r\n    type_8: 'Selección múltiple',\r\n    required: 'Relleno obligatorio',\r\n    max_length: 'Máx. longitud',\r\n    default_value: 'Valor por defecto',\r\n    actived: 'Visible',    \r\n    priority: 'Orden',\r\n    form_web: 'Visible en el formulario de alta de socio',\r\n    form_annuary: 'Visible en el formulario del anuario',\r\n    options: 'Opciones',\r\n    delete_title: '¿Seguro que quieres borrar el campo adicional?',\r\n    delete_ask: 'Se eliminarán todos los datos de los contactos introducidos en este campo adicional.',\r\n  }, \r\n  custom_fields_options: {\r\n    create: 'Añadir opción',    \r\n    name: 'Opciones',\r\n    priority: 'Orden',\r\n    edit: 'Editar opción',\r\n    delete_title: '¿Seguro que quieres borrar esta opción?',\r\n    delete_ask: 'Se eliminarán todos los datos de los contactos introducidos con esta opción.',\r\n  },\r\n  resources : {\r\n    users : {\r\n      name: 'Contactos'\r\n    },\r\n    events : {\r\n      name: 'Actividades'\r\n    },\r\n    groups : {\r\n      name: 'Grupos'\r\n    },\r\n    real_state: {\r\n      name: 'Inmuebles'      \r\n    },\r\n    agreements: {\r\n      name: 'Convenios'\r\n    },\r\n    insurances: {\r\n      name: 'Seguros'\r\n    }\r\n  },\r\n  'ra-tree' : {\r\n    action : {\r\n      add_root : 'Añadir grupo'\r\n    },\r\n    new_node: 'Nuevo nodo',\r\n    item_moved : 'Se ha desplazado el grupo'\r\n  },\r\n  'ra-search' : {\r\n    recent : 'Búsquedas recientes'\r\n  },\r\n\r\n\r\n};\r\n\r\n","import { format } from 'date-fns';\r\nimport { ca } from 'date-fns/locale';\r\n\r\nimport {\r\n  DateField, FunctionField, useNotify, Button\r\n} from 'react-admin';\r\n\r\nimport LinearProgress from '@mui/material/LinearProgress';\r\nimport Box from '@material-ui/core/Box';\r\nimport ContentCopyIcon from '@mui/icons-material/ContentCopy';\r\nimport Typography from '@mui/material/Typography';\r\n\r\nimport { useTranslate  } from '../common/language';\r\nimport { getLanguageFromStorage } from '../common/constants';\r\n\r\nexport const setActivePermissionData = (permission_id) => {\r\n        \r\n    var permissions = JSON.parse(localStorage.permissions);\r\n    \r\n    let indexPermission = 0;\r\n    for (let i=0;i<permissions.length;i++)\r\n    {\r\n        if (permissions[i].id===permission_id)\r\n        {\r\n            indexPermission = i;\r\n        }                \r\n    }\r\n                        \r\n    if (permissions.length > 0)\r\n    {\r\n        localStorage.setItem('associations_id', permissions[indexPermission].associations_id );\r\n        localStorage.setItem('associations_name', permissions[indexPermission].associations_name );  \r\n        localStorage.setItem('permissions_groups', permissions[indexPermission].permissions_groups );\r\n        localStorage.setItem('members_group_id', permissions[indexPermission].members_group_id );\r\n        localStorage.setItem('members_pending_group_id', permissions[indexPermission].members_pending_group_id );\r\n        localStorage.setItem('associations_logo_doc', permissions[indexPermission].associations_logo_doc  );\r\n        localStorage.setItem('subscriptions', JSON.stringify( permissions[indexPermission].subscriptions ) );\r\n        localStorage.setItem('active_permission', permissions[indexPermission].id );\r\n    }\r\n\r\n}\r\n   \r\n  \r\nexport const subscriptionModule = (module,option) => {\r\n    \r\n  let found = false;\r\n    \r\n  if (localStorage.active_permission && localStorage.active_permission > 0)  \r\n  {        \r\n        var permissions = JSON.parse(localStorage.permissions);\r\n        \r\n        let indexPermission = 0;\r\n        for (let i=0;i<permissions.length;i++)\r\n        {\r\n            if (permissions[i].id==localStorage.active_permission)\r\n            {\r\n                indexPermission = i;\r\n            }                \r\n        }\r\n      \r\n        if (permissions[indexPermission])\r\n        {\r\n          if (option == null)\r\n          {\r\n            for (let item of permissions[indexPermission].subscriptions) {\r\n              if (item.modules.public_id === module) found = true;\r\n            }\r\n          }\r\n          else\r\n          {\r\n            for (let item of permissions[indexPermission].subscriptions) {\r\n              if (item.modules.public_id === module && item.modules_options.public_id === option) found = true;\r\n            }\r\n          }\r\n        }\r\n  }\r\n    \r\n  return found;\r\n};\r\n\r\nexport const dateEventToCatalan = (dateStart,dateFinish,translate) => {\r\n    \r\n  const dateStartDate = new Date(dateStart);\r\n  const dateFinishDate = new Date(dateFinish);\r\n    \r\n  const dataSenseHora1 = new Date(dateStartDate.getFullYear(), dateStartDate.getMonth(), dateStartDate.getDate());\r\n  const dataSenseHora2 = new Date(dateFinishDate.getFullYear(), dateFinishDate.getMonth(), dateFinishDate.getDate());\r\n\r\n  let strDate= '';\r\n  if (dataSenseHora1 < dataSenseHora2 || dataSenseHora1 > dataSenseHora2 ) \r\n  {\r\n    strDate=translate('common.date_from') + format(dateStartDate, 'EEEE, dd \\'de\\' MMMM \\'de\\' yyyy', { locale: ca }) + translate('common.date_to') + format(dateFinishDate, 'dd \\'de\\' MMMM', { locale: ca });\r\n  } else {\r\n    strDate=format(dateStartDate, 'EEEE, dd \\'de\\' MMMM \\'de\\' yyyy', { locale: ca }).replace('di','Di');\r\n  }\r\n    \r\n  return strDate;\r\n};\r\n\r\nexport const timeEventToCatalan = (dateStart,translate) => {\r\n    \r\n  const dateStartDate = new Date(dateStart);    \r\n  return format(dateStartDate, '\\'' + translate('common.time_to') + ' \\'HH\\':\\'mm', { locale: ca });\r\n};\r\n\r\nexport const dateOnlyToCatalan = (dateStart) => {\r\n  \r\n  if (dateStart)\r\n  {\r\n    const dateStartDate = new Date(dateStart);    \r\n    return format(dateStartDate, 'dd/MM/yyyy', { locale: ca });\r\n  }\r\n  else\r\n      return '';\r\n};\r\n\r\nexport const dateAndTimeToCatalan = (dateStart) => {\r\n  \r\n  if (dateStart)\r\n  {\r\n    const dateStartDate = new Date(dateStart);    \r\n    return format(dateStartDate, 'dd/MM/yyyy HH:mm', { locale: ca });\r\n  }\r\n  else\r\n      return '';\r\n};\r\n\r\n\r\nexport const structArrayToIdList = (arrayStruct) => {\r\n    var arrayIds = [];\r\n    for (var i = 0; i < arrayStruct.length; i++) {\r\n      arrayIds.push(arrayStruct[i].id);\r\n    }\r\n    return arrayIds.join(',');\r\n}\r\n\r\n\r\nexport const dateParser = value => {      \r\n    if (value == null || value === '') return '';        \r\n    return toIsoString(new Date(value));\r\n}\r\n    \r\nexport const toIsoString = date => {    \r\n    var tzo = -date.getTimezoneOffset(),\r\n        dif = tzo >= 0 ? '+' : '-',\r\n        pad = function(num) {\r\n            return (num < 10 ? '0' : '') + num;\r\n        };\r\n\r\n    return date.getFullYear() +\r\n        '-' + pad(date.getMonth() + 1) +\r\n        '-' + pad(date.getDate()) +\r\n        'T' + pad(date.getHours()) +\r\n        ':' + pad(date.getMinutes()) +\r\n        ':' + pad(date.getSeconds()) +\r\n        dif + pad(Math.floor(Math.abs(tzo) / 60)) +\r\n        ':' + pad(Math.abs(tzo) % 60);\r\n}\r\n\r\nexport const datesLastMonth = () => {\r\n    \r\n    // Obtener la fecha actual\r\n    const today = new Date();\r\n    \r\n    // Obtener el primer día del mes pasado\r\n    const firstDayLastMonth = new Date(today.getFullYear(), today.getMonth() - 1, 1);\r\n    \r\n    // Obtener el último día del mes pasado\r\n    const lastDayLastMonth = new Date(today.getFullYear(), today.getMonth(), 0);\r\n    \r\n    return {\r\n        firstDayLastMonth: firstDayLastMonth,\r\n        lastDayLastMonth: lastDayLastMonth\r\n    };\r\n\r\n}\r\n\r\n\r\n\r\nexport const LinearProgressWithLabel = props => {      \r\n  let linearProgressValue = props.value > 100 ? 100 : props.value;\r\n  return (\r\n    <Box sx={{ display: 'flex', alignItems: 'center' }}>\r\n      <Box sx={{ width: '100%', mr: 1 }}>\r\n        <LinearProgress variant=\"determinate\" value={linearProgressValue} className=\"donations_linear_progress\" />\r\n      </Box>\r\n      <Box sx={{ minWidth: 35 }}>\r\n        <Typography variant=\"body2\" color=\"text.secondary\">{`${Math.round(props.value)}%`}</Typography>\r\n      </Box>\r\n    </Box>\r\n  );\r\n}\r\n\r\nexport const RemainingTime = ({nSeconds, remainText, agoText}) => {  \r\n    \r\n    const translate = useTranslate();  \r\n        \r\n    let days = Math.floor(nSeconds / ( 60 * 60 * 24));\r\n    let hours = Math.floor(nSeconds / (60*60));\r\n    let minutes = Math.floor(nSeconds / (60));\r\n               \r\n    let retValue = '';\r\n    let remain = translate('public_donations_projects.remain');\r\n    \r\n    if (nSeconds > 2*60*60*24)\r\n        retValue = days + ' ' + translate('donations_projects.days');\r\n    else if (nSeconds > 60*60*24)\r\n    {\r\n        retValue = days + ' ' + translate('donations_projects.day');\r\n        remain = translate('public_donations_projects.remain_1');\r\n    }\r\n    else if (nSeconds > 2*60*60)\r\n        retValue = hours + ' ' + translate('donations_projects.hours');\r\n    else if (nSeconds > 60*60)\r\n    {\r\n        retValue = hours + ' ' + translate('donations_projects.hour');\r\n        remain = translate('public_donations_projects.remain_1');\r\n    }\r\n    else if (nSeconds > 2*60)\r\n        retValue = minutes + ' ' + translate('donations_projects.minutes');\r\n    else if (nSeconds > 60)\r\n    {\r\n        retValue = minutes + ' ' + translate('donations_projects.minute');\r\n        remain = translate('public_donations_projects.remain_1');\r\n    }\r\n    else if (nSeconds > 1)\r\n        retValue = nSeconds + ' ' + translate('donations_projects.seconds');\r\n    else if (nSeconds > 0)\r\n    {\r\n        retValue = nSeconds + ' ' + translate('donations_projects.second');\r\n        remain = translate('public_donations_projects.remain_1');\r\n    }\r\n    \r\n    if (remainText && retValue.length )\r\n    {        \r\n        return (<><span className=\"fs-14 grey8\">{remain}</span><br/><span className=\"fs-20 bold\">{retValue}</span></>);\r\n    }\r\n    if (agoText && retValue.length )\r\n    {        \r\n        return (<><span className=\"fs-14 grey8\">{translate('public_donations_projects.ago')} {retValue}</span></>);\r\n    }\r\n    \r\n    return (<span>{retValue}</span>);\r\n    \r\n}\r\n\r\nexport const DateTimeField = props => {      \r\n  \r\n  const translate = useTranslate();  \r\n              \r\n  return (\r\n    <FunctionField render={record => dateAndTimeToCatalan(record[props.source], translate) } label={props.label}  sortable={false}  />\r\n  );\r\n}\r\n\r\nexport const DatagridNoResults = props => {\r\n    \r\n    const translate = useTranslate(); \r\n    \r\n    return (<center><br />{translate('reports.no_results')}<br /><br /></center>);\r\n}\r\n\r\nexport const formatFloat = (number) => {\r\n    return number.toLocaleString('es-ES', { minimumFractionDigits: 0, maximumFractionDigits: 2 });\r\n}\r\n\r\n\r\nexport const CopyToClipboard = ({ ...props }) => {\r\n  \r\n  const notify = useNotify();\r\n  const translate = useTranslate();  \r\n    \r\n  const handleClick = (textToCopy) => {        \r\n          \r\n    navigator.clipboard.writeText(textToCopy)\r\n      .then(() => {\r\n        notify(translate('utils.copy_clipboard_success'), 'success');\r\n      })\r\n      .catch(err => {\r\n        notify(translate('utils.copy_clipboard_error'), 'error');\r\n      });\r\n      \r\n  };\r\n  \r\n  return (\r\n       <Button onClick={handleClick.bind(this, props.message )} label={props.label} startIcon={<ContentCopyIcon />} />\r\n  );\r\n  \r\n}","// in src/posts.js\r\n//import * as React from \"react\";\r\nimport React, { useState } from 'react';\r\n\r\n\r\nimport { useEffect  } from 'react';\r\n\r\nimport {\r\n  List,\r\n  Button,\r\n  Datagrid,\r\n  TextField,\r\n  DeleteButton, \r\n  ReferenceManyField, \r\n  SingleFieldList,\r\n  useTranslate,\r\n  FormWithRedirect,\r\n  TextInput,\r\n  SaveButton,\r\n  ResourceContextProvider,useRefresh, FunctionField, useUpdate, useNotify\r\n} from 'react-admin';\r\n\r\nimport Box from '@material-ui/core/Box';\r\n\r\nimport Dialog from '@material-ui/core/Dialog';\r\nimport DialogTitle from '@material-ui/core/DialogTitle';\r\nimport DialogContent from '@material-ui/core/DialogContent';\r\nimport DialogActions from '@material-ui/core/DialogActions';\r\nimport EditIcon from '@material-ui/icons/Edit';\r\nimport IconContentEdit from '@material-ui/icons/Edit';\r\nimport DeleteIcon from '@material-ui/icons/Delete';\r\nimport PublicIcon from '@mui/icons-material/Public';\r\nimport KeyboardArrowDownIcon from '@mui/icons-material/KeyboardArrowDown';\r\nimport KeyboardArrowUpIcon from '@mui/icons-material/KeyboardArrowUp';\r\nimport AttachEmailIcon from '@mui/icons-material/AttachEmail';\r\nimport CameraAltIcon from '@mui/icons-material/CameraAlt';\r\nimport IconCancel from '@material-ui/icons/Cancel';\r\n\r\nimport Grid from '@mui/material/Grid';\r\n\r\nimport { validateMaxLength, validateInteger  } from './../components/Validator';\r\n\r\nimport { DocsCreateButton } from './../components/DocsCreateButton';\r\nimport { DocsCameraButton, DocsDeleteButton } from './../components/DocsPhotoButton';\r\nimport { DownloadButtonAuth } from './../components/DownloadButtonAuth';\r\n\r\nimport { apiUrl, apiOrigin, apiDefaultLanguage, targets, targetsResources  } from './../common/constants';\r\nimport { CopyToClipboard } from './../common/utils';\r\n\r\nimport './../common/styles.css';\r\n\r\nimport { FileIcon, defaultStyles  } from 'react-file-icon';\r\n\r\n\r\nexport const DocsList = ({ target, items_id , ...props }) => {\r\n\r\n  const translate = useTranslate();  \r\n  const notify = useNotify();\r\n\r\n  let strTarget = targetsResources[target];\r\n  let strRedirect =  `/${strTarget}/${items_id}/docs`;\r\n  let sort = { field: 'id', order: 'DESC' };\r\n\r\n  if (target === targets.USER_PHOTO || target === targets.TEMPLATE)\r\n  {\r\n    strRedirect =  `/${strTarget}/${items_id}`;\r\n  }\r\n  if (target === targets.CLASSROOM_PHOTO || target === targets.USER_CLASSROOM_PHOTO)\r\n  {\r\n    strRedirect =  `/${strTarget}/${items_id}/photos`;\r\n    sort = { field: 'priority', order: 'ASC' };\r\n  }\r\n  if (target === targets.DOCUMENT_FAC)\r\n  {\r\n    strRedirect =  `/${strTarget}`;\r\n    sort = { field: 'priority', order: 'DESC' };\r\n  }\r\n  if (target === targets.EVENT_IMAGE)\r\n  {\r\n    strRedirect =  `/${strTarget}/${items_id}/images`;\r\n    sort = { field: 'priority', order: 'ASC' };\r\n  }\r\n  if (target === targets.USER_MORE_PHOTOS)\r\n  {\r\n    strRedirect =  `/${strTarget}/${items_id}/images`;\r\n    sort = { field: 'priority', order: 'ASC' };\r\n  }\r\n  if (target === targets.DONATION_PROJECT_IMAGE)\r\n  {\r\n    strRedirect =  `/${strTarget}/${items_id}/images`;\r\n    sort = { field: 'priority', order: 'ASC' };\r\n  }\r\n  if (target === targets.SETTINGS_DOCS)\r\n  {\r\n    strRedirect =  `/${strTarget}`;\r\n    sort = { field: 'priority', order: 'ASC' };\r\n  }\r\n      \r\n    \r\n  let pagination=false;\r\n  let perPage=1000;\r\n    \r\n  if (target === targets.GROUP)\r\n  {\r\n    let pagination=false;\r\n    let perPage=1000;\r\n  }\r\n\r\n  const handleClickView = (textToCopy) => {        \r\n          \r\n    navigator.clipboard.writeText(textToCopy)\r\n      .then(() => {\r\n        notify(translate('docs.copy_link_done'), 'success');\r\n      })\r\n      .catch(err => {\r\n        notify(translate('docs.copy_link_error'), 'error');\r\n      });\r\n      \r\n  };\r\n  \r\n  return (  \r\n    <>  \r\n\r\n      <ResourceContextProvider value=\"docs\">\r\n        <List              \r\n          basePath=\"/docs\" \r\n          filter={{ target : target, items_id : items_id }}\r\n          actions={<DocsCreateButton target={target} items_id={items_id} topToolbar={true} label={translate('docs.create')} /> } \r\n          empty={<DocsCreateButton target={target} items_id={items_id} topToolbar={true} label={translate('docs.create')} /> }     \r\n          sort={sort} \r\n          label=\"\"  \r\n          title=\"\"  \r\n          bulkActionButtons={false} \r\n          pagination={pagination}\r\n          perPage={perPage}\r\n        >\r\n          <Datagrid>                    \r\n                     \r\n            <FunctionField label=\"\" render={renderFile} />\r\n            <TextField source=\"name\" label={translate('common.name')} sortable={false} /> \r\n            <FunctionField label={translate('docs.size')} render={renderSize} />\r\n            { (target==targets.CLASSROOM_PHOTO || target==targets.DOCUMENT_FAC || target==targets.EVENT_IMAGE || target==targets.USER_MORE_PHOTOS || target==targets.DONATION_PROJECT_IMAGE || target==targets.SETTINGS_DOCS ) ?\r\n              <FunctionField label={translate('common.priority')} render={ record => <OrderDocs record={record} direction={sort.order} />  } />\r\n              : null }\r\n            {(target==targets.EVENT || target==targets.EVENT_IMAGE ) ?\r\n              <FunctionField label={translate('events.docs_mark')} render={ record => <MarkDocs record={record} />  } />\r\n              : null }\r\n            <DownloadButtonAuth label={translate('docs.download')} />\r\n            <EditDocButton redirect={strRedirect} label={translate('docs.actions')} />     \r\n            <FunctionField render={ record => record.privacy == 0 ? <CopyToClipboard label={translate('docs.copy_link')} message={apiUrl + '/docs/download/public/' + record.id} /> : null } />            \r\n            <DeleteButton undoable={false} redirect={strRedirect} label=\"\" />      \r\n          </Datagrid>                            \r\n        </List>\r\n\r\n      </ResourceContextProvider>\r\n    </>\r\n  );\r\n};\r\n\r\n\r\nexport const EditDocButton = ({ ...props }) => {\r\n\r\n  const [showDialog, setShowDialog] = useState(false);\r\n  const notify = useNotify();\r\n  const refresh = useRefresh();    \r\n  const translate = useTranslate();  \r\n\r\n  const [update, { loading, error }] = useUpdate();\r\n\r\n  const handleClick = () => {\r\n    setShowDialog(true);\r\n  };\r\n\r\n  const handleCloseClick = () => {\r\n    setShowDialog(false);\r\n  };\r\n\r\n  const handleSubmit = async values => {\r\n    update(\r\n      { \r\n        type: 'update', \r\n        resource: 'docs', \r\n        payload : { id: values.id, data : { name : values.name } }\r\n      },\r\n      {\r\n        onSuccess: ({ data }) => {\r\n          setShowDialog(false);\r\n          refresh();\r\n        },\r\n        onFailure: ( error ) => {\r\n          notify(error.message, 'error');\r\n        }\r\n      }\r\n    );\r\n  };    \r\n\r\n  return (\r\n    <>\r\n      <Button onClick={handleClick} label={translate('docs.edit')} startIcon={<EditIcon />} />\r\n\r\n      <Dialog\r\n        fullWidth\r\n        open={showDialog}\r\n        onClose={handleCloseClick}\r\n        aria-label={translate('docs.edit')}\r\n      >\r\n        <DialogTitle>{translate('docs.edit')}</DialogTitle>\r\n\r\n        <FormWithRedirect\r\n          resource=\"docs\"\r\n          save={handleSubmit}\r\n          initialValues={{ id : props.record.id, name : props.record.name }}\r\n          render={({\r\n            handleSubmitWithRedirect,\r\n            pristine,\r\n            saving\r\n          }) => (\r\n            <>\r\n              <DialogContent>\r\n              \r\n                <Grid container spacing={2}>\r\n                  <Grid item xs={12}>  \r\n                    <TextInput label={translate('common.name')} fullWidth source=\"name\" validate={[validateMaxLength(255,translate('common.validation.maxLength'))]} />                                        \r\n                  </Grid> \r\n                </Grid>                     \r\n                \r\n              </DialogContent>\r\n              <DialogActions>\r\n                <Button label=\"ra.action.cancel\" onClick={handleCloseClick} disabled={loading} >\r\n                  <IconCancel />\r\n                </Button>\r\n                <SaveButton\r\n                  handleSubmitWithRedirect={\r\n                    handleSubmitWithRedirect\r\n                  }\r\n                  pristine={pristine}\r\n                  saving={saving}\r\n                  disabled={loading}\r\n                />\r\n              </DialogActions>\r\n            </>\r\n          )}\r\n        />\r\n      </Dialog>\r\n    </>\r\n  );\r\n};\r\n\r\nfunction OrderDocs ({ ...props}) {\r\n  const notify = useNotify();\r\n  const refresh = useRefresh();  \r\n  const [update, { loading, error }] = useUpdate();\r\n    \r\n  const handleAction = (action) => {\r\n    update(\r\n      { \r\n        type: 'update', \r\n        resource: 'docs/reorder', \r\n        payload : { id: props.record.id, data : \r\n                {       direction: action\r\n                } }\r\n      },\r\n      {\r\n        onSuccess: ({ data }) => {\r\n          refresh();\r\n        },\r\n        onFailure: ( error ) => {\r\n          notify(error.message, 'error');\r\n        }\r\n      }\r\n    );\r\n  };\r\n        \r\n  return (\r\n    <>\r\n      <KeyboardArrowUpIcon onClick={() => handleAction(props.direction=='ASC' ? -1 : 1)} />\r\n      <KeyboardArrowDownIcon onClick={() => handleAction(props.direction=='ASC' ? 1 : -1)} />     \r\n    </>\r\n  );\r\n\r\n}\r\n\r\n\r\nfunction MarkDocs ({ ...props}) {\r\n  const notify = useNotify();\r\n  const refresh = useRefresh();  \r\n  const [update, { loading, error }] = useUpdate();\r\n        \r\n  const handleAction = (action) => {\r\n    update(\r\n      { \r\n        type: 'update', \r\n        resource: 'docs/mark', \r\n        payload : { id: props.record.id, data : \r\n                {       mark: action\r\n                } }\r\n      },\r\n      {\r\n        onSuccess: ({ data }) => {\r\n          refresh();\r\n        },\r\n        onFailure: ( error ) => {\r\n          notify(error.message, 'error');\r\n        }\r\n      }\r\n    );\r\n  };\r\n        \r\n  return ( <>\r\n    { props.record.mark ? \r\n      <AttachEmailIcon className=\"\" onClick={() => handleAction(-1)} />\r\n      :\r\n      <AttachEmailIcon className=\"grey2\" onClick={() => handleAction(1)} />\r\n    }\r\n  </>\r\n  );\r\n\r\n}\r\n\r\n\r\nexport const DocsListShow = ({ target, items_id , resource_name, ...props }) => {\r\n\r\n  const translate = useTranslate();  \r\n    \r\n  let context_provider = 'docs';\r\n  if (resource_name === 'users-fac-contacts') context_provider = 'docs-contacts';\r\n  let base_path = '/' + context_provider;\r\n    \r\n  let sort = { field: 'id', order: 'DESC' };\r\n    \r\n  if (target === targets.DOCUMENT_FAC)\r\n  {\r\n    sort = { field: 'priority', order: 'DESC' };\r\n  }\r\n  \r\n  if (target === targets.USER_MORE_PHOTOS)\r\n  {\r\n    sort = { field: 'priority', order: 'ASC' };\r\n  }\r\n  \r\n  let pagination=false;\r\n  let perPage=10000;\r\n\r\n  return (  \r\n    <>  \r\n      <ResourceContextProvider value={context_provider}>\r\n        <List              \r\n          basePath={base_path} \r\n          filter={{ target : target, items_id : items_id }}\r\n          actions={null} \r\n          empty={<span/> }     \r\n          sort={sort} \r\n          label=\"\"  \r\n          title=\"\"  \r\n          bulkActionButtons={false} \r\n          pagination={pagination}\r\n          perPage={perPage}\r\n        >\r\n          <Datagrid\r\n            className=\"header_grey6\"\r\n          >                                         \r\n            <FunctionField label=\"\" render={renderFile} />\r\n            <TextField source=\"name\" label={translate('common.name')} sortable={false} /> \r\n            <FunctionField label={translate('docs.size')} render={renderSize} />                        \r\n            <DownloadButtonAuth label={translate('docs.download')} />  \r\n          </Datagrid>                            \r\n        </List>\r\n\r\n      </ResourceContextProvider>\r\n    </>\r\n  );\r\n};\r\n\r\nfunction renderFile(record)\r\n{         \r\n  if (record.mimeType.includes('image') )\r\n  {\r\n    return (\r\n      <ImageViewer docs_id={record.id} is_public={false} title=\"\" className=\"docs_photo_list\" />\r\n    );\r\n  }\r\n  else\r\n  {\r\n    let fileExtension = record.name.split('.').pop();\r\n    if (fileExtension === record.name) fileExtension = '';\r\n\r\n    let classIcon = '';\r\n    if (fileExtension === 'pdf') classIcon=defaultStyles.pdf;\r\n    if (fileExtension === 'docx') classIcon=defaultStyles.docx;\r\n    if (fileExtension === 'doc') classIcon=defaultStyles.doc;\r\n    if (fileExtension === 'xlsx') classIcon=defaultStyles.xlsx;\r\n    if (fileExtension === 'xls') classIcon=defaultStyles.xls;\r\n    if (fileExtension === 'txt') classIcon=defaultStyles.txt;\r\n    if (fileExtension === 'png') classIcon=defaultStyles.png;\r\n    if (fileExtension === 'webm') classIcon=defaultStyles.webm;\r\n    if (fileExtension === 'mp4') classIcon=defaultStyles.mp4;\r\n    if (fileExtension === 'none') classIcon=defaultStyles.file;\r\n\r\n    return (\r\n      <div className=\"iconWrapper\">\r\n        <FileIcon extension={fileExtension} {...classIcon} />\r\n      </div>\r\n    );   \r\n  }\r\n}\r\n\r\nfunction renderSize(record)\r\n{\r\n  if (record.size < 1000)\r\n  {\r\n    let newValue = Math.round( (record.size / 1000 ) * 10 ) / 10;\r\n    return newValue + ' KB';\r\n  }\r\n  else if (record.size < 1000000)\r\n  {\r\n    let newValue = Math.round( (record.size / 1000 ) * 10 ) / 10;\r\n    return newValue + ' KB';\r\n  }\r\n  else if (record.size < 1000000000)\r\n  {\r\n    let newValue = Math.round( (record.size / 1000000 ) * 10 ) / 10;\r\n    return newValue + ' MB';\r\n  }\r\n}\r\n\r\n\r\n\r\nexport const ImageViewer = ({...props}) => {\r\n\r\n  const [imageUrl, setImageUrl] = useState(null);\r\n\r\n  useEffect(() => {\r\n    const fetchImage = async () => {\r\n        \r\n      let headers = new Headers({ Accept: 'application/json' });\r\n      headers.set('Access-Control-Allow-Origin', apiOrigin );\r\n      headers.set('Authorization', localStorage.getItem('auth'));\r\n      headers.set('Accept-Language', apiDefaultLanguage);\r\n      headers.set('Role', localStorage.getItem('active_permission'));\r\n\r\n      let urlApi1 = apiUrl;\r\n      urlApi1 += props.is_public ? '/docs/download/public/' : '/docs/download/';\r\n      urlApi1 += props.docs_id;\r\n                \r\n      const response = await fetch(urlApi1 , { \r\n        headers: headers\r\n      });\r\n        \r\n      const blob = await response.blob();\r\n      const url = URL.createObjectURL(blob);\r\n      setImageUrl(url);        \r\n    };\r\n\r\n    fetchImage();\r\n  }, [props.docs_id]);\r\n  \r\n  return ( \r\n    imageUrl ?\r\n      <>\r\n        { props.is_div ? \r\n          <div className={props.className} style={{backgroundImage: 'url(\"' + imageUrl + '\")'}}/>\r\n          :\r\n          props.link ? \r\n            <a href={imageUrl} download={props.link_name} target=\"_blank\"><img src={imageUrl} className={props.className} title={props.title} alt={props.title} /></a> \r\n            : \r\n            <img src={imageUrl} className={props.className} title={props.title} alt={props.title} /> \r\n        }            \r\n      </>\r\n      : \r\n            \r\n      <div className={props.className} style={{backgroundImage: null }} ><span></span></div>\r\n  );\r\n};\r\n\r\nexport const BoxPhotoUser = ({ target, items_id , edit, resource_name, quantity, className, onSuccess, camera, ...props }) => {\r\n        \r\n  const translate = useTranslate(); \r\n        \r\n  let emptyImg = null;\r\n  if (props.default_img==1)\r\n    emptyImg = <div className={className+'-container'}><img src=\"/img/img_association.png\" className={className} /></div>;\r\n  else if (props.default_img==0)\r\n    emptyImg = <div className={className+'-container'}><img src=\"/img/img_person.png\" className={className} /></div>;\r\n  else if (props.default_img==2)\r\n  {   \r\n    emptyImg = <div className={className+'-container'}><img src=\"/img/card_without_background.jpg\" className={className} /></div>;\r\n  }\r\n  else if (props.default_img==3)\r\n  {   \r\n    emptyImg = <div className={className+'-container'}><img src=\"/img/card_google_wallet_without_background.jpg\" className={className} /></div>;\r\n  }\r\n        \r\n  let reference = 'docs';\r\n  if (resource_name === 'users-fac-contacts') reference = 'docs-contacts';\r\n                \r\n  let per_page = quantity ? quantity : 1;\r\n        \r\n  return (\r\n    <>  \r\n      { edit ? (\r\n                    \r\n        <Box textAlign=\"right\" className=\"photo_box\">\r\n                \r\n          { camera ?\r\n            <DocsCameraButton target={target} items_id={items_id} label=\"\" icon={<CameraAltIcon />} btnClassname=\"btnPhotoUser\" onSuccess={onSuccess} />\r\n            : null }\r\n                \r\n          <DocsCreateButton target={target} items_id={items_id} label=\"\" icon={<IconContentEdit />} btnClassname=\"btnPhotoUser\" onSuccess={onSuccess} />\r\n          <DocsDeleteButton target={target} items_id={items_id} label=\"\" icon={<DeleteIcon />} onSuccess={onSuccess} />\r\n                \r\n          <ResourceContextProvider value=\"docs\">\r\n            <ReferenceManyField                    \r\n              reference={reference}\r\n              target=\"users_id\"\r\n              filter={{ target : target, items_id : items_id }}\r\n              label=\"\"\r\n              className=\"photo_user\"\r\n              perPage={per_page}\r\n              sort={{ field: 'priority', order: 'ASC' }}\r\n            >\r\n              <SingleFieldList linkType={false} empty={emptyImg} className={className}>                                \r\n                <FunctionField render={record => <ImageViewer docs_id={record.id} className={className} is_public={false} />  }  />\r\n              </SingleFieldList>\r\n\r\n            </ReferenceManyField>\r\n          </ResourceContextProvider>\r\n                \r\n        </Box>\r\n      ) : (\r\n        <Box textAlign=\"left\">\r\n\r\n          <ReferenceManyField                    \r\n            reference={reference}\r\n            target=\"users_id\"\r\n            filter={{ target : target, items_id : items_id }}\r\n            label=\"\"\r\n            perPage={per_page}\r\n            sort={{ field: 'priority', order: 'ASC' }}\r\n          >\r\n                \r\n            <SingleFieldList linkType={false} empty={emptyImg} className={className}>                                \r\n              <FunctionField render={record => <ImageViewer docs_id={record.id} className={className} is_public={false} />  }  />\r\n            </SingleFieldList>\r\n\r\n          </ReferenceManyField>\r\n\r\n        </Box>\r\n      )}            \r\n\r\n    </>\r\n  );\r\n};\r\n\r\n\r\n","import { makeStyles } from '@material-ui/core/styles';\r\n\r\n\r\nconst useStyles = makeStyles(function (theme) {\r\n\r\n  return ({\r\n    appBar : {\r\n      background: '#FF6600',\r\n    },\r\n    menu :{\r\n      display: 'flex',\r\n      flexDirection: 'column',\r\n      justifyContent: 'flex-start',\r\n      marginTop: '0.5em',\r\n      marginBottom: '1em'\r\n    },\r\n    filter_list_item :\r\n    {\r\n    \tbackground: '#FF6600',\r\n    \tmarginTop: '300px',\r\n    },\r\n    tab: {\r\n      maxWidth: '100%',\r\n      display: 'block',\r\n    }\r\n  });\r\n});\r\n\r\nexport { useStyles };","\r\nexport const MyLoading = props => {\r\n  return (\r\n    <div className=\"loading\"><div></div></div>\r\n  );\r\n};\r\n\r\nexport default MyLoading;\r\n","import * as React from 'react';\r\n\r\n\r\n/*import { memo } from 'react';\r\nimport get from 'lodash/get';\r\nimport Typography from '@material-ui/core/Typography';\r\nimport { useRecordContext } from 'ra-core';\r\n\r\nimport PropTypes from 'prop-types';\r\n\r\nvar __assign = (this && this.__assign) || function () {\r\n    __assign = Object.assign || function(t) {\r\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n            s = arguments[i];\r\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\r\n                t[p] = s[p];\r\n        }\r\n        return t;\r\n    };\r\n    return __assign.apply(this, arguments);\r\n};\r\nvar __rest = (this && this.__rest) || function (s, e) {\r\n    var t = {};\r\n    for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n        t[p] = s[p];\r\n    if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n        for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n            if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n                t[p[i]] = s[p[i]];\r\n        }\r\n    return t;\r\n};\r\n\r\n\r\nvar fieldPropTypes = {\r\n    addLabel: PropTypes.bool,\r\n    sortBy: PropTypes.string,\r\n    sortByOrder: PropTypes.oneOf(['ASC', 'DESC']),\r\n    source: PropTypes.string,\r\n    label: PropTypes.oneOfType([PropTypes.string, PropTypes.element]),\r\n    sortable: PropTypes.bool,\r\n    className: PropTypes.string,\r\n    cellClassName: PropTypes.string,\r\n    headerClassName: PropTypes.string,\r\n    textAlign: PropTypes.oneOf([\r\n        'inherit',\r\n        'left',\r\n        'center',\r\n        'right',\r\n        'justify',\r\n    ]),\r\n    emptyText: PropTypes.string,\r\n};\r\n\r\n\r\nvar sanitizeFieldRestProps = function (_a) {\r\n    var addLabel = _a.addLabel, allowEmpty = _a.allowEmpty, basePath = _a.basePath, cellClassName = _a.cellClassName, className = _a.className, emptyText = _a.emptyText, formClassName = _a.formClassName, fullWidth = _a.fullWidth, headerClassName = _a.headerClassName, label = _a.label, linkType = _a.linkType, link = _a.link, locale = _a.locale, record = _a.record, refetch = _a.refetch, resource = _a.resource, sortable = _a.sortable, sortBy = _a.sortBy, sortByOrder = _a.sortByOrder, source = _a.source, textAlign = _a.textAlign, translateChoice = _a.translateChoice, props = __rest(_a, [\"addLabel\", \"allowEmpty\", \"basePath\", \"cellClassName\", \"className\", \"emptyText\", \"formClassName\", \"fullWidth\", \"headerClassName\", \"label\", \"linkType\", \"link\", \"locale\", \"record\", \"refetch\", \"resource\", \"sortable\", \"sortBy\", \"sortByOrder\", \"source\", \"textAlign\", \"translateChoice\"]);\r\n    return props;\r\n};\r\n\r\nexport var TextFieldShow2 = memo(function (props) {\r\n    var className = props.className, source = props.source, emptyText = props.emptyText, rest = __rest(props, [\"className\", \"source\", \"emptyText\"]);\r\n    var record = useRecordContext(props);\r\n    var value = get(record, source);\r\n    return (React.createElement(Typography, __assign({ component: \"span\", variant: \"body2\", className: className }, sanitizeFieldRestProps(rest)), value != null && typeof value !== 'string'\r\n        ? JSON.stringify(value)\r\n        : value || emptyText));\r\n});\r\n// what? TypeScript loses the displayName if we don't set it explicitly\r\nTextFieldShow.displayName = 'TextFieldShow';\r\n// @ts-ignore\r\nTextFieldShow.defaultProps = {\r\n    addLabel: true,\r\n};\r\n// @ts-ignore\r\nTextFieldShow.propTypes = __assign(__assign({}, Typography.propTypes), fieldPropTypes);*/\r\n\r\nexport var TextFieldShow = function (props) {\r\n  var className = props.className, source = props.source, label = props.label,  emptyText = props.emptyText;\r\n  /*var record = useRecordContext(props);\r\n    var value = get(record, source);*/\r\n  let link_with_protocol = '';\r\n  if (props.link && source && source.length > 0 )\r\n  {\r\n    if (source.includes('https://') || source.includes('http://')) link_with_protocol = source;\r\n    else link_with_protocol = 'https://' + source;\r\n            \r\n  }\r\n  return (<><br/><span className=\"custom-field-title grey6\">{label}</span><br/>{ props.link ? <a href={link_with_protocol} target=\"_blank\">{source}</a> : source }</>);\r\n};\r\n\r\nexport var TextHtmlShow = function (props) {\r\n  var className = props.className, source = props.source, label = props.label,  emptyText = props.emptyText;\r\n  \r\n  return (<div dangerouslySetInnerHTML={{ __html: source }} />);\r\n};\r\n\r\n","import React, { useState } from 'react';\r\nimport { useEffect } from 'react';\r\n\r\nimport {\r\n  AutocompleteInput,\r\n  required, FunctionField, useRecordContext, useDataProvider\r\n} from 'react-admin';\r\n\r\nimport { Link } from 'react-router-dom';\r\nimport Chip from '@material-ui/core/Chip';\r\n\r\nimport Avatar from '@mui/material/Avatar';\r\nimport PersonIcon from '@mui/icons-material/Person';\r\nimport GroupsIcon from '@mui/icons-material/Groups';\r\nimport BusinessIcon from '@mui/icons-material/Business';\r\nimport TodayIcon from '@mui/icons-material/Today';\r\nimport GiteIcon from '@mui/icons-material/Gite';\r\nimport ThumbUpIcon from '@material-ui/icons/ThumbUp';\r\nimport GavelIcon from '@material-ui/icons/Gavel';\r\nimport NotificationsActiveIcon from '@material-ui/icons/NotificationsActive';\r\n\r\nimport { useTranslate  } from '../common/language';\r\nimport { choicesGenderUser  } from '../common/constants';\r\n\r\nexport const UserAvatarIcon = ({record, ...props}) => {\r\n\r\n  return (record.user_type === 0 ? (<Avatar><PersonIcon/></Avatar>) : (<Avatar><BusinessIcon/></Avatar>) );\r\n\r\n};\r\n\r\nexport const GroupsAvatarIcon = ({record, ...props}) => {\r\n\r\n  return (<Avatar><GroupsIcon/></Avatar>);\r\n\r\n};\r\n\r\nexport const EventsAvatarIcon = ({record, ...props}) => {\r\n\r\n  return (<Avatar><TodayIcon/></Avatar>);\r\n\r\n};\r\n\r\nexport const RealStateAvatarIcon = ({record, ...props}) => {\r\n\r\n  return (<Avatar><GiteIcon/></Avatar>);\r\n\r\n};\r\n\r\nexport const AgreementsAvatarIcon = ({record, ...props}) => {\r\n\r\n  return (<Avatar><ThumbUpIcon/></Avatar>);\r\n\r\n};\r\n\r\nexport const InsurancesAvatarIcon = ({record, ...props}) => {\r\n\r\n  return (<Avatar><GavelIcon/></Avatar>);\r\n\r\n};\r\n\r\nexport const AlertsAvatarIcon = ({record, ...props}) => {\r\n\r\n  return (<Avatar><NotificationsActiveIcon/></Avatar>);\r\n\r\n};\r\n\r\n\r\nexport const UserAvatarField = ({record, ...props}) => {\r\n\r\n  return (\r\n    <FunctionField \r\n      label={props.label}  \r\n      render={record => <UserAvatarIcon record={record} /> } \r\n    /> );\r\n};\r\n\r\nexport const UserFullNameTxt = ({record, ...props}) => {\r\n  let first_name = record.first_name;\r\n  let last_name_1 = record.last_name_1 ? record.last_name_1 : '';\r\n  let last_name_2 = record.last_name_2 ? record.last_name_2 : '';\r\n  return (`${first_name} ${last_name_1} ${last_name_2}`); \r\n};\r\n\r\nexport const RenderAge = function (props) {\r\n    \r\n  const translate = useTranslate();      \r\n  let age = '';\r\n  if (props.source)\r\n  {\r\n    let date_str = props.source.substring(8,10) + '-' + props.source.substring(5,7) + '-' + props.source.substring(0,4);\r\n    var birthday_arr = date_str.split('-');\r\n    var birthday_date = new Date(birthday_arr[2], birthday_arr[1] - 1, birthday_arr[0]);\r\n    var ageDifMs = Date.now() - birthday_date.getTime();\r\n    var ageDate = new Date(ageDifMs);\r\n    age = Math.abs(ageDate.getUTCFullYear() - 1970) + ' ' + translate('users.age_sufix');\r\n  }\r\n  return age;\r\n};\r\n\r\n\r\nexport const RenderDate = function (props) {\r\n    \r\n  let date_str = '';\r\n  if (props.source)\r\n    date_str = props.source.substring(8,10) + '-' + props.source.substring(5,7) + '-' + props.source.substring(0,4);\r\n\r\n  return (<>{date_str}</>);\r\n};\r\n\r\nexport const RenderGender = function (props) {\r\n  const translate = useTranslate();  \r\n  if (props.source && props.source >= 0)\r\n    return (choicesGenderUser(translate)[props.source].name);\r\n  else\r\n    return '';\r\n};\r\n\r\nexport const RenderBoolean = function (props) {\r\n  const translate = useTranslate();  \r\n  if (props.source && props.source === true)\r\n    return (translate('common.yes'));\r\n  else\r\n    return (translate('common.no'));\r\n};\r\n\r\n\r\nexport var ChipFieldUserName = function (props) {\r\n  var record = useRecordContext(props);\r\n  let link = '/users/' + record.id + '/show';\r\n  return (<Link\r\n    to={link}\r\n    className=\"users_show_families_chip\"\r\n  >\r\n    <Chip className=\"users_show_families_chip\" label={<UserFullNameTxt record={record}/> } />\r\n  </Link> );\r\n};\r\n\r\nexport const UserInput = ({ ...props }) => {\r\n\r\n  const translate = useTranslate(); \r\n    \r\n  const dataProvider = useDataProvider();\r\n  const [info, setInfo] = useState();\r\n  const [loading, setLoading] = useState(true);\r\n  const [error, setError] = useState();\r\n    \r\n  const disabled = props.disabled && props.disabled==true ? true : false;\r\n  const resettable = props.resettable != null ? props.resettable : true;\r\n  const label = props.label ? props.label : translate('common.name');\r\n  const validate = props.required ? [required()] : [];\r\n    \r\n  useEffect(() => {\r\n    dataProvider\r\n      .getList('users_searcher', {\r\n        pagination: { page: 0, perPage: 10000 },\r\n        sort: { field: 'last_name_1', order: 'ASC' },\r\n        filter: { associations_id: localStorage.getItem('associations_id'), user_type: props.user_type },\r\n      })\r\n      .then(({ data }) => {\r\n        setInfo(data);\r\n        setLoading(false);\r\n      })\r\n      .catch((error) => {\r\n        setError(error);\r\n        setLoading(false);\r\n      });\r\n  }, []);\r\n\r\n  if (loading) return (<span>{translate('common.loading')}</span>);\r\n  if (error) return null;\r\n  if (!info) return null;\r\n  \r\n  return (\r\n    <AutocompleteInput \r\n      optionText={ (record)=> record.complete_name } \r\n      suggestionLimit={50}\r\n      resettable={resettable}\r\n      clearAlwaysVisible={true}\r\n      validate={validate}\r\n      fullWidth\r\n      disabled={disabled}\r\n      choices={info}\r\n      source={props.source}\r\n      label={label}\r\n    />\r\n                \r\n  );\r\n};\r\n\r\nexport const chipsUsers = (users) => {\r\n  if (!users) {\r\n    return null; \r\n  }\r\n  const chips = users.map((user) => (\r\n    <Link key={user.id} to={`/users/${user.id}/show`} className=\"chip\" >\r\n      <Chip label={user.name} className=\"chip\" clickable />\r\n    </Link>\r\n  ));\r\n\r\n  return <div>{chips}</div>;\r\n};\r\n","\r\n\r\nimport React, { useState, useEffect } from 'react';\r\n\r\nimport {\r\n  List, \r\n  Datagrid,\r\n  TextField,\r\n  ReferenceField,\r\n  EditButton,\r\n  DeleteButton,\r\n  Edit,\r\n  Create,\r\n  SimpleForm,\r\n  ReferenceInput,\r\n  SelectInput,\r\n  TextInput,\r\n  Button ,\r\n  CreateButton ,\r\n  TopToolbar,\r\n  Toolbar,\r\n  FormTab,\r\n  TabbedForm,\r\n  FormDataConsumer,\r\n  useListContext,\r\n  Filter, required, ChipField,ReferenceArrayField, SingleFieldList, ArrayField,DateField ,DateInput, NumberInput,RadioButtonGroupInput,\r\n  ResourceContextProvider,FunctionField, BooleanInput, Show, SimpleShowLayout, useRefresh, useRedirect,\r\n  NumberField, ShowButton, useNotify, useDataProvider, Loading, Error, SaveButton, FormWithRedirect, useCreate, downloadCSV,\r\n  ReferenceArrayInput,CheckboxGroupInput,  SelectField \r\n} from 'react-admin';\r\n\r\nimport { AccordionSection  } from '@react-admin/ra-form-layout';\r\n\r\nimport { useTranslate  } from '../common/language';\r\nimport { TextFieldShow } from '../components/TextFieldShow';\r\nimport MyLoading from '../components/MyLoading';\r\nimport { validateMaxLength, validateEmail, validatePercent  } from './../components/Validator';\r\nimport { RenderDate, RenderBoolean, ChipFieldUserName } from '../components/User';\r\nimport { choicesGenderUser } from './../common/constants';\r\nimport Chip from '@material-ui/core/Chip';\r\n\r\nimport Grid from '@mui/material/Grid';\r\nimport Typography from '@material-ui/core/Typography';\r\nimport Divider from '@mui/material/Divider';\r\nimport RichTextInput from 'ra-input-rich-text';\r\n    \r\nexport const fetchCustomFields = (associations_id, target, setCustomFields, setError, dataProvider, only_form_web, only_form_annuary) => {\r\n    \r\n  dataProvider.getList('custom_fields/public', {\r\n    pagination: { page: 0, perPage: 1000 },\r\n    sort: { field: 'priority', order: 'ASC' },\r\n    filter: { associations_id: associations_id, target: target, only_form_web : only_form_web, only_form_annuary: only_form_annuary }\r\n  })\r\n    .then(response => {\r\n      setCustomFields(response.data);\r\n      setError(false);\r\n    })\r\n    .catch(error => {\r\n      console.log(error);\r\n      setError(true);\r\n    });\r\n};\r\n\r\nexport const CustomFieldsEdit  = ({ associations_id, target, title, accordion, prefix, only_form_web, only_form_annuary, ...props }) => {\r\n\r\n  const notify = useNotify();\r\n  const refresh = useRefresh();\r\n  const translate = useTranslate(); \r\n  const dataProvider = useDataProvider();\r\n  \r\n  const [customFields, setCustomFields] = useState();\r\n  const [loading, setLoading] = useState(true);\r\n  const [error, setError] = useState(false);  \r\n    \r\n  useEffect(() => {\r\n    fetchCustomFields(associations_id, target, setCustomFields, setError, dataProvider, only_form_web, only_form_annuary );\r\n  }, []);\r\n\r\n  if (!customFields) return null;\r\n    \r\n  return (         \r\n    customFields.length > 0 && title ?\r\n    <>\r\n      <Typography variant=\"h6\" className=\"grey8 titleUserShow\">                        \r\n        {translate('custom_fields.title_' + target)}\r\n      </Typography>\r\n      <Divider fullWidth className=\"\" />\r\n      <br />  \r\n      <CustomFieldsForm customFields={customFields} prefix={prefix ? prefix : ''} />\r\n    </>\r\n    : customFields.length > 0 && accordion ?\r\n    <AccordionSection className=\"accordion\" label={translate('custom_fields.title_' + target)} fullWidth defaultExpanded={false}>\r\n        <CustomFieldsForm customFields={customFields} prefix={prefix ? prefix : ''} />\r\n    </AccordionSection>\r\n    : customFields.length > 0 ?\r\n        <CustomFieldsForm customFields={customFields} prefix={prefix ? prefix : ''} />\r\n    : null );\r\n}\r\n\r\nexport const CustomFieldsForm = ({customFields, prefix, ...props}) => {\r\n    \r\n    const translate = useTranslate(); \r\n        \r\n    return (\r\n        customFields.map((element, index) => {\r\n\r\n            let validations=[];\r\n            if (element.required) validations.push(required());\r\n            if (element.max_length != -1) validations.push(validateMaxLength(element.max_length, translate('common.validation.maxLength')));\r\n\r\n            return (<Grid spacing={2}><Grid item xs={12} sm={12} key={index}>\r\n                { element.type === 1 ?\r\n                <TextInput \r\n                    fullWidth \r\n                    source={prefix + 'custom_fields.field_' + element.id} \r\n                    label={element.name} \r\n                    validate={validations}                     \r\n                />\r\n                :\r\n                element.type === 2 ?\r\n                <TextInput \r\n                    fullWidth \r\n                    source={prefix + 'custom_fields.field_' + element.id} \r\n                    label={element.name} \r\n                    validate={validations} \r\n                    multiline\r\n                />\r\n                :\r\n                element.type === 3 ?\r\n                <RichTextInput \r\n                    fullWidth \r\n                    source={prefix + 'custom_fields.field_' + element.id} \r\n                    label={element.name} \r\n                    validate={validations} \r\n                    multiline\r\n                />\r\n                :\r\n                element.type === 4 ?\r\n                <NumberInput \r\n                    fullWidth \r\n                    source={prefix + 'custom_fields.field_' + element.id} \r\n                    label={element.name} \r\n                    validate={validations} \r\n                />\r\n                :\r\n                element.type === 5 ?\r\n                <DateInput\r\n                    fullWidth\r\n                    source={prefix + 'custom_fields.field_' + element.id}\r\n                    label={element.name}\r\n                    validate={validations}                                        \r\n                    resettable\r\n                  />\r\n                :\r\n                element.type === 6 ?\r\n                <BooleanInput \r\n                    fullWidth \r\n                    source={prefix + 'custom_fields.field_' + element.id} \r\n                    label={element.name}  \r\n                    validate={validations} \r\n                />\r\n                :\r\n                element.type === 7 ?\r\n                <SelectInput fullWidth resettable source={prefix + 'custom_fields.field_' + element.id} choices={element.choices} optionText=\"name\" optionValue=\"id\" label={element.name} validate={validations}  />\r\n                :\r\n                element.type === 8 ?                \r\n                <FormDataConsumer>\r\n                {({ formData, ...rest }) => {\r\n                  \r\n                  const fieldKey = prefix + `custom_fields.field_${element.id}`;\r\n                  const values = formData[fieldKey] ? formData[fieldKey].split(',').map(Number) : [];\r\n\r\n                  return (\r\n                    <CheckboxGroupInput \r\n                      label={element.name}\r\n                      source={fieldKey}\r\n                      choices={element.choices}\r\n                      row={true} \r\n                      validate={validations}\r\n                      {...props}\r\n                      format={(value) => (value ? value.split(',').map(Number) : [])}        \r\n                      parse={(value) => (value ? value.join(',') : '')}\r\n                      fullWidth\r\n                    />\r\n                  );\r\n                }}\r\n              </FormDataConsumer>\r\n                : null }\r\n                        \r\n            </Grid></Grid>);\r\n        })\r\n    );\r\n}\r\n    \r\nexport const CustomFieldsShow = ({ associations_id, target, title, prefix, divider, ...props }) => {\r\n  const notify = useNotify();\r\n  const refresh = useRefresh();\r\n  const translate = useTranslate();\r\n  const dataProvider = useDataProvider();\r\n  \r\n  const [customFields, setCustomFields] = useState();\r\n  const [loading, setLoading] = useState(true);\r\n  const [error, setError] = useState(false); \r\n  \r\n  let aux_prefix = prefix ? prefix : '';\r\n  \r\n  useEffect(() => {\r\n    fetchCustomFields(associations_id, target, setCustomFields, setError, dataProvider, false, false);\r\n  }, []);\r\n\r\n  if (!customFields) return null;\r\n\r\n  return customFields.length > 0 ? (\r\n    <>\r\n      {title ?\r\n      <><br />\r\n      <Typography variant=\"h6\" className=\"grey8 titleUserShow\">\r\n        {translate('custom_fields.title_' + target)}\r\n      </Typography>\r\n      <Divider /></> \r\n      : null }\r\n\r\n      <Grid container spacing={2}>\r\n        {customFields.map((element, index) => {\r\n          return (\r\n            <Grid item xs={12} key={index}>\r\n              <Grid item xs={4}>\r\n                {element.type === 1 ||\r\n                element.type === 2 ? (\r\n                  <FunctionField\r\n                    render={(record) => (\r\n                      <TextFieldShow\r\n                        source={\r\n                          record[aux_prefix + 'custom_fields'] && record[aux_prefix + 'custom_fields']['field_' + element.id]\r\n                            ? record[aux_prefix + 'custom_fields']['field_' + element.id]\r\n                            : ''\r\n                        }\r\n                        label={element.name}\r\n                      />\r\n                    )}\r\n                  />\r\n                ) : element.type === 3 ? (\r\n                  <FunctionField\r\n                    render={(record) => (\r\n                      <TextFieldShow\r\n                        source={<div dangerouslySetInnerHTML={{ __html: record[aux_prefix + 'custom_fields'] && record[aux_prefix + 'custom_fields']['field_' + element.id]\r\n                            ? record[aux_prefix + 'custom_fields']['field_' + element.id]\r\n                            : '' }} />                          \r\n                        }\r\n                        label={element.name}\r\n                      />\r\n                    )}\r\n                  />\r\n                ) : element.type === 4 ? (\r\n                  <FunctionField\r\n                    render={(record) => (\r\n                      <TextFieldShow\r\n                        source={\r\n                          record[aux_prefix + 'custom_fields'] && record[aux_prefix + 'custom_fields']['field_' + element.id]\r\n                            ? record[aux_prefix + 'custom_fields']['field_' + element.id]\r\n                            : ''\r\n                        }\r\n                        label={element.name}\r\n                      />\r\n                    )}\r\n                  />\r\n                ) : element.type === 5 ? (\r\n                  <FunctionField\r\n                    render={(record) => (\r\n                      <TextFieldShow\r\n                        source={\r\n                          <RenderDate\r\n                            source={\r\n                              record[aux_prefix + 'custom_fields'] && record[aux_prefix + 'custom_fields']['field_' + element.id]\r\n                                ? record[aux_prefix + 'custom_fields']['field_' + element.id]\r\n                                : ''\r\n                            }\r\n                          />\r\n                        }\r\n                        label={element.name}\r\n                      />\r\n                    )}\r\n                  />\r\n                ) : element.type === 6 ? (\r\n                  <FunctionField\r\n                    render={(record) => (\r\n                      <TextFieldShow\r\n                        source={\r\n                          <RenderBoolean\r\n                            source={\r\n                              record[aux_prefix + 'custom_fields'] && record[aux_prefix + 'custom_fields']['field_' + element.id]\r\n                                ? record[aux_prefix + 'custom_fields']['field_' + element.id] === '1'\r\n                                  ? true\r\n                                  : false\r\n                                : false\r\n                            }\r\n                          />\r\n                        }\r\n                        label={element.name}\r\n                      />\r\n                    )}\r\n                  />\r\n                \r\n                ) : element.type === 7 ? (\r\n                  <FunctionField\r\n                    render={(record) => (\r\n                      <TextFieldShow\r\n                        source={\r\n                          record[aux_prefix + 'custom_fields'] && record[aux_prefix + 'custom_fields']['field_' + element.id] && Number(record[aux_prefix + 'custom_fields']['field_' + element.id]) != null\r\n                            ? element.choices.find(item => item.id === Number(record[aux_prefix + 'custom_fields']['field_' + element.id])).name \r\n                            : '' \r\n                        }\r\n                        label={element.name}\r\n                      />\r\n                    )}\r\n                  />\r\n                \r\n                ) : element.type === 8 ? (\r\n                  <FunctionField\r\n                    render={(record) => {\r\n                      const arr =\r\n                        record[aux_prefix + 'custom_fields'] && record[aux_prefix + 'custom_fields']['field_' + element.id]\r\n                          ? record[aux_prefix + 'custom_fields']['field_' + element.id].split(',').map((value) => {\r\n                              return {\r\n                                id: Number(value),\r\n                                name: element.choices.find(item => item.id === Number(value)).name,\r\n                              };\r\n                            })\r\n                          : [];\r\n\r\n                      return (\r\n                              \r\n                        <FunctionField\r\n                            render={(record) => (\r\n                              <TextFieldShow\r\n                                source={\r\n                                  <Grid container spacing={1}>\r\n                                    {arr.map((item) => (\r\n                                      <Grid item key={item.id}>\r\n                                        <Chip label={item.name} />\r\n                                      </Grid>\r\n                                    ))}\r\n                                  </Grid>\r\n                                }\r\n                                label={element.name}\r\n                              />\r\n                            )}\r\n                        />                  \r\n                        \r\n                      );\r\n                    }}\r\n                  />\r\n                ) : null}\r\n              </Grid>\r\n            </Grid>\r\n          );\r\n        })}\r\n      </Grid>\r\n    </>\r\n  ) : null;\r\n};\r\n\r\n","import React, { useState, useEffect } from 'react';\r\nimport { SelectInput, TextInput, required, useUpdate,\r\n  useNotify, Tab, TabbedShowLayout,\r\n  FormWithRedirect, useRefresh, SaveButton, Button, useDataProvider, BooleanInput, ShowButton, PasswordInput , useResourceContext, useGetList } from 'react-admin';\r\n\r\nimport Typography from '@material-ui/core/Typography';\r\nimport { BoxPhotoUser } from './resources/docs';\r\nimport { targets , modules, modulesOptions, choicesLanguage } from './common/constants';\r\n\r\nimport {useHistory} from 'react-router-dom';\r\nimport { Link } from 'react-router-dom';\r\nimport Box from '@mui/material/Box';\r\nimport {Checkbox, FormControlLabel } from '@mui/material';\r\nimport List from '@mui/material/List';\r\nimport ListItem from '@mui/material/ListItem';\r\nimport ListItemButton from '@mui/material/ListItemButton';\r\nimport ListItemIcon from '@mui/material/ListItemIcon';\r\nimport ListItemText from '@mui/material/ListItemText';\r\nimport DraftsIcon from '@mui/icons-material/Drafts';\r\nimport SettingsIcon from '@mui/icons-material/Settings';\r\nimport VolunteerActivismIcon from '@mui/icons-material/VolunteerActivism';\r\nimport PermMediaIcon from '@mui/icons-material/PermMedia';\r\nimport NotificationsActiveIcon from '@material-ui/icons/NotificationsActive';\r\nimport BackupIcon from '@mui/icons-material/Backup';\r\nimport IntegrationInstructionsIcon from '@mui/icons-material/IntegrationInstructions';\r\nimport ListIcon from '@mui/icons-material/List';\r\n\r\nimport RichTextInput from 'ra-input-rich-text';\r\n\r\nimport { useStyles  } from './common/styles';\r\n\r\nimport { DocsList  } from './resources/docs';\r\n\r\n\r\nimport BusinessIcon from '@mui/icons-material/Business';\r\nimport SupervisorAccountIcon from '@mui/icons-material/SupervisorAccount';\r\nimport AccountBalanceIcon from '@mui/icons-material/AccountBalance';\r\nimport CreditCardIcon from '@mui/icons-material/CreditCard';\r\nimport BorderAllIcon from '@mui/icons-material/BorderAll';\r\nimport FormatAlignLeftIcon from '@mui/icons-material/FormatAlignLeft';\r\nimport MeetingRoomIcon from '@mui/icons-material/MeetingRoom';\r\nimport PostAddIcon from '@mui/icons-material/PostAdd';\r\n\r\nimport Dialog from '@material-ui/core/Dialog';\r\nimport DialogTitle from '@material-ui/core/DialogTitle';\r\nimport DialogContent from '@material-ui/core/DialogContent';\r\nimport DialogActions from '@material-ui/core/DialogActions';\r\n\r\n\r\nimport IconButton from '@mui/material/IconButton';\r\nimport CloseIcon from '@mui/icons-material/Close';\r\nimport IconCancel from '@material-ui/icons/Cancel';\r\n\r\n\r\nimport { apiUrl, apiDefaultLanguage, apiOrigin, projectUrl } from './common/constants';\r\nimport MyLoading from './components/MyLoading';\r\nimport { fetchCustomFields } from './components/CustomFields';\r\n\r\nimport Grid from '@mui/material/Grid';\r\n\r\n\r\nimport { useTranslate  } from './common/language';\r\nimport { subscriptionModule  } from './common/utils';\r\n\r\nimport { validateMaxLength, validateMinMaxLengthAndCharacters, validateEmail  } from './components/Validator';\r\n\r\nexport const Settings = () => {\r\n  var translate = useTranslate();\r\n  return (\r\n    <Box sx={{ width: '100%', maxWidth: 500, bgcolor: 'background.paper' }} className=\"settings_box\" >\r\n      \r\n      <List>\r\n        { (localStorage.getItem('permissions_groups') === 'ADMIN' || localStorage.getItem('permissions_groups') === 'ADMIN_CONTACTS' || localStorage.getItem('permissions_groups') === 'ADMIN_READER' ) ? ( \r\n          <ListItem>\r\n            <ListItemButton component={Link} to={{ pathname: '/settings-data' }} >\r\n              <ListItemIcon>\r\n                <BusinessIcon />\r\n              </ListItemIcon>\r\n              <ListItemText primary={translate('settings.data')} secondary={translate('settings.data_desc')} />\r\n            </ListItemButton>\r\n          </ListItem>\r\n        ) : <span /> }\r\n\r\n        { subscriptionModule(modules.REMITTANCES) || subscriptionModule(modules.DONATIONS) || localStorage.getItem('permissions_groups') === 'SIFAC'?\r\n          (localStorage.getItem('permissions_groups') === 'ADMIN' || localStorage.getItem('permissions_groups') === 'ADMIN_CONTACTS' || localStorage.getItem('permissions_groups') === 'ADMIN_READER' ) || localStorage.getItem('permissions_groups') === 'SIFAC' ? ( \r\n            <ListItem>\r\n              <ListItemButton component={Link}  to={{ pathname: '/settings-ibans' }} >\r\n                <ListItemIcon>\r\n                  <AccountBalanceIcon />\r\n                </ListItemIcon>\r\n                <ListItemText primary={translate('settings.ibans')} secondary={translate('settings.ibans_desc')}/>\r\n              </ListItemButton>\r\n            </ListItem>\r\n          ): <span /> \r\n          : null }\r\n          \r\n        { !subscriptionModule(modules.RECERCAT) && localStorage.getItem('permissions_groups') === 'ADMIN' ? \r\n            <ListItem>\r\n              <ListItemButton component={Link}  to={{ pathname: '/settings-docs' }} >\r\n                <ListItemIcon>\r\n                  <PermMediaIcon />\r\n                </ListItemIcon>\r\n                <ListItemText primary={translate('settings.docs')} secondary={translate('settings.docs_desc')}/>\r\n              </ListItemButton>\r\n            </ListItem>\r\n          : <span /> \r\n        }\r\n        \r\n        { subscriptionModule(modules.FEDERATION) || subscriptionModule(modules.DONATIONS,modulesOptions.DONATIONS_OWN) ?\r\n          localStorage.getItem('permissions_groups') === 'ADMIN' ? \r\n            <ListItem>\r\n              <ListItemButton component={Link}  to={{ pathname: '/settings-donations-own' }} >\r\n                <ListItemIcon>\r\n                  <IntegrationInstructionsIcon />\r\n                </ListItemIcon>\r\n                <ListItemText primary={translate('settings.donations_own')} secondary={translate('settings.donations_own_desc')}/>\r\n              </ListItemButton>\r\n            </ListItem>\r\n          : <span /> \r\n        : null }\r\n        \r\n        { subscriptionModule(modules.FEDERATION) || subscriptionModule(modules.DONATIONS,modulesOptions.DONATIONS_OWN) || subscriptionModule(modules.REMITTANCES) ?\r\n          localStorage.getItem('permissions_groups') === 'ADMIN' ? \r\n            <ListItem>\r\n              <ListItemButton component={Link}  to={{ pathname: '/settings-donations-certificates' }} >\r\n                <ListItemIcon>\r\n                  <VolunteerActivismIcon />\r\n                </ListItemIcon>\r\n                <ListItemText primary={translate('settings.donations_certificates')} secondary={translate('settings.donations_certificates_desc')}/>\r\n              </ListItemButton>\r\n            </ListItem>\r\n          : <span /> \r\n        : null }\r\n        \r\n        { subscriptionModule(modules.DONATIONS) || localStorage.getItem('permissions_groups') === 'SIFAC' ?\r\n          (localStorage.getItem('permissions_groups') === 'ADMIN' || localStorage.getItem('permissions_groups') === 'SIFAC' ? ( \r\n            <ListItem>\r\n              <ListItemButton component={Link}  to={{ pathname: '/settings-payment-systems' }} >\r\n                <ListItemIcon>\r\n                  <CreditCardIcon />\r\n                </ListItemIcon>\r\n                <ListItemText primary={translate('settings.payment_systems')} secondary={translate('settings.payment_systems_desc')}/>\r\n              </ListItemButton>\r\n            </ListItem>\r\n          ): <span /> )\r\n          : null }\r\n          \r\n        { subscriptionModule(modules.POSTAL_LABELS) ?\r\n          (localStorage.getItem('permissions_groups') === 'ADMIN' || localStorage.getItem('permissions_groups') === 'ADMIN_CONTACTS' || localStorage.getItem('permissions_groups') === 'ADMIN_READER' ) ? ( \r\n            <ListItem>\r\n              <ListItemButton component={Link}  to={{ pathname: '/settings-postal-labels' }} >\r\n                <ListItemIcon>\r\n                  <BorderAllIcon />\r\n                </ListItemIcon>\r\n                <ListItemText primary={translate('settings.postal_labels')} secondary={translate('settings.postal_labels_desc')}/>\r\n              </ListItemButton>\r\n            </ListItem>\r\n          ): <span /> \r\n          : null }\r\n        \r\n        { subscriptionModule(modules.ALERTS) && localStorage.getItem('permissions_groups') === 'ADMIN' ?\r\n            <ListItem>\r\n              <ListItemButton component={Link}  to={{ pathname: '/alerts' }} >\r\n                <ListItemIcon>\r\n                  <NotificationsActiveIcon />\r\n                </ListItemIcon>\r\n                <ListItemText primary={translate('settings.alerts')} secondary={translate('settings.alerts_desc')}/>\r\n              </ListItemButton>\r\n            </ListItem>          \r\n          : null }\r\n  \r\n        {(localStorage.getItem('permissions_groups') === 'ADMIN' || localStorage.getItem('permissions_groups') === 'ADMIN_CONTACTS' || localStorage.getItem('permissions_groups') === 'ADMIN_READER' ) ? ( \r\n          <ListItem>\r\n            <ListItemButton component={Link} to={{ pathname: '/settings-add-member' }} >\r\n              <ListItemIcon>\r\n                <FormatAlignLeftIcon />\r\n              </ListItemIcon>\r\n              { subscriptionModule(modules.RECERCAT) ?\r\n                <ListItemText primary={translate('settings.recercat_add_member')} secondary={translate('settings.recercat_add_member_desc')}/>\r\n                :\r\n                <ListItemText primary={translate('settings.add_member')} secondary={translate('settings.add_member_desc')}/>\r\n              }\r\n            </ListItemButton>\r\n          </ListItem>\r\n        ) : <span /> }\r\n      \r\n        { subscriptionModule(modules.CLASSROOMS ) ?\r\n          (localStorage.getItem('permissions_groups') === 'ADMIN' || localStorage.getItem('permissions_groups') === 'ADMIN_CONTACTS' || localStorage.getItem('permissions_groups') === 'ADMIN_READER' ) ? ( \r\n            <ListItem>\r\n              <ListItemButton component={Link}  to={{ pathname: '/settings-classrooms-requests' }} >\r\n                <ListItemIcon>\r\n                  <MeetingRoomIcon />\r\n                </ListItemIcon>\r\n                <ListItemText primary={translate('settings.classrooms_requests')} secondary={translate('settings.classrooms_requests_desc')}/>\r\n              </ListItemButton>\r\n            </ListItem>\r\n          ) : <span />\r\n          : null }\r\n  \r\n        { subscriptionModule(modules.FEDERATION) ?\r\n          (localStorage.getItem('permissions_groups') === 'ADMIN' || localStorage.getItem('permissions_groups') === 'ADMIN_CONTACTS' || localStorage.getItem('permissions_groups') === 'ADMIN_READER') ? ( \r\n            <ListItem>\r\n              <ListItemButton component={Link}  to={{ pathname: '/settings-annuary-form' }} >\r\n                <ListItemIcon>\r\n                  <FormatAlignLeftIcon />\r\n                </ListItemIcon>\r\n                <ListItemText primary={translate('settings.annuary_form')} secondary={translate('settings.annuary_form_desc')}/>\r\n              </ListItemButton>\r\n            </ListItem>\r\n          ) : <span /> \r\n        : null }\r\n        \r\n        { subscriptionModule(modules.CUSTOM_FIELDS) && localStorage.getItem('permissions_groups') === 'ADMIN' ? \r\n            <ListItem>\r\n              <ListItemButton component={Link}  to={{ pathname: '/custom_fields' }} >\r\n                <ListItemIcon>\r\n                  <PostAddIcon />\r\n                </ListItemIcon>\r\n                <ListItemText primary={translate('custom_fields.main_menu_title')} secondary={translate('custom_fields.main_menu_desc')}/>\r\n              </ListItemButton>\r\n            </ListItem>\r\n          : <span /> \r\n        }\r\n        \r\n        { (subscriptionModule(modules.RECERCAT) && (localStorage.getItem('email') === 'admin@softovi.com' || localStorage.getItem('email') === 'francesctomas@gmail.com')) ||\r\n        !subscriptionModule(modules.RECERCAT) && (localStorage.getItem('permissions_groups') === 'ADMIN' || localStorage.getItem('permissions_groups') === 'ADMIN_CONTACTS' || localStorage.getItem('permissions_groups') === 'ADMIN_READER') ? ( \r\n        <ListItem>\r\n          <ListItemButton component={Link} to={{ pathname: '/emails' }} >\r\n            <ListItemIcon>            \r\n              <ListIcon />\r\n            </ListItemIcon>\r\n            <ListItemText primary={translate('settings.emails_logs')} secondary={translate('settings.emails_logs_desc')}/>\r\n          </ListItemButton>\r\n        </ListItem>\r\n        ) : <span />  }\r\n                \r\n        <ListItem>\r\n          <ListItemButton component={Link} to={{ pathname: '/settings-emails' }} >\r\n            <ListItemIcon>\r\n              <DraftsIcon />\r\n            </ListItemIcon>\r\n            <ListItemText primary={translate('settings.emails')} secondary={translate('settings.emails_desc')}/>\r\n          </ListItemButton>\r\n        </ListItem>\r\n          \r\n        { localStorage.getItem('permissions_groups') === 'SIFAC' ? ( \r\n          <ListItem>\r\n            <ListItemButton component={Link} to={{ pathname: '/settings-sadmin' }} >\r\n              <ListItemIcon>\r\n                <SettingsIcon />\r\n              </ListItemIcon>\r\n              <ListItemText primary={translate('settings.maintenance')} secondary={translate('settings.maintenance_desc')}/>\r\n            </ListItemButton>\r\n          </ListItem>\r\n        ) : <span /> }\r\n                      \r\n        { false && (localStorage.getItem('permissions_groups') === 'ADMIN' || localStorage.getItem('permissions_groups') === 'ADMIN_CONTACTS' || localStorage.getItem('permissions_groups') === 'ADMIN_READER' ) ? ( \r\n          <ListItem>\r\n            <ListItemButton component={Link} to={{ pathname: '/settings-users' }} >\r\n              <ListItemIcon>\r\n                <SupervisorAccountIcon />\r\n              </ListItemIcon>\r\n              <ListItemText primary={translate('settings.users')} secondary={translate('settings.users_desc')}/>\r\n            </ListItemButton>\r\n          </ListItem>\r\n        ) : <span /> }              \r\n          \r\n      </List>\r\n        \r\n    </Box>\r\n  );\r\n  \r\n};\r\n\r\n/*\r\n * { (localStorage.getItem('permissions_groups') === \"ADMIN\" || localStorage.getItem('permissions_groups') === \"ADMIN_CONTACTS\" || localStorage.getItem('permissions_groups') === \"ADMIN_READER\" ) ? ( \r\n          <ListItem>\r\n            <ListItemButton component={Link} to={{ pathname: '/settings-subscription' }} >\r\n              <ListItemIcon>\r\n                <CardMembershipIcon />\r\n              </ListItemIcon>\r\n              <ListItemText primary={translate('settings.subscription')} secondary={translate('settings.subscription_desc')}/>\r\n            </ListItemButton>\r\n          </ListItem>\r\n          ) : <span /> }      \r\n\r\n */\r\nconst updateAssociationInfo = () => {\r\n    \r\n  let authHeaders = new Headers({ 'Accept': 'application/json' });\r\n  authHeaders.set('Content-Type', 'application/json' );\r\n  authHeaders.set('Access-Control-Allow-Origin', apiOrigin );\r\n  authHeaders.set('Authorization', localStorage.getItem('auth'));\r\n  authHeaders.set('Accept-Language', apiDefaultLanguage);\r\n  authHeaders.set('Role', localStorage.getItem('active_permission'));\r\n\r\n  const request = new Request(apiUrl + '/associations/info/' + localStorage.getItem('associations_id') , {\r\n    method: 'GET',\r\n    headers: authHeaders             \r\n  });\r\n\r\n  return fetch(request)\r\n    .then(response => response.json())\r\n    .then(data => {\r\n      localStorage.setItem('associations_name', data.name );\r\n      localStorage.setItem('associations_logo_doc', data.associations_logo_doc );\r\n      window.location.reload(false);\r\n    })\r\n    .catch(() => {\r\n    });\r\n                        \r\n};\r\n\r\nexport const SettingsData = ( props ) => {\r\n    \r\n  var translate = useTranslate();\r\n  const history = useHistory();\r\n  const dataProvider = useDataProvider();\r\n  const [info, setInfo] = useState();\r\n    \r\n  const [showDialog, setShowDialog] = useState(false);\r\n  const notify = useNotify();\r\n  const refresh = useRefresh();  \r\n  const [update, { loading, error }] = useUpdate();\r\n    \r\n  useEffect(() => {\r\n    if (localStorage.getItem('associations_id') !== 0)\r\n    {\r\n      dataProvider.getOne('associations', { id: localStorage.getItem('associations_id') })\r\n        .then(({ data }) => {    \r\n          setInfo(data);\r\n        })\r\n        .catch(error => {                                \r\n        });\r\n    }\r\n  }, []);\r\n\r\n  if (!info) return null;\r\n    \r\n  const handleSubmit = async values => {\r\n    update(\r\n      { \r\n        type: 'update', \r\n        resource: 'associations', \r\n        payload : { id: values.id, data : { \r\n          name : values.name,\r\n          email : values.email,\r\n          nif : values.nif,\r\n          address : values.address,\r\n          neighborhood : values.neighborhood,\r\n          zip : values.zip,\r\n          city : values.city,\r\n          region : values.region,\r\n          country : values.country,\r\n          phone : values.phone  } }\r\n      },\r\n      {\r\n        onSuccess: ({ data }) => {\r\n          updateAssociationInfo();\r\n          history.push('/settings');\r\n        },\r\n        onFailure: ( error ) => {\r\n          notify(error.message, 'error');\r\n        }\r\n      }\r\n    );\r\n  };    \r\n    \r\n  return (\r\n        \r\n    <FormWithRedirect\r\n      resource=\"associations\"        \r\n      save={handleSubmit}\r\n      initialValues={{ id : localStorage.getItem('associations_id'), \r\n        name : info.name,\r\n        email : info.email,\r\n        nif : info.nif,\r\n        address : info.address,\r\n        neighborhood : info.neighborhood,\r\n        zip : info.zip,\r\n        city : info.city,\r\n        region : info.region,\r\n        country : info.country,\r\n        phone : info.phone            \r\n      }}\r\n      render={formProps => (\r\n        <>\r\n          <br/>\r\n          <Typography variant=\"h5\" className=\"grey8\" align=\"center\">\r\n            {translate('settings.data')}              \r\n          </Typography>\r\n          <Box sx={{ width: '100%', maxWidth: 600, bgcolor: 'background.paper', padding: '25px' }} className=\"settings_box\" >\r\n                    \r\n            <Grid container spacing={1}>\r\n              <Grid item xs={7}>                      \r\n                <Grid container spacing={1}>\r\n                  <Grid item xs={12}>\r\n                    <TextInput label={translate('common.name')} fullWidth source=\"name\" validate={[required(),validateMaxLength(100,translate('common.validation.maxLength'))]} />\r\n                  </Grid>\r\n                  <Grid item xs={8}>\r\n                    <TextInput fullWidth source=\"email\" label={translate('users.email')} validate={[validateMaxLength(100,translate('common.validation.maxLength')),validateEmail()]} />\r\n                  </Grid>\r\n                  <Grid item xs={4}>\r\n                    <TextInput fullWidth source=\"nif\" label={translate('users.nif')} validate={[validateMaxLength(10,translate('common.validation.maxLength'))]} />\r\n                  </Grid>\r\n                </Grid>  \r\n              </Grid>\r\n              <Grid item xs={5}>\r\n                <BoxPhotoUser target={targets.ASSOCIATION} items_id={localStorage.getItem('associations_id')} edit={true} default_img={1} className=\"docs_photo_user\" />  \r\n              </Grid>\r\n            </Grid>   \r\n                                   \r\n            <Grid container spacing={1}>\r\n              <Grid item xs={12}>\r\n                <TextInput fullWidth source=\"address\" label={translate('users.address')} validate={[validateMaxLength(255,translate('common.validation.maxLength'))]} />\r\n              </Grid>\r\n            </Grid>\r\n                \r\n            <Grid container spacing={1}>                    \r\n              <Grid item xs={4}>\r\n                <TextInput fullWidth source=\"neighborhood\" label={translate('users.neighborhood')} validate={[validateMaxLength(100,translate('common.validation.maxLength'))]} />\r\n              </Grid>\r\n              <Grid item xs={4}>\r\n                <TextInput fullWidth source=\"zip\" label={translate('users.zip')} validate={[validateMaxLength(5,translate('common.validation.maxLength'))]} />\r\n              </Grid>\r\n              <Grid item xs={4}>\r\n                <TextInput fullWidth source=\"city\" label={translate('users.city')} validate={[validateMaxLength(100,translate('common.validation.maxLength'))]} />\r\n              </Grid>\r\n            </Grid>\r\n                   \r\n            <Grid container spacing={1}>   \r\n              <Grid item xs={4}>\r\n                <TextInput fullWidth source=\"region\" label={translate('users.region')} validate={[validateMaxLength(100,translate('common.validation.maxLength'))]} />\r\n              </Grid>\r\n              <Grid item xs={4}>\r\n                <TextInput fullWidth source=\"country\" label={translate('users.country')} validate={[validateMaxLength(255,translate('common.validation.maxLength'))]} />\r\n              </Grid>\r\n              <Grid item xs={4}>\r\n                <TextInput fullWidth source=\"phone\" label={translate('users.phone')} validate={[validateMaxLength(50,translate('common.validation.maxLength'))]} />\r\n              </Grid>\r\n            </Grid>\r\n\r\n            <SaveButton\r\n              saving={formProps.saving}\r\n              handleSubmitWithRedirect={formProps.handleSubmitWithRedirect}\r\n            />\r\n\r\n          </Box>\r\n        </>\r\n            \r\n      )}\r\n    />\r\n    \r\n  );\r\n  \r\n};\r\n\r\nexport const SettingsProfile = ( props ) => {\r\n    \r\n  var translate = useTranslate();\r\n  const history = useHistory();\r\n  const dataProvider = useDataProvider();\r\n  const [info, setInfo] = useState();\r\n  const classes = useStyles();\r\n    \r\n  const [showDialog, setShowDialog] = useState(false);\r\n  const notify = useNotify();\r\n  const refresh = useRefresh();  \r\n  const [update, { loading, error }] = useUpdate();\r\n  \r\n  const [language, setLanguage] = useState('0');\r\n  const [showPasswordFields, setShowPasswordFields] = useState(false);\r\n  \r\n   useEffect(() => {\r\n    const storedLanguage = localStorage.getItem('language');\r\n    if (storedLanguage) {\r\n      setLanguage(storedLanguage);\r\n    }\r\n  }, []);\r\n        \r\n  const handleSubmit = async values => {\r\n                \r\n    update(\r\n      { \r\n        type: 'update',\r\n        resource: 'users_login',\r\n        payload: {\r\n        id: localStorage.getItem('users_login_id'),\r\n        data: {\r\n        password: values.password,\r\n        password_confirmation: values.password_confirmation,\r\n        change_password: showPasswordFields,\r\n        language: values.language, \r\n        },\r\n        },\r\n       },\r\n      {\r\n        onSuccess: ({ data }) => {\r\n          localStorage.setItem('language', values.language); \r\n          notify(translate('settings.profile_changed'), 'success');\r\n          history.push('/dashboard');\r\n          window.location.reload(false);\r\n        },\r\n        onFailure: ( error ) => {\r\n          notify(error.message, 'error');\r\n        }\r\n      }\r\n    );\r\n  };    \r\n    \r\n return (\r\n    <FormWithRedirect\r\n      resource=\"users_login\"           \r\n      save={handleSubmit}\r\n      initialValues={{             \r\n        email: localStorage.getItem('email'),\r\n        password: '',\r\n        password_confirmation: '',\r\n        language: localStorage.getItem('language'),\r\n      }}\r\n      render={formProps => (\r\n        <>\r\n          <br/>\r\n          <Typography variant=\"h5\" className=\"grey8\" align=\"center\">\r\n            {translate('settings.profile')}              \r\n          </Typography>\r\n          <Box sx={{ width: '100%', maxWidth: 600, bgcolor: 'background.paper', padding: '25px' }} className=\"settings_box\">\r\n            <TabbedShowLayout syncWithLocation={false}>\r\n              <Tab\r\n                label={translate('settings.profile_user_tab')}\r\n                contentClassName={classes.tab}\r\n                fullWidth\r\n                path=\"\"\r\n              >\r\n                <br/>\r\n                <Grid container spacing={0}>\r\n                  <Grid item xs={12}>\r\n                    <TextInput \r\n                      fullWidth \r\n                      source=\"email\" \r\n                      label={translate('users.email')} \r\n                      validate={[validateMaxLength(100, translate('common.validation.maxLength')), validateEmail()]} \r\n                      disabled \r\n                      style={{ textAlign: 'left' }} \r\n                    />\r\n                  </Grid>\r\n                  \r\n                  <Grid item xs={12} sx={{ marginY: 2 }}>\r\n                    <SelectInput\r\n                      source=\"language\"\r\n                      label={translate('common.language')}\r\n                      choices={choicesLanguage(translate, !subscriptionModule(modules.RECERCAT) && (window.location.hostname === 'localhost' || window.location.hostname === 'admin.gestioentitats.cat') )}\r\n                      value={language}\r\n                      validate={[required()]}\r\n                      onChange={(e) => setLanguage(e.target.value)}\r\n                      fullWidth\r\n                    />\r\n                  </Grid>\r\n\r\n                  <Grid item xs={12} sx={{ marginY: -1 }}>\r\n                    <FormControlLabel\r\n                      control={\r\n                        <Checkbox\r\n                          source=\"change_password\"\r\n                          checked={showPasswordFields}\r\n                          onChange={(e) => setShowPasswordFields(e.target.checked)}\r\n                        />\r\n                      }\r\n                       label={translate('settings.change_password')} \r\n                    />\r\n                  </Grid>\r\n\r\n                  {showPasswordFields && (\r\n                    <>\r\n                      <Grid item xs={12}>\r\n                        <PasswordInput \r\n                          fullWidth \r\n                          source=\"password\" \r\n                          label={translate('settings.profile_password')} \r\n                          validate={[validateMinMaxLengthAndCharacters(translate('common.validation.minMaxLengthAndCharacters'))]} \r\n                          style={{ textAlign: 'right' }}\r\n                        />                            \r\n                      </Grid>\r\n                      <Grid item xs={12}>\r\n                        <PasswordInput \r\n                          fullWidth \r\n                          source=\"password_confirmation\" \r\n                          label={translate('settings.profile_password_confirmation')} \r\n                          validate={[validateMinMaxLengthAndCharacters(translate('common.validation.minMaxLengthAndCharacters'))]} \r\n                          style={{ textAlign: 'right' }}\r\n                        />\r\n                      </Grid>\r\n                    </>\r\n                  )}\r\n                </Grid>\r\n              </Tab>\r\n            </TabbedShowLayout>\r\n            <br/><br/>\r\n\r\n            <SaveButton\r\n              saving={formProps.saving}\r\n              handleSubmitWithRedirect={formProps.handleSubmitWithRedirect}\r\n            />\r\n          </Box>    \r\n        </>\r\n      )}\r\n    />\r\n  );\r\n};\r\n\r\n\r\nexport const SettingsAddMember = ( props ) => {\r\n    \r\n  var translate = useTranslate();\r\n  const history = useHistory();\r\n  const dataProvider = useDataProvider();\r\n  const [info, setInfo] = useState();\r\n    \r\n  const [showDialog, setShowDialog] = useState(false);\r\n  const notify = useNotify();\r\n  const refresh = useRefresh();  \r\n  const [update, { loading, error }] = useUpdate();\r\n  \r\n  let listUrl = '/groups-tree/' + localStorage.getItem('members_pending_group_id');\r\n    \r\n  let formUrl = '/public/add-member?associations_id=' + localStorage.getItem('associations_id');\r\n  if (subscriptionModule(modules.RECERCAT))\r\n  {\r\n    formUrl = '/public/sol-licitud-carnet-recercat?associations_id=' + localStorage.getItem('associations_id');\r\n  }\r\n    \r\n  let formCompleteUrl = projectUrl + '/#' + formUrl;\r\n    \r\n  useEffect(() => {\r\n    if (localStorage.getItem('associations_id') !== 0)\r\n    {\r\n      dataProvider.getOne('associations', { id: localStorage.getItem('associations_id') })\r\n        .then(({ data }) => {    \r\n          setInfo(data);\r\n        })\r\n        .catch(error => {                                \r\n        });\r\n    }\r\n  }, []);\r\n\r\n  if (!info) return null;\r\n    \r\n  const handleSubmit = async values => {\r\n    update(\r\n      { \r\n        type: 'update', \r\n        resource: 'associations/add-member', \r\n        payload : { id: values.id, data : { \r\n          add_member_actived : values.add_member_actived,\r\n          add_member_logo : values.add_member_logo,\r\n          add_member_bank_data : values.add_member_bank_data      ,\r\n          add_member_notification : values.add_member_notification,\r\n          add_member_lopd : values.add_member_lopd,\r\n          add_member_form_sent : values.add_member_form_sent,\r\n          add_member_form_text : values.add_member_form_text\r\n        } }\r\n      },\r\n      {\r\n        onSuccess: ({ data }) => {\r\n          history.push('/settings');\r\n        },\r\n        onFailure: ( error ) => {\r\n          notify(error.message, 'error');\r\n        }\r\n      }\r\n    );\r\n  };    \r\n    \r\n  const handleClick = (e) => {\r\n    e.preventDefault();\r\n    setShowDialog(true);\r\n  };\r\n  const handleCloseClick = () => {\r\n    setShowDialog(false);\r\n  };\r\n    \r\n  return (\r\n        \r\n    <FormWithRedirect\r\n      resource=\"associations\"        \r\n      save={handleSubmit}\r\n      initialValues={{ id : localStorage.getItem('associations_id'), \r\n        add_member_actived : info.add_member_actived,\r\n        add_member_logo : info.add_member_logo,\r\n        add_member_bank_data : info.add_member_bank_data,\r\n        add_member_notification : info.add_member_notification,\r\n        add_member_lopd : info.add_member_lopd,\r\n        add_member_form_sent : info.add_member_form_sent,\r\n        add_member_form_text : info.add_member_form_text\r\n      }}\r\n      render={formProps => (\r\n            \r\n        <>\r\n          <br/>\r\n          <Typography variant=\"h5\" className=\"grey8\" align=\"center\">\r\n            { subscriptionModule(modules.RECERCAT) ? translate('settings.recercat_add_member') : translate('settings.add_member')}              \r\n          </Typography> \r\n            \r\n          <Box sx={{ width: '100%', maxWidth: 800, bgcolor: 'background.paper', padding: '25px' }} className=\"settings_box\" >\r\n                \r\n            <Grid container spacing={1}>\r\n              <Grid item xs={12}>\r\n                      \r\n              </Grid>\r\n            </Grid> \r\n                \r\n            <Grid container spacing={1}>\r\n              <Grid item xs={12}>\r\n                { subscriptionModule(modules.RECERCAT) ?\r\n                  <BooleanInput label={translate('settings.recercat_add_member_actived')} fullWidth source=\"add_member_actived\"  />\r\n                  :\r\n                  <BooleanInput label={translate('settings.add_member_actived')} fullWidth source=\"add_member_actived\"  />\r\n                }\r\n              </Grid>\r\n            </Grid>                   \r\n                \r\n            { !subscriptionModule(modules.RECERCAT) ?\r\n              <Grid container spacing={1}>\r\n                <Grid item xs={12}>\r\n                  <BooleanInput fullWidth source=\"add_member_logo\" label={translate('settings.add_member_logo')}  />\r\n                </Grid>\r\n              </Grid>  : null }\r\n                \r\n            <Grid container spacing={1}>\r\n              <Grid item xs={12}>\r\n                <TextInput className=\"settings_add_member_lopd\" fullWidth multiline source=\"add_member_form_text\" label={translate('settings.add_member_form_text')}  />\r\n              </Grid>\r\n            </Grid>\r\n              \r\n            { !subscriptionModule(modules.RECERCAT) ?\r\n              <Grid container spacing={1}>\r\n                <Grid item xs={12}>\r\n                  <BooleanInput fullWidth source=\"add_member_bank_data\" label={translate('settings.add_member_bank_data')}  />\r\n                </Grid>\r\n              </Grid> : null }\r\n                \r\n            { !subscriptionModule(modules.RECERCAT) ?\r\n              <Grid container spacing={1}>\r\n                <Grid item xs={12}>\r\n                  <BooleanInput fullWidth source=\"add_member_notification\" label={translate('settings.add_member_notification')}  />\r\n                </Grid>\r\n              </Grid> : null }\r\n                \r\n            <Grid container spacing={1}>\r\n              <Grid item xs={12}>\r\n                <TextInput className=\"settings_add_member_lopd\" fullWidth multiline source=\"add_member_lopd\" label={translate('settings.add_member_lopd')}  />\r\n              </Grid>\r\n            </Grid>\r\n                \r\n            <Grid container spacing={1}>\r\n              <Grid item xs={12}>\r\n                <TextInput className=\"settings_add_member_lopd\" fullWidth multiline source=\"add_member_form_sent\" label={translate('settings.add_member_form_sent')}  />\r\n              </Grid>\r\n            </Grid>\r\n                \r\n            <SaveButton\r\n              saving={formProps.saving}\r\n              handleSubmitWithRedirect={formProps.handleSubmitWithRedirect}\r\n            />\r\n                \r\n            <br/><br/>\r\n            <ShowButton \r\n              component={Link}\r\n              to={formUrl}\r\n              label={translate('settings.add_member_view_form')}\r\n              target=\"_blank\"\r\n              align=\"right\"\r\n              className\r\n            />\r\n          \r\n            { !subscriptionModule(modules.RECERCAT) && localStorage.getItem('members_pending_group_id') !== null && parseInt(localStorage.getItem('members_pending_group_id')) > 0 && (\r\n                <ShowButton \r\n                  component={Link}\r\n                  to={listUrl} \r\n                  label={translate('settings.add_member_pending_list')}\r\n                  align=\"right\"\r\n                  className\r\n                />\r\n            )}\r\n\r\n            <br/><br/><a onClick={handleClick} href=\"\">    \r\n              {translate('settings.add_member_help')}\r\n            </a>\r\n                \r\n            <Dialog\r\n              fullWidth\r\n              open={showDialog}\r\n              onClose={handleCloseClick}\r\n              aria-label={translate('remittances.status_form')}\r\n            >\r\n              <DialogTitle>\r\n                {translate('settings.add_member_help')}\r\n                <IconButton\r\n                  aria-label=\"close\"\r\n                  onClick={handleCloseClick}\r\n                  sx={{\r\n                    position: 'absolute',\r\n                    right: 8,\r\n                    top: 8,\r\n                    color: (theme) => theme.palette.grey[500],\r\n                  }}\r\n                >\r\n                  <CloseIcon />\r\n                </IconButton>\r\n              </DialogTitle>\r\n                \r\n              <DialogContent>\r\n                { subscriptionModule(modules.RECERCAT) ? translate('settings.recercat_add_member_help_1') : translate('settings.add_member_help_1') }\r\n                <br/>\r\n                <br/>\r\n                <br/><i>\r\n                    &lt;iframe \r\n                        style=\"width: 100%; height: 100%; border: none; margin: 0; padding: 0; overflow: scroll-y;\" \r\n                        src=\"{formCompleteUrl}\" /&gt;                        \r\n                </i><br/><br/><br/>\r\n              </DialogContent>\r\n\r\n            </Dialog>\r\n                \r\n                \r\n\r\n          </Box>\r\n        </>\r\n            \r\n      )}\r\n    />\r\n    \r\n  );\r\n  \r\n};\r\n\r\n\r\nexport const SettingsClassroomRequests = ( props ) => {\r\n    \r\n  var translate = useTranslate();\r\n  const history = useHistory();\r\n  const dataProvider = useDataProvider();\r\n  const [info, setInfo] = useState();\r\n    \r\n  const [showDialog, setShowDialog] = useState(false);\r\n  const notify = useNotify();\r\n  const refresh = useRefresh();  \r\n  const [update, { loading, error }] = useUpdate();\r\n    \r\n  let formUrl = '/public/classrooms-requests?associations_id=' + localStorage.getItem('associations_id');\r\n  let formCompleteUrl = projectUrl + '/#' + formUrl;\r\n    \r\n  useEffect(() => {\r\n    if (localStorage.getItem('associations_id') !== 0)\r\n    {\r\n      dataProvider.getOne('associations', { id: localStorage.getItem('associations_id') })\r\n        .then(({ data }) => {    \r\n          setInfo(data);\r\n        })\r\n        .catch(error => {                                \r\n        });\r\n    }\r\n  }, []);\r\n\r\n  if (!info) return null;\r\n    \r\n  const handleSubmit = async values => {\r\n    update(\r\n      { \r\n        type: 'update', \r\n        resource: 'associations/classrooms-requests', \r\n        payload : { id: values.id, data : { \r\n          classrooms_requests_actived : values.classrooms_requests_actived,\r\n          classrooms_requests_logo : values.classrooms_requests_logo,\r\n          classrooms_requests_text : values.classrooms_requests_text,\r\n          classrooms_requests_notification : values.classrooms_requests_notification,\r\n          classrooms_requests_lopd : values.classrooms_requests_lopd,\r\n          classrooms_requests_form_sent : values.classrooms_requests_form_sent\r\n        } }\r\n      },\r\n      {\r\n        onSuccess: ({ data }) => {\r\n          history.push('/settings');\r\n        },\r\n        onFailure: ( error ) => {\r\n          notify(error.message, 'error');\r\n        }\r\n      }\r\n    );\r\n  };    \r\n    \r\n  const handleClick = (e) => {\r\n    e.preventDefault();\r\n    setShowDialog(true);\r\n  };\r\n  const handleCloseClick = () => {\r\n    setShowDialog(false);\r\n  };\r\n    \r\n  return (\r\n        \r\n    <FormWithRedirect\r\n      resource=\"associations\"        \r\n      save={handleSubmit}\r\n      initialValues={{ id : localStorage.getItem('associations_id'), \r\n        classrooms_requests_actived : info.classrooms_requests_actived,\r\n        classrooms_requests_logo : info.classrooms_requests_logo,\r\n        classrooms_requests_text : info.classrooms_requests_text,\r\n        classrooms_requests_notification : info.classrooms_requests_notification,\r\n        classrooms_requests_lopd : info.classrooms_requests_lopd,\r\n        classrooms_requests_form_sent : info.classrooms_requests_form_sent\r\n      }}\r\n      render={formProps => (\r\n            \r\n        <>\r\n          <br/>\r\n          <Typography variant=\"h5\" className=\"grey8\" align=\"center\">\r\n            {translate('settings.classrooms_requests')}              \r\n          </Typography>  \r\n            \r\n          <Box sx={{ width: '100%', maxWidth: 800, bgcolor: 'background.paper', padding: '25px' }} className=\"settings_box\" >\r\n                \r\n            <Grid container spacing={1}>\r\n              <Grid item xs={12}>\r\n                      \r\n              </Grid>\r\n            </Grid> \r\n                \r\n            <Grid container spacing={1}>\r\n              <Grid item xs={12}>\r\n                <BooleanInput label={translate('settings.classrooms_requests_actived')} fullWidth source=\"classrooms_requests_actived\"  />\r\n              </Grid>\r\n            </Grid>   \r\n                \r\n            <Grid container spacing={1}>\r\n              <Grid item xs={12}>\r\n                <BooleanInput fullWidth source=\"classrooms_requests_logo\" label={translate('settings.classrooms_requests_logo')}  />\r\n              </Grid>\r\n            </Grid>  \r\n                \r\n            <Grid container spacing={1}>\r\n              <Grid item xs={12}>\r\n                <BooleanInput fullWidth source=\"classrooms_requests_notification\" label={translate('settings.classrooms_requests_notification')}  />\r\n              </Grid>\r\n            </Grid>\r\n                \r\n            <Grid container spacing={1}>\r\n              <Grid item xs={12}>\r\n                <TextInput className=\"classrooms_requests_lopd\" fullWidth multiline source=\"classrooms_requests_text\" label={translate('settings.classrooms_requests_text')}  />\r\n              </Grid>\r\n            </Grid>\r\n                \r\n            <Grid container spacing={1}>\r\n              <Grid item xs={12}>\r\n                <TextInput className=\"classrooms_requests_lopd\" fullWidth multiline source=\"classrooms_requests_lopd\" label={translate('settings.classrooms_requests_lopd')}  />\r\n              </Grid>\r\n            </Grid>\r\n            <Grid container spacing={1}>\r\n              <Grid item xs={12}>\r\n                <TextInput className=\"settings_add_member_lopd\" fullWidth multiline source=\"classrooms_requests_form_sent\" label={translate('settings.classrooms_requests_form_sent')}  />\r\n              </Grid>\r\n            </Grid>\r\n                \r\n            <SaveButton\r\n              saving={formProps.saving}\r\n              handleSubmitWithRedirect={formProps.handleSubmitWithRedirect}\r\n            />\r\n                \r\n            <br/><br/>\r\n            <ShowButton \r\n              component={Link}\r\n              to={formUrl}\r\n              label={translate('settings.classrooms_requests_view_form')}\r\n              target=\"_blank\"\r\n              align=\"right\"\r\n              className\r\n            />   \r\n            <br/><br/><a onClick={handleClick} href=\"\">    \r\n              {translate('settings.classrooms_requests_help')}\r\n            </a>\r\n                \r\n            <Dialog\r\n              fullWidth\r\n              open={showDialog}\r\n              onClose={handleCloseClick}\r\n              aria-label=\"\"\r\n            >\r\n              <DialogTitle>\r\n                {translate('settings.classrooms_requests_help')}\r\n                <IconButton\r\n                  aria-label=\"close\"\r\n                  onClick={handleCloseClick}\r\n                  sx={{\r\n                    position: 'absolute',\r\n                    right: 8,\r\n                    top: 8,\r\n                    color: (theme) => theme.palette.grey[500],\r\n                  }}\r\n                >\r\n                  <CloseIcon />\r\n                </IconButton>\r\n              </DialogTitle>\r\n                \r\n              <DialogContent>\r\n                {translate('settings.classrooms_requests_help_1')}\r\n                <br/>\r\n                <br/>\r\n                <br/><i>\r\n                    &lt;iframe \r\n                        style=\"width: 100%; height: 100%; border: none; margin: 0; padding: 0; overflow: scroll-y;\" \r\n                        src=\"{formCompleteUrl}\" /&gt;                        \r\n                </i><br/><br/><br/>\r\n              </DialogContent>\r\n\r\n            </Dialog>\r\n                \r\n                \r\n\r\n          </Box>\r\n        </>\r\n            \r\n      )}\r\n    />\r\n    \r\n  );\r\n  \r\n};\r\n\r\nexport const SettingsAnnuaryForm = ( props ) => {\r\n    \r\n  var translate = useTranslate();\r\n  const history = useHistory();\r\n  const dataProvider = useDataProvider();\r\n  const [info, setInfo] = useState();\r\n    \r\n  const [showDialog, setShowDialog] = useState(false);\r\n  const notify = useNotify();\r\n  const refresh = useRefresh();  \r\n  const [update, { loading, error }] = useUpdate();\r\n        \r\n  useEffect(() => {\r\n    if (localStorage.getItem('associations_id') !== 0)\r\n    {\r\n      dataProvider.getOne('associations', { id: localStorage.getItem('associations_id') })\r\n        .then(({ data }) => {    \r\n          setInfo(data);\r\n        })\r\n        .catch(error => {                                \r\n        });\r\n    }\r\n  }, []);\r\n\r\n  if (!info) return null;\r\n    \r\n  const handleSubmit = async values => {\r\n    update(\r\n      { \r\n        type: 'update', \r\n        resource: 'associations/annuary-form', \r\n        payload : { id: values.id, data : { \r\n          annuary_form_logo : values.annuary_form_logo,\r\n          annuary_form_text : values.annuary_form_text,\r\n          annuary_form_notification : values.annuary_form_notification,\r\n          annuary_form_notification_association : values.annuary_form_notification_association,\r\n          annuary_form_notification_num_members : values.annuary_form_notification_num_members,\r\n          annuary_form_lopd : values.annuary_form_lopd,\r\n          annuary_form_sent : values.annuary_form_sent\r\n        } }\r\n      },\r\n      {\r\n        onSuccess: ({ data }) => {\r\n          history.push('/settings');\r\n        },\r\n        onFailure: ( error ) => {\r\n          notify(error.message, 'error');\r\n        }\r\n      }\r\n    );\r\n  };    \r\n        \r\n  return (\r\n                        \r\n    <FormWithRedirect\r\n      resource=\"associations\"        \r\n      save={handleSubmit}\r\n      initialValues={{ id : localStorage.getItem('associations_id'), \r\n        annuary_form_logo : info.annuary_form_logo,\r\n        annuary_form_text : info.annuary_form_text,\r\n        annuary_form_notification : info.annuary_form_notification,\r\n        annuary_form_notification_association : info.annuary_form_notification_association,\r\n        annuary_form_notification_num_members : info.annuary_form_notification_num_members,\r\n        annuary_form_lopd : info.annuary_form_lopd,\r\n        annuary_form_sent : info.annuary_form_sent\r\n      }}\r\n      render={formProps => (\r\n            \r\n        <>\r\n          <br/>\r\n          <Typography variant=\"h5\" className=\"grey8\" align=\"center\">\r\n            {translate('settings.annuary_form')}              \r\n          </Typography>  \r\n            \r\n          <Box sx={{ width: '100%', maxWidth: 800, bgcolor: 'background.paper', padding: '25px' }} className=\"settings_box\" >\r\n                \r\n            <Grid container spacing={1}>\r\n              <Grid item xs={12}>\r\n                      \r\n              </Grid>\r\n            </Grid> \r\n                \r\n            <Grid container spacing={1}>\r\n              <Grid item xs={12}>\r\n                <BooleanInput fullWidth source=\"annuary_form_logo\" label={translate('settings.annuary_form_logo')}  />\r\n              </Grid>\r\n            </Grid>  \r\n                \r\n            <Grid container spacing={1}>\r\n              <Grid item xs={12}>\r\n                <BooleanInput fullWidth source=\"annuary_form_notification\" label={translate('settings.annuary_form_notification')}  />\r\n              </Grid>\r\n            </Grid>\r\n                \r\n            <Grid container spacing={1}>\r\n              <Grid item xs={12}>\r\n                <BooleanInput fullWidth source=\"annuary_form_notification_association\" label={translate('settings.annuary_form_notification_association')}  />\r\n              </Grid>\r\n            </Grid>\r\n                \r\n            <Grid container spacing={1}>\r\n              <Grid item xs={12}>\r\n                <BooleanInput fullWidth source=\"annuary_form_notification_num_members\" label={translate('settings.annuary_form_notification_num_members')}  />\r\n              </Grid>\r\n            </Grid>\r\n                \r\n            <Grid container spacing={1}>\r\n              <Grid item xs={12}>\r\n                <TextInput className=\"classrooms_requests_lopd\" fullWidth multiline source=\"annuary_form_text\" label={translate('settings.annuary_form_text')}  />\r\n              </Grid>\r\n            </Grid>\r\n                \r\n            <Grid container spacing={1}>\r\n              <Grid item xs={12}>\r\n                <TextInput className=\"classrooms_requests_lopd\" fullWidth multiline source=\"annuary_form_lopd\" label={translate('settings.annuary_form_lopd')}  />\r\n              </Grid>\r\n            </Grid>\r\n            <Grid container spacing={1}>\r\n              <Grid item xs={12}>\r\n                <TextInput className=\"settings_add_member_lopd\" fullWidth multiline source=\"annuary_form_sent\" label={translate('settings.annuary_form_sent')}  />\r\n              </Grid>\r\n            </Grid>\r\n                \r\n            <SaveButton\r\n              saving={formProps.saving}\r\n              handleSubmitWithRedirect={formProps.handleSubmitWithRedirect}\r\n            />\r\n\r\n          </Box>\r\n        </>\r\n            \r\n      )}\r\n    />\r\n    \r\n  );\r\n  \r\n};\r\n\r\n\r\nexport const SettingsDonationsCertificates = ( props ) => {\r\n    \r\n  var translate = useTranslate();\r\n  const history = useHistory();\r\n  const dataProvider = useDataProvider();\r\n  const [info, setInfo] = useState();\r\n    \r\n  const [showDialog, setShowDialog] = useState(false);\r\n  const notify = useNotify();\r\n  const refresh = useRefresh();  \r\n  const [update, { loading, error }] = useUpdate();\r\n        \r\n  useEffect(() => {\r\n    if (localStorage.getItem('associations_id') !== 0)\r\n    {\r\n      dataProvider.getOne('associations', { id: localStorage.getItem('associations_id') })\r\n        .then(({ data }) => {    \r\n          setInfo(data);\r\n        })\r\n        .catch(error => {                                \r\n        });\r\n    }\r\n  }, []);\r\n\r\n  if (!info) return null;\r\n    \r\n  const handleSubmit = async values => {\r\n    update(\r\n      { \r\n        type: 'update', \r\n        resource: 'associations/donations_certificates', \r\n        payload : { id: values.id, data : values }\r\n      },\r\n      {\r\n        onSuccess: ({ data }) => {\r\n          history.push('/settings');\r\n        },\r\n        onFailure: ( error ) => {\r\n          notify(error.message, 'error');\r\n        }\r\n      }\r\n    );\r\n  };    \r\n        \r\n  return (\r\n                        \r\n    <FormWithRedirect\r\n      resource=\"associations\"        \r\n      save={handleSubmit}\r\n      initialValues={{ id : localStorage.getItem('associations_id'), ...info\r\n      }}\r\n      render={formProps => (\r\n            \r\n        <>\r\n          <br/>\r\n          <Typography variant=\"h5\" className=\"grey8\" align=\"center\">\r\n            {translate('settings.donations_certificates')}              \r\n          </Typography>  \r\n            \r\n          <Box sx={{ width: '100%', maxWidth: 800, bgcolor: 'background.paper', padding: '25px' }} className=\"settings_box\" >\r\n                \r\n            <Grid container spacing={1}>\r\n                <Grid item xs={12}>   \r\n                    <TextInput fullWidth multiline source=\"donations_users_certificate\" label={translate('settings.donations_certificates_donations_users_certificate')} />\r\n                </Grid> \r\n                <Grid item xs={12}> \r\n                    <b>{translate('settings.donations_certificates_donations_users_certificate_vars_title')}</b> <br/>\r\n                    {translate('settings.donations_certificates_donations_users_certificate_vars')}\r\n                    <br/><br/>\r\n                </Grid>\r\n                <Grid item xs={3}> \r\n                    <Grid container spacing={1}>\r\n                        <Grid item xs={12}> \r\n                            <Typography variant=\"h6\" className=\"grey8\" align=\"\">\r\n                                {translate('settings.donations_certificates_header')}              \r\n                            </Typography>\r\n                        </Grid>\r\n                        <Grid item xs={12}> \r\n                            <BoxPhotoUser target={targets.DONATION_CERTIFICATE_HEADER} items_id={localStorage.getItem('associations_id')} edit={true} default_img={-1} className=\"docs_photo_user\" />   \r\n                        </Grid>\r\n                    </Grid>\r\n                </Grid>\r\n                <Grid item xs={1}></Grid> \r\n                <Grid item xs={3}> \r\n                    <Grid container spacing={1}>\r\n                        <Grid item xs={12}> \r\n                            <Typography variant=\"h6\" className=\"grey8\" align=\"\">\r\n                                {translate('settings.donations_certificates_sign')}              \r\n                            </Typography>\r\n                        </Grid>\r\n                        <Grid item xs={12}> \r\n                            <BoxPhotoUser target={targets.DONATION_CERTIFICATE_SIGN} items_id={localStorage.getItem('associations_id')} edit={true} default_img={-1} className=\"docs_photo_user\" />   \r\n                        </Grid>\r\n                    </Grid>\r\n                </Grid>\r\n                <Grid item xs={1}></Grid> \r\n                <Grid item xs={3}> \r\n                    <Grid container spacing={1}>\r\n                        <Grid item xs={12}> \r\n                            <Typography variant=\"h6\" className=\"grey8\" align=\"\">\r\n                                {translate('settings.donations_certificates_footer')}              \r\n                            </Typography>\r\n                        </Grid>\r\n                        <Grid item xs={12}> \r\n                            <BoxPhotoUser target={targets.DONATION_CERTIFICATE_FOOTER} items_id={localStorage.getItem('associations_id')} edit={true} default_img={-1} className=\"docs_photo_user\" />   \r\n                        </Grid>\r\n                    </Grid>\r\n                </Grid>\r\n            </Grid>  \r\n            <br /><br />    \r\n            <SaveButton\r\n              saving={formProps.saving}\r\n              handleSubmitWithRedirect={formProps.handleSubmitWithRedirect}\r\n            />\r\n\r\n          </Box>\r\n        </>\r\n            \r\n      )}\r\n    />\r\n    \r\n  );\r\n  \r\n};\r\n\r\n\r\n\r\nexport const SettingsNotAvailable = ( props ) => {\r\n    \r\n  var translate = useTranslate();\r\n    \r\n  return (        \r\n    <Box sx={{ width: '100%', maxWidth: 500, bgcolor: 'background.paper', padding: '25px' }} className=\"settings_box not_available\" >\r\n                \r\n      <Grid container spacing={1}>\r\n        <Grid item xs={12} align=\"center\">\r\n              Opció temporalment no disponible\r\n        </Grid>\r\n      </Grid>   \r\n    \r\n    </Box>\r\n    \r\n  );\r\n  \r\n};\r\n\r\nconst ResourceName = () => {\r\n  const { resource } = useResourceContext();\r\n  return <>{resource}</>;\r\n};\r\n\r\nexport const SettingsEmails = ( props ) => {\r\n    \r\n  var translate = useTranslate();\r\n  const history = useHistory();\r\n  const dataProvider = useDataProvider();\r\n  const [info, setInfo] = useState();\r\n    \r\n  /*\r\n    const [showDialog, setShowDialog] = useState(false);\r\n    const notify = useNotify();\r\n    const refresh = useRefresh();  \r\n    const [update, { loading, error }] = useUpdate();*/\r\n    \r\n  const { data, ids, loading, error } = useGetList(\r\n    'templates',\r\n    { page: 1, perPage: 1000 },\r\n    { field: 'priority', order: 'ASC' },\r\n    { associations_id : localStorage.getItem('associations_id') }\r\n  );\r\n    \r\n  var gestioAvailableTemplates = ['SKELETON','WELCOME','GROUP_LEFT'];\r\n  var federationAvailableTemplates = ['ANNUARY_SEND', 'ANNUARY_REMINDER','ANNUARY_CONFIRM', 'DONATIONS_USERS_CONFIRMATION', 'DONATIONS_USERS_CERTIFICATE', 'DONATIONS_USERS_PRE_CONFIRMATION_TRANSFER'];\r\n  var digitalCardsAvailableTemplates = ['DIGITAL_CARD_SEND'];\r\n  var remittancesAvailableTemplates = ['RECEIVE_RETURNED', 'RECEIVE_RETURNED_CASH','DONATIONS_USERS_CERTIFICATE'];\r\n  var calendarAvailableTemplates = ['EVENT_INVITE', 'EVENT_REMINDER'];  \r\n  var recercatAvailableTemplates = ['SKELETON', 'RECERCAT_USER_VALIDATE_EMAIL','RECERCAT_CENTER_RESUME','RECERCAT_REQUEST_DENIED_BY_IRMU','RECERCAT_REQUEST_DENIED_BY_CENTER','RECERCAT_CARD_REVOKED_BY_IRMU','RECERCAT_CARD_REVOKED_BY_CENTER','RECERCAT_IRMU_RESUME','RECERCAT_CARD_REVOKED_BY_IRMU_CENTER_DELETED','RECERCAT_USER_REQUEST_KO','RECERCAT_USER_REQUEST_OK'];\r\n  var donationsOwnAvailableTemplates = ['DONATIONS_USERS_PRE_CONFIRMATION_TRANSFER', 'DONATIONS_USERS_CONFIRMATION','DONATIONS_USERS_CERTIFICATE'];  \r\n        \r\n  if (loading) { return <MyLoading />; }\r\n  if (error) { return <p>ERROR</p>; }\r\n              \r\n  return (\r\n        \r\n    <>\r\n      <br/>\r\n      <Typography variant=\"h5\" className=\"grey8\" align=\"center\">\r\n        {translate('settings.emails')}              \r\n      </Typography>\r\n\r\n      <Box sx={{ width: '100%', maxWidth: 500, bgcolor: 'background.paper', padding: '25px' }} className=\"settings_box\" >\r\n        <List>\r\n          {ids.map(id => {\r\n            let link = '/settings-emails/' + id;\r\n            let public_id = data[id].public_id;\r\n            /* Mostrem els templates a modificar segons les subscripcions de l'entitat */            \r\n            if ( localStorage.getItem('permissions_groups') === 'SIFAC' ||\r\n                 subscriptionModule(modules.GESTIO) && gestioAvailableTemplates.indexOf(public_id) > -1 ||\r\n                 subscriptionModule(modules.FEDERATION) && federationAvailableTemplates.indexOf(public_id) > -1 ||\r\n                 subscriptionModule(modules.CALENDAR) && calendarAvailableTemplates.indexOf(public_id) > -1 ||\r\n                 (subscriptionModule(modules.DIGITAL_CARDS) || subscriptionModule(modules.WALLETS)) && digitalCardsAvailableTemplates.indexOf(public_id) > -1 ||\r\n                 subscriptionModule(modules.REMITTANCES) && remittancesAvailableTemplates.indexOf(public_id) > -1 ||\r\n                 subscriptionModule(modules.DONATIONS,modulesOptions.DONATIONS_OWN) && donationsOwnAvailableTemplates.indexOf(public_id) > -1 ||\r\n                 subscriptionModule(modules.RECERCAT) && recercatAvailableTemplates.indexOf(public_id) > -1 )\r\n              return(\r\n                <ListItem>\r\n                  <ListItemButton component={Link} to={{ pathname: link }}>\r\n                    <ListItemIcon>\r\n                      <DraftsIcon />\r\n                    </ListItemIcon>\r\n                    <ListItemText primary={translate('settings.emails_' + data[id].public_id)} secondary={ localStorage.getItem('permissions_groups') === 'SIFAC' ? translate('settings.emails_' + data[id].public_id + '_desc') : null }  />\r\n                  </ListItemButton>\r\n                </ListItem>\r\n              );\r\n            else\r\n              return null;\r\n          }\r\n          )}\r\n        </List>\r\n      </Box>\r\n    </>\r\n    \r\n  );\r\n  \r\n};\r\n\r\n\r\nexport const SettingsEmailsItem = ( props ) => {\r\n    \r\n  var translate = useTranslate();\r\n  const classes = useStyles();\r\n  const history = useHistory();\r\n  const dataProvider = useDataProvider();\r\n  const [info, setInfo] = useState();\r\n    \r\n  const [showDialog, setShowDialog] = useState(false);\r\n  const notify = useNotify();\r\n  const refresh = useRefresh();  \r\n  const [update, { loading, error }] = useUpdate();\r\n  \r\n  const [customFields, setCustomFields] = useState();\r\n  const [error2, setError2] = useState(false);  \r\n  \r\n  var availableCustomFieldsTemplates = ['WELCOME','GROUP_LEFT','DIGITAL_CARD_SEND'];  \r\n        \r\n  useEffect(() => {\r\n      \r\n    dataProvider.getOne('templates', { id: props.match.params.id })\r\n      .then(({ data }) => {    \r\n        setInfo(data);\r\n      })\r\n      .catch(error => {                                \r\n      });\r\n    \r\n    if (subscriptionModule(modules.CUSTOM_FIELDS))  \r\n    {\r\n        fetchCustomFields(localStorage.getItem('associations_id'), targets.USER, setCustomFields, setError2, dataProvider, false, false );        \r\n    }\r\n    \r\n  }, []);\r\n\r\n  if (!info || (subscriptionModule(modules.CUSTOM_FIELDS) && !customFields)) return null;\r\n    \r\n  const handleSubmit = async values => {\r\n    update(\r\n      { \r\n        type: 'update', \r\n        resource: 'templates', \r\n        payload : { id: values.id, data : { \r\n          subject : values.subject,\r\n          content : values.content,\r\n          sender_name : values.sender_name,\r\n          sender_email : values.sender_email,\r\n          reply_to : values.reply_to,\r\n          cc : values.cc,\r\n          bcc : values.bcc,\r\n        } }\r\n      },\r\n      {\r\n        onSuccess: ({ data }) => {\r\n          history.push('/settings-emails');\r\n        },\r\n        onFailure: ( error ) => {\r\n          notify(error.message, 'error');\r\n        }\r\n      }\r\n    );\r\n  };    \r\n    \r\n  const handleCloseClick = () => {\r\n    history.push('/settings-emails');\r\n  };\r\n    \r\n  return (\r\n        \r\n    <FormWithRedirect\r\n      resource=\"templates\"        \r\n      save={handleSubmit}\r\n      initialValues={{ id : info.id, \r\n        subject : info.subject,\r\n        content : info.content,\r\n        sender_name : info.sender_name,\r\n        sender_email : info.sender_email,\r\n        reply_to : info.reply_to,\r\n        cc : info.cc,\r\n        bcc : info.bcc,\r\n      }}\r\n      render={formProps => (\r\n            \r\n        <>\r\n          <br/>\r\n          <Typography variant=\"h5\" className=\"grey8\" align=\"center\">\r\n            {translate('settings.emails_' + info.public_id )}              \r\n          </Typography>\r\n            \r\n          <Box sx={{ width: '100%', maxWidth: 800, bgcolor: 'background.paper', padding: '10px' }} className=\"settings_box\" >\r\n                \r\n            <TabbedShowLayout\r\n              syncWithLocation={false}>\r\n           \r\n              <Tab\r\n                label={translate('settings.emails_message')}\r\n                contentClassName={classes.tab}\r\n                fullWidth\r\n                path=\"\"\r\n              >                 \r\n                <br />\r\n                    \r\n                { info.public_id !== 'SKELETON' && info.public_id !== 'SA_SKELETON' ? \r\n                  <Grid container spacing={1}>\r\n                    <Grid item xs={12}>\r\n                      <TextInput fullWidth source=\"subject\" label={translate('settings.emails_subject')} validate={[validateMaxLength(255,translate('common.validation.maxLength'))]} />\r\n                    </Grid>\r\n                  </Grid>  \r\n                  : <span/> }\r\n\r\n                <Grid container spacing={1}>\r\n                  <Grid item xs={12}>\r\n                    <TextInput multiline fullWidth source=\"content\" label={translate('settings.emails_content')} />                              \r\n                  </Grid>\r\n                </Grid>\r\n                    \r\n                <Grid item xs={12}>\r\n                  <b>{translate('settings.emails_vars')}</b> <br/>\r\n                  {translate('settings.emails_' + info.public_id + '_vars')}\r\n                  <br /><br/>  \r\n                       \r\n                  { subscriptionModule(modules.CUSTOM_FIELDS) && availableCustomFieldsTemplates.includes(info.public_id) ?\r\n                    <>\r\n                    <u>{translate('custom_fields.main_menu_title')}</u>\r\n                    {\r\n                      customFields.map((element, index) => {\r\n                        return (\r\n                          <>\r\n                            <br />\r\n                            {element.name}: %custom_field_{element.id}%\r\n                          </>\r\n                        );\r\n                      })\r\n                    }\r\n                    </> : null \r\n                  }\r\n                </Grid>\r\n\r\n                <DialogActions>\r\n                  <Button label=\"ra.action.cancel\" onClick={handleCloseClick} disabled={loading} >\r\n                    <IconCancel />\r\n                  </Button>\r\n                  <SaveButton\r\n                    saving={formProps.saving}\r\n                    handleSubmitWithRedirect={formProps.handleSubmitWithRedirect}\r\n                  />\r\n                </DialogActions>\r\n                    \r\n              </Tab>\r\n                \r\n              { info.public_id !== 'SKELETON' && info.public_id !== 'SA_SKELETON' ? \r\n                <Tab\r\n                  label={translate('settings.emails_attached')}\r\n                  contentClassName={classes.tab}\r\n                  fullWidth\r\n                  path=\"docs\"\r\n                >   \r\n                  <DocsList target={targets.TEMPLATE} items_id={info.id} />\r\n                  <br />\r\n                </Tab> : <span/> }\r\n                \r\n              { info.public_id !== 'SKELETON' && info.public_id !== 'SA_SKELETON' ? \r\n                <Tab\r\n                  label={translate('settings.emails_headers')}\r\n                  contentClassName={classes.tab}\r\n                  fullWidth\r\n                  path=\"headers\"\r\n                >   \r\n                  <br />\r\n                  <Grid container spacing={1}>\r\n                    <Grid item xs={12}>\r\n                      <TextInput fullWidth source=\"sender_name\" label={translate('settings.emails_headers_sender_name')} validate={[validateMaxLength(255,translate('common.validation.maxLength'))]} />                              \r\n                    </Grid>\r\n                  </Grid>\r\n                    \r\n                  <Grid container spacing={1}>\r\n                    <Grid item xs={6}>\r\n                      <TextInput fullWidth source=\"sender_email\" label={translate('settings.emails_headers_sender_email')} validate={[validateMaxLength(100,translate('common.validation.maxLength'))]} />                              \r\n                    </Grid>\r\n                    <Grid item xs={6}>\r\n                      <TextInput fullWidth source=\"reply_to\" label={translate('settings.emails_headers_reply_to')} validate={[validateMaxLength(100,translate('common.validation.maxLength'))]} />                              \r\n                    </Grid>\r\n                  </Grid>\r\n                    \r\n                  <Grid container spacing={1}>\r\n                    <Grid item xs={6}>\r\n                      <TextInput fullWidth source=\"cc\" label={translate('settings.emails_headers_cc')} validate={[validateMaxLength(255,translate('common.validation.maxLength'))]} />                              \r\n                    </Grid>\r\n                    <Grid item xs={6}>\r\n                      <TextInput fullWidth source=\"bcc\" label={translate('settings.emails_headers_bcc')} validate={[validateMaxLength(255,translate('common.validation.maxLength'))]} />                              \r\n                    </Grid>\r\n                  </Grid>\r\n                    \r\n                  <Grid item xs={12}>\r\n                    <b>{translate('settings.emails_vars')}</b> <br/>\r\n                    {translate('settings.emails_headers_vars')}\r\n                    <br /><br />                    \r\n                  </Grid>\r\n                    \r\n                  <DialogActions>\r\n                    <Button label=\"ra.action.cancel\" onClick={handleCloseClick} disabled={loading} >\r\n                      <IconCancel />\r\n                    </Button>\r\n                    <SaveButton\r\n                      saving={formProps.saving}\r\n                      handleSubmitWithRedirect={formProps.handleSubmitWithRedirect}\r\n                    />\r\n                  </DialogActions>\r\n                    \r\n                  <br />\r\n                </Tab> : <span/> }\r\n                \r\n            </TabbedShowLayout>\r\n                \r\n\r\n          </Box>\r\n        </>\r\n            \r\n      )}\r\n    />\r\n    \r\n  );\r\n  \r\n};\r\n                    \r\n\r\n\r\nexport const SettingsSAdmin = ( props ) => {\r\n    \r\n  var translate = useTranslate();\r\n  const history = useHistory();\r\n  const dataProvider = useDataProvider();\r\n  const [info, setInfo] = useState();\r\n  const notify = useNotify();\r\n        \r\n  const handleBackupClick = (e) => {\r\n    e.preventDefault();\r\n        \r\n    dataProvider.getOne('utils/backup', { id: 0 })\r\n      .then(({ data }) => {    \r\n        notify(translate('settings.done'), 'success');\r\n      })\r\n      .catch(error => {   \r\n        notify(error.message, 'error');\r\n      });        \r\n  };\r\n  \r\n  const handleTemplatesClick = (e) => {\r\n    e.preventDefault();\r\n        \r\n    dataProvider.getOne('templates/copy', { id: 0 })\r\n      .then(({ data }) => {    \r\n        notify(translate('settings.templates_copied'), 'success');\r\n      })\r\n      .catch(error => {   \r\n        notify(error.message, 'error');\r\n      });\r\n        \r\n  };\r\n    \r\n  const handleIbansClick = (e) => {\r\n    e.preventDefault();\r\n        \r\n    dataProvider.getOne('ibans/copy', { id: 0 })\r\n      .then(({ data }) => {    \r\n        notify(translate('settings.done'), 'success');\r\n      })\r\n      .catch(error => {   \r\n        notify(error.message, 'error');\r\n      });\r\n        \r\n  };\r\n  \r\n  const handleRemittancesClick = (e) => {\r\n    e.preventDefault();\r\n        \r\n    dataProvider.getOne('subscriptions/remittances/copy', { id: 0 })\r\n      .then(({ data }) => {    \r\n        notify(translate('settings.done'), 'success');\r\n      })\r\n      .catch(error => {   \r\n        notify(error.message, 'error');\r\n      });\r\n        \r\n  };\r\n  \r\n  const handlePostalLabelsClick = (e) => {\r\n    e.preventDefault();\r\n        \r\n    dataProvider.getOne('postal_labels/default', { id: 0 })\r\n      .then(({ data }) => {    \r\n        notify(translate('settings.done'), 'success');\r\n      })\r\n      .catch(error => {   \r\n        notify(error.message, 'error');\r\n      });\r\n        \r\n  };\r\n            \r\n  return (\r\n        \r\n    <>\r\n      <br/>\r\n      <Typography variant=\"h5\" className=\"grey8\" align=\"center\">\r\n        {translate('settings.maintenance')}              \r\n      </Typography>\r\n\r\n      <Box sx={{ width: '100%', maxWidth: 500, bgcolor: 'background.paper', padding: '25px' }} className=\"settings_box\" >\r\n        \r\n        <List>\r\n        \r\n          <ListItem>\r\n            <ListItemButton component=\"a\" href=\"\" onClick={handleBackupClick} >\r\n              <ListItemIcon>\r\n                <BackupIcon />\r\n              </ListItemIcon>\r\n              <ListItemText primary={translate('settings.backup')} secondary={translate('settings.backup_desc')}  />\r\n            </ListItemButton>\r\n          </ListItem>\r\n          \r\n          <ListItem>\r\n            <ListItemButton component=\"a\" href=\"\" onClick={handleTemplatesClick} >\r\n              <ListItemIcon>\r\n                <DraftsIcon />\r\n              </ListItemIcon>\r\n              <ListItemText primary={translate('settings.emails_copy')} secondary={translate('settings.emails_copy_desc')}  />\r\n            </ListItemButton>\r\n          </ListItem>\r\n                \r\n          <ListItem style={{ display: 'none' }}>\r\n            <ListItemButton component=\"a\" href=\"\" onClick={handleIbansClick} >\r\n              <ListItemIcon>\r\n                <AccountBalanceIcon />\r\n              </ListItemIcon>\r\n              <ListItemText primary={translate('settings.ibans_copy')} secondary={translate('settings.ibans_copy_desc')}  />\r\n            </ListItemButton>\r\n          </ListItem>\r\n          \r\n          <ListItem style={{ display: 'none' }}>\r\n            <ListItemButton component=\"a\" href=\"\" onClick={handleRemittancesClick} >\r\n              <ListItemIcon>\r\n                <DraftsIcon />\r\n              </ListItemIcon>\r\n              <ListItemText primary={translate('settings.remittances_subscriptions')} secondary={translate('settings.remittances_subscriptions_desc')}  />\r\n            </ListItemButton>\r\n          </ListItem>\r\n          \r\n          <ListItem style={{ display: 'none' }}>\r\n            <ListItemButton component=\"a\" href=\"\" onClick={handlePostalLabelsClick} >\r\n              <ListItemIcon>\r\n                <BorderAllIcon />\r\n              </ListItemIcon>\r\n              <ListItemText primary={translate('settings.sa_postal_labels')} secondary={translate('settings.sa_postal_labels_desc')}  />\r\n            </ListItemButton>\r\n          </ListItem>\r\n                \r\n        </List>\r\n            \r\n      </Box>\r\n    </>\r\n    \r\n  );\r\n  \r\n};\r\n\r\n\r\nexport const SettingsDonationsOwn = ( props ) => {\r\n    \r\n  var translate = useTranslate();\r\n  const history = useHistory();\r\n  const dataProvider = useDataProvider();\r\n  const [info, setInfo] = useState();\r\n    \r\n  const [showDialog, setShowDialog] = useState(false);\r\n  const notify = useNotify();\r\n  const refresh = useRefresh();  \r\n  const [update, { loading, error }] = useUpdate();\r\n        \r\n  useEffect(() => {\r\n    if (localStorage.getItem('associations_id') !== 0)\r\n    {\r\n      dataProvider.getOne('associations', { id: localStorage.getItem('associations_id') })\r\n        .then(({ data }) => {    \r\n          setInfo(data);\r\n        })\r\n        .catch(error => {                                \r\n        });\r\n    }\r\n  }, []);\r\n\r\n  if (!info) return null;\r\n    \r\n  const handleSubmit = async values => {\r\n    update(\r\n      { \r\n        type: 'update', \r\n        resource: 'associations/donations_own', \r\n        payload : { id: values.id, data : values }\r\n      },\r\n      {\r\n        onSuccess: ({ data }) => {\r\n          history.push('/settings');\r\n        },\r\n        onFailure: ( error ) => {\r\n          notify(error.message, 'error');\r\n        }\r\n      }\r\n    );\r\n  };    \r\n        \r\n  return (\r\n                        \r\n    <FormWithRedirect\r\n      resource=\"associations\"        \r\n      save={handleSubmit}\r\n      initialValues={{ id : localStorage.getItem('associations_id'), ...info\r\n      }}\r\n      render={formProps => (\r\n            \r\n        <>\r\n          <br/>\r\n          <Typography variant=\"h5\" className=\"grey8\" align=\"center\">\r\n            {translate('settings.donations_own')}              \r\n          </Typography>  \r\n            \r\n          <Box sx={{ width: '100%', maxWidth: 800, bgcolor: 'background.paper', padding: '25px' }} className=\"settings_box\" >\r\n                \r\n            <Grid container spacing={1}>\r\n                  <Grid item xs={12}>   \r\n                    <TextInput fullWidth source=\"donations_own_header\" multiline label={translate('settings.donations_own_donations_own_header')} validate={[]} />\r\n                  </Grid> \r\n                  <Grid item xs={12}>   \r\n                    <TextInput fullWidth source=\"donations_own_footer\" multiline label={translate('settings.donations_own_donations_own_footer')} validate={[]} />\r\n                  </Grid> \r\n                  <Grid item xs={12}>   \r\n                    <TextInput fullWidth source=\"donations_own_privacy\" multiline label={translate('settings.donations_own_donations_own_privacy')} validate={[]} />\r\n                  </Grid> \r\n                  <Grid item xs={12}>   \r\n                    <TextInput fullWidth source=\"donations_own_terms\" multiline label={translate('settings.donations_own_donations_own_terms')} validate={[]} />\r\n                  </Grid> \r\n                  <Grid item xs={12}>   \r\n                    <TextInput fullWidth source=\"donations_own_fiscal\" multiline label={translate('settings.donations_own_donations_own_fiscal')} validate={[]} />\r\n                  </Grid>                   \r\n            </Grid>    \r\n            <SaveButton\r\n              saving={formProps.saving}\r\n              handleSubmitWithRedirect={formProps.handleSubmitWithRedirect}\r\n            />\r\n\r\n          </Box>\r\n        </>\r\n            \r\n      )}\r\n    />\r\n    \r\n  );\r\n  \r\n};\r\n\r\n\r\nexport const SettingsDocs = ( props ) => {\r\n    \r\n  var translate = useTranslate();\r\n  const history = useHistory();\r\n  const dataProvider = useDataProvider();\r\n  const [info, setInfo] = useState();\r\n    \r\n  const [showDialog, setShowDialog] = useState(false);\r\n  const notify = useNotify();\r\n  const refresh = useRefresh();  \r\n  const [update, { loading, error }] = useUpdate();\r\n            \r\n        \r\n  return (\r\n      <>\r\n      <br/>\r\n      <Typography variant=\"h5\" className=\"grey8\" align=\"center\">\r\n        {translate('settings.docs')}              \r\n      </Typography>\r\n      <Box sx={{ bgcolor: 'background.paper', padding: '20px' }} className=\"settings_box\" >\r\n        <DocsList target={targets.SETTINGS_DOCS} items_id={localStorage.getItem('associations_id')} />\r\n      </Box>\r\n      <br/>\r\n      </>\r\n    \r\n  );\r\n  \r\n};","// in src/Dashboard.js\r\nimport React, { useState, useEffect } from 'react';\r\n\r\nimport Grid from '@mui/material/Grid';\r\nimport Box from '@material-ui/core/Box';\r\nimport Typography from '@mui/material/Typography';\r\n\r\nimport {        \r\n  SelectInput,\r\n  TextInput,\r\n  required, \r\n  BooleanInput,\r\n  useCreate, \r\n  FormWithRedirect, \r\n  SaveButton, \r\n  useDataProvider, \r\n  Loading, \r\n  DateInput\r\n} from 'react-admin';\r\n\r\nimport { validateMaxLength, validateEmail, validateTrue  } from '../components/Validator';\r\n\r\nimport { parse } from 'query-string';\r\n\r\n\r\nimport { useTranslate  } from '../common/language';\r\nimport { choicesGenderUser, targets } from '../common/constants';\r\n\r\nimport MyLoading from '../components/MyLoading';\r\nimport { CustomFieldsEdit } from '../components/CustomFields';\r\nimport { ImageViewer } from '../resources/docs';\r\n\r\n\r\nimport { styled } from '@mui/material/styles';\r\nimport Dialog from '@mui/material/Dialog';\r\nimport DialogTitle from '@mui/material/DialogTitle';\r\nimport DialogContent from '@mui/material/DialogContent';\r\nimport IconButton from '@mui/material/IconButton';\r\nimport CloseIcon from '@mui/icons-material/Close';\r\n\r\nconst BootstrapDialog = styled(Dialog)(({ theme }) => ({\r\n  '& .MuiDialogContent-root': {\r\n    padding: theme.spacing(2),\r\n  },\r\n  '& .MuiDialogActions-root': {\r\n    padding: theme.spacing(1),\r\n  },\r\n}));\r\n\r\n\r\n\r\nexport const AddMember = props => {\r\n    \r\n  const translate = useTranslate();  \r\n  const dataProvider = useDataProvider();\r\n    \r\n  const [info, setInfo] = useState();\r\n  const [loading, setLoading] = useState(true);\r\n  const [error, setError] = useState();\r\n  const [errorApi, setErrorApi] = useState();\r\n  const [create] = useCreate('users/public');\r\n  const [formSent, setFormSent] = useState();\r\n    \r\n  const { associations_id: associations_id_string } = parse(props.location.search);\r\n  const associations_id = associations_id_string ? parseInt(associations_id_string, 10) : '';\r\n    \r\n  const [open, setOpen] = React.useState(false);\r\n  const [openLopd, setOpenLopd] = React.useState(false);\r\n\r\n  const openErrorDialog = () => {\r\n    setOpen(true);\r\n  };\r\n  const closeErrorDialog = () => {\r\n    setOpen(false);\r\n  };\r\n    \r\n  const openLopdDialog = () => {\r\n    setOpenLopd(true);\r\n  };\r\n  const closeLopdDialog = () => {\r\n    setOpenLopd(false);\r\n  };\r\n\r\n  useEffect(() => {\r\n    dataProvider.getOne('associations/public', { id: associations_id })\r\n      .then(( { data } ) => {   \r\n        setInfo(data);\r\n        setLoading(false);\r\n        setError(false);\r\n      })\r\n      .catch(error => {                \r\n        setLoading(false);  \r\n        setError(true);\r\n      });\r\n  }, []);\r\n    \r\n  if (loading) return <MyLoading />;\r\n  if (error) return <center><br /><br/>{translate('add_member.association_not_found')}</center>;\r\n  if (!info) return null;\r\n       \r\n  /*\r\n    const htmlDecode = input => {\r\n        var e = document.createElement('div');\r\n        e.innerHTML = input;\r\n        return e.childNodes.length === 0 ? \"\" : e.childNodes[0].nodeValue;\r\n    }*/\r\n    \r\n  const handleSubmit = values => {\r\n    create(            \r\n      { payload: { data: values } },\r\n      {\r\n        onSuccess: ({ data }) => {              \r\n          setFormSent(true);\r\n          setErrorApi('');\r\n        },\r\n        onFailure: ( error ) => {\r\n          setErrorApi(error.message);\r\n          openErrorDialog();                                    \r\n        }\r\n      }\r\n    );\r\n  };\r\n    \r\n  if (formSent)\r\n  {\r\n    return (\r\n      <Box sx={{ width: '90%', maxWidth: 800, bgcolor: 'background.paper', padding: '20px' }} className=\"add_member_box\" >\r\n        <Grid container spacing={1}>\r\n          <Grid item xs={12}>  \r\n            { info.add_member_logo ? \r\n              <>\r\n                { info.image > 0 ? \r\n                  <center><ImageViewer docs_id={info.image} className=\"docs_logo_add_member\" is_public={true} /></center>\r\n                  : \r\n                  <Typography variant=\"h4\" className=\"grey8\" align=\"center\">\r\n                    <br/>{info.name}          \r\n                  </Typography>\r\n                } \r\n                <br /><br />                            \r\n              </>\r\n              :\r\n              <span/>\r\n            }\r\n          </Grid>\r\n        </Grid>  \r\n                \r\n        <div className=\"add_member_form_sent\" dangerouslySetInnerHTML={{ __html: info.add_member_form_sent }} />\r\n                                \r\n      </Box>\r\n    );\r\n  }\r\n    \r\n  if (!info.add_member_actived)\r\n    return <center><br /><br/>{translate('add_member.form_not_actived')}</center>;    \r\n  else\r\n    return (\r\n            \r\n      <FormWithRedirect\r\n        resource=\"users\"        \r\n        save={handleSubmit}\r\n        initialValues={{ associations_id : info.id ,\r\n          user_type: 0\r\n        }}\r\n        render={formProps => (\r\n          <>     \r\n            <Box sx={{ width: '90%', maxWidth: 800, bgcolor: 'background.paper', padding: '20px' }} className=\"add_member_box\" >\r\n              <Grid container spacing={1}>\r\n                <Grid item xs={12}>  \r\n                  { info.add_member_logo ? \r\n                    <>\r\n                      { info.image > 0 ? \r\n                        <center><ImageViewer docs_id={info.image} className=\"docs_logo_add_member\" is_public={true} /></center>\r\n                        : \r\n                        <Typography variant=\"h4\" className=\"grey8\" align=\"center\">\r\n                          <br/>{info.name}          \r\n                        </Typography>\r\n                      } \r\n                      <br />\r\n                      <Typography variant=\"h5\" className=\"grey8\" align=\"center\">\r\n                        {translate('add_member.form_title')}              \r\n                      </Typography>\r\n                      <br /><br />\r\n                    </>\r\n                    :\r\n                    <span/>\r\n                  }\r\n                </Grid>\r\n              </Grid>   \r\n                \r\n              {info.add_member_form_text ?\r\n                <Grid item xs={12} className=\"justify\">\r\n                  <div dangerouslySetInnerHTML={{ __html: info.add_member_form_text }} />\r\n                  <br />\r\n                </Grid>\r\n                : null }\r\n                                      \r\n              <Grid container spacing={1} >\r\n                <Grid item xs={12} sm={4}>\r\n                  <TextInput className=\"add_member_input\" label={translate('users.first_name')} fullWidth source=\"first_name\" validate={[required(),validateMaxLength(100,translate('common.validation.maxLength'))]} />\r\n                </Grid>\r\n                <Grid item xs={12} sm={4}>\r\n                  <TextInput className=\"add_member_input\" label={translate('users.last_name_1')} fullWidth source=\"last_name_1\" validate={[required(),validateMaxLength(100,translate('common.validation.maxLength'))]} />\r\n                </Grid>\r\n                <Grid item xs={12} sm={4}>\r\n                  <TextInput className=\"add_member_input\" label={translate('users.last_name_2')} fullWidth source=\"last_name_2\" validate={[required(),validateMaxLength(100,translate('common.validation.maxLength'))]} />\r\n                </Grid>\r\n                <Grid item xs={12} sm={8}>\r\n                  <TextInput className=\"add_member_input\" fullWidth source=\"email\" label={translate('users.email')} validate={[required(),validateMaxLength(100,translate('common.validation.maxLength')),validateEmail()]} />\r\n                </Grid>\r\n                <Grid item xs={12} sm={4}>\r\n                  <TextInput className=\"add_member_input\" fullWidth source=\"nif\" label={translate('users.nif')} validate={[required(),validateMaxLength(10,translate('common.validation.maxLength'))]} />\r\n                </Grid>\r\n              </Grid>  \r\n                                   \r\n              <Grid container spacing={1}>\r\n                <Grid item xs={12} sm={8}>\r\n                  <TextInput className=\"add_member_input\" fullWidth source=\"address\" label={translate('users.address')} validate={[required(),validateMaxLength(255,translate('common.validation.maxLength'))]} />\r\n                </Grid>\r\n                <Grid item xs={12} sm={4}>\r\n                  <TextInput className=\"add_member_input\" fullWidth source=\"neighborhood\" label={translate('users.neighborhood')} validate={[validateMaxLength(100,translate('common.validation.maxLength'))]} />\r\n                </Grid>\r\n              </Grid>\r\n                \r\n              <Grid container spacing={1}>     \r\n                <Grid item xs={12} sm={4}>\r\n                  <TextInput className=\"add_member_input\" fullWidth source=\"zip\" label={translate('users.zip')} validate={[required(),validateMaxLength(5,translate('common.validation.maxLength'))]} />\r\n                </Grid>\r\n                <Grid item xs={12} sm={4}>\r\n                  <TextInput className=\"add_member_input\" fullWidth source=\"city\" label={translate('users.city')} validate={[required(),validateMaxLength(100,translate('common.validation.maxLength'))]} />\r\n                </Grid>\r\n                <Grid item xs={12} sm={4}>\r\n                  <TextInput className=\"add_member_input\" fullWidth source=\"region\" label={translate('users.region')} validate={[validateMaxLength(100,translate('common.validation.maxLength'))]} />\r\n                </Grid>                    \r\n              </Grid>\r\n                   \r\n              <Grid container spacing={1}>   \r\n                <Grid item xs={12} sm={4}>\r\n                  <TextInput className=\"add_member_input\" fullWidth source=\"country\" label={translate('users.country')} validate={[required(),validateMaxLength(255,translate('common.validation.maxLength'))]} />\r\n                </Grid>\r\n                <Grid item xs={12} sm={4}>\r\n                  <TextInput className=\"add_member_input\" fullWidth source=\"phone\" label={translate('users.phone')} validate={[validateMaxLength(50,translate('common.validation.maxLength'))]} />\r\n                </Grid>\r\n                <Grid item xs={12} sm={4}>\r\n                  <TextInput className=\"add_member_input\" fullWidth source=\"mobile\" label={translate('users.mobile')} validate={[required(),validateMaxLength(15,translate('common.validation.maxLength'))]} />\r\n                </Grid>\r\n              </Grid>\r\n                \r\n              <Grid container spacing={2}>\r\n                <Grid item xs={12} sm={4}>\r\n                  <DateInput className=\"add_member_input\" fullWidth source=\"birthday\" label={translate('users.birthday')} validate={[required()]} />\r\n                </Grid>\r\n                <Grid item xs={12} sm={4}>\r\n                  <TextInput className=\"add_member_input\" fullWidth source=\"job\" label={translate('users.job')} validate={[validateMaxLength(100,translate('common.validation.maxLength'))]} />\r\n                </Grid>\r\n                <Grid item xs={12} sm={4}>\r\n                  <SelectInput className=\"add_member_input\" fullWidth source=\"gender\" choices={choicesGenderUser(translate)} optionText=\"name\" optionValue=\"id\" label={translate('users.gender')} validate={[]} />    \r\n                </Grid>\r\n              </Grid>  \r\n                \r\n              { info.add_member_bank_data ? \r\n                <>\r\n                  <Grid container spacing={1}>\r\n                    <Grid item xs={12} sm={8}>\r\n                      <TextInput className=\"add_member_input\" fullWidth source=\"iban\" label={translate('users.bank_iban')} validate={[required(),validateMaxLength(32,translate('common.validation.maxLength'))]} />\r\n                    </Grid>                        \r\n                    <Grid item xs={12} sm={4}>\r\n                      <TextInput className=\"add_member_input\" fullWidth source=\"swift\" label={translate('users.bank_swift')} validate={[validateMaxLength(11,translate('common.validation.maxLength'))]} />\r\n                    </Grid>\r\n                  </Grid>\r\n                </>\r\n                    \r\n                :\r\n                <span />\r\n              }\r\n                                \r\n              <CustomFieldsEdit associations_id={info.id} target={targets.USER} title={false} accordion={false} only_form_web={true} />\r\n                                \r\n              <Grid spacing={2}>\r\n                <Grid item xs={12} sm={12}>\r\n                  <TextInput className=\"add_member_input\" fullWidth multiline source=\"comment\" label={translate('users.add_member_comments')} validate={[validateMaxLength(1000,translate('common.validation.maxLength'))]} />\r\n                </Grid>\r\n              </Grid>\r\n              <Grid spacing={2}>\r\n                <Grid item xs={12}>\r\n                  <BooleanInput className=\"add_member_input\" fullWidth source=\"lopd\" label={<>{translate('add_member.form_lopd')} <a href='#' onClick={(e)=>{e.preventDefault(); openLopdDialog();}}>{translate('add_member.lopd')}</a></>} validate={[validateTrue(translate('add_member.form_lopd_validator'))]} />\r\n                </Grid>\r\n              </Grid>\r\n                                \r\n              <div className=\"add_member_button\" >\r\n                <SaveButton\r\n                  saving={formProps.saving}\r\n                  handleSubmitWithRedirect={formProps.handleSubmitWithRedirect}\r\n                  label={translate('users.add_member_send')}\r\n                  icon={<span />}\r\n                />\r\n              </div>\r\n\r\n            </Box>\r\n            <br /><br />\r\n            \r\n            <BootstrapDialog\r\n              onClose={closeLopdDialog}\r\n              aria-labelledby=\"customized-dialog-title\"\r\n              open={openLopd}\r\n              fullWidth\r\n              maxWidth=\"lg\"\r\n            >\r\n              <DialogTitle sx={{ m: 0, p: 2 }}>\r\n                {translate('add_member.lopd')}   \r\n                <IconButton\r\n                  aria-label=\"close\"\r\n                  onClick={closeLopdDialog}\r\n                  sx={{\r\n                    position: 'absolute',\r\n                    right: 8,\r\n                    top: 8,\r\n                    color: (theme) => theme.palette.grey[500],\r\n                  }}\r\n                >\r\n                  <CloseIcon />\r\n                </IconButton>\r\n              </DialogTitle>\r\n\r\n              <DialogContent>   \r\n                <div dangerouslySetInnerHTML={{ __html: info.add_member_lopd }} />\r\n              </DialogContent>\r\n            </BootstrapDialog>\r\n              \r\n            <BootstrapDialog\r\n              onClose={closeErrorDialog}\r\n              aria-labelledby=\"customized-dialog-title\"\r\n              open={open}\r\n            >\r\n              <DialogTitle sx={{ m: 0, p: 2 }}>\r\n                {translate('add_member.form_title')}   \r\n                <IconButton\r\n                  aria-label=\"close\"\r\n                  onClick={closeErrorDialog}\r\n                  sx={{\r\n                    position: 'absolute',\r\n                    right: 8,\r\n                    top: 8,\r\n                    color: (theme) => theme.palette.grey[500],\r\n                  }}\r\n                >\r\n                  <CloseIcon />\r\n                </IconButton>\r\n              </DialogTitle>\r\n    \r\n              <DialogContent dividers>\r\n                <Typography gutterBottom>\r\n                  {errorApi}\r\n                </Typography>\r\n              </DialogContent>\r\n            </BootstrapDialog>\r\n      \r\n          </>\r\n            \r\n            \r\n        )}\r\n      />\r\n        \r\n    );\r\n  \r\n};\r\n\r\n","// in src/posts.js\r\nimport React, { useState } from 'react';\r\n\r\nimport {\r\n  List, \r\n  Datagrid,\r\n  TextField,\r\n  DeleteButton,\r\n  TextInput,\r\n  Button ,\r\n  TopToolbar, required,NumberInput,  ResourceContextProvider, useCreate, useRefresh, FormWithRedirect, SaveButton,\r\n  useUpdate,\r\n  useNotify\r\n    \r\n} from 'react-admin';\r\n\r\n\r\n\r\n\r\n\r\nimport { useTranslate  } from '../common/language';\r\n\r\nimport Typography from '@mui/material/Typography';\r\n\r\n\r\n\r\nimport EditIcon from '@material-ui/icons/Edit';\r\nimport Grid from '@mui/material/Grid';\r\nimport IconContentAdd from '@material-ui/icons/Add';\r\nimport IconCancel from '@material-ui/icons/Cancel';\r\n\r\n\r\nimport Dialog from '@material-ui/core/Dialog';\r\nimport DialogTitle from '@material-ui/core/DialogTitle';\r\nimport DialogContent from '@material-ui/core/DialogContent';\r\nimport DialogActions from '@material-ui/core/DialogActions';\r\n\r\n\r\n\r\n\r\nimport Box from '@material-ui/core/Box';\r\n\r\n\r\nimport { validateMaxLength, validateInteger  } from './../components/Validator';\r\n\r\n\r\nexport const SettingsIbans = (props) => {\r\n  const translate = useTranslate();    \r\n    \r\n  let strRedirect =  '/settings-ibans';  \r\n    \r\n  return (\r\n    <>\r\n      <br/>\r\n      <Typography variant=\"h5\" className=\"grey8\" align=\"center\">\r\n        {translate('settings.ibans_desc')}              \r\n      </Typography>\r\n      <Box sx={{ bgcolor: 'background.paper', padding: '20px' }} className=\"settings_box\" >\r\n        <ResourceContextProvider value=\"ibans\">\r\n          <List {...props} \r\n            basePath=\"/ibans\" \r\n            sort={{ field: 'priority', order: 'ASC' }} \r\n            actions={<ListActionsIbansList/>}    \r\n            filter={{ associations_id : localStorage.getItem('associations_id') }}  \r\n            bulkActionButtons={false}  \r\n            pagination={false}\r\n            empty={<ListActionsIbansList />} \r\n            fullWidth\r\n          >        \r\n            <Datagrid fullWidth>            \r\n              { localStorage.getItem('permissions_groups') === 'SIFAC' ? <TextField source=\"public_id\" label={translate('ibans.public_id')} sortable={false} /> : null }\r\n              <TextField source=\"name\" label={translate('ibans.name')} sortable={false} />   \r\n              <TextField source=\"ordering\" label={translate('ibans.ordering')} sortable={false} />   \r\n              <TextField source=\"nif\" label={translate('ibans.nif')} sortable={false} />   \r\n              <TextField source=\"iban\" label={translate('ibans.iban')} sortable={false} />   \r\n              <TextField source=\"swift\" label={translate('ibans.swift')} sortable={false} />   \r\n              <TextField source=\"sufix\" label={translate('ibans.sufix')} sortable={false} />   \r\n              <TextField source=\"returns_tax\" label={translate('ibans.returns_tax')} sortable={false} />            \r\n              <IbansEditButton label=\"\" />\r\n              <DeleteButton undoable={false} redirect={strRedirect} label=\"\"/>\r\n            </Datagrid>        \r\n          </List>\r\n        </ResourceContextProvider>\r\n      </Box>\r\n    </>\r\n  );\r\n};\r\n\r\nconst ListActionsIbansList = (props) => {\r\n  const translate = useTranslate(); \r\n  return (\r\n    <TopToolbar>     \r\n      <IbansCreateButton />      \r\n    </TopToolbar>\r\n  );\r\n};\r\n\r\n\r\nconst IbansCreateButton = ({ ...props }) => {\r\n\r\n  const [showDialog, setShowDialog] = useState(false);\r\n    \r\n  const notify = useNotify();\r\n  const refresh = useRefresh();    \r\n  const translate = useTranslate();  \r\n\r\n  const [create, { loading }] = useCreate('ibans');\r\n\r\n  const handleClick = () => {\r\n    setShowDialog(true);\r\n  };\r\n\r\n  const handleCloseClick = () => {\r\n    setShowDialog(false);\r\n  };\r\n\r\n  const handleSubmit = async values => {\r\n    create(            \r\n      { payload: { data: values } },\r\n      {\r\n        onSuccess: ({ data }) => {\r\n          setShowDialog(false);\r\n          refresh();\r\n        },\r\n        onFailure: ( error ) => {\r\n          notify( error.message , 'error');\r\n        }\r\n      }\r\n    );\r\n  };    \r\n\r\n  return (\r\n    <>            \r\n      <Button onClick={handleClick} label={translate('ibans.create')}>\r\n        <IconContentAdd />                \r\n      </Button>\r\n\r\n      <Dialog\r\n        fullWidth\r\n        open={showDialog}\r\n        onClose={handleCloseClick}\r\n        aria-label={translate('ibans.create')}\r\n        className=\"dialog-md\"\r\n        maxWidth=\"lg\"\r\n      >\r\n        <DialogTitle>{translate('ibans.create')}</DialogTitle>\r\n\r\n        <FormWithRedirect\r\n          resource=\"ibans\"\r\n          save={handleSubmit}\r\n          initialValues={ { associations_id : localStorage.getItem('associations_id'), bank_country_iso: 'ES', priority: 0, sufix: '000', ordering : localStorage.getItem('associations_name'), public_id: ''  } }\r\n          render={({\r\n            handleSubmitWithRedirect,\r\n            pristine,\r\n            saving\r\n          }) => (\r\n            <>\r\n              <FormContent />\r\n              <DialogActions>\r\n                <Button label=\"ra.action.cancel\" onClick={handleCloseClick} disabled={loading} >\r\n                  <IconCancel />\r\n                </Button>\r\n                <SaveButton\r\n                  handleSubmitWithRedirect={\r\n                    handleSubmitWithRedirect\r\n                  }\r\n                  pristine={pristine}\r\n                  saving={saving}\r\n                  disabled={loading}\r\n                />\r\n              </DialogActions>\r\n            </>\r\n          )}\r\n        />\r\n      </Dialog>\r\n    </>\r\n  );\r\n};\r\n\r\nconst FormContent = (props) => {\r\n\r\n  const translate = useTranslate(); \r\n  return (\r\n    <DialogContent>\r\n      <Grid container spacing={2}>\r\n        <Grid item xs={8}>     \r\n          <TextInput fullWidth source=\"name\" label={translate('ibans.name')} validate={[required(),validateMaxLength(100,translate('common.validation.maxLength'))]} />\r\n        </Grid> \r\n         { localStorage.getItem('permissions_groups') === 'SIFAC' ? \r\n        <Grid item xs={2}> \r\n          <TextInput fullWidth source=\"public_id\" label={translate('ibans.public_id')} validate={[validateMaxLength(255,translate('common.validation.maxLength'))]} />   \r\n        </Grid> \r\n        : null }\r\n        <Grid item xs={localStorage.getItem('permissions_groups') === 'SIFAC' ? 2 : 4}> \r\n          <NumberInput fullWidth source=\"priority\" label={translate('common.priority')} />   \r\n        </Grid> \r\n      </Grid>\r\n      <Grid container spacing={2}>\r\n        <Grid item xs={9}> \r\n          <TextInput fullWidth source=\"ordering\" label={translate('ibans.ordering')} validate={[required(),validateMaxLength(150,translate('common.validation.maxLength'))]} />\r\n        </Grid> \r\n        <Grid item xs={3}> \r\n          <TextInput fullWidth source=\"nif\" label={translate('ibans.nif')} validate={[validateMaxLength(10,translate('common.validation.maxLength'))]} />\r\n        </Grid> \r\n      </Grid>\r\n      <Grid container spacing={2}>\r\n        <Grid item xs={6}>                                         \r\n          <TextInput fullWidth source=\"iban\" label={translate('ibans.iban')} validate={[validateMaxLength(32,translate('common.validation.maxLength'))]} />\r\n        </Grid> \r\n        <Grid item xs={3}> \r\n          <TextInput fullWidth source=\"swift\" label={translate('ibans.swift')} validate={[validateMaxLength(11,translate('common.validation.maxLength'))]} />\r\n        </Grid> \r\n        <Grid item xs={3}> \r\n          <TextInput fullWidth source=\"sufix\" label={translate('ibans.sufix')} validate={[validateMaxLength(3,translate('common.validation.maxLength'))]} />\r\n        </Grid>                     \r\n      </Grid>  \r\n      <Grid container spacing={2}>\r\n        <Grid item xs={4}> \r\n          <NumberInput fullWidth source=\"returns_tax\" label={translate('ibans.returns_tax')} parse={value => value ? value : 0 } validate={[validateInteger(translate('common.validation.number'))]} />        \r\n        </Grid> \r\n      </Grid> \r\n    </DialogContent>\r\n  );\r\n};\r\n\r\n/*\r\n<Grid container spacing={2}>                                    \r\n    <Grid item xs={3}> \r\n        <TextInput fullWidth source=\"bank_country_iso\" label={translate('ibans.bank_country_iso')} validate={[validateMaxLength(2,translate('common.validation.maxLength'))]} disabled /> \r\n    </Grid> \r\n</Grid>\r\n*/\r\n\r\nconst IbansEditButton = ({ ...props }) => {\r\n\r\n  const [showDialog, setShowDialog] = useState(false);\r\n    \r\n  const notify = useNotify();\r\n  const refresh = useRefresh();    \r\n  const translate = useTranslate();  \r\n\r\n  const [update, { loading, error }] = useUpdate();\r\n\r\n  const handleClick = () => {\r\n    setShowDialog(true);\r\n  };\r\n\r\n  const handleCloseClick = () => {\r\n    setShowDialog(false);\r\n  };\r\n\r\n  const handleSubmit = async values => {\r\n    update(\r\n      { \r\n        type: 'update', \r\n        resource: 'ibans', \r\n        payload : { id: values.id, data : values }\r\n      },\r\n      {\r\n        onSuccess: ({ data }) => {\r\n          setShowDialog(false);\r\n          refresh();\r\n        },\r\n        onFailure: ( error ) => {\r\n          notify(error.message, 'error');\r\n        }\r\n      }\r\n    );\r\n  };    \r\n\r\n  return (\r\n    <>\r\n      <Button onClick={handleClick} label=\"\" startIcon={<EditIcon />} />\r\n\r\n      <Dialog\r\n        fullWidth\r\n        open={showDialog}\r\n        onClose={handleCloseClick}\r\n        aria-label={translate('ibans.edit')}\r\n        className=\"dialog-md\"\r\n        maxWidth=\"lg\"\r\n      >\r\n        <DialogTitle>{translate('ibans.edit')}</DialogTitle>\r\n\r\n        <FormWithRedirect\r\n          resource=\"ibans\"\r\n          save={handleSubmit}\r\n          initialValues={ props.record }\r\n          render={({\r\n            handleSubmitWithRedirect,\r\n            pristine,\r\n            saving\r\n          }) => (\r\n            <>\r\n              <FormContent />\r\n              <DialogActions>\r\n                <Button label=\"ra.action.cancel\" onClick={handleCloseClick} disabled={loading} >\r\n                  <IconCancel />\r\n                </Button>\r\n                <SaveButton\r\n                  handleSubmitWithRedirect={\r\n                    handleSubmitWithRedirect\r\n                  }\r\n                  pristine={pristine}\r\n                  saving={saving}\r\n                  disabled={loading}\r\n                />\r\n              </DialogActions>\r\n            </>\r\n          )}\r\n        />\r\n      </Dialog>\r\n    </>\r\n  );\r\n};\r\n\r\n","// in src/posts.js\r\nimport React, { useState } from 'react';\r\n\r\nimport {\r\n  List, \r\n  Datagrid,\r\n  TextField,\r\n  DeleteButton,\r\n  TextInput,\r\n  Button ,\r\n  TopToolbar, required,NumberInput,  ResourceContextProvider, useCreate, useRefresh, FormWithRedirect, SaveButton,\r\n  useUpdate,\r\n  useNotify,\r\n  BooleanField,\r\n  BooleanInput,\r\n  SelectInput,\r\n  FormDataConsumer,\r\n  FunctionField\r\n} from 'react-admin';\r\n\r\n\r\nimport { useTranslate  } from '../common/language';\r\n\r\nimport Typography from '@mui/material/Typography';\r\nimport CreditCardIcon from '@mui/icons-material/CreditCard';\r\nimport Avatar from '@mui/material/Avatar';\r\n\r\n\r\nimport EditIcon from '@material-ui/icons/Edit';\r\nimport Grid from '@mui/material/Grid';\r\nimport IconContentAdd from '@material-ui/icons/Add';\r\nimport IconCancel from '@material-ui/icons/Cancel';\r\n\r\n\r\nimport Dialog from '@material-ui/core/Dialog';\r\nimport DialogTitle from '@material-ui/core/DialogTitle';\r\nimport DialogContent from '@material-ui/core/DialogContent';\r\nimport DialogActions from '@material-ui/core/DialogActions';\r\n\r\n\r\n\r\n\r\nimport Box from '@material-ui/core/Box';\r\n\r\n\r\nimport { validateMaxLength, validateInteger  } from './../components/Validator';\r\n\r\n\r\nexport const SettingsPaymentSystems = (props) => {\r\n  const translate = useTranslate();    \r\n    \r\n  let basePath='/payment_systems'; \r\n  let resource = 'payment_systems';\r\n  let strRedirect =  '/settings-payment-systems';  \r\n    \r\n  return (\r\n    <>\r\n      <br/>\r\n      <Typography variant=\"h5\" className=\"grey8\" align=\"center\">\r\n        {translate('settings.payment_systems_desc')}              \r\n      </Typography>\r\n      <Box sx={{ bgcolor: 'background.paper', padding: '20px' }} className=\"settings_box\" >\r\n        <ResourceContextProvider value={resource}>\r\n      <List \r\n        basePath={basePath}   \r\n        filter={{ associations_id : localStorage.getItem('associations_id') }}  \r\n        actions={<ListActions />}    \r\n        empty={<ListActions />}        \r\n        bulkActionButtons={false}          \r\n        perPage={1000}   \r\n        pagination={false}\r\n        sort={{ field: 'id', order: 'ASC' }} \r\n        label=\"\"  \r\n        title=\"\"  \r\n        resource={resource}        \r\n      >        \r\n        <Datagrid> \r\n          <Avatar><CreditCardIcon /></Avatar>     \r\n          <FunctionField render={record => translate('payment_systems.plattform_' + record.plattform ) } label={translate('payment_systems.plattform')} sortable={false} />\r\n          <TextField source=\"name\" label={translate('payment_systems.name')} sortable={false} />    \r\n          {localStorage.getItem('permissions_groups') === 'SIFAC' ?\r\n          <TextField source=\"public_id\" label={translate('payment_systems.public_id')} sortable={false} />    \r\n          : null }\r\n          <TextField source=\"url\" label={translate('payment_systems.url')} sortable={false} />   \r\n          <BooleanField source=\"real\" label={translate('payment_systems.real')} sortable={false} />  \r\n          <MyEditButton label=\"\" />\r\n          <DeleteButton undoable={false} redirect={strRedirect} label=\"\"/>\r\n        </Datagrid>        \r\n      </List>\r\n    </ResourceContextProvider>\r\n      </Box>\r\n    </>\r\n  );\r\n};\r\n\r\nconst ListActions = (props) => {\r\n  const translate = useTranslate(); \r\n  return (\r\n    <TopToolbar>     \r\n      <MyCreateButton />      \r\n    </TopToolbar>\r\n  );\r\n};\r\n\r\n\r\nconst MyCreateButton = ({ ...props }) => {\r\n\r\n  const [showDialog, setShowDialog] = useState(false);\r\n    \r\n  const notify = useNotify();\r\n  const refresh = useRefresh();    \r\n  const translate = useTranslate();  \r\n\r\n  const [create, { loading }] = useCreate('payment_systems');\r\n\r\n  const handleClick = () => {\r\n    setShowDialog(true);\r\n  };\r\n\r\n  const handleCloseClick = () => {\r\n    setShowDialog(false);\r\n  };\r\n\r\n  const handleSubmit = async values => {\r\n    create(            \r\n      { payload: { data: values } },\r\n      {\r\n        onSuccess: ({ data }) => {\r\n          setShowDialog(false);\r\n          refresh();\r\n        },\r\n        onFailure: ( error ) => {\r\n          notify( error.message , 'error');\r\n        }\r\n      }\r\n    );\r\n  };    \r\n\r\n  return (\r\n    <>            \r\n      <Button onClick={handleClick} label={translate('payment_systems.create')}>\r\n        <IconContentAdd />                \r\n      </Button>\r\n\r\n      <Dialog\r\n        fullWidth\r\n        open={showDialog}\r\n        onClose={handleCloseClick}\r\n        aria-label={translate('payment_systems.create')}\r\n        className=\"dialog-md\"\r\n        maxWidth=\"md\"\r\n      >\r\n        <DialogTitle>{translate('payment_systems.create')}</DialogTitle>\r\n\r\n        <FormWithRedirect\r\n          resource=\"payment_systems\"\r\n          save={handleSubmit}\r\n          initialValues={ { associations_id : localStorage.getItem('associations_id'), currency: 978, transaction_type: 0, plattform: 0 } }\r\n          render={({\r\n            handleSubmitWithRedirect,\r\n            pristine,\r\n            saving\r\n          }) => (\r\n            <>\r\n              <FormContent />\r\n              <DialogActions>\r\n                <Button label=\"ra.action.cancel\" onClick={handleCloseClick} disabled={loading} >\r\n                  <IconCancel />\r\n                </Button>\r\n                <SaveButton\r\n                  handleSubmitWithRedirect={\r\n                    handleSubmitWithRedirect\r\n                  }\r\n                  pristine={pristine}\r\n                  saving={saving}\r\n                  disabled={loading}\r\n                />\r\n              </DialogActions>\r\n            </>\r\n          )}\r\n        />\r\n      </Dialog>\r\n    </>\r\n  );\r\n};\r\n\r\nconst FormContent = (props) => {\r\n\r\n  const translate = useTranslate(); \r\n  return (\r\n    <DialogContent>\r\n      <FormDataConsumer>\r\n      {({ formData, ...rest }) => \r\n      <Grid container spacing={2}>     \r\n        <Grid item xs={3}>   \r\n            <SelectInput fullWidth source=\"plattform\" label={translate('payment_systems.plattform')} validate={[required()]} choices={[{id:0,name:translate('payment_systems.plattform_0')},{id:1,name:translate('payment_systems.plattform_1')}]} />\r\n        </Grid> \r\n        <Grid item xs={localStorage.getItem('permissions_groups') === 'SIFAC' ? 6 : 9}>   \r\n            <TextInput fullWidth source=\"name\" label={translate('payment_systems.name')} validate={[required(),validateMaxLength(255,translate('common.validation.maxLength'))]} />\r\n        </Grid> \r\n        {localStorage.getItem('permissions_groups') === 'SIFAC' ?\r\n        <Grid item xs={3}>   \r\n            <TextInput fullWidth source=\"public_id\" label={translate('payment_systems.public_id')} validate={[validateMaxLength(255,translate('common.validation.maxLength'))]} />\r\n        </Grid> \r\n        : null }\r\n        <Grid item xs={3}>   \r\n            <TextInput fullWidth source=\"merchant\" label={translate('payment_systems.merchant')} validate={[required(),validateMaxLength(255,translate('common.validation.maxLength'))]} />\r\n        </Grid>                 \r\n        <Grid item xs={3}>   \r\n            <TextInput fullWidth source=\"terminal\" label={translate('payment_systems.terminal')} validate={[required(),validateMaxLength(255,translate('common.validation.maxLength'))]} />            \r\n        </Grid> \r\n        <Grid item xs={2}>   \r\n            <TextInput fullWidth source=\"currency\" label={translate('payment_systems.currency')} validate={[required(),validateMaxLength(255,translate('common.validation.maxLength'))]} />\r\n        </Grid> \r\n        <Grid item xs={4}>   \r\n            <TextInput fullWidth source=\"encrypt\" label={translate('payment_systems.encrypt')} validate={[required(),validateMaxLength(255,translate('common.validation.maxLength'))]} />\r\n        </Grid>   \r\n        { false ?\r\n        <Grid item xs={2}>               \r\n            <TextInput fullWidth source=\"transaction_type\" label={translate('payment_systems.transaction_type')} validate={[required(),validateMaxLength(255,translate('common.validation.maxLength'))]} />            \r\n        </Grid> : null }\r\n        <Grid item xs={6}>   \r\n            <TextInput fullWidth source=\"url\" label={translate('payment_systems.url')} validate={[required(),validateMaxLength(255,translate('common.validation.maxLength'))]} />\r\n        </Grid>\r\n        <Grid item xs={6}>   \r\n            <TextInput fullWidth source=\"url_test\" label={translate('payment_systems.url_test')} validate={[required(),validateMaxLength(255,translate('common.validation.maxLength'))]} />\r\n        </Grid>\r\n        <Grid item xs={12}>   \r\n            <TextInput fullWidth source=\"url_async\" label={translate('payment_systems.url_async')} validate={[required(),validateMaxLength(255,translate('common.validation.maxLength'))]} />\r\n        </Grid> \r\n        <Grid item xs={6}>   \r\n            <TextInput fullWidth source=\"url_ok\" label={translate('payment_systems.url_ok')} validate={[required(),validateMaxLength(255,translate('common.validation.maxLength'))]} />\r\n        </Grid> \r\n        <Grid item xs={6}>   \r\n            <TextInput fullWidth source=\"url_ko\" label={translate('payment_systems.url_ko')} validate={[required(),validateMaxLength(255,translate('common.validation.maxLength'))]} />\r\n        </Grid> \r\n        <Grid item xs={12}>   \r\n            <BooleanInput fullWidth source=\"real\" label={translate('payment_systems.real')}  />\r\n        </Grid>                \r\n      </Grid> \r\n      }\r\n      </FormDataConsumer>\r\n    </DialogContent>\r\n  );\r\n};\r\n\r\nconst MyEditButton = ({ ...props }) => {\r\n\r\n  const [showDialog, setShowDialog] = useState(false);\r\n    \r\n  const notify = useNotify();\r\n  const refresh = useRefresh();    \r\n  const translate = useTranslate();  \r\n\r\n  const [update, { loading, error }] = useUpdate();\r\n\r\n  const handleClick = () => {\r\n    setShowDialog(true);\r\n  };\r\n\r\n  const handleCloseClick = () => {\r\n    setShowDialog(false);\r\n  };\r\n\r\n  const handleSubmit = async values => {\r\n    update(\r\n      { \r\n        type: 'update', \r\n        resource: 'payment_systems', \r\n        payload : { id: values.id, data : values }\r\n      },\r\n      {\r\n        onSuccess: ({ data }) => {\r\n          setShowDialog(false);\r\n          refresh();\r\n        },\r\n        onFailure: ( error ) => {\r\n          notify(error.message, 'error');\r\n        }\r\n      }\r\n    );\r\n  };    \r\n\r\n  return (\r\n    <>\r\n      <Button onClick={handleClick} label=\"\" startIcon={<EditIcon />} />\r\n\r\n      <Dialog\r\n        fullWidth\r\n        open={showDialog}\r\n        onClose={handleCloseClick}\r\n        aria-label={translate('payment_systems.edit')}\r\n        className=\"dialog-md\"\r\n        maxWidth=\"md\"\r\n      >\r\n        <DialogTitle>{translate('payment_systems.edit')}</DialogTitle>\r\n\r\n        <FormWithRedirect\r\n          resource=\"payment_systems\"\r\n          save={handleSubmit}\r\n          initialValues={ props.record }\r\n          render={({\r\n            handleSubmitWithRedirect,\r\n            pristine,\r\n            saving\r\n          }) => (\r\n            <>\r\n              <FormContent />\r\n              <DialogActions>\r\n                <Button label=\"ra.action.cancel\" onClick={handleCloseClick} disabled={loading} >\r\n                  <IconCancel />\r\n                </Button>\r\n                <SaveButton\r\n                  handleSubmitWithRedirect={\r\n                    handleSubmitWithRedirect\r\n                  }\r\n                  pristine={pristine}\r\n                  saving={saving}\r\n                  disabled={loading}\r\n                />\r\n              </DialogActions>\r\n            </>\r\n          )}\r\n        />\r\n      </Dialog>\r\n    </>\r\n  );\r\n};\r\n\r\n","// in src/posts.js\r\nimport React, { useState } from 'react';\r\n\r\nimport {\r\n  List, \r\n  Datagrid,\r\n  TextField,\r\n  DeleteButton,\r\n  TextInput,\r\n  Button ,\r\n  TopToolbar, required,NumberInput,  ResourceContextProvider, useCreate, useRefresh, FormWithRedirect, SaveButton,\r\n  useUpdate,\r\n  useNotify,\r\n  FunctionField,\r\n  BooleanInput\r\n    \r\n} from 'react-admin';\r\n\r\n\r\n\r\n\r\n\r\nimport { useTranslate  } from '../common/language';\r\n\r\nimport Typography from '@mui/material/Typography';\r\n\r\n\r\n\r\nimport EditIcon from '@material-ui/icons/Edit';\r\nimport Grid from '@mui/material/Grid';\r\nimport IconContentAdd from '@material-ui/icons/Add';\r\nimport IconCancel from '@material-ui/icons/Cancel';\r\n\r\n\r\nimport Dialog from '@material-ui/core/Dialog';\r\nimport DialogTitle from '@material-ui/core/DialogTitle';\r\nimport DialogContent from '@material-ui/core/DialogContent';\r\nimport DialogActions from '@material-ui/core/DialogActions';\r\n\r\n\r\n\r\n\r\nimport Box from '@material-ui/core/Box';\r\n\r\n\r\nimport { validateMaxLength, validateInteger  } from './../components/Validator';\r\n\r\n\r\nexport const SettingsPostalLabels = (props) => {\r\n  const translate = useTranslate();    \r\n    \r\n  let strRedirect =  '/settings-postal-labels';  \r\n    \r\n  return (\r\n    <>\r\n      <br/>\r\n      <Typography variant=\"h5\" className=\"grey8\" align=\"center\">\r\n        {translate('settings.postal_labels_desc')}              \r\n      </Typography>\r\n      <Box sx={{ bgcolor: 'background.paper', padding: '20px' }} className=\"settings_box\" >\r\n        <ResourceContextProvider value=\"postal_labels\">\r\n          <List {...props} \r\n            basePath=\"/postal_labels\" \r\n            sort={{ field: 'priority', order: 'ASC' }} \r\n            actions={<ListActions />}    \r\n            filter={{ associations_id : localStorage.getItem('associations_id') }}  \r\n            bulkActionButtons={false}  \r\n            pagination={false}\r\n            empty={<ListActions />} \r\n            fullWidth\r\n          >        \r\n            <Datagrid fullWidth>\r\n              <TextField source=\"name\" label={translate('postal_labels.name')} sortable={false} />   \r\n              <FunctionField label={translate('postal_labels.colxrows')} render={record => \r\n                record.num_columns + ' x ' + record.num_rows\r\n              } sortable={false}  />              \r\n              <PostalLabelsEditButton label=\"\" />\r\n              <DeleteButton undoable={false} redirect={strRedirect} label=\"\"/>\r\n            </Datagrid>        \r\n          </List>\r\n        </ResourceContextProvider>\r\n      </Box>\r\n    </>\r\n  );\r\n};\r\n\r\nconst ListActions = (props) => {\r\n  const translate = useTranslate(); \r\n  return (\r\n    <TopToolbar>     \r\n      <PostalLabelsCreateButton />      \r\n    </TopToolbar>\r\n  );\r\n};\r\n\r\n\r\nconst PostalLabelsCreateButton = ({ ...props }) => {\r\n\r\n  const [showDialog, setShowDialog] = useState(false);\r\n    \r\n  const notify = useNotify();\r\n  const refresh = useRefresh();    \r\n  const translate = useTranslate();  \r\n\r\n  const [create, { loading }] = useCreate('postal_labels');\r\n\r\n  const handleClick = () => {\r\n    setShowDialog(true);\r\n  };\r\n\r\n  const handleCloseClick = () => {\r\n    setShowDialog(false);\r\n  };\r\n\r\n  const handleSubmit = async values => {\r\n    create(            \r\n      { payload: { data: values } },\r\n      {\r\n        onSuccess: ({ data }) => {\r\n          setShowDialog(false);\r\n          refresh();\r\n        },\r\n        onFailure: ( error ) => {\r\n          notify( error.message , 'error');\r\n        }\r\n      }\r\n    );\r\n  };    \r\n\r\n  return (\r\n    <>            \r\n      <Button onClick={handleClick} label={translate('postal_labels.create')}>\r\n        <IconContentAdd />                \r\n      </Button>\r\n\r\n      <Dialog\r\n        fullWidth\r\n        open={showDialog}\r\n        onClose={handleCloseClick}\r\n        aria-label={translate('postal_labels.create')}\r\n        \r\n        maxWidth=\"md\"\r\n      >\r\n        <DialogTitle>{translate('postal_labels.create')}</DialogTitle>\r\n\r\n        <FormWithRedirect\r\n          resource=\"postal_labels\"\r\n          save={handleSubmit}\r\n          initialValues={ { associations_id : localStorage.getItem('associations_id'), \r\n              name: 'Etiquetes', \r\n              num_columns : 3, \r\n              num_rows: 8, \r\n              template : '%nom% %cognom1% %cognom2%\\n%adreca%\\n%cp% %poblacio%\\n%pais%',\r\n              font_size: 9,\r\n              line_separator: 3,\r\n              margin_cell_left : 1.0,\r\n              margin_cell_top : 0.5,\r\n              margin_cell_right : 0.3,\r\n              margin_cell_bottom : 0.3,\r\n              margin_page_left : 0.0,\r\n              margin_page_top : 0.0,\r\n              margin_page_right : 0.0,\r\n              margin_page_bottom : 0.0,\r\n              last_row : true,\r\n              priority : 1              \r\n          } }\r\n          render={({\r\n            handleSubmitWithRedirect,\r\n            pristine,\r\n            saving\r\n          }) => (\r\n            <>\r\n              <FormContent />\r\n              <DialogActions>\r\n                <Button label=\"ra.action.cancel\" onClick={handleCloseClick} disabled={loading} >\r\n                  <IconCancel />\r\n                </Button>\r\n                <SaveButton\r\n                  handleSubmitWithRedirect={\r\n                    handleSubmitWithRedirect\r\n                  }\r\n                  pristine={pristine}\r\n                  saving={saving}\r\n                  disabled={loading}\r\n                />\r\n              </DialogActions>\r\n            </>\r\n          )}\r\n        />\r\n      </Dialog>\r\n    </>\r\n  );\r\n};\r\n\r\nconst FormContent = (props) => {\r\n\r\n    /*\r\n     *  \r\n        <Grid item xs={2}> \r\n          <NumberInput fullWidth source=\"priority\" label={translate('common.priority')} />   \r\n        </Grid> \r\n     */\r\n    \r\n  const translate = useTranslate(); \r\n  return (\r\n    <DialogContent>\r\n      <Grid container spacing={2}>\r\n        <Grid item xs={12}>     \r\n          <TextInput fullWidth source=\"name\" label={translate('postal_labels.name')} validate={[required(),validateMaxLength(255,translate('common.validation.maxLength'))]} />\r\n        </Grid>\r\n      </Grid>\r\n      <Grid container spacing={2}>\r\n        <Grid item xs={3}> \r\n          <NumberInput fullWidth source=\"num_columns\" label={translate('postal_labels.num_columns')} validate={[required()]} />\r\n        </Grid> \r\n        <Grid item xs={3}> \r\n          <NumberInput fullWidth source=\"num_rows\" label={translate('postal_labels.num_rows')} validate={[required()]} />\r\n        </Grid> \r\n        <Grid item xs={3}> \r\n          <NumberInput fullWidth source=\"font_size\" label={translate('postal_labels.font_size')} validate={[required()]} />\r\n        </Grid> \r\n        <Grid item xs={3}> \r\n          <NumberInput fullWidth source=\"line_separator\" label={translate('postal_labels.line_separator')} validate={[required()]} />\r\n        </Grid> \r\n      </Grid>\r\n        \r\n      <Grid container spacing={2}>\r\n        <Grid item xs={8}> \r\n          <TextInput multiline fullWidth source=\"template\" label={translate('postal_labels.template')} />  \r\n        </Grid> \r\n        <Grid item xs={4}> \r\n        {translate('postal_labels.available_fields')}<br /><br />{translate('postal_labels.fields')}\r\n        </Grid> \r\n      </Grid> \r\n      \r\n      <br/><span>{translate('postal_labels.margins_cell')}</span>  \r\n      <Grid container spacing={2}>\r\n        <Grid item xs={3}>                                         \r\n          <NumberInput fullWidth source=\"margin_cell_left\" label={translate('postal_labels.margin_cell_left')} />\r\n        </Grid> \r\n        <Grid item xs={3}> \r\n          <NumberInput fullWidth source=\"margin_cell_top\" label={translate('postal_labels.margin_cell_top')} />\r\n        </Grid> \r\n        <Grid item xs={3}> \r\n          <NumberInput fullWidth source=\"margin_cell_right\" label={translate('postal_labels.margin_cell_right')} />\r\n        </Grid> \r\n        <Grid item xs={3}> \r\n          <NumberInput fullWidth source=\"margin_cell_bottom\" label={translate('postal_labels.margin_cell_bottom')} />\r\n        </Grid> \r\n      </Grid>  \r\n      <br/><span>{translate('postal_labels.margins_page')}</span>\r\n      <Grid container spacing={2}>\r\n        <Grid item xs={3}>                                         \r\n          <NumberInput fullWidth source=\"margin_page_left\" label={translate('postal_labels.margin_page_left')} />\r\n        </Grid> \r\n        <Grid item xs={3}> \r\n          <NumberInput fullWidth source=\"margin_page_top\" label={translate('postal_labels.margin_page_top')} />\r\n        </Grid> \r\n        <Grid item xs={3}> \r\n          <NumberInput fullWidth source=\"margin_page_right\" label={translate('postal_labels.margin_page_right')} />\r\n        </Grid> \r\n        <Grid item xs={3}> \r\n          <NumberInput fullWidth source=\"margin_page_bottom\" label={translate('postal_labels.margin_page_bottom')} />\r\n        </Grid> \r\n      </Grid> \r\n      <Grid container spacing={2}>\r\n        <Grid item xs={12}> \r\n          <BooleanInput fullWidth source=\"last_row\" label={translate('postal_labels.last_row')} />        \r\n        </Grid> \r\n      </Grid> \r\n    </DialogContent>\r\n  );\r\n};\r\n\r\n\r\nconst PostalLabelsEditButton = ({ ...props }) => {\r\n\r\n  const [showDialog, setShowDialog] = useState(false);\r\n    \r\n  const notify = useNotify();\r\n  const refresh = useRefresh();    \r\n  const translate = useTranslate();  \r\n\r\n  const [update, { loading, error }] = useUpdate();\r\n\r\n  const handleClick = () => {\r\n    setShowDialog(true);\r\n  };\r\n\r\n  const handleCloseClick = () => {\r\n    setShowDialog(false);\r\n  };\r\n\r\n  const handleSubmit = async values => {\r\n    update(\r\n      { \r\n        type: 'update', \r\n        resource: 'postal_labels', \r\n        payload : { id: values.id, data : values }\r\n      },\r\n      {\r\n        onSuccess: ({ data }) => {\r\n          setShowDialog(false);\r\n          refresh();\r\n        },\r\n        onFailure: ( error ) => {\r\n          notify(error.message, 'error');\r\n        }\r\n      }\r\n    );\r\n  };    \r\n\r\n  return (\r\n    <>\r\n      <Button onClick={handleClick} label=\"\" startIcon={<EditIcon />} />\r\n\r\n      <Dialog\r\n        fullWidth\r\n        open={showDialog}\r\n        onClose={handleCloseClick}\r\n        aria-label={translate('postal_labels.edit')}\r\n        className=\"dialog-md\"\r\n        maxWidth=\"lg\"\r\n      >\r\n        <DialogTitle>{translate('postal_labels.edit')}</DialogTitle>\r\n\r\n        <FormWithRedirect\r\n          resource=\"postal_labels\"\r\n          save={handleSubmit}\r\n          initialValues={ props.record }\r\n          render={({\r\n            handleSubmitWithRedirect,\r\n            pristine,\r\n            saving\r\n          }) => (\r\n            <>\r\n              <FormContent />\r\n              <DialogActions>\r\n                <Button label=\"ra.action.cancel\" onClick={handleCloseClick} disabled={loading} >\r\n                  <IconCancel />\r\n                </Button>\r\n                <SaveButton\r\n                  handleSubmitWithRedirect={\r\n                    handleSubmitWithRedirect\r\n                  }\r\n                  pristine={pristine}\r\n                  saving={saving}\r\n                  disabled={loading}\r\n                />\r\n              </DialogActions>\r\n            </>\r\n          )}\r\n        />\r\n      </Dialog>\r\n    </>\r\n  );\r\n};\r\n\r\n","import React from 'react';\r\n\r\nexport const RecercatHeader = () => {\r\n  return (\r\n    <header className=\"Header recercat\">\r\n      <img src=\"img/recercat_header.png\" alt=\"Logo\" className=\"Header_logo\" />\r\n    </header>\r\n  );\r\n};\r\n","// in src/Dashboard.js\r\nimport React, { useState, useEffect } from 'react';\r\n\r\nimport { useFormState } from 'react-final-form';\r\n\r\n\r\n\r\n\r\nimport Grid from '@mui/material/Grid';\r\nimport Box from '@material-ui/core/Box';\r\nimport Typography from '@mui/material/Typography';\r\n\r\n\r\n\r\nimport {\r\n  ReferenceInput,\r\n  SelectInput,\r\n  TextInput, required,BooleanInput, useCreate, useRefresh, FormWithRedirect, SaveButton, useDataProvider, Loading,\r\n  useNotify,\r\n  AutocompleteInput\r\n\r\n    \r\n} from 'react-admin';\r\n\r\nimport { validateMaxLength, validateEmail, validateTrue  } from '../components/Validator';\r\nimport MyLoading from '../components/MyLoading';\r\n\r\nimport { parse } from 'query-string';\r\n\r\n\r\n\r\n\r\n\r\nimport { useTranslate  } from '../common/language';\r\nimport { RecercatHeader } from './../components/RecercatHeader';\r\n\r\n\r\n\r\nimport { styled } from '@mui/material/styles';\r\nimport Dialog from '@mui/material/Dialog';\r\nimport DialogTitle from '@mui/material/DialogTitle';\r\nimport DialogContent from '@mui/material/DialogContent';\r\nimport IconButton from '@mui/material/IconButton';\r\nimport CloseIcon from '@mui/icons-material/Close';\r\n\r\nconst BootstrapDialog = styled(Dialog)(({ theme }) => ({\r\n  '& .MuiDialogContent-root': {\r\n    padding: theme.spacing(2),\r\n  },\r\n  '& .MuiDialogActions-root': {\r\n    padding: theme.spacing(1),\r\n  },\r\n}));\r\n\r\n\r\n\r\nexport const RecercatAddMember = props => {\r\n    \r\n  const translate = useTranslate();  \r\n  const dataProvider = useDataProvider();\r\n    \r\n  const [info, setInfo] = useState();\r\n  const [cities, setCities] = useState();\r\n  const [loading, setLoading] = useState(true);\r\n  const [error, setError] = useState();\r\n  const [errorApi, setErrorApi] = useState();\r\n  const [create] = useCreate('users/public/recercat');\r\n  const refresh = useRefresh(); \r\n  const notify = useNotify();\r\n  const [formSent, setFormSent] = useState();\r\n    \r\n  const { associations_id: associations_id_string } = parse(props.location.search);\r\n  const associations_id = associations_id_string ? parseInt(associations_id_string, 10) : '';\r\n    \r\n  const [open, setOpen] = React.useState(false);\r\n  const [openLopd, setOpenLopd] = React.useState(false);\r\n\r\n  const openErrorDialog = () => {\r\n    setOpen(true);\r\n  };\r\n  const closeErrorDialog = () => {\r\n    setOpen(false);\r\n  };\r\n  const openLopdDialog = () => {\r\n    setOpenLopd(true);\r\n  };\r\n  const closeLopdDialog = () => {\r\n    setOpenLopd(false);\r\n  };\r\n    \r\n  useEffect(() => {\r\n    dataProvider.getOne('associations/public', { id: associations_id })\r\n      .then(( { data } ) => {   \r\n                \r\n        setInfo(data);\r\n        \r\n        dataProvider\r\n          .getList('recercat_centers/public/cities', {\r\n            pagination: { page: 0, perPage: 10000 },\r\n            sort: { field: 'name', order: 'ASC' },\r\n            filter: { associations_id: associations_id },\r\n          })\r\n          .then(({ data }) => {\r\n            setCities(data);\r\n            setLoading(false);\r\n            setError(false);\r\n          })\r\n          .catch((error) => {\r\n            setError(error);\r\n            setLoading(false);\r\n          });\r\n                \r\n      })\r\n      .catch(error => {                \r\n        setLoading(false);  \r\n        setError(true);\r\n      });\r\n  }, []);\r\n    \r\n  if (loading) return <MyLoading />;\r\n  if (error || info && info.public_id !== 'RECERCAT') return (<>\r\n    <RecercatHeader />\r\n    <Box sx={{ width: '90%', maxWidth: 800, bgcolor: 'background.paper', padding: '20px' }} className=\"add_member_box recercat\" >\r\n      <div className=\"add_member_form_sent\" dangerouslySetInnerHTML={{ __html: translate('add_member.recercat_association_not_found') }} />\r\n    </Box>\r\n  </>);\r\n            \r\n  if (!cities) return null;\r\n           \r\n  const handleSubmit = values => {\r\n    create(            \r\n      { payload: { data: values } },\r\n      {\r\n        onSuccess: ({ data }) => {              \r\n          setFormSent(true);\r\n          setErrorApi('');\r\n        },\r\n        onFailure: ( error ) => {\r\n          setErrorApi(error.message);\r\n          openErrorDialog();                                    \r\n        }\r\n      }\r\n    );\r\n  };\r\n    \r\n  if (formSent)\r\n  {\r\n    return (\r\n      <>\r\n        <RecercatHeader />\r\n        <Box sx={{ width: '90%', maxWidth: 800, bgcolor: 'background.paper', padding: '20px' }} className=\"add_member_box recercat\" >\r\n          <h1>{translate('recercat_centers.form_title')}</h1>\r\n          <div className=\"add_member_form_sent\" dangerouslySetInnerHTML={{ __html: info.add_member_form_sent }} />\r\n        </Box>\r\n      </>\r\n    );\r\n  }\r\n    \r\n  if (!info.add_member_actived)\r\n    return <>\r\n      <RecercatHeader />\r\n      <Box sx={{ width: '90%', maxWidth: 800, bgcolor: 'background.paper', padding: '20px' }} className=\"add_member_box recercat\" >\r\n        <h1>{translate('recercat_centers.form_title')}</h1>\r\n        <div className=\"add_member_form_sent\" dangerouslySetInnerHTML={{ __html: translate('add_member.form_not_actived') }} />\r\n      </Box>\r\n    </>;\r\n            \r\n  return (\r\n            \r\n    <FormWithRedirect\r\n      resource=\"users\"        \r\n      save={handleSubmit}\r\n      initialValues={{ associations_id : info.id, user_type: 0 }}\r\n      render={formProps => (\r\n        <>     \r\n          <RecercatHeader />\r\n            \r\n          <Box sx={{ width: '90%', maxWidth: 800, bgcolor: 'background.paper', padding: '20px' }} className=\"add_member_box recercat\" >   \r\n            <h1>{translate('recercat_centers.form_title')}</h1>\r\n            <Grid container spacing={1} >                \r\n              <Grid item xs={12} className=\"justify\">\r\n                <div dangerouslySetInnerHTML={{ __html: info.add_member_form_text }} />\r\n              </Grid>\r\n              <Grid item xs={12} sm={4}>\r\n                <TextInput className=\"add_member_input\" label={translate('users.first_name')} fullWidth source=\"first_name\" validate={[required(),validateMaxLength(100,translate('common.validation.maxLength'))]} />\r\n              </Grid>\r\n              <Grid item xs={12} sm={4}>\r\n                <TextInput className=\"add_member_input\" label={translate('users.last_name_1')} fullWidth source=\"last_name_1\" validate={[required(),validateMaxLength(100,translate('common.validation.maxLength'))]} />\r\n              </Grid>\r\n              <Grid item xs={12} sm={4}>\r\n                <TextInput className=\"add_member_input\" label={translate('users.last_name_2')} fullWidth source=\"last_name_2\" validate={[required(),validateMaxLength(100,translate('common.validation.maxLength'))]} />\r\n              </Grid>\r\n              <Grid item xs={12}>\r\n                <TextInput className=\"add_member_input\" fullWidth source=\"email\" label={translate('users.email')} validate={[required(),validateMaxLength(100,translate('common.validation.maxLength')),validateEmail()]} />\r\n              </Grid>\r\n              <Grid item xs={12}>      \r\n                <AutocompleteInput \r\n                  optionText={ (record)=> record.name } \r\n                  suggestionLimit={1000}\r\n                  resettable={true}\r\n                  clearAlwaysVisible={true}\r\n                  validate={[required()]}\r\n                  fullWidth\r\n                  disabled={false}\r\n                  choices={cities}\r\n                  source=\"recercat_centers_city\"\r\n                  label={translate('recercat_centers.column_city')}\r\n                />\r\n              </Grid>\r\n              <Grid item xs={12}>\r\n                <OptionsRecercatCentersInput associations_id={info.id} source=\"recercat_centers_id\"   />                            \r\n              </Grid> \r\n              <Grid item xs={12} className=\"text-right little\" >\r\n                {translate('recercat_centers.required_fields')}<br /><br />\r\n              </Grid>\r\n              <Grid item xs={12}>\r\n                <BooleanInput className=\"add_member_input\" fullWidth source=\"lopd\" label={<>{translate('add_member.form_lopd')} <a href='#' onClick={(e)=>{e.preventDefault(); openLopdDialog();}}>{translate('add_member.lopd')}</a></>} validate={[validateTrue(translate('add_member.form_lopd_validator'))]} />\r\n              </Grid>\r\n            </Grid>  \r\n            <br/>                               \r\n            <div className=\"add_member_button\" >\r\n              <SaveButton\r\n                saving={formProps.saving}\r\n                handleSubmitWithRedirect={formProps.handleSubmitWithRedirect}\r\n                label={translate('add_member.recercat_request_send')}\r\n                icon={<span />}\r\n              />\r\n            </div>\r\n\r\n          </Box>\r\n          <br /><br />\r\n            \r\n          <BootstrapDialog\r\n            onClose={closeLopdDialog}\r\n            aria-labelledby=\"customized-dialog-title\"\r\n            open={openLopd}\r\n            fullWidth\r\n            maxWidth=\"lg\"\r\n          >\r\n            <DialogTitle sx={{ m: 0, p: 2 }}>\r\n              {translate('add_member.lopd')}   \r\n              <IconButton\r\n                aria-label=\"close\"\r\n                onClick={closeLopdDialog}\r\n                sx={{\r\n                  position: 'absolute',\r\n                  right: 8,\r\n                  top: 8,\r\n                  color: (theme) => theme.palette.grey[500],\r\n                }}\r\n              >\r\n                <CloseIcon />\r\n              </IconButton>\r\n            </DialogTitle>\r\n\r\n            <DialogContent>   \r\n              <div dangerouslySetInnerHTML={{ __html: info.add_member_lopd }} />\r\n            </DialogContent>\r\n          </BootstrapDialog>\r\n              \r\n          <BootstrapDialog\r\n            onClose={closeErrorDialog}\r\n            aria-labelledby=\"customized-dialog-title\"\r\n            open={open}\r\n          >\r\n            <DialogTitle sx={{ m: 0, p: 2 }}>\r\n              {translate('add_member.recercat_form_title')}   \r\n              <IconButton\r\n                aria-label=\"close\"\r\n                onClick={closeErrorDialog}\r\n                sx={{\r\n                  position: 'absolute',\r\n                  right: 8,\r\n                  top: 8,\r\n                  color: (theme) => theme.palette.grey[500],\r\n                }}\r\n              >\r\n                <CloseIcon />\r\n              </IconButton>\r\n            </DialogTitle>\r\n    \r\n            <DialogContent dividers>\r\n              <Typography gutterBottom>\r\n                {errorApi}\r\n              </Typography>\r\n            </DialogContent>\r\n          </BootstrapDialog>\r\n      \r\n        </>\r\n            \r\n            \r\n      )}\r\n    />\r\n        \r\n  );\r\n  \r\n};\r\n\r\nconst OptionsRecercatCentersInput = props => {\r\n  const translate = useTranslate();   \r\n  const { values } = useFormState();\r\n    \r\n  return (\r\n    values.recercat_centers_city ? \r\n      <ReferenceInput fullWidth source=\"recercat_centers_id\" reference=\"recercat_centers/public\"  label={translate('recercat_centers.column_center')} link={false} sortable={false} filter={{ associations_id : props.associations_id, q: values.recercat_centers_city  }} perPage={10000} sort={{ field: 'name', order: 'ASC' }} >\r\n        <SelectInput optionText=\"name\" optionValue=\"id\" resettable validate={[required()]} />  \r\n      </ReferenceInput> : ''\r\n  );\r\n};","// in src/Dashboard.js\r\nimport React, { useState, useEffect } from 'react';\r\n\r\n\r\n\r\n\r\nimport Grid from '@mui/material/Grid';\r\nimport Box from '@material-ui/core/Box';\r\n\r\n\r\n\r\nimport CheckCircleOutlineIcon from '@mui/icons-material/CheckCircleOutline';\r\n\r\nimport { RecercatHeader } from './../components/RecercatHeader';\r\n\r\n\r\nimport { useCreate, useRefresh, useDataProvider,\r\n  useNotify\r\n} from 'react-admin';\r\n\r\n\r\n\r\nimport { parse } from 'query-string';\r\n\r\n\r\n\r\n\r\nimport { useTranslate  } from '../common/language';\r\n\r\nimport { makeStyles } from '@material-ui/core/styles';\r\n\r\n\r\nimport IconButton from '@mui/material/IconButton';\r\n\r\n\r\n\r\n\r\n\r\n\r\nconst useStyles = makeStyles((theme) => ({  \r\n  largeIconOK: {\r\n    '& svg': {\r\n      fontSize: 100,\r\n      color: '#007E12'\r\n    }\r\n  }\r\n  ,\r\n  largeIconKO: {\r\n    '& svg': {\r\n      fontSize: 200,\r\n      color: '#FF7373'\r\n    }\r\n  }\r\n}));\r\n\r\n\r\nexport const RecercatValidateRequest = props => {\r\n    \r\n  const translate = useTranslate();  \r\n  const dataProvider = useDataProvider();\r\n  const classes = useStyles();\r\n    \r\n  const [info, setInfo] = useState();\r\n  const [loading, setLoading] = useState(true);\r\n  const [error, setError] = useState(false);\r\n  const [errorApi, setErrorApi] = useState();\r\n  const [create] = useCreate('users_annuary/public/form');\r\n  const refresh = useRefresh(); \r\n  const notify = useNotify();\r\n  const [formSent, setFormSent] = useState();\r\n    \r\n  const { associations_id: associations_id_string, code: code } = parse(props.location.search);\r\n    \r\n  useEffect(() => {\r\n    dataProvider.getOne('recercat_centers/public/recercat_validate_email/' + associations_id_string, { id: code })\r\n      .then(( { data } ) => { \r\n        setInfo(data);    \r\n        setLoading(false);  \r\n      })\r\n      .catch(error => {      \r\n        setError(true);\r\n        setLoading(false);                  \r\n      });\r\n  }, []);\r\n        \r\n  if (loading) return null;\r\n    \r\n  // Mostra error de validació\r\n  if (error || info && info.done !== true) return (\r\n    <>\r\n      <RecercatHeader />\r\n      <Box sx={{ width: '90%', maxWidth: 800, bgcolor: 'background.paper', padding: '20px' }} className=\"add_member_box recercat\" >\r\n        <h1>{translate('recercat_centers.form_title_validate_ko')}</h1>\r\n        <Grid container spacing={2}>\r\n          <Grid item xs={12} align=\"center\">  \r\n            <div dangerouslySetInnerHTML={{ __html: !error ? translate('recercat_centers.validation_email_code_'+info.code) : translate('recercat_centers.validation_email_error') }} />\r\n            <br />\r\n            <br />\r\n          </Grid>\r\n        </Grid>                 \r\n      </Box>\r\n    </>);\r\n            \r\n  // Validació OK\r\n  return (\r\n    <>\r\n      <RecercatHeader />\r\n      <Box sx={{ width: '90%', maxWidth: 800, bgcolor: 'background.paper', padding: '20px' }} className=\"add_member_box recercat\" >\r\n        <h1>{translate('recercat_centers.form_title_validate_ok')}</h1>\r\n        <Grid container spacing={2}>\r\n          <Grid item xs={12} align=\"center\">                                                 \r\n            <IconButton className={classes.largeIconOK}>\r\n              <CheckCircleOutlineIcon />\r\n            </IconButton>\r\n          </Grid>                    \r\n          <Grid item xs={12} align=\"center\">  \r\n            <div dangerouslySetInnerHTML={{ __html: translate('recercat_centers.validation_email_code_'+info.code) }} />\r\n          </Grid>   \r\n        </Grid>                 \r\n      </Box>\r\n    </>\r\n  );\r\n};\r\n","// in src/Dashboard.js\r\nimport React, { useState, useEffect } from 'react';\r\n\r\n\r\n\r\n\r\nimport Grid from '@mui/material/Grid';\r\nimport Box from '@material-ui/core/Box';\r\n\r\n\r\n\r\n\r\nimport { RecercatHeader } from './../components/RecercatHeader';\r\n\r\nimport Table from '@mui/material/Table';\r\nimport TableBody from '@mui/material/TableBody';\r\nimport TableCell from '@mui/material/TableCell';\r\nimport TableContainer from '@mui/material/TableContainer';\r\nimport TableHead from '@mui/material/TableHead';\r\nimport TableRow from '@mui/material/TableRow';\r\nimport Paper from '@mui/material/Paper';\r\nimport IconCancel from '@material-ui/icons/Cancel';\r\n\r\nimport { useCreate, useRefresh, FormWithRedirect, SaveButton, useDataProvider,\r\n  useNotify\r\n} from 'react-admin';\r\n\r\n\r\n\r\nimport { parse } from 'query-string';\r\n\r\n\r\nimport Button from '@material-ui/core/Button';\r\nimport CheckIcon from '@mui/icons-material/Check';\r\n\r\nimport { useTranslate  } from '../common/language';\r\nimport { recercatActions  } from './../common/constants';\r\n\r\nimport { makeStyles } from '@material-ui/core/styles';\r\n\r\n\r\nimport Dialog from '@mui/material/Dialog';\r\nimport DialogTitle from '@mui/material/DialogTitle';\r\nimport DialogContent from '@mui/material/DialogContent';\r\nimport DialogActions from '@mui/material/DialogActions';\r\n\r\n\r\n\r\n\r\n\r\n\r\nconst useStyles = makeStyles((theme) => ({  \r\n  largeIconOK: {\r\n    '& svg': {\r\n      fontSize: 200,\r\n      color: '#007E12'\r\n    }\r\n  }\r\n  ,\r\n  largeIconKO: {\r\n    '& svg': {\r\n      fontSize: 200,\r\n      color: '#FF7373'\r\n    }\r\n  }\r\n}));\r\n\r\n\r\nexport const RecercatResumeCenter = props => {\r\n    \r\n  const translate = useTranslate();  \r\n  const dataProvider = useDataProvider();\r\n  const classes = useStyles();\r\n  const [showDialog, setShowDialog] = useState(false);\r\n  const [info, setInfo] = useState();\r\n  const [usersGroupsId, setUsersGroupsId] = useState();\r\n  const [action, setAction] = useState();\r\n  const [loading, setLoading] = useState(true);\r\n  const [error, setError] = useState(false);\r\n  const [errorApi, setErrorApi] = useState();\r\n  const [create] = useCreate('users_groups/public/recercat-actions');\r\n  const refresh = useRefresh(); \r\n  const notify = useNotify();\r\n  const [formSent, setFormSent] = useState();\r\n    \r\n  const { associations_id: associations_id_string, code: code } = parse(props.location.search);\r\n    \r\n  const handleSubmit = async values => {\r\n    create(            \r\n      { payload: { data: values } },\r\n      {\r\n        onSuccess: ({ data }) => {\r\n                    \r\n          if (values.action==recercatActions.CENTER_LOGOUT)\r\n          {\r\n            window.close();\r\n          }\r\n          else\r\n          {\r\n            setShowDialog(false);\r\n            window.location.reload();\r\n          }\r\n        },\r\n        onFailure: ( error ) => {\r\n          alert('S\\'ha produït un error: ' + error.message);\r\n        }\r\n      }\r\n    );\r\n  };\r\n    \r\n  const handleCloseClick = () => {\r\n    setShowDialog(false);\r\n  };\r\n    \r\n  const doAction = (id,action) => {       \r\n        \r\n    console.log(id);\r\n    console.log(action);\r\n        \r\n    setUsersGroupsId(id);\r\n    setAction(action);\r\n    setShowDialog(true);\r\n  };\r\n    \r\n  useEffect(() => {\r\n    dataProvider.getOne('recercat_centers/public/resume/' + associations_id_string, { id: code })\r\n      .then(( { data } ) => { \r\n        setInfo(data);    \r\n      })\r\n      .catch(error => {      \r\n        setError(true);               \r\n      });\r\n  }, []);\r\n            \r\n  // Mostra error de validació\r\n  if (error) return (\r\n    <>\r\n      <RecercatHeader />\r\n      <Box sx={{ width: '90%', maxWidth: 800, bgcolor: '#ffffff', padding: '0px' }} className=\"add_member_box recercat\" >\r\n        <h1>{translate('recercat_centers.resume_title')}</h1>\r\n        <Grid container spacing={2}>\r\n          <Grid item xs={12} align=\"center\">  \r\n            <div dangerouslySetInnerHTML={{ __html: translate('recercat_centers.resume_error') }} />\r\n            <br />\r\n            <br />\r\n          </Grid>\r\n        </Grid>                 \r\n      </Box></>);\r\n        \r\n  if (!info) return null;\r\n            \r\n  return (\r\n    <>\r\n      <RecercatHeader />\r\n      <Box sx={{ width: '90%', maxWidth: 800, bgcolor: '#ffffff', padding: '0px' }} className=\"add_member_box recercat\" >\r\n        <Grid item xs={12} align=\"right\" className=\"pt-0\">\r\n          <Button size=\"small\" className=\"\" variant=\"contained\" onClick={() => {doAction(0,recercatActions.CENTER_LOGOUT);}}>{translate('recercat_centers.resume_actions_logout')}</Button>\r\n        </Grid>\r\n        <br />\r\n        <h1>{translate('recercat_centers.resume_title')}</h1>\r\n        <Grid container spacing={2}>\r\n          <Grid item xs={12} align=\"center\" className=\"pt-0\">  \r\n            {info.name}\r\n          </Grid>   \r\n        </Grid>  \r\n        <br /><br />\r\n        <h2>{translate('recercat_centers.resume_pending_center')} ({info.list_group_pending_center.length})</h2>\r\n        <Grid container spacing={2}>\r\n          <Grid item xs={12} className=\"\">  \r\n            <UsersGrid data={info.list_group_pending_center} type={0} doAction={doAction} />\r\n          </Grid>   \r\n        </Grid>   \r\n        <h2>{translate('recercat_centers.resume_pending_irmu')} ({info.list_group_pending_irmu.length})</h2>\r\n        <Grid container spacing={2}>\r\n          <Grid item xs={12} className=\"\">  \r\n            <UsersGrid data={info.list_group_pending_irmu} type={1} doAction={doAction}/>\r\n          </Grid>   \r\n        </Grid>\r\n        <h2>{translate('recercat_centers.resume_validated')} ({info.list_group_members.length})</h2>\r\n        <Grid container spacing={2}>\r\n          <Grid item xs={12} className=\"\">  \r\n            <UsersGrid data={info.list_group_members} type={2} doAction={doAction}/>\r\n          </Grid>   \r\n        </Grid>\r\n      </Box>\r\n        \r\n      <Dialog\r\n        fullWidth\r\n        open={showDialog}\r\n        onClose={handleCloseClick}\r\n        aria-label={translate('recercat_centers.resume_dialog_title_' + action)}\r\n      >\r\n        <DialogTitle>{translate('recercat_centers.resume_dialog_title_' + action)}</DialogTitle>\r\n\r\n        <FormWithRedirect\r\n          save={handleSubmit}\r\n          initialValues={{ associations_id: associations_id_string, users_groups_id : usersGroupsId, action: action, center_hash: code }}\r\n          render={({\r\n            handleSubmitWithRedirect,\r\n            pristine,\r\n            saving\r\n          }) => (\r\n            <>\r\n              <DialogContent>\r\n                <Grid container spacing={2}>\r\n                  <Grid item xs={12}> \r\n                    {translate('recercat_centers.resume_dialog_desc_'+action)}\r\n                  </Grid> \r\n                </Grid>\r\n              </DialogContent>\r\n              <DialogActions>\r\n                <Button onClick={handleCloseClick} >\r\n                  <IconCancel />&nbsp;&nbsp;{translate('ra.action.cancel')}\r\n                </Button>\r\n                <SaveButton \r\n                  icon={<CheckIcon />}\r\n                  handleSubmitWithRedirect={\r\n                    handleSubmitWithRedirect\r\n                  }\r\n                  pristine={pristine}\r\n                  saving={false}\r\n                  disabled={false}\r\n                  label={translate('recercat_centers.resume_dialog_button_'+action)}\r\n                  className=\"btn-action\"\r\n                />\r\n              </DialogActions>\r\n            </>\r\n          )}\r\n        />\r\n      </Dialog>\r\n            \r\n    </>\r\n  );\r\n    \r\n    \r\n};\r\n\r\nconst UsersGrid = (props) => {\r\n\r\n  const translate = useTranslate();  \r\n    \r\n  return (\r\n    <>\r\n      {props.data.length ?\r\n        <TableContainer component={Paper} className=\"table-container-recercat-centers\" >\r\n          <Table size=\"small\" aria-label=\"a dense table\" className=\"recercat-centers\">\r\n            <TableHead>\r\n              <TableRow>\r\n                <TableCell className=\"th\">Nom i cognoms</TableCell>\r\n                <TableCell className=\"th\">Correu-e</TableCell>\r\n                {props.type==2 ? <TableCell className=\"th\">Número</TableCell> : null }\r\n                <TableCell className=\"th\">Accions</TableCell>\r\n              </TableRow>\r\n            </TableHead>\r\n            <TableBody>\r\n              {props.data.map((row) => (\r\n                <TableRow\r\n                  key={row.id}\r\n                  sx={{ '&:last-child td, &:last-child th': { border: 0 } }}\r\n                >\r\n                  <TableCell >\r\n                    {row.first_name} {row.last_name_1} {row.last_name_2}\r\n                  </TableCell>\r\n                  <TableCell>{row.email}</TableCell>\r\n                  {props.type==2 ? <TableCell>{row.num_member}</TableCell> : null }\r\n                  <TableCell>\r\n                    {props.type==0 ? <>\r\n                      <Button size=\"small\" className=\"btn-green mr-10\" variant=\"contained\" onClick={() => {props.doAction(row.user_group_id,recercatActions.CENTER_VALIDATE);}}>{translate('recercat_centers.resume_actions_accept')}</Button>\r\n                      <Button size=\"small\" className=\"btn-error\" variant=\"contained\" onClick={() => {props.doAction(row.user_group_id,recercatActions.CENTER_DENY);}}>{translate('recercat_centers.resume_actions_deny')}</Button>\r\n                    </> : null}\r\n                    \r\n                    {props.type==1 ? <>\r\n                      <Button size=\"small\" className=\"btn-error\" variant=\"contained\" onClick={() => {props.doAction(row.user_group_id,recercatActions.CENTER_DENY);}}>{translate('recercat_centers.resume_actions_deny')}</Button>\r\n                    </> : null}\r\n                    \r\n                    {props.type==2 ? <>\r\n                      <Button size=\"small\" className=\"btn-error\" variant=\"contained\" onClick={() => {props.doAction(row.user_group_id,recercatActions.CENTER_REVOKE);}}>{translate('recercat_centers.resume_actions_revoke')}</Button>\r\n                    </> : null}\r\n                    \r\n                  </TableCell>\r\n                </TableRow>\r\n              ))}\r\n            </TableBody>\r\n          </Table>\r\n        </TableContainer>\r\n        : null }\r\n      <br /><br />\r\n    \r\n    </>\r\n  );\r\n};\r\n","// in src/Dashboard.js\r\nimport React, { useState } from 'react';\r\n\r\n\r\n\r\n\r\nimport Grid from '@mui/material/Grid';\r\nimport Box from '@material-ui/core/Box';\r\nimport Typography from '@mui/material/Typography';\r\n\r\n\r\n\r\nimport {\r\n  TextInput, required, useCreate, useRefresh, FormWithRedirect, SaveButton, useDataProvider,\r\n  useNotify,\r\n  PasswordInput\r\n    \r\n} from 'react-admin';\r\n\r\nimport { validateEmail,validateMinMaxLengthAndCharacters  } from '../components/Validator';\r\n\r\nimport { parse } from 'query-string';\r\n\r\n\r\n\r\n\r\n\r\nimport { useTranslate  } from '../common/language';\r\n\r\n\r\n\r\nimport { styled } from '@mui/material/styles';\r\nimport Dialog from '@mui/material/Dialog';\r\nimport DialogTitle from '@mui/material/DialogTitle';\r\nimport DialogContent from '@mui/material/DialogContent';\r\nimport IconButton from '@mui/material/IconButton';\r\nimport CloseIcon from '@mui/icons-material/Close';\r\n\r\nconst BootstrapDialog = styled(Dialog)(({ theme }) => ({\r\n  '& .MuiDialogContent-root': {\r\n    padding: theme.spacing(2),\r\n  },\r\n  '& .MuiDialogActions-root': {\r\n    padding: theme.spacing(1),\r\n  },\r\n}));\r\n\r\n\r\n\r\nexport const ForgotPassword = props => {\r\n    \r\n  const translate = useTranslate();  \r\n  const dataProvider = useDataProvider();\r\n    \r\n  const [info, setInfo] = useState();\r\n  const [loading, setLoading] = useState(true);\r\n  const [error, setError] = useState();\r\n  const [errorApi, setErrorApi] = useState();\r\n  const [create] = useCreate('auth/forgot-password');\r\n  const refresh = useRefresh(); \r\n  const notify = useNotify();\r\n  const [formSent, setFormSent] = useState();\r\n    \r\n  const [open, setOpen] = React.useState(false);\r\n\r\n  const openErrorDialog = () => {\r\n    setOpen(true);\r\n  };\r\n  const closeErrorDialog = () => {\r\n    setOpen(false);\r\n  };\r\n             \r\n  const handleSubmit = values => {\r\n    create(            \r\n      { payload: { data: values } },\r\n      {\r\n        onSuccess: ({ data }) => {              \r\n          setFormSent(true);\r\n          setErrorApi('');\r\n        },\r\n        onFailure: ( error ) => {\r\n          setErrorApi(error.message);\r\n          openErrorDialog();                                    \r\n        }\r\n      }\r\n    );\r\n  };\r\n    \r\n  var imgName = window.location.hostname.replaceAll('.','');\r\n    \r\n  if (formSent)\r\n  {\r\n    return (\r\n      <Box sx={{ width: '50%', maxWidth: 800, bgcolor: 'background.paper', padding: '20px' }} className=\"add_member_box\" >\r\n        <Grid container spacing={1} >\r\n          <Grid item xs={12} sm={12}>\r\n            <center><img src={'/img/'+imgName+'_200x200.png'} /></center>\r\n          </Grid>\r\n        </Grid> \r\n                                \r\n        <div className=\"add_member_form_sent\" dangerouslySetInnerHTML={{ __html: translate('auth.forgot_password_ok') }} />\r\n                                \r\n      </Box>\r\n    );\r\n  }\r\n    \r\n  var imgName = window.location.hostname.replaceAll('.','');\r\n    \r\n  return (\r\n            \r\n    <FormWithRedirect\r\n      resource=\"auth\"        \r\n      save={handleSubmit}\r\n      initialValues={{ }}\r\n      render={formProps => (\r\n        <>     \r\n          <Box sx={{ width: '50%', maxWidth: 800, bgcolor: 'background.paper', padding: '20px' }} className=\"add_member_box\" >\r\n                                \r\n            <Grid container spacing={1} >\r\n              <Grid item xs={12} sm={12}>\r\n                <center><img src={'/img/'+imgName+'_200x200.png'} /></center>\r\n              </Grid>\r\n            </Grid> \r\n                \r\n            <Grid container spacing={1} >\r\n              <Grid item xs={12} sm={12}>\r\n                <h3>{translate('auth.forgot_password_title')}</h3>\r\n                <br />\r\n                {translate('auth.forgot_password_desc')}\r\n              </Grid>\r\n            </Grid>  \r\n                 \r\n            <br />\r\n                 \r\n            <Grid container spacing={1} >\r\n              <Grid item xs={12} sm={12}>\r\n                <TextInput fullWidth label={translate('users.email')} fullWidth source=\"email\" validate={[validateEmail(),required()]} />\r\n              </Grid>\r\n            </Grid>                                    \r\n                \r\n            <br /><br />      \r\n            <SaveButton\r\n              saving={formProps.saving}\r\n              handleSubmitWithRedirect={formProps.handleSubmitWithRedirect}\r\n              label={translate('auth.send_button')}\r\n              icon={<span />}\r\n            />\r\n            <br/><br />\r\n            <a href=\"/#/login\">{translate('auth.forgot_password_link')}</a>\r\n\r\n          </Box>\r\n            \r\n          <BootstrapDialog\r\n            onClose={closeErrorDialog}\r\n            aria-labelledby=\"customized-dialog-title\"\r\n            open={open}\r\n          >\r\n            <DialogTitle sx={{ m: 0, p: 2 }}>\r\n              {translate('auth.error_title')}   \r\n              <IconButton\r\n                aria-label=\"close\"\r\n                onClick={closeErrorDialog}\r\n                sx={{\r\n                  position: 'absolute',\r\n                  right: 8,\r\n                  top: 8,\r\n                  color: (theme) => theme.palette.grey[500],\r\n                }}\r\n              >\r\n                <CloseIcon />\r\n              </IconButton>\r\n            </DialogTitle>\r\n    \r\n            <DialogContent dividers>\r\n              <Typography gutterBottom>\r\n                {errorApi}\r\n              </Typography>\r\n            </DialogContent>\r\n          </BootstrapDialog>\r\n      \r\n        </>\r\n            \r\n            \r\n      )}\r\n    />\r\n        \r\n  );\r\n  \r\n};\r\n\r\n\r\n\r\nexport const ResetPassword = props => {\r\n    \r\n  const translate = useTranslate();  \r\n  const dataProvider = useDataProvider();\r\n    \r\n  const [info, setInfo] = useState();\r\n  const [loading, setLoading] = useState(true);\r\n  const [error, setError] = useState();\r\n  const [errorApi, setErrorApi] = useState();\r\n  const [create] = useCreate('auth/reset-password');\r\n  const refresh = useRefresh(); \r\n  const notify = useNotify();\r\n  const [formSent, setFormSent] = useState();\r\n    \r\n  const { rc: rc_string } = parse(props.location.search);\r\n  const rc = rc_string ? rc_string : '';\r\n    \r\n  const [open, setOpen] = React.useState(false);\r\n\r\n  const openErrorDialog = () => {\r\n    setOpen(true);\r\n  };\r\n  const closeErrorDialog = () => {\r\n    setOpen(false);\r\n  };\r\n             \r\n  const handleSubmit = values => {\r\n    create(            \r\n      { payload: { data: values } },\r\n      {\r\n        onSuccess: ({ data }) => {              \r\n          setFormSent(true);\r\n          setErrorApi('');\r\n        },\r\n        onFailure: ( error ) => {\r\n          setErrorApi(error.message);\r\n          openErrorDialog();                                    \r\n        }\r\n      }\r\n    );\r\n  };\r\n    \r\n  var imgName = window.location.hostname.replaceAll('.','');\r\n    \r\n  if (formSent)\r\n  {\r\n    return (\r\n      <Box sx={{ width: '50%', maxWidth: 800, bgcolor: 'background.paper', padding: '20px' }} className=\"add_member_box\" >\r\n        <Grid container spacing={1} >\r\n          <Grid item xs={12} sm={12}>\r\n            <center><img src={'/img/'+imgName+'_200x200.png'} /></center>\r\n          </Grid>\r\n        </Grid> \r\n                                \r\n        <div className=\"add_member_form_sent\" dangerouslySetInnerHTML={{ __html: translate('auth.reset_password_ok') }} />\r\n        <br/>\r\n        <center><a href=\"/#/login\">{translate('auth.reset_password_ok_link')}</a></center>\r\n                                \r\n      </Box>\r\n    );\r\n  }\r\n    \r\n  var imgName = window.location.hostname.replaceAll('.','');\r\n    \r\n  return (\r\n            \r\n    <FormWithRedirect\r\n      resource=\"auth\"        \r\n      save={handleSubmit}\r\n      initialValues={{ rc: rc }}\r\n      render={formProps => (\r\n        <>     \r\n          <Box sx={{ width: '50%', maxWidth: 800, bgcolor: 'background.paper', padding: '20px' }} className=\"add_member_box\" >\r\n                                \r\n            <Grid container spacing={1} >\r\n              <Grid item xs={12} sm={12}>\r\n                <center><img src={'/img/'+imgName+'_200x200.png'} /></center>\r\n              </Grid>\r\n            </Grid> \r\n                \r\n            <Grid container spacing={1} >\r\n              <Grid item xs={12} sm={12}>\r\n                <br />\r\n                {translate('auth.reset_password_title')}\r\n              </Grid>\r\n            </Grid>  \r\n                 \r\n            <br />\r\n                 \r\n            <Grid container spacing={1} >\r\n              <Grid item xs={12} sm={12}>\r\n                <PasswordInput fullWidth source=\"pswd\" label={translate('settings.profile_password')} validate={[validateMinMaxLengthAndCharacters(translate('common.validation.minMaxLengthAndCharacters')),required()]} />                            \r\n              </Grid>\r\n            </Grid>                                    \r\n                \r\n            <br /><br />      \r\n            <SaveButton\r\n              saving={formProps.saving}\r\n              handleSubmitWithRedirect={formProps.handleSubmitWithRedirect}\r\n              label={translate('auth.reset_password_button')}\r\n              icon={<span />}\r\n            />\r\n\r\n          </Box>\r\n            \r\n          <BootstrapDialog\r\n            onClose={closeErrorDialog}\r\n            aria-labelledby=\"customized-dialog-title\"\r\n            open={open}\r\n          >\r\n            <DialogTitle sx={{ m: 0, p: 2 }}>\r\n              {translate('auth.error')}   \r\n              <IconButton\r\n                aria-label=\"close\"\r\n                onClick={closeErrorDialog}\r\n                sx={{\r\n                  position: 'absolute',\r\n                  right: 8,\r\n                  top: 8,\r\n                  color: (theme) => theme.palette.grey[500],\r\n                }}\r\n              >\r\n                <CloseIcon />\r\n              </IconButton>\r\n            </DialogTitle>\r\n    \r\n            <DialogContent dividers>\r\n              <Typography gutterBottom>\r\n                {errorApi}\r\n              </Typography>\r\n            </DialogContent>\r\n          </BootstrapDialog>\r\n      \r\n        </>\r\n                        \r\n      )}\r\n    />\r\n        \r\n  );\r\n  \r\n};\r\n","// in src/Dashboard.js\r\nimport React, { useState, useEffect } from 'react';\r\n\r\nimport Grid from '@mui/material/Grid';\r\nimport Box from '@material-ui/core/Box';\r\nimport Typography from '@mui/material/Typography';\r\nimport Button from '@material-ui/core/Button';\r\n\r\nimport {\r\n  TextInput, required,BooleanInput, useCreate, useRefresh, FormWithRedirect, SaveButton, useDataProvider,\r\n  useNotify,\r\n  PasswordInput\r\n    \r\n} from 'react-admin';\r\n\r\nimport { validateEmail,validateMinMaxLengthAndCharacters, validateTrue  } from '../components/Validator';\r\n\r\nimport { parse } from 'query-string';\r\n\r\nimport {useHistory} from 'react-router-dom';\r\n\r\nimport { projectUrl } from '../common/constants';\r\nimport { useTranslate  } from '../common/language';\r\n\r\n\r\n\r\nimport { styled } from '@mui/material/styles';\r\nimport Dialog from '@mui/material/Dialog';\r\nimport DialogTitle from '@mui/material/DialogTitle';\r\nimport DialogContent from '@mui/material/DialogContent';\r\nimport IconButton from '@mui/material/IconButton';\r\nimport CloseIcon from '@mui/icons-material/Close';\r\n\r\n\r\nconst Header = () => {\r\n    \r\n    var domain = window.location.hostname.replaceAll('.','');\r\n    \r\n    return (\r\n        <Grid container spacing={1} >\r\n          <Grid item xs={12} sm={12}>\r\n          <center><a href={projectUrl}><img src={'/img/'+domain+'_200x200.png'} /></a></center>\r\n          </Grid>\r\n        </Grid>\r\n    );\r\n}\r\n\r\n\r\nexport const SignUp = props => {\r\n    \r\n  const translate = useTranslate();  \r\n  const dataProvider = useDataProvider();\r\n    \r\n  const [info, setInfo] = useState();\r\n  const [loading, setLoading] = useState(true);\r\n  const [error, setError] = useState();\r\n  const [errorApi, setErrorApi] = useState();\r\n  const [create] = useCreate('auth/signup');\r\n  const refresh = useRefresh(); \r\n  const notify = useNotify();\r\n  const [formSent, setFormSent] = useState();\r\n  const [openLopd, setOpenLopd] = React.useState(false);\r\n  const [openTerms, setOpenTerms] = React.useState(false);\r\n  const [open, setOpen] = React.useState(false);\r\n  \r\n  const [footer, setFooter] = React.useState(\"\");\r\n  const [terms, setTerms] = React.useState(\"\");\r\n  const [lopd, setLopd] = React.useState(\"\");\r\n    \r\n  const history = useHistory();\r\n  \r\n  useEffect(() => {\r\n    dataProvider.getOne('settings_legal', { id: 1 })\r\n      .then(( { data } ) => {   \r\n        setFooter(data.signup_footer);\r\n        setLopd(data.lopd);\r\n        setTerms(data.terms);\r\n      })\r\n      .catch(error => {                                \r\n      });\r\n  }, []);\r\n\r\n  const openErrorDialog = () => {\r\n    setOpen(true);\r\n  };\r\n  const closeErrorDialog = () => {\r\n    setOpen(false);\r\n  };\r\n             \r\n  const handleSubmit = values => {\r\n    create(            \r\n      { payload: { data: values } },\r\n      {\r\n        onSuccess: ({ data }) => {              \r\n          setFormSent(true);\r\n          setErrorApi('');\r\n        },\r\n        onFailure: ( error ) => {\r\n          setErrorApi(error.message);\r\n          openErrorDialog();                                    \r\n        }\r\n      }\r\n    );\r\n  };\r\n    \r\n  const openLopdDialog = () => {\r\n    setOpenLopd(true);\r\n  };\r\n  const closeLopdDialog = () => {\r\n    setOpenLopd(false);\r\n  };\r\n  \r\n  const openTermsDialog = () => {\r\n    setOpenTerms(true);\r\n  };\r\n  const closeTermsDialog = () => {\r\n    setOpenTerms(false);\r\n  };\r\n  \r\n  var login_url = projectUrl + '/#/login';\r\n    \r\n  var domain = window.location.hostname.replaceAll('.','');\r\n   \r\n  if (domain != 'admingestioentitatscat' && domain != 'localhost') return <span>Sign-up not available: {domain}</span>;\r\n  if (!lopd || !terms || !footer ) return null;\r\n  \r\n  if (formSent)\r\n  {\r\n    return (\r\n      <Box sx={{ width: '90%', maxWidth: 600, bgcolor: 'background.paper', padding: '20px' }} className=\"signup_box\" >\r\n        <Header />                                \r\n        <div className=\"add_member_form_sent\" dangerouslySetInnerHTML={{ __html: translate('signup.ok') }} />   \r\n        <div className=\"text-center\"><br /><br /><Button size=\"medium\" className=\"btn-green\" variant=\"contained\" onClick={() => { \r\n            history.push('/login' );\r\n        }}>{translate('signup.ok_login')}</Button></div>\r\n      </Box>\r\n    );\r\n  }\r\n    \r\n  return (\r\n            \r\n    <FormWithRedirect\r\n      resource=\"auth\"        \r\n      save={handleSubmit}\r\n      initialValues={{language: 0}}\r\n      render={formProps => (\r\n        <>     \r\n          <Box sx={{ width: '90%', maxWidth: 600, bgcolor: 'background.paper', padding: '20px' }} className=\"signup_box pt-0\" >                                \r\n            <Header />                \r\n            <Grid container spacing={1} >\r\n              <Grid item xs={12} sm={12}>\r\n                <h3 className=\"mt-0 mb-0\">{translate('signup.register')}</h3>\r\n                <br />\r\n                <div className=\"justify\" dangerouslySetInnerHTML={{ __html: translate('signup.desc')}} /> \r\n              </Grid>\r\n            </Grid>  \r\n                 \r\n            <br />\r\n                 \r\n            <Grid container spacing={1} >\r\n              <Grid item xs={12} sm={12}>\r\n                <TextInput fullWidth label={translate('signup.name')} fullWidth source=\"name\" validate={[required()]} className=\"bg-grey\" />\r\n              </Grid>\r\n              <Grid item xs={12} sm={12}>\r\n                <TextInput fullWidth label={translate('users.email')} fullWidth source=\"email\" validate={[validateEmail(),required()]} className=\"bg-grey mt-0\"  />\r\n              </Grid>                     \r\n            </Grid>    \r\n            \r\n            <br />\r\n            <Grid spacing={2}>\r\n                <Grid item xs={12} className=\"signup-lopd\">\r\n                <div className=\"justify\" dangerouslySetInnerHTML={{ __html: footer }} />\r\n                <a href='#' onClick={(e)=>{e.preventDefault(); openLopdDialog();}}>{translate('signup.form_lopd_link')}</a>.\r\n<br /><br />\r\n                </Grid>\r\n            </Grid>\r\n            <Grid spacing={2}>\r\n              <Grid item xs={12}>\r\n                <BooleanInput className=\"add_member_input\" fullWidth source=\"lopd\" label={translate('signup.form_lopd')} validate={[validateTrue(translate('signup.form_lopd_validator'))]} />\r\n              </Grid>\r\n            </Grid>\r\n            \r\n            <Grid spacing={2}>\r\n              <Grid item xs={12}>\r\n                <BooleanInput className=\"add_member_input\" fullWidth source=\"terms\" label={<>{translate('signup.form_terms')} <a href='#' onClick={(e)=>{e.preventDefault(); openTermsDialog();}}>{translate('signup.form_terms_link')}</a></>} validate={[validateTrue(translate('signup.form_terms_validator'))]} />\r\n              </Grid>\r\n            </Grid>\r\n            \r\n            <Grid spacing={2}>\r\n              <Grid item xs={12}>\r\n                <BooleanInput className=\"add_member_input\" fullWidth source=\"newsletter\" label={translate('signup.form_newsletter')} />\r\n              </Grid>\r\n            </Grid>\r\n                \r\n            <br />  \r\n            <div className=\"text-center\">\r\n            <SaveButton\r\n              saving={formProps.saving}\r\n              handleSubmitWithRedirect={formProps.handleSubmitWithRedirect}\r\n              label={translate('signup.send_button')}\r\n              icon={<span />}\r\n            /><br />{translate('signup.link_or')} <a href=\"/#/login\">{translate('ra.auth.sign_in')}</a>\r\n            </div>\r\n            \r\n            <br/><br />\r\n          </Box>\r\n            \r\n          <Dialog\r\n            onClose={closeLopdDialog}\r\n            aria-labelledby=\"customized-dialog-title\"\r\n            open={openLopd}\r\n            fullWidth            \r\n            maxWidth=\"lg\"\r\n          >\r\n            <DialogTitle sx={{ m: 0, p: 2 }}>\r\n              {translate('signup.lopd')}   \r\n              <IconButton\r\n                aria-label=\"close\"\r\n                onClick={closeLopdDialog}\r\n                sx={{\r\n                  position: 'absolute',\r\n                  right: 8,\r\n                  top: 8,\r\n                  color: (theme) => theme.palette.grey[500],\r\n                }}\r\n              >\r\n                <CloseIcon />\r\n              </IconButton>\r\n            </DialogTitle>\r\n\r\n            <DialogContent>   \r\n              <div dangerouslySetInnerHTML={{ __html: lopd }} />\r\n            </DialogContent>\r\n          </Dialog>\r\n          \r\n          <Dialog\r\n            onClose={closeLopdDialog}\r\n            aria-labelledby=\"customized-dialog-title\"\r\n            open={openTerms}\r\n            fullWidth            \r\n            maxWidth=\"lg\"\r\n          >\r\n            <DialogTitle sx={{ m: 0, p: 2 }}>\r\n              {translate('signup.terms')}   \r\n              <IconButton\r\n                aria-label=\"close\"\r\n                onClick={closeTermsDialog}\r\n                sx={{\r\n                  position: 'absolute',\r\n                  right: 8,\r\n                  top: 8,\r\n                  color: (theme) => theme.palette.grey[500],\r\n                }}\r\n              >\r\n                <CloseIcon />\r\n              </IconButton>\r\n            </DialogTitle>\r\n\r\n            <DialogContent>   \r\n              <div dangerouslySetInnerHTML={{ __html: terms }} />\r\n            </DialogContent>\r\n          </Dialog>\r\n              \r\n          <Dialog\r\n            onClose={closeErrorDialog}\r\n            aria-labelledby=\"customized-dialog-title\"\r\n            open={open}\r\n            fullWidth            \r\n            maxWidth=\"sm\"\r\n          >\r\n            <DialogTitle sx={{ m: 0, p: 2 }}>\r\n              {translate('signup.register')}   \r\n              <IconButton\r\n                aria-label=\"close\"\r\n                onClick={closeErrorDialog}\r\n                sx={{\r\n                  position: 'absolute',\r\n                  right: 8,\r\n                  top: 8,\r\n                  color: (theme) => theme.palette.grey[500],\r\n                }}\r\n              >\r\n                <CloseIcon />\r\n              </IconButton>\r\n            </DialogTitle>\r\n    \r\n            <DialogContent dividers>\r\n              <Typography gutterBottom>\r\n                {errorApi}\r\n              </Typography>\r\n            </DialogContent>\r\n          </Dialog>\r\n                \r\n        </>\r\n            \r\n            \r\n      )}\r\n    />\r\n        \r\n  );\r\n  \r\n};\r\n\r\n","import React, { useState } from 'react';\r\nimport {\r\n  useCreate,\r\n  useNotify,\r\n  useRefresh, useTranslate,\r\n  useDataProvider, Confirm\r\n} from 'react-admin';\r\n\r\nimport { targetsEmails, emailsStatus } from './../common/constants';\r\n\r\nimport MailOutlineIcon from '@mui/icons-material/MailOutline';\r\nimport ErrorOutlineIcon from '@mui/icons-material/ErrorOutline';\r\nimport ForwardToInboxIcon from '@mui/icons-material/ForwardToInbox';\r\nimport MarkEmailReadIcon from '@mui/icons-material/MarkEmailRead';\r\n\r\nimport Tooltip from '@mui/material/Tooltip';\r\n\r\nexport const SendEmailIconStatus = ({target, ...props}) => {\r\n        \r\n  const translate = useTranslate();  \r\n  const dataProvider = useDataProvider();\r\n  const notify = useNotify();\r\n  const refresh = useRefresh(); \r\n  const [open, setOpen] = useState(false);\r\n  const [openAgain, setOpenAgain] = useState(false);\r\n  const [create, { loading }] = useCreate('bookings');\r\n   \r\n  // , associations_id: localStorage.getItem('associations_id')\r\n  const sentEmail = (again) => {\r\n                \r\n    dataProvider.getOne(url , { id: props.record.id })\r\n      .then(( { data } ) => {   \r\n        if (again)\r\n          setOpenAgain(false);\r\n        else\r\n          setOpen(false);\r\n            \r\n        notify(translate('bookings.email_sent_ok' ), 'success');            \r\n        refresh();\r\n      })\r\n      .catch(error => {                \r\n        notify(error.message, 'error');\r\n        setOpen(false);\r\n      });\r\n        \r\n  };\r\n    \r\n  const handleClickEmail = () => { setOpen(true);  };    \r\n  const handleClick = () => setOpen(true);\r\n  const handleDialogClose = () => setOpen(false);\r\n  const handleConfirm = () => { sentEmail(false);  };\r\n    \r\n  const handleClickEmailAgain = () => { setOpenAgain(true); };\r\n  const handleClickAgain = () => setOpenAgain(true);\r\n  const handleDialogCloseAgain = () => setOpenAgain(false);\r\n  const handleConfirmAgain = () => { sentEmail(true); };\r\n      \r\n  let url = '';\r\n  let status = 0;\r\n  let condition = false;\r\n  let tooltip_button = '';\r\n  let tooltip_ko = '';\r\n  let tooltip_sending = '';\r\n  let tooltip_done = '';\r\n  let popup_title = '';\r\n  let popup_content = '';\r\n  let popup_content_again = '';\r\n        \r\n  if (target==targetsEmails.NEWADMIN)\r\n  {\r\n    // Correu nou administrador\r\n    url='users_permissions/send_email';\r\n    status = props.record.email_status;\r\n    condition = true;\r\n    tooltip_button = translate('users_permissions.email_tooltip_button'); \r\n    tooltip_sending = translate('users_permissions.email_tooltip_sending'); \r\n    tooltip_done = translate('users_permissions.email_tooltip_done'); \r\n    tooltip_ko = translate('users_permissions.email_sent_ko'); \r\n    popup_title = translate('users_permissions.email_sent_title');\r\n    popup_content = translate('users_permissions.email_sent_ask');\r\n    popup_content_again = translate('users_permissions.email_sent_ask_again');\r\n  }\r\n  else if(target==targetsEmails.WELCOME)\r\n  {\r\n    // Correu benvinguda\r\n    url='users_groups/welcome_email';\r\n    status = props.record.welcome_status;\r\n    condition = (props.record.user.email || props.record.user.email_secondary) && props.record.group.public_id === 'SOCIS' ? true: false;\r\n    tooltip_button = translate('users.welcome_email_tooltip_button'); \r\n    tooltip_sending = translate('users.welcome_email_tooltip_sending'); \r\n    tooltip_done = translate('users.welcome_email_tooltip_done'); \r\n    tooltip_ko = translate('users.welcome_email_sent_ko'); //TODO\r\n    popup_title = translate('users.welcome_email_sent_title');\r\n    popup_content = translate('users.welcome_email_sent_ask');\r\n    popup_content_again = translate('users.welcome_email_sent_ask_again');\r\n  }\r\n  else if(target==targetsEmails.GROUP_LEFT)\r\n  {\r\n    // Correu de baixa\r\n    url='users_groups/left_email';\r\n    status = props.record.left_status;\r\n    condition = (props.record.user.email || props.record.user.email_secondary) && props.record.group.public_id === 'SOCIS' && props.record.date_left != null ? true: false;\r\n    tooltip_button = translate('users.group_left_email_tooltip_button'); \r\n    tooltip_sending = translate('users.group_left_email_tooltip_sending'); \r\n    tooltip_done = translate('users.group_left_email_tooltip_done'); \r\n    tooltip_ko = translate('users.group_left_email_sent_ko'); //TODO\r\n    popup_title = translate('users.group_left_email_sent_title');\r\n    popup_content = translate('users.group_left_email_sent_ask');\r\n    popup_content_again = translate('users.group_left_email_sent_ask_again');\r\n  }\r\n  else if(target==targetsEmails.CLASSROOMREQUEST)\r\n  {\r\n        \r\n  }\r\n  else if(target==targetsEmails.ADDMEMBERREQUEST)\r\n  {\r\n        \r\n  }\r\n  else if(target==targetsEmails.RECEIVERETURNED)\r\n  {\r\n    // Notificació d'impagament\r\n    url='remittances_users/send_email';\r\n    status = props.record.returned_status;\r\n    condition =  props.record.email && props.record.status== 1 ? true: false;\r\n    tooltip_button = translate('remittances.send_returned_tooltip_button'); \r\n    tooltip_sending = translate('remittances.send_returned_tooltip_sending'); \r\n    tooltip_done = translate('remittances.send_returned_tooltip_done'); \r\n    tooltip_ko = translate('remittances.send_returned_ko'); \r\n    popup_title = translate('remittances.send_returned_notification_title');\r\n    popup_content = translate('remittances.send_returned_notification_content');\r\n    popup_content_again = translate('remittances.send_returned_notification_content_again');\r\n  }\r\n  else if(target==targetsEmails.ALIVE)\r\n  {\r\n        \r\n  }\r\n  else if(target==targetsEmails.EVENT_INVITE)\r\n  {\r\n    // Invitació\r\n    url='bookings/send_email/0';\r\n    status = props.record.invite_status;\r\n    condition = (props.record.email || props.record.email_secondary) ? true: false;\r\n    tooltip_button = translate('bookings.email_sent_tooltip_button_0'); \r\n    tooltip_sending = translate('bookings.email_sent_tooltip_sending_0'); \r\n    tooltip_done = translate('bookings.email_sent_tooltip_done_0'); \r\n    tooltip_ko = translate('bookings.email_sent_ko_0');\r\n    popup_title = translate('bookings.email_sent_0');\r\n    popup_content = translate('bookings.email_sent_ask_0');\r\n    popup_content_again = translate('bookings.email_sent_ask_again_0');\r\n  }\r\n  else if(target==targetsEmails.EVENT_REMINDER)\r\n  {\r\n    // Recordatori\r\n    url='bookings/send_email/1';\r\n    status = props.record.reminder_status;\r\n    condition = (props.record.email || props.record.email_secondary) ? true: false;\r\n    tooltip_button = translate('bookings.email_sent_tooltip_button_1'); \r\n    tooltip_sending = translate('bookings.email_sent_tooltip_sending_1'); \r\n    tooltip_done = translate('bookings.email_sent_tooltip_done_1'); \r\n    tooltip_ko = translate('bookings.email_sent_ko_1');\r\n    popup_title = translate('bookings.email_sent_1');\r\n    popup_content = translate('bookings.email_sent_ask_1');\r\n    popup_content_again = translate('bookings.email_sent_ask_again_1');\r\n  }\r\n  else if(target==targetsEmails.UNDELIVERED_EMAILS)\r\n  {\r\n        \r\n  }\r\n  else if(target==targetsEmails.ANNUARY_SEND)\r\n  {\r\n    // Enviament\r\n    url='users_annuary/send_email/0';\r\n    status = props.record.sent_status;\r\n    condition = true;\r\n    tooltip_button = translate('users_annuary.email_sent_tooltip_button_0'); \r\n    tooltip_sending = translate('users_annuary.email_sent_tooltip_sending_0'); \r\n    tooltip_done = translate('users_annuary.email_sent_tooltip_done_0'); \r\n    tooltip_ko = translate('users_annuary.email_sent_ko_0');\r\n    popup_title = translate('users_annuary.email_sent_0');\r\n    popup_content = translate('users_annuary.email_sent_ask_0');\r\n    popup_content_again = translate('users_annuary.email_sent_ask_again_0');\r\n  }\r\n  else if(target==targetsEmails.ANNUARY_REMINDER)\r\n  {\r\n    // Recordatori\r\n    url='users_annuary/send_email/1';\r\n    status = props.record.reminder_status;\r\n    condition = true;\r\n    tooltip_button = translate('users_annuary.email_sent_tooltip_button_1'); \r\n    tooltip_sending = translate('users_annuary.email_sent_tooltip_sending_1'); \r\n    tooltip_done = translate('users_annuary.email_sent_tooltip_done_1'); \r\n    tooltip_ko = translate('users_annuary.email_sent_ko_1');\r\n    popup_title = translate('users_annuary.email_sent_1');\r\n    popup_content = translate('users_annuary.email_sent_ask_1');\r\n    popup_content_again = translate('users_annuary.email_sent_ask_again_1');\r\n  }\r\n  else if(target==targetsEmails.ANNUARY_CONFIRM)\r\n  {\r\n    // Recordatori\r\n    url='users_annuary/send_email/2';\r\n    status = props.record.confirm_status;\r\n    condition = props.record.answered_status;\r\n    tooltip_button = translate('users_annuary.email_sent_tooltip_button_2'); \r\n    tooltip_sending = translate('users_annuary.email_sent_tooltip_sending_2'); \r\n    tooltip_done = translate('users_annuary.email_sent_tooltip_done_2'); \r\n    tooltip_ko = translate('users_annuary.email_sent_ko_2');\r\n    popup_title = translate('users_annuary.email_sent_2');\r\n    popup_content = translate('users_annuary.email_sent_ask_2');\r\n    popup_content_again = translate('users_annuary.email_sent_ask_again_2');\r\n  }\r\n  else if(target==targetsEmails.DIGITAL_CARD_SEND)\r\n  {\r\n    // Carnet digital\r\n    url='users_groups/digital_card/email';\r\n    status = props.record.card_send_status;\r\n    condition = (props.record.user.email || props.record.user.email_secondary) && (props.record.group.card_digital || props.record.group.card_digital_wallets) ? true: false;\r\n    tooltip_button = translate('users.digital_card_tooltip_button'); \r\n    tooltip_sending = translate('users.digital_card_tooltip_sending'); \r\n    tooltip_done = translate('users.digital_card_tooltip_done'); \r\n    tooltip_ko = translate('users.digital_card_send_ko'); //TODO\r\n    popup_title = translate('users.digital_card_send_title');\r\n    popup_content = translate('users.digital_card_send_ask');\r\n    popup_content_again = translate('users.digital_card_send_ask_again');\r\n  }\r\n  else if(target==targetsEmails.RECERCAT_CENTER_RESUME)\r\n  {\r\n    // Recercat center resume\r\n    url='recercat_centers/resume_email';\r\n    status = props.record.resume_send_status;\r\n    condition = props.record.email && props.record.actived ? true: false;\r\n    tooltip_button = translate('recercat_centers.resume_send_tooltip_button'); \r\n    tooltip_sending = translate('recercat_centers.resume_send_tooltip_sending'); \r\n    tooltip_done = translate('recercat_centers.resume_send_tooltip_done'); \r\n    tooltip_ko = translate('recercat_centers.resume_send_ko'); \r\n    popup_title = translate('recercat_centers.resume_send_title');\r\n    popup_content = translate('recercat_centers.resume_send_ask');\r\n    popup_content_again = translate('recercat_centers.resume_send_ask_again');\r\n  }\r\n  else if(target==targetsEmails.DONATIONS_USERS_CERTIFICATE)\r\n  {\r\n    // Enviament\r\n    url='donations_certificates/send';\r\n    status = props.record.status;\r\n    condition = props.record.email;\r\n    tooltip_button = translate('donations_users.email_sent_tooltip_button'); \r\n    tooltip_sending = translate('donations_users.email_sent_tooltip_sending'); \r\n    tooltip_done = translate('donations_users.email_sent_tooltip_done'); \r\n    tooltip_ko = translate('donations_users.email_sent_ko');\r\n    popup_title = translate('donations_users.email_sent');\r\n    popup_content = translate('donations_users.email_sent_ask');\r\n    popup_content_again = translate('donations_users.email_sent_ask_again');\r\n  }\r\n  else if(target==targetsEmails.DONATIONS_USERS_CONFIRMATION)\r\n  {\r\n    // Enviament\r\n    url='donations_users/confirmation/send';    \r\n    status = props.record.confirmation_status;\r\n    condition = props.record.email && props.record.status == 1;\r\n    tooltip_button = translate('donations_users.email_sent_confirmation_tooltip_button'); \r\n    tooltip_sending = translate('donations_users.email_sent_confirmation_tooltip_sending'); \r\n    tooltip_done = translate('donations_users.email_sent_confirmation_tooltip_done'); \r\n    tooltip_ko = translate('donations_users.email_sent_confirmation_ko');\r\n    popup_title = translate('donations_users.email_sent_confirmation');\r\n    popup_content = translate('donations_users.email_sent_confirmation_ask');\r\n    popup_content_again = translate('donations_users.email_sent_confirmation_ask_again');\r\n  }\r\n  else if(target==targetsEmails.ASSOCIATIONS_TRIAL || target==targetsEmails.ASSOCIATIONS_BEGIN || target==targetsEmails.ASSOCIATIONS_END)\r\n  {\r\n    // Enviament de notificació a associació\r\n    url='associations/send/' + target;        \r\n    \r\n    status = 0;\r\n    condition = false;\r\n    \r\n    if (target==targetsEmails.ASSOCIATIONS_TRIAL)\r\n    {\r\n        status = props.record.trial_status;  \r\n        let i = 0;\r\n        for(i=0;i<props.record.subscriptions.length ;i++)\r\n        {\r\n            if (props.record.subscriptions[i].modules_options.public_id == 'FREE')\r\n            {\r\n                condition = true;\r\n            }\r\n        }\r\n    }    \r\n    else if (target==targetsEmails.ASSOCIATIONS_BEGIN)\r\n    {\r\n        status = props.record.begin_status;        \r\n    }\r\n    else if (target==targetsEmails.ASSOCIATIONS_END)\r\n    {\r\n        status = props.record.end_status;\r\n        let i = 0;\r\n        for(i=0;i<props.record.subscriptions.length ;i++)\r\n        {\r\n            if (props.record.subscriptions[i].modules_options.public_id == 'FREE')\r\n            {\r\n                condition = true;\r\n            }\r\n        }\r\n    }\r\n        \r\n    tooltip_button = translate('associations.email_sent_tooltip_button'); \r\n    tooltip_sending = translate('associations.email_sent_tooltip_sending'); \r\n    tooltip_done = translate('associations.email_sent_tooltip_done'); \r\n    tooltip_ko = translate('associations.email_sent_confirmation_ko');\r\n    popup_title = translate('associations.email_sent');\r\n    popup_content = translate('associations.email_sent_ask');\r\n    popup_content_again = translate('associations.email_sent_ask_again');\r\n  }\r\n        \r\n  return (\r\n    <>\r\n      {condition ? \r\n        <>\r\n          { status === emailsStatus.SENDING_TO_SMTP ?\r\n            <>\r\n              <Tooltip title={tooltip_sending}> \r\n                <ForwardToInboxIcon onClick={ (e) => { e.stopPropagation(); handleClickEmail(props.record.id); } } /> \r\n              </Tooltip> \r\n            </>\r\n            :\r\n            <>\r\n              { status === emailsStatus.SENT_TO_SMTP_OK ?\r\n                <Tooltip title={tooltip_done}> \r\n                  <MarkEmailReadIcon onClick={ (e) => { e.stopPropagation(); handleClickEmailAgain(props.record.id); } } /> \r\n                </Tooltip> \r\n                : \r\n                <>\r\n                  { status === emailsStatus.NOT_SENT || !status ?\r\n                    <Tooltip title={tooltip_button}> \r\n                      <MailOutlineIcon className=\"grey2\" onClick={ (e) => { e.stopPropagation(); handleClickEmail(props.record.id);}} /> \r\n                    </Tooltip>    \r\n                    :\r\n                    <>\r\n                      <Tooltip title={tooltip_button}>       \r\n                        <MailOutlineIcon onClick={ (e) => { e.stopPropagation(); handleClickEmail(props.record.id);}} /> \r\n                      </Tooltip>\r\n                      <Tooltip title={tooltip_ko}>                            \r\n                        <ErrorOutlineIcon className=\"red\" />\r\n                      </Tooltip>\r\n\r\n                    </>\r\n                  }\r\n                </>\r\n              }\r\n            </>\r\n          }\r\n                \r\n          <Confirm\r\n            isOpen={open}\r\n            loading={loading}\r\n            title={popup_title}\r\n            content={popup_content}\r\n            onConfirm={handleConfirm}\r\n            onClose={handleDialogClose}\r\n          />\r\n          <Confirm\r\n            isOpen={openAgain}\r\n            loading={loading}\r\n            title={popup_title}\r\n            content={popup_content_again}\r\n            onConfirm={handleConfirmAgain}\r\n            onClose={handleDialogCloseAgain}\r\n          />\r\n        </>\r\n                \r\n        : null }\r\n            \r\n    </> \r\n            \r\n  );\r\n};\r\n","import * as React from 'react';\r\n\r\nimport {\r\n  TextField,\r\n  SelectInput,\r\n  TextInput, \r\n  ReferenceManyField, required, FunctionField\r\n} from 'react-admin';\r\n\r\nimport { EditableDatagrid, RowForm, } from '@react-admin/ra-editable-datagrid';\r\n\r\n\r\n\r\nimport { useFormState } from 'react-final-form';\r\n\r\nimport { useTranslate  } from '../common/language';\r\n\r\nimport { validateMaxLength, validateEmail  } from './../components/Validator';\r\n\r\nimport { SendEmailIconStatus } from './../components/Emails';\r\nimport { targetsEmails } from './../common/constants';\r\n\r\nexport const PermissionsList = (props) => {\r\n    \r\n  const translate = useTranslate();  \r\n    \r\n  return (\r\n    <ReferenceManyField\r\n      fullWidth                \r\n      reference=\"users_permissions\"\r\n      target=\"associations_id\"\r\n      label=\"\"\r\n    >\r\n\r\n      <EditableDatagrid   \r\n        createForm={<PermissionsFormNew initialValues={{ associations_id: props.id }} />}\r\n        editForm={<PermissionsFormEdit />}\r\n        hasCreate\r\n        noEdit={false}\r\n      >\r\n        <TextField fullWidth source=\"users_login_email\" label={translate('permissions.user')} sortable={false} />\r\n        <FunctionField label={translate('users_permissions.role')} render={record => \r\n          translate('users_permissions.role_' + record.user_permission_public_id)\r\n        } sortable={false}  />\r\n        <FunctionField label={translate('users_permissions.email_sent')} render={record => \r\n          <SendEmailIconStatus record={record} target={targetsEmails.NEWADMIN}  />\r\n        } sortable={false}  />\r\n                 \r\n      </EditableDatagrid>\r\n\r\n    </ReferenceManyField> \r\n  );\r\n};\r\n\r\nexport const choicesRoles = (translate) => {\r\n  return ([\r\n    { id: 'ADMIN', name: translate('users_permissions.role_ADMIN') },\r\n    { id: 'ADMIN_CONTACTS', name: translate('users_permissions.role_ADMIN_CONTACTS') },\r\n    { id: 'ADMIN_READER', name: translate('users_permissions.role_ADMIN_READER') }\r\n  ]);\r\n};\r\n\r\nconst PermissionsFormNew= (props) => \r\n{\r\n  const translate = useTranslate();   \r\n  const { values } = useFormState();\r\n  return (\r\n    <RowForm {...props}>\r\n      <TextInput fullWidth source=\"user_email\" label={translate('common.email')} validate={[required(),validateMaxLength(100,translate('common.validation.maxLength')),validateEmail()]} />  \r\n      <SelectInput label={translate('users_permissions.role')} source=\"user_permission_public_id\" choices={choicesRoles(translate)} validate={[required()]} initialValue={'ADMIN'} />            \r\n    </RowForm>\r\n  );\r\n};\r\n\r\nconst PermissionsFormEdit= (props) => \r\n{\r\n  const translate = useTranslate();   \r\n  const { values } = useFormState();\r\n  return (\r\n    <RowForm {...props}>\r\n      <TextInput fullWidth source=\"users_login_email\" label={translate('common.email')} validate={[required(),validateMaxLength(100,translate('common.validation.maxLength')),validateEmail()]} disabled />  \r\n      <SelectInput label={translate('users_permissions.role')} source=\"user_permission_public_id\" choices={choicesRoles(translate)} validate={[required()]} initialValue={'ADMIN'} />            \r\n      <span />\r\n    </RowForm>\r\n  );\r\n};\r\n\r\n/*\r\n// No es fa servir la següent funció\r\nconst PermissionsFormEdit = (props) => {\r\n  const {\r\n    record,\r\n    id,\r\n    className,\r\n    quitEditMode,\r\n    selectable,\r\n    basePath,\r\n    resource,\r\n    save,\r\n    saving,\r\n    selected,\r\n    undoable,\r\n    ...rest\r\n  } = props;\r\n  return (\r\n    <Form\r\n      onSubmit={save}\r\n      {...rest}\r\n    >\r\n      {({ handleSubmit, invalid, dirty }) => (\r\n        <TableRow className={className} key={id}>          \r\n          <TableCell>\r\n            <TextField\r\n              fullWidth\r\n              source=\"user_email\"\r\n              record={record}\r\n              resource={resource}\r\n              basePath={basePath}\r\n            />\r\n          </TableCell>\r\n          <TableCell>\r\n            <PermissionsStatusTextField\r\n              source=\"status\"\r\n              record={record}\r\n              resource={resource}\r\n              basePath={basePath}\r\n            />\r\n          </TableCell>\r\n          <TableCell>            \r\n            <CancelEditButton cancel={quitEditMode} />\r\n          </TableCell>\r\n        </TableRow>\r\n      )}\r\n    </Form>\r\n  );\r\n};\r\n\r\n*/\r\n\r\n\r\nconst PermissionsStatusTextField = ({ source,record }) => {\r\n  const translate = useTranslate();  \r\n  const textOutput = (record[source] === 0) ? translate('permissions.status0') : translate('permissions.status1');\r\n  return (<span>{textOutput}</span>);\r\n};\r\n","// in src/posts.js\r\nimport * as React from 'react';\r\nimport { useState, useEffect } from 'react';\r\n\r\nimport {\r\n  List, \r\n  Datagrid,\r\n  TextField,\r\n  EditButton,\r\n  Edit,\r\n  Create,\r\n  SimpleForm,\r\n  ReferenceInput,\r\n  SelectInput,\r\n  TextInput, \r\n  CreateButton ,\r\n  TopToolbar,\r\n  FormTab,\r\n  TabbedForm,\r\n  ReferenceManyField,\r\n  Filter, required,  BooleanInput, useDataProvider, FunctionField\r\n    \r\n} from 'react-admin';\r\n\r\nimport { EditableDatagrid, RowForm } from '@react-admin/ra-editable-datagrid';\r\n\r\n\r\nimport Typography from '@mui/material/Typography';\r\n\r\nimport {useMediaQuery } from '@material-ui/core';\r\n//import Chip from '@material-ui/core/Chip';\r\nimport Chip from '@mui/material/Chip';\r\n\r\nimport { useFormState } from 'react-final-form';\r\n\r\n\r\nimport { PermissionsList  } from './users_permissions';\r\n\r\n\r\nimport { useTranslate  } from '../common/language';\r\n\r\nimport { targetsEmails,emailsStatus } from '../common/constants';\r\nimport { SendEmailIconStatus } from '../components/Emails';\r\n\r\n\r\n\r\nimport {\r\n  DateField,\r\n  DateInput\r\n} from 'react-admin';\r\n\r\n\r\n\r\n\r\nimport { validateMaxLength  } from './../components/Validator';\r\n\r\nexport const AssociationsList = (props) => {\r\n    \r\n  const translate = useTranslate();      \r\n  const isSmall = useMediaQuery(theme => theme.breakpoints.down('sm'));\r\n  return (\r\n    <List {...props}         \r\n      sort={{ field: 'id', order: 'DESC' }}  \r\n      filters={<AssociationsFilter />}\r\n      bulkActionButtons={false} \r\n      resource=\"associations\"\r\n      basePath=\"/associations\"\r\n      perPage={50}\r\n      actions={<ListActions/>}\r\n    >\r\n        \r\n      <Datagrid>                    \r\n        <TextField source=\"name\" label={translate('common.name')} sortable={false} />\r\n        <FunctionField render={record => chipsSubscriptions(record.subscriptions) } label={translate('associations.subscriptions')} sortable={false}  /> \r\n        <FunctionField label={translate('associations.trial')} render={record => \r\n            <SendEmailIconStatus record={record} target={targetsEmails.ASSOCIATIONS_TRIAL}  />\r\n        } sortable={false}  />\r\n        <FunctionField label={translate('associations.end')} render={record => \r\n            <SendEmailIconStatus record={record} target={targetsEmails.ASSOCIATIONS_END}  />\r\n        } sortable={false}  />\r\n        <TextField source=\"num_users\" label={translate('associations.report_users')} sortable={false} />\r\n        <TextField source=\"num_groups\" label={translate('associations.report_groups')} sortable={false} />\r\n        <TextField source=\"num_emails\" label={translate('associations.report_emails')} sortable={false} />\r\n        <TextField source=\"num_emails_failed\" label={translate('associations.report_emails_not_sent')} sortable={false} />\r\n        <TextField source=\"num_docs\" label={translate('associations.report_docs')} sortable={false} />\r\n        <TextField source=\"total_size\" label={translate('associations.report_mb')} sortable={false} />\r\n        <TextField source=\"num_remittances\" label={translate('associations.report_remittances')} sortable={false} />\r\n        <TextField source=\"num_remittances_users\" label={translate('associations.report_remittances_users')} sortable={false} />\r\n        <DateField source=\"last_action\" showTime  label={translate('associations.report_last_action')}/>\r\n                    \r\n                    \r\n\r\n        <EditButton label=\"\" />\r\n      </Datagrid>\r\n        \r\n    </List>\r\n  );\r\n};\r\n\r\n/*\r\n * <ArrayField source=\"subscriptions\" label={translate('associations.subscriptions')} sortable={false} >\r\n                        <SingleFieldList>\r\n                            <ChipField source=\"modules.name\" />\r\n                        </SingleFieldList>\r\n                    </ArrayField>\r\n */\r\n\r\nconst chipsSubscriptions = (subscriptions) => {\r\n  let i = 0;\r\n  let strChips = '';\r\n    \r\n  let arrSubscriptions = [];\r\n  for(i=0;i<subscriptions.length ;i++)\r\n  {\r\n    //strChips+=subscriptions[i].modules.name + \" - \" + subscriptions[i].modules_options.name;\r\n    let date_expiration = subscriptions[i].date_expiration.substr(0,10);\r\n    let date = new Date(subscriptions[i].date_expiration.substr(0,10));\r\n    let dateNow = new Date();\r\n    var date30d = new Date();\r\n    date30d.setDate(dateNow.getDate()+30);\r\n        \r\n    let color = 'green';\r\n    if (date <= dateNow)\r\n      color = 'red';\r\n    else if (date <= date30d)\r\n      color = 'orange';\r\n        \r\n    let aux_subscription = React.createElement(Chip, {label: subscriptions[i].modules.name , className: 'chip ' + color } );\r\n    arrSubscriptions.push(aux_subscription);\r\n  }\r\n  const list = React.createElement('div', {}, arrSubscriptions);\r\n                        \r\n  return list;\r\n};\r\n                        \r\n\r\nconst ListActions = (props) => (\r\n  <TopToolbar>        \r\n    <CreateButton {...props} />\r\n  </TopToolbar>\r\n);\r\n\r\nexport const AssociationsEdit  = ({ id, ...props }) => {\r\n\r\n  const translate = useTranslate();   \r\n    \r\n  const dataProvider = useDataProvider();\r\n  const [info, setInfo] = useState();\r\n    \r\n  const today = new Date().toISOString().slice(0, 10);\r\n  const future = new Date('2099-12-31').toISOString();\r\n\r\n  useEffect(() => {\r\n        \r\n    dataProvider.getOne('associations', { id: id })\r\n      .then(({ data }) => {     \r\n        setInfo(data);\r\n      })\r\n      .catch(error => {           \r\n      });\r\n       \r\n  }, []);\r\n    \r\n  return (\r\n    \r\n    <>\r\n      <br />\r\n      <Typography variant=\"h5\" className=\"grey8\" >\r\n        {info ? info.name : null }              \r\n      </Typography>\r\n    \r\n      <Edit title={<ElementTitle />} {...props}  id={id}\r\n        mutationMode=\"pessimistic\"> \r\n    \r\n        <TabbedForm>\r\n          <FormTab\r\n            label={translate('associations.tab_subscriptions')}\r\n          >\r\n\r\n            <ReferenceManyField\r\n              fullWidth\r\n              reference=\"subscriptions\"\r\n              target=\"associations_id\"\r\n              label=\"\"\r\n            >\r\n\r\n              <EditableDatagrid   \r\n                fullWidth\r\n                createForm={<OptionForm initialValues={{ associations_id: id, date_init: today, date_expiration : future }} edit={false} />}\r\n                editForm={<OptionForm edit={true} />}\r\n                label=\"\"\r\n                hasCreate\r\n              >\r\n                <TextField fullWidth source=\"modules.name\" label={translate('subscriptions.module')} sortable={false} />\r\n                <TextField fullWidth source=\"modules_options.name\" label={translate('subscriptions.option')} sortable={false} />\r\n                <DateField source=\"date_init\" label={translate('subscriptions.date_init')} sortable={false} />\r\n                <DateField source=\"date_expiration\" label={translate('subscriptions.date_expiration')} sortable={false} />\r\n                 \r\n              </EditableDatagrid>\r\n\r\n            </ReferenceManyField> \r\n\r\n          </FormTab>\r\n\r\n          <FormTab\r\n            label={translate('associations.tab_admin')}             \r\n          >\r\n            <PermissionsList id={id} />\r\n\r\n          </FormTab>\r\n            \r\n          <FormTab\r\n            label={translate('associations.tab_data')}\r\n          >              \r\n            <TextInput fullWidth source=\"name\" label={translate('common.name')} validate={[required(),validateMaxLength(100,translate('common.validation.maxLength'))]} />\r\n          </FormTab>\r\n\r\n        </TabbedForm>\r\n    \r\n      </Edit>\r\n    </>\r\n  );\r\n};\r\n\r\n/*\r\n * <FormTab\r\n                label={translate('associations.tab_statistics')}\r\n            >\r\n\r\n            <br />\r\n            <Card fullWidth>\r\n                <CardHeader title=\"Estadístiques\" />\r\n                <CardContent>Aquí apareixeran dades estadístiques de l'associació.</CardContent>\r\n            </Card>\r\n\r\n            </FormTab>          \r\n */\r\n\r\nexport const AssociationsCreate = props => {\r\n  const translate = useTranslate();   \r\n  return (\r\n    <Create {...props}>\r\n      <SimpleForm redirect=\"edit\">\r\n        <TextInput fullWidth source=\"name\" label={translate('common.name')} validate={[required(),validateMaxLength(100,translate('common.validation.maxLength'))]} />   \r\n        <BooleanInput source=\"generate_data_demo\" label={translate('associations.generate_data_demo')} />         \r\n      </SimpleForm>\r\n    </Create>\r\n  );\r\n};\r\n\r\nconst OptionsInput = props => {\r\n  const translate = useTranslate();   \r\n  const { values } = useFormState();\r\n  return (\r\n    values.modules_id ? \r\n      <ReferenceInput sort={{ field: 'priority', order: 'ASC' }} label={translate('subscriptions.option')} source=\"modules_options_id\" reference=\"modules_options\" filter={{ modules_id : values.modules_id }}>\r\n        <SelectInput fullWidth optionText=\"name\" optionValue=\"id\" validate={required()} />\r\n      </ReferenceInput> : ''\r\n  );\r\n};\r\n\r\n\r\nconst OptionForm= ({edit, ...props}) => {\r\n  const translate = useTranslate();   \r\n  const { values } = useFormState();\r\n  return (\r\n    <RowForm {...props}>\r\n      <ReferenceInput label={translate('subscriptions.module')} source=\"modules_id\" reference=\"modules\"  sort={{ field: 'priority', order: 'ASC' }} >\r\n        { edit ? (\r\n          <SelectInput fullWidth optionText=\"name\" optionValue=\"id\" validate={required()} disabled />\r\n        ) : (\r\n          <SelectInput fullWidth optionText=\"name\" optionValue=\"id\" validate={required()} />\r\n        ) }\r\n      </ReferenceInput> \r\n      <OptionsInput source=\"modules_options_id\" label={translate('subscriptions.option')}  />\r\n      <DateInput source=\"date_init\" validate={required()} label={translate('subscriptions.date_init')} />\r\n      <DateInput source=\"date_expiration\" validate={required()} label={translate('subscriptions.date_expiration')} />\r\n    </RowForm>\r\n  );\r\n};\r\n\r\n\r\n\r\n\r\nconst AssociationsFilter = (props) => \r\n{ \r\n  const translate = useTranslate(); \r\n  return (\r\n    <Filter {...props}>\r\n      <TextInput label={translate('common.search')} source=\"q\" alwaysOn validate={[validateMaxLength(100,translate('common.validation.maxLength'))]} />        \r\n    </Filter>\r\n  );\r\n};\r\n\r\n\r\n/*const ListActions = (props) => (\r\n    <TopToolbar>\r\n        {cloneElement(props.filters, { context: 'button' })}\r\n        <CreateButton/>\r\n        <ExportButton />        \r\n    </TopToolbar>\r\n);*/\r\n\r\n\r\n\r\nconst AssociationsTitle = ({ record }) => {\r\n  return <span>Editar {record ? `\"${record.name}\"` : ''}</span>;\r\n};\r\n\r\n\r\nconst ElementTitle = ({ record }) => {\r\n  return <span>Editar {record ? `\"${record.name}\"` : ''}</span>;\r\n};\r\n\r\n\r\n","\r\nimport { Tooltip as TooltipSvg } from 'react-svg-tooltip';\r\n\r\n\r\nconst MapPoint = (props) => {\r\n        \r\n  let point_x = props.point.nitems>=10 ? props.point.x-7.5 : props.point.x-3.5;\r\n  let point_y = props.point.y+4;\r\n        \r\n  const id_circle = 'circle-' + props.point.id;\r\n  const id_text = 'text-' + props.point.id;\r\n    \r\n  return (\r\n    <>\r\n      <circle cx={props.point.x} cy={props.point.y} r=\"10\" stroke=\"black\" strokeWidth=\"1\" fill=\"black\" id={id_circle} />\r\n      <text className=\"markPoint\" x={point_x} y={point_y} fill=\"white\" id={id_text} >{props.point.nitems}</text>\r\n    </>\r\n  );\r\n};\r\n\r\n\r\nconst TooltipRegion = (props) => {\r\n\r\n  let length = (props.point.name.length+5) * 8;\r\n\r\n  return (\r\n    <TooltipSvg triggerRef={props.reference} >\r\n      <rect\r\n        x={15}\r\n        y={2}\r\n        width={length}\r\n        height={30}\r\n        rx={0.5}\r\n        ry={0.5}\r\n        fill=\"white\"\r\n        strokeWidth=\"1\"\r\n        stroke=\"black\"\r\n      ></rect>\r\n      <text x={25} y={22} fontSize={14} fill=\"black\" className=\"tooltip\">\r\n        {props.point.name} ({props.point.nitems})\r\n      </text>\r\n    </TooltipSvg>   \r\n  );\r\n};\r\n\r\n\r\nexport const MapCatalonia = (props) => {    \r\n  return (\r\n    <>\t\r\n\r\n      <g id=\"zone-2\" className={props.hover==2 ? 'zone hover' : 'zone'} ref={props.points[1].pathRef} >\r\n    \r\n        <path d=\"M20.3,343.2l5.2,1l0.6,5.2l3.9,1.9l1-2.3l6.5-0.6c0,0,2.6,4.6,3.9,4.6h7.8l10.4-1l2.9,6.2l8.5-0.7l5.2,0.7\r\n\t\th6.5l3.9,2.6l7.2-4.2l6.8-0.6l0.3,2l-5.5,4.8l-8.5,3.9l-4.2,3.9l-8.2,11.4l-9.8,0.3l0.4-4.2l7.1,3.3l8.4-12h-6.5l-2.6,2.6l-8.2-0.3\r\n\t\tl-2.6,4.2l-5.8,5.8l-1.7,5.5l-10-3.6l0.3-4.6l-5.5-5.5l-8.5-0.3l-6.5-5.5l-0.3-3.9l3.9-3l-4.2-3.6l-2.6,1l-1.6-2l1-2.9l-3.9,0.6\r\n\t\tl-4.6-2.6l6.8-4.5L20.3,343.2z\"/>\r\n        <path d=\"M89.6,331.2l7.8-10.1l-5.2-0.3L86,323l-12.3-3.9l-5.2,2.9l-5.5-1.9l1.3-4.9l-3.2-2l1.9-2.9l-1-4.9l-0.5,0.2\r\n\t\tl0.5,0.5l-5.8,5.2l-4.9,4.2l-12,1.6l-2.6,3.3v7.5l-10,11.4l-1-1l-4.9,4.6l0,0.4l4.8,0.9l0.6,5.2l3.9,1.9l1-2.3l6.5-0.6\r\n\t\tc0,0,2.6,4.6,3.9,4.6h7.8l10.4-1l2.9,6.2l8.5-0.7l5.2,0.7h6.5l3.9,2.6l7.2-4.2l0.6-0.1l-1.6-1.9l-6.5-10.1l-4.2,1.3l5.2,2.3\r\n\t\tl-4.2,3.2l-5.5-4.2l-0.3-4.6l5.2-2.6l0.6-3.2L89.6,331.2z\"/>   \r\n        <path d=\"M38.6,271.6v4.6l7.8-3.3l4.6,5.8c0,0,3-1.9,3-0.6c0,1.3-0.1,5.8-0.1,5.8l-1,3.9l4.6,6.2l-3.6,6.5l3.3,0.3\r\n\t\tl4.9,5.2l-5.8,5.2l-4.9,4.2l-12,1.6l-2.6,3.3v7.5l-10,11.4l-3.3-3.5l-0.6-7.2l-1.9-0.6l2.3-5.8l4.2-1.3l-0.6-14.7l-5.9-3.9\r\n\t\tl-0.3-6.8l-2.6-1.6l0.6-4.2l2.3-3.2l3,2.3l1.3-3.6l5.5-0.3l0.3-6.5l1.3-6.5H38.6z\"/>\r\n        <polygon points=\"120.9,260.6 114.3,256.7 108.8,261.9 108.4,264.2 111.4,264.5 111.7,269 103.2,272.6 106.2,275.6 \r\n\t105.5,279.8 101.6,279.4 101.3,282.1 104.3,285 101.6,292.5 94.2,291.8 95.1,295 99.7,297 97.7,302.9 92.9,301.9 87.7,307.4 \r\n\t87.3,314.6 89.9,318.1 86.7,326 94.8,323 104.9,313.9 109.1,307.7 115,305.1 118.5,302.6 125.3,302.6 128.2,300.8 127.7,300.9 \r\n\t125.7,297.4 126.4,292.8 129.9,294.7 130.2,290.8 133.5,294.1 137.7,290.5 132.5,286 137.7,280.1 136.4,277.8 136.4,277.8 \r\n\t135.1,277.2 131.6,270 121.8,269 122.1,264.2 119.8,261.2 \"/>\r\n        <path d=\"M62,306.1 M99.7,297l-4.6-2l-0.3-1.1l-2.3,1.1l-1.6,6.2l-3.9-4.6l-5.5-2.3l-3.9-3.9l1.3-2.6l-3-2.6v-2.6\r\n\t\tl-1.6-3l3.9-0.6l0.6-4.2l-1.9-0.4V272l2.3-1.9l-2.3-3.9l4.2-3.3l1.1-1l-4.3-0.9l-5.2,1.3l-5.8,1.7l-2.4-4.1l-0.2,0.5l-2.3-1.9\r\n\t\tl-4.6,5.5l-2.6,0.3l-4.9-7.8l-3.6,3.9l1.3,3.2l-1,2.6l-6.8-1l-1.3,6.5v4.6l7.8-3.3l4.6,5.8c0,0,3-1.9,3-0.6c0,1.3-0.1,5.8-0.1,5.8\r\n\t\tl-1,3.9l4.6,6.2l-3.6,6.5l3.3,0.3l4.4,4.7l0.5-0.2l1,4.9l-1.9,2.9l3.2,2l-1.3,4.9l5.5,1.9l5.2-2.9L86,323l2.2-0.8l1.7-4.1l-2.6-3.5\r\n\t\tl0.4-7.2l5.2-5.5l4.8,1L99.7,297z\"/>\r\n        \r\n        <polygon points=\"164.5,274.1 162.4,273.9 157.9,272 156.6,274.2 158.5,276.9 155.9,278.8 150.7,273.6 146.8,278.5 \r\n\t145.2,276.2 143.9,278.8 137.7,275.2 136.4,277.8 137.7,280.1 132.5,286 137.7,290.5 133.5,294.1 130.2,290.8 129.9,294.7 \r\n\t126.4,292.8 125.7,297.4 127.7,300.9 131.9,299.9 135.1,304.8 137.7,297 148.5,293.8 153,291.8 163.7,291.5 174.5,285.6 175,284.8 \r\n\t174.5,285 173.2,282.1 173.5,279.8 168.9,279.4 167.6,281.4 165.7,278.8 162.8,279.1 163.7,274.5 \"/>\r\n        <path d=\"M137.7,233.9l-8.8,3l-8.4-5.2l0.6,5.2l3.2,2.9l-8.1,8.8l-3.9,2.6l-1.6,4.6l-6.2,1v3.6l4.1,2.1l0.1-0.5\r\n\t\tl5.5-5.2l6.6,4l1.9-1l7.8,4.9l4.9-3.3l4.6,0.3l4.2-9.4l8.1-9.4l6.5,1.9l3.9-2.3l7.1-1.7l2.3-3.5c-1.3-0.9-3.2-2.3-4.3-3\r\n\t\tc-1.5-1-4.3-2.5-4.1-4.1s1.4-2.3,2.6-2.8c1.2-0.5,2.3-0.6,2.8-1.2c0.5-0.7-0.5-0.8-0.8-1.1c-0.3-0.4-0.4-1.1,0.1-1.7\r\n\t\ts0.8-1.6-0.2-2.5c-0.8-0.6-1.7-0.4-2.3-0.1c0,0-0.7,2.5-0.7,2.5l-2.3,0.6l-4.9-1.9h-14.6l-2,3.9l-4.5,1L137.7,233.9z\"/>\r\n        <path d=\"M110.9,259.9L110.9,259.9l-2.1,2L110.9,259.9z M104.6,258.3h-5.2l-4.9-4.9l-2,5.9l-5.8-1.7l-5.5,5.2l-4.2,3.3\r\n\tl2.3,3.9l-2.3,1.9v2.6l1.9,0.4l-0.6,4.2l-3.9,0.6l1.6,3v2.6l3,2.6l-1.3,2.6l3.9,3.9l5.5,2.3l3.9,4.6l1.6-6.2l2.3-1.1l-0.6-2.1\r\n\tl7.5,0.6l2.6-7.5l-3-2.9l0.3-2.6l3.9,0.3l0.6-4.2l-3-3l8.5-3.6l-0.3-4.5l-3-0.3l0.3-1.8l-4.1-2.1V258.3z\"/>\r\n        <text transform=\"matrix(1 0 0 1 39.3697 367.3295)\" >MONTSIÀ</text>\r\n        <text transform=\"matrix(1 0 0 1 46.0831 336.7045)\" >BAIX EBRE</text>\r\n        <text transform=\"matrix(1 0 0 1 80.733 277.0365)\">PRIORAT</text>\r\n        <text transform=\"matrix(1 0 0 1 60.7408 295.6215)\" >RIBERA </text>\r\n        <text transform=\"matrix(1 0 0 1 60.9371 302.6215)\" >D’EBRE</text>\r\n        <text transform=\"matrix(1 0 0 1 111.3087 285.4154)\" >BAIX </text>\r\n        <text transform=\"matrix(1 0 0 1 109.944 292.4154)\" >CAMP</text>\r\n        <text transform=\"matrix(1 0 0 1 138.5177 287.3686)\">TARRAGONÈS</text>\r\n        <text transform=\"matrix(1 0 0 1 141.6471 233.6361)\" >CONCA</text>\r\n        <text transform=\"matrix(1 0 0 1 134.4581 240.6361)\" >DE BARBARÀ</text>\r\n        <text transform=\"matrix(1 0 0 1 33.0699 300.1498)\" >TERRA</text>\r\n        <text transform=\"matrix(1 0 0 1 35.338 307.1498)\">ALTA</text>\r\n        <MapPoint point={props.points[1]} />\r\n      </g>\r\n      <g id=\"zone-3\" className={props.hover==3 ? 'zone hover' : 'zone'} ref={props.points[2].pathRef} >\r\n        <path d=\"M126.5,25.7l-0.2-0.7l-4-0.8l-3.4,1.3l-2.3-3.6c0,0-2.9,2.3-4,2.9c-1,0.5-4.5-5-4.5-5l-2.6,0.3l-6.3-3.6h-3.7\r\n\t\tl-4.7-1.6l-1.8-2.9l-4.2,0.3l-4.2,3.4l1.6,2.6l-0.8,4.2L78.9,25l2.3,2.7l-3.6,3.1l4.2,3.7l1.3,8.7l3.6,7.3l2.4,2.3h5.5l3.1-1.6\r\n\t\tl1.1,2.3h2.9l0.5-1.6l3.2-2.6l1.8,1l-0.5,2.9l2.3,0.3l2.7,2.9l0.8,0.1l1.8-2.4l2.1-0.3l1.3-14.2l3.7-2.6l2.9,1.3V25.8L126.5,25.7z\"\r\n        />\r\n        <path d=\"M171.3,57.9l2.3-2.1l-3.4-4l-0.3-4.5l-2.1-1.6l-1-4.7H165l-3.2-2.3l1.6-1.9l-3.9-1.6l-3.2,1.6l-5.5,0.6\r\n\t\tl-2.1-2.4l-2.1,1l-3.6,0.3l-2.1,1.9l-3.6-2.7l-0.8-6.6l-6-3.4l-5.8,0.3v12.7l-2.9-1.3l-3.7,2.6L116.5,54l-2.1,0.3l-1.8,2.4l7.6,0.9\r\n\t\tl0.4-0.9c1.8,1.5,3,2.6,3,2.8c0,0.5-3.2,2-5.6,3.1l1.2,2.1l2.4,0.5l1.6,3.9l-1.3,11.8l2.3,1.9l-5.8,9.2l-0.8,5h-3.4v1.6l2.4,2.3\r\n\t\tl-0.3,1.6l2.3,0.3l3.2,2.7l7.1,1.6h4.2l3.6,1.6l1.1-0.3V108l-2.7-1.6v-2.9l4-1.9c0,0,1.2-5,2.3-5.8c1.1-0.8,5.5-2.6,5.5-2.6\r\n\t\tl0.8-6.9l4-3.1v-3.4L156,79l1.6,1.8l1.9-3.6l3.9-4l-0.3-4c0,0,2.9,1.6,3.4,0.8c0.5-0.8,3.4-5.2,3.4-5.2s0.2,0,0.6,0l0.3-1.6\r\n\t\tl2.9-2.6L171.3,57.9z\"/>\r\n        <path d=\"M83.6,71.9l-0.5,1.8l0.5,3.2l4.5,7.1L86.5,87l3.2,2.3l-2.9,3.2l2.9,1.6l2.9-3.2l3.7,2.4l-1.6,1.8l-5.5,0.3\r\n\t\tl-1,1.3l2.6,3.7l5-0.5l5.8,1l2.4,1.8c0,0,2.1-0.8,2.1-1.8c0-1-0.3-5-0.3-5l-2.1-3.4l-2.6-1.1l-2.3-3.1l0.3-6l4.7,0.3v-3.7l4-4.7\r\n\t\tl4.2,0.5l-0.8-5.3l4.7-2.1L115,64c0,0,8.6-3.6,8.6-4.4c0-0.2-1.2-1.3-3-2.8l-0.4,0.9l-8.4-1l-2.7-2.9l-2.3-0.3l0.5-2.9l-1.8-1\r\n\t\tl-3.2,2.6l-0.5,1.6h-2.9l-1.1-2.3l-3.1,1.6h-1.8L92,53.7v5.6l-2.6,1.8l0.8,2.3L85.4,68l2.1,2.1l-1.4,2.7L83.6,71.9z\"/>\r\n        <path d=\"M233.8,104.8c-0.2,0.1-0.3,0.2,0,0.4c0.4,0.4,0.7,0.4,1.2,0.7C235.8,106.2,234.9,105.6,233.8,104.8 M237.4,105\r\n\t\tl4.1-7.9l-4.2-1.6c0,0-3.4-1.4-2.9-3.7s-1-7.3-1-7.3L221,79l-1.4-3.4l-9.4-1l-5.3-2.1l-6.6,0.8l0.3,3.2l-9.2,1.6l2.1,3.7l0.3,4.4\r\n\t\tl6.4,3.2l0.5,7.9l-1.4,7.4l0.3,3.9c0,0,1.1,0.3,2.6,0.8c-0.2-0.8-0.8-1.6-0.8-1.6l4-0.1l3.4-1.6l3.8,0.9l2-1.9l2.7,0.3l11.1-3.8\r\n\t\tl5,1.6c0,0,1.4,0.9,2.5,1.7C234.5,104.6,236.5,104.9,237.4,105\"/>\r\n        <path d=\"M190.9,80.6l-4.1,0.5c0,0-2.1,2.4-2.9,2.9c-0.8,0.5-6-1-6-1l-5.5-1.6l0.3-4.5l-2.9-2.9l7.7-2.6\r\n\t\tc0,0-2.9-4.5-3.4-5.5c-0.5-1-4-1-4-1s-2.9,4.4-3.4,5.2c-0.5,0.8-3.4-0.8-3.4-0.8l0.3,4l-3.9,4l-1.9,3.6L156,79l-4.2,0.8v3.4l-4,3.1\r\n\t\tl-0.8,6.9c0,0-4.4,1.8-5.5,2.6c-1.1,0.8-2.3,5.8-2.3,5.8l-4,1.9v2.9l2.7,1.6v5l-2.1,1.9l3.4,3.6l0.8,1.9l-2.9,0.8l4.4,3.6l-3.6,2.7\r\n\t\tl-1,5.5l0.3,5.5l7.3,0.5c0,0,2.3,3.4,2.9,5c0.5,1.6,0,3.4,0,3.4l-1,2.4l3.4,2.9l-2.1,6.9l1.1,3.6l4.2-3.6l3.4-5l5.3-2.7l0.5-11.6\r\n\t\tl-2.3,0.8l-2.1-3.9l0.5-3.7l4-3.4l-1-2.3l10-0.3l1.6,1.8l8.7-7.1l0.8-2.9l5.3,0.3l3.6,1.1l13.5-7.4l-0.7-5.9l-0.3,0.2l-4,0.1\r\n\t\tc0,0,0.6,0.8,0.8,1.6c-1.5-0.4-2.6-0.8-2.6-0.8l-0.3-3.9l1.4-7.4l-0.5-7.9l-6.4-3.2l-0.3-4.4L190.9,80.6z\"/>        \r\n        <path d=\"M152.3,169.2l-1,2.6l-6.2,6.5l-0.3,3.6l-3.9-0.3l-3.9,5.8l0,0l1,4.2c0,0-2.4,4.9-1.7,6.2\r\n\t\tc0.7,1.3,2.6,2.3,2.6,2.3l3.2-2.9l-2.9,5.9l0.6,9.1l-3.9,3.6l6.9,2.9l0.3,3.3h14.9l4.9,1.9l2.3-0.6l0.6-2.5\r\n\t\tc-0.7,0.3-2.2,0.7-1.9-0.3c0.3-1,0.5-1.7,0.7-2.4s-0.2-1.1-0.9-1.1s-2.4-1.1-2.6-1.8c-0.2-0.7,0.4-2.1,1.2-2.5\r\n\t\tc0.9-0.5,2.4-1.1,5-1.2c2.6-0.1,2.4-0.3,2.6-0.6c0.2-0.3-1.7-3.5-2.1-5.5c-0.4-1.9-1.5-2.5-1.9-3c-0.4-0.5-3.2-2-2.6-3.1\r\n\t\tc0.7-1.1,2.3-2.8,2.3-3.8c0.1-1-0.4-4.6-0.2-5.6c0.3-1,1.8-3.3,2.3-3.8c0.6-0.5,1.1-1.2,2.9-0.9c0.5,0.1,1.4,0.3,2.3,0.5l3.8-3.9\r\n\t\tl-1.9-2.9l2.4-2.6l1.8-7.2l-4.5-0.5c0,0-1,3.4-1.3,4.5c-0.3,1-4.7-3.1-4.7-3.1l-0.5-2.4l-4.2-2.6l-2.9,0.5l-0.8,3.4l-4.2,2.4\r\n\t\tc0,0-0.5-2.1-0.8-3.2c0-0.1,0-0.2-0.1-0.3L152.3,169.2z\"/>    \r\n        <path d=\"M121,232l-0.5-0.3L121,232z M143.6,221.9h-0.3l-0.3-3.3l-6.9-2.9l3.9-3.6l-0.6-9.1l2.9-5.9l-3.2,2.9\r\n\t\tc0,0-1.9-1-2.6-2.3c-0.7-1.3,1.7-6.2,1.7-6.2l-1-4.2l-3.6-0.3l1-3.6l-1.3-1.6l-4.6,0.3c0,0-1.3-1,0-1.7c1.3-0.6,3.9-1.3,3.9-1.3\r\n\t\tV177l-3.9-3l-2.6,5.2l-2.3,6.5l-3.2,2.3l-2.3-2l-2.6,2l-2.3-1.6l0.6,2.9l-2.6,1.6l1,2.6l2.3-0.3l0,4.4l3.5,1.4l9.8-7.1l-7.1,9.4\r\n\t\tl-2.6,2.6l-2.6-0.6l0.3,3.9l-3,4.2l0.6,5.5l-2,2.2l2,4.3l-1,5.5l7.8,2.3c0,0,0.3,0.3,0.7,0.8l7.7,4.8l8.8-3l-0.6-7.1l4.5-1\r\n\t\tL143.6,221.9z\"/>\r\n        <path d=\"M83.8,208.6c-0.3-1,4.6-4.2,4.6-4.2v-3.9l0.1-1l-0.8,1.3l-2.3-1.9l0.6-3l-6.5,3l-3.6-3.9l0.7-2.3L66.2,179\r\n\t\tl-0.3-6.7l0-0.8l-0.2,0.7l-1.8-0.1l-0.3,3.6L61,179l-3.6-0.3l-4.2,5.5l0.3,3.6l-9.7-1l1,5.5l-3.6-1.7l-2.3,4.9l-4.2,4.9l0.3,3.9\r\n\t\tl3.6,3.9l-1,5.5h10l1,6.9l1,1.6l-8.5,10.1l-5.5-0.3l1.3,4.6v6.5l-3.2,2.6l5.9,8.5l-3,2.3l3.4,8.8l6.7,1l1-2.6l-1.3-3.2l3.6-3.9\r\n\t\tl4.9,7.8l2.6-0.3l4.6-5.5l2.3,1.9l0.2-0.5l0.8-1.8l0.6-8.7l4.2-0.3l2-5.2l-2.3-4.2l5.8-4.6l3.6-0.6l0.6-4.9l1.6-1.9l4.2-0.3\r\n\t\tl2.3-4.2l-3.6-2.6l1.9-3l3.9,1l4.6-4.6l-4.2-1.6l-2.9,3.3C87.7,215.4,84.1,209.6,83.8,208.6\"/>  \r\n        <path d=\"M136.1,133.1l-4.9,5.2l-0.3,3.9l-3.5,0.6l3.2,4.5l-4.2,5.2l-1-5.9l-4.8-0.3l-1,2.3l-4.5-0.6h-6.5l-2.9-4.6\r\n\t\tl-2.6,1.6h-3.9l-9.8-1.6c0,0-0.4-2.3-2.3-2c-1.9,0.3-4.5,0.7-4.5,0.7l-1.8-1l-3.7,4.6l-7.2,9.4l-1.9-1.3l-3.3,5.2l2.6,2.6l2.9,0.3\r\n\t\tl-1,5.2l2,1.6l-2.3,1.7l-2.9,1l0.3,7.5l10.4,13.7l-0.7,2.3l3.6,3.9l6.5-3l-0.6,3l2.3,1.9l1.3-2.3l3.9,0.6l1.6-2.3l4.2,0.3l2.3-2.3\r\n\t\tl1.3-3.3l3.6,1v3.9l2.6,2.3l6.2-0.3l-0.1-5.2l-2.3,0.3l-1-2.6l2.6-1.6l-0.6-2.9l2.3,1.6l2.6-2l2.3,2l3.2-2.3l2.3-6.5l2.6-5.2l3.9,3\r\n\t\tv2.3c0,0-2.6,0.6-3.9,1.3c-1.3,0.6,0,1.7,0,1.7l4.6-0.3l1.3,1.6l-1,3.6l3.6,0.3l3.9-5.9l3.9,0.3l0.3-3.6l6.2-6.5l1-2.6l4.6-2.3\r\n\t\tl-3-8.9l-1.1,1.6l-4.2,3.6l-1.1-3.6l2.1-6.9l-3.4-2.9l1-2.4c0,0,0.5-1.8,0-3.4c-0.5-1.6-2.9-5-2.9-5l-7.3-0.5l-0.3-5.5L136.1,133.1\r\n\t\tz\"/>\r\n        <path d=\"M120.8,201.4l7.1-9.4l-9.8,7.1l-3.5-1.4l0,0.8l-6.2,0.3l-2.6-2.3v-3.9l-3.6-1l-1.3,3.3l-2.3,2.3l-4.2-0.3\r\n\t\tl-1.6,2.3l-3.9-0.6l-0.5,0.9l-0.1,1v3.9c0,0-4.9,3.2-4.6,4.2c0.3,1,3.9,6.8,3.9,6.8l2.9-3.3l4.2,1.6l-4.6,4.6l-3.9-1l-1.9,3\r\n\t\tl3.4,2.5l3.7-3.5l4.6,1.7l3.6-3.3l2.6,2.6l3.3-4.2l5.5,1.9l0.6,1.2l2-2.2l-0.6-5.5l3-4.2l-0.3-3.9l2.6,0.6L120.8,201.4z\"/>\r\n    \r\n        <path d=\"M120.5,231.7l0.7,0.4c-0.4-0.5-0.7-0.8-0.7-0.8l-7.8-2.3l1-5.5l-2.6-5.5l-5.5-1.9l-3.3,4.2l-2.6-2.6l-3.6,3.3\r\n\t\tl-4.6-1.7l-3.7,3.5l0.2,0.1l-2.3,4.2l-4.2,0.3l-1.6,1.9l-0.6,4.9l-3.6,0.6l-5.8,4.6l2.3,4.2l-2,5.2l-4.2,0.3l-0.6,8.7l-0.8,1.8\r\n\t\tl2.4,4.1l5.8-1.7l5.2-1.3l4.3,0.9l4.4-4.2l5.8,1.7l2-5.9l4.9,4.9h5.2v-1.7l6.2-1l1.6-4.6l3.9-2.6l8.1-8.8l-3.2-2.9L120.5,231.7z\"/>\r\n        <path d=\"M136.7,108.7l-3.6-1.6h-4.2l-7.1-1.6l-3.2-2.7l-2.3-0.3l0.3-1.6l-2.4-2.3v-1.6h3.4l0.8-5l5.8-9.2l-2.3-1.9\r\n\t\tl1.3-11.8l-1.6-3.9l-2.4-0.5l-1.2-2.1c-1.6,0.7-3,1.3-3,1.3l0.8,3.2l-4.7,2.1l0.8,5.3l-4.2-0.5l-4,4.7v3.7l-4.7-0.3l-0.3,6l2.3,3.1\r\n\t\tl2.6,1.1l2.1,3.4c0,0,0.3,4,0.3,5c0,1-2.1,1.8-2.1,1.8l-2.4-1.8l-5.8-1l-5,0.5l-0.2-0.3l-2.5,2.9l0.3,7.2l-3.3,4.2l0.3,3.3\r\n\t\tl-2.6,3.6l1.3,3.5l-1.9,1.7l0.6,8.7l-2,1.7l-2.9,2.9l4.6,2.6c0,0,2.6-0.4,4.5-0.7s2.3,2,2.3,2l9.8,1.6h3.9l2.6-1.6l2.9,4.6h6.6\r\n\t\tl4.5,0.6l1-2.3l4.8,0.3l1,5.9l4.2-5.2l-3.2-4.5l3.5-0.6l0.3-3.9l4.9-5.2l0.8-0.3l1-5.4l3.6-2.7l-4.4-3.6l2.9-0.8l-0.8-1.9l-3.4-3.6\r\n\t\tl2.1-1.9v-4.5L136.7,108.7z\"/>          \r\n        \r\n        <path d=\"M205.3,126c0-0.7-0.4-1.6-0.4-1.6l-2.4,1.6l-4-1.3c0,0-0.7,1-1.4,1.1c-0.6,0.1-1-0.1-1.5-0.4\r\n\t\tc-0.8-0.6-0.2-1.7-0.9-2.3l-3.3-2.6l-0.3,0.2l-3.6-1.1l-5.3-0.3l-0.8,2.9l-8.7,7.1l-1.6-1.8l-10,0.3l1,2.3l-4,3.4l-0.5,3.7l2.1,3.9\r\n\t\tl2.3-0.8l-0.5,11.6l-5.3,2.7l-3.2,4.6l0.8-1.2l0.9,2.5c0.3,0,0.6,0,0.7,0.3c0.1,0.3,0,0.9-0.1,1.6l1.5,4.4l-1.5,0.7\r\n\t\tc0,0.1,0,0.2,0.1,0.3c0.3,1,0.8,3.2,0.8,3.2l4.2-2.4l0.8-3.4l2.9-0.5l4.2,2.6l0.5,2.4c0,0,4.5,4.2,4.7,3.1c0.3-1,1.3-4.5,1.3-4.5\r\n\t\tl4.5,0.5l-1.8,7.2l-2.4,2.6l1.9,2.9l-4.1,4.3c0.2,0.3,0.3,0.7,0.2,1c-0.2,0.9-1.3,2.2-1.2,2.9c0.2,0.8,1.3,1.5,2,0.8\r\n\t\tc0.8-0.7,0.5-2.3,1-2.5c0.6-0.3,1.7-0.7,2.1,0.7c0.4,1.4,1.2,2.3,2.8,2.7c1.6,0.4,1.2,0.9,2.1,0.5c0.9-0.4,1.8-2.1,2.4-2.4\r\n\t\tc0.6-0.3,2.6-1.3,3.6-0.3c0.3,0.3,1,1.4,1.9,3c0-0.1,0-0.1,0-0.2c-0.1-0.9-1-2.3-0.9-2.8c0.1-0.9,1.4-0.8,1.2-3.1\r\n\t\tc-0.1-1.2,0.3-2.7,0.9-3.2c0.6-0.5,1.3-1.1,1.1-2.4c-0.1-1.2,1.2-1.4,1.6-1.5c0.4-0.2,0.2-2,0.3-2.4s0.4-1.2,0.4-1.6\r\n\t\tc0-0.7-1-1.3-1.5-1.6c-0.5-0.3-2-0.9-3.1-0.9c-1.2,0-1.9-0.5-1.5-1.2c0.4-0.6,2.5-2.5,3.5-3c0.9-0.5,2.9-1.9,3.4-2.3\r\n\t\tc0.4-0.3,1.8-2.2,2.4-3.8l-2.5-0.8v-4.2l0.4-0.9l1.9-0.1l0.5,0.9l0.9,1.2l3.9-1.5l0.7-3.2l-2.3-2l-0.8,3.2l-3.9-0.8l-1.5-1.1\r\n\t\tl0.7-2.2l1.7,0.4l1.8-1.9l1.2-2.7l-0.8-0.9l-0.7,0.7l-0.9-0.3l2.4-7.1l3-0.9l-2.3-5.4l1.6-4l1.8-1\r\n\t\tC205.1,127.4,205.3,126.8,205.3,126\"/>\r\n                \r\n        <text transform=\"matrix(1 0 0 1 92.7657 171.7001)\" >NOGUERA</text>    \r\n        <text transform=\"matrix(1 0 0 1 81.7687 243.1352)\" >GARRIGUES</text>\r\n        <text transform=\"matrix(1 0 0 1 86.109 38.5673)\">VALL D’ARAN</text>\r\n        <text transform=\"matrix(1 0 0 1 152.2306 111.08)\">ALT URGELL</text>\r\n        <text transform=\"matrix(1 0 0 1 140.275 193.6869)\" >SEGARRA</text>\r\n        <text transform=\"matrix(1 0 0 1 134.2687 61.5063)\" >PALLARS </text>\r\n        <text transform=\"matrix(1 0 0 1 135.8229 68.5063)\" >SOBIRÀ</text>\r\n        <text transform=\"matrix(1 0 0 1 96.5807 63.9213)\">ALTA</text>\r\n        <text transform=\"matrix(1 0 0 1 87.7047 70.9213)\" >RIBAGORÇA</text>\r\n        <text transform=\"matrix(1 0 0 1 199.8727 95.351)\">LA CERDANYA</text>\r\n        <text transform=\"matrix(1 0 0 1 100.9908 124.5619)\" >PALLARS </text>\r\n        <text transform=\"matrix(1 0 0 1 104.4908 131.5619)\" >JUSSÀ</text>\r\n        <text transform=\"matrix(1 0 0 1 57.1217 223.4857)\" >SEGRIÀ</text>\r\n        <text transform=\"matrix(1 0 0 1 96.1188 204.4042)\" >PLA</text>\r\n        <text transform=\"matrix(1 0 0 1 88.734 211.4042)\" >D’URGELL</text>\r\n        <text transform=\"matrix(1 0 0 1 116.2159 220.0209)\" >URGELL</text>\r\n        <text transform=\"matrix(1 0 0 1 166.399 151.5473)\" >SOLSONÈS</text>\r\n        <MapPoint point={props.points[2]} />\r\n      </g>\r\n\r\n      <g id=\"zone-5\" className={props.hover==5 ? 'zone hover' : 'zone'} ref={props.points[4].pathRef} >\r\n        <path d=\"M252.7,264.4c-0.7-0.3-2.8-1.4-3.3-1.9c-0.5-0.5-0.3-1.1-0.6-1.9c-0.3-0.8-0.7-1.6-1.3-2.5\r\n\t\tc-0.5-0.9-0.3-1.7,0.3-2.3c0.6-0.7,1.2-2.1,1.1-2.6c-0.1-0.4-0.6-0.7-0.9-1.3c-0.2-0.5,0-1.9-0.5-2.2c-0.4-0.3-1.5-0.3-2.1-1\r\n\t\tc-0.6-0.6,0-1.5,0.2-2.1c0.2-0.6,0-0.9-0.9-1.9c-0.9-1-0.5-0.9-1.9-1.1c-1.4-0.2-3.2,0.2-6.2-0.2c-2.9-0.4-3.8-1.2-4.5-2\r\n\t\tc-0.8-0.7-2-1.5-3.1-2.5c-1.2-1.1-1.9-3-1.9-3.9s1.5-2,2.3-2.8c0.9-0.8,0.8-1.7,0.6-2.1c-0.1-0.4-1.2-1.3-2.2-2.9\r\n\t\tc-0.9-1.6-2.5-4.5-3.1-5.1c-0.5-0.5-2.8-0.8-3.5-1.3c-0.5-0.4-1.7-1.9-2.1-2.5c-0.8,0-3,0.5-4-1c-0.2-0.2-0.3-0.5-0.4-0.7l-0.9,0\r\n\t\tl0,1.6c0,0-1.1,4.3-0.7,5.6c0.4,1.3,3.7,5.9,4.2,6.6c0.5,0.7,1.5,1.8,0.8,2.5c-0.1,0.2-0.6,0.6-1.2,1.2c0,0,0,0,0,0\r\n\t\tc0.8,0.8,3.3,3.5,3.7,4.2c0.4,0.9,0.2,1.6,0.8,2.6c0.6,1,2.3,2.7,2,4.4c-0.3,1.7-2.4,5.7-2.4,7c0,1.4-0.7,2.5,0.5,3.7\r\n\t\tc1.2,1.2,1.2,1.5,0.5,2.7c-0.7,1.2-2.5,4-3.9,4.5c-0.8,0.3-1.5,0.5-2.1,0.4c0,0.1-0.3,1.4,0.2,1.9c0.6,0.6,2.5,1,2.6,1.7\r\n\t\tc0.1,0.8,0.3,1.7,1.3,1.8c1,0.1,2.9-0.8,3.8-0.6c1,0.2,2.9,0.6,3.3,1.5c0.4,1,0.5,1.5,0.3,1.6c0,0,0,0,0,0c1.1,0.3,3.5,0.7,5,0.7\r\n\t\tc1.8,0,4.3-0.2,5.5-0.4c1.2-0.2,3.3-0.5,4.9-1.1c1.6-0.5,3.5-1.3,4.3-1.5c1-0.2,2-0.2,2.6-0.8c0.6-0.6,1.8-0.9,2.4-1.4\r\n\t\tc0.7-0.5,1-0.6,1.5-1.5C254.2,265.3,253.5,264.7,252.7,264.4\"/> \r\n        <text transform=\"matrix(1 0 0 1 229.1119 257.2123)\" >BAIX </text>\r\n        <text transform=\"matrix(1 0 0 1 220.88 264.2123)\">LLOBREGAT</text>\r\n        <MapPoint point={props.points[4]} />\r\n      </g>\r\n      <g id=\"zone-4\" className={props.hover==4 ? 'zone hover' : 'zone'} ref={props.points[3].pathRef} >\r\n        <path d=\"M268.4,240.4c-0.6-0.4-1.5-2-1.6-2.8c-0.1-0.8,0.1-1.8-0.4-1.9c-0.1,0-0.9-0.1-0.9-0.1\r\n\t\tc0.1,0.2-0.2,0.5-0.5,0.9c-0.3,0.4-0.3,0.9-0.3,1.4c0,0.5,0.2,1.3-0.7,1.3c-1,0-1.5-0.2-2.4-0.2c-0.9,0.1-1.8,0.1-2.3,0.9\r\n\t\tc-0.5,0.8-1,1.7-1.3,2.6c-0.3,0.9-1,1.1-1.6,1.2c-0.6,0.1-1.8,0.5-2.4,1.1c-0.6,0.5-2,1-2.8,1c-0.7,0-4.2,0.3-4.2,0.3l-1.2-0.1\r\n\t\tc0.1,0.2,0.1,0.4,0,0.7c-0.2,0.6-0.8,1.5-0.2,2.1c0.6,0.6,1.7,0.6,2.1,1c0.4,0.3,0.2,1.7,0.5,2.2c0.2,0.5,0.8,0.8,0.9,1.3\r\n\t\tc0.1,0.4-0.5,1.9-1.1,2.6c-0.6,0.7-0.8,1.4-0.3,2.3c0.5,0.9,0.9,1.7,1.3,2.5c0.3,0.8,0.1,1.4,0.6,1.9c0.5,0.5,2.6,1.5,3.3,1.9\r\n\t\tc0.4,0.2,0.9,0.5,1.1,0.8c0,0,0.1,0,0.1-0.1c0-0.3,1.2-3.3,1.5-4.2c0.3-0.9,1-3.1,1.2-3.5c0.2-0.5,1.3-0.8,1.5-0.2\r\n\t\tc0.2,0.6-1.4,2.7-1.1,2.6c0.3-0.1,1.5-2.2,1.5-2.7c0-0.5,0.2-0.8,0.4-1.5c0.2-0.7,1.4-1.3,2-2c0.5-0.7,1.4-2.3,1.8-3\r\n\t\tc0.4-0.7,1-1.6,1.4-1.9c0.4-0.3,0.7-0.3,1.1-1.2c0.3-0.9,2.2-2.5,2.4-3.2c0.2-0.7,1.4-2,1.4-2.5C268.9,241.2,269,240.8,268.4,240.4\r\n\t\t\"/>\r\n    \r\n        <text transform=\"matrix(1 0 0 1 249.944 252.9066)\" >BARC</text>\r\n        <text transform=\"matrix(1 0 0 1 263.5518 252.9066)\" className=\"outside\">ELONÈS</text>\r\n    \r\n        <MapPoint point={props.points[3]} />\r\n      </g>\r\n      <g id=\"zone-6\" className={props.hover==6 ? 'zone hover' : 'zone'} ref={props.points[5].pathRef} >    \r\n        <path d=\"M265.5,235.6c-0.1-0.2-0.2-0.2-1-0.8c-0.7-0.6-1.7-1.9-2-2.5c-0.3-0.6-0.1-1.5,0.2-2.6c0.3-1.2,0-0.9,0.3-2.9\r\n\t\tc0.3-2-0.4-1.2-1-2.5c-0.6-1.3,0.2-1.4,0.3-2.1c0.1-0.7,0.3-1.3,0.2-3c-0.2-1.7-1.6-1.6-2.5-1.7c-0.9-0.1-1.9,0-2.1-1.1\r\n\t\tc-0.2-1.1-0.6-2.1-1.2-3.6c-0.5-1.5-2.4-2-3.5-2.5c-1.2-0.5-2.3-1.3-2.6-2.5c-0.2-1.2,0.9-1.1,2.3-1.4c1.4-0.3,1.7-1.4,1.8-2.7\r\n\t\tc0.1-1.2-0.6-2.9-0.8-3.5c-0.1-0.6-2.1-0.7-3.4-0.5c-1.3,0.2-1.9,0.6-2.7,0c-0.8-0.6-2.2-1.2-3.1-1.3c-0.9-0.1-4,0-4,0l-1.7,0.9\r\n\t\tc0.2,0.2,1.7,2.2,1.6,2.9c0,0.8-0.4,2.1-0.4,2.8c0,0.7,0,2.7-0.5,3c-0.4,0.3-4.8,1.1-5.5,1.2c-0.7,0.1-2.8-1.1-3.6-1.4\r\n\t\tc-0.8-0.3-3.5-0.5-3.8,0c-0.3,0.5-0.4,4.7-0.6,5.5c-0.3,0.8-2.3,2.8-3,2.8c-0.7,0-1.7,1.3-1.8,1.8c-0.1,0.6-1.8,0.6-2.3,0.6\r\n\t\tc-0.1,0-0.2,0-0.4,0l0,0c0.1,0,0.1,0,0.2,0c0.4,0.5,1.6,2.1,2.1,2.5c0.6,0.4,2.9,0.7,3.5,1.3c0.5,0.5,2.1,3.5,3.1,5.1\r\n\t\tc0.9,1.6,2,2.5,2.2,2.9c0.1,0.4,0.2,1.2-0.6,2.1c-0.9,0.8-2.3,2-2.3,2.8c0,0.1,0,0.3,0.1,0.5l1.3,2.8c0.2,0.2,0.3,0.4,0.5,0.6\r\n\t\tc1.2,1.1,2.3,1.8,3.1,2.5c0.8,0.7,1.6,1.6,4.5,2c2.9,0.4,4.7,0,6.2,0.2c1.4,0.2,1,0.1,1.9,1.1c0.5,0.5,0.8,0.9,0.9,1.1l1.2,0.1\r\n\t\tc0,0,3.5-0.3,4.2-0.3c0.7,0,2.2-0.5,2.8-1c0.6-0.5,1.8-1,2.4-1.1c0.6-0.1,1.3-0.3,1.6-1.2c0.3-0.9,0.8-1.8,1.3-2.6\r\n\t\tc0.5-0.8,1.4-0.8,2.3-0.9c0.9-0.1,1.4,0.2,2.4,0.2c0.9,0,0.7-0.8,0.7-1.3c0-0.5,0-1,0.3-1.4C265.2,236.1,265.6,235.9,265.5,235.6\"\r\n        />\r\n        <path d=\"M310.6,204.8c-0.3-0.9-0.5-0.3-1.1-0.5c-0.6-0.3-1.3-1.1-1.3-1.9c-0.1-0.8,0.8-2,1-2.8\r\n\t\tc0.2-0.7,0.3-1.3-0.2-1.9c-0.5-0.7-1.4-0.5-2-0.4c-0.6,0.1-2.2,0.3-2.8,0.1c-0.6-0.2-0.5-0.8-2.3-1.9c-1.7-1.1-1.9-2.9-2.2-3.3\r\n\t\tc-0.3-0.4-1.8-0.1-2.6-0.5c-0.8-0.3-2-1.6-2.7-2.6c-0.7-0.9-1.1-1-1.9-1.1c-0.9-0.1-1.9-0.9-2.8-1.8c-0.6-0.7-1.6-1.6-2.1-2\r\n\t\tc-0.1,0.1-0.1,0.2-0.2,0.2c-0.8,0.6-2.5,1.5-3.1,1.6c-0.6,0.2-1.5,1-1.8,1.7c-0.2,0.7-0.5,2-0.6,2.5c-0.1,0.5-0.6,1.7-1.4,1.5\r\n\t\tc-0.8-0.2-1.4-1.1-2.2-2.3c-0.9-1.2-1.6-2.5-2.2-2.6c-0.6-0.1-1.6,0.3-2.3,0.9c-0.7,0.6-1.4,0.5-2.2,0.2c-0.8-0.3-2.2-1-2.7-0.7\r\n\t\tc-0.5,0.2-1.3,1.1-1.4,1.8c-0.1,0.7,0.3,2.9,0.6,3.8c0.3,0.8,1.6,2.9,1.5,3.4c-0.2,0.7-1.8,0.8-2.7,0.8l-0.2,4.6c0,0-5.9,0.4-6-0.6\r\n\t\tc-0.1-1-0.1-1.3-1-1c-0.9,0.3-4.9,0.3-5.5,0.4c0,0,0,0-0.1,0c0.1,0.6,0.8,2.2,0.7,3.5c-0.1,1.2-0.4,2.4-1.8,2.7\r\n\t\tc-1.4,0.3-2.6,0.2-2.3,1.4c0.2,1.2,1.4,1.9,2.6,2.5c1.2,0.5,3,1,3.5,2.5s0.9,2.5,1.2,3.6c0.2,1.1,1.2,0.9,2.1,1.1\r\n\t\tc0.9,0.1,2.3,0,2.5,1.7c0.2,1.7-0.1,2.3-0.2,3c-0.1,0.7-0.9,0.8-0.3,2.1c0.6,1.3,1.3,0.4,1,2.5c-0.3,2,0,1.8-0.3,2.9\r\n\t\tc-0.3,1.2-0.5,2-0.2,2.6c0.3,0.6,1.2,1.9,2,2.5c0.7,0.6,0.9,0.6,1,0.8c0.1,0.1-0.1,0.3-0.2,0.5l1.4-0.2c0,0,3.6-2.8,4.2-3.2\r\n\t\tc0.6-0.4,1.8,0.2,2.4,0.1c0.6-0.1,1.8-1.9,2.2-2.4s0.3-3.1,0.5-3.6c0.1-0.5,1.7-2.3,2.6-3c0.8-0.7,2.7-3.8,3.2-4.4\r\n\t\tc0.5-0.5,1.8-0.4,2.3-1c0.5-0.6,1.6-1.1,2.8-3c1.2-1.9,3.1-2.2,4.2-2.2c1.1,0,3.7,0.2,4.9,0.7c1.3,0.5,4.2,0,5.2-0.5\r\n\t\tc0.9-0.5,2-2.8,3-4c0.9-1.2,1.6-0.9,2.4-1c0.8-0.1,2.5-0.5,3.1-0.8C310.1,207.2,310.9,205.7,310.6,204.8\"/>\r\n        <path d=\"M330.6,206.6c-0.5-0.8,0.2-2.4,0.5-3.6c0.3-1.2,0.5-3.2,0.6-4.4c0.1-1.1-0.6-2.6-1.2-2.9\r\n\t\tc-0.6-0.3-3.9-0.1-5.1-0.1c-1.2,0-3,1.4-3.9,1.8c-0.9,0.4-1.8,0.9-3,1.1c-1.1,0.1-1.5,0.3-2.4,0.7c-0.9,0.4-1.6,2.6-1.9,3\r\n\t\tc-0.3,0.5-1,0.9-2.4,0.9c-1.1,0.1-1.4,0.8-1.5,1.2c0.1,0.1,0.2,0.2,0.2,0.4c0.3,0.9-0.5,2.4-1.1,2.8c-0.6,0.3-2.3,0.7-3.1,0.8\r\n\t\tc-0.8,0.1-1.4-0.2-2.4,1c-0.9,1.2-2,3.6-3,4c-0.9,0.5-3.9,0.9-5.2,0.5c-1.3-0.5-3.8-0.7-4.9-0.7c-1.1,0-3,0.4-4.2,2.2\r\n\t\tc-1.2,1.9-2.3,2.4-2.8,3c-0.5,0.6-1.7,0.5-2.3,1c-0.5,0.5-2.4,3.7-3.2,4.4c-0.8,0.7-2.4,2.6-2.6,3c-0.1,0.5-0.1,3.1-0.5,3.6\r\n\t\ts-1.6,2.2-2.2,2.4c-0.6,0.1-1.8-0.5-2.4-0.1c-0.6,0.4-4.2,3.2-4.2,3.2l-0.1,0c0.2,0.4,0.1,1.1,0.2,1.7c0.1,0.8,1,2.4,1.6,2.8\r\n\t\tc0.2,0.2,0.4,0.3,0.4,0.5c2.6-1,6-2.3,6.8-2.6c1.3-0.5,3.2-1,8-2.8c4.8-1.8,7.3-4.5,9.1-5.7c1.8-1.1,2.4-3.8,3.6-4\r\n\t\tc1.2-0.3,3.4-0.9,4.1-1.5c0.7-0.7,2.6-2.3,3.4-2.4c0.8-0.1,2.4,0,3.2-0.7c0.9-0.7,1.3-1.2,2.2-1.6c0.9-0.5,8.3-3.9,9.4-4.4\r\n\t\tc1.1-0.5,6-2.6,9.8-3.6c3.9-1,3.9-1.6,4-2.5C332.7,207.9,331,207.4,330.6,206.6\"/>    \r\n        \r\n        <path d=\"M267.1,197c-0.2,0-0.4,0-0.6,0c-0.6,0-4.6,0.3-5.3-0.5c-0.3-0.3-0.5-3.1-0.5-3.5c0-0.4-0.6-4.7-0.6-5.1\r\n\t\tl-0.5-1.9l1.7-3.3v-3.4c0,0-1-1.7-1.5-1.4c-0.5,0.3-3.1,0.1-3.1,0.1s-2.1-3.9-2.5-4.6c-0.5-0.7-0.5-1.5-0.2-1.7\r\n\t\tc0.3-0.2,1.7-1.4,1.8-2c0.2-0.7-0.3-0.9-1.2-1c-0.9-0.1-3.4-0.3-4.6-0.2c-1.2,0.2-2.8,1.1-3,1.3c0,0-1.4,1.2-3.2,0.4\r\n\t\tc-0.4-0.2-0.9-0.4-1.6-0.8c-1.1,0.1-3-1.6-2.8-0.7c0.3,0.9,0.5,5.3-0.8,6.1c-1.3,0.8-4.9,4.3-3,4.6c1.8,0.3,2.5,1.7,2.8,2.1\r\n\t\tc0.3,0.4,2.2-0.1,2.6,0.9c0.4,1.1,1.7,2.6,0.1,2.8c-1.6,0.1-9.3,3.6-9.3,3.6l-4.3,0.7c0,0,1.2,4.5,1.7,4.5c0.5,0,2.9-0.8,4.2-0.9\r\n\t\tc1.3-0.1,4.2,0.7,4.1,1.4c-0.1,0.8,1.3,4.3,2,4.9c0,0,0,0,0,0l1.7-0.9c0,0,3.1-0.1,4,0c0.9,0.1,2.3,0.7,3.1,1.3s1.5,0.2,2.7,0\r\n\t\tc1.3-0.2,3.3-0.1,3.4,0.5c0,0,4.7-0.1,5.6-0.4c0.9-0.3,0.9,0,1,1s6,0.6,6,0.6S267.1,197,267.1,197\"/> \r\n        \r\n        <path d=\"M298.4,152.9c-0.4-0.5-0.9-1.5-0.9-2c0-0.5,0.4-1.3,0.2-1.7c-0.2-0.5-0.9-1.4-1.3-2.1\r\n\t\tc-0.4-0.7,0.4-2.3-0.1-2.9c-0.5-0.6-3-1.9-4.2-2.1c-1.3-0.2-2.2,0.6-2.9,1.1s-1.1,0.1-1.6-0.5c-0.5-0.5-1-2.6-1.3-3.4\r\n\t\tc-0.2-0.9-1.6-2.3-2-2.4c-0.5-0.1-1.7-0.3-2-0.6c-0.2-0.3,0.3-1.6,0.5-2.4c0.2-0.9-1.4-1-1.8-1.3c-0.4-0.2-2-1.5-2.2-2.3\r\n\t\tc-0.2-0.8,0.9-2,1.6-2.4c0.6-0.5,1.2-1.1,1.2-1.5s-1.4-1.3-2.1-1.2c-0.3,0-1.6,0.7-2,1c-0.4,0.2-2.7,1.2-3.2,1.4\r\n\t\tc-0.5,0.2-1.2-0.5-2-0.7c-0.9-0.2-2.2,0.5-2.3,1c-0.1,0.5,1,1.5,1.4,2.3c0.4,0.7,0,0.5-0.9,0.7c-0.9,0.2-1.6,0.5-2.5,0.2\r\n\t\tc-0.9-0.2-3.1-0.1-4.2,0.2c-1,0.2-2,1-2.7,1.5c-0.7,0.5-1.6,0.3-2.4-0.3c-0.7-0.6-1.6-0.6-2.7-0.6c-1.1,0-2.2,1.5-2.8,1.9\r\n\t\tc-0.6,0.4-2.3,0.5-2.8,0.1c-0.5-0.4-1.6-2-2.9-3.1c-1.3-1.2-2.3-0.2-2.7,0.2c-0.5,0.3-0.6,1.8-0.6,1.8l-0.4,0\r\n\t\tc0.1,0.1,0.1,0.1,0.1,0.1l-2.3,2.4l2.2,2l-0.8,1.1l-0.9,0.1l-1.7,2.3l-1.1-1.2l-0.3-1.1l-2,1.6l0.5,5.9l-1.8,2.7\r\n\t\tc0,0,0.8,0.7,1.9,0.9c1.1,0.3,0.1,3.4,0.1,3.4l-2.5,5.6c0.4,0,0.7,0,0.7,0l3.7,0.5c0,0,2-0.1,2.1,1.4c0.1,1.5-0.5,2.4-0.7,2.5\r\n\t\tc-0.2,0.1,0.1,1.6,0.5,2.3c0.4,0.7,2.2,3.8,1.2,4.3c-0.1,0.1,0.8,0.7,1.2,0.9c1.8,0.8,3.2-0.4,3.2-0.4c0.2-0.2,1.9-1.1,3-1.3\r\n\t\ts3.7,0.1,4.6,0.2c0.9,0.1,1.4,0.3,1.2,1c-0.2,0.7-1.5,1.8-1.8,2c-0.3,0.2-0.3,1,0.2,1.7c0.5,0.7,2.5,4.6,2.5,4.6s2.6,0.1,3.1-0.1\r\n\t\tc0.5-0.3,1.5,1.4,1.5,1.4v3.4l-1.7,3.3l0.5,1.9c0.1,0.3,0.6,4.7,0.6,5.1c0,0.4,0.2,3.1,0.5,3.5c0.7,0.8,4.7,0.5,5.3,0.5\r\n\t\tc0.6,0,2.9,0,3.2-0.8c0.2-0.5-1.1-2.6-1.5-3.4c-0.3-0.8-0.7-3.1-0.6-3.8c0.1-0.7,0.8-1.6,1.4-1.8c0.5-0.2,1.9,0.5,2.7,0.7\r\n\t\tc0.8,0.3,1.5,0.4,2.2-0.2c0.7-0.6,1.7-1,2.3-0.9c0.6,0.1,1.3,1.4,2.2,2.6c0.9,1.2,1.4,2.1,2.2,2.3c0.8,0.2,1.3-1,1.4-1.5\r\n\t\tc0.1-0.5,0.3-1.8,0.6-2.5c0.2-0.7,1.2-1.5,1.8-1.7c0.6-0.2,2.3-1,3.1-1.6c0.8-0.6,0.8-1.9,0.9-2.5c0.1-0.6,0.8-2.5,1.1-3\r\n\t\tc0.5-0.6,1.5-1,2-1c0.5,0,1.1-0.5,1.3-0.8c0.2-0.3,0.9-2.7,1-3.4c0.2-0.7-0.8-1.2-0.8-1.8c0-0.5,0.7-0.6,1.2-1.2\r\n\t\tc0.5-0.6,2.3-4,2.3-4.5c0.1-1-0.5-1.8-1.2-2c-0.7-0.2-1.8,0.3-2.5,0.3c-0.8,0-0.8-1.5-0.9-2.3c-0.1-1-0.7-1.2-0.9-2\r\n\t\tc-0.2-1.1,1.4-1,1.8-0.9c0.4,0.2,1,0.1,1.3-0.2c0.3-0.2,2.4-2.6,2.7-3c0.2-0.4-0.3-1.3-0.3-1.6c0-0.7,1.6-0.2,2-0.5\r\n\t\tC298.9,154.1,298.8,153.4,298.4,152.9\"/>\r\n                \r\n        <text transform=\"matrix(1 0 0 1 236.8961 223.143)\">VALLÈS</text>\r\n        <text transform=\"matrix(1 0 0 1 230.211 230.143)\">OCCIDENTAL</text>\r\n        <text transform=\"matrix(1 0 0 1 270.4122 203.7953)\">VALLÈS</text>\r\n        <text transform=\"matrix(1 0 0 1 267.2267 210.7953)\">ORIENTAL</text>\r\n        <text transform=\"matrix(1 0 0 1 286.8409 220.5883)\" >MARESME</text>\r\n        <text transform=\"matrix(1 0 0 1 236.3917 192.329)\" >MOIANÈS</text>\r\n        <text transform=\"matrix(1 0 0 1 259.6602 160.661)\" >OSONA</text>\r\n        \r\n        <MapPoint point={props.points[5]} />\r\n      </g>\r\n      <g id=\"zone-8\" className={props.hover==8 ? 'zone hover' : 'zone'} ref={props.points[7].pathRef} >\r\n        <path d=\"M189.9,192.4c-0.9-1.6-1.7-2.7-1.9-3c-1-1-3,0-3.6,0.3c-0.6,0.3-1.5,2-2.4,2.4c-0.9,0.4-0.5-0.2-2.1-0.5\r\n\t\tc-1.6-0.4-2.4-1.2-2.8-2.7c-0.4-1.4-1.5-1-2.1-0.7c-0.6,0.3-0.3,1.8-1,2.5c-0.8,0.7-1.9-0.1-2-0.8c-0.2-0.8,1-2.1,1.2-2.9\r\n\t\tc0.2-0.9-0.4-1.6-2.2-1.9c-1.8-0.3-2.3,0.4-2.9,0.9c-0.6,0.5-2.1,2.8-2.3,3.8c-0.3,1,0.2,4.6,0.2,5.6c-0.1,1-1.6,2.7-2.3,3.8\r\n\t\tc-0.7,1.1,2.2,2.7,2.6,3.1c0.4,0.5,1.5,1.1,1.9,3c0.4,1.9,2.3,5.2,2.1,5.5c-0.2,0.3,0,0.5-2.6,0.6c-2.6,0.1-4.2,0.7-5,1.2\r\n\t\tc-0.9,0.5-1.4,1.8-1.2,2.5c0.2,0.7,1.9,1.8,2.6,1.8s1.1,0.4,0.9,1.1c-0.2,0.7-0.4,1.3-0.7,2.4c-0.3,1,1.4,0.5,2,0.3\r\n\t\tc0.6-0.2,1.5-0.5,2.3,0.1c1.1,0.8,0.7,1.9,0.2,2.5c-0.5,0.6-0.4,1.3-0.1,1.7c0.3,0.4,1.2,0.5,0.8,1.1c-0.5,0.7-1.6,0.7-2.8,1.2\r\n\t\tc-1.2,0.5-2.4,1.2-2.6,2.8c-0.2,1.6,2.7,3.1,4.1,4.1c1.5,1,4.8,3.3,5.5,3.9c0.7,0.6,0.5,2.1,0.3,2.4c-0.2,0.3-1,1.2-0.9,2.7\r\n\t\tc0.1,1.4,2,1.7,3,1.7c1,0,2.4-0.2,2.8-0.6c0.4-0.4,1.4-1,2.2-1.3c0.9-0.3,3-0.3,3.9-0.4c0.9-0.1,1.5-0.8,1.6-1.2\r\n\t\tc0.1-0.5,0.2-1.1-0.6-2.2c-0.7-1.1-0.6-1.7-0.4-2.1c0.3-0.4,2.9-4,3.5-4.7c0.6-0.7,1.4,0,2.3,0.4c0.9,0.4,2.9,0.7,3.8,0.7\r\n\t\tc0.9,0.1,2.9-0.5,3.6,0.1c0.7,0.6,0.8,1.7,1.9,3.5c1.1,1.8,2.1,2.2,2.5,2.5c0.4,0.3,3,1.3,4.1,2.1c1.2,0.8,2.5,0,2.7-0.4\r\n\t\tc0.2-0.4,7.7-7.3,8.4-8.1c0.7-0.8-0.3-1.9-0.8-2.5c-0.5-0.6-3.8-5.3-4.2-6.6c-0.4-1.3,0.7-5.6,0.7-5.6l0.1-4\r\n\t\tc-0.3-1-0.4-1.8-0.4-1.9c-0.1-0.4-1.3-2.5-2-2.5c-0.8,0-3.6,0.2-4.3,0.9c-0.7,0.7-3.1,2.9-3.5,3c-0.3,0.1-1.3,0.5-2,0.1\r\n\t\tc-0.7-0.4-2.4-1.3-2.7-2.1c-0.3-0.8-1.3-2.7-2.1-3.1c-0.8-0.4-2.6-0.6-2.8-2.5c-0.2-1.9-0.1-3-1.5-3.2c-1.4-0.2-3.3-0.6-3.8-1.1\r\n\t\tc-0.6-0.6-2.5-1.9-2.5-2.8c0-0.6,0.8-0.8,1.4-1.1c0.6-0.3,2.4-0.4,2.2-1.2c-0.1-0.4-0.8-1.6-0.7-2.1\r\n\t\tC189.3,194.2,189.9,193.3,189.9,192.4\"/>\r\n        <path d=\"M162.8,242.4l-3.9,2.3l-6.5-1.9l-8.1,9.4l-4.2,9.4l-4.6-0.3l-4.9,3.3l-7.8-4.9l-3,1.6l2.3,3l-0.3,4.8l9.8,1\r\n\t\tl3.5,7.1l1.3,0.6l1.3-2.5l6.2,3.5l1.3-2.6l1.6,2.3l3.9-4.9l5.2,5.2l2.6-1.9l-1.9-2.6l1.3-2.3l4.6,1.9l2,0.2l3.8-2.4l-5.2-1l6.2-2.6\r\n\t\tl-4.5-2.3l3.9-1.3l-0.6-1.7l-4.2-1.3l4.9-5.8l8.5,1.3l3.1-2.7c-0.7-0.4-1.3-0.9-1.7-1.6c-0.8-1.3-2.6-0.9-3.4-0.8\r\n\t\tc-0.8,0.1-2.1,1.5-1.8,0c0.4-1.5,0.3-0.6,0.3-1.2c0-1-0.1-0.6-0.4-1.4c-0.3-0.9-0.1-2.9,0.3-3.6c0.2-0.3,0.3-0.8,0.4-1.2\r\n\t\tc-0.5-0.3-0.9-0.7-1-1.3c-0.1-1.4,0.7-2.4,0.9-2.7c0.2-0.3,0.4-1.8-0.3-2.4c-0.2-0.2-0.6-0.5-1.2-0.9l-2.3,3.5L162.8,242.4z\"/>\r\n        <path d=\"M221.5,241.2c-0.6-1-0.4-1.7-0.8-2.6c-0.3-0.7-2.9-3.4-3.7-4.2c-2.3,2.2-7,6.6-7.2,6.9\r\n\t\tc-0.2,0.4-1.6,1.2-2.7,0.4c-1.2-0.8-3.7-1.9-4.1-2.1c-0.4-0.3-1.4-0.7-2.5-2.5c-1.1-1.8-1.2-2.9-1.9-3.5c-0.7-0.6-2.8-0.1-3.6-0.1\r\n\t\tc-0.9-0.1-2.9-0.4-3.8-0.7c-0.9-0.4-1.7-1-2.3-0.4c-0.6,0.7-3.2,4.3-3.5,4.7c-0.3,0.4-0.4,1.1,0.4,2.1s0.7,1.7,0.6,2.2\r\n\t\tc-0.1,0.5-0.7,1.1-1.6,1.2c-0.9,0.1-3,0.1-3.9,0.4c-0.9,0.3-1.9,0.9-2.2,1.3c-0.4,0.4-1.8,0.6-2.8,0.6c-0.5,0-1.4-0.1-2-0.4\r\n\t\tc-0.1,0.4-0.2,0.9-0.4,1.2c-0.4,0.7-0.6,2.7-0.3,3.6c0.3,0.9,0.3,0.5,0.4,1.4c0,0.6,0.1-0.3-0.3,1.2c-0.4,1.5,1,0.1,1.8,0\r\n\t\tc0.8-0.1,2.6-0.5,3.4,0.8c0.8,1.3,2.6,2.2,3.8,2.4c1.2,0.3,2.2,0.9,2.3,1.7c0.1,0.8-0.3,1.4-1.3,2.3c-1,0.9,0.2,1.7,0.3,2.4\r\n\t\tc0.1,0.7,0.1,0.9,1.4,2.1c1.3,1.3,2.5,1.1,2.2,3c-0.3,1.8,1.9,1.3,2.8,1.4c0.9,0.1,0.8,0.7,0.6,1.3c-0.3,0.6,0.2,2.6-1.6,2.9\r\n\t\tc-1.8,0.3,1.3,2.4,2.6,2.7c1,0.2,2.1,2.5,3.1,1.9c1-0.6,3.1-2.3,3.1-2.8c0-0.5,0.2-1.2,0.5-1.8c0.3-0.7,2.3-3.4,2.8-4.4\r\n\t\tc0.5-1,2.2-0.9,4-0.9s2.4-1.6,2.9-2.3c0.5-0.8,1.6-1.8,2.1-1.5c0.5,0.3,1.5,0.4,2.1,0.1c0.6-0.3,1.6-0.2,2.6,0.4\r\n\t\tc1,0.6,2.2,0.6,3.6,0s3.2-3.4,3.9-4.5c0.7-1.2,0.7-1.5-0.5-2.7c-1.2-1.2-0.5-2.3-0.5-3.7c0-1.4,2.1-5.3,2.4-7\r\n\t\tC223.8,243.9,222.1,242.2,221.5,241.2\"/>\r\n        <path d=\"M195.5,276.3c-0.3,0.2-0.6,0.4-0.9,0.6c-1,0.6-2.1-1.8-3.1-1.9c-1.3-0.2-4.4-2.4-2.6-2.7\r\n\t\tc1.8-0.3,1.3-2.3,1.6-2.9c0.3-0.6,0.3-1.2-0.6-1.3c-0.9-0.1-3.1,0.4-2.8-1.4c0.3-1.8-1-1.7-2.2-3s-1.3-1.5-1.4-2.1\r\n\t\tc-0.1-0.7-1.3-1.5-0.3-2.4c1-0.9,1.4-1.5,1.3-2.3c-0.1-0.8-1.1-1.4-2.3-1.7c-0.6-0.1-1.4-0.4-2.2-0.9l-3.1,2.7l-8.5-1.3l-4.9,5.8\r\n\t\tl4.2,1.3l0.6,1.7l-3.9,1.3l4.5,2.3l-6.2,2.6l5.2,1l-4.6,2.9l-1,4.6l3-0.3l1.9,2.6l1.3-2l4.6,0.3l-0.3,2.3l1.3,2.9l4.9-1l12-0.6\r\n\t\tl5.3-1.6c-0.4-0.9-0.4-2.3-0.5-2.8C196.1,278.4,195.7,277,195.5,276.3\"/>\r\n        <path d=\"M227.3,270.4c-0.4-1-2.3-1.3-3.3-1.5c-1-0.2-2.9,0.7-3.8,0.6c-1-0.1-1.2-1.1-1.3-1.8c-0.1-0.8-2-1.2-2.6-1.7\r\n\t\tc-0.5-0.5-0.2-1.8-0.2-1.9c-0.5,0-1-0.2-1.4-0.4c-1-0.6-2-0.7-2.6-0.4c-0.6,0.3-1.6,0.2-2.1-0.1c-0.5-0.3-1.6,0.7-2.1,1.5\r\n\t\tc-0.5,0.8-1.2,2.3-2.9,2.3c-1.7,0-3.5-0.2-4,0.9c-0.5,1-2.5,3.7-2.8,4.4c-0.3,0.7-0.5,1.4-0.5,1.8c0,0.4-1.2,1.4-2.2,2.2\r\n\t\tc0.2,0.8,0.6,2.2,0.7,2.7c0.1,0.8,0.1,3.2,1.1,3.6c0.7,0.3,1.7-0.7,2.3-1.2c0.6-0.5,2.1-0.6,2.5-0.5c0.4,0.1,0.7,1,1.6,0.9\r\n\t\tc1-0.2,1.1-1.1,1.5-1.4c0.5-0.4,2.3-0.3,3.3-0.8c1-0.5,4-2,4.8-2.4c0.8-0.4,3.6,0,4.4-0.3c0.9-0.3,3.5-1.3,4.6-2.4\r\n\t\tc1.2-1.1,5-2.3,5.2-2.4C227.7,271.9,227.6,271.4,227.3,270.4\"/>\r\n                \r\n        <path d=\"M191.8,168.6c-0.9,0.5-3,2.4-3.5,3c-0.4,0.6,0.4,1.2,1.5,1.2c1.2,0,2.6,0.6,3.1,0.9c0.5,0.3,1.5,0.8,1.5,1.6\r\n\t\tc0,0.3-0.4,1.1-0.4,1.6c0,0.4,0.1,2.2-0.3,2.4c-0.4,0.2-1.8,0.4-1.6,1.5c0.2,1.3-0.5,1.9-1.1,2.4c-0.6,0.5-1,1.9-0.9,3.2\r\n\t\tc0.2,2.3-1.1,2.2-1.2,3.1c-0.1,0.5,0.8,1.9,0.9,2.8c0.1,0.9-0.6,1.9-0.7,2.6c-0.1,0.5,0.7,1.6,0.7,2.1c0.1,0.8-1.6,0.9-2.2,1.2\r\n\t\tc-0.6,0.2-1.4,0.5-1.4,1.1c0.1,0.9,1.9,2.2,2.5,2.8c0.6,0.6,2.4,1,3.8,1.1c1.4,0.2,1.3,1.3,1.5,3.2c0.2,1.9,1.9,2,2.8,2.5\r\n\t\tc0.8,0.4,1.7,2.3,2.1,3.1c0.3,0.8,2,1.7,2.7,2.1c0.7,0.4,1.7,0,2-0.1c0.3-0.1,2.8-2.3,3.5-3c0.7-0.7,3.5-1,4.3-0.9\r\n\t\tc0.8,0,1.9,2.1,2,2.5c0.1,0.4,0.6,3.5,1.7,5.1c1.1,1.6,3.7,0.9,4.2,1c0.5,0,2.2,0,2.3-0.6c0.1-0.6,1.1-1.8,1.8-1.8\r\n\t\tc0.7,0,2.7-2,3-2.8c0.3-0.8,0.4-5,0.6-5.5c0.3-0.5,3-0.4,3.8,0c0.8,0.3,2.9,1.6,3.6,1.4c0.7-0.1,5.1-0.9,5.5-1.2\r\n\t\tc0.4-0.3,0.5-2.3,0.5-3c0-0.7,0.3-2,0.4-2.8c0-0.8-1.7-3-1.7-3c-0.7-0.5-2.1-4.1-2-4.9c0.1-0.8-2.8-1.6-4.1-1.4\r\n\t\tc-1.3,0.1-3.7,0.9-4.2,0.9c-0.5,0-1.7-4.5-1.7-4.5l4.3-0.7c0,0,7.8-3.4,9.3-3.6c1.6-0.1,0.3-1.7-0.1-2.8c-0.4-1.1-2.4-0.5-2.6-0.9\r\n\t\tc-0.3-0.4-0.9-1.8-2.8-2.1c-1.8-0.3,1.7-3.8,3-4.6c1.3-0.8,1.1-5.1,0.8-6.1c-0.3-0.9,2.1,1.2,3.2,0.7c1.1-0.5-0.7-3.6-1.2-4.3\r\n\t\tc-0.4-0.7-0.7-2.2-0.5-2.3c0.2-0.1,0.8-1,0.7-2.5s-2.1-1.4-2.1-1.4l-3.7-0.5c0,0-0.3,0-0.7,0l-1.2,2.6l-0.9,4.7L231,164l-0.1-3.4\r\n\t\tl-1.7-1.3l-8.1,5.4l1.1,1.6l-0.8,1.7l-0.8-0.5l-1.2,0.4l-1.5-0.1c0,0-1,0.7-0.8,0.7c0.3,0,0.4,0.9,0.4,0.9l-1.2,0.3l-1.6-1.5\r\n\t\tl-0.4-1.1l-1.3-1.2l-2.2,0.8l-1.3,1.1l-1.6-0.9l-3.2-0.3l-3-3.6l-3-0.1l-1-0.3c-0.6,1.7-2,3.5-2.4,3.8\r\n\t\tC194.7,166.7,192.7,168.1,191.8,168.6\"/>\r\n                \r\n        <text transform=\"matrix(1 0 0 1 149.298 258.976)\">ALT</text>\r\n        <text transform=\"matrix(1 0 0 1 146.3229 265.976)\" >CAMP</text>\r\n        <text transform=\"matrix(1 0 0 1 172.5587 269.9662)\" >BAIX </text>\r\n        <text transform=\"matrix(1 0 0 1 166.9239 276.9662)\" >PENEDÈS</text>\r\n        <text transform=\"matrix(1 0 0 1 199.6559 275.349)\" >GARRAF</text>\r\n        <text transform=\"matrix(1 0 0 1 179.2228 222.0023)\" >ANOIA</text>\r\n        <text transform=\"matrix(1 0 0 1 197.7447 251.3109)\">ALT</text>\r\n        <text transform=\"matrix(1 0 0 1 190.4928 258.3109)\" >PENEDÈS</text>\r\n        <text transform=\"matrix(1 0 0 1 203.6178 190.453)\" >BAGES</text>\r\n        <MapPoint point={props.points[7]} />\r\n      </g>\r\n\r\n      <g id=\"zone-1\" className={props.hover==1 ? 'zone hover' : 'zone'} ref={props.points[0].pathRef} >\r\n        <polygon points=\"319.3,158.3 317.3,162.4 321.4,164.1 322.6,166.9 329.1,167.4 331.2,171 333.4,168.4 336,168.2 \r\n\t336,174.7 334.6,176.8 335.4,178 337.7,176.8 342.5,178 343.2,185 339.9,187.1 341.5,191 345.9,190.3 349.5,193.1 351.8,191.5 \r\n\t353.1,188.3 351,184.3 355,180.2 352.4,177.3 352.8,174.2 351.7,171.2 345.2,171.7 344,169.8 347.3,165.7 351.5,164.2 351.9,159.9 \r\n\t357.2,157.6 356.2,154.4 352.4,153.9 352.8,149.9 355.8,148.2 356,142.4 353.6,140.5 353.6,137.3 347.8,137.2 345.2,144.1 \r\n\t343.5,144.6 341.5,143.1 340.2,146.5 338.2,146.5 337.5,149.6 336.2,147.7 334.1,147.7 332.7,149.4 330.5,148.2 331.2,145.3 \r\n\t328.6,142.3 323.8,153.4 318.5,155.8 \"/>\r\n        <path d=\"M300.7,100.1l2.6-0.5l-8.6-1.1v-1.6l-1.3,0.3l-0.3-3.4l-2.1-0.3v-2.9l-9.7-1.8l-4.7-4l-2.7,1l-3.1-2.3l-4,1\r\n\t\tl-2.6,2.1l-2.7,0.8l-1.3-1.9l-4,0.3l-4.2,4v2.9l-2.6,0.8l-1,2.3l-6.6,0.3l-0.7,0.9l0.3,0.1l-4.1,7.9c0,0,0,0,0,0\r\n\t\tc0.3,0,0.5,0.1,0.5,0.1l3.6-1.3l5.5,3.4l-4.2,5c-1.3,1.6-2.3,4.3-0.5,5.3c2.2,1.2-1.4,0.2-0.6,2.6c0.8,2.4,4.5,3.2,4.5,3.2\r\n\t\tl-3.4,3.2l-4-4.8l-0.5,0.3l-0.3,3.7c0,0,0.7-1.8,1.8,3.6c0.1,0.5,2.9,2.8,3.6,3.3l0.4,0c0,0,0.2-1.5,0.6-1.8\r\n\t\tc0.5-0.3,1.5-1.3,2.7-0.2c1.3,1.2,2.4,2.7,2.9,3.1c0.5,0.4,2.2,0.3,2.8-0.1c0.6-0.4,1.7-1.9,2.8-1.9c1.1,0,2,0,2.7,0.6\r\n\t\tc0.7,0.6,1.6,0.8,2.4,0.3c0.7-0.5,1.7-1.3,2.7-1.5c1-0.2,3.3-0.4,4.2-0.2c0.9,0.2,1.6-0.1,2.5-0.2c0.9-0.2,1.3,0,0.9-0.7\r\n\t\tc-0.4-0.7-1.5-1.8-1.4-2.3c0.1-0.5,1.5-1.3,2.3-1c0.9,0.2,1.5,0.9,2,0.7c0.5-0.2,2.8-1.2,3.2-1.4c0.4-0.2,1.7-0.9,2-1\r\n\t\tc0.4,0,1,0.2,1.4,0.5l-0.4-3.5l-2-2.3l3.6,0.9l0.7-2.3l-3.1-1.2l-0.2-2l4.5-1.9l-0.7-2.7l3.3-0.5l1-2.6l3.2,0.2l0.7,1.6l3.6-1.4\r\n\t\tv-2.7l4.1,0.5c0,0,0,1.5-0.5,3.6s4.3,0.2,5.3,0.2s1-2.6,1-2.6l-3.3-0.5v-2.9l-1-1.1V100.1z\"/>\r\n        <path d=\"M396.4,103.3l-5.3-4.2l-3.7,1.7l-1.9-2.4l-2.4-0.5l-1.5,2.4l-3.3-3.6l-2.4-4.4v-3.3l3.2-4.1l-8-2l-1.2,2.7\r\n\t\tl-6.3-4.8l-0.9-3.4l-3.4,1.5l-4.3-0.2l-2.2-2l-2.6,0.2v3.4l-6.5-1l-6.3,2.6l-3.6,5.5l-4.1,0.7l-1.7-3.3l-8.5,4.1v2.7l-3.6,0.6\r\n\t\tl4.3,5.1l-1.1,2.1l-12.5-3.3l-4.3,3.8l3.6,3.8l3.1-2.3l4.4,4.3c0,0,3.3-1.2,3.6,0.5c0.2,1.7,0.2,6.5,0.2,6.5l2.3,0.5l1.2-2.9l2.9,2\r\n\t\tl0.2,3.1l1.9,0.2l1.5-4.1l3.8,1.7l-1.1,4.1l1.9,5l2.9-0.5l4.1,4.8l3.8-3.1l3.4,4.1l-1.5,2.7l0.7,6.6l8.1,0.2v-0.4l6-4.3l5.3,4.5\r\n\t\tl5-2.6l2.4,1l1.5,3.1l5-2l-4.5-2.3l-2.2-3.6c0,0-1-9.8-0.5-11.1c0.5-1.2,4.8-8.2,4.8-8.2h2.4l4.3,5.3l4.3-3.1l2.4,2.1l2.8-2.8\r\n\t\tl-1.6-4.5L396.4,103.3z\"/>\r\n        <path d=\"M331.9,122.5l-1.9-5l1.1-4.1l-3.8-1.7l-1.5,4.1l-1.9-0.2l-0.2-3.1l-2.9-2l-1.2,2.9l-2.3-0.5c0,0,0-4.8-0.2-6.5\r\n\t\tc-0.2-1.7-3.6-0.5-3.6-0.5l-4.4-4.3l-3.1,2.3l-3.6-3.8l0.5-0.4l-2.2,0.4v2.4l1,1.1v2.9l3.3,0.5c0,0,0,2.6-1,2.6\r\n\t\tc-1,0-5.8,1.9-5.3-0.2c0.5-2.1,0.5-3.6,0.5-3.6l-4.1-0.5v2.7l-3.6,1.4l-0.7-1.6l-3.2-0.2l-1,2.6l-3.3,0.5l0.7,2.7l-4.5,1.9l0.2,2\r\n\t\tl3.1,1.2l-0.7,2.3l-3.6-0.9l2,2.3l0.4,3.5c0.3,0.2,0.6,0.5,0.6,0.7c0,0.4-0.5,1-1.2,1.5c-0.6,0.5-1.7,1.6-1.6,2.4\r\n\t\tc0.2,0.8,1.8,2,2.2,2.3c0.4,0.2,2,0.4,1.8,1.3c-0.2,0.9-0.7,2.1-0.5,2.4c0.2,0.3,1.5,0.5,2,0.6c0.5,0.1,1.8,1.5,2,2.4\r\n\t\tc0.2,0.9,0.8,2.9,1.3,3.4c0.5,0.5,0.9,0.9,1.6,0.5c0.7-0.5,1.6-1.3,2.9-1.1c1.3,0.2,3.8,1.5,4.2,2.1c0.1,0.1,0.1,0.2,0.1,0.4\r\n\t\tl0.9-0.2l6,5l1-2.3l2,1.9l3.1-1l3.4,2.9l4.3,0.2l1.4,4.7l5.3-2.4l4.8-11.2l-0.2-0.3l-2.9-1l-3.1-2l-3.6,2.2l-4.4-1.7l2.9-2.7\r\n\t\tl-1-7.4l1.7-0.5l-0.2-3.6l1.6-0.2l0.7,1.4h3.4l1.4-1.4l2.9,0.6l2.2-1.4l0.6-5l0.1,0L331.9,122.5z\"/>\r\n        <polygon points=\"317.3,136.9 314.4,139.5 318.8,141.3 322.3,139.1 325.4,141 328.4,142 331.2,145.3 330.5,148.2 \r\n\t332.7,149.4 334.1,147.7 336.2,147.7 337.5,149.6 338.2,146.5 340.2,146.5 341.5,143.1 343.5,144.6 345.2,144.1 347.8,137.2 \r\n\t345.4,137.1 344.7,130.5 346.2,127.8 342.7,123.7 338.9,126.8 334.9,122 331.9,122.5 330.8,119.4 330.7,119.4 330.1,124.4 \r\n\t327.9,125.8 324.9,125.2 323.6,126.5 320.1,126.5 319.4,125.2 317.8,125.4 318,129 316.3,129.5 \"/>\r\n        <path d=\"M354.5,194.8l2.4-1.7l2.3-2.1l3.2,0.5l3.8-3.7l-0.5-3.8l5.5-5.3l2.2,1.5l6.5-4.4l0.1-3.1l3.9-2.4l-0.2-3.1\r\n\t\tl2.6-3.8l-0.5-2.9l-3.8-3.1c0,0-1-3.3-1-4.2c0-0.9,2.7-8.1,2.7-8.1l-5-8.5l-5,2l-1.5-3.1l-2.4-1l-5,2.6l-5.3-4.5l-6,4.3v3.7\r\n\t\tl2.4,1.9l-0.2,5.8l-2.9,1.7l-0.4,4.1l3.8,0.5l1,3.2l-5.3,2.3l-0.5,4.3l-4.2,1.5l-3.3,4.1l1.2,2l6.5-0.5l1.1,2.9l-0.4,3.1l2.6,2.9\r\n\t\tl-4.1,4.1l2.1,4.1l-2.1,5.3L354.5,194.8z\"/>\r\n        <path d=\"M339.9,187.1l3.3-2.1l-0.7-7l-4.8-1.2l-2.3,1.2l-0.7-1.2l1.4-2.1v-6.5l-2.6,0.2l-2.2,2.6l-2.1-3.6l-6.5-0.5\r\n\t\tl-1.2-2.8l-4.1-1.7l2-4.1l-2.2-7.2l-4.3-0.2l-3.4-2.9l-3.1,1l-2-1.9l-1,2.3l-6-5l-0.9,0.2c0.1,0.7-0.4,1.9-0.1,2.5\r\n\t\tc0.4,0.7,1.2,1.6,1.3,2.1c0.2,0.5-0.2,1.3-0.2,1.7c0,0.5,0.5,1.4,0.9,2c0.4,0.5,0.5,1.2,0.1,1.4c-0.4,0.2-2-0.2-2,0.5\r\n\t\tc0,0.4,0.5,1.3,0.3,1.6c-0.2,0.4-2.3,2.7-2.7,3c-0.3,0.2-0.9,0.3-1.3,0.2c-0.4-0.2-2-0.3-1.8,0.8c0.2,0.8,0.8,1,0.9,2\r\n\t\tc0.1,0.8,0.1,2.3,0.9,2.3c0.8,0,1.8-0.5,2.5-0.3c0.7,0.2,1.4,1,1.2,2c-0.1,0.5-1.8,3.9-2.3,4.5c-0.5,0.6-1.3,0.7-1.2,1.2\r\n\t\tc0,0.5,1,1.1,0.8,1.8c-0.2,0.7-0.8,3.1-1,3.4c-0.2,0.3-0.8,0.8-1.3,0.8c-0.5,0-1.5,0.3-2,1c-0.3,0.5-1,2.4-1.1,3\r\n\t\tc-0.1,0.6-0.1,1.6-0.7,2.3c0.5,0.4,1.4,1.3,2.1,2c0.9,1,1.9,1.8,2.8,1.8c0.9,0.1,1.2,0.1,1.9,1.1c0.7,0.9,1.9,2.2,2.7,2.6\r\n\t\tc0.8,0.3,2.3,0.1,2.6,0.5c0.3,0.4,0.5,2.2,2.2,3.3c1.7,1.1,1.7,1.7,2.3,1.9c0.6,0.2,2.2,0,2.8-0.1c0.6-0.1,1.4-0.3,2,0.4\r\n\t\tc0.5,0.7,0.4,1.2,0.2,1.9c-0.2,0.7-1.1,2-1,2.8c0.1,0.8,0.7,1.6,1.3,1.9c0.4,0.2,0.6,0,0.8,0.1c0.1-0.4,0.4-1.1,1.5-1.2\r\n\t\tc1.4-0.1,2.1-0.5,2.4-0.9c0.3-0.5,1-2.6,1.9-3c0.9-0.4,1.2-0.5,2.4-0.7c1.1-0.1,2-0.6,3-1.1c0.9-0.4,2.7-1.8,3.9-1.8\r\n\t\tc1.2,0,4.5-0.2,5.1,0.1c0.6,0.3,1.3,1.8,1.2,2.9c-0.1,1.1-0.3,3.2-0.6,4.4c-0.3,1.2-1,2.8-0.5,3.6c0.3,0.5,1.2,0.9,1.7,1.4l6-3.9\r\n\t\tl6.8-1.2l4.3-1.6l5.4-6.3l-0.1-0.2l-3.6-1.2l0.8-2.1l-2.3,1.6l-3.6-2.8l-4.4,0.7L339.9,187.1z\"/>\r\n        <path d=\"M247,107.2l-5.5-3.4l-3.6,1.3c0,0-3.2-0.6-4.1-0.3c1.1,0.8,2,1.5,1.2,1.1c-0.5-0.2-0.8-0.3-1.2-0.6\r\n\t\tc-0.3-0.2-0.2-0.4,0-0.4c-1.1-0.8-2.5-1.7-2.5-1.7l-5-1.6l-11.1,3.8l-2.7-0.3l-2,1.9l-3.8-0.9l-3.4,1.6l0.3-0.2l0.7,5.9l-13.1,7.2\r\n\t\tl3.3,2.6c0.8,0.6,0.2,1.7,0.9,2.3c0.5,0.3,0.9,0.5,1.5,0.4c0.7-0.1,1.4-1.1,1.4-1.1l4,1.3l2.4-1.6c0,0,0.5,1,0.4,1.6\r\n\t\tc-0.1,0.8-0.2,1.4-0.9,1.8l-1.8,1l-1.6,4l2.3,5.4l-3,0.9l-2.4,7.1l0.9,0.3l0.7-0.7l0.8,0.9l-1.2,2.7l-1.8,1.9l-1.7-0.4l-0.7,2.2\r\n\t\tl1.5,1.1l3.9,0.8l0.8-3.2l2.3,2l-0.7,3.2l-3.9,1.5l-0.9-1.2l-0.5-0.9l-1.9,0.1l-0.4,0.9v4.2l3.5,1.1l3,0.1l3,3.6l3.2,0.3l1.6,0.9\r\n\t\tl1.3-1.1l2.2-0.8l1.3,1.2l0.4,1.1l1.6,1.5l1.2-0.3c0,0-0.1-0.9-0.4-0.9c-0.3,0,0.8-0.7,0.8-0.7l1.5,0.1l1.2-0.4l0.8,0.5l0.8-1.7\r\n\t\tl-1.1-1.6l8.1-5.4l1.7,1.3l0.1,3.4l1.8,1.9l0.9-4.7l3.8-8.2c0,0,0.9-3.1-0.1-3.4c-1.1-0.3-1.9-0.9-1.9-0.9l1.8-2.7l-0.5-5.9l2-1.6\r\n\t\tl0.3,1.1l1.1,1.2l1.7-2.3l0.9-0.1l0.8-1.1l-2.2-2l2.3-2.4c0,0-3.7-2.9-3.8-3.4c-1.1-5.5-1.8-3.6-1.8-3.6l0.3-3.7l0.5-0.3l4,4.8\r\n\t\tl3.4-3.2c0,0-3.7-0.7-4.5-3.2c-0.8-2.4,2.8-1.4,0.6-2.6c-1.8-1-0.8-3.7,0.5-5.3L247,107.2z\"/>\r\n                \r\n        <polygon points=\"235.2,81.4 239.4,83.2 242.1,81.4 237.9,78 239.4,75.6 236.8,73.7 233.1,78 \"/>\r\n        <path d=\"M232.1,123.8c0-1.2,0.9-2.1,2-2.1c1.1,0,2,0.9,2,2.1c0,1.2-0.9,2.1-2,2.1C233,125.9,232.1,125,232.1,123.8\"/>\r\n    \r\n        <text transform=\"matrix(1 0 0 1 254.8575 109.3861)\" >RIPOLLÈS</text>\r\n        <text transform=\"matrix(1 0 0 1 327.0909 162.0893)\" >GIRONÈS</text>\r\n        <text transform=\"matrix(1 0 0 1 334.2374 107.9721)\">ALT EMPORDÀ</text>\r\n        <text transform=\"matrix(1 0 0 1 287.3663 129.3783)\" >GARROTXA</text>\r\n        <text transform=\"matrix(1 0 0 1 324.5919 132.2201)\" >PLA DE </text>\r\n        <text transform=\"matrix(1 0 0 1 322.128 139.2201)\">L'ESTANY</text>    \r\n        <text transform=\"matrix(1 0 0 1 362.8683 160.7519)\" >BAIX</text>\r\n        <text transform=\"matrix(1 0 0 1 356.4561 167.7519)\" >EMPORDÀ</text>\r\n        <text transform=\"matrix(1 0 0 1 308.6104 182.5922)\">SELVA</text>\r\n        <text transform=\"matrix(1 0 0 1 207.3697 137.6239)\" >BERGUEDÀ</text>\r\n    \r\n        <MapPoint point={props.points[0]} />\r\n      </g>\r\n\r\n      { props.points.map( (item, index) => {      \r\n        return <TooltipRegion point={item} reference={props.points[index].pathRef} />;\r\n      }) }\r\n\r\n    </>\r\n\r\n  );    \r\n};\r\n","import React, { useState } from 'react';\r\n\r\nimport { Link } from 'react-router-dom';\r\n\r\n\r\nimport Dialog from '@material-ui/core/Dialog';\r\nimport DialogTitle from '@material-ui/core/DialogTitle';\r\nimport DialogContent from '@material-ui/core/DialogContent';\r\n\r\nimport List from '@mui/material/List';\r\nimport ListItem from '@mui/material/ListItem';\r\nimport ListItemButton from '@mui/material/ListItemButton';\r\nimport ListItemIcon from '@mui/material/ListItemIcon';\r\nimport ListItemText from '@mui/material/ListItemText';\r\n\r\nimport CloseIcon from '@mui/icons-material/Close';\r\nimport IconButton from '@mui/material/IconButton';\r\nimport PlaceIcon from '@mui/icons-material/Place';\r\n\r\nimport Grid from '@mui/material/Grid';\r\n\r\nimport { MapCatalonia  } from '../components/MapCatalonia';\r\nimport { choicesRegion} from './../common/constants';\r\n\r\nexport const Map = (props) => {\r\n\r\n  const [hover, setHover] = useState(0);\r\n  const [showDialog, setShowDialog] = useState(false);\r\n    \r\n  const handleClickMap = (event) => {        \r\n    if (event.target.id)\r\n    {            \r\n      let id = event.target.id.split('-')[1];            \r\n      setHover(id);\r\n            \r\n      if (points.find(itemPoint => itemPoint.id == id).nitems > 0)\r\n        setShowDialog(true);\r\n    }\r\n    else if (event.target.parentElement.id)\r\n    {\r\n      let id = event.target.parentElement.id.split('-')[1];\r\n      setHover(id);\r\n      if (points.find(itemPoint => itemPoint.id == id).nitems > 0)\r\n        setShowDialog(true);\r\n    }\r\n  };\r\n    \r\n  const handleCloseClick = () => {\r\n    setShowDialog(false);\r\n  };\r\n\r\n  const handleMouseEnterMap = (event) => {\r\n    //console.log('handleMouseEnterMap ' + event.target.id);\r\n  };\r\n\r\n  const handleMouseOverMap = (event) => {\r\n        \r\n    if (event.target.id)\r\n    {  \r\n      let id = event.target.id.split('-')[1];\r\n      setHover(id);\r\n    }\r\n    else if (event.target.parentElement.id)\r\n    {\r\n      let id = event.target.parentElement.id.split('-')[1];\r\n      setHover(id);\r\n    }\r\n    else\r\n    {\r\n      setHover(0);\r\n    }\r\n  };\r\n\r\n  const points = [\r\n    {id: 1, x: 360,y: 140, nitems: 0, name: 'DT Girona', pathRef: React.createRef()},\r\n    {id: 2, x: 85,y: 318, nitems: 0, name: 'DT Camp de Tarragona - Terres de l\\'Ebre', pathRef: React.createRef()},\r\n    {id: 3, x: 110,y: 150, nitems: 0, name: 'DT Ponent - Alt Pirineu', pathRef: React.createRef()},\r\n    {id: 4, x: 260,y: 252, nitems: 0, name: 'DT Barcelonès', pathRef: React.createRef()},\r\n    {id: 5, x: 233,y: 258, nitems: 0, name: 'DT Baix Llobregat', pathRef: React.createRef()},\r\n    {id: 6, x: 277,y: 225, nitems: 0, name: 'DT Centre - Litoral', pathRef: React.createRef()},\r\n    {id: 7, x: 220,y: 160, nitems: 0, name: 'DT Catalunya Central', pathRef: React.createRef()},\r\n    {id: 8, x: 195,y: 235, nitems: 0, name: 'DT Penedès', pathRef: React.createRef()}\r\n  ];\r\n    \r\n  props.data.map(item => points.find(itemPoint => itemPoint.id === item.delegation).nitems++);\r\n        \r\n  return (\r\n    <div className=\"map\">\r\n\r\n      <svg\r\n        xmlns=\"http://www.w3.org/2000/svg\"\r\n        ariaLabel=\"Map of Catalonia\"\r\n        onClick={handleClickMap}\r\n        onMouseEnter={handleMouseEnterMap}\r\n        onMouseOver={handleMouseOverMap}\r\n        onMouseDown={e=>e.preventDefault()}\r\n        width=\"400px\"\r\n        height=\"420px\"\r\n      >      \r\n      \r\n        <MapCatalonia points={points} hover={hover} />\r\n      \r\n      \r\n                              \r\n      </svg>  \r\n    \r\n      <Dialog\r\n        fullWidth\r\n        open={showDialog}\r\n        onClose={handleCloseClick}\r\n        aria-label={props.label_title}\r\n      >\r\n        <DialogTitle sx={{ m: 0, p: 2 }} {...props}>\r\n          {hover && points.find(itemPoint => itemPoint.id == hover).name}\r\n          <IconButton\r\n            aria-label=\"close\"\r\n            onClick={handleCloseClick}\r\n            sx={{\r\n              position: 'absolute',\r\n              right: 8,\r\n              top: 8,\r\n              color: (theme) => theme.palette.grey[500],\r\n            }}\r\n          >\r\n            <CloseIcon />\r\n          </IconButton>\r\n        </DialogTitle>\r\n\r\n        <DialogContent>\r\n          <Grid container spacing={2}>\r\n            <Grid item xs={12}> \r\n              <List>\r\n                { props.data.filter(item=>item.delegation==hover).sort((a,b) => a.region - b.region).map(item => {\r\n                        \r\n                  let link = '/users/' + item.users_id + '/show';\r\n                  let secondary = item.address ? item.address : '';\r\n                  secondary += item.city ? ', ' + item.city : '';\r\n                  secondary += item.region ? ' (' + choicesRegion[item.region].name + ')': '';\r\n                        \r\n                  return (\r\n                    <ListItem className=\"birthdays-list\">\r\n                      <ListItemButton component={Link} to={{ pathname: link }}>\r\n                        <ListItemIcon>\r\n                          <PlaceIcon />\r\n                        </ListItemIcon>\r\n                        <ListItemText primary={item.name} secondary={secondary}  />\r\n                      </ListItemButton>\r\n                    </ListItem>\r\n                  );\r\n                })}\r\n              </List><br/>\r\n            </Grid> \r\n          </Grid>\r\n        </DialogContent>\r\n        \r\n      </Dialog>\r\n\r\n      \r\n    </div>\r\n  );\r\n};\r\n","// in src/Dashboard.js\r\nimport React, { useState, useEffect, createElement, Component, PureComponent } from 'react';\r\n\r\n\r\nimport ProgressBar from 'react-bootstrap/ProgressBar'\r\n\r\nimport { PieChart, Pie, BarChart, Bar, Cell, XAxis, YAxis, CartesianGrid, Tooltip, Legend, ResponsiveContainer, ComposedChart, Line, Area , LineChart} from 'recharts';\r\n\r\nimport { Tooltip as MuiTooltip } from \"@mui/material\";\r\n\r\nimport PropTypes from 'prop-types';\r\nimport LinearProgress from '@mui/material/LinearProgress';\r\n\r\nimport Grid from '@mui/material/Grid';\r\nimport Box from '@material-ui/core/Box';\r\nimport Typography from '@mui/material/Typography';\r\n\r\nimport EqualizerIcon from '@mui/icons-material/Equalizer';\r\nimport CakeIcon from '@mui/icons-material/Cake';\r\nimport TodayIcon from '@mui/icons-material/Today';\r\n\r\nimport EuroIcon from '@mui/icons-material/Euro';\r\nimport AccountBalanceIcon from '@mui/icons-material/AccountBalance';\r\n\r\n\r\nimport List from '@mui/material/List';\r\nimport ListItem from '@mui/material/ListItem';\r\nimport ListItemButton from '@mui/material/ListItemButton';\r\nimport ListItemIcon from '@mui/material/ListItemIcon';\r\nimport ListItemText from '@mui/material/ListItemText';\r\n\r\nimport { AssociationsList,AssociationsEdit,AssociationsCreate  } from '../resources/associations';\r\n\r\nimport { subscriptionModule, LinearProgressWithLabel, dateAndTimeToCatalan, formatFloat } from '../common/utils';\r\n\r\nimport {\r\n    SimpleList, \r\n    Datagrid,\r\n    TextField,\r\n    ReferenceField,\r\n    EditButton,\r\n    DeleteButton,\r\n    ShowButton,\r\n    Edit,\r\n    Create,\r\n    SimpleForm,\r\n    ReferenceInput,\r\n    SelectInput,\r\n    TextInput,\r\n    CreateButton ,\r\n    ExportButton,\r\n    TopToolbar,\r\n    Pagination,\r\n    FormTab,\r\n    TabbedForm,\r\n    ReferenceManyField,\r\n    Title,\r\n    FormDataConsumer,\r\n    useListContext,\r\n    Filter, required, ChipField,ReferenceArrayField, SingleFieldList, ArrayField,DateField ,DateInput,NumberInput,RadioButtonGroupInput,BooleanInput,SelectField,\r\n    useGetOne , FunctionField, ResourceContextProvider, useCreate, useRefresh, FormWithRedirect, Toolbar, SaveButton, useDataProvider, Loading, Error, NumberField,\r\n    CheckboxGroupInput,\r\n    ReferenceArrayInput,\r\n    SelectArrayInput\r\n\r\n    \r\n} from 'react-admin';\r\n\r\nimport { Link } from 'react-router-dom';\r\nimport Card from '@mui/material/Card';\r\nimport CardActions from '@mui/material/CardActions';\r\nimport CardContent from '@mui/material/CardContent';\r\nimport Button from '@mui/material/Button';\r\nimport Chip from '@material-ui/core/Chip';\r\n\r\nimport { IconButton } from '@mui/material';\r\nimport MenuBookIcon from '@mui/icons-material/MenuBook';\r\n\r\nimport { i18nProvider, useTranslate  } from '../common/language';\r\nimport { apiUrl, apiOrigin, apiDefaultLanguage, targets, targetsResources, modules} from './../common/constants';\r\n\r\nimport { makeStyles } from '@material-ui/core/styles';\r\n\r\nimport { UserAvatarIcon, UserFullNameTxt, RenderAge, RenderDate } from '../components/User';\r\n\r\nimport MyLoading from '../components/MyLoading';\r\n \r\nimport { Map } from '../components/Map';\r\n\r\n\r\nconst COLORS = ['#0088FE', '#00C49F', '#FFBB28', '#FF8042', '#9C9C9C'];\r\n\r\nconst currentYear = new Date().getFullYear();\r\n      \r\nexport default (props) => {\r\n    const classes = useStyles(props);\r\n    const translate = useTranslate(); \r\n    const dataProvider = useDataProvider();\r\n    const [info, setInfo] = useState();\r\n    const [loading, setLoading] = useState(true);\r\n    const [error, setError] = useState();\r\n        \r\n    useEffect(() => {\r\n        \r\n        if (localStorage.getItem('associations_id') !== 0)\r\n        {\r\n            dataProvider.getOne('dashboard', { id: localStorage.getItem('associations_id') })\r\n                .then(({ data }) => {      \r\n                    setInfo(data);\r\n                    setLoading(false);\r\n                })\r\n                .catch(error => {\r\n                    setLoading(false);    \r\n                });\r\n        }\r\n        else\r\n        {\r\n            setLoading(false);  \r\n        }\r\n    }, []);\r\n\r\n    if (loading) return <MyLoading />;\r\n    if (error) return <Error />;\r\n    \r\n    if (!info) return (\r\n            <DashboardSuperadmin {...props} />\r\n    );\r\n    \r\n    return (\r\n        \r\n        <Box sx={{ flexGrow: 1 }} className=\"dashboard_box\">   \r\n        \r\n          {!subscriptionModule(modules.GESTIO) ? <div class=\"alert alert-danger\">\r\n            {translate('dashboard.alert_subscription_admin')}\r\n          </div> : null }\r\n          \r\n          { subscriptionModule(modules.RECERCAT) ?\r\n            <DashboardRecercat info={info} />\r\n          :\r\n          subscriptionModule(modules.FEDERATION) ?\r\n            <DashboardFederation info={info} />\r\n          :\r\n          subscriptionModule(modules.FACM) ?\r\n            <DashboardFACM info={info} />\r\n          :\r\n            <DashboardDefault info={info} />      \r\n          }\r\n        \r\n        </Box>\r\n    )\r\n};\r\n\r\n\r\nconst activeModulesList = (translate) => {\r\n    \r\n    if (localStorage.getItem('subscriptions'))\r\n      {\r\n        let subscriptions = JSON.parse(localStorage.getItem('subscriptions'));\r\n        \r\n        let a = subscriptions.map((item, index) => (\r\n                    <Chip key={index} label={item.modules.name} className=\"mr-10 mt-10\"/>\r\n            ));\r\n    \r\n        return ( \r\n                <>\r\n                {a}\r\n                <br />\r\n                <CreateButton \r\n                    component={Link}\r\n                    to={{\r\n                        pathname: `/modules-view`\r\n                    }} \r\n                    className=\"mt-10\"\r\n                    label={translate('dashboard.subscription_view_all_modules')}\r\n                />\r\n                </>\r\n        );\r\n\r\n      }    \r\n}\r\n    \r\nexport const FacmChart = ({title, data, dataKey, current_year, color_cy, color_ly, ...props}) => {\r\n\r\n    let last_year = current_year-1;\r\n    let dataKey_current_year = dataKey + '_cy_acc';\r\n    let dataKey_last_year = dataKey + '_ly_acc';\r\n    \r\n    return (\r\n    <ResponsiveContainer width=\"100%\" height={180}>\r\n        <LineChart data={data} margin={{ top: 20, right: 50, left: 20, bottom: 5 }}>\r\n          <CartesianGrid strokeDasharray=\"3 3\" />\r\n          <XAxis dataKey=\"name\" />\r\n          <YAxis\r\n            yAxisId=\"left\"\r\n            label={{ value: title, angle: -90, dx: -25 }}            \r\n          />\r\n          <Tooltip />                          \r\n          <Line yAxisId=\"left\" type=\"monotone\" dataKey={dataKey_last_year} stroke={color_ly} name={last_year} />\r\n          <Line yAxisId=\"left\" type=\"monotone\" dataKey={dataKey_current_year} stroke={color_cy} strokeWidth={3} name={current_year} />          \r\n        </LineChart>\r\n    </ResponsiveContainer>\r\n    );\r\n}\r\n\r\n\r\nconst RADIAN = Math.PI / 180;\r\nconst renderCustomizedLabel = ({ cx, cy, midAngle, innerRadius, outerRadius, percent, index }) => {\r\n  const radius = innerRadius + (outerRadius - innerRadius) * 0.5;\r\n  const x = cx + radius * Math.cos(-midAngle * RADIAN);\r\n  const y = cy + radius * Math.sin(-midAngle * RADIAN);\r\n\r\n  return (\r\n    <text x={x} y={y} fill=\"white\" textAnchor={x > cx ? 'start' : 'end'} dominantBaseline=\"central\">\r\n      {`${(percent * 100).toFixed(0)}%`}\r\n    </text>\r\n  );\r\n};\r\n\r\nconst DashboardSuperadmin = ({...props}) => {\r\n    return (\r\n         <AssociationsList {...props} />   \r\n    );\r\n}\r\n            \r\nconst DashboardRecercat = ({info, ...props}) => {\r\n    return ( \r\n            <Grid container spacing={2}>\r\n                <Grid item xs={12} md={8}>            \r\n                    <Grid container spacing={2}>\r\n                        <Grid item xs={12} md={5}>\r\n                            <CardStatusRecercat info={info} />\r\n                        </Grid>\r\n                        <Grid item xs={12} md={7}>\r\n                            <CardRecercatChart info={info} />\r\n                        </Grid>\r\n                    </Grid>\r\n                </Grid>\r\n                <Grid item xs={12} md={4}> \r\n                    <CardSupport info={info} />      \r\n                </Grid>\r\n            </Grid>\r\n    );\r\n}\r\nconst DashboardFACM = ({info, ...props}) => {\r\n    return ( \r\n            <Grid container spacing={2}>\r\n                <Grid item xs={12} md={8}>            \r\n                    <Grid container spacing={2}>\r\n                        <Grid item xs={12} md={6}>\r\n                            <CardFACMProjects info={info} />\r\n                        </Grid>\r\n                        <Grid item xs={12} md={6}>\r\n                            <CardFACMEvents info={info} />\r\n                        </Grid>\r\n                    </Grid>\r\n                </Grid>\r\n                <Grid item xs={12} md={4}> \r\n                    <CardEventsCalendar info={info} />\r\n                    <CardSupport info={info} />   \r\n                    <CardSubscriptions info={info} />  \r\n                </Grid>\r\n            </Grid>\r\n    );\r\n}\r\n\r\nconst DashboardFederation = ({info, ...props}) => {\r\n    return ( \r\n            <Grid container spacing={2}>\r\n                <Grid item xs={12} md={8}>            \r\n                    <Grid container spacing={2}>\r\n                        <Grid item xs={12} md={5}>\r\n                            <CardStatusFederation info={info} />\r\n                            <CardStatusFederationUsers info={info} />\r\n                            <CardStatusFederationManagers info={info} />\r\n                        </Grid>\r\n                        <Grid item xs={12} md={7}>\r\n                            <CardMapFederation info={info} />\r\n                            <CardFederationEvolution info={info} />\r\n                            <CardRemittances info={info} />\r\n                        </Grid>\r\n                    </Grid>\r\n                </Grid>\r\n                <Grid item xs={12} md={4}> \r\n                    <CardEventsCalendar info={info} />\r\n                    <CardPendingUsers info={info} />\r\n                    <CardLastJoinedUsers info={info} />\r\n                    <CardFederationBirthdays info={info} />\r\n                    <CardSupport info={info} />   \r\n                    <CardSubscriptions info={info} />  \r\n                </Grid>\r\n            </Grid>\r\n    );\r\n}\r\nconst DashboardDefault = ({info, ...props}) => {\r\n    return ( \r\n            <Grid container spacing={2}>\r\n                <Grid item xs={12} md={8}>            \r\n                    <Grid container spacing={2}>\r\n                        <Grid item xs={12} md={5}>\r\n                            <CardStatusDefault info={info} />\r\n                        </Grid>\r\n                        <Grid item xs={12} md={7}>\r\n                            <CardChartMembers info={info} />\r\n                        </Grid>\r\n                        <Grid item xs={12} md={5}>\r\n                            <CardRemittances info={info} />\r\n                        </Grid>\r\n                        <Grid item xs={12} md={7}>\r\n                            <CardPyramide info={info} />\r\n                        </Grid>\r\n                    </Grid>\r\n                </Grid>\r\n                <Grid item xs={12} md={4}> \r\n                    <CardEventsCalendar info={info} />\r\n                    <CardPendingUsers info={info} />\r\n                    <CardLastJoinedUsers info={info} />\r\n                    <CardSupport info={info} />  \r\n                    <CardSubscriptions info={info} />  \r\n                </Grid>\r\n            </Grid>\r\n    );\r\n}\r\n\r\n\r\nconst CardStatusRecercat = ({info, ...props}) => {\r\n\r\n    const classes = useStyles(props);\r\n    const translate = useTranslate(); \r\n    \r\n    return (\r\n        <Card className={classes.card}>\r\n            <CardContent>\r\n              <Typography gutterBottom variant=\"h5\" component=\"div\">\r\n                {translate('recercat_centers.dashboard_resume_title')}\r\n              </Typography>\r\n\r\n              <Grid container spacing={0}>\r\n              <Grid item xs={12}>\r\n              <Box textAlign=\"left\">\r\n                  <br/><Typography className={classes.title} color=\"textSecondary\">{translate('recercat_centers.dashboard_resume_num_members')}</Typography>\r\n                  <Typography variant=\"h5\" component=\"h2\">{info.statistics.members_total}</Typography><br/>                         \r\n              </Box>\r\n              </Grid>\r\n\r\n              <Grid item xs={12}>\r\n              <Box textAlign=\"left\">\r\n                  <Typography className={classes.title} color=\"textSecondary\">{translate('recercat_centers.dashboard_resume_num_centers')}</Typography>\r\n                  <Typography variant=\"h5\" component=\"h2\">{info.recercat_num_centers}</Typography>                        \r\n              </Box>\r\n              </Grid>\r\n\r\n              </Grid>\r\n\r\n            </CardContent>\r\n\r\n          </Card>\r\n    );\r\n}\r\n\r\nconst CardStatusFACM = ({info, ...props}) => {\r\n\r\n    const classes = useStyles(props);\r\n    const translate = useTranslate(); \r\n    \r\n    return (\r\n        <Card className={classes.card}>\r\n            <CardContent>\r\n              <Typography gutterBottom variant=\"h5\" component=\"div\">\r\n                {translate('dashboard.facm_auditory')}\r\n              </Typography>\r\n\r\n              <FacmChart title={translate('dashboard.facm_num_events')} dataKey=\"events\" data={info.facm_auditory} current_year={currentYear} color_cy=\"#2B80D5\" color_ly=\"#A7CAED\" />\r\n              <FacmChart title={translate('dashboard.facm_num_entities')} dataKey=\"entities\" data={info.facm_auditory} current_year={currentYear} color_cy=\"#FF9A09\" color_ly=\"#FFD291\" />\r\n              <FacmChart title={translate('dashboard.facm_num_assistants')} dataKey=\"assistants\" data={info.facm_auditory} current_year={currentYear} color_cy=\"#198200\" color_ly=\"#8ED17F\" />\r\n\r\n            </CardContent>\r\n\r\n          </Card>\r\n    );\r\n}\r\n\r\nconst CardStatusFederation = ({info, ...props}) => {\r\n\r\n    const classes = useStyles(props);\r\n    const translate = useTranslate(); \r\n            \r\n    const federation_economic_data = [\r\n      { name: translate('dashboard.federation_economic_data_incomings'), value: info.statistics ? info.statistics.economic_data_incomings : 0, num: info.statistics.economic_data_with },\r\n      { name: translate('dashboard.federation_economic_data_expenses'), value: info.statistics ? info.statistics.economic_data_expenses : 0, num: info.statistics.economic_data_with},\r\n      { name: translate('dashboard.federation_economic_data_inversions'), value: info.statistics ? info.statistics.economic_data_inversion : 0, num: info.statistics.economic_data_with },      \r\n    ];\r\n    \r\n    return (\r\n    <Card className={classes.card}>\r\n        <CardContent>\r\n          <Typography gutterBottom variant=\"h5\" component=\"div\">\r\n            {info.groups_members_name}\r\n          </Typography>\r\n          \r\n          <br />\r\n\r\n          <Grid container spacing={0}>\r\n            <Grid item xs={6}>\r\n                <Box textAlign=\"center\">                    \r\n                    <Typography className={classes.title} color=\"textSecondary\">{translate('dashboard.federation_members')}</Typography>\r\n                    <Typography variant=\"h5\" component=\"h2\">{info.statistics.federations_total}</Typography>\r\n                </Box>\r\n            </Grid>\r\n\r\n            <Grid item xs={6}>\r\n                <MuiTooltip title={getTooltipMessage(info.statistics.avg_age_with,translate)} placement=\"top\" arrow style={{ cursor: \"pointer\" }}>\r\n                <Box textAlign=\"center\">                    \r\n                    <Typography className={classes.title} color=\"textSecondary\">{translate('dashboard.federation_avg_age_associations')}</Typography>                    \r\n                    <Typography variant=\"h5\" component=\"h2\">{parseFloat(info.statistics.avg_age.toFixed(1))} {translate('dashboard.age_sufix')}</Typography>             \r\n                </Box>\r\n                </MuiTooltip>\r\n            </Grid>\r\n        \r\n        </Grid>\r\n        \r\n        <br />\r\n        <br />\r\n\r\n        \r\n        <ResponsiveContainer width=\"100%\" height={150}>\r\n            <BarChart layout=\"vertical\" data={federation_economic_data} margin={{ top: 20, right: 30, left: 20, bottom: 5 }}>\r\n                <XAxis type=\"number\" tickFormatter={formatXAxis} />\r\n                <YAxis dataKey=\"name\" type=\"category\" />\r\n                <Tooltip content={<CustomTooltip />} />\r\n                <Bar dataKey=\"value\" fill={COLORS[0]} />\r\n            </BarChart>\r\n        </ResponsiveContainer>\r\n        \r\n        <br />\r\n        <br />\r\n        \r\n        <Grid container spacing={0}>\r\n            <Grid item xs={6}>\r\n                <MuiTooltip title={getTooltipMessage(info.statistics.volunteers_with,translate)} placement=\"top\" arrow style={{ cursor: \"pointer\" }}>\r\n                <Box textAlign=\"center\">\r\n                    <Typography className={classes.title} color=\"textSecondary\">{translate('dashboard.federation_volunteers')}</Typography>\r\n                    <Typography variant=\"h5\" component=\"h2\">{info.statistics.volunteers}</Typography>                \r\n                </Box>\r\n                </MuiTooltip>\r\n            </Grid>\r\n\r\n            <Grid item xs={6}>\r\n                <MuiTooltip title={getTooltipMessage(info.statistics.workers_with,translate)} placement=\"top\" arrow style={{ cursor: \"pointer\" }}>\r\n                <Box textAlign=\"center\">\r\n                    <Typography className={classes.title} color=\"textSecondary\">{translate('dashboard.federation_workers')}</Typography>\r\n                    <Typography variant=\"h5\" component=\"h2\">{info.statistics.workers}</Typography>                        \r\n                </Box>\r\n                </MuiTooltip>\r\n            </Grid>\r\n        </Grid>\r\n\r\n        </CardContent>\r\n\r\n      </Card> \r\n    );\r\n}\r\n\r\nconst getTooltipMessage = (num, translate) => {    \r\n    return (translate('dashboard.federation_num_data').replaceAll('%num%',num).replaceAll('%s%',num === 1 ? '' : 's'));\r\n}\r\n\r\nconst CustomTooltip = ({ active, payload }) => {\r\n  const translate = useTranslate(); \r\n  if (active && payload && payload.length) {\r\n    return (\r\n      <div style={{ background: \"white\", padding: \"10px\", border: \"1px solid #ccc\", borderRadius: \"5px\" }}>\r\n        <p style={{ margin: 0 }}><strong>{payload[0].payload.name} ({getTooltipMessage(payload[0].payload.num,translate)})</strong></p>\r\n        <p style={{ margin: 0 }}>{formatFloat(payload[0].value)} €</p>\r\n      </div>\r\n    );\r\n  }\r\n  return null;\r\n};\r\n\r\nconst formatXAxis = (tick) => {\r\n  if (tick >= 1000000) {\r\n    return `${(tick / 1000000).toFixed(1)}M`; // Exemple: 1.2M\r\n  } else if (tick >= 1000) {\r\n    return `${(tick / 1000).toFixed(0)}K`; // Exemple: 50K\r\n  }\r\n  return tick;\r\n};\r\n\r\nconst CardStatusFederationUsers = ({info, ...props}) => {\r\n\r\n    const classes = useStyles(props);\r\n    const translate = useTranslate(); \r\n        \r\n    const federation_data_gender = [\r\n      { name: translate('dashboard.members_legend_female'), value: info.statistics ? info.statistics.federations_gender_female : 0},\r\n      { name: translate('dashboard.members_legend_male'), value: info.statistics ? info.statistics.federations_gender_male : 0},\r\n      { name: translate('dashboard.members_legend_no_binary'), value: info.statistics ? info.statistics.federations_gender_nobinary : 0 },      \r\n    ];\r\n    \r\n    const federation_responsabilities_data_gender = [\r\n      { name: translate('dashboard.members_legend_female'), value: info.statistics ? info.statistics.responsabilities_gender_woman : 0},\r\n      { name: translate('dashboard.members_legend_male'), value: info.statistics ? info.statistics.responsabilities_gender_man : 0},\r\n      { name: translate('dashboard.members_legend_no_binary'), value: info.statistics ? info.statistics.responsabilities_gender_no_binary : 0 },      \r\n    ];\r\n    \r\n    return (\r\n    <Card className={classes.card}>\r\n        <CardContent>\r\n          <Typography gutterBottom variant=\"h5\" component=\"div\">\r\n            {translate('dashboard.federation_users')}\r\n          </Typography>\r\n          \r\n          <br />\r\n\r\n          <Grid container spacing={0}>\r\n            <Grid item xs={6}>\r\n                <MuiTooltip title={getTooltipMessage(info.statistics.federations_people_associations,translate)} placement=\"top\" arrow style={{ cursor: \"pointer\" }}>\r\n                <Box textAlign=\"center\">\r\n                    <Typography className={classes.title} color=\"textSecondary\">{translate('dashboard.federation_users_number')}</Typography>\r\n                    <Typography variant=\"h5\" component=\"h2\">{info.statistics.federations_people_people}</Typography>                \r\n                </Box>\r\n                </MuiTooltip>\r\n            </Grid>\r\n\r\n            <Grid item xs={6}>\r\n                <MuiTooltip title={getTooltipMessage(info.statistics.federations_avg_age_associations,translate)} placement=\"top\" arrow style={{ cursor: \"pointer\" }}>\r\n                <Box textAlign=\"center\">\r\n                    <Typography className={classes.title} color=\"textSecondary\">{translate('dashboard.federation_avg_age')}</Typography>\r\n                    <Typography variant=\"h5\" component=\"h2\">{info.statistics.federations_avg_age} {translate('dashboard.age_sufix')}</Typography>                        \r\n                </Box>\r\n                </MuiTooltip>\r\n            </Grid>\r\n          </Grid>\r\n          \r\n          <br /><br />\r\n          <MuiTooltip title={getTooltipMessage(info.statistics.federations_gender_associations,translate)} placement=\"top\" arrow style={{ cursor: \"pointer\" }}>\r\n            <Typography className={classes.title} color=\"textSecondary\">{translate('dashboard.federation_gender')}</Typography>                            \r\n          </MuiTooltip>\r\n          \r\n          <ResponsiveContainer width=\"100%\" height={260}>\r\n          <PieChart >\r\n          <Tooltip />\r\n          <Legend />\r\n            <Pie\r\n              data={federation_data_gender}\r\n              cx=\"50%\"\r\n              cy=\"50%\"\r\n              labelLine={false}\r\n              label={renderCustomizedLabel}\r\n              outerRadius={80}\r\n              fill=\"#8884d8\"\r\n              dataKey=\"value\"\r\n            >                          \r\n              {federation_data_gender.map((entry, index) => (\r\n                <Cell key={`cell-${index}`} fill={COLORS[index % COLORS.length]} />\r\n              ))}\r\n            </Pie>\r\n          </PieChart>\r\n          </ResponsiveContainer>\r\n          \r\n        </CardContent>\r\n\r\n      </Card> \r\n    );\r\n}\r\n\r\nconst CardStatusFederationManagers = ({info, ...props}) => {\r\n\r\n    const classes = useStyles(props);\r\n    const translate = useTranslate(); \r\n            \r\n    const federation_responsabilities_data_gender = [\r\n      { name: translate('dashboard.members_legend_female'), value: info.statistics ? info.statistics.responsabilities_gender_woman : 0},\r\n      { name: translate('dashboard.members_legend_male'), value: info.statistics ? info.statistics.responsabilities_gender_man : 0},\r\n      { name: translate('dashboard.members_legend_no_binary'), value: info.statistics ? info.statistics.responsabilities_gender_no_binary : 0 },      \r\n    ];\r\n    \r\n    return (\r\n    <Card className={classes.card}>\r\n        <CardContent>\r\n          <Typography gutterBottom variant=\"h5\" component=\"div\">\r\n            {translate('dashboard.federation_managers')}\r\n          </Typography>\r\n          \r\n          <br />\r\n          \r\n          <Grid container spacing={0}>\r\n            <Grid item xs={6}>\r\n                <MuiTooltip title={getTooltipMessage(info.statistics.responsabilities_with,translate)} placement=\"top\" arrow style={{ cursor: \"pointer\" }}>\r\n                <Box textAlign=\"center\">\r\n                    <Typography className={classes.title} color=\"textSecondary\">{translate('dashboard.federation_responsabilities')}</Typography>\r\n                    <Typography variant=\"h5\" component=\"h2\">{info.statistics.responsabilities}</Typography>                \r\n                </Box>\r\n                </MuiTooltip>\r\n            </Grid>\r\n\r\n            <Grid item xs={6}>\r\n                <MuiTooltip title={getTooltipMessage(info.statistics.responsabilities_avg_age_with,translate)} placement=\"top\" arrow style={{ cursor: \"pointer\" }}>\r\n                <Box textAlign=\"center\">\r\n                    <Typography className={classes.title} color=\"textSecondary\">{translate('dashboard.federation_avg_age')}</Typography>\r\n                    <Typography variant=\"h5\" component=\"h2\">{info.statistics.responsabilities_avg_age} {translate('dashboard.age_sufix')}</Typography>                        \r\n                </Box>\r\n                </MuiTooltip>\r\n            </Grid>\r\n          </Grid>\r\n          \r\n          <br /><br />\r\n          <MuiTooltip title={getTooltipMessage(info.statistics.responsabilities_with,translate)} placement=\"top\" arrow style={{ cursor: \"pointer\" }}>\r\n          <Typography className={classes.title} color=\"textSecondary\">{translate('dashboard.federation_gender')}</Typography>                            \r\n          </MuiTooltip>\r\n          \r\n          <ResponsiveContainer width=\"100%\" height={260}>\r\n          <PieChart >\r\n          <Tooltip />\r\n          <Legend />\r\n            <Pie\r\n              data={federation_responsabilities_data_gender}\r\n              cx=\"50%\"\r\n              cy=\"50%\"\r\n              labelLine={false}\r\n              label={renderCustomizedLabel}\r\n              outerRadius={80}\r\n              fill=\"#8884d8\"\r\n              dataKey=\"value\"\r\n            >                          \r\n              {federation_responsabilities_data_gender.map((entry, index) => (\r\n                <Cell key={`cell-${index}`} fill={COLORS[index % COLORS.length]} />\r\n              ))}\r\n            </Pie>\r\n          </PieChart>\r\n          </ResponsiveContainer>\r\n\r\n        </CardContent>\r\n\r\n      </Card> \r\n    );\r\n}\r\n\r\nconst CardStatusDefault = ({info, ...props}) => {\r\n\r\n    const classes = useStyles(props);\r\n    const translate = useTranslate(); \r\n    \r\n    const data_gender = [\r\n      { name: translate('dashboard.members_legend_female'), value: info.statistics ? info.statistics.members_female_num : 0},\r\n      { name: translate('dashboard.members_legend_male'), value: info.statistics ? info.statistics.members_male_num : 0},\r\n      { name: translate('dashboard.members_legend_no_binary'), value: info.statistics ? info.statistics.members_nobinary_num : 0},      \r\n    ];\r\n    \r\n    return (\r\n        <Card className={classes.card}>\r\n            <CardContent>\r\n              <Typography gutterBottom variant=\"h5\" component=\"div\">\r\n                {info.groups_members_name}\r\n              </Typography>\r\n\r\n              <Grid container spacing={0}>\r\n              <Grid item xs={6}>\r\n              <Box textAlign=\"left\">\r\n                  <Typography className={classes.title} color=\"textSecondary\">{translate('dashboard.statistics_total_members')}</Typography>\r\n                  <Typography variant=\"h5\" component=\"h2\">{info.statistics.members_total}</Typography>\r\n                  <br />\r\n                  <Typography className={classes.title} color=\"textSecondary\">{translate('dashboard.statistics_gender')} ({info.statistics.members_total_persons_gender} {translate('dashboard.people')})</Typography>                            \r\n              </Box>\r\n              </Grid>\r\n\r\n              <Grid item xs={6}>\r\n              <Box textAlign=\"left\">\r\n                  <Typography className={classes.title} color=\"textSecondary\">{translate('dashboard.statistics_avg_age')} ({info.statistics.members_total_persons_age} {translate('dashboard.people')})</Typography>\r\n                  <Typography variant=\"h5\" component=\"h2\">{info.statistics.members_avg_birthday} {translate('dashboard.age_sufix')}</Typography>                        \r\n              </Box>\r\n              </Grid>\r\n\r\n              </Grid>\r\n\r\n              <ResponsiveContainer width=\"100%\" height={260}>\r\n              <PieChart >\r\n              <Tooltip />\r\n              <Legend />\r\n                <Pie\r\n                  data={data_gender}\r\n                  cx=\"50%\"\r\n                  cy=\"50%\"\r\n                  labelLine={false}\r\n                  label={renderCustomizedLabel}\r\n                  outerRadius={80}\r\n                  fill=\"#8884d8\"\r\n                  dataKey=\"value\"\r\n                >                          \r\n                  {data_gender.map((entry, index) => (\r\n                    <Cell key={`cell-${index}`} fill={COLORS[index % COLORS.length]} />\r\n                  ))}\r\n                </Pie>\r\n              </PieChart>\r\n              </ResponsiveContainer>\r\n\r\n            </CardContent>\r\n\r\n          </Card> \r\n    );\r\n}\r\n\r\n\r\n\r\n\r\nconst CardFACMProjects = ({info, ...props}) => {\r\n\r\n    const classes = useStyles(props);\r\n    const translate = useTranslate(); \r\n        \r\n    return (\r\n    <Card className={classes.card}>\r\n        <CardContent>\r\n          <Typography gutterBottom variant=\"h5\" component=\"div\">\r\n            {translate('dashboard.facm_auditory')}\r\n          </Typography>\r\n\r\n          <FacmChart title={translate('dashboard.facm_num_events')} dataKey=\"events\" data={info.facm_auditory} current_year={currentYear} color_cy=\"#2B80D5\" color_ly=\"#A7CAED\" />\r\n          <FacmChart title={translate('dashboard.facm_num_entities')} dataKey=\"entities\" data={info.facm_auditory} current_year={currentYear} color_cy=\"#FF9A09\" color_ly=\"#FFD291\" />\r\n          <FacmChart title={translate('dashboard.facm_num_assistants')} dataKey=\"assistants\" data={info.facm_auditory} current_year={currentYear} color_cy=\"#198200\" color_ly=\"#8ED17F\" />\r\n\r\n        </CardContent>\r\n\r\n      </Card>  \r\n\r\n    );\r\n}\r\n\r\n\r\nconst CardFACMEvents = ({info, ...props}) => {\r\n\r\n    const classes = useStyles(props);\r\n    const translate = useTranslate(); \r\n        \r\n    return (\r\n    <Card className={classes.card}>\r\n          <CardContent>\r\n            <Typography gutterBottom variant=\"h5\" component=\"div\">\r\n              {translate('dashboard.facm_projects') }\r\n            </Typography>\r\n\r\n            <FacmChart title={translate('dashboard.facm_num_events')} dataKey=\"events\" data={info.facm_projects} current_year={currentYear} color_cy=\"#2B80D5\" color_ly=\"#A7CAED\" />\r\n            <FacmChart title={translate('dashboard.facm_num_entities')} dataKey=\"entities\" data={info.facm_projects} current_year={currentYear} color_cy=\"#FF9A09\" color_ly=\"#FFD291\" />\r\n            <FacmChart title={translate('dashboard.facm_num_assistants')} dataKey=\"assistants\" data={info.facm_projects} current_year={currentYear} color_cy=\"#198200\" color_ly=\"#8ED17F\" />\r\n\r\n          </CardContent>                        \r\n        </Card> \r\n\r\n    );\r\n}\r\n\r\nconst CardRecercatChart = ({info, ...props}) => {\r\n\r\n    const classes = useStyles(props);\r\n    const translate = useTranslate(); \r\n    \r\n    return (\r\n        <Card className={classes.card}>\r\n            <CardContent>\r\n              <Typography gutterBottom variant=\"h5\" component=\"div\">\r\n                {translate('recercat_centers.dashboard_graphic_title')}\r\n              </Typography>\r\n\r\n              <br/><br/>\r\n\r\n              <ResponsiveContainer width=\"100%\" height={280}>\r\n              <LineChart\r\n                className=\"dashboard_chart_members\"\r\n                data={info.members}\r\n                margin={{\r\n                  top: 0,\r\n                  right: 0,\r\n                  left: 0,\r\n                  bottom: 0,\r\n                }}\r\n              >\r\n                <CartesianGrid strokeDasharray=\"3 3\" />\r\n                <XAxis dataKey=\"name\" />\r\n                <YAxis  />\r\n                <Tooltip />\r\n                <Line name={translate('recercat_centers.dashboard_graphic_cards')} dataKey=\"no_informed\" stackId=\"a\" fill={COLORS[0]} />\r\n              </LineChart>\r\n              </ResponsiveContainer>\r\n\r\n              <br/>\r\n\r\n            </CardContent>\r\n\r\n          </Card>\r\n    );\r\n}\r\n\r\nconst CardMapFederation = ({info, ...props}) => {\r\n\r\n    const classes = useStyles(props);\r\n    const translate = useTranslate(); \r\n    \r\n    return (        \r\n        <Card className={classes.card} >\r\n           <CardContent>      \r\n             <Typography gutterBottom variant=\"h5\" component=\"div\">\r\n               {translate('dashboard.federation_map')}\r\n             </Typography>\r\n             <Map data={info.statistics.map}/>                     \r\n           </CardContent>\r\n         </Card>  \r\n    );\r\n}\r\n\r\nconst CardChartMembers = ({info, ...props}) => {\r\n\r\n    const classes = useStyles(props);\r\n    const translate = useTranslate(); \r\n    \r\n    return (\r\n    <Card className={classes.card}>\r\n        <CardContent>\r\n          <Typography gutterBottom variant=\"h5\" component=\"div\">\r\n            {translate('dashboard.members')}\r\n          </Typography>\r\n\r\n          <br/><br/>\r\n          <ResponsiveContainer width=\"100%\" height={280}>\r\n          <BarChart\r\n            className=\"dashboard_chart_members\"\r\n            data={info.members}\r\n            margin={{\r\n              top: 0,\r\n              right: 0,\r\n              left: -30,\r\n              bottom: 0,\r\n            }}\r\n          >\r\n            <CartesianGrid strokeDasharray=\"3 3\" />\r\n            <XAxis dataKey=\"name\"  />\r\n            <YAxis  />\r\n            <Tooltip />\r\n            <Legend />\r\n            <Bar name={translate('dashboard.members_legend_female')} dataKey=\"female\" stackId=\"a\" fill={COLORS[0]} />\r\n            <Bar name={translate('dashboard.members_legend_male')} dataKey=\"male\" stackId=\"a\" fill={COLORS[1]} />\r\n            <Bar name={translate('dashboard.members_legend_no_binary')} dataKey=\"no_binary\" stackId=\"a\" fill={COLORS[2]} />\r\n            <Bar name={translate('dashboard.members_legend_no_informed')} dataKey=\"no_informed\" stackId=\"a\" fill={COLORS[3]} />\r\n            <Bar name={translate('dashboard.members_legend_companies')} dataKey=\"companies\" stackId=\"a\" fill={COLORS[4]} />\r\n          </BarChart>\r\n          </ResponsiveContainer>\r\n\r\n          <br/>\r\n\r\n        </CardContent>\r\n\r\n      </Card> \r\n      );\r\n}\r\n\r\nconst CardRemittances = ({info, ...props}) => {\r\n\r\n    const classes = useStyles(props);\r\n    const translate = useTranslate(); \r\n    \r\n    return (\r\n    \r\n    subscriptionModule(modules.REMITTANCES) ?\r\n    <Card className={classes.card}>\r\n        <CardContent>\r\n          <Typography gutterBottom variant=\"h5\" component=\"div\">\r\n            {translate('dashboard.remittances')}\r\n          </Typography>\r\n\r\n          <ResponsiveContainer width=\"100%\" height={300}>\r\n          <BarChart\r\n            className=\"dashboard_chart_members\"\r\n            data={info.remittances}\r\n            margin={{\r\n              top: 30,\r\n              right: 0,\r\n              left: -20,\r\n              bottom: 0,\r\n            }}\r\n          >\r\n            <CartesianGrid strokeDasharray=\"3 3\" />\r\n            <XAxis dataKey=\"name\" />\r\n            <YAxis  />\r\n            <Tooltip />\r\n            <Legend />\r\n            <Bar name={translate('dashboard.remittances_legend_accepted')} dataKey=\"accepted\" stackId=\"a\" fill={COLORS[1]} />\r\n            <Bar name={translate('dashboard.remittances_legend_returned')} dataKey=\"returned\" stackId=\"a\" fill=\"#FF6565\" />\r\n          </BarChart>\r\n          </ResponsiveContainer>\r\n\r\n        </CardContent>\r\n\r\n        <CardActions>\r\n          <CreateButton\r\n              component={Link}\r\n              to={{\r\n                  pathname: `/remittances/create`\r\n              }} \r\n              label={translate('dashboard.remittances_add')}\r\n          />\r\n        </CardActions>\r\n\r\n      </Card> : null \r\n      );\r\n}\r\n\r\nconst CardPyramide = ({info, ...props}) => {\r\n\r\n    const classes = useStyles(props);\r\n    const translate = useTranslate(); \r\n    \r\n    return (\r\n    <Card className={classes.card}>\r\n        <CardContent>\r\n          <Typography gutterBottom variant=\"h5\" component=\"div\">\r\n            {translate('dashboard.age_pyramid')} \r\n          </Typography>\r\n          <Typography className={classes.title} color=\"textSecondary\">{info.statistics.members_total_persons_age_and_gender} {translate('dashboard.people')}</Typography>\r\n          <br/>\r\n          <ResponsiveContainer width=\"100%\" height={350}>\r\n          <ComposedChart\r\n            className=\"dashboard_chart_members\"\r\n            layout=\"vertical\"\r\n            data={info.pyramid}\r\n            margin={{\r\n              top: 20,\r\n              right: 0,\r\n              left: -20,\r\n              bottom: 20,\r\n            }}\r\n          >\r\n            <CartesianGrid strokeDasharray=\"3 3\" />\r\n            <XAxis type=\"number\" unit=\"%\" margin={{ bottom: 50, top: 10}} />\r\n            <YAxis type=\"category\" dataKey=\"name\" reversed={true} interval={0} margin={{ bottom: 10, top: 10}} />\r\n            <Legend />\r\n            <Tooltip />\r\n            <Line type=\"monotone\" dataKey=\"female\" stroke={COLORS[0]} name={translate('dashboard.members_legend_female')} dot={false} strokeWidth={4} />\r\n            <Line type=\"monotone\" dataKey=\"male\" stroke={COLORS[1]} name={translate('dashboard.members_legend_male')} dot={false} strokeWidth={4} />\r\n            <Line type=\"monotone\" dataKey=\"no_binary\" stroke={COLORS[2]} name={translate('dashboard.members_legend_no_binary')} dot={false} strokeWidth={4} />                          \r\n          </ComposedChart>\r\n          </ResponsiveContainer>\r\n\r\n          <br/>\r\n\r\n        </CardContent>\r\n\r\n      </Card>  \r\n    );\r\n}\r\n\r\nconst CardFederationEvolution = ({info, ...props}) => {\r\n\r\n    const classes = useStyles(props);\r\n    const translate = useTranslate(); \r\n    \r\n    return (\r\n        <Card className={classes.card}>\r\n            <CardContent>\r\n              <Typography gutterBottom variant=\"h5\" component=\"div\">\r\n                {translate('dashboard.members_federation')}\r\n              </Typography>\r\n\r\n              <br/><br/>\r\n              <ResponsiveContainer width=\"100%\" height={280}>\r\n              <LineChart\r\n                className=\"dashboard_chart_members\"\r\n                data={info.federation_members}\r\n                margin={{\r\n                  top: 0,\r\n                  right: 0,\r\n                  left: -30,\r\n                  bottom: 0,\r\n                }}\r\n              >\r\n                <CartesianGrid strokeDasharray=\"3 3\" />\r\n                <XAxis type=\"category\" dataKey=\"year\"  domain={['dataMin', 'dataMax']} />\r\n                <YAxis  />\r\n                <Tooltip />\r\n                <Line name={translate('dashboard.federation_members')} dataKey=\"num_members\" stackId=\"a\" fill={COLORS[0]} />\r\n              </LineChart>\r\n              </ResponsiveContainer>\r\n\r\n              <br/>\r\n\r\n            </CardContent>\r\n\r\n          </Card> \r\n    );\r\n}\r\n\r\nconst CardEventsCalendar = ({info, ...props}) => {\r\n\r\n    const classes = useStyles(props);\r\n    const translate = useTranslate(); \r\n    \r\n    return (\r\n    subscriptionModule(modules.CALENDAR) && info.events && info.events.length > 0 ?\r\n    <Card className={classes.card}>\r\n        <CardContent>\r\n          <Typography gutterBottom variant=\"h5\" component=\"div\">\r\n            { subscriptionModule(modules.FACM) ? translate('dashboard.next_events') : translate('dashboard.today')}\r\n          </Typography>\r\n\r\n          <Box textAlign=\"left\">\r\n              <List>\r\n              {info.events.map(item => {\r\n                  let link = '/events/' + item.id;\r\n                  let classrooms_name = item.classrooms_name ? ', ' + item.classrooms_name : '';\r\n                  let secondary = subscriptionModule(modules.FACM) ? dateAndTimeToCatalan(item.start) + classrooms_name : item.start.substring(11,16) + classrooms_name ;\r\n                  return(\r\n                      <ListItem className=\"birthdays-list\">\r\n                        <ListItemButton component={Link} to={{ pathname: link }}>\r\n                          <ListItemIcon>\r\n                            <TodayIcon />\r\n                          </ListItemIcon>\r\n                          <ListItemText primary={item.title} secondary={ secondary }  />\r\n                        </ListItemButton>\r\n                      </ListItem>\r\n                  )\r\n              }\r\n              )}\r\n              </List>\r\n          </Box>\r\n\r\n          <ShowButton \r\n              component={Link}\r\n              to={{\r\n                  pathname: `/events`\r\n              }} \r\n              label={translate('dashboard.events_view')}\r\n          />\r\n\r\n        </CardContent>\r\n      </Card> : null\r\n    );\r\n}\r\n\r\nconst CardPendingUsers = ({info, ...props}) => {\r\n\r\n    const classes = useStyles(props);\r\n    const translate = useTranslate(); \r\n    \r\n    return (\r\n    info.last_joins_pending && info.last_joins_pending.length > 0 ?\r\n    <Card className={classes.card}>\r\n        <CardContent>\r\n          <Typography gutterBottom variant=\"h5\" component=\"div\">\r\n            {translate('dashboard.last_joins_pending')}\r\n          </Typography>\r\n\r\n          <Box textAlign=\"left\">\r\n              <List>\r\n              {info.last_joins_pending.slice(0, 3).map(item => {\r\n                  let link = '/users/' + item.id + '/show';\r\n                  let user_complete_name = item ? (<UserFullNameTxt record={item} />) : '';\r\n                  let secondary = item.email;\r\n                  return(\r\n                      <ListItem className=\"last_joins_list\">\r\n                        <ListItemButton component={Link} to={{ pathname: link }}>\r\n                          <ListItemIcon>\r\n                            <UserAvatarIcon record={item} />\r\n                          </ListItemIcon>\r\n                          <ListItemText primary={user_complete_name} secondary={ secondary }  />\r\n                        </ListItemButton>\r\n                      </ListItem>\r\n                  )\r\n              }\r\n              )}\r\n              </List>\r\n          </Box>\r\n\r\n        </CardContent>\r\n\r\n        <CardActions>                        \r\n          {info.last_joins_pending.length > 3 ?\r\n          <ShowButton \r\n              icon={null}\r\n              component={Link}\r\n              to={{\r\n                  pathname: `/groups-tree/${info.statistics.members_group_pending}`\r\n              }} \r\n              label={ (subscriptionModule(modules.FEDERATION) ? translate('dashboard.members_federation_view_requests') : translate('dashboard.members_view_requests'))+' ('+info.statistics.members_total_pending+')'}\r\n          /> : null }\r\n        </CardActions>\r\n\r\n      </Card> : null  \r\n    );\r\n}\r\n\r\nconst CardLastJoinedUsers = ({info, ...props}) => {\r\n\r\n    const classes = useStyles(props);\r\n    const translate = useTranslate(); \r\n    \r\n    return (\r\n    info.last_joins && info.last_joins.length > 0 ?\r\n    <Card className={classes.card}>\r\n        <CardContent>\r\n          <Typography gutterBottom variant=\"h5\" component=\"div\">\r\n            {info.groups_members_name + ' ' + translate('dashboard.last_joins')}\r\n          </Typography>\r\n\r\n          <Box textAlign=\"left\">\r\n              <List>\r\n              {info.last_joins.map(item => {\r\n                  let link = '/users/' + item.id + '/show';\r\n                  let user_complete_name = item ? (<UserFullNameTxt record={item} />) : '';\r\n                  let secondary = item.email;\r\n                  return(\r\n                      <ListItem className=\"last_joins_list\">\r\n                        <ListItemButton component={Link} to={{ pathname: link }}>\r\n                          <ListItemIcon>\r\n                            <UserAvatarIcon record={item} />\r\n                          </ListItemIcon>\r\n                          <ListItemText primary={user_complete_name} secondary={ secondary }  />\r\n                        </ListItemButton>\r\n                      </ListItem>\r\n                  )\r\n              }\r\n              )}\r\n              </List>\r\n          </Box>\r\n\r\n        </CardContent>\r\n\r\n        <CardActions>\r\n          <CreateButton\r\n              component={Link}\r\n              to={{\r\n                  pathname: '/users/create',\r\n                  search: `?groups_id=${info.statistics.members_group}`,\r\n              }}\r\n              label={translate('dashboard.members_add')}\r\n          />     \r\n          <ShowButton \r\n              icon={null}\r\n              component={Link}\r\n              to={{\r\n                  pathname: `/groups-tree/${info.statistics.members_group}`\r\n              }} \r\n              label={(subscriptionModule(modules.FEDERATION) ? translate('dashboard.members_federation_view') : translate('dashboard.members_view')) +' ('+ (subscriptionModule(modules.FEDERATION) ? info.statistics.federations_total : info.statistics.members_total ) +')'}\r\n          />                                           \r\n        </CardActions>\r\n\r\n      </Card> : null\r\n    );\r\n}\r\n\r\n\r\nconst CardFederationBirthdays = ({info, ...props}) => {\r\n\r\n    const classes = useStyles(props);\r\n    const translate = useTranslate(); \r\n    \r\n    return (\r\n        <Card className={classes.card}>\r\n        <CardContent>\r\n          <Typography gutterBottom variant=\"h5\" component=\"div\">\r\n            {translate('dashboard.birthdays')} {info.birthdays_current_year}\r\n          </Typography>\r\n\r\n          <Box textAlign=\"left\">\r\n              <List>\r\n              {info.birthdays.map(item => {\r\n                  let link = '/users/' + item.id + '/show';\r\n                  return(\r\n                      <ListItem className=\"birthdays-list\">\r\n                        <ListItemButton component={Link} to={{ pathname: link }}>\r\n                          <ListItemIcon>\r\n                            <CakeIcon />\r\n                          </ListItemIcon>\r\n                          <ListItemText primary={item.name} secondary={ item.years_old + ' ' + translate('dashboard.age_sufix') }  />\r\n                        </ListItemButton>\r\n                      </ListItem>\r\n                  )\r\n              }\r\n              )}\r\n              </List>\r\n          </Box>\r\n        </CardContent>\r\n      </Card> \r\n    );\r\n}\r\n\r\nconst CardSupport = ({info, ...props}) => {\r\n\r\n    const classes = useStyles(props);\r\n    const translate = useTranslate(); \r\n    \r\n    return (\r\n    <Card className={classes.card}>\r\n        <CardContent>                        \r\n          <Typography gutterBottom variant=\"h5\" component=\"div\">                            \r\n              {translate('dashboard.help')}\r\n          </Typography>\r\n          <Box textAlign=\"left\">\r\n              { subscriptionModule(modules.RECERCAT) ?\r\n                  <Typography className={classes.title} color=\"textSecondary\"><span dangerouslySetInnerHTML={{ __html: translate('dashboard.help_description') }} /></Typography>\r\n              :\r\n              window.location.hostname.replaceAll('.','')=='admingestioentitatscat' ? \r\n                  <>\r\n                  <Typography className={classes.title} color=\"textSecondary\"><span dangerouslySetInnerHTML={{ __html: translate('dashboard.help_description') }} /></Typography>\r\n                  <a href=\"docs/manual.pdf\" target=\"blank\" >\r\n                  <Button startIcon={<MenuBookIcon />} className=\"button-blue\">\r\n                    {translate('dashboard.help_manual_link')}\r\n                  </Button>\r\n                  </a>\r\n                  </>\r\n              :\r\n                  <>\r\n                  <Typography className={classes.title} color=\"textSecondary\"><span dangerouslySetInnerHTML={{ __html: translate('dashboard.help_description_sifac') }} /></Typography>                                \r\n                  <a href=\"docs/manual_sifac.pdf\" target=\"blank\" >\r\n                  <Button startIcon={<MenuBookIcon />} className=\"button-blue\">\r\n                    {translate('dashboard.help_manual_link')}\r\n                  </Button>\r\n                  </a>\r\n                  </>\r\n              }                             \r\n          </Box>\r\n        </CardContent>\r\n      </Card>  );\r\n}\r\n\r\nconst CardSubscriptions = ({info, ...props}) => {\r\n\r\n    const classes = useStyles(props);\r\n    const translate = useTranslate(); \r\n    \r\n    return (\r\n    <Card className={classes.card}>\r\n        <CardContent>\r\n          <Typography gutterBottom variant=\"h5\" component=\"div\">\r\n            {translate('dashboard.subscription')}\r\n          </Typography>\r\n\r\n          <Box textAlign=\"left\">\r\n              <br />\r\n\r\n              <Grid container spacing={2}>\r\n              <Grid item xs={6} md={6}>   \r\n              <Typography className={classes.title} color=\"textSecondary\">{translate('dashboard.subscription_name')} </Typography>\r\n              <Typography className=\"\">{info.subscription_info.module_option_name}</Typography>    \r\n              </Grid>\r\n              <Grid item xs={6} md={6}>  \r\n              { info.subscription_info.module_option_public_id === 'FREE' ?\r\n              <>\r\n              <Typography className={classes.title} color=\"textSecondary\">{translate('dashboard.subscription_date_expiration')}</Typography>\r\n              <Typography className=\"\"><RenderDate source={info.subscription_info.date_expiration} /></Typography>\r\n              </> : null }\r\n              </Grid>\r\n              </Grid>\r\n\r\n              <br />\r\n\r\n              <Typography className=\"\">{info.subscription_info.users_num} / {info.subscription_info.users_num_max} {translate('dashboard.subscription_users')}</Typography>\r\n              <LinearProgressWithLabel value={info.subscription_info.users_num_percent} />\r\n              <br/>\r\n\r\n              <Typography className=\"\">{info.subscription_info.docs_size} / {info.subscription_info.docs_size_max} {translate('dashboard.subscription_size')}</Typography>\r\n              <LinearProgressWithLabel value={info.subscription_info.docs_size_percent}  />\r\n\r\n              <br/>\r\n              <Typography className={classes.title} color=\"textSecondary\">{translate('dashboard.subscription_active_modules')}</Typography>                                                        \r\n              {activeModulesList(translate)}\r\n              <br/>                            \r\n              <Link\r\n                  to={{\r\n                      pathname: `/modules-view`\r\n                  }} \r\n                  className=\"upper\"\r\n              ></Link> \r\n          </Box>\r\n        </CardContent>\r\n      </Card>  );\r\n}\r\n\r\nconst useStyles = makeStyles(theme => ({\r\n    card: {\r\n        minHeight: 52,\r\n        display: 'flex',\r\n        flexDirection: 'column',\r\n        flex: '1',\r\n        '& a': {\r\n            textDecoration: 'none'\r\n        },\r\n        marginBottom: 20\r\n    },\r\n    title: {}\r\n}));\r\n\r\n","import React from 'react';\r\n\r\nimport Button from '@material-ui/core/Button';\r\nimport { makeStyles } from '@material-ui/core/styles';\r\n\r\nimport { createBrowserHistory as createHistory } from 'history';\r\n\r\nimport Grid from '@mui/material/Grid';\r\nimport Box from '@material-ui/core/Box';\r\n\r\nimport { useTranslate  } from '../common/language';\r\n\r\nconst useStyles = makeStyles({\r\n  root: {\r\n    textAlign: 'center',\r\n    padding: '2rem',\r\n  },\r\n  message: {\r\n    fontSize: '1.5rem',\r\n    marginBottom: '2rem',\r\n  },\r\n});\r\n\r\nexport const NotFound = () => {\r\n  const classes = useStyles();\r\n  const translate = useTranslate();  \r\n  const history = createHistory();\r\n    \r\n  var imgName = window.location.hostname.replaceAll('.','');\r\n    \r\n  return (\r\n    <Box sx={{ width: '50%', maxWidth: 800, bgcolor: 'background.paper', padding: '20px' }} className=\"add_member_box\" >\r\n      <Grid container spacing={1} >\r\n        <Grid item xs={12} sm={12}>\r\n          <center><img src={'/img/'+imgName+'_200x200.png'} /></center>\r\n        </Grid>\r\n      </Grid> \r\n                                \r\n      <div className=\"add_member_form_sent\" dangerouslySetInnerHTML={{ __html: translate('common.notFoundPage') }} />\r\n                      \r\n      <br /><br /><br />\r\n      <center>\r\n        <Button variant=\"contained\" onClick={history.goBack}>{translate('common.goBack')}</Button>\r\n      </center>     \r\n    </Box>\r\n  );\r\n    \r\n};","// in src/Dashboard.js\r\nimport React, { useState, useEffect } from 'react';\r\n\r\n\r\n\r\n\r\nimport Grid from '@mui/material/Grid';\r\nimport Box from '@material-ui/core/Box';\r\nimport Typography from '@mui/material/Typography';\r\n\r\n\r\n\r\nimport Carousel from 'react-material-ui-carousel';\r\n\r\n\r\nimport {\r\n  TextInput, required,NumberInput,  useCreate, useRefresh, FormWithRedirect, SaveButton, useDataProvider, Loading,\r\n  useNotify,\r\n  DateTimeInput \r\n} from 'react-admin';\r\n\r\nimport { validateMaxLength, validateEmail  } from '../components/Validator';\r\nimport { DownloadPublicDoc  } from '../components/DownloadButtonAuth';\r\nimport MyLoading from '../components/MyLoading';\r\n\r\n\r\nimport { parse } from 'query-string';\r\n\r\n\r\nimport Divider from '@mui/material/Divider';\r\n\r\n\r\nimport { useTranslate  } from '../common/language';\r\n\r\n\r\nimport { ImageViewer } from '../resources/docs';\r\n\r\n\r\nimport { styled } from '@mui/material/styles';\r\nimport Dialog from '@mui/material/Dialog';\r\nimport DialogTitle from '@mui/material/DialogTitle';\r\nimport DialogContent from '@mui/material/DialogContent';\r\nimport IconButton from '@mui/material/IconButton';\r\nimport CloseIcon from '@mui/icons-material/Close';\r\n\r\n\r\n\r\n\r\n\r\nexport const ClassroomsRequests = props => {\r\n    \r\n  const translate = useTranslate();  \r\n  const dataProvider = useDataProvider();\r\n    \r\n  const [info, setInfo] = useState();\r\n  const [classrooms, setClassrooms] = useState();\r\n  const [loading, setLoading] = useState(true);\r\n  const [error, setError] = useState();\r\n  const [errorApi, setErrorApi] = useState();\r\n  const [create] = useCreate('users/public');\r\n  const refresh = useRefresh(); \r\n  const notify = useNotify();\r\n  const [formSent, setFormSent] = useState();\r\n    \r\n  const { associations_id: associations_id_string } = parse(props.location.search);\r\n  const associations_id = associations_id_string ? parseInt(associations_id_string, 10) : '';\r\n    \r\n  const [open, setOpen] = React.useState(false);\r\n\r\n  const openErrorDialog = () => {\r\n    setOpen(true);\r\n  };\r\n  const closeErrorDialog = () => {\r\n    setOpen(false);\r\n  };\r\n    \r\n  useEffect(() => {\r\n    dataProvider.getOne('associations/public', { id: associations_id })\r\n      .then(( { data } ) => { \r\n                \r\n        dataProvider.getList('classrooms/public', {\r\n          pagination: { page: 1, perPage: 1000 },\r\n          sort: { field: 'priority', order: 'ASC' },\r\n          filter: { associations_id: associations_id } } )\r\n          .then(response => {\r\n            setClassrooms(response.data);\r\n            setInfo(data);\r\n            setLoading(false);\r\n            setError(false);\r\n                    \r\n          })\r\n          .catch(error => {                \r\n            setLoading(false);  \r\n            setError(true);\r\n          });\r\n            \r\n                \r\n      })\r\n      .catch(error => {                \r\n        setLoading(false);  \r\n        setError(true);\r\n      });\r\n  }, []);\r\n    \r\n  if (loading) return <MyLoading />;\r\n  if (error) return <center><br /><br/>{translate('classrooms_requests.association_not_found')}</center>;\r\n  if (!info) return null;\r\n    \r\n  if (!info.classrooms_requests_actived)\r\n    return <center><br /><br/>{translate('add_member.form_not_actived')}</center>;    \r\n  else\r\n    return (\r\n      <Box sx={{ width: '90%', maxWidth: 800, bgcolor: 'background.paper', padding: '20px' }} className=\"add_member_box\" >\r\n        <Grid container spacing={1}>\r\n          <Grid item xs={12}>  \r\n            <HeaderPage info={info} title={translate('classrooms_requests.form_title')} />\r\n            {info.classrooms_requests_text} \r\n            <br/><br/>\r\n          </Grid>\r\n        </Grid>   \r\n                \r\n        <br/>\r\n              \r\n        <Grid container spacing={2}>\r\n          {classrooms.map((item) => (     \r\n                    \r\n            <Grid item xs={12} sm={6} lg={4} textAlign=\"center\" className=\"classrooms_list_item_container\">  \r\n              <a href={'/#/public/classrooms-requests-item?classrooms_id=' + item.id} className=\"classrooms_list_item_link\">\r\n                { item.photos.length > 0 ?\r\n                  <ImageViewer docs_id={item.photos[0].id} className=\"classrooms_list_item\" is_public={true} />\r\n                  : null }\r\n                <h3 align=\"center\" className=\"grey8\">{item.name}</h3>\r\n              </a>\r\n            </Grid>                \r\n          ))}\r\n        </Grid>\r\n    \r\n      </Box>\r\n    );\r\n};\r\n\r\nexport const ClassroomsRequestsItem = props => {\r\n    \r\n  const translate = useTranslate();  \r\n  const dataProvider = useDataProvider();\r\n    \r\n  const [info, setInfo] = useState();\r\n  const [classrooms, setClassrooms] = useState();\r\n  const [loading, setLoading] = useState(true);\r\n  const [error, setError] = useState();\r\n  const [errorApi, setErrorApi] = useState();\r\n  const [create] = useCreate('classrooms-requests/public');\r\n  const refresh = useRefresh(); \r\n  const notify = useNotify();\r\n  const [formSent, setFormSent] = useState();\r\n    \r\n  const { classrooms_id: classrooms_id_string } = parse(props.location.search);\r\n  const classrooms_id = classrooms_id_string ? parseInt(classrooms_id_string, 10) : '';\r\n    \r\n  const [open, setOpen] = React.useState(false);\r\n\r\n  const openErrorDialog = () => {\r\n    setOpen(true);\r\n  };\r\n  const closeErrorDialog = () => {\r\n    setOpen(false);\r\n  };\r\n    \r\n  useEffect(() => {\r\n    dataProvider.getOne('classrooms/public', { id: classrooms_id })\r\n      .then(( { data } ) => { \r\n        setClassrooms(data);\r\n        \r\n        dataProvider.getOne('associations/public', { id: data.associations_id })\r\n          .then(( { data } ) => { \r\n            setInfo(data);\r\n            setLoading(false);\r\n            setError(false);\r\n          })\r\n          .catch(error => {                \r\n            setLoading(false);  \r\n            setError(true);\r\n          });\r\n      })\r\n      .catch(error => {                \r\n        setLoading(false);  \r\n        setError(true);\r\n      });\r\n  }, []);\r\n    \r\n  const handleSubmit = values => {\r\n    create(            \r\n      { payload: { data: values } },\r\n      {\r\n        onSuccess: ({ data }) => {              \r\n          setFormSent(true);\r\n          setErrorApi('');\r\n        },\r\n        onFailure: ( error ) => {\r\n          setErrorApi(error.message);\r\n          openErrorDialog();                                    \r\n        }\r\n      }\r\n    );\r\n  };\r\n    \r\n  if (loading) return <MyLoading />;\r\n  if (error) return <center><br /><br/>{translate('classrooms_requests.association_not_found')}</center>;\r\n  if (!info) return null;\r\n    \r\n  if (formSent)\r\n  {\r\n    return (\r\n      <Box sx={{ width: '90%', maxWidth: 800, bgcolor: 'background.paper', padding: '20px' }} className=\"add_member_box\" >\r\n        <Grid container spacing={1}>\r\n          <Grid item xs={12}>  \r\n            <HeaderPage info={info} title=\"\" />\r\n          </Grid>\r\n        </Grid>                   \r\n        <div className=\"add_member_form_sent\" dangerouslySetInnerHTML={{ __html: info.classrooms_requests_form_sent }} />                                \r\n      </Box>\r\n    );\r\n  }\r\n    \r\n  if (!info.classrooms_requests_actived)\r\n    return <center><br /><br/>{translate('add_member.form_not_actived')}</center>;    \r\n  else\r\n    return (\r\n      <>\r\n        <Box sx={{ width: '90%', maxWidth: 800, bgcolor: 'background.paper', padding: '20px' }} className=\"add_member_box\" >\r\n          <Grid container spacing={1}>\r\n            <Grid item xs={12}>  \r\n              <HeaderPage info={info} title={classrooms.name} />\r\n            </Grid>\r\n          </Grid>   \r\n                \r\n          { classrooms.photos.length > 1 ? \r\n            <Carousel className=\"classrooms_carrousel_photos\">\r\n              { classrooms.photos.map( (item, i) => <div className=\"classrooms_carrousel_item_container\"><ImageViewer docs_id={item.id} className=\"classrooms_carrousel_item\" is_public={true} /></div> ) }\r\n            </Carousel>   \r\n            : null }\r\n          { classrooms.photos.length === 1 ? \r\n            <div className=\"classrooms_carrousel_photos\">\r\n              <ImageViewer docs_id={classrooms.photos[0].id} className=\"classrooms_carrousel_item\" is_public={true} />\r\n            </div>\r\n            : null }\r\n                \r\n          { classrooms.docs.length > 0 ? \r\n            <div className=\"classrooms_doc_link\">\r\n              <DownloadPublicDoc doc={classrooms.docs[0]} />\r\n            </div>\r\n            : null }\r\n                \r\n          <br />\r\n          <Grid container spacing={2} >\r\n            <div className=\"classrooms_requests_description\" spacing={2} dangerouslySetInnerHTML={{ __html: classrooms.description }} />\r\n          </Grid>  \r\n          <br />\r\n                \r\n          <br />\r\n          { classrooms.is_requestable ? \r\n                \r\n            <>\r\n              <Divider className=\"\" />\r\n              <Grid container spacing={0}>\r\n                \r\n                <FormWithRedirect\r\n                  resource=\"\"        \r\n                  save={handleSubmit}\r\n                  initialValues={{ classrooms_id : classrooms.id }}\r\n                  render={formProps => (\r\n                    <>     \r\n                      <Grid container spacing={1} >\r\n                        <Grid item xs={12} sm={12}>\r\n                          <Typography variant=\"h6\" className=\"grey8 mt-20\" align=\"center\">\r\n                            {translate('classrooms_requests.form_request_title')}\r\n                          </Typography>\r\n                        </Grid>\r\n                      </Grid>\r\n                      <Grid container spacing={1} className=\"grey8 mt-20 mb-20\">\r\n                        {translate('classrooms_requests.form_event_data_title')}\r\n                      </Grid>\r\n                                \r\n                      <Grid container spacing={1}>\r\n                        <Grid item xs={12} sm={6}>\r\n                          <TextInput className=\"add_member_input\" fullWidth source=\"event_name\" label={translate('classrooms_requests.form_event_name')} validate={[required(),validateMaxLength(100,translate('common.validation.maxLength'))]} />\r\n                        </Grid>\r\n                        <Grid item xs={8} sm={4}>\r\n                          <DateTimeInput className=\"add_member_input\" fullWidth source=\"event_date\" label={translate('classrooms_requests.form_event_date')} validate={[required()]} />\r\n                        </Grid>\r\n                        <Grid item xs={4} sm={2}>\r\n                          <NumberInput className=\"add_member_input\" fullWidth source=\"event_duration\" label={translate('classrooms_requests.form_event_duration')} validate={[required()]} />\r\n                        </Grid>\r\n                        <Grid item xs={12} sm={12}>\r\n                          <TextInput className=\"add_member_input\" fullWidth multiline source=\"event_recurrency\" label={translate('classrooms_requests.form_event_recurrency')} validate={[]} />\r\n                        </Grid>\r\n                        <Grid item xs={12} sm={12}>\r\n                          <TextInput className=\"add_member_input\" fullWidth multiline source=\"event_description\" label={translate('classrooms_requests.form_event_description')} validate={[required()]} />\r\n                        </Grid>                                    \r\n                        <Grid item xs={12} sm={12}>\r\n                          <TextInput className=\"add_member_input\" fullWidth multiline source=\"event_resources\" label={translate('classrooms_requests.form_event_resources')} validate={[]} />\r\n                        </Grid>\r\n                        <Grid item xs={12} sm={12}>\r\n                          <TextInput className=\"add_member_input\" fullWidth multiline source=\"comments\" label={translate('classrooms_requests.form_event_comments')} validate={[]} />\r\n                        </Grid>\r\n                      </Grid>\r\n                                \r\n                      <Grid container spacing={1} className=\"grey8 mt-20 mb-20\">\r\n                        {translate('classrooms_requests.form_requester_data_title')}\r\n                      </Grid>\r\n                                \r\n                      <Grid container spacing={1} >\r\n                        <Grid item xs={12} sm={4}>\r\n                          <TextInput className=\"add_member_input\" label={translate('users.first_name')} fullWidth source=\"first_name\" validate={[required(),validateMaxLength(100,translate('common.validation.maxLength'))]} />\r\n                        </Grid>\r\n                        <Grid item xs={12} sm={4}>\r\n                          <TextInput className=\"add_member_input\" label={translate('users.last_name_1')} fullWidth source=\"last_name_1\" validate={[required(),validateMaxLength(100,translate('common.validation.maxLength'))]} />\r\n                        </Grid>\r\n                        <Grid item xs={12} sm={4}>\r\n                          <TextInput className=\"add_member_input\" label={translate('users.last_name_2')} fullWidth source=\"last_name_2\" validate={[required(),validateMaxLength(100,translate('common.validation.maxLength'))]} />\r\n                        </Grid>\r\n                        <Grid item xs={12} sm={8}>\r\n                          <TextInput className=\"add_member_input\" fullWidth source=\"email\" label={translate('users.email')} validate={[required(),validateMaxLength(100,translate('common.validation.maxLength')),validateEmail()]} />\r\n                        </Grid>\r\n                        <Grid item xs={12} sm={4}>\r\n                          <TextInput className=\"add_member_input\" fullWidth source=\"phone\" label={translate('classrooms_requests.form_event_phone')} validate={[required(),validateMaxLength(25,translate('common.validation.maxLength'))]} />\r\n                        </Grid>\r\n                      </Grid>  \r\n\r\n                      <div className=\"add_member_lopd\" dangerouslySetInnerHTML={{ __html: info.classrooms_requests_lopd }} />\r\n\r\n                      <div className=\"add_member_button\" >\r\n                        <SaveButton\r\n                          saving={formProps.saving}\r\n                          handleSubmitWithRedirect={formProps.handleSubmitWithRedirect}\r\n                          label={translate('classrooms_requests.form_send')}\r\n                          icon={<span />}\r\n                        />\r\n                      </div>\r\n\r\n                      <br />\r\n\r\n                    </>\r\n\r\n\r\n                  )}\r\n                />\r\n              </Grid> \r\n            </>\r\n            : null }\r\n        </Box>\r\n          \r\n        <BootstrapDialog\r\n          onClose={closeErrorDialog}\r\n          aria-labelledby=\"customized-dialog-title\"\r\n          open={open}\r\n        >\r\n          <DialogTitle sx={{ m: 0, p: 2 }}>\r\n            {translate('classrooms_requests.form_request_title')}   \r\n            <IconButton\r\n              aria-label=\"close\"\r\n              onClick={closeErrorDialog}\r\n              sx={{\r\n                position: 'absolute',\r\n                right: 8,\r\n                top: 8,\r\n                color: (theme) => theme.palette.grey[500],\r\n              }}\r\n            >\r\n              <CloseIcon />\r\n            </IconButton>\r\n          </DialogTitle>\r\n\r\n          <DialogContent dividers>\r\n            <Typography gutterBottom>\r\n              {errorApi}\r\n            </Typography>\r\n          </DialogContent>\r\n        </BootstrapDialog>\r\n          \r\n      </>\r\n    );\r\n};\r\n\r\nexport const HeaderPage = ({info,title,...props}) => {\r\n  const translate = useTranslate();  \r\n  return ( \r\n    <>\r\n      { info.classrooms_requests_logo ? \r\n        <>\r\n          { info.image > 0 ? \r\n            <center><ImageViewer docs_id={info.image} className=\"docs_logo_add_member\" is_public={true} /></center>\r\n            : \r\n            <Typography variant=\"h4\" className=\"grey8\" align=\"center\">\r\n              <br/>{info.name}          \r\n            </Typography>\r\n          } \r\n          <br />\r\n          <Typography variant=\"h5\" className=\"grey8\" align=\"center\">              \r\n            {title}\r\n          </Typography>\r\n          <br /><br />\r\n        </>\r\n        : null }\r\n    </>\r\n  );\r\n};\r\n\r\n\r\n\r\nconst BootstrapDialog = styled(Dialog)(({ theme }) => ({\r\n  '& .MuiDialogContent-root': {\r\n    padding: theme.spacing(2),\r\n  },\r\n  '& .MuiDialogActions-root': {\r\n    padding: theme.spacing(1),\r\n  },\r\n}));\r\n\r\n\r\n","import * as React from 'react';\r\nimport { useCallback } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport DownloadIcon from '@material-ui/icons/GetApp';\r\nimport {\r\n  Button,\r\n  fetchRelatedRecords,\r\n  useDataProvider,\r\n  useNotify,\r\n  useListContext,\r\n} from 'react-admin';\r\n\r\nimport { useTranslate  } from '../common/language';\r\n\r\nexport const ExportButton = props => {\r\n  const {\r\n    maxResults = 1000,\r\n    alwaysEnabled = false,\r\n    onClick,\r\n    label = 'ra.action.export',\r\n    icon = defaultIcon,\r\n    exporter: customExporter,\r\n    sort: customSort,\r\n    ...rest\r\n  } = props;\r\n  const {\r\n    filterValues,\r\n    resource,\r\n    currentSort,\r\n    exporter: exporterFromContext,\r\n    total,\r\n  } = useListContext(props);\r\n  const exporter = customExporter || exporterFromContext;\r\n  const sort = customSort || currentSort;\r\n  const dataProvider = useDataProvider();\r\n  const notify = useNotify();\r\n  const translate = useTranslate(); \r\n  const handleClick = useCallback(\r\n    event => {\r\n      dataProvider\r\n        .getList(resource, {\r\n          sort: sort,\r\n          filter: filterValues,\r\n          pagination: { page: 1, perPage: maxResults },\r\n        })\r\n        .then(\r\n          ({ data }) =>\r\n          // here, do what you want with the data\r\n          // ...\r\n          // the default implementation is:\r\n            exporter &&\r\n                        exporter(\r\n                          data,\r\n                          translate,\r\n                          notify, \r\n                          fetchRelatedRecords(dataProvider),\r\n                          dataProvider,\r\n                          resource\r\n                        )\r\n        )\r\n        .catch(error => {\r\n          console.error(error);\r\n          notify('ra.notification.http_error', 'warning');\r\n        });\r\n      if (typeof onClick === 'function') {\r\n        onClick(event);\r\n      }\r\n    },\r\n    [\r\n      currentSort,\r\n      dataProvider,\r\n      exporter,\r\n      filterValues,\r\n      maxResults,\r\n      notify,\r\n      onClick,\r\n      resource\r\n    ]\r\n  );\r\n\r\n  return (\r\n    <Button\r\n      onClick={handleClick}\r\n      label={label}\r\n      disabled={total === 0 && !alwaysEnabled}\r\n      {...sanitizeRestProps(rest)}\r\n    >\r\n      {icon}\r\n    </Button>\r\n  );\r\n};\r\n\r\nconst defaultIcon = <DownloadIcon />;\r\n\r\nconst sanitizeRestProps = ({\r\n  basePath,\r\n  filterValues,\r\n  resource,\r\n  ...rest\r\n}) =>\r\n  rest;\r\n\r\nExportButton.propTypes = {\r\n  basePath: PropTypes.string,\r\n  exporter: PropTypes.func,\r\n  filterValues: PropTypes.object,\r\n  label: PropTypes.string,\r\n  maxResults: PropTypes.number,\r\n  alwaysEnabled: PropTypes.bool,\r\n  resource: PropTypes.string,\r\n  sort: PropTypes.exact({\r\n    field: PropTypes.string,\r\n    order: PropTypes.string,\r\n  }),\r\n  icon: PropTypes.element,\r\n};\r\n\r\n","import React, { useState, useEffect } from 'react';\r\n\r\nimport { \r\n  useDataProvider, AutocompleteInput\r\n} from 'react-admin';\r\n\r\nimport { useTranslate  } from '../common/language';\r\n\r\nexport const CityInput = ({...props}) => {\r\n  const translate = useTranslate(); \r\n  const dataProvider = useDataProvider();\r\n  const [cities, setCities] = useState();\r\n    \r\n  useEffect(() => {\r\n        \r\n    dataProvider\r\n      .getList('cities', {\r\n        pagination: { page: 0, perPage: 10000 },\r\n        sort: { field: 'name', order: 'ASC' },\r\n        filter: { },\r\n      })\r\n      .then(({ data }) => {\r\n        setCities(data);\r\n      })\r\n      .catch((error) => {\r\n      });\r\n                \r\n  }, []);\r\n    \r\n  if (!cities) return null;\r\n    \r\n  return (\r\n    <AutocompleteInput \r\n      optionText={ (record)=> record.name } \r\n      suggestionLimit={10000}\r\n      resettable={true}\r\n      clearAlwaysVisible={true}\r\n      fullWidth\r\n      disabled={false}\r\n      choices={cities}\r\n      source=\"cities_id\"\r\n      label={translate('events.city')}\r\n    />\r\n  );\r\n};\r\n\r\n","import {\r\n  TopToolbar,\r\n} from 'react-admin';\r\n\r\nimport Grid from '@mui/material/Grid';\r\nimport { Link } from 'react-router-dom';\r\nimport ArrowBackIosNewIcon from '@mui/icons-material/ArrowBackIosNew';\r\nimport Typography from '@mui/material/Typography';\r\n\r\nexport const BackLink = props => {\r\n  \r\n  return (\r\n    <TopToolbar>\r\n    <Grid container spacing={2}>\r\n    <Grid item xs={12}>   \r\n      <div style={{\r\n        display: 'flex',\r\n        alignItems: 'center',\r\n        flexWrap: 'wrap',\r\n      }}>\r\n        <Link\r\n          to={props.link}\r\n          className=\"\"\r\n        >\r\n          <ArrowBackIosNewIcon className=\"mr-2\" />                        \r\n        </Link>\r\n        <Typography variant=\"h5\" className=\"grey8\">\r\n          {props.title}     \r\n        </Typography>\r\n      </div>  \r\n\r\n    </Grid>\r\n  </Grid> \r\n  </TopToolbar>\r\n  );\r\n  \r\n};\r\n\r\n","import React, { useState } from 'react';\r\n\r\nimport {\r\n  List, \r\n  Datagrid,\r\n  TextField,\r\n  DeleteButton,\r\n  Edit,\r\n  SelectInput,\r\n  TextInput,\r\n  Button ,\r\n  Create,\r\n  SimpleForm,\r\n  CreateButton ,\r\n  TopToolbar,\r\n  FormTab,\r\n  TabbedForm,\r\n  ReferenceManyField,\r\n  FormDataConsumer,\r\n  useListContext, required,NumberInput,BooleanInput,SelectField,  FunctionField, ResourceContextProvider, useCreate, useRefresh, FormWithRedirect, Toolbar, SaveButton,\r\n  useNotify,\r\n  useRedirect,\r\n  DateField  , \r\n  Filter, \r\n  downloadCSV,\r\n  DateInput,\r\n  SimpleFormIterator,\r\n  ArrayInput,BooleanField,\r\n  NumberField,\r\n  ReferenceField,\r\n  useDataProvider,\r\n  RadioButtonGroupInput,\r\n  useUpdate,\r\n  DateTimeInput\r\n} from 'react-admin';\r\n\r\nimport { useEffect } from 'react';\r\n\r\nimport jsonExport from 'jsonexport/dist';\r\n\r\nimport {useHistory} from 'react-router-dom';\r\nimport { useForm, useFormState } from \"react-final-form\";\r\n\r\nimport { AccordionSection  } from '@react-admin/ra-form-layout';\r\n\r\n\r\nimport { makeStyles } from '@material-ui/core/styles';\r\n\r\nimport Divider from '@mui/material/Divider';\r\n\r\n\r\nimport { useTranslate  } from '../common/language';\r\n\r\nimport Typography from '@mui/material/Typography';\r\n\r\nimport EditIcon from '@mui/icons-material/Edit';\r\nimport DoneIcon from '@mui/icons-material/Done';\r\nimport ContentCopyIcon from '@mui/icons-material/ContentCopy';\r\nimport PendingActionsIcon from '@mui/icons-material/PendingActions';\r\nimport CloseIcon from '@mui/icons-material/Close';\r\n\r\n\r\nimport { green, orange, deepOrange, red } from '@mui/material/colors';\r\n\r\nimport RichTextInput from 'ra-input-rich-text';\r\n\r\n\r\nimport { TextFieldShow } from '../components/TextFieldShow';\r\n\r\nimport Grid from '@mui/material/Grid';\r\nimport Avatar from '@mui/material/Avatar';\r\nimport IconContentAdd from '@material-ui/icons/Add';\r\nimport IconCancel from '@material-ui/icons/Cancel';\r\nimport GavelIcon from '@material-ui/icons/Gavel';\r\nimport Save from '@material-ui/icons/Save';\r\n\r\nimport Dialog from '@material-ui/core/Dialog';\r\nimport DialogTitle from '@material-ui/core/DialogTitle';\r\nimport DialogContent from '@material-ui/core/DialogContent';\r\nimport DialogActions from '@material-ui/core/DialogActions';\r\nimport Chip from '@material-ui/core/Chip';\r\n\r\nimport { ColorInput } from 'react-admin-color-input';\r\n\r\nimport { DocsList, DocsListShow } from './docs';\r\nimport { targets, modules, modulesOptions, choicesClassroomsType, targetsEmails,emailsStatus, apiOrigin, apiDefaultLanguage, apiUrl, choicesTypeUser, choicesDonationsUsersPaymentMethod, choicesDonationsUsersPublicPaymentMethod, choicesDonationsUsersStatus } from './../common/constants';\r\nimport { dateOnlyToCatalan, subscriptionModule, setActivePermissionData, structArrayToIdList, DateTimeField, dateAndTimeToCatalan, DatagridNoResults } from './../common/utils';  \r\n\r\nimport { CityInput } from './../components/Inputs';\r\nimport { ExportButton } from './../components/ExportButton';\r\nimport { BackLink } from './../components/BackLink';\r\n\r\nimport { SendEmailIconStatus } from './../components/Emails';\r\nimport DownloadIcon from '@material-ui/icons/GetApp';\r\n\r\nimport { RenderBoolean, UserFullNameTxt } from '../components/User';\r\nimport Tooltip from '@mui/material/Tooltip';\r\n\r\nimport Box from '@material-ui/core/Box';\r\n\r\nimport { Link } from 'react-router-dom';\r\n\r\nimport { validateMaxLength, validateInteger, validateEmail, validateDoubleGreatZero, validateDouble } from './../components/Validator';\r\n\r\n\r\n\r\nexport const DonationsUsersList = (props) => {\r\n  const translate = useTranslate();  \r\n  const history = useHistory();\r\n  const [info, setInfo] = useState();\r\n  const dataProvider = useDataProvider();\r\n    \r\n  let current_path = history && history.location && history.location.pathname ? history.location.pathname : '';\r\n    \r\n  let basePath='/donations_users'; \r\n  let resource = 'donations_users';\r\n  let strRedirect = 'donations_users';\r\n    \r\n  let donations_projects_id = 0;\r\n  if (props.match.params.id) donations_projects_id = props.match.params.id;\r\n  \r\n  let report = 0;\r\n  if (current_path.includes('/reports')) report = 1;\r\n  \r\n  let year = 0;\r\n  if (props.match.params.year) year = props.match.params.year;\r\n  \r\n  let backLink = '/donations_projects';\r\n  backLink = report ? '/reports' + backLink : backLink;\r\n      \r\n  useEffect(() => {\r\n    \r\n    if (donations_projects_id > 0)\r\n    {\r\n      dataProvider.getOne('donations_projects', { id: donations_projects_id, report: report, associations_id: localStorage.getItem('associations_id') })\r\n      .then(({ data }) => {     \r\n        setInfo(data);\r\n      })\r\n      .catch(error => {           \r\n      });\r\n    }\r\n       \r\n  }, []);\r\n  \r\n  let page_transfer_validations = current_path.includes('/donations_transfer_validations');\r\n  let page_donations_project = current_path.includes('/donations_users');\r\n  let page_donations_project_fac = current_path.includes('/reports/donations_users');\r\n  \r\n  let is_fac = subscriptionModule(modules.FEDERATION);\r\n  let is_donation_own = subscriptionModule(modules.DONATIONS,modulesOptions.DONATIONS_OWN );\r\n  let is_donation_fac = subscriptionModule(modules.DONATIONS,modulesOptions.DONATIONS_FAC );\r\n  \r\n  let can_create_donations = donations_projects_id && (is_fac || is_donation_own);  \r\n  let can_go_back = page_donations_project || page_donations_project_fac;\r\n  \r\n  return (\r\n    <>   \r\n    { can_go_back ? <BackLink link={backLink} title={ info ? info.name : null } /> : null }\r\n    <ResourceContextProvider value={resource}>\r\n      <List \r\n        basePath={basePath}   \r\n        filter={{ report: report, associations_id: localStorage.getItem('associations_id'), donations_projects_id : donations_projects_id, only_transfer: page_transfer_validations }}  \r\n        actions={ <ListActions create={can_create_donations} donations_projects_id={donations_projects_id} report={report} />}    \r\n        bulkActionButtons={false}          \r\n        perPage={1000}   \r\n        pagination={false}\r\n        sort={{ field: 'dateTime', order: 'DESC' }} \r\n        label=\"\"  \r\n        title=\"\"  \r\n        resource={resource}\r\n        filters={ <MyFilter /> } \r\n        filterDefaultValues={ { q: \"\", only_accepted: !page_transfer_validations, only_pending: page_transfer_validations }}\r\n        \r\n      >        \r\n        <Datagrid           \r\n          expand={<DonationsUsersDetails />} \r\n          empty={ <DatagridNoResults /> } >  \r\n          <FunctionField label={translate('donations_users.order_id')} render={record => getOrderId(record.id) } sortable={false} />\r\n          <FunctionField label={translate('donations_users.donations_users_rel')} render={record => getOrderId(record.donations_users_rel) } sortable={false} />\r\n          <DateTimeField source=\"date_time\" label={translate('donations_users.date_time')} sortable={false} /> \r\n          <TextField source=\"complete_name\" label={translate('common.name')} sortable={false} /> \r\n          <TextField source=\"email\" label={translate('donations_users.email')} sortable={false} />  \r\n          <TextField source=\"nif\" label={translate('donations_users.nif')} sortable={false} />            \r\n          <NumberField source=\"amount\" label={translate('donations_users.amount')} sortable={false} locales=\"es-ES\" options={{ style: 'currency', currency: 'EUR' }} /> \r\n          \r\n          { !page_transfer_validations ?\r\n          <FunctionField render={record => translate('donations_users.payment_method_' + record.payment_method) } label={translate('donations_users.payment_method')}  sortable={false}  />\r\n          : null}\r\n          \r\n          <FunctionField label={translate('donations_users.status')} render={record => <RenderStatus status={record.status} /> } sortable={false}  />          \r\n          \r\n          { page_donations_project || page_donations_project_fac ? \r\n            <FunctionField label={translate('donations_users.email_sent_confirmation_title')} render={record => \r\n            page_donations_project_fac && record.donations_projects_payment_systems_fac || \r\n            page_donations_project && !record.donations_projects_payment_systems_fac ?\r\n              <SendEmailIconStatus record={record} target={targetsEmails.DONATIONS_USERS_CONFIRMATION}  /> \r\n            : null\r\n            } />\r\n          : null }\r\n                    \r\n          <FunctionField label={translate('donations_users.actions')} render={record => \r\n            page_donations_project_fac && record.donations_projects_payment_systems_fac || \r\n            page_donations_project && !record.donations_projects_payment_systems_fac ||\r\n            page_transfer_validations ?\r\n            <>\r\n            <EditDonationButton record={record} donations_projects_id={donations_projects_id} />\r\n            { (page_transfer_validations || page_donations_project_fac || page_donations_project) && record.status == 1 && !record.donations_users_rel && record.payment_method === 0? <ConfirmButton record={record} periodical={true} /> : null }\r\n            { (page_transfer_validations || page_donations_project_fac || page_donations_project) && !record.status == 1 ? <ConfirmButton record={record} periodical={false} /> : null }            \r\n            </> \r\n            : null\r\n          } sortable={false}  />\r\n          \r\n        </Datagrid>        \r\n      </List>\r\n    </ResourceContextProvider>\r\n    </>\r\n  );\r\n};\r\n\r\nexport const getOrderId = (id) => id ? 'D-' + id.toString().padStart(8, '0') : '';\r\n\r\nconst RenderStatus = (props) => {\r\n    const translate = useTranslate(); \r\n\r\n    if (props.status === 0) \r\n        return <Tooltip title={translate('donations_users.status_0')}>\r\n            <Avatar sx={{ bgcolor: orange[500] , width: 30, height: 30 }} ><PendingActionsIcon /></Avatar>\r\n        </Tooltip>;\r\n    else if (props.status === 1) \r\n        return <Tooltip title={translate('donations_users.status_1')}>\r\n                <Avatar sx={{ bgcolor: green[500] , width: 30, height: 30 }} ><DoneIcon /></Avatar>\r\n        </Tooltip>;\r\n    else if (props.status === 2)\r\n        return <Tooltip title={translate('donations_users.status_2')}>\r\n            <Avatar sx={{ bgcolor: red[500] , width: 30, height: 30 }} ><CloseIcon /></Avatar>\r\n        </Tooltip>;\r\n    else\r\n        return null;\r\n}\r\n\r\nexport const ConfirmButton = ({ ...props }) => {\r\n\r\n  const [showDialog, setShowDialog] = useState(false);\r\n  const [create, { loading }] = useCreate('donations_users/' + localStorage.getItem('associations_id') + '/' + props.record.id + '/confirm/' + props.periodical );\r\n  const notify = useNotify();\r\n  const refresh = useRefresh();    \r\n  const translate = useTranslate();  \r\n  const dataProvider = useDataProvider();\r\n  \r\n  const today = new Date();\r\n          \r\n  const handleClick = () => {        \r\n    setShowDialog(true);        \r\n  };\r\n\r\n  const handleCloseClick = () => {\r\n    setShowDialog(false);\r\n  };\r\n\r\n  const handleSubmit = async values => {\r\n    create(            \r\n      { payload: { data: values } },\r\n      {\r\n        onSuccess: ({ data }) => {\r\n          setShowDialog(false);\r\n          refresh();\r\n        },\r\n        onFailure: ( error ) => {\r\n          notify( error.message , 'error');\r\n        }\r\n      }\r\n    );\r\n  };\r\n  \r\n  let title = props.periodical ? translate('donations_users.copy_title') : translate('donations_users.validate_transfer');\r\n    \r\n  return (\r\n    <>            \r\n      <Button onClick={handleClick} label={props.periodical ? translate('donations_users.copy') : translate('donations_users.validate')} className=\"\">\r\n        { props.periodical ? <ContentCopyIcon />: <DoneIcon />}\r\n      </Button>\r\n\r\n      <Dialog\r\n        fullWidth\r\n        open={showDialog}\r\n        onClose={handleCloseClick}\r\n        aria-label={translate('donations_users.validate_transfer')}\r\n      >\r\n        <DialogTitle>{ title + ' ' + getOrderId(props.record.id)} </DialogTitle>\r\n\r\n        <FormWithRedirect\r\n          save={handleSubmit}\r\n          initialValues={{ associations_id : localStorage.getItem('associations_id'), donations_users_id : props.record.id, status: 1, send_confirmation: true, amount: props.record.amount }}\r\n          render={({\r\n            handleSubmitWithRedirect,\r\n            pristine,\r\n            saving\r\n          }) => (\r\n            <>\r\n              <DialogContent>\r\n                <FormDataConsumer>\r\n                {({ formData, ...rest }) => \r\n                <Grid container spacing={2}>\r\n                  <Grid item xs={4}>     \r\n                    <DateTimeInput fullWidth source=\"date_time\" label={translate('donations_users.date_time')} validate={[required()]} initialValue={today} />   \r\n                  </Grid>\r\n                  <Grid item xs={4}>                    \r\n                    <NumberInput source=\"amount\" label={translate('donations_users.amount')} parse={value => value ? value : 0 } validate={[required(),validateDoubleGreatZero(translate('common.validation.number'))]} />            \r\n                  </Grid>\r\n                  <Grid item xs={4}> \r\n                    <SelectInput fullWidth label={translate('donations_users.status')} source=\"status\" choices={choicesDonationsUsersStatus(translate)} validate={[required()]} />\r\n                  </Grid>                   \r\n                  <Grid item xs={12}>                                               \r\n                    {formData.status == 1 ? \r\n                    <BooleanInput fullWidth source=\"send_confirmation\" label={translate('donations_users.send_confirmation')} />\r\n                    : null }\r\n                  </Grid>\r\n                </Grid>\r\n                }\r\n                </FormDataConsumer>\r\n              </DialogContent>\r\n              <DialogActions>\r\n                <Button label=\"ra.action.cancel\" onClick={handleCloseClick} disabled={loading} >\r\n                  <IconCancel />\r\n                </Button>\r\n                <SaveButton\r\n                  handleSubmitWithRedirect={\r\n                    handleSubmitWithRedirect\r\n                  }\r\n                  pristine={pristine}\r\n                  saving={saving}\r\n                  disabled={loading}\r\n                />\r\n              </DialogActions>\r\n            </>\r\n          )}\r\n        />\r\n      </Dialog>\r\n    </>\r\n  );\r\n};\r\n\r\nexport const DownloadCertificate = ({ record, donations_users_id, ...props}) => {\r\n    \r\n  const translate = useTranslate(); \r\n  const notify = useNotify();\r\n\r\n  const handleAction = async () => {\r\n\r\n    let headers = new Headers({ Accept: 'application/json' });\r\n    headers.set('Access-Control-Allow-Origin', apiOrigin );\r\n    headers.set('Authorization', localStorage.getItem('auth'));\r\n    headers.set('Accept-Language', apiDefaultLanguage);\r\n    headers.set('Role', localStorage.getItem('active_permission'));\r\n\r\n    const result = await fetch(apiUrl + '/donations_users/' + donations_users_id + '/certificate/' + localStorage.getItem('associations_id'), { \r\n      headers: headers\r\n    });\r\n    \r\n    const blob = await result.blob();\r\n    const href = window.URL.createObjectURL(blob);\r\n    \r\n    var tempLink = document.createElement('a');\r\n    tempLink.href = href;\r\n    tempLink.setAttribute('download', translate('donations_users.pdf_certificate_filename'));\r\n    tempLink.click();\r\n    \r\n    notify(translate('donations_users.pdf_certificate_ok'),\"success\");\r\n  };\r\n  \r\n  return (\r\n    <Tooltip title={translate('donations_users.pdf_download')}> \r\n      <DownloadIcon onClick={handleAction} />\r\n    </Tooltip>\r\n  );\r\n\r\n};\r\n\r\n\r\nconst MyFilter = (props) => {\r\n    const translate = useTranslate(); \r\n    const history = useHistory();\r\n    \r\n    let current_path = history && history.location && history.location.pathname ? history.location.pathname : '';\r\n    \r\n    return (\r\n    <Filter {...props}>         \r\n        <TextInput label={translate('common.search')} source=\"q\" alwaysOn validate={[validateMaxLength(50,translate('common.validation.maxLength'))]} resettable /> \r\n        { !current_path.includes('/donations_transfer_validations') ? <BooleanInput label={translate('donations_users.only_accepted')} source=\"only_accepted\" alwaysOn /> : null }\r\n        { current_path.includes('/donations_transfer_validations') ? <BooleanInput label={translate('donations_users.only_pending')} source=\"only_pending\" alwaysOn /> : null }\r\n    </Filter>\r\n);\r\n};\r\n\r\nexport const DonationsUsersDetails = ({ id, record, resource, ...props }) => {\r\n  const translate = useTranslate(); \r\n        \r\n  return (\r\n    <div className=\"usersClassroomsExpand\">        \r\n      <Grid container spacing={2}>\r\n        <Grid item xs={3}>   \r\n          <TextFieldShow source={dateAndTimeToCatalan(record.date_time, translate)} label={translate('donations_users.date_time')} />\r\n        </Grid>\r\n        <Grid item xs={3}>   \r\n          <TextFieldShow source={record.donations_projects_name} label={translate('donations_users.donations_projects_name')} />\r\n        </Grid>\r\n        <Grid item xs={3}>   \r\n          <TextFieldShow source={record.associations_name} label={translate('donations_users.associations_name')} />\r\n        </Grid>\r\n        <Grid item xs={3}>   \r\n          <TextFieldShow source={record.amount} label={translate('donations_users.amount')} />\r\n        </Grid>        \r\n        <Grid item xs={3}>   \r\n          <TextFieldShow source={<UserFullNameTxt record={record} />} label={translate('donations_users.first_name')} />\r\n        </Grid> \r\n        <Grid item xs={3}>   \r\n          <TextFieldShow source={record.email} label={translate('donations_users.email')} />\r\n        </Grid> \r\n        <Grid item xs={3}>   \r\n          <TextFieldShow source={record.phone} label={translate('donations_users.phone')} />\r\n        </Grid> \r\n        <Grid item xs={3}>   \r\n          <TextFieldShow source={record.nif} label={translate('donations_users.nif')} />\r\n        </Grid>    \r\n        <Grid item xs={3}>   \r\n          <TextFieldShow source={record.address} label={translate('donations_users.address')} />\r\n        </Grid> \r\n        <Grid item xs={3}>   \r\n          <TextFieldShow source={record.zip} label={translate('donations_users.zip')} />\r\n        </Grid> \r\n        <Grid item xs={3}>   \r\n          <TextFieldShow source={record.city} label={translate('donations_users.city')} />\r\n        </Grid> \r\n        <Grid item xs={3}>   \r\n          <TextFieldShow source={record.country} label={translate('donations_users.country')} />\r\n        </Grid>         \r\n        <Grid item xs={3}>   \r\n          <TextFieldShow source={translate('donations_users.payment_method_'+record.payment_method)} label={translate('donations_users.payment_method')} />\r\n        </Grid>         \r\n        {record.payment_method == 2 ?\r\n        <Grid item xs={3}>   \r\n          <TextFieldShow source={record.transaction_id} label={translate('donations_users.transaction_id')} />\r\n        </Grid> : <Grid item xs={3}></Grid> }\r\n        <Grid item xs={3}>   \r\n          <TextFieldShow source={translate('donations_users.status_' + record.status)} label={translate('donations_users.status')} />\r\n        </Grid>  \r\n        <Grid item xs={3}>\r\n            <TextFieldShow source={<RenderBoolean source={record.want_certificate} />} label={translate('donations_users.want_certificate')} />   \r\n        </Grid>\r\n        <Grid item xs={12}>   \r\n          <TextFieldShow source={record.comment} label={translate('donations_users.comment')} />\r\n        </Grid>         \r\n      </Grid>\r\n      \r\n    </div>\r\n  );\r\n};\r\n\r\nconst exporter = (items, translate, notify) => {\r\n    \r\n  const itemsForExport = items.map(item => {\r\n    var itemForExport = {\r\n        id: getOrderId(item.id),\r\n        donations_users_rel: getOrderId(item.donations_users_rel),\r\n        date_time: item.date_time,\r\n        donations_projects_id: item.donations_projects_id,\r\n        donations_projects_name: item.donations_projects_name,\r\n        associations_id: item.associations_id,\r\n        associations_name: item.associations_name,\r\n        user_type: translate('users.user_type_' + item.user_type),\r\n        first_name: item.first_name,\r\n        last_name_1: item.last_name_1,\r\n        last_name_2: item.last_name_2,\r\n        email: item.email,\r\n        want_certificate: item.want_certificate,\r\n        nif: item.nif,\r\n        address: item.address,\r\n        zip: item.zip,\r\n        city: item.city,\r\n        country: item.country,\r\n        phone: item.phone,\r\n        payment_method: translate('donations_users.payment_method_' + item.payment_method),        \r\n        amount: item.amount != null ? item.amount.toFixed(2).replace('.', ',') : '',    \r\n        status: translate('donations_users.status_'+item.status),\r\n        transaction_id: item.transaction_id,\r\n        comment: item.comment,        \r\n        confirmation_status: item.confirmation_status == emailsStatus.SENT_TO_SMTP_OK ? 'Sí' : 'No',\r\n        confirmation_date_time: item.confirmation_date_time,\r\n        send_status: item.send_status == emailsStatus.SENT_TO_SMTP_OK ? 'Sí' : 'No',\r\n        send_date_time: item.send_date_time\r\n    };\r\n    return itemForExport;\r\n  });\r\n  jsonExport(itemsForExport, {\r\n    headers: ['id',\r\n        'donations_users_rel',\r\n        'date_time',\r\n        'donations_projects_id',\r\n        'donations_projects_name',\r\n        'associations_id',\r\n        'associations_name'\r\n,'user_type'\r\n,'first_name'\r\n,'last_name_1'\r\n,'last_name_2'\r\n,'email'\r\n,'want_certificate'\r\n,'nif'\r\n,'address'\r\n,'zip'\r\n,'city'\r\n,'country'\r\n,'phone'\r\n,'payment_method'\r\n,'amount'\r\n,'status'\r\n,'transaction_id'\r\n,'comment'\r\n,'confirmation_status'\r\n,'confirmation_date_time'\r\n,'send_status'\r\n,'send_date_time'\r\n],\r\n    rename: [translate('common.id'),translate('donations_users.donations_users_rel'), translate('donations_users.date_time'), translate('donations_users.donations_projects_id'),translate('donations_users.donations_projects_name'),\r\n        translate('donations_users.associations_id'), translate('donations_users.associations_name'), \r\n        translate('donations_users.user_type'),translate('donations_users.first_name'),translate('donations_users.last_name_1'),\r\n        translate('donations_users.last_name_2'),translate('donations_users.email'),translate('donations_users.want_certificate'),\r\n        translate('donations_users.nif'),translate('donations_users.address'),\r\n        translate('donations_users.zip'),translate('donations_users.city'),translate('donations_users.country'),translate('donations_users.phone'),\r\n        translate('donations_users.payment_method'),translate('donations_users.amount'),translate('donations_users.status'),\r\n        translate('donations_users.transaction_id'),translate('donations_users.comment'), \r\n        translate('donations_users.confirmation_status'), translate('donations_users.confirmation_date_time'), translate('donations_users.send_status'), translate('donations_users.send_date_time') ],        \r\n        \r\n  }, (err, csv) => {\r\n    const csv_new = '\\uFEFF' + csv;\r\n    downloadCSV(csv_new, translate('donations_users.exporter_file_name') ); \r\n    notify(translate('common.download_ok'),\"success\");\r\n  });\r\n};\r\n\r\n\r\nconst ListActions = (props) => {\r\n    const translate = useTranslate(); \r\n    const history = useHistory();\r\n    \r\n    let current_path = history && history.location && history.location.pathname ? history.location.pathname : '';\r\n        \r\n    let filterExport = { \r\n        associations_id: localStorage.getItem('associations_id'),    \r\n        year: props.year,\r\n        q: props.filterValues && props.filterValues.q ? props.filterValues.q : '',\r\n        only_accepted: props.filterValues && props.filterValues.only_accepted ? props.filterValues.only_accepted : false,\r\n        only_pending: props.filterValues && props.filterValues.only_pending ? props.filterValues.only_pending : false,\r\n        only_transfer: current_path.includes('/donations_transfer_validations') ? true : false,\r\n        only_certificate_not_sent: props.filterValues && props.filterValues.only_certificate_not_sent ? props.filterValues.only_certificate_not_sent : false,\r\n        donations_projects_id: props.donations_projects_id,\r\n        report : props.report\r\n    };\r\n    \r\n    return (\r\n    <TopToolbar>  \r\n        { props.create ? <CreateDonationButton {...props} /> : null }   \r\n        <ExportButton maxResults=\"1000000\" filterValues={filterExport} alwaysEnabled={false} exporter={exporter} sort={{ field: 'dateTime', order: 'DESC' }} /> \r\n    </TopToolbar>\r\n    );\r\n};\r\n               \r\nexport const EditDonationButton = ({ ...props }) => {\r\n\r\n    const [showDialog, setShowDialog] = useState(false);\r\n    const notify = useNotify();\r\n    const refresh = useRefresh();    \r\n    const translate = useTranslate();  \r\n    const dataProvider = useDataProvider();\r\n    const redirect = useRedirect();\r\n    \r\n    const history = useHistory();\r\n    \r\n    let current_path = history && history.location && history.location.pathname ? history.location.pathname : '';\r\n\r\n    const [update, { loading, error }] = useUpdate();\r\n\r\n    const handleClick = () => {\r\n        setShowDialog(true);\r\n    };\r\n\r\n    const handleCloseClick = () => {\r\n        setShowDialog(false);\r\n    };\r\n\r\n    const handleSubmit = async values => {\r\n            \r\n        update(\r\n            { \r\n                type: 'update', \r\n                resource: 'donations_users', \r\n                payload : { id: values.id, data : values }\r\n            },\r\n            {\r\n                onSuccess: ({ data }) => {\r\n                    setShowDialog(false);   \r\n                    \r\n                    if (!props.record.donations_projects_payment_systems_fac) { redirect('/donations_users/' + props.donations_projects_id ); refresh(); return; }\r\n                    \r\n                    if (!current_path.includes('/donations_certificates') && !current_path.includes('/donations_transfer_validations'))\r\n                    {\r\n                        redirect('/reports/donations_users/' + props.donations_projects_id );\r\n                    }                    \r\n                    refresh();\r\n                },\r\n                onFailure: ( error ) => {\r\n                    notify(error.message, 'error');\r\n                }\r\n            }\r\n        );\r\n    };    \r\n    \r\n    return (\r\n        <>            \r\n            <Button onClick={handleClick} label={translate('donations_users.edit')}>\r\n              <EditIcon />                \r\n            </Button>\r\n\r\n            <Dialog\r\n                fullWidth\r\n                open={showDialog}\r\n                onClose={handleCloseClick}\r\n                aria-label={translate('donations_users.status_form')}\r\n                disableEnforceFocus\r\n            >\r\n                <DialogTitle>{translate('donations_users.edit')}</DialogTitle>\r\n\r\n                <FormWithRedirect\r\n                    resource=\"remittances_users_items\"\r\n                    save={handleSubmit}\r\n                    initialValues={{ associations_id: localStorage.getItem('associations_id') , ...props.record }}\r\n                    render={({\r\n                        handleSubmitWithRedirect,\r\n                        pristine,\r\n                        saving\r\n                    }) => (\r\n                        <>\r\n                            <DialogContent>\r\n                              <DonationsUsersForm />\r\n                            </DialogContent>  \r\n                            <DialogActions>\r\n                                <Button label=\"ra.action.cancel\" onClick={handleCloseClick} disabled={loading} >\r\n                                    <IconCancel />\r\n                                </Button>\r\n                                <SaveButton\r\n                                    handleSubmitWithRedirect={\r\n                                        handleSubmitWithRedirect\r\n                                    }\r\n                                    pristine={pristine}\r\n                                    saving={saving}\r\n                                    disabled={loading}\r\n                                />\r\n                            </DialogActions>\r\n                        </>\r\n                    )}\r\n                />\r\n            </Dialog>\r\n        </>\r\n    );\r\n}\r\n\r\nexport const CreateDonationButton = ({ donations_projects_id , ...props }) => {\r\n\r\n  const [showDialog, setShowDialog] = useState(false);\r\n  const [create, { loading }] = useCreate('donations_users');\r\n  const notify = useNotify();\r\n  const refresh = useRefresh();    \r\n  const translate = useTranslate();  \r\n  const redirect = useRedirect();\r\n        \r\n  const handleClick = () => {\r\n    setShowDialog(true);\r\n  };\r\n\r\n  const handleCloseClick = () => {\r\n    setShowDialog(false);\r\n  };\r\n\r\n  const handleSubmit = async values => {\r\n    create(            \r\n      { payload: { data: values } },\r\n      {\r\n        onSuccess: ({ data }) => {                    \r\n          setShowDialog(false);\r\n          refresh();        \r\n        },\r\n        onFailure: ( error ) => {\r\n          notify( error.message , 'error');\r\n        }\r\n      }\r\n    );\r\n  };\r\n    \r\n  return (\r\n    <>            \r\n      <Button onClick={handleClick} label={translate('donations_users.create')}>\r\n        <IconContentAdd />                \r\n      </Button>\r\n\r\n      <Dialog\r\n        fullWidth\r\n        open={showDialog}\r\n        onClose={handleCloseClick}\r\n        aria-label={translate('donations_users.create')}\r\n      >\r\n        <DialogTitle>{translate('donations_users.create')}</DialogTitle>\r\n\r\n        <FormWithRedirect\r\n          save={handleSubmit}\r\n          initialValues={{ associations_id: localStorage.getItem('associations_id'), donations_projects_id: donations_projects_id, status: 1, user_type: 0, payment_method: 0, want_certificate: false }}\r\n          render={({\r\n            handleSubmitWithRedirect,\r\n            pristine,\r\n            saving\r\n          }) => (\r\n            <>\r\n                            \r\n                <DialogContent>\r\n                  <DonationsUsersForm />\r\n                </DialogContent>              \r\n              \r\n              <DialogActions>\r\n                <Button label=\"ra.action.cancel\" onClick={handleCloseClick} disabled={loading} >\r\n                  <IconCancel />\r\n                </Button>\r\n                <SaveButton\r\n                  handleSubmitWithRedirect={\r\n                    handleSubmitWithRedirect\r\n                  }\r\n                  pristine={pristine}\r\n                  saving={saving}\r\n                  disabled={loading}\r\n                />\r\n              </DialogActions>\r\n            </>\r\n          )}\r\n        />\r\n      </Dialog>\r\n    </>\r\n  );\r\n};\r\n\r\nexport const DonationsUsersForm = ({ ...props }) => {\r\n    const translate = useTranslate();        \r\n    return (<FormDataConsumer>\r\n    {({ formData, ...rest }) => <>\r\n                <Grid container spacing={1}>\r\n                  <Grid item xs={8}>  \r\n                    { props.public ? \r\n                        <RadioButtonGroupInput source=\"payment_method\" choices={choicesDonationsUsersPublicPaymentMethod(translate)} optionText=\"name\" optionValue=\"id\" label={translate('donations_users.payment_method')}  validate={required()} />            \r\n                    : \r\n                        <RadioButtonGroupInput source=\"payment_method\" choices={choicesDonationsUsersPaymentMethod(translate)} optionText=\"name\" optionValue=\"id\" label={translate('donations_users.payment_method')}  validate={required()} />            \r\n                    }\r\n                  </Grid>\r\n                  <Grid item xs={4}>                    \r\n                    <NumberInput source=\"amount\" label={translate('donations_users.amount')} parse={value => value ? value : 0 } validate={[required(),validateDoubleGreatZero(translate('common.validation.number'))]} />            \r\n                  </Grid>\r\n                </Grid>\r\n                <Grid container spacing={1}>                  \r\n                  <Grid item xs={12}>                    \r\n                    <RadioButtonGroupInput source=\"user_type\" choices={choicesTypeUser(translate)} optionText=\"name\" optionValue=\"id\" label={translate('donations_users.user_type')}  validate={required()} />            \r\n                  </Grid>\r\n                </Grid>                \r\n                <Grid container spacing={1}>                                     \r\n                  <Grid item xs={formData.user_type == 0 ? 4 : 12}>                                               \r\n                    <TextInput fullWidth source=\"first_name\" label={translate('donations_users.first_name')} validate={[required(),validateMaxLength(100,translate('common.validation.maxLength'))]} />\r\n                  </Grid>\r\n                  {formData.user_type == 0 ? \r\n                  <Grid item xs={4}>                                               \r\n                    <TextInput fullWidth source=\"last_name_1\" label={translate('donations_users.last_name_1')} validate={[required(),validateMaxLength(100,translate('common.validation.maxLength'))]} />\r\n                  </Grid> : null }\r\n                  {formData.user_type == 0 ? \r\n                  <Grid item xs={4}>                                               \r\n                    <TextInput fullWidth source=\"last_name_2\" label={translate('donations_users.last_name_2')} validate={[required(),validateMaxLength(100,translate('common.validation.maxLength'))]} />\r\n                  </Grid> : null } \r\n                </Grid> \r\n                <Grid container spacing={1}>                                     \r\n                  <Grid item xs={12}>                                               \r\n                    <TextInput fullWidth source=\"email\" label={translate('donations_users.email')} parse={value => value} validate={[validateMaxLength(100,translate('common.validation.maxLength')),validateEmail()]} />\r\n                  </Grid>                  \r\n                </Grid> \r\n                <Grid container spacing={1}>        \r\n                  <Grid item xs={12}>                                               \r\n                    <BooleanInput fullWidth source=\"want_certificate\" label={translate('donations_users.want_certificate')} />\r\n                  </Grid>\r\n                </Grid>\r\n                {formData.want_certificate ? \r\n                <>\r\n                <Grid container spacing={1}>        \r\n                  <Grid item xs={6}>                                               \r\n                    <TextInput fullWidth source=\"nif\" label={translate('donations_users.nif')} validate={[required(),validateMaxLength(15,translate('common.validation.maxLength'))]} />\r\n                  </Grid>\r\n                  <Grid item xs={6}>\r\n                    <TextInput fullWidth source=\"phone\" label={translate('donations_users.phone')} validate={[validateMaxLength(15,translate('common.validation.maxLength'))]} />\r\n                  </Grid>\r\n                  <Grid item xs={6}>\r\n                    <TextInput fullWidth source=\"address\" label={translate('donations_users.address')} validate={[required(),validateMaxLength(100,translate('common.validation.maxLength'))]} />\r\n                  </Grid>                  \r\n                  <Grid item xs={6}>\r\n                    <TextInput fullWidth source=\"zip\" label={translate('donations_users.zip')} validate={[required(),validateMaxLength(5,translate('common.validation.maxLength'))]} />\r\n                  </Grid>\r\n                  <Grid item xs={6}>\r\n                    <TextInput fullWidth source=\"city\" label={translate('donations_users.city')} validate={[required(),validateMaxLength(100,translate('common.validation.maxLength'))]} />\r\n                  </Grid>\r\n                  <Grid item xs={6}>\r\n                    <TextInput fullWidth source=\"country\" label={translate('donations_users.country')} validate={[required(),validateMaxLength(50,translate('common.validation.maxLength'))]} />\r\n                  </Grid>\r\n                </Grid> \r\n                </>\r\n                : null }\r\n                <Grid container spacing={1}>        \r\n                  <Grid item xs={12}>\r\n                    <TextInput fullWidth multiline source=\"comment\" label={translate('donations_users.comment')} validate={[validateMaxLength(255,translate('common.validation.maxLength'))]} />   \r\n                  </Grid>\r\n                </Grid>\r\n              </> }\r\n    </FormDataConsumer>);\r\n        \r\n};\r\n\r\n","import React, { useState } from 'react';\r\n\r\nimport {\r\n  List, \r\n  Datagrid,\r\n  TextField,\r\n  DeleteButton,\r\n  Edit,\r\n  SelectInput,\r\n  TextInput,\r\n  Button ,\r\n  Create,\r\n  SimpleForm,\r\n  CreateButton ,\r\n  TopToolbar,\r\n  FormTab,\r\n  TabbedForm,\r\n  ReferenceManyField,\r\n  FormDataConsumer,\r\n  useListContext, required,NumberInput,BooleanInput,SelectField,  FunctionField, ResourceContextProvider, useCreate, useRefresh, FormWithRedirect, Toolbar, SaveButton,\r\n  useNotify,\r\n  useRedirect,\r\n  DateField  , \r\n  Filter, \r\n  downloadCSV,\r\n  DateInput,\r\n  SimpleFormIterator,\r\n  ArrayInput,BooleanField,DateTimeInput, ReferenceInput, EditButton, NumberField, useDataProvider, ShowButton, HttpError \r\n} from 'react-admin';\r\n\r\nimport { useEffect } from 'react';\r\nimport {useHistory} from 'react-router-dom';\r\n\r\nimport jsonExport from 'jsonexport/dist';\r\n\r\nimport { CardHeader } from '@material-ui/core';\r\n\r\nimport DoneIcon from '@mui/icons-material/Done';\r\nimport CloseIcon from '@mui/icons-material/Close';\r\nimport PendingActionsIcon from '@mui/icons-material/PendingActions';\r\nimport EditIcon from '@mui/icons-material/Edit';\r\n\r\nimport { green, orange, deepOrange } from '@mui/material/colors';\r\n\r\nimport PreviewIcon from '@mui/icons-material/Preview';\r\nimport PublicIcon from '@mui/icons-material/Public';\r\n\r\nimport Tooltip from '@mui/material/Tooltip';\r\n\r\nimport { AccordionSection  } from '@react-admin/ra-form-layout';\r\n\r\n\r\nimport { makeStyles } from '@material-ui/core/styles';\r\n\r\nimport Divider from '@mui/material/Divider';\r\n\r\n\r\nimport { useTranslate  } from '../common/language';\r\n\r\nimport Typography from '@mui/material/Typography';\r\n\r\n\r\nimport RichTextInput from 'ra-input-rich-text';\r\n\r\n\r\nimport { TextFieldShow } from '../components/TextFieldShow';\r\n\r\nimport Grid from '@mui/material/Grid';\r\nimport Avatar from '@mui/material/Avatar';\r\nimport IconContentAdd from '@material-ui/icons/Add';\r\nimport IconCancel from '@material-ui/icons/Cancel';\r\nimport VolunteerActivismIcon from '@mui/icons-material/VolunteerActivism';\r\n\r\nimport Dialog from '@material-ui/core/Dialog';\r\nimport DialogTitle from '@material-ui/core/DialogTitle';\r\nimport DialogContent from '@material-ui/core/DialogContent';\r\nimport DialogActions from '@material-ui/core/DialogActions';\r\nimport Chip from '@material-ui/core/Chip';\r\n\r\nimport { ColorInput } from 'react-admin-color-input';\r\n\r\nimport { DocsList, DocsListShow } from './docs';\r\nimport { targets, modules, modulesOptions, choicesClassroomsType, choicesDonationsProjectsFacValidationStatus, donationsUrl  } from './../common/constants';\r\nimport { dateOnlyToCatalan, subscriptionModule, setActivePermissionData, structArrayToIdList, dateParser, toIsoString, LinearProgressWithLabel, RemainingTime, DateTimeField, DatagridNoResults } from './../common/utils';  \r\n\r\nimport { CityInput } from './../components/Inputs';\r\nimport { ExportButton } from './../components/ExportButton';\r\nimport { BackLink } from './../components/BackLink';\r\nimport { CreateDonationButton } from './../resources/donations_users';\r\n\r\nimport { RenderBoolean } from '../components/User';\r\n\r\nimport Box from '@material-ui/core/Box';\r\n\r\nimport { Link } from 'react-router-dom';\r\n\r\nimport { validateMaxLength, validateInteger, validateDoubleGreatOrEqualThan  } from './../components/Validator';\r\n\r\n\r\nexport const DonationsProjectsList = (props) => {\r\n  const translate = useTranslate();  \r\n  const history = useHistory();\r\n    \r\n  let basePath='/donations_projects'; \r\n  let resource = 'donations_projects';\r\n  \r\n  let current_path = history && history.location && history.location.pathname ? history.location.pathname : '';\r\n  let report = current_path.includes('/reports');\r\n  \r\n  const handleClickView = (friendly_url) => {        \r\n    const url = donationsUrl + '/' + friendly_url;\r\n    window.open(url, '_blank'); // Abre la URL en una nueva pestaña    \r\n  };\r\n  \r\n  const handleClickDonations = (id) => {  \r\n    if (report)\r\n        history.push('/reports/donations_users/' + id );    \r\n    else\r\n        history.push('/donations_users/' + id);    \r\n  };\r\n  \r\n  const handleClickPreview = (friendly_url, hash_preview) => {        \r\n    const url = donationsUrl + '/' + friendly_url + '?hash_preview=' + hash_preview;\r\n    window.open(url, '_blank'); \r\n  };\r\n        \r\n  return (\r\n    <ResourceContextProvider value={resource}>\r\n      <List \r\n        basePath={basePath}   \r\n        filter={{ associations_id : localStorage.getItem('associations_id'), report: report }}  \r\n        actions={<ListActions report={report}  />}    \r\n        bulkActionButtons={false}          \r\n        perPage={1000}   \r\n        pagination={false}\r\n        sort={{ field: 'id', order: 'ASC' }} \r\n        label=\"\"  \r\n        title=\"\"  \r\n        resource={resource}\r\n        filters={ <MyFilter report={report} /> }         \r\n        filterDefaultValues={ { only_current : false, q: \"\", only_pending: false }}\r\n      >        \r\n        <Datagrid\r\n            empty={<DatagridNoResults />} \r\n        >  \r\n          { report ? <TextField source=\"associations_name\" label={translate('donations_projects.associations_name')} sortable={false} />  : null }\r\n          <TextField source=\"name\" label={translate('donations_projects.name')} sortable={false} />            \r\n          <DateTimeField source=\"date_start\" label={translate('donations_projects.date_start')} sortable={false} />  \r\n          <DateTimeField source=\"date_finish\" label={translate('donations_projects.date_finish')} sortable={false} />  \r\n          <FunctionField label={translate('donations_projects.amount')} render={record => record.target_by_date ?\r\n            <NumberField source=\"amount\"  sortable={false} locales=\"es-ES\" options={{ style: 'currency', currency: 'EUR' }} />            \r\n            :\r\n            <span />          \r\n          } />\r\n          \r\n          <FunctionField render={record => <Chip onClick={handleClickDonations.bind(this, record.id )} color=\"secondary\" label={record.count_donations} /> } label={translate('donations_projects.count_donations')} sortable={false}  />                   \r\n          <NumberField source=\"sum_donations\" label={translate('donations_projects.sum_donations')} sortable={false} locales=\"es-ES\" options={{ style: 'currency', currency: 'EUR' }} />  \r\n          <FunctionField render={record => record.target_by_date ? <LinearProgressWithLabel value={record.sum_donations_percent} /> : null } label={translate('donations_projects.sum_donations_percent')} sortable={false}  />         \r\n          <FunctionField render={record => record.target_by_date ? <RemainingTime nSeconds={record.remaining_seconds} /> : null } label={translate('donations_projects.remaining_days')} sortable={false}  />           \r\n          { report || subscriptionModule(modules.DONATIONS,modulesOptions.DONATIONS_FAC ) ?\r\n          <FunctionField label={translate('donations_projects.fac_validation_status')} render={record => <RenderStatus fac_validation_status={record.fac_validation_status} record={record} /> } sortable={false}  />\r\n          : null }\r\n          <FunctionField render={record => (!report && !record.public_entity) || (report && record.fac_validation_status == 1) ? <PreviewIcon onClick={handleClickPreview.bind(this, record.friendly_url, record.hash_preview)} /> : null } label={translate('donations_projects.preview')} sortable={false}  />\r\n          <FunctionField render={record => record.public_entity ? <PublicIcon onClick={handleClickView.bind(this, record.friendly_url )} /> : null } label={translate('donations_projects.view')} sortable={false}  />\r\n          \r\n          { report ?\r\n          <NumberField source=\"priority\" label={translate('common.priority')} sortable={false} />\r\n          : null }\r\n          \r\n          { !report ? <EditButton /> : null }\r\n          \r\n          <FunctionField render={record => \r\n            !report && subscriptionModule(modules.DONATIONS,modulesOptions.DONATIONS_FAC ) && (record.fac_validation_status == 0 || record.fac_validation_status == 3) ? <ValidateRequestButton record={record} /> : \r\n            report ? <ValidateButton record={record} /> : null\r\n          } label={translate('donations_projects.fac_validation_actions')} sortable={false}  /> \r\n                  \r\n          { report ?\r\n          <FunctionField render={record => record.fac_validation_status == 2 ? <CreateDonationButton donations_projects_id={record.id} /> : null } label=\"\" sortable={false}  />           \r\n          : null }\r\n                  \r\n        </Datagrid>        \r\n      </List>\r\n    </ResourceContextProvider>\r\n  );\r\n};\r\n\r\nexport const DonationsPaymentsList = (props) => {\r\n  const translate = useTranslate();  \r\n  const history = useHistory();\r\n    \r\n  let basePath='/donations_projects/payments'; \r\n  let resource = 'donations_projects/payments';\r\n        \r\n  return (\r\n    <ResourceContextProvider value={resource}>\r\n      <List \r\n        basePath={basePath}   \r\n        filter={{ associations_id : localStorage.getItem('associations_id'), date_from: props.match.params.date_from, date_to: props.match.params.date_to  }}  \r\n        actions={<ListActionsPayments {...props} />}            \r\n        bulkActionButtons={false}          \r\n        perPage={10000}   \r\n        pagination={false}\r\n        sort={{ field: 'id', order: 'ASC' }} \r\n        label=\"\"  \r\n        title=\"\"  \r\n        resource={resource}\r\n        filters={ <MyFilterPayments /> }         \r\n        filterDefaultValues={ { q: \"\" }}\r\n      >        \r\n        <Datagrid\r\n            empty={<DatagridNoResults />}\r\n        >  \r\n          <TextField source=\"associations_name\" label={translate('donations_projects.associations_name')} sortable={false} />\r\n          <TextField source=\"name\" label={translate('donations_projects.name')} sortable={false} />        \r\n          <TextField source=\"ibans_iban\" label={translate('donations_projects.ibans_iban')} sortable={false} />         \r\n          <TextField source=\"count_donations\" label={translate('donations_projects.count_donations')} sortable={false} locales=\"es-ES\" options={{ style: 'currency', currency: 'EUR' }} />            \r\n          <NumberField source=\"sum_donations\" label={translate('donations_projects.sum_donations')} sortable={false} locales=\"es-ES\" options={{ style: 'currency', currency: 'EUR' }} />                      \r\n        </Datagrid>        \r\n      </List>\r\n    </ResourceContextProvider>\r\n  );\r\n};\r\n\r\n/*<Avatar><VolunteerActivismIcon/></Avatar>*/\r\n\r\nconst RenderStatus = (props) => {\r\n    const translate = useTranslate(); \r\n\r\n    if (props.fac_validation_status === 0) \r\n        return <Tooltip title={translate('donations_projects.fac_validation_status_0')}>\r\n            <Avatar sx={{ bgcolor: orange[500] , width: 30, height: 30 }} ><EditIcon /></Avatar>\r\n        </Tooltip>;\r\n    else if (props.fac_validation_status === 1) \r\n        return <Tooltip title={translate('donations_projects.fac_validation_status_1')}>\r\n                <Avatar sx={{ bgcolor: orange[500] , width: 30, height: 30 }} ><PendingActionsIcon /></Avatar>\r\n        </Tooltip>;\r\n    else if (props.fac_validation_status === 2)\r\n        return <Tooltip title={translate('donations_projects.fac_validation_status_2')}>\r\n            <Avatar sx={{ bgcolor: green[500] , width: 30, height: 30 }} ><DoneIcon /></Avatar>\r\n        </Tooltip>;\r\n    else if (props.fac_validation_status === 3)\r\n        return <Tooltip title={translate('donations_projects.fac_validation_status_3')}>\r\n            <Avatar sx={{ bgcolor: deepOrange[500] , width: 30, height: 30 }} ><CloseIcon /></Avatar>\r\n        </Tooltip>;        \r\n    else\r\n        return null;\r\n}\r\n\r\nconst MyFilter = (props) => {\r\n    const translate = useTranslate(); \r\n    return (\r\n    <Filter {...props}>         \r\n        <TextInput label={translate('common.search')} source=\"q\" alwaysOn validate={[validateMaxLength(50,translate('common.validation.maxLength'))]} resettable /> \r\n        <BooleanInput label={translate('donations_projects.filter_only_current')} source=\"only_current\" alwaysOn />\r\n        { props.report ? <BooleanInput label={translate('donations_projects.only_pending')} source=\"only_pending\" alwaysOn /> : null }\r\n    </Filter>\r\n);\r\n};\r\n\r\nconst MyFilterPayments = (props) => {\r\n    const translate = useTranslate(); \r\n    return (\r\n    <Filter {...props}>         \r\n        <TextInput label={translate('common.search')} source=\"q\" alwaysOn validate={[validateMaxLength(50,translate('common.validation.maxLength'))]} resettable />         \r\n    </Filter>\r\n);\r\n};\r\n\r\nexport const DonationsProjectsDetails = ({ id, record, resource, ...props }) => {\r\n  const translate = useTranslate(); \r\n        \r\n  return (\r\n    <div className=\"usersClassroomsExpand\">        \r\n      <Grid container spacing={2}>\r\n        <Grid item xs={12}>   \r\n          <TextFieldShow source={record.name} label={translate('donations_projects.name')} />\r\n        </Grid>      \r\n        <Grid item xs={3}>   \r\n          <TextFieldShow source={record.target_by_date} label={translate('donations_projects.target_by_date')} />\r\n        </Grid> \r\n        <Grid item xs={3}>   \r\n          <TextFieldShow source={dateOnlyToCatalan(record.date_start)} label={translate('donations_projects.date_start')} />\r\n        </Grid> \r\n        <Grid item xs={3}>   \r\n          <TextFieldShow source={dateOnlyToCatalan(record.date_finish)} label={translate('donations_projects.date_finish')} />\r\n        </Grid> \r\n        <Grid item xs={3}>   \r\n          <TextFieldShow source={record.minimum_amount} label={translate('donations_projects.minimum_amount')} />\r\n        </Grid> \r\n        <Grid item xs={3}>   \r\n          <TextFieldShow source={record.amount} label={translate('donations_projects.amount')} />\r\n        </Grid> \r\n        <Grid item xs={12}>   \r\n          <TextFieldShow source={record.description_short} label={translate('donations_projects.description_short')} />\r\n        </Grid> \r\n        <Grid item xs={12}>   \r\n          <TextFieldShow source={record.description} label={translate('donations_projects.description')} />\r\n        </Grid> \r\n        <Grid item xs={12}>   \r\n          <TextFieldShow source={record.video} label={translate('donations_projects.video')} />\r\n        </Grid>\r\n        <Grid item xs={3}>   \r\n          <TextFieldShow source={<RenderBoolean source={record.public_entity} />} label={translate('donations_projects.public_entity')} />\r\n        </Grid> \r\n        <Grid item xs={3}>   \r\n          <TextFieldShow source={<RenderBoolean source={record.public_fac} />} label={translate('donations_projects.public_fac')} />\r\n        </Grid> \r\n        <Grid item xs={3}>   \r\n          <TextFieldShow source={record.payment_systems_id} label={translate('donations_projects.payment_systems_id')} />\r\n        </Grid> \r\n        <Grid item xs={3}>   \r\n          <TextFieldShow source={record.ibans_id} label={translate('donations_projects.ibans_iban')} />\r\n        </Grid> \r\n        <Grid item xs={12}>   \r\n          <TextFieldShow source={record.legal_text_1} label={translate('donations_projects.legal_text_1')} />\r\n        </Grid> \r\n        <Grid item xs={12}>   \r\n          <TextFieldShow source={record.legal_text_2} label={translate('donations_projects.legal_text_2')} />\r\n        </Grid> \r\n        <Grid item xs={12}>   \r\n          <TextFieldShow source={record.confirmation_text_1} label={translate('donations_projects.confirmation_text_1')} />\r\n        </Grid> \r\n        <Grid item xs={12}>   \r\n          <TextFieldShow source={record.confirmation_text_2} label={translate('donations_projects.confirmation_text_2')} />\r\n        </Grid> \r\n        <Grid item xs={12}>   \r\n          <TextFieldShow source={record.confirmation_email_1} label={translate('donations_projects.confirmation_email_1')} />\r\n        </Grid> \r\n      </Grid>\r\n      \r\n    </div>\r\n  );\r\n};\r\n\r\nconst exporter = (items, translate, notify) => {\r\n    \r\n  const itemsForExport = items.map(item => {\r\n    var itemForExport = {\r\n        id: item.id,\r\n        name: item.name,\r\n        description_short: item.description_short,\r\n        description: item.description,\r\n        video: item.video,\r\n        date_start: dateOnlyToCatalan(item.date_start),\r\n        date_finish: dateOnlyToCatalan(item.date_finish),\r\n        minimum_amount: item.minimum_amount,\r\n        amount: item.amount,\r\n        public_entity: item.public_entity,\r\n        public_fac: item.public_fac,\r\n        payment_systems_id: item.payment_systems_id,\r\n        ibans_id: item.ibans_id,        \r\n        public_sum_donations: item.public_sum_donations\r\n    };\r\n    return itemForExport;\r\n  });\r\n  jsonExport(itemsForExport, {\r\n    headers: ['id','name'\r\n,'description_short'        \r\n,'description'\r\n,'video'\r\n,'date_start'\r\n,'date_finish'\r\n,'minimum_amount'\r\n,'amount'\r\n,'public_entity'\r\n,'public_fac'\r\n,'payment_systems_id'\r\n,'ibans_id'\r\n,'public_sum_donations'\r\n],\r\n    rename: [translate('common.id'),translate('donations_projects.name'),translate('donations_projects.description_short'), translate('donations_projects.description'),translate('donations_projects.video'),translate('donations_projects.date_start'),translate('donations_projects.date_finish'),translate('donations_projects.minimum_amount'),translate('donations_projects.amount'),translate('donations_projects.public_entity'),translate('donations_projects.public_fac'),translate('donations_projects.payment_systems_id'),translate('donations_projects.ibans_iban'),translate('donations_projects.public_sum_donations')],        \r\n        \r\n  }, (err, csv) => {\r\n    const csv_new = '\\uFEFF' + csv;\r\n    downloadCSV(csv_new, translate('donations_projects.exporter_file_name') ); \r\n    notify(translate('common.download_ok'),\"success\");\r\n  });\r\n};\r\n\r\n\r\nconst exporterPayments = (items, translate, notify) => {\r\n    \r\n  const itemsForExport = items.map(item => {\r\n    var itemForExport = {\r\n        associations_id: item.associations_id,\r\n        associations_name: item.associations_name,\r\n        id: item.id,        \r\n        name: item.name,        \r\n        ibans_iban: item.ibans_iban,\r\n        count_donations: item.count_donations,\r\n        sum_donations: item.sum_donations != null ? item.sum_donations.toFixed(2).replace('.', ',') : '',  \r\n    };\r\n    return itemForExport;\r\n  });\r\n  jsonExport(itemsForExport, {\r\n    headers: ['associations_id',\r\n        'associations_name',\r\n        'id',\r\n        'name',\r\n        'ibans_iban',\r\n        'count_donations',\r\n        'sum_donations',\r\n        ],\r\n    rename: [translate('donations_projects.associations_id'),translate('donations_projects.associations_name'),\r\n        translate('donations_projects.id'),translate('donations_projects.name'),translate('donations_projects.ibans_iban'),\r\n        translate('donations_projects.count_donations'),translate('donations_projects.sum_donations')],                \r\n  }, (err, csv) => {\r\n    const csv_new = '\\uFEFF' + csv;\r\n    downloadCSV(csv_new, translate('donations_payments.exporter_file_name') ); \r\n    notify(translate('common.download_ok'),\"success\");\r\n  });\r\n};\r\n\r\n\r\nconst ListActions = (props) => {\r\n    const translate = useTranslate(); \r\n        \r\n    let filterExport = { \r\n        associations_id: localStorage.getItem('associations_id'),    \r\n        report: props.report,\r\n        q: props.filterValues && props.filterValues.q ? props.filterValues.q : '',\r\n        only_pending: props.report && props.filterValues && props.filterValues.only_pending ? props.filterValues.only_pending : false\r\n    };\r\n    \r\n    const openUrlInNewWindow = () => {\r\n        \r\n        let url_association = localStorage.getItem('associations_id') == 234 ? '/fundacio-la-roda' : '/entitats/' + localStorage.getItem('associations_id');\r\n        \r\n        const url = !props.report \r\n            ? donationsUrl + url_association\r\n            : donationsUrl;\r\n        window.open(url, '_blank');\r\n    };\r\n\r\n    return (\r\n    <TopToolbar>     \r\n        { !props.report ? <MyCreateButton {...props} /> : null }   \r\n        <ShowButton \r\n            onClick={openUrlInNewWindow}            \r\n            label={translate('donations_projects.view_web')}\r\n            target=\"_blank\"\r\n        />\r\n        <ExportButton maxResults=\"1000000\" filterValues={filterExport} alwaysEnabled={false} exporter={exporter} sort={{ field: 'id', order: 'DESC' }} /> \r\n    </TopToolbar>\r\n    );\r\n};\r\n\r\n/*\r\n * component={Link}\r\n            to={{\r\n                pathname: !props.report ? donationsUrl + '/entitats/' + localStorage.getItem('associations_id') : donationsUrl\r\n            }} \r\n */\r\n\r\nconst ListActionsPayments = (props) => {\r\n    const translate = useTranslate(); \r\n        console.log(props);        \r\n        \r\n    let filterExportPayments = { \r\n        associations_id: localStorage.getItem('associations_id'),  \r\n        date_from: props.match.params.date_from,\r\n        date_to: props.match.params.date_to,\r\n        q: props.filterValues && props.filterValues.q ? props.filterValues.q : ''\r\n    };\r\n    \r\n    return (\r\n    <TopToolbar>     \r\n        <ExportButton maxResults=\"1000000\" filterValues={filterExportPayments} alwaysEnabled={false} exporter={exporterPayments} sort={{ field: 'id', order: 'DESC' }} /> \r\n    </TopToolbar>\r\n    );\r\n};\r\n\r\nexport const MyCreateButton = ({ users_id , ...props }) => {\r\n\r\n  const [showDialog, setShowDialog] = useState(false);\r\n  const [create, { loading }] = useCreate('donations_projects');\r\n  const notify = useNotify();\r\n  const refresh = useRefresh();    \r\n  const translate = useTranslate();  \r\n  const redirect = useRedirect();\r\n        \r\n  const handleClick = () => {\r\n    setShowDialog(true);\r\n  };\r\n\r\n  const handleCloseClick = () => {\r\n    setShowDialog(false);\r\n  };\r\n\r\n  const handleSubmit = async values => {\r\n    create(            \r\n      { payload: { data: values } },\r\n      {\r\n        onSuccess: ({ data }) => {                    \r\n          redirect('/donations_projects/' + data.id);\r\n        \r\n        },\r\n        onFailure: ( error ) => {\r\n          notify( error.message , 'error');\r\n        }\r\n      }\r\n    );\r\n  };\r\n    \r\n  return (\r\n    <>            \r\n      <Button onClick={handleClick} label={translate('donations_projects.create')}>\r\n        <IconContentAdd />                \r\n      </Button>\r\n\r\n      <Dialog\r\n        fullWidth\r\n        open={showDialog}\r\n        onClose={handleCloseClick}\r\n        aria-label={translate('donations_projects.create')}\r\n      >\r\n        <DialogTitle>{translate('donations_projects.create')}</DialogTitle>\r\n\r\n        <FormWithRedirect\r\n          save={handleSubmit}\r\n          initialValues={{ associations_id: localStorage.getItem('associations_id'), payment_systems_fac: subscriptionModule(modules.DONATIONS,modulesOptions.DONATIONS_FAC) ? true : false, payment_card: true }}\r\n          render={({\r\n            handleSubmitWithRedirect,\r\n            pristine,\r\n            saving\r\n          }) => (\r\n            <>\r\n              <DialogContent>\r\n                <Grid container spacing={1}>                                     \r\n                  <Grid item xs={12}>                                               \r\n                    <TextInput fullWidth source=\"name\" label={translate('common.name')} validate={[required(),validateMaxLength(255,translate('common.validation.maxLength'))]} />\r\n                  </Grid>                  \r\n                </Grid> \r\n              </DialogContent>\r\n              <DialogActions>\r\n                <Button label=\"ra.action.cancel\" onClick={handleCloseClick} disabled={loading} >\r\n                  <IconCancel />\r\n                </Button>\r\n                <SaveButton\r\n                  handleSubmitWithRedirect={\r\n                    handleSubmitWithRedirect\r\n                  }\r\n                  pristine={pristine}\r\n                  saving={saving}\r\n                  disabled={loading}\r\n                />\r\n              </DialogActions>\r\n            </>\r\n          )}\r\n        />\r\n      </Dialog>\r\n    </>\r\n  );\r\n};\r\n\r\nconst MyActions = ({ basePath, data, resource }) => {\r\n  \r\n  let backLink = '/donations_projects';\r\n  return <BackLink link={backLink} title={ data && data.name ? data.name : null } />;\r\n  \r\n};\r\n\r\n\r\nexport const DonationsProjectsEdit  = ({ id, ...props }) => {\r\n\r\n  const translate = useTranslate();        \r\n  const classes = useStyles();\r\n  const notify = useNotify();\r\n  const refresh = useRefresh();\r\n  const redirect = useRedirect();\r\n  const [formData, setFormData] = useState(props.record); // Estado local para almacenar los datos del formulario\r\n    \r\n    \r\n  const onSuccess = ({ data }) => {\r\n    notify(translate('common.notification.updated'));        \r\n    redirect('/donations_projects');        \r\n  };\r\n  \r\n  const onFailure = (error) => {\r\n    let errorMessage = 'An error occurred';\r\n    if (error instanceof HttpError) {\r\n        errorMessage = error.message;\r\n    }\r\n    notify(errorMessage, 'error');\r\n  };\r\n  \r\n  const dateParser = value => {      \r\n    if (value == null || value === '') return '';        \r\n    return toIsoString(new Date(value));\r\n  }\r\n        \r\n  return (\r\n\r\n    <Edit \r\n      title={<ElementTitle {...props}  />} \r\n      {...props} \r\n      id={id}\r\n      mutationMode=\"pessimistic\"\r\n      actions={<MyActions {...props} />}\r\n      onSuccess={onSuccess}  \r\n      onFailure={onFailure}\r\n    >\r\n        \r\n      <TabbedForm        \r\n        toolbar={<FormToolbar />}\r\n      >    \r\n        <FormTab\r\n          label={translate('classrooms.data')}\r\n          contentClassName={classes.tab}\r\n          path=\"\" \r\n        > \r\n          <FormDataConsumer>\r\n            {({ formData, ...rest }) => \r\n              <>                              \r\n                <br/>\r\n                <Grid container spacing={2}>\r\n                    <Grid item xs={8}>   \r\n                        <TextInput fullWidth source=\"name\" label={translate('donations_projects.name')} validate={[required(),validateMaxLength(255,translate('common.validation.maxLength'))]} />\r\n                    </Grid> \r\n                    <Grid item xs={4}>   \r\n                        <TextInput fullWidth source=\"city\" label={translate('donations_projects.city')} validate={[validateMaxLength(100,translate('common.validation.maxLength'))]} />\r\n                    </Grid> \r\n                    <Grid item xs={3}>  \r\n                        <BooleanInput fullWidth source=\"target_by_date\" label={translate('donations_projects.target_by_date')} disabled={false} />\r\n                    </Grid> \r\n                    { formData.target_by_date ?\r\n                    <>\r\n                    <Grid item xs={3}>   \r\n                        <DateTimeInput fullWidth source=\"date_start\" label={translate('donations_projects.date_start')} validate={[required()]} parse={dateParser} />\r\n                    </Grid> \r\n                    <Grid item xs={3}>   \r\n                        <DateTimeInput fullWidth source=\"date_finish\" label={translate('donations_projects.date_finish')} validate={[required()]} parse={dateParser} />\r\n                    </Grid>                     \r\n                    <Grid item xs={3}>   \r\n                        <NumberInput fullWidth source=\"amount\" label={translate('donations_projects.amount')}  />\r\n                    </Grid> \r\n                    </>\r\n                    : \r\n                    <Grid item xs={9}></Grid>\r\n                    }\r\n                    \r\n                    <Grid item xs={12}>   \r\n                        <TextInput fullWidth source=\"description_short\" label={translate('donations_projects.description_short')} validate={[validateMaxLength(255,translate('common.validation.maxLength'))]} />                    \r\n                    </Grid> \r\n                    <Grid item xs={12}>   \r\n                        <RichTextInput fullWidth source=\"description\" label={translate('donations_projects.description')} />                    \r\n                    </Grid> \r\n                    <Grid item xs={12}>   \r\n                        <TextInput fullWidth source=\"video\" label={translate('donations_projects.video')} validate={[validateMaxLength(255,translate('common.validation.maxLength'))]} />\r\n                    </Grid> \r\n                    \r\n                </Grid>    \r\n                                \r\n                <Typography variant=\"h6\" className=\"grey8 titleUserShow\">                        \r\n                    {translate('donations_projects.payment_systems')}\r\n                  </Typography>\r\n                  <Divider fullWidth className=\"\" />      \r\n                  <br />\r\n                    \r\n                <Grid container spacing={2}>\r\n                                                        \r\n                    { subscriptionModule(modules.DONATIONS,modulesOptions.DONATIONS_FAC ) ?\r\n                    <>\r\n                    <Grid item xs={3}>  \r\n                        <BooleanInput fullWidth source=\"payment_systems_fac\" label={translate('donations_projects.payment_systems_fac')} disabled={true} />\r\n                    </Grid> \r\n                    <Grid item xs={9}>   \r\n                        <ReferenceInput sort={{ field: 'id', order: 'ASC' }} label={translate('donations_projects.ibans_iban')} source=\"ibans_id\" reference=\"ibans\" filter={{ associations_id: localStorage.getItem('associations_id') }} validate={[required()]} >\r\n                            <SelectInput fullWidth optionText=\"name\" optionValue=\"id\" resettable />\r\n                        </ReferenceInput>                    \r\n                    </Grid> \r\n                    </>\r\n                    :\r\n                    <>\r\n                    <Grid item xs={3}>  \r\n                        <BooleanInput fullWidth source=\"payment_card\" label={translate('donations_projects.payment_card')} disabled={false} />\r\n                    </Grid> \r\n                    { formData.payment_card ?\r\n                    <Grid item xs={9}>   \r\n                        <ReferenceInput sort={{ field: 'id', order: 'ASC' }} label={translate('donations_projects.payment_systems_id')} source=\"payment_systems_id\" reference=\"payment_systems\" validate={[required()]} filter={{ associations_id: localStorage.getItem('associations_id'),include_payment_system_fac : true  }}>\r\n                            <SelectInput fullWidth optionText=\"name\" optionValue=\"id\" resettable />\r\n                        </ReferenceInput>\r\n                    </Grid> : null }\r\n                    </>\r\n                    }\r\n                \r\n                </Grid>    \r\n                <Grid container spacing={2}>\r\n                \r\n                    { subscriptionModule(modules.DONATIONS,modulesOptions.DONATIONS_OWN ) ?\r\n                    <>\r\n                    <Grid item xs={3}>  \r\n                        <BooleanInput fullWidth source=\"payment_transfer\" label={ translate('donations_projects.payment_transfer') } disabled={false } />\r\n                    </Grid> \r\n                    \r\n                    { formData.payment_transfer ?\r\n                    <Grid item xs={9}>   \r\n                        <ReferenceInput sort={{ field: 'id', order: 'ASC' }} label={translate('donations_projects.payment_transfer_ibans_id')} source=\"payment_transfer_ibans_id\" reference=\"ibans\" filter={{ associations_id: localStorage.getItem('associations_id') }} validate={[required()]} >\r\n                            <SelectInput fullWidth optionText=\"name\" optionValue=\"id\" resettable />\r\n                        </ReferenceInput>      \r\n                    </Grid> \r\n                    : null }\r\n                    \r\n                    </> : null }\r\n                \r\n                </Grid>\r\n                \r\n                { subscriptionModule(modules.DONATIONS,modulesOptions.DONATIONS_OWN ) ?\r\n                <Grid container spacing={2}>\r\n                    <Grid item xs={2}>   \r\n                        <NumberInput fullWidth source=\"minimum_amount\" label={translate('donations_projects.minimum_amount')} validate={[required(),validateDoubleGreatOrEqualThan(1,translate('common.validation.number'))]} disabled={ subscriptionModule(modules.DONATIONS,modulesOptions.DONATIONS_FAC ) ? true : false } />\r\n                    </Grid> \r\n                </Grid> : null }\r\n                \r\n                <Typography variant=\"h6\" className=\"grey8 titleUserShow\">                        \r\n                    {translate('donations_projects.contact_data')}\r\n                  </Typography>\r\n                  <Divider fullWidth className=\"\" />      \r\n                  <br />\r\n                    \r\n                <Grid container spacing={2}>                \r\n                    <Grid item xs={4}>  \r\n                        <TextInput fullWidth source=\"email\" label={translate('donations_projects.email')} validate={[validateMaxLength(100,translate('common.validation.maxLength'))]} />\r\n                    </Grid>\r\n                    <Grid item xs={2}>  \r\n                        <TextInput fullWidth source=\"phone\" label={translate('donations_projects.phone')} validate={[validateMaxLength(50,translate('common.validation.maxLength'))]} />\r\n                    </Grid>                \r\n                </Grid>\r\n                \r\n                <Typography variant=\"h6\" className=\"grey8 titleUserShow\">                        \r\n                  {translate('donations_projects.public')}\r\n                </Typography>\r\n                <Divider fullWidth className=\"\" />      \r\n                <br />\r\n                \r\n                <Grid container spacing={2}>\r\n                    <Grid item xs={2} className=\"friendly-url-field text-right\">       \r\n                        {donationsUrl}/\r\n                    </Grid>\r\n                    <Grid item xs={4}>                                               \r\n                        <TextInput fullWidth source=\"friendly_url\" label={translate('donations_projects.friendly_url')} validate={[required(),validateMaxLength(255,translate('common.validation.maxLength'))]} />\r\n                    </Grid>\r\n                </Grid>\r\n                \r\n                <Grid container spacing={2}>\r\n                    <Grid item xs={3}>   \r\n                        <BooleanInput fullWidth source=\"public_entity\" label={translate('donations_projects.public_entity')}  />\r\n                    </Grid>                     \r\n                    <Grid item xs={3}>   \r\n                        <BooleanInput fullWidth source=\"public_fac\" label={translate('donations_projects.public_fac')}  />\r\n                    </Grid> \r\n                    <Grid item xs={3}>   \r\n                        <BooleanInput fullWidth source=\"comments_actived\" label={translate('donations_projects.comments_actived')}  />\r\n                    </Grid> \r\n                    { !formData.target_by_date ?\r\n                    <Grid item xs={3}>   \r\n                        <BooleanInput fullWidth source=\"public_sum_donations\" label={translate('donations_projects.public_sum_donations')} disabled={false} />\r\n                    </Grid> : null }\r\n                </Grid>   \r\n                \r\n                \r\n              </>\r\n            }\r\n          </FormDataConsumer>\r\n\r\n        </FormTab> \r\n        \r\n        <FormTab\r\n            label={translate('donations_projects.images')}\r\n            contentClassName={classes.tab}\r\n            path=\"images\"                 \r\n        > \r\n                      \r\n            <br />\r\n            <AccordionSection className=\"accordion\" label={translate('donations_projects.images')} fullWidth defaultExpanded={true}>\r\n              <DocsList target={targets.DONATION_PROJECT_IMAGE} items_id={id} />\r\n            </AccordionSection>   \r\n\r\n        </FormTab>\r\n        \r\n    \r\n      </TabbedForm>\r\n    </Edit>\r\n  );\r\n};\r\n\r\nconst ElementTitle = ({ record, ...props }) => {    \r\n  const translate = useTranslate(); \r\n  return (<span>{translate('common.edit')} {record ? `\"${record.name}\"` : ''}</span>);\r\n};\r\n\r\nconst FormToolbar = ({ id , ...props }) => {\r\n    \r\n  let redirect = '/donations_projects';\r\n    \r\n    \r\n  return (\r\n    <Toolbar {...props} className=\"user_form_toolbar\" >\r\n      <SaveButton />\r\n      <DeleteButton redirect={redirect} mutationMode=\"pessimistic\" />\r\n    </Toolbar>\r\n  );\r\n};\r\n\r\nconst useStyles = makeStyles({\r\n  comment: {\r\n    maxWidth: '100%',\r\n    overflow: 'hidden',\r\n    textOverflow: 'ellipsis',\r\n    whiteSpace: 'nowrap',\r\n  },\r\n  tab: {\r\n    maxWidth: '100%',\r\n    display: 'block',\r\n  },\r\n});\r\n\r\n\r\n\r\nexport const ValidateButton = ({ ...props }) => {\r\n\r\n  const [showDialog, setShowDialog] = useState(false);\r\n  const [create, { loading }] = useCreate('donations_projects/' + localStorage.getItem('associations_id') + '/' + props.record.id + '/validate');\r\n  const notify = useNotify();\r\n  const refresh = useRefresh();    \r\n  const translate = useTranslate();  \r\n  const dataProvider = useDataProvider();\r\n  \r\n  const dateParser = value => {      \r\n    if (value == null || value === '') return '';        \r\n    return toIsoString(new Date(value));\r\n  }\r\n          \r\n  const handleClick = () => {        \r\n    setShowDialog(true);        \r\n  };\r\n\r\n  const handleCloseClick = () => {\r\n    setShowDialog(false);\r\n  };\r\n\r\n  const handleSubmit = async values => {\r\n    create(            \r\n      { payload: { data: values } },\r\n      {\r\n        onSuccess: ({ data }) => {\r\n          setShowDialog(false);\r\n          refresh();\r\n        },\r\n        onFailure: ( error ) => {\r\n          notify( error.message , 'error');\r\n        }\r\n      }\r\n    );\r\n  };\r\n    \r\n  return (\r\n    <>            \r\n      <Button onClick={handleClick} label={props.record.fac_validation_status == 1 ? translate('donations_projects.validate') : translate('donations_projects.edit')} className=\"\">\r\n        <DoneIcon />\r\n      </Button>\r\n\r\n      <Dialog\r\n        fullWidth\r\n        open={showDialog}\r\n        onClose={handleCloseClick}\r\n        aria-label={translate('donations_projects.edit')}\r\n      >\r\n        <DialogTitle>{translate('donations_projects.edit')}</DialogTitle>\r\n\r\n        <FormWithRedirect\r\n          save={handleSubmit}\r\n          initialValues={{ associations_id : localStorage.getItem('associations_id'), donations_projects_id : props.record.id , fac_validation_status: props.record.fac_validation_status, legal_text_3: props.record.legal_text_3, priority: props.record.priority, public_fac: props.record.public_fac, public_fac_date : props.record.public_fac_date }}\r\n          render={({\r\n            handleSubmitWithRedirect,\r\n            pristine,\r\n            saving\r\n          }) => (\r\n            <>\r\n              <DialogContent>\r\n                <FormDataConsumer>\r\n                {({ formData, ...rest }) => \r\n                <Grid container spacing={2}>\r\n                  <Grid item xs={6}> \r\n                    <SelectInput fullWidth label={translate('donations_projects.fac_validation_status')} source=\"fac_validation_status\" choices={choicesDonationsProjectsFacValidationStatus(translate)} validate={[required()]} />\r\n                  </Grid> \r\n                  <Grid item xs={6}>                     \r\n                  </Grid> \r\n                  { formData.fac_validation_status == 2 ?\r\n                  <Grid item xs={12}>     \r\n                    <TextInput fullWidth multiline source=\"legal_text_3\" label={translate('donations_projects.legal_text_3')} validate={[required()]} />   \r\n                  </Grid> : null }                  \r\n                  <Grid item xs={4}> \r\n                    <BooleanInput fullWidth label={translate('donations_projects.public_fac')} source=\"public_fac\" />\r\n                  </Grid> \r\n                  { formData.public_fac ?\r\n                  <>\r\n                  <Grid item xs={5}> \r\n                    <DateTimeInput fullWidth source=\"public_fac_date\" label={translate('donations_projects.public_fac_date')} parse={dateParser} />\r\n                  </Grid> \r\n                  <Grid item xs={3}> \r\n                    <NumberInput fullWidth label={translate('common.priority')} source=\"priority\" />\r\n                  </Grid>                  \r\n                  \r\n                  </>\r\n                  : null }\r\n                </Grid>\r\n                }\r\n                </FormDataConsumer>\r\n              </DialogContent>\r\n              <DialogActions>\r\n                <Button label=\"ra.action.cancel\" onClick={handleCloseClick} disabled={loading} >\r\n                  <IconCancel />\r\n                </Button>\r\n                <SaveButton\r\n                  handleSubmitWithRedirect={\r\n                    handleSubmitWithRedirect\r\n                  }\r\n                  pristine={pristine}\r\n                  saving={saving}\r\n                  disabled={loading}\r\n                />\r\n              </DialogActions>\r\n            </>\r\n          )}\r\n        />\r\n      </Dialog>\r\n    </>\r\n  );\r\n};\r\n\r\n\r\n\r\nexport const ValidateRequestButton = ({ ...props }) => {\r\n\r\n  const [showDialog, setShowDialog] = useState(false);\r\n  const [create, { loading }] = useCreate('donations_projects/' + localStorage.getItem('associations_id') + '/' + props.record.id + '/validate_request');\r\n  const notify = useNotify();\r\n  const refresh = useRefresh();    \r\n  const translate = useTranslate();  \r\n  const dataProvider = useDataProvider();\r\n          \r\n  const handleClick = () => {        \r\n    setShowDialog(true);        \r\n  };\r\n\r\n  const handleCloseClick = () => {\r\n    setShowDialog(false);\r\n  };\r\n\r\n  const handleSubmit = async values => {\r\n    create(            \r\n      { payload: { data: values } },\r\n      {\r\n        onSuccess: ({ data }) => {\r\n          setShowDialog(false);\r\n          refresh();\r\n        },\r\n        onFailure: ( error ) => {\r\n          notify( error.message , 'error');\r\n        }\r\n      }\r\n    );\r\n  };\r\n    \r\n  return (\r\n    <>            \r\n      <Button onClick={handleClick} label={translate('donations_projects.validate_request')} className=\"\">\r\n        <DoneIcon />\r\n      </Button>\r\n\r\n      <Dialog\r\n        fullWidth\r\n        open={showDialog}\r\n        onClose={handleCloseClick}\r\n        aria-label={translate('donations_projects.validate_request')}\r\n      >\r\n        <DialogTitle>{translate('donations_projects.validate_request')}</DialogTitle>\r\n\r\n        <FormWithRedirect\r\n          save={handleSubmit}\r\n          initialValues={{ associations_id : localStorage.getItem('associations_id'), donations_projects_id : props.record.id }}\r\n          render={({\r\n            handleSubmitWithRedirect,\r\n            pristine,\r\n            saving\r\n          }) => (\r\n            <>\r\n              <DialogContent>                             \r\n                <Grid container spacing={2}>\r\n                  <Grid item xs={12}> \r\n                    {translate('donations_projects.validate_request_desc')}\r\n                  </Grid>\r\n                </Grid>\r\n                <br/>\r\n              </DialogContent>\r\n              <DialogActions>\r\n                <Button label=\"ra.action.cancel\" onClick={handleCloseClick} disabled={loading} >\r\n                  <IconCancel />\r\n                </Button>\r\n                <SaveButton\r\n                  handleSubmitWithRedirect={\r\n                    handleSubmitWithRedirect\r\n                  }\r\n                  pristine={pristine}\r\n                  saving={saving}\r\n                  disabled={loading}\r\n                  label={translate('donations_projects.validate_request_button')}\r\n                />\r\n              </DialogActions>\r\n            </>\r\n          )}\r\n        />\r\n      </Dialog>\r\n    </>\r\n  );\r\n};","import React, { useState } from 'react';\r\n\r\nimport {\r\n  List, \r\n  Datagrid,\r\n  TextField,\r\n  DeleteButton,\r\n  Edit,\r\n  SelectInput,\r\n  TextInput,\r\n  Button ,\r\n  Create,\r\n  SimpleForm,\r\n  CreateButton ,\r\n  TopToolbar,\r\n  FormTab,\r\n  TabbedForm,\r\n  ReferenceManyField,\r\n  FormDataConsumer,\r\n  useListContext, required,NumberInput,BooleanInput,SelectField,  FunctionField, ResourceContextProvider, useCreate, useRefresh, FormWithRedirect, Toolbar, SaveButton,\r\n  useNotify,\r\n  useRedirect,\r\n  DateField  , \r\n  Filter, \r\n  downloadCSV,\r\n  DateInput,\r\n  SimpleFormIterator,\r\n  ArrayInput,BooleanField,\r\n  NumberField,\r\n  ReferenceField,\r\n  useDataProvider,\r\n  RadioButtonGroupInput,\r\n  useUpdate,\r\n  DateTimeInput\r\n} from 'react-admin';\r\n\r\nimport { useEffect } from 'react';\r\n\r\nimport jsonExport from 'jsonexport/dist';\r\n\r\nimport {useHistory} from 'react-router-dom';\r\nimport { useForm, useFormState } from \"react-final-form\";\r\n\r\nimport { AccordionSection  } from '@react-admin/ra-form-layout';\r\n\r\n\r\nimport { makeStyles } from '@material-ui/core/styles';\r\n\r\nimport Divider from '@mui/material/Divider';\r\n\r\n\r\nimport { useTranslate  } from '../common/language';\r\n\r\nimport Typography from '@mui/material/Typography';\r\n\r\nimport EditIcon from '@mui/icons-material/Edit';\r\nimport DoneIcon from '@mui/icons-material/Done';\r\nimport ContentCopyIcon from '@mui/icons-material/ContentCopy';\r\nimport PendingActionsIcon from '@mui/icons-material/PendingActions';\r\nimport CloseIcon from '@mui/icons-material/Close';\r\n\r\n\r\nimport { green, orange, deepOrange, red } from '@mui/material/colors';\r\n\r\nimport RichTextInput from 'ra-input-rich-text';\r\n\r\n\r\nimport { TextFieldShow } from '../components/TextFieldShow';\r\n\r\nimport Grid from '@mui/material/Grid';\r\nimport Avatar from '@mui/material/Avatar';\r\nimport IconContentAdd from '@material-ui/icons/Add';\r\nimport IconCancel from '@material-ui/icons/Cancel';\r\nimport GavelIcon from '@material-ui/icons/Gavel';\r\nimport Save from '@material-ui/icons/Save';\r\n\r\nimport Dialog from '@material-ui/core/Dialog';\r\nimport DialogTitle from '@material-ui/core/DialogTitle';\r\nimport DialogContent from '@material-ui/core/DialogContent';\r\nimport DialogActions from '@material-ui/core/DialogActions';\r\nimport Chip from '@material-ui/core/Chip';\r\n\r\nimport { ColorInput } from 'react-admin-color-input';\r\n\r\nimport { DocsList, DocsListShow } from './docs';\r\nimport { targets, modules, choicesClassroomsType, targetsEmails,emailsStatus, apiOrigin, apiDefaultLanguage, apiUrl, choicesTypeUser, choicesDonationsUsersPaymentMethod, choicesDonationsUsersPublicPaymentMethod, choicesDonationsUsersStatus } from './../common/constants';\r\nimport { dateOnlyToCatalan, subscriptionModule, setActivePermissionData, structArrayToIdList, DateTimeField, dateAndTimeToCatalan, DatagridNoResults } from './../common/utils';  \r\n\r\nimport { CityInput } from './../components/Inputs';\r\nimport { ExportButton } from './../components/ExportButton';\r\nimport { BackLink } from './../components/BackLink';\r\n\r\nimport { SendEmailIconStatus } from './../components/Emails';\r\nimport DownloadIcon from '@material-ui/icons/GetApp';\r\n\r\nimport { RenderBoolean, UserFullNameTxt } from '../components/User';\r\nimport Tooltip from '@mui/material/Tooltip';\r\n\r\nimport Box from '@material-ui/core/Box';\r\n\r\nimport { Link } from 'react-router-dom';\r\n\r\nimport { validateMaxLength, validateInteger, validateEmail, validateDoubleGreatZero, validateDouble } from './../components/Validator';\r\n\r\n\r\nexport const DonationsCertificatesList = (props) => {\r\n  const translate = useTranslate();  \r\n  const dataProvider = useDataProvider();\r\n    \r\n    \r\n  let basePath='/donations_certificates'; \r\n  let resource = 'donations_certificates';\r\n  let strRedirect = 'donations_certificates';\r\n    \r\n  let year = 0;\r\n  if (props.match.params.year) year = props.match.params.year;\r\n      \r\n  return (\r\n    <>       \r\n    <ResourceContextProvider value={resource}>\r\n      <List \r\n        basePath={basePath}   \r\n        filter={{ associations_id: localStorage.getItem('associations_id'), year: year }}  \r\n        actions={ <ListActions year={year} />}    \r\n        bulkActionButtons={false}          \r\n        perPage={25}           \r\n        sort={{ field: 'firstName', order: 'ASC' }} \r\n        label=\"\"  \r\n        title=\"\"  \r\n        resource={resource}\r\n        filters={ <MyFilter /> } \r\n        filterDefaultValues={ { q: \"\", only_certificate_not_sent: false }}\r\n        \r\n      >        \r\n        <Datagrid   \r\n          empty={ <DatagridNoResults /> } >            \r\n          <TextField source=\"nif\" label={translate('donations_users.nif')} sortable={false} />      \r\n          <FunctionField label={translate('users.first_name')} render={record => <UserFullNameTxt record={record} /> } sortable={false} />          \r\n          <TextField source=\"email\" label={translate('donations_users.email')} sortable={false} />                  \r\n          <NumberField source=\"total\" label={translate('donations_users.amount')} sortable={false} locales=\"es-ES\" options={{ style: 'currency', currency: 'EUR' }} /> \r\n                              \r\n          <FunctionField label={translate('donations_users.certificate')} render={record => \r\n            <>\r\n            <DownloadCertificate donations_certificates_id={record.id} />             \r\n            <SendEmailIconStatus record={record} target={targetsEmails.DONATIONS_USERS_CERTIFICATE}  />                 \r\n            </>\r\n          } sortable={false}  />\r\n                    \r\n        </Datagrid>        \r\n      </List>\r\n    </ResourceContextProvider>\r\n    </>\r\n  );\r\n};\r\n\r\nexport const DownloadCertificate = ({ record, donations_certificates_id, ...props}) => {\r\n    \r\n  const translate = useTranslate(); \r\n  const notify = useNotify();\r\n    \r\n    const handleAction = async () => {\r\n        \r\n        try {\r\n        let headers = new Headers({\r\n            'Authorization': localStorage.getItem('auth'),\r\n            'Accept-Language': apiDefaultLanguage,\r\n            'Role': localStorage.getItem('active_permission')\r\n        });\r\n\r\n        const result = await fetch(`${apiUrl}/donations_certificates/${donations_certificates_id}/download`, {\r\n            headers: headers\r\n        });\r\n\r\n        if (!result.ok) {\r\n            throw new Error(translate('donations_users.pdf_certificate_ko'));\r\n        }\r\n\r\n        const blob = await result.blob();\r\n        const href = window.URL.createObjectURL(blob);\r\n\r\n        const contentDisposition = result.headers.get('Content-Disposition');\r\n        \r\n        const fileName = contentDisposition\r\n            ? contentDisposition.split('filename=')[1].split(';')[0].trim()\r\n            : 'certificat.pdf'; // Nom per defecte\r\n\r\n        const tempLink = document.createElement('a');\r\n        tempLink.href = href;\r\n        tempLink.setAttribute('download', fileName); \r\n        document.body.appendChild(tempLink);\r\n        tempLink.click();\r\n\r\n        document.body.removeChild(tempLink);\r\n        window.URL.revokeObjectURL(href);\r\n        \r\n        notify( translate('donations_users.pdf_certificate_ko') , 'success');\r\n        \r\n    } catch (error) {\r\n        \r\n        notify( translate('donations_users.pdf_certificate_ko') , 'error');\r\n    }\r\n          \r\n  };\r\n  \r\n  return (\r\n    <Tooltip title={translate('donations_users.pdf_download')}> \r\n      <DownloadIcon onClick={handleAction} />\r\n    </Tooltip>\r\n  );\r\n\r\n};\r\n\r\n\r\nconst MyFilter = (props) => {\r\n    const translate = useTranslate(); \r\n    const history = useHistory();\r\n        \r\n    return (\r\n    <Filter {...props}>         \r\n        <TextInput label={translate('common.search')} source=\"q\" alwaysOn validate={[validateMaxLength(50,translate('common.validation.maxLength'))]} resettable /> \r\n        <BooleanInput label={translate('donations_users.only_certificate_not_sent')} source=\"only_certificate_not_sent\" alwaysOn />\r\n    </Filter>\r\n);\r\n};\r\n\r\nconst exporter = (items, translate, notify) => {\r\n    \r\n  const itemsForExport = items.map(item => {\r\n    var itemForExport = {\r\n        id: item.id,\r\n        year: item.year,            \r\n        nif: item.nif,        \r\n        first_name: item.first_name,\r\n        last_name_1: item.last_name_1,\r\n        last_name_2: item.last_name_2,\r\n        email: item.email,\r\n        amount: item.total != null ? item.total.toFixed(2).replace('.', ',') : '',   \r\n        status: item.status == emailsStatus.SENT_TO_SMTP_OK ? 'Sí' : 'No',\r\n        date_time: item.date_time\r\n    };\r\n    return itemForExport;\r\n  });\r\n  jsonExport(itemsForExport, {\r\n    headers: ['id',\r\n        'year',\r\n        'nif',        \r\n        'first_name',\r\n        'last_name_1'\r\n        ,'last_name_2'\r\n        ,'email'\r\n        ,'amount'\r\n        ,'status'\r\n        ,'date_time'\r\n    ],\r\n    rename: [translate('common.id'),\r\n        translate('common.year'), \r\n        translate('users.nif'), \r\n        translate('users.first_name'),\r\n        translate('users.last_name_1'),\r\n        translate('users.last_name_2'),\r\n        translate('users.email'),\r\n        translate('donations_users.amount'),\r\n        translate('donations_certificates.status'),\r\n        translate('donations_certificates.date_time')\r\n    ],        \r\n        \r\n  }, (err, csv) => {\r\n    const csv_new = '\\uFEFF' + csv;\r\n    downloadCSV(csv_new, translate('donations_certificates.exporter_file_name') ); \r\n    notify(translate('common.download_ok'),\"success\");\r\n  });\r\n};\r\n\r\n\r\nconst ListActions = (props) => {\r\n    const translate = useTranslate(); \r\n        \r\n    let filterExport = { \r\n        associations_id: localStorage.getItem('associations_id'),    \r\n        year: props.year,\r\n        q: props.filterValues && props.filterValues.q ? props.filterValues.q : '',\r\n        only_certificate_not_sent: props.filterValues && props.filterValues.only_certificate_not_sent ? props.filterValues.only_certificate_not_sent : false,\r\n    };\r\n    \r\n    return (\r\n    <TopToolbar>  \r\n        <ExportButton maxResults=\"1000000\" filterValues={filterExport} alwaysEnabled={false} exporter={exporter} sort={{ field: 'firstName', order: 'ASC' }} /> \r\n    </TopToolbar>\r\n    );\r\n};\r\n\r\n\r\n\r\n\r\n\r\n","// in src/Dashboard.js\r\nimport React, { useState } from 'react';\r\n\r\n\r\n\r\n\r\nimport Grid from '@mui/material/Grid';\r\nimport Box from '@material-ui/core/Box';\r\nimport Typography from '@mui/material/Typography';\r\n\r\n\r\nimport IconCancel from '@material-ui/icons/Cancel';\r\n\r\n//import {List as ListMaterial} from '@mui/material/List';\r\nimport ListMaterial from '@mui/material/List';\r\nimport ListItem from '@mui/material/ListItem';\r\nimport ListItemButton from '@mui/material/ListItemButton';\r\nimport ListItemIcon from '@mui/material/ListItemIcon';\r\nimport ListItemText from '@mui/material/ListItemText';\r\n\r\nimport {\r\n  List, \r\n  Datagrid,\r\n  TextField,\r\n  Button, \r\n  TopToolbar,DateField ,DateInput,NumberInput,  FunctionField, ResourceContextProvider, useRefresh, FormWithRedirect, SaveButton, useDataProvider, NumberField,\r\n  ReferenceArrayInput,\r\n  SelectArrayInput,\r\n  useNotify, \r\n  downloadCSV,\r\n  BooleanInput\r\n} from 'react-admin';\r\n\r\nimport jsonExport from 'jsonexport/dist';\r\n\r\nimport { ExportButton } from './../components/ExportButton';\r\n\r\nimport { datesLastMonth, dateOnlyToCatalan, DatagridNoResults, subscriptionModule, setActivePermissionData  } from './../common/utils';  \r\nimport { modules, modulesOptions  } from './../common/constants';\r\n\r\n\r\nimport { parse } from 'query-string';\r\n\r\n\r\n\r\n\r\nimport { useTranslate  } from '../common/language';\r\n\r\n\r\n\r\nimport Dialog from '@mui/material/Dialog';\r\nimport DialogTitle from '@mui/material/DialogTitle';\r\nimport DialogContent from '@mui/material/DialogContent';\r\nimport DialogActions from '@mui/material/DialogActions';\r\nimport ListAltIcon from '@mui/icons-material/ListAlt';\r\n\r\n\r\n\r\n\r\n\r\nimport {useHistory} from 'react-router-dom';\r\n\r\n\r\nimport { UserFullNameTxt } from '../components/User';\r\n\r\nimport { DonationsProjectsList, DonationsPaymentsList } from '../resources/donations_projects';\r\nimport { DonationsUsersList } from '../resources/donations_users';\r\nimport { DonationsCertificatesList } from '../resources/donations_certificates';\r\n\r\n\r\nexport const Reports = props => {\r\n    \r\n  const [openAnnuaryDialog, setOpenAnnuaryDialog] = useState(false);\r\n  const [openResponsabilitiesDialog, setOpenResponsabilitiesDialog] = useState(false);\r\n  const [openDonationsPaymentsDialog, setOpenDonationsPaymentsDialog] = useState(false);\r\n  const [openDonationsProjectsDialog, setOpenDonationsProjectsDialog] = useState(false);\r\n  const [openDonationsCertificatesDialog, setOpenDonationsCertificatesDialog] = useState(false);\r\n    \r\n  const translate = useTranslate(); \r\n  const dataProvider = useDataProvider();\r\n  const history = useHistory();\r\n    \r\n  const year = new Date().getFullYear() - 1;\r\n  var today = new Date();\r\n  \r\n  const datesLastMonthStc = datesLastMonth();\r\n        \r\n  const handleClick = () => {\r\n    setOpenAnnuaryDialog(true);\r\n  };\r\n\r\n  const handleCloseClick = () => {\r\n    setOpenAnnuaryDialog(false);\r\n  };\r\n    \r\n  const handleSubmit = async values => {      \r\n    let last_years = values.last_years ? 1 : 0;\r\n    history.push('/reports/annuary?year=' + values.year + '&last_years=' + last_years );\r\n  };\r\n    \r\n  const handleResponsabilitiesClick = () => {\r\n    setOpenResponsabilitiesDialog(true);\r\n  };\r\n\r\n  const handleCloseResponsabilitiesClick = () => {\r\n    setOpenResponsabilitiesDialog(false);\r\n  };\r\n    \r\n  const handleResponsabilitiesSubmit = async values => {                \r\n    var resp = '';\r\n    if (values.responsabilities) \r\n      resp = values.responsabilities.join(',');\r\n    history.push('/reports/responsabilities?date_query=' + values.date_query + '&responsabilities=' + resp );\r\n  };\r\n  \r\n  const handleDonationsProjectsClick = async values => {     \r\n    history.push('/reports/donations_projects' );\r\n  };\r\n  \r\n  const handleDonationsTransferValidationsClick = async values => {     \r\n    history.push('/reports/donations_transfer_validations' );\r\n  };\r\n  \r\n  const handleDonationsCertificatesClick = () => {\r\n    setOpenDonationsCertificatesDialog(true);\r\n  };\r\n  const handleCloseDonationsCertificatesClick = () => {\r\n    setOpenDonationsCertificatesDialog(false);\r\n  };\r\n  const handleSubmitDonationsCertificates = async values => {     \r\n    history.push('/reports/donations_certificates/' + values.year );\r\n  };\r\n  \r\n  \r\n  const handleDonationsPaymentsClick = () => {\r\n    setOpenDonationsPaymentsDialog(true);\r\n  };\r\n  const handleCloseDonationsPaymentsClick = () => {\r\n    setOpenDonationsPaymentsDialog(false);\r\n  };\r\n  const handleSubmitDonationsPayments = async values => {     \r\n    history.push('/reports/donations_payments/' + values.date_from + '/' + values.date_to );\r\n  };\r\n  \r\n        \r\n  return (\r\n    <>\r\n      { (localStorage.getItem('permissions_groups') === 'ADMIN' || localStorage.getItem('permissions_groups') === 'ADMIN_CONTACTS' || localStorage.getItem('permissions_groups') === 'ADMIN_READER' ) ? ( \r\n      \r\n      <>\r\n      <Box sx={{ width: '100%', maxWidth: 500, bgcolor: 'background.paper' }} className=\"settings_box\" >\r\n      \r\n        <ListMaterial>\r\n        \r\n          { subscriptionModule(modules.FEDERATION) ? \r\n          <ListItem>\r\n            <ListItemButton onClick={handleClick} >\r\n              <ListItemIcon>\r\n                <ListAltIcon />\r\n              </ListItemIcon>\r\n              <ListItemText primary={translate('reports.annuary')} secondary={translate('reports.annuary_desc')} />\r\n            </ListItemButton>\r\n          </ListItem>\r\n          : null }\r\n          \r\n          { subscriptionModule(modules.FEDERATION) ? \r\n          <ListItem>\r\n            <ListItemButton onClick={handleResponsabilitiesClick} >\r\n              <ListItemIcon>\r\n                <ListAltIcon />\r\n              </ListItemIcon>\r\n              <ListItemText primary={translate('reports.responsabilities')} secondary={translate('reports.responsabilities_desc')}/>\r\n            </ListItemButton>\r\n          </ListItem>\r\n          : null }\r\n          \r\n          { subscriptionModule(modules.FEDERATION) ? \r\n          <ListItem>\r\n            <ListItemButton onClick={handleDonationsProjectsClick} >\r\n              <ListItemIcon>\r\n                <ListAltIcon />\r\n              </ListItemIcon>\r\n              <ListItemText primary={translate('donations_projects.reports')} secondary={translate('donations_projects.reports_desc')}/>\r\n            </ListItemButton>\r\n          </ListItem>\r\n          : null }\r\n          \r\n          { subscriptionModule(modules.FEDERATION) || subscriptionModule(modules.DONATIONS,modulesOptions.DONATIONS_OWN) ? \r\n          <ListItem>\r\n            <ListItemButton onClick={handleDonationsTransferValidationsClick} >\r\n              <ListItemIcon>\r\n                <ListAltIcon />\r\n              </ListItemIcon>\r\n              <ListItemText primary={translate('donations_projects.reports_transfer_validations')} secondary={translate('donations_projects.reports_transfer_validations_desc')}/>\r\n            </ListItemButton>\r\n          </ListItem>\r\n          : null }\r\n          \r\n          { subscriptionModule(modules.FEDERATION) ? \r\n          <ListItem>\r\n            <ListItemButton onClick={handleDonationsPaymentsClick} >\r\n              <ListItemIcon>\r\n                <ListAltIcon />\r\n              </ListItemIcon>\r\n              <ListItemText primary={translate('donations_projects.reports_payments')} secondary={translate('donations_projects.reports_payments_desc')}/>\r\n            </ListItemButton>\r\n          </ListItem>\r\n          : null }\r\n          \r\n          { subscriptionModule(modules.FEDERATION) || subscriptionModule(modules.DONATIONS,modules.DONATIONS_OWN) || subscriptionModule(modules.REMITTANCES) ? \r\n          <ListItem>\r\n            <ListItemButton onClick={handleDonationsCertificatesClick} >\r\n              <ListItemIcon>\r\n                <ListAltIcon />\r\n              </ListItemIcon>\r\n              <ListItemText primary={translate('donations_projects.reports_certificates')} secondary={translate('donations_projects.reports_certificates_desc')}/>\r\n            </ListItemButton>\r\n          </ListItem>\r\n          : null }\r\n          \r\n        </ListMaterial>\r\n      </Box>\r\n    \r\n      <Dialog        \r\n        open={openAnnuaryDialog}\r\n        onClose={handleCloseClick}\r\n        aria-label={translate('reports.annuary')}\r\n      >\r\n        <DialogTitle>{translate('reports.title')}</DialogTitle>\r\n\r\n        <FormWithRedirect\r\n          save={handleSubmit}\r\n          initialValues={{ year: year, last_years: true }}\r\n          render={({\r\n            handleSubmitWithRedirect,\r\n            pristine,\r\n            saving\r\n          }) => (\r\n            <>\r\n              <DialogContent>\r\n                <br />\r\n                {translate('reports.annuary')}\r\n                <br /><br />\r\n                <NumberInput label={translate('common.year')} source=\"year\" step={1} />     \r\n                <br /><br />\r\n                <BooleanInput label={translate('reports.annuary_last_years')} source=\"last_years\" />     \r\n              </DialogContent>\r\n              <DialogActions>\r\n                <Button label=\"ra.action.cancel\" onClick={handleCloseClick} >\r\n                  <IconCancel />\r\n                </Button>\r\n                <SaveButton\r\n                  handleSubmitWithRedirect={\r\n                    handleSubmitWithRedirect\r\n                  }\r\n                  pristine={pristine}\r\n                  saving={saving}\r\n                  disabled={false}\r\n                  label={translate('reports.generate')}\r\n                  icon={<ListAltIcon />}\r\n                />\r\n              </DialogActions>\r\n            </>\r\n          )}\r\n        />\r\n      </Dialog>\r\n    \r\n      <Dialog            \r\n        fullWidth\r\n        open={openResponsabilitiesDialog}\r\n        onClose={handleCloseResponsabilitiesClick}\r\n        aria-label={translate('reports.responsabilities')}\r\n      >\r\n        <DialogTitle>{translate('reports.title')}</DialogTitle>\r\n\r\n        <FormWithRedirect\r\n          save={handleResponsabilitiesSubmit}\r\n          initialValues={{ date_query: today }}\r\n          render={({\r\n            handleSubmitWithRedirect,\r\n            pristine,\r\n            saving\r\n          }) => (\r\n            <>\r\n              <DialogContent>\r\n                <br />\r\n                {translate('reports.responsabilities')}\r\n                <br /><br />\r\n                <Grid container spacing={2}>                            \r\n                  <Grid item xs={6}> \r\n                    <ReferenceArrayInput \r\n                      reference=\"responsabilities\" \r\n                      source=\"responsabilities\"\r\n                      sort={{ field: 'priority', order: 'ASC' }} \r\n                    >\r\n                      <SelectArrayInput fullWidth source=\"responsabilities\" label={translate('reports.responsabilities_responsability')} optionText=\"name\" />\r\n                    </ReferenceArrayInput>\r\n                  </Grid>\r\n                  <Grid item xs={6}> \r\n                    <DateInput fullWidth label={translate('reports.responsabilities_date')} source=\"date_query\" />  \r\n                  </Grid> \r\n                </Grid>\r\n              </DialogContent>\r\n              <DialogActions>\r\n                <Button label=\"ra.action.cancel\" onClick={handleCloseResponsabilitiesClick} >\r\n                  <IconCancel />\r\n                </Button>\r\n                <SaveButton\r\n                  handleSubmitWithRedirect={\r\n                    handleSubmitWithRedirect\r\n                  }\r\n                  pristine={pristine}\r\n                  saving={saving}\r\n                  disabled={false}\r\n                  label={translate('reports.generate')}\r\n                  icon={<ListAltIcon />}\r\n                />\r\n              </DialogActions>\r\n            </>\r\n          )}\r\n        />\r\n      </Dialog>\r\n      \r\n      <Dialog        \r\n        open={openDonationsPaymentsDialog}\r\n        onClose={handleCloseDonationsCertificatesClick}\r\n        aria-label={translate('donations_payments.title')}\r\n      >\r\n        <DialogTitle>{translate('donations_payments.title')}</DialogTitle>\r\n\r\n        <FormWithRedirect\r\n          save={handleSubmitDonationsPayments}\r\n          initialValues={{ date_from: datesLastMonthStc.firstDayLastMonth, date_to: datesLastMonthStc.lastDayLastMonth }}\r\n          render={({\r\n            handleSubmitWithRedirect,\r\n            pristine,\r\n            saving\r\n          }) => (\r\n            <>\r\n              <DialogContent>    \r\n                <Grid container spacing={2}>                            \r\n                  <Grid item xs={6}>                   \r\n                    <DateInput fullWidth label={translate('donations_payments.date_from')} source=\"date_from\" /> \r\n                  </Grid>\r\n                  <Grid item xs={6}> \r\n                    <DateInput fullWidth label={translate('donations_payments.date_to')} source=\"date_to\" />    \r\n                  </Grid> \r\n                </Grid>\r\n              </DialogContent>\r\n              <DialogActions>\r\n                <Button label=\"ra.action.cancel\" onClick={handleCloseDonationsPaymentsClick} >\r\n                  <IconCancel />\r\n                </Button>\r\n                <SaveButton\r\n                  handleSubmitWithRedirect={\r\n                    handleSubmitWithRedirect\r\n                  }\r\n                  pristine={pristine}\r\n                  saving={saving}\r\n                  disabled={false}\r\n                  label={translate('donations_payments.generate')}\r\n                  icon={<ListAltIcon />}\r\n                />\r\n              </DialogActions>\r\n            </>\r\n          )}\r\n        />\r\n      </Dialog>\r\n      \r\n      <Dialog        \r\n        open={openDonationsCertificatesDialog}\r\n        onClose={handleCloseDonationsCertificatesClick}\r\n        aria-label={translate('donations_certificates.title')}\r\n      >\r\n        <DialogTitle>{translate('donations_certificates.title')}</DialogTitle>\r\n\r\n        <FormWithRedirect\r\n          save={handleSubmitDonationsCertificates}\r\n          initialValues={{ year: year }}\r\n          render={({\r\n            handleSubmitWithRedirect,\r\n            pristine,\r\n            saving\r\n          }) => (\r\n            <>\r\n              <DialogContent>                \r\n                <br /><br />\r\n                <NumberInput label={translate('common.year')} source=\"year\" step={1} />        \r\n              </DialogContent>\r\n              <DialogActions>\r\n                <Button label=\"ra.action.cancel\" onClick={handleCloseDonationsCertificatesClick} >\r\n                  <IconCancel />\r\n                </Button>\r\n                <SaveButton\r\n                  handleSubmitWithRedirect={\r\n                    handleSubmitWithRedirect\r\n                  }\r\n                  pristine={pristine}\r\n                  saving={saving}\r\n                  disabled={false}\r\n                  label={translate('donations_certificates.generate')}\r\n                  icon={<ListAltIcon />}\r\n                />\r\n              </DialogActions>\r\n            </>\r\n          )}\r\n        />\r\n      </Dialog>\r\n      \r\n      </>\r\n      ) : null }\r\n    \r\n    </>   \r\n    \r\n  );\r\n    \r\n};\r\n\r\nexport const ReportsAnnuary = props => {\r\n    \r\n  const translate = useTranslate();  \r\n  const [info, setInfo] = useState();\r\n  const [classrooms, setClassrooms] = useState();\r\n  const [loading, setLoading] = useState(true);\r\n  const [error, setError] = useState();\r\n  const [errorApi, setErrorApi] = useState();\r\n  const refresh = useRefresh(); \r\n  const notify = useNotify();\r\n  const [formSent, setFormSent] = useState();\r\n        \r\n  const [open, setOpen] = React.useState(false);\r\n    \r\n  const { year: year_string, last_years: last_years_string } = parse(props.location.search);\r\n  const year = year_string ? parseInt(year_string, 10) : '';    \r\n  const last_years = last_years_string ? parseInt(last_years_string, 10) : '';   \r\n            \r\n  return (        \r\n    <>\r\n      <Typography variant=\"h5\" className=\"grey8 mt-20 mb-20\">\r\n        {translate('reports.annuary')} {year}              \r\n      </Typography>\r\n      <ResourceContextProvider value=\"reports/annuary\">\r\n        <List              \r\n          basePath=\"/reports/annuary\" \r\n          filter={{ associations_id: localStorage.getItem('associations_id'), year: year, last_years: last_years }}\r\n          actions={<AnnuaryActions year={year} last_years={last_years} />} \r\n          empty={null}   \r\n          label=\"\"  \r\n          title=\"\"  \r\n          bulkActionButtons={false} \r\n          pagination={false}\r\n          perPage={10000}\r\n        >\r\n          <Datagrid>                    \r\n            <TextField source=\"id\" label={translate('common.id')} sortable={false} />   \r\n            <TextField source=\"group\" label={translate('reports.annuary_item_group')} sortable={false} />   \r\n            <TextField source=\"calc\" label={translate('reports.annuary_item_calc')} sortable={false} />   \r\n            <TextField source=\"name\" label={translate('reports.annuary_item_name')} sortable={false} />     \r\n            <NumberField source=\"value\" label={translate('reports.annuary_item_value')} sortable={false} options={{ maximumFractionDigits: 2 }} />     \r\n            <NumberField source=\"percent\" label={translate('reports.annuary_item_percent')} sortable={false} options={{ maximumFractionDigits: 2 }} />   \r\n            <NumberField source=\"avg\" label={translate('reports.annuary_item_avg')} sortable={false} options={{ maximumFractionDigits: 2 }} />   \r\n          </Datagrid>                            \r\n        </List>\r\n      </ResourceContextProvider>\r\n    </>\r\n        \r\n  );\r\n};\r\n\r\nconst AnnuaryActions = (props) => {\r\n    \r\n  const translate = useTranslate();\r\n  const dataProvider = useDataProvider();    \r\n  const notify = useNotify();\r\n    \r\n  let filterExport = {\r\n    associations_id : localStorage.getItem('associations_id'), \r\n    year: props.year,\r\n    last_years: props.last_years\r\n  };\r\n                \r\n  return (\r\n    <TopToolbar>        \r\n      <ExportButton maxResults=\"100000\" filterValues={filterExport} alwaysEnabled={true} exporter={annuaryExporter} sort={{ field: 'id', order: 'ASC' }} /> \r\n    </TopToolbar>\r\n  );\r\n};\r\n\r\nconst annuaryExporter = (items, translate, notify) => {\r\n    \r\n  const annuaryItemsForExport = items.map(annuaryItem => {\r\n    var annuaryItemForExport = {\r\n      id : annuaryItem.id,\r\n      group : annuaryItem.group, \r\n      calc : annuaryItem.calc, \r\n      name : annuaryItem.name, \r\n      value : annuaryItem.value, \r\n      percent: annuaryItem.percent,\r\n      avg: annuaryItem.avg,\r\n    };\r\n    return annuaryItemForExport;\r\n  });\r\n  jsonExport(annuaryItemsForExport, {\r\n    headers: ['id', 'group', 'calc','name', 'value', 'percent','avg'],\r\n    rename: [translate('reports.annuary_item_id'), translate('reports.annuary_item_group'), translate('reports.annuary_item_calc'), translate('reports.annuary_item_name'), translate('reports.annuary_item_value'), translate('reports.annuary_item_percent'), translate('reports.annuary_item_avg')],                \r\n  }, (err, csv) => {\r\n    const csv_new = '\\uFEFF' + csv;\r\n    downloadCSV(csv_new, translate('reports.annuary_exporter_file_name') ); \r\n    notify(translate('common.download_ok'),\"success\");\r\n  });\r\n    \r\n};\r\n\r\n\r\n\r\nexport const ReportsResponsabilities = props => {\r\n    \r\n  const translate = useTranslate();  \r\n  const [info, setInfo] = useState();\r\n  const [classrooms, setClassrooms] = useState();\r\n  const [loading, setLoading] = useState(true);\r\n  const [error, setError] = useState();\r\n  const [errorApi, setErrorApi] = useState();\r\n  const refresh = useRefresh(); \r\n  const notify = useNotify();\r\n  const [formSent, setFormSent] = useState();\r\n        \r\n  const [open, setOpen] = React.useState(false);\r\n    \r\n  const { date_query: date_query_string, responsabilities: responsabilities_string } = parse(props.location.search);\r\n  const date_query = date_query_string ? date_query_string : new Date().toLocaleDateString('en-CA');\r\n    \r\n  const responsabilities = responsabilities_string;\r\n    \r\n  return (        \r\n    <>\r\n      <Typography variant=\"h5\" className=\"grey8 mt-20 mb-20\">\r\n        {translate('reports.responsabilities')}             \r\n      </Typography>\r\n      <ResourceContextProvider value=\"reports/responsabilities\">\r\n        <List              \r\n          basePath=\"/reports/responsabilities\" \r\n          filter={{ associations_id: localStorage.getItem('associations_id'), date_query: date_query, responsabilities: responsabilities }}\r\n          actions={<ResponsabilitiesActions date_query={date_query} responsabilities={responsabilities} />} \r\n          label=\"\"  \r\n          title=\"\"  \r\n          bulkActionButtons={false}             \r\n          perPage={25}     \r\n          empty={<DatagridNoResults />}\r\n        >\r\n          <Datagrid  >                    \r\n            <FunctionField label={translate('users.first_name')} render={record => <UserFullNameTxt record={record} /> } sortable={false} />\r\n            <TextField source=\"email\" label={translate('common.email')} sortable={false} /> \r\n            <TextField source=\"email_secondary\" label={translate('users.email_secondary')} sortable={false} /> \r\n            <TextField source=\"responsability_name\" label={translate('reports.responsabilities_responsability')} sortable={false} />                         \r\n            <TextField source=\"entity_name\" label={translate('reports.responsabilities_list_entity_name')} sortable={false} />   \r\n            <TextField source=\"entity_city\" label={translate('reports.responsabilities_list_entity_city')} sortable={false} /> \r\n            <DateField source=\"date_join\" label={translate('users_groups.date_join')} sortable={false} />\r\n            <DateField source=\"date_left\" label={translate('users_groups.date_left')} sortable={false} />   \r\n          </Datagrid>                            \r\n        </List>\r\n      </ResourceContextProvider>\r\n    </>\r\n        \r\n  );\r\n};\r\n\r\n\r\nconst ResponsabilitiesActions = (props) => {\r\n    \r\n  const translate = useTranslate();\r\n  const dataProvider = useDataProvider();    \r\n  const notify = useNotify();\r\n    \r\n  let filterExport = {\r\n    associations_id : localStorage.getItem('associations_id'), \r\n    date_query: props.date_query,\r\n    responsabilities: props.responsabilities\r\n  };\r\n                \r\n  return (\r\n    <TopToolbar>        \r\n      <ExportButton maxResults=\"100000\" filterValues={filterExport} alwaysEnabled={true} exporter={responsabilitiesExporter} sort={{ field: 'id', order: 'ASC' }} /> \r\n    </TopToolbar>\r\n  );\r\n};\r\n                    \r\nconst responsabilitiesExporter = (items, translate, notify) => {\r\n    \r\n  const responsabilitiesItemsForExport = items.map(responsabilityItem => {\r\n    var responsabilityItemForExport = {\r\n      first_name : responsabilityItem.first_name,\r\n      last_name_1 : responsabilityItem.last_name_1,\r\n      last_name_2 : responsabilityItem.last_name_2,\r\n      email : responsabilityItem.email,\r\n      email_secondary : responsabilityItem.email_secondary,\r\n      responsability_name : responsabilityItem.responsability_name,\r\n      entity_name : responsabilityItem.entity_name,\r\n      entity_city : responsabilityItem.entity_city,\r\n      date_join: responsabilityItem.date_join ? responsabilityItem.date_join.substr(0,10) : '' ,\r\n      date_left: responsabilityItem.date_left ? responsabilityItem.date_left.substr(0,10) : '' ,\r\n    };\r\n    return responsabilityItemForExport;\r\n  });\r\n  jsonExport(responsabilitiesItemsForExport, {\r\n    headers: ['first_name', 'last_name_1', 'last_name_2','email', 'email_secondary','responsability_name', 'entity_name','entity_city','date_join','date_left'],\r\n    rename: [translate('users.first_name'), translate('users.last_name_1'), translate('users.last_name_2'), translate('users.email'), translate('users.email_secondary'), translate('reports.responsabilities_responsability'), translate('reports.responsabilities_list_entity_name'), translate('reports.responsabilities_list_entity_city'),translate('users_groups.date_join'), translate('users_groups.date_left')],                \r\n  }, (err, csv) => {\r\n    const csv_new = '\\uFEFF' + csv;\r\n    downloadCSV(csv_new, translate('reports.responsabilities_exporter_file_name') ); \r\n    notify(translate('common.download_ok'),\"success\");\r\n  });\r\n    \r\n};\r\n\r\n\r\n\r\n\r\nexport const ReportsDonationsProjects = props => {\r\n    \r\n  const translate = useTranslate();  \r\n  const [info, setInfo] = useState();\r\n  const [classrooms, setClassrooms] = useState();\r\n  const [loading, setLoading] = useState(true);\r\n  const [error, setError] = useState();\r\n  const [errorApi, setErrorApi] = useState();\r\n  const refresh = useRefresh(); \r\n  const notify = useNotify();\r\n  const [formSent, setFormSent] = useState();\r\n        \r\n  const [open, setOpen] = React.useState(false);\r\n     \r\n  return (        \r\n    <>\r\n      <Typography variant=\"h5\" className=\"grey8 mt-20 mb-20\">\r\n        {translate('donations_projects.reports_title')  }             \r\n      </Typography>\r\n      \r\n      <DonationsProjectsList {...props} />\r\n    </>\r\n        \r\n  );\r\n};\r\n\r\nexport const ReportsDonationsPayments = props => {\r\n    \r\n  const translate = useTranslate();  \r\n  const [info, setInfo] = useState();\r\n  const [classrooms, setClassrooms] = useState();\r\n  const [loading, setLoading] = useState(true);\r\n  const [error, setError] = useState();\r\n  const [errorApi, setErrorApi] = useState();\r\n  const refresh = useRefresh(); \r\n  const notify = useNotify();\r\n  const [formSent, setFormSent] = useState();\r\n        \r\n  const [open, setOpen] = React.useState(false);\r\n          \r\n  console.log(props);\r\n          \r\n  return (        \r\n    <>\r\n      <Typography variant=\"h5\" className=\"grey8 mt-20 mb-20\">\r\n        { translate('donations_payments.reports_title').replace('%date_from%',dateOnlyToCatalan(props.match.params.date_from)).replace('%date_to%',dateOnlyToCatalan(props.match.params.date_to))  }          \r\n      </Typography>\r\n      \r\n      <DonationsPaymentsList {...props} />\r\n    </>\r\n        \r\n  );\r\n};\r\n\r\nexport const ReportsDonationsCertificates = props => {\r\n    \r\n  const translate = useTranslate();    \r\n  const year = props.match.params.year;\r\n        \r\n  return (        \r\n    <>\r\n      <Typography variant=\"h5\" className=\"grey8 mt-20 mb-20\">\r\n        {translate('donations_certificates.title') + ' ' + year}             \r\n      </Typography>\r\n      \r\n      <DonationsCertificatesList {...props} />\r\n    </>\r\n        \r\n  );\r\n};\r\n\r\n\r\nexport const ReportsDonationsTransferValidations = props => {\r\n    \r\n  const translate = useTranslate();  \r\n          \r\n  return (        \r\n    <>\r\n      <Typography variant=\"h5\" className=\"grey8 mt-20 mb-20\">\r\n        {translate('donations_projects.reports_transfer_validations')}             \r\n      </Typography>\r\n      \r\n      <DonationsUsersList {...props} />\r\n    </>\r\n        \r\n  );\r\n};\r\n","import React from 'react';\r\nimport { makeStyles } from '@material-ui/core/styles';\r\nimport Pagination from '@mui/material/Pagination';\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n  paginationContainer: {\r\n    display: 'flex',\r\n    justifyContent: 'center',\r\n    alignItems: 'center',\r\n    marginTop: theme.spacing(4),\r\n  },\r\n}));\r\n\r\nconst Paginador = ({ page, perPage, total, onPageChange }) => {\r\n    \r\n  const classes = useStyles();\r\n  const totalPages = Math.ceil(total / perPage);\r\n  \r\n  const handlePageChangeNew = (event, value) => {\r\n    onPageChange(value);\r\n  };\r\n\r\n  return (    \r\n    <div className={classes.paginationContainer}>\r\n      <Pagination className=\"my-pagination\" count={totalPages} page={page} hidePrevButton={page === 1} hideNextButton={page === totalPages || totalPages === 0} onChange={handlePageChangeNew} size=\"large\" />\r\n    </div>\r\n  );\r\n};\r\n\r\nexport default Paginador;\r\n","// in src/Dashboard.js\r\nimport React, { useState, useEffect } from 'react';\r\n\r\n\r\n\r\n\r\nimport Grid from '@mui/material/Grid';\r\nimport Box from '@material-ui/core/Box';\r\nimport Typography from '@mui/material/Typography';\r\n\r\n\r\n\r\nimport Carousel from 'react-material-ui-carousel';\r\n\r\nimport TextField from '@mui/material/TextField';\r\n\r\nimport Paginador from './Paginador';\r\n\r\nimport { IconButton } from '@material-ui/core';\r\n\r\nimport { DateInput, useRefresh, useDataProvider, Loading,\r\n  useNotify\r\n\r\n    \r\n} from 'react-admin';\r\n\r\n\r\n\r\nimport { parse } from 'query-string';\r\n\r\n\r\nimport Card from '@mui/material/Card';\r\nimport CardActions from '@mui/material/CardActions';\r\nimport CardContent from '@mui/material/CardContent';\r\nimport Button from '@mui/material/Button';\r\nimport Select from '@mui/material/Select';\r\nimport MenuItem from '@mui/material/MenuItem';\r\nimport { ArrowBack } from '@material-ui/icons';\r\n\r\n\r\n\r\nimport { useTranslate  } from '../common/language';\r\nimport MyLoading from '../components/MyLoading';\r\n\r\n\r\nimport {  ImageViewer } from '../resources/docs';\r\n\r\nimport { dateEventToCatalan, timeEventToCatalan } from '../common/utils';\r\n\r\n\r\nimport PlaceIcon from '@mui/icons-material/Place';\r\nimport CalendarTodayIcon from '@mui/icons-material/CalendarToday';\r\nimport AccessTimeIcon from '@mui/icons-material/AccessTime';\r\nimport CorporateFareIcon from '@mui/icons-material/CorporateFare';\r\n\r\n\r\n\r\n\r\n\r\nimport { Form } from 'react-final-form';\r\nimport { useHistory, useLocation } from 'react-router-dom';\r\n\r\nimport Chip from '@material-ui/core/Chip';\r\n\r\nexport const PublicEventsList = props => {\r\n    \r\n  const translate = useTranslate();  \r\n  const dataProvider = useDataProvider();\r\n    \r\n  let history = useHistory();\r\n  const location = useLocation();\r\n    \r\n  const searchParams = new URLSearchParams(location.search);    \r\n  const { associations_id: associations_id_string } = parse(props.location.search);    \r\n  const [page, setPage] = useState(searchParams.get('page') ? parseInt(searchParams.get('page')) : 1);\r\n  const [search, setSearch] = useState(searchParams.get('search') ? searchParams.get('search') : '');    \r\n  const [organizer, setOrganizer] = useState(searchParams.get('organizer') ? searchParams.get('organizer') : 0);    \r\n  const [activity, setActivity] = useState(searchParams.get('activity') ? searchParams.get('activity') : 0);    \r\n  const [province, setProvince] = useState(searchParams.get('province') ? searchParams.get('province') : 0);    \r\n  const [region, setRegion] = useState(searchParams.get('region') ? searchParams.get('region') : 0);    \r\n  const [city, setCity] = useState(searchParams.get('city') ? searchParams.get('city') : 0);    \r\n  const [dateStartAfter, setDateStartAfter] = useState(searchParams.get('dateStartAfter') ? searchParams.get('dateStartAfter') : new Date().toISOString().slice(0, 10));\r\n  const [dateStartBefore, setDateStartBefore] = useState(searchParams.get('dateStartBefore') ? searchParams.get('dateStartBefore') : null );\r\n  const [info, setInfo] = useState();\r\n  const [events, setEvents] = useState();\r\n  const [loading, setLoading] = useState(true);\r\n  const [error, setError] = useState(false);  \r\n  const [activities, setActivities] = useState();\r\n  const [organizers, setOrganizers] = useState();\r\n  const [provinces, setProvinces] = useState();\r\n  const [regions, setRegions] = useState();\r\n  const [cities, setCities] = useState();\r\n        \r\n  let events_fac = false;\r\n  let associations_id = 0;\r\n  let url = 'events/public';\r\n  if ( associations_id_string && associations_id_string === 'fac')\r\n  {\r\n    url = 'events/public/fac';\r\n    events_fac = true;\r\n  }\r\n  else\r\n  {\r\n    associations_id = associations_id_string ? parseInt(associations_id_string, 10) : 0;\r\n  }\r\n        \r\n  const updateUrl = (field,value) => {\r\n    const searchParams = new URLSearchParams(location.search);\r\n    searchParams.set(field, value);\r\n    if (field !== 'page') searchParams.set('page', 1);\r\n    const newSearch = searchParams.toString();\r\n    history.push({\r\n      pathname: location.pathname,\r\n      search: newSearch\r\n    });\r\n  };\r\n\r\n  const onPageChange = (newPage) => {\r\n    setPage(newPage);\r\n    updateUrl('page',newPage);\r\n    window.scrollTo(0, 0);        \r\n  };\r\n    \r\n  const handleSubmit = (values) => {\r\n    \r\n  };\r\n        \r\n  var today = new Date().toISOString().slice(0, 10);\r\n    \r\n  const perPage = 6;\r\n    \r\n  useEffect(() => {\r\n        \r\n    dataProvider.getList(url, {\r\n      pagination: { page: page, perPage: perPage },\r\n      sort: { field: 'priority', order: 'ASC' },\r\n      filter: { associations_id: associations_id, \r\n        organizers_id: organizer, \r\n        search: search, \r\n        activities_id: activity, \r\n        start_gte : dateStartAfter != null && dateStartAfter.length > 0 ? dateStartAfter + 'T00:00:00' : '', \r\n        start_lte : dateStartBefore != null && dateStartBefore.length > 0? dateStartBefore + 'T23:59:59' : '',\r\n        provinces_id: province,\r\n        regions_id: region,\r\n        cities_id: city,\r\n      } \r\n    } )\r\n      .then(response => {\r\n        setEvents(response.data);\r\n        setInfo(response);\r\n        setLoading(false);\r\n        setError(false);\r\n      })\r\n      .catch(error => {        \r\n        console.log(error);\r\n        setLoading(false);  \r\n        setError(true);\r\n      });\r\n        \r\n    if (!activities)\r\n    {\r\n      dataProvider.getList('activities', {\r\n        pagination: { page: 1, perPage: 1000 },\r\n        sort: { field: 'priority', order: 'ASC' },\r\n        filter: { } } )\r\n        .then(response => {                \r\n          setActivities(response.data);                \r\n        })\r\n        .catch(error => {   \r\n        });\r\n    }\r\n        \r\n    if (!organizers)\r\n    {\r\n      dataProvider.getList('organizers/public', {\r\n        pagination: { page: 1, perPage: 1000 },\r\n        sort: { field: 'name', order: 'ASC' },\r\n        filter: { } } )\r\n        .then(response => {                \r\n          setOrganizers(response.data);                \r\n        })\r\n        .catch(error => {   \r\n        });\r\n    }\r\n                \r\n    if (!provinces)\r\n    {\r\n      dataProvider.getList('provinces', {\r\n        pagination: { page: 1, perPage: 1000 },\r\n        sort: { field: 'priority', order: 'ASC' },\r\n        filter: { } } )\r\n        .then(response => {                \r\n          setProvinces(response.data);                \r\n        })\r\n        .catch(error => {   \r\n        });\r\n    }\r\n                            \r\n  }, [ page, search, activity, dateStartAfter, dateStartBefore, organizer, province, region, city ]);\r\n    \r\n  useEffect(() => {\r\n        \r\n    setPage(1);  updateUrl('province',province);\r\n        \r\n    dataProvider.getList('regions', {\r\n      pagination: { page: 1, perPage: 1000 },\r\n      sort: { field: 'name', order: 'ASC' },\r\n      filter: { provinces_id: province } } )\r\n      .then(response => {                \r\n        setRegions(response.data);            \r\n        setRegion(0);\r\n                        \r\n        dataProvider.getList('cities', {\r\n          pagination: { page: 1, perPage: 10000 },\r\n          sort: { field: 'name', order: 'ASC' },\r\n          filter: { regions_id: region, provinces_id: province } } )\r\n          .then(response => {                \r\n            setCities(response.data); \r\n            setCity(0);\r\n          })\r\n          .catch(error => {   \r\n          });\r\n      })\r\n      .catch(error => {   \r\n      });\r\n        \r\n  }, [ province ]);\r\n    \r\n  useEffect(() => {\r\n        \r\n    dataProvider.getList('cities', {\r\n      pagination: { page: 1, perPage: 10000 },\r\n      sort: { field: 'name', order: 'ASC' },\r\n      filter: { regions_id: region, provinces_id: province } } )\r\n      .then(response => {                \r\n        setCities(response.data);   \r\n        setCity(0);\r\n    \r\n        setPage(1);  \r\n        updateUrl('region',region);\r\n            \r\n      })\r\n      .catch(error => {   \r\n      });\r\n    \r\n        \r\n  }, [ region ]);\r\n    \r\n  useEffect(() => {        \r\n    setPage(1);  updateUrl('city',city);\r\n  }, [ city ]);\r\n    \r\n  if (loading) return <><br/><br/><br/><br/><MyLoading /></>;\r\n  if (error) return (<center><br /><br/>{translate('public_events.association_not_found')}</center>);\r\n        \r\n  if (!events || !activities || !organizers || !provinces || !regions || !cities) return null;\r\n                \r\n  return (\r\n    <Box sx={{ width: '95%', bgcolor: 'background.paper', padding: '1%' }} className=\"add_member_box\" >\r\n      <Grid container spacing={1}>\r\n        <Grid item xs={12}>  \r\n        </Grid>\r\n      </Grid>   \r\n            \r\n      <Form initialValues={ {dateStartAfter: dateStartAfter, dateStartBefore: dateStartBefore}} onSubmit={handleSubmit} >\r\n        {({ handleSubmit }) => (\r\n          <form onSubmit={handleSubmit}>\r\n            <Grid container spacing={1} className=\"public-events-filter\">\r\n              <Grid item xs={12} md={2}>  \r\n                <TextField value={search} source=\"search\" className=\"public-events-filter-mt\" fullWidth id=\"standard-basic\" label={translate('public_events.search')} variant=\"standard\" placeholder=\"\" onChange={(event) => { setSearch(event.target.value); setPage(1); updateUrl('search',event.target.value); }}/>  \r\n              </Grid>                                      \r\n              <Grid item xs={6} md={2}>  \r\n                <DateInput\r\n                  source=\"dateStartAfter\"\r\n                  label={translate('public_events.filter_date_after')}\r\n                  value={dateStartAfter}\r\n                  onChange={(event) => { setDateStartAfter(event.target.value); setPage(1);  updateUrl('dateStartAfter',event.target.value); } }     \r\n                  fullWidth\r\n                  variant=\"standard\"\r\n                />\r\n              </Grid>\r\n              <Grid item xs={6} md={2}>  \r\n                <DateInput\r\n                  source=\"dateStartBefore\"\r\n                  label={translate('public_events.filter_date_before')}\r\n                  value={dateStartBefore}\r\n                  onChange={(event) => { setDateStartBefore(event.target.value); setPage(1);  updateUrl('dateStartBefore',event.target.value); } }   \r\n                  fullWidth\r\n                  variant=\"standard\"\r\n                />\r\n              </Grid>\r\n              <Grid item xs={12} md={3}>  \r\n                <Select\r\n                  labelId=\"demo-simple-select-standard-label\"\r\n                  id=\"demo-simple-select-standard\"\r\n                  value={activity}\r\n                  onChange={(event) => { setActivity(event.target.value); setPage(1);  updateUrl('activity',event.target.value); }}\r\n                  label={translate('public_events.filter_activity')} \r\n                  fullWidth\r\n                >\r\n                  <MenuItem value=\"0\">{translate('public_events.filter_activity_all')} </MenuItem>\r\n                  {activities.map((item) => (  \r\n                    <MenuItem value={item.id}>{item.name}</MenuItem>\r\n                  ))}                    \r\n                </Select>\r\n              </Grid>  \r\n              { events_fac ? \r\n                <Grid item xs={12} sm={3}>\r\n                  <Select\r\n                    labelId=\"demo-simple-select-standard-label\"\r\n                    id=\"demo-simple-select-standard\"\r\n                    value={organizer}\r\n                    onChange={(event) => { setOrganizer(event.target.value); setPage(1);  updateUrl('organizer',event.target.value); }}\r\n                    label={translate('public_events.filter_organizer')}   \r\n                    fullWidth\r\n                  >\r\n                    <MenuItem value=\"0\">{translate('public_events.filter_organizer_all')} </MenuItem>\r\n                    {organizers.map((item) => (  \r\n                      <MenuItem value={item.id}>{item.name}</MenuItem>\r\n                    ))}                    \r\n                  </Select>\r\n                </Grid> : null }\r\n                        \r\n              { events_fac ? \r\n                <Grid item xs={12} md={2}>  \r\n                  <Select\r\n                    labelId=\"demo-simple-select-standard-label\"\r\n                    id=\"demo-simple-select-standard\"\r\n                    value={province}\r\n                    onChange={(event) => { setProvince(event.target.value); }}\r\n                    label={translate('public_events.filter_province')} \r\n                    fullWidth\r\n                  >\r\n                    <MenuItem value=\"0\">{translate('public_events.filter_province_all')} </MenuItem>\r\n                    {provinces.map((item) => (  \r\n                      <MenuItem value={item.id}>{item.name}</MenuItem>\r\n                    ))}                    \r\n                  </Select>\r\n                </Grid> : null }\r\n                        \r\n              { events_fac ? \r\n                <Grid item xs={12} md={3}>  \r\n                  <Select\r\n                    labelId=\"demo-simple-select-standard-label\"\r\n                    id=\"demo-simple-select-standard\"\r\n                    value={region}\r\n                    onChange={(event) => { setRegion(event.target.value); }}\r\n                    label={translate('public_events.filter_region')} \r\n                    fullWidth\r\n                  >\r\n                    <MenuItem value=\"0\">{translate('public_events.filter_region_all')} </MenuItem>\r\n                    {regions.map((item) => (  \r\n                      <MenuItem value={item.id}>{item.name}</MenuItem>\r\n                    ))}                    \r\n                  </Select>\r\n                </Grid> : null }\r\n                        \r\n              { events_fac && (region > 0 || province > 0) ? \r\n                <Grid item xs={12} md={3}>  \r\n                            \r\n                  <Select\r\n                    labelId=\"demo-simple-select-standard-label\"\r\n                    id=\"demo-simple-select-standard\"\r\n                    value={city}\r\n                    onChange={(event) => { setCity(event.target.value); }}\r\n                    label={translate('public_events.filter_city')} \r\n                    fullWidth\r\n                  >\r\n                    <MenuItem value=\"0\">{translate('public_events.filter_city_all')} </MenuItem>\r\n                    {cities.map((item) => (  \r\n                      <MenuItem value={item.id}>{item.name}</MenuItem>\r\n                    ))}                    \r\n                  </Select>\r\n                            \r\n                </Grid> : null }\r\n                        \r\n            </Grid> \r\n          </form>\r\n        )}\r\n      </Form>\r\n                 \r\n      <Paginador page={page} perPage={perPage} onPageChange={onPageChange} total={info.total} />\r\n      <br /><br/>  \r\n            \r\n      <Grid container spacing={2}>\r\n        {events.map((item) => {  \r\n                        \r\n          let address = '';\r\n          address += item.classrooms_name != null ? item.classrooms_name : '';\r\n          address += item.events_address != null && item.events_address.length > 0 ? (address.length > 0 ? ', ' : '') + item.events_address : '';\r\n          address += item.events_cities_name != null && item.events_cities_name.length > 0 ? (address.length > 0 ? ', ' : '') + item.events_cities_name : ''; \r\n    \r\n          return (\r\n            <Grid key={item.id} item xs={12} sm={6} lg={4} textAlign=\"left\" className=\"classrooms_list_item_container\">  \r\n              <Card>                            \r\n                            \r\n                { item.images.replace('{','').replace('}','').split(',')[0] !== 'NULL' ?\r\n                  <ImageViewer docs_id={item.images.replace('{','').replace('}','').split(',')[0]} is_public={true} title={item.title} is_div={true} className=\"public-events-img\" />\r\n                  : \r\n                  null\r\n                }\r\n                            \r\n                <CardContent>\r\n                            \r\n                  <Chip label={item.activities_name} variant=\"outlined\" className=\"bg-orange bc-orange upper mb-10 color-white text-align-left\" />                                \r\n                  <Box display=\"flex\" alignItems=\"center\" className=\"mb-5\">\r\n                    <CalendarTodayIcon className=\"public-events-icon\" />\r\n                    <Typography color=\"text.secondary\" align=\"justify\" className=\"fs-12 ml-5\">\r\n                      {dateEventToCatalan(item.start,item.end,translate)}\r\n                    </Typography>\r\n                  </Box>\r\n                  <Box display=\"flex\" alignItems=\"center\" className=\"mb-5\">\r\n                    <AccessTimeIcon className=\"public-events-icon\" />\r\n                    <Typography color=\"text.secondary\" align=\"justify\" className=\"fs-12 ml-5\">\r\n                      {timeEventToCatalan(item.start,translate)}\r\n                    </Typography>\r\n                  </Box>\r\n                            \r\n                  {address.length > 0 ? \r\n                    <Box display=\"flex\" alignItems=\"center\" className=\"mb-5\">\r\n                      <PlaceIcon className=\"public-events-icon\" />\r\n                      <Typography color=\"text.secondary\" align=\"justify\" className=\"fs-12 ml-5\">\r\n                        {address}\r\n                      </Typography>\r\n                    </Box> : null } \r\n                                                        \r\n                  <Box display=\"flex\" alignItems=\"center\" className=\"mb-10\">\r\n                    <CorporateFareIcon className=\"public-events-icon\" />\r\n                    <Typography color=\"text.secondary\" align=\"justify\" className=\"fs-12 ml-5 upper\">\r\n                      {item.organizers_name != null ? item.organizers_name : item.associations_name }  \r\n                    </Typography>\r\n                  </Box> \r\n                            \r\n                  <a href={'/#/public/events?events_id=' + item.id} className=\"classrooms_list_item_link\">\r\n                    <Typography gutterBottom variant=\"h5\" component=\"div\" align=\"left\" className=\"bold\">\r\n                      {item.title}\r\n                    </Typography>\r\n                  </a>\r\n                  <Typography variant=\"body2\" color=\"text.secondary\" align=\"justify\" className=\"public-events-description\">\r\n                    {item.description ? item.description.replace(/<[^>]*>/g, '') : null}\r\n                  </Typography>                            \r\n                </CardContent>\r\n                <CardActions align=\"right\">\r\n                  <Box flexGrow={1} />\r\n                  <a href={'/#/public/events?events_id=' + item.id} className=\"classrooms_list_item_link\"><Button size=\"small\">{translate('public_events.more_info')} </Button></a>\r\n                  <TicketsButton tickets_url={item.tickets_url} />                  \r\n                </CardActions>\r\n              </Card>\r\n            </Grid>   \r\n          );})}\r\n      </Grid>\r\n                        \r\n      <Paginador page={page} perPage={perPage} onPageChange={onPageChange} total={info.total} />\r\n                     \r\n      <br /><br />\r\n    </Box>\r\n  );\r\n};\r\n\r\nexport const TicketsButton = props => {\r\n\r\n    const translate = useTranslate();  \r\n    \r\n    let show_tickets_url = props.tickets_url;\r\n    if (show_tickets_url && !show_tickets_url.includes('//'))\r\n    {\r\n        show_tickets_url = 'https://' + show_tickets_url;\r\n    }\r\n    \r\n    return (\r\n        show_tickets_url ? <a href={show_tickets_url} target='_blank' className=\"\"><Button size=\"small\" variant=\"contained\">{translate('public_events.tickets')} </Button></a> : null    \r\n    );\r\n}\r\n\r\n\r\nexport const PublicEvent = props => {\r\n    \r\n  const translate = useTranslate();  \r\n  const dataProvider = useDataProvider();\r\n  const history = useHistory();\r\n    \r\n  const [info, setInfo] = useState();\r\n  const [events, setEvents] = useState();\r\n  const [loading, setLoading] = useState(true);\r\n  const [error, setError] = useState();\r\n  const refresh = useRefresh(); \r\n  const notify = useNotify();\r\n  const [formSent, setFormSent] = useState();\r\n    \r\n  const { events_id: events_id_string } = parse(props.location.search);\r\n  const events_id = events_id_string ? parseInt(events_id_string, 10) : '';\r\n    \r\n  const backButtonClick = () => {        \r\n    if (history.length > 2) \r\n    {\r\n      history.goBack();\r\n    }\r\n    else if (info)\r\n    {\r\n      history.push('/public/events/list?associations_id=' + info.id);\r\n    }\r\n  };\r\n    \r\n  useEffect(() => {\r\n    dataProvider.getOne('events/public', { id: events_id })\r\n      .then(( { data } ) => { \r\n        setEvents(data);\r\n        \r\n        dataProvider.getOne('associations/public', { id: data.associations_id })\r\n          .then(( { data } ) => { \r\n            setInfo(data);\r\n            setLoading(false);\r\n            setError(false);\r\n          })\r\n          .catch(error => {                \r\n            setLoading(false);  \r\n            setError(true);\r\n          });\r\n      })\r\n      .catch(error => {                \r\n        setLoading(false);  \r\n        setError(true);\r\n      });\r\n  }, []);\r\n        \r\n  if (loading) return <><br/><br/><br/><br/><MyLoading /></>;\r\n  if (error) return <center><br /><br/>{translate('public_events.event_not_found')}</center>;\r\n  if (!info || !events) return null;\r\n    \r\n  let address = '';\r\n  address += events.classrooms_name != null ? events.classrooms_name : '';\r\n  address += events.address != null && events.address.length > 0 ? (address.length > 0 ? ', ' : '') + events.address : '';\r\n  address += events.cities_name != null && events.cities_name.length > 0 ? (address.length > 0 ? ', ' : '') + events.cities_name : '';\r\n                    \r\n  return (\r\n            \r\n    <>\r\n                \r\n      <IconButton onClick={backButtonClick} aria-label={translate('public_events.go_back')} className=\"public-events-back-button mt-20 ml-20\">\r\n        <ArrowBack />\r\n      </IconButton>\r\n        \r\n      <Grid container spacing={2} className=\"mt-0 pd-5\">\r\n        \r\n        { events.images && events.images.length > 0 ? \r\n          <Grid item xs={12} md={5} textAlign=\"left\" className=\"pd-5\">  \r\n                \r\n            { events.images && events.images.length > 1 ? \r\n              <Carousel className=\"events_carrousel_photos\" fullHeightHover={true}>\r\n                { events.images.map( (item, i) => <div className=\"events_carrousel_item_container\"><ImageViewer docs_id={item.id} className=\"events_carrousel_item\" is_public={true} link={true} link_name={item.name} title={events.title} /></div> ) }\r\n              </Carousel>   \r\n              : null }\r\n                \r\n            { events.images && events.images.length === 1 ? \r\n              <div className=\"events_carrousel_photos\">\r\n                <ImageViewer docs_id={events.images[0].id} className=\"events_carrousel_item\" is_public={true} link={true} link_name={events.images[0].name} />\r\n              </div>\r\n              : null }\r\n                \r\n          </Grid> : null }\r\n            \r\n        <Grid item xs={12} md={ events.images && events.images.length > 0 ? 7 : 12} textAlign=\"left\" className=\"\">  \r\n          <Chip label={events.activities_name} variant=\"outlined\" className=\"bg-orange bc-orange upper mb-10 color-white text-align-left\" />                                \r\n          <Box display=\"flex\" alignItems=\"center\" className=\"mb-5\">\r\n            <CalendarTodayIcon className=\"public-events-icon\" />\r\n            <Typography color=\"text.secondary\" align=\"justify\" className=\"fs-12 ml-5\">\r\n              {dateEventToCatalan(events.start,events.end,translate)}\r\n            </Typography>\r\n          </Box>\r\n          <Box display=\"flex\" alignItems=\"center\" className=\"mb-5\">\r\n            <AccessTimeIcon className=\"public-events-icon\" />\r\n            <Typography color=\"text.secondary\" align=\"justify\" className=\"fs-12 ml-5\">\r\n              {timeEventToCatalan(events.start,translate)}\r\n            </Typography>\r\n          </Box>\r\n                \r\n          { address.length > 0 ? \r\n            <Box display=\"flex\" alignItems=\"center\" className=\"mb-5\">\r\n              <PlaceIcon className=\"public-events-icon\" />\r\n              <Typography color=\"text.secondary\" align=\"justify\" className=\"fs-12 ml-5\">\r\n                {address}\r\n              </Typography>\r\n            </Box> : null }  \r\n                \r\n          <Box display=\"flex\" alignItems=\"center\" className=\"mb-10\">\r\n            <CorporateFareIcon className=\"public-events-icon\" />\r\n            <Typography color=\"text.secondary\" align=\"justify\" className=\"fs-12 ml-5 upper\">\r\n              {events.organizers_name != null ? events.organizers_name : events.associations_name }  \r\n            </Typography>\r\n          </Box> \r\n          \r\n          <Box display=\"flex\" alignItems=\"center\" className=\"mb-10\">\r\n            <TicketsButton tickets_url={events.tickets_url} />\r\n          </Box>\r\n                \r\n          <Typography gutterBottom variant=\"h5\" component=\"div\" align=\"left\" className=\"bold\">\r\n            {events.title}\r\n          </Typography>\r\n          <Typography variant=\"body2\" color=\"text.secondary\" align=\"justify\" className=\"\">\r\n            <div className=\"\" spacing={2} dangerouslySetInnerHTML={{ __html: events.description }} />\r\n          </Typography>\r\n        </Grid>\r\n      </Grid> \r\n        \r\n    </>\r\n  );\r\n};\r\n   ","// in src/Dashboard.js\r\nimport React, { useState, useEffect } from 'react';\r\n\r\n\r\n\r\n\r\nimport Grid from '@mui/material/Grid';\r\nimport Box from '@material-ui/core/Box';\r\n\r\n\r\n\r\nimport CheckCircleOutlineIcon from '@mui/icons-material/CheckCircleOutline';\r\nimport CancelOutlinedIcon from '@mui/icons-material/CancelOutlined';\r\n\r\n\r\nimport { useCreate, useRefresh, useDataProvider,\r\n  useNotify\r\n} from 'react-admin';\r\n\r\n\r\n\r\nimport { parse } from 'query-string';\r\n\r\n\r\n\r\n\r\nimport { useTranslate  } from '../common/language';\r\n\r\nimport { makeStyles } from '@material-ui/core/styles';\r\n\r\n\r\nimport IconButton from '@mui/material/IconButton';\r\n\r\n\r\n\r\n\r\n\r\n\r\nconst useStyles = makeStyles((theme) => ({  \r\n  largeIconOK: {\r\n    '& svg': {\r\n      fontSize: 200,\r\n      color: '#007E12'\r\n    }\r\n  }\r\n  ,\r\n  largeIconKO: {\r\n    '& svg': {\r\n      fontSize: 200,\r\n      color: '#FF7373'\r\n    }\r\n  }\r\n}));\r\n\r\n\r\nexport const CheckMembers = props => {\r\n    \r\n  const translate = useTranslate();  \r\n  const dataProvider = useDataProvider();\r\n  const classes = useStyles();\r\n    \r\n  const [info, setInfo] = useState();\r\n  const [checkMemberData, setCheckMemberData] = useState();\r\n  const [loading, setLoading] = useState(true);\r\n  const [error, setError] = useState(false);\r\n  const [errorApi, setErrorApi] = useState();\r\n  const [create] = useCreate('users_annuary/public/form');\r\n  const refresh = useRefresh(); \r\n  const notify = useNotify();\r\n  const [formSent, setFormSent] = useState();\r\n    \r\n  const { id: id_string, hash: hash_string } = parse(props.location.search);\r\n    \r\n  useEffect(() => {\r\n    dataProvider.getOne('users_groups/public/check_members/' + id_string, { id: hash_string })\r\n      .then(( { data } ) => { \r\n        setCheckMemberData(data);    \r\n        setLoading(false);  \r\n      })\r\n      .catch(error => {      \r\n        setError(true);\r\n        setLoading(false);                  \r\n      });\r\n  }, []);\r\n        \r\n  if (loading) return null;\r\n    \r\n  if (error || checkMemberData.status !== 1) return (\r\n    <Box sx={{ width: '90%', maxWidth: 800, bgcolor: '#efefef', padding: '0px' }} className=\"add_member_box\" >\r\n      <Grid container spacing={2}>\r\n        <Grid item xs={12} align=\"center\">                      \r\n          <IconButton className={classes.largeIconKO}>\r\n            <CancelOutlinedIcon />\r\n          </IconButton>\r\n        </Grid>\r\n        <Grid item xs={12} align=\"center\">  \r\n          {translate('check_members.not_found')}\r\n          <br />\r\n          <br />\r\n        </Grid>\r\n      </Grid>                 \r\n    </Box>);\r\n            \r\n    \r\n    \r\n  return (\r\n    <Box sx={{ width: '90%', maxWidth: 800, bgcolor: '#efefef', padding: '0px' }} className=\"add_member_box\" >\r\n      <Grid container spacing={2}>\r\n        <Grid item xs={12} align=\"center\">  \r\n          {checkMemberData.status === 1 ?                             \r\n            <IconButton className={classes.largeIconOK}>\r\n              <CheckCircleOutlineIcon />\r\n            </IconButton>\r\n            :\r\n            <IconButton className={classes.largeIconKO}>\r\n              <CancelOutlinedIcon />\r\n            </IconButton>\r\n          }\r\n        </Grid>                    \r\n        <Grid item xs={12} align=\"center\">  \r\n          <b>{translate('check_members.checker_name')}</b><br />{checkMemberData.name}\r\n        </Grid>\r\n        <Grid item xs={12} align=\"center\">  \r\n          <b>{translate('check_members.checker_num_member')}</b><br />{checkMemberData.num_member}\r\n        </Grid>\r\n        <Grid item xs={12} align=\"center\">  \r\n          <b>{translate('check_members.checker_date')}</b><br />{checkMemberData.date_checker}\r\n          <br />\r\n          <br />\r\n        </Grid>                    \r\n      </Grid>                 \r\n    </Box>\r\n  );\r\n};\r\n\r\n/*\r\n\r\n<br/><br/><br/><MyLoading />\r\n\r\n<Grid item xs={12} align=\"center\">  \r\n    {translate('check_members.status_' + checkMemberData.status)}\r\n</Grid>\r\n<Grid item xs={12} align=\"center\">  \r\n    {checkMemberData.association_name}\r\n</Grid>\r\n<Grid item xs={12} align=\"center\">  \r\n    {checkMemberData.group_name}\r\n</Grid>\r\n<Grid item xs={12} align=\"center\">  \r\n    {checkMemberData.name}\r\n</Grid>\r\n<Grid item xs={12} align=\"center\">  \r\n    {checkMemberData.date_join}\r\n</Grid>\r\n<Grid item xs={12} align=\"center\">  \r\n    {checkMemberData.date_left}\r\n</Grid>\r\n*/","// in src/Dashboard.js\r\nimport React, { useState, useEffect } from 'react';\r\n\r\n\r\n\r\n\r\nimport Grid from '@mui/material/Grid';\r\nimport Box from '@material-ui/core/Box';\r\nimport Typography from '@mui/material/Typography';\r\n\r\nimport { AccordionSection  } from '@react-admin/ra-form-layout';\r\n\r\n\r\n\r\nimport {\r\n  ReferenceInput,\r\n  SelectInput,\r\n  TextInput, required, DateInput,NumberInput,BooleanInput, useCreate, useRefresh, FormWithRedirect, SaveButton, useDataProvider,\r\n  useNotify, \r\n  ArrayInput,\r\n  SimpleFormIterator, CheckboxGroupInput\r\n} from 'react-admin';\r\n\r\nimport { validateMaxLength, validateInteger, validateDouble, validatePercent  } from '../components/Validator';\r\nimport { CustomFieldsEdit } from '../components/CustomFields';\r\nimport MyLoading from '../components/MyLoading';\r\n\r\n\r\nimport { parse } from 'query-string';\r\n\r\n\r\n\r\n\r\nimport { useTranslate  } from '../common/language';\r\nimport { choicesClassroomsType, choicesTrainingsType0,choicesTrainingsType1,choicesTrainingsFormalArt,choicesTrainingsFormal, choicesShowsType, choicesAdult, targets, choicesTrainingsTrainingType, choicesTrainingsPeriodicity, choicesTrainingsAges } from './../common/constants';\r\n\r\nimport { ImageViewer } from '../resources/docs';\r\n\r\n\r\nimport { styled } from '@mui/material/styles';\r\nimport Dialog from '@mui/material/Dialog';\r\nimport DialogTitle from '@mui/material/DialogTitle';\r\nimport DialogContent from '@mui/material/DialogContent';\r\nimport IconButton from '@mui/material/IconButton';\r\nimport CloseIcon from '@mui/icons-material/Close';\r\n\r\n\r\n\r\n\r\n\r\nexport const AnnuaryForm = props => {\r\n    \r\n  const translate = useTranslate();  \r\n  const dataProvider = useDataProvider();\r\n    \r\n  const [info, setInfo] = useState();\r\n  const [annuaryForm, setAnnuaryForm] = useState();\r\n  const [loading, setLoading] = useState(true);\r\n  const [error, setError] = useState();\r\n  const [errorApi, setErrorApi] = useState();\r\n  const [create] = useCreate('users_annuary/public/form');\r\n  const [formSent, setFormSent] = useState();\r\n    \r\n  const { token: token_string } = parse(props.location.search);\r\n    \r\n  const [open, setOpen] = React.useState(false);\r\n\r\n  const openErrorDialog = () => {\r\n    setOpen(true);\r\n  };\r\n  const closeErrorDialog = () => {\r\n    setOpen(false);\r\n  };\r\n    \r\n  useEffect(() => {\r\n    dataProvider.getOne('users_annuary/public/form', { id: token_string })\r\n      .then(( { data } ) => { \r\n        setAnnuaryForm(data);\r\n        \r\n        dataProvider.getOne('associations/public', { id: data.associations_id })\r\n          .then(( { data } ) => { \r\n            setInfo(data);\r\n            setLoading(false);\r\n            setError(false);\r\n          })\r\n          .catch(error => {                         \r\n            setLoading(false);  \r\n            setError(true);\r\n          });\r\n      })\r\n      .catch(error => {          \r\n        setLoading(false);  \r\n        setError(true);\r\n      });\r\n  }, []);\r\n    \r\n  const handleSubmit = values => {\r\n    create(            \r\n      { payload: { data: values } },\r\n      {\r\n        onSuccess: ({ data }) => {              \r\n          setFormSent(true);\r\n          setErrorApi('');\r\n        },\r\n        onFailure: ( error ) => {\r\n          setErrorApi(error.message);\r\n          openErrorDialog();                                    \r\n        }\r\n      }\r\n    );\r\n  };\r\n    \r\n  if (loading) return <MyLoading />;\r\n  if (error) return <center><br /><br/>{translate('users_annuary.not_found')}</center>;\r\n  if (!info) return null;\r\n    \r\n  if (formSent)\r\n  {\r\n    return (\r\n      <Box sx={{ width: '90%', maxWidth: 800, bgcolor: 'background.paper', padding: '20px' }} className=\"add_member_box\" >\r\n        <Grid container spacing={2}>\r\n          <Grid item xs={12}>  \r\n            <HeaderPage info={info} title=\"\" />\r\n          </Grid>\r\n        </Grid>                   \r\n        <div className=\"add_member_form_sent\" dangerouslySetInnerHTML={{ __html: info.annuary_form_sent }} />                                \r\n      </Box>\r\n    );\r\n  }\r\n    \r\n  let title = translate('users_annuary.form_title').replaceAll('%year%',annuaryForm.year);\r\n                \r\n  if (annuaryForm.expired && !annuaryForm.answered)\r\n    return <center><br /><br/>{translate('users_annuary.expired')}</center>; \r\n  else\r\n    return (\r\n      <>\r\n        <Box sx={{ width: '90%', bgcolor: 'background.paper', padding: '20px' }} className=\"add_member_box\" >\r\n                \r\n          <br/>\r\n          <Grid container spacing={2}>\r\n            <Grid item xs={12}>  \r\n              <HeaderPage info={info} title={title} />\r\n            </Grid>\r\n          </Grid>   \r\n                                                              \r\n          <br />\r\n          <Grid container spacing={2} >\r\n            { annuaryForm.expired && annuaryForm.answered ?\r\n              <div className=\"\" spacing={2} dangerouslySetInnerHTML={{ __html: translate('users_annuary.form_already_answered').replaceAll('%year%',annuaryForm.year) }} />                    \r\n              :\r\n              (!annuaryForm.expired && !annuaryForm.answered) || (!annuaryForm.expired && annuaryForm.answered) ?\r\n                <div className=\"\" spacing={2} dangerouslySetInnerHTML={{ __html: info.annuary_form_text ? info.annuary_form_text.replaceAll('%year%',annuaryForm.year) : '' }} />\r\n                : null\r\n            }\r\n          </Grid>  \r\n          <br />\r\n          <br />                \r\n          <>\r\n                \r\n            <Grid container spacing={2}>\r\n                \r\n              <FormWithRedirect\r\n                resource=\"\"        \r\n                save={handleSubmit}\r\n                initialValues={annuaryForm}\r\n                render={formProps => (\r\n                  <>   \r\n                    <fieldset disabled={annuaryForm.expired}>\r\n                      <AccordionSection className=\"accordion\" label={translate('users_annuary.form_general_data')} fullWidth defaultExpanded={false}>                           \r\n                        <Grid container spacing={2}>\r\n                          <Grid item xs={12}>                    \r\n                            <TextInput fullWidth source=\"users_name\" label={translate('users_annuary.form_entity')} disabled />\r\n                          </Grid>\r\n                          <Grid item xs={4}>                    \r\n                            <NumberInput fullWidth source=\"users_demografy.num_members\" label={translate('users_demografy.num_members')} />\r\n                          </Grid>\r\n                          <Grid item xs={4}>                    \r\n                            <NumberInput fullWidth source=\"users_demografy.avg_age\" label={translate('users_demografy.avg_age')} />\r\n                          </Grid>\r\n                          <Grid item xs={4}>                    \r\n                            <NumberInput fullWidth source=\"users_demografy.avg_age_managers\" label={translate('users_demografy.avg_age_managers')} />\r\n                          </Grid>\r\n                        </Grid>    \r\n                        <Grid container spacing={2}>\r\n                          <Grid item xs={4}>                    \r\n                            <NumberInput fullWidth source=\"users_demografy.percent_man\" label={translate('users_demografy.percent_man')} validate={[validatePercent(translate('common.validation.number'))]} />\r\n                          </Grid>\r\n                          <Grid item xs={4}>                    \r\n                            <NumberInput fullWidth source=\"users_demografy.percent_woman\" label={translate('users_demografy.percent_woman')} validate={[validatePercent(translate('common.validation.number'))]} />\r\n                          </Grid>\r\n                          <Grid item xs={4}>                    \r\n                            <NumberInput fullWidth source=\"users_demografy.percent_no_binary\" label={translate('users_demografy.percent_no_binary')} validate={[validatePercent(translate('common.validation.number'))]} />\r\n                          </Grid>\r\n                        </Grid>\r\n                        \r\n                        <CustomFieldsEdit associations_id={annuaryForm.associations_id} target={targets.USER_FEDERATION} title={false} accordion={false} only_form_annuary={true} prefix=\"federation_\"/>\r\n                        \r\n                      </AccordionSection>\r\n                                \r\n                                \r\n                      <AccordionSection className=\"accordion\" label={translate('users_annuary.form_activities')} fullWidth defaultExpanded={false}> \r\n                        <span>{translate('users_annuary.form_desc_activities')}</span>\r\n                        <ArrayInput source=\"users_activities_items\" label=\"\" className=\"array-input\" disabled={annuaryForm.expired}>\r\n                          <SimpleFormIterator \r\n                            disableReordering\r\n                            inline \r\n                            className=\"simple-iterator-inline\"\r\n                            getItemLabel={index => ''}\r\n                          >\r\n                            <ReferenceInput className=\"form-250\" sort={{ field: 'priority', order: 'ASC' }} perPage={1000} label={translate('users_activities.name')} source=\"activities_users_id\" reference=\"activities_users\">\r\n                              <SelectInput optionText=\"name\" optionValue=\"id\" validate={required()} />\r\n                            </ReferenceInput> \r\n                            <NumberInput className=\"form-100\" source=\"quantity\" step={1} validate={[validateInteger(translate('common.validation.number'))]} label={translate('users_activities.quantity')} />\r\n                            <NumberInput className=\"form-100\" source=\"assistants\" step={1} validate={[validateInteger(translate('common.validation.number'))]} label={translate('users_activities.assistants')} />\r\n                            <SelectInput className=\"form-200\" label={translate('users_shows.adult')} source=\"adult\" choices={choicesAdult(translate)} resettable /> \r\n                            <TextInput className=\"form-200\" source=\"comment\" validate={[validateMaxLength(255,translate('common.validation.maxLength'))]} label={translate('common.comment')} />\r\n                          </SimpleFormIterator>\r\n                        </ArrayInput>\r\n                      </AccordionSection>\r\n                                \r\n                      <AccordionSection className=\"accordion\" label={translate('users_annuary.form_trainings_art')} fullWidth defaultExpanded={false}>  \r\n                        <span>{translate('users_annuary.form_desc_trainings_art')}</span><br />\r\n                        <NumberInput source=\"users_trainings_art_hours\" step={1} validate={[validateInteger(translate('common.validation.number'))]} label={translate('users_trainings.total_hours')} />                                    \r\n                        <ArrayInput source=\"users_trainings_art_items\" label=\"\" className=\"array-input\" disabled={annuaryForm.expired}>\r\n                          <SimpleFormIterator \r\n                            disableReordering   \r\n                            inline\r\n                            className=\"simple-iterator-inline\"\r\n                            getItemLabel={index => ''}\r\n                          >\r\n                            <SelectInput className=\"form-100\" source=\"training_type\" label={translate('users_trainings.training_type')} fullWidth choices={choicesTrainingsTrainingType(translate)} />\r\n                            <TextInput className=\"form-200\" fullWidth source=\"training_type_others\" validate={[validateMaxLength(255,translate('common.validation.maxLength'))]} label={translate('users_trainings.training_type_others')} />\r\n                            <SelectInput className=\"form-100\" source=\"type\" label={translate('users_trainings.type')} fullWidth validate={required()} choices={choicesTrainingsType0(translate)} />\r\n                            <SelectInput className=\"form-100\" source=\"formal\" label={translate('users_trainings.formal')} fullWidth validate={required()} choices={choicesTrainingsFormalArt(translate)} />\r\n                            <span><br/><br/></span>\r\n                            <CheckboxGroupInput source=\"periodicities\" choices={choicesTrainingsPeriodicity(translate)} label={translate('users_trainings.periodicities')} />\r\n                            <SelectInput className=\"form-100\" source=\"ages\" label={translate('users_trainings.ages')} fullWidth choices={choicesTrainingsAges(translate)} />\r\n                            <NumberInput className=\"form-100\" source=\"num_classrooms\" step={1} validate={[validateInteger(translate('common.validation.number'))]} label={translate('users_trainings.num_classrooms')} />\r\n                            <NumberInput className=\"form-100\" source=\"students\" step={1} validate={[validateInteger(translate('common.validation.number'))]} label={translate('users_trainings.students')} />\r\n                            <NumberInput className=\"form-100\" source=\"teachers_workers\" step={1} validate={[validateInteger(translate('common.validation.number'))]} label={translate('users_trainings.teachers_workers')} />\r\n                            <NumberInput className=\"form-100\" source=\"teachers_volunteers\" step={1} validate={[validateInteger(translate('common.validation.number'))]} label={translate('users_trainings.teachers_volunteers')} />\r\n                          </SimpleFormIterator>\r\n                        </ArrayInput>                                    \r\n                      </AccordionSection>\r\n                                \r\n                      <AccordionSection className=\"accordion\" label={translate('users_annuary.form_trainings')} fullWidth defaultExpanded={false}>  \r\n                        <span>{translate('users_annuary.form_desc_trainings')}</span><br />\r\n                        <NumberInput source=\"users_trainings_hours\" step={1} validate={[validateInteger(translate('common.validation.number'))]} label={translate('users_trainings.total_hours')} />\r\n                        <ArrayInput source=\"users_trainings_items\" label=\"\" className=\"array-input\" disabled={annuaryForm.expired}>\r\n                          <SimpleFormIterator \r\n                            disableReordering\r\n                            inline \r\n                            className=\"simple-iterator-inline\"\r\n                            getItemLabel={index => ''}\r\n                          >\r\n                            <SelectInput className=\"form-100\" source=\"type\" label={translate('users_trainings.type')} fullWidth validate={required()} choices={choicesTrainingsType1(translate)} />\r\n                            <SelectInput className=\"form-100\" source=\"formal\" label={translate('users_trainings.formal')} fullWidth validate={required()} choices={choicesTrainingsFormal(translate)} />\r\n                            <NumberInput className=\"form-100\" source=\"students\" step={1} validate={[validateInteger(translate('common.validation.number'))]} label={translate('users_trainings.students')} />\r\n                            <NumberInput className=\"form-100\" source=\"teachers_workers\" step={1} validate={[validateInteger(translate('common.validation.number'))]} label={translate('users_trainings.teachers_workers')} />\r\n                            <NumberInput className=\"form-100\" source=\"teachers_volunteers\" step={1} validate={[validateInteger(translate('common.validation.number'))]} label={translate('users_trainings.teachers_volunteers')} />\r\n                          </SimpleFormIterator>\r\n                        </ArrayInput>                                    \r\n                      </AccordionSection>\r\n                                \r\n                      <AccordionSection className=\"accordion\" label={translate('users_annuary.form_classrooms')} fullWidth defaultExpanded={false}>    \r\n                        <span>{translate('users_annuary.form_desc_classrooms')}</span>\r\n                        <ArrayInput source=\"users_classrooms\" label=\"\" className=\"array-input\" disabled={annuaryForm.expired}>\r\n                          <SimpleFormIterator \r\n                            disableReordering\r\n                            inline\r\n                            className=\"simple-iterator-multiline\"\r\n                            getItemLabel={index => ''}                     \r\n                          >\r\n                            <SelectInput className=\"form-250\" label={translate('classrooms.type')} source=\"type\" choices={choicesClassroomsType(translate)} validate={[required()]} />\r\n                            <TextInput className=\"form-200\" source=\"name\" label={translate('common.name')} validate={[required(),validateMaxLength(255,translate('common.validation.maxLength'))]}  />\r\n                            <NumberInput className=\"form-100\" source=\"m2\" label={translate('classrooms.m2')} validate={[validateInteger(translate('common.validation.number'))]}  />\r\n                            <NumberInput className=\"form-100\" source=\"seats\" label={translate('classrooms.seats')} validate={[validateInteger(translate('common.validation.number'))]}  />\r\n                            <BooleanInput className=\"form-200 form-clear\" source=\"accessible\" label={translate('classrooms.accessible')} />  \r\n                            <BooleanInput className=\"form-150\" source=\"outdoor\" label={translate('classrooms.outdoor')} />   \r\n                            <BooleanInput className=\"form-250\" source=\"lift\" label={translate('classrooms.lift')} />       \r\n                            <BooleanInput className=\"form-150\" source=\"cession\" label={translate('classrooms.cession')} />  \r\n                            <BooleanInput className=\"form-150\" source=\"rent\" label={translate('classrooms.rent')} />       \r\n                            <BooleanInput className=\"form-250\" source=\"rentable\" label={translate('classrooms.rentable')} />                                   \r\n                          </SimpleFormIterator>\r\n                        </ArrayInput>\r\n                      </AccordionSection>\r\n                                \r\n                      <AccordionSection className=\"accordion\" label={translate('users_annuary.form_shows')} fullWidth defaultExpanded={false}> \r\n                        <span>{translate('users_annuary.form_desc_shows')}</span>\r\n                        <ArrayInput source=\"users_shows_items\" label=\"\" disabled={annuaryForm.expired}>\r\n                          <SimpleFormIterator \r\n                            disableReordering\r\n                            inline\r\n                            className=\"simple-iterator-multiline\"\r\n                            getItemLabel={index => ''}                     \r\n                          >\r\n                            <SelectInput className=\"form-200\" label={translate('users_shows.type')} source=\"type\" choices={choicesShowsType(translate)} validate={[required()]} />\r\n                            <SelectInput className=\"form-200\" label={translate('users_shows.amateur')} source=\"amateur\" choices={[                        \r\n                              { id: 1, name: translate('users_shows.amateur_1')  },\r\n                              { id: 2, name: translate('users_shows.amateur_2')  }\r\n                            ]} resettable />\r\n                            <SelectInput className=\"form-200\" label={translate('users_shows.adult')} source=\"adult\" choices={choicesAdult(translate)} resettable />                    \r\n                            <NumberInput className=\"form-100\" source=\"quantity\" step={1} validate={[validateInteger(translate('common.validation.number'))]} label={translate('users_shows.quantity')} />\r\n                            <NumberInput className=\"form-100\" source=\"assistants\" step={1} validate={[validateInteger(translate('common.validation.number'))]} label={translate('users_shows.assistants')} />\r\n                            <NumberInput className=\"form-100\" source=\"inversion\" validate={[validateInteger(translate('common.validation.number'))]} label={translate('users_shows.inversion')} />\r\n                            <NumberInput className=\"form-100\" source=\"occupancy\" validate={[validateInteger(translate('common.validation.number'))]} label={translate('users_shows.occupancy')} />\r\n                            <TextInput className=\"form-200\" source=\"comment\" validate={[validateMaxLength(255,translate('common.validation.maxLength'))]} label={translate('common.comment')} />\r\n\r\n                          </SimpleFormIterator>\r\n                        </ArrayInput>\r\n                      </AccordionSection>\r\n                                \r\n                      <AccordionSection className=\"accordion\" label={translate('users_annuary.form_sections')} fullWidth defaultExpanded={false}> \r\n                        <span>{translate('users_annuary.form_desc_sections')}</span>\r\n                        <ArrayInput source=\"users_sections_items\" label=\"\" disabled={annuaryForm.expired}>\r\n                          <SimpleFormIterator \r\n                            disableReordering\r\n                            inline\r\n                            className=\"simple-iterator-inline\" \r\n                            getItemLabel={index => ''}                     \r\n                          >\r\n                            <ReferenceInput sort={{ field: 'priority', order: 'ASC' }}  perPage={1000} label={translate('users_sections.name')} source=\"sections_users_id\" reference=\"sections_users\" className=\"mt-10\">\r\n                              <SelectInput className=\"form-250\" optionText=\"name\" optionValue=\"id\" validate={required()} />\r\n                            </ReferenceInput> \r\n                            <NumberInput className=\"form-150\" source=\"participants\" step={1} validate={[validateInteger(translate('common.validation.number'))]} label={translate('users_sections.participants')} />\r\n                            <TextInput className=\"form-200\" source=\"comment\" validate={[validateMaxLength(255,translate('common.validation.maxLength'))]} label={translate('common.comment')} />\r\n                          </SimpleFormIterator>\r\n                        </ArrayInput>\r\n                      </AccordionSection>\r\n                                                         \r\n                      <AccordionSection className=\"accordion\" label={translate('users_annuary.form_workers')} fullWidth defaultExpanded={false}> \r\n                        <span>{translate('users_annuary.form_desc_workers')}</span><br />\r\n                        <Grid container spacing={2}>\r\n                          <Grid item xs={3}>                    \r\n                            <NumberInput label={translate('users_workers.administration')} fullWidth source=\"users_workers.administration\" parse={value => value ? value : 0 } validate={[validateDouble(translate('common.validation.number'))]} />                                                                                \r\n                          </Grid>\r\n                          <Grid item xs={3}>                    \r\n                            <NumberInput label={translate('users_workers.activities')}   fullWidth source=\"users_workers.activities\" parse={value => value ? value : 0 } validate={[validateDouble(translate('common.validation.number'))]} />                                        \r\n                          </Grid>\r\n                          <Grid item xs={3}>                    \r\n                            <NumberInput label={translate('users_workers.concierge')} fullWidth source=\"users_workers.concierge\" parse={value => value ? value : 0 } validate={[validateDouble(translate('common.validation.number'))]} />                                        \r\n                          </Grid>\r\n                          <Grid item xs={3}>                    \r\n                            <NumberInput label={translate('users_workers.clean_up')}  fullWidth source=\"users_workers.clean_up\" parse={value => value ? value : 0 } validate={[validateDouble(translate('common.validation.number'))]} />                                        \r\n                          </Grid>\r\n                          <Grid item xs={3}>                    \r\n                            <NumberInput label={translate('users_workers.comunication')} fullWidth source=\"users_workers.comunication\" parse={value => value ? value : 0 } validate={[validateDouble(translate('common.validation.number'))]} />                                        \r\n                          </Grid>\r\n                          <Grid item xs={3}>                    \r\n                            <NumberInput label={translate('users_workers.accounting')} fullWidth source=\"users_workers.accounting\" parse={value => value ? value : 0 } validate={[validateDouble(translate('common.validation.number'))]} />                                        \r\n                          </Grid>\r\n                          <Grid item xs={3}>                    \r\n                            <NumberInput label={translate('users_workers.maintenance')} fullWidth source=\"users_workers.maintenance\" parse={value => value ? value : 0 } validate={[validateDouble(translate('common.validation.number'))]} />                                        \r\n                          </Grid>\r\n                          <Grid item xs={3}>                    \r\n                            <NumberInput label={translate('users_workers.management')} fullWidth source=\"users_workers.management\" parse={value => value ? value : 0 } validate={[validateDouble(translate('common.validation.number'))]} />                                        \r\n                          </Grid>\r\n                          <Grid item xs={3}>                    \r\n                            <NumberInput label={translate('users_workers.others')} fullWidth source=\"users_workers.others\" parse={value => value ? value : 0 } validate={[validateDouble(translate('common.validation.number'))]} />                                                                                \r\n                          </Grid>\r\n                        </Grid>\r\n                      </AccordionSection>\r\n                                \r\n                      <AccordionSection className=\"accordion\" label={translate('users_annuary.form_volunteers')} fullWidth defaultExpanded={false}> \r\n                        <span>{translate('users_annuary.form_desc_volunteers')}</span><br />\r\n                        <Grid container spacing={2}>\r\n                          <Grid item xs={3}>                    \r\n                            <NumberInput label={translate('users_workers.administration')} fullWidth source=\"users_volunteers.administration\" parse={value => value ? value : 0 } validate={[validateDouble(translate('common.validation.number'))]} />                                                                                \r\n                          </Grid>\r\n                          <Grid item xs={3}>                    \r\n                            <NumberInput label={translate('users_workers.activities')}   fullWidth source=\"users_volunteers.activities\" parse={value => value ? value : 0 } validate={[validateDouble(translate('common.validation.number'))]} />                                        \r\n                          </Grid>\r\n                          <Grid item xs={3}>                    \r\n                            <NumberInput label={translate('users_workers.concierge')} fullWidth source=\"users_volunteers.concierge\" parse={value => value ? value : 0 } validate={[validateDouble(translate('common.validation.number'))]} />                                        \r\n                          </Grid>\r\n                          <Grid item xs={3}>                    \r\n                            <NumberInput label={translate('users_workers.clean_up')}  fullWidth source=\"users_volunteers.clean_up\" parse={value => value ? value : 0 } validate={[validateDouble(translate('common.validation.number'))]} />                                        \r\n                          </Grid>\r\n                          <Grid item xs={3}>                    \r\n                            <NumberInput label={translate('users_workers.comunication')} fullWidth source=\"users_volunteers.comunication\" parse={value => value ? value : 0 } validate={[validateDouble(translate('common.validation.number'))]} />                                        \r\n                          </Grid>\r\n                          <Grid item xs={3}>                    \r\n                            <NumberInput label={translate('users_workers.accounting')} fullWidth source=\"users_volunteers.accounting\" parse={value => value ? value : 0 } validate={[validateDouble(translate('common.validation.number'))]} />                                        \r\n                          </Grid>\r\n                          <Grid item xs={3}>                    \r\n                            <NumberInput label={translate('users_workers.maintenance')} fullWidth source=\"users_volunteers.maintenance\" parse={value => value ? value : 0 } validate={[validateDouble(translate('common.validation.number'))]} />                                        \r\n                          </Grid>\r\n                          <Grid item xs={3}>                    \r\n                            <NumberInput label={translate('users_workers.management')} fullWidth source=\"users_volunteers.management\" parse={value => value ? value : 0 } validate={[validateDouble(translate('common.validation.number'))]} />                                        \r\n                          </Grid>\r\n                          <Grid item xs={3}>                    \r\n                            <NumberInput label={translate('users_workers.others')} fullWidth source=\"users_volunteers.others\" parse={value => value ? value : 0 } validate={[validateDouble(translate('common.validation.number'))]} />                                                                                \r\n                          </Grid>\r\n                        </Grid>\r\n                      </AccordionSection>\r\n                                \r\n                      <AccordionSection className=\"accordion\" label={translate('users_annuary.form_social_nets')} fullWidth defaultExpanded={false}>\r\n                        <span>{translate('users_annuary.form_desc_social_nets')}</span><br />\r\n                        <Grid container spacing={2}>\r\n                          <Grid item xs={6}>                    \r\n                            <TextInput fullWidth source=\"web\" label={translate('users.web')} />\r\n                          </Grid>\r\n                        </Grid>                                \r\n                        <ArrayInput source=\"users_social_nets\" label={translate('users_annuary.form_social_nets_title')} disabled={annuaryForm.expired}>\r\n                          <SimpleFormIterator \r\n                            disableReordering\r\n                            inline\r\n                            className=\"simple-iterator-inline\" \r\n                            getItemLabel={index => ''}                     \r\n                          >\r\n                            <ReferenceInput label={translate('social_nets.title')} source=\"nets_id\" reference=\"nets\" perPage={1000} >\r\n                              <SelectInput fullWidth optionValue=\"id\" validate={required()} optionText=\"name\" />\r\n                            </ReferenceInput> \r\n                            <TextInput fullWidth source=\"link\" label={translate('social_nets.link')} validate={[required(),validateMaxLength(100,translate('common.validation.maxLength'))]} />\r\n                          </SimpleFormIterator>\r\n                        </ArrayInput>\r\n                      </AccordionSection>\r\n        \r\n                      <AccordionSection className=\"accordion\" label={translate('users_annuary.form_economic_data')} fullWidth defaultExpanded={false}> \r\n                        <span>{translate('users_annuary.form_desc_economic_data')}</span><br />\r\n                        <Grid container spacing={2}>\r\n                          <Grid item xs={4}>                    \r\n                            <NumberInput fullWidth source=\"users_economic_data.avg_quote\" label={translate('users_economic_data.avg_quote')} validate={[validateDouble(translate('common.validation.number'))]} />\r\n                          </Grid>\r\n                        </Grid>\r\n                        <Grid container spacing={2}>\r\n                          <Grid item xs={3}>  \r\n                            <FormTitle name={translate('users_annuary.form_economic_data_incomings')} />     \r\n                            <NumberInput label={translate('users_economic_data.members')}  fullWidth source=\"users_economic_data.members\" parse={value => value ? value : 0 } validate={[validateDouble(translate('common.validation.number'))]} />                                        \r\n                            <NumberInput label={translate('users_economic_data.services')} fullWidth source=\"users_economic_data.services\" parse={value => value ? value : 0 } validate={[validateDouble(translate('common.validation.number'))]} />                                        \r\n                            <NumberInput label={translate('users_economic_data.subsidies')}   fullWidth source=\"users_economic_data.subsidies\" parse={value => value ? value : 0 } validate={[validateDouble(translate('common.validation.number'))]} />                                        \r\n                            <NumberInput label={translate('users_economic_data.rentals')}  fullWidth source=\"users_economic_data.rentals\" parse={value => value ? value : 0 } validate={[validateDouble(translate('common.validation.number'))]} />                                        \r\n                            <NumberInput label={translate('users_economic_data.products')} fullWidth source=\"users_economic_data.products\" parse={value => value ? value : 0 } validate={[validateDouble(translate('common.validation.number'))]} />                                        \r\n                            <NumberInput label={translate('users_economic_data.privates')} fullWidth source=\"users_economic_data.privates\" parse={value => value ? value : 0 } validate={[validateDouble(translate('common.validation.number'))]} />                                        \r\n                            <NumberInput label={translate('users_economic_data.others')} fullWidth source=\"users_economic_data.others\" parse={value => value ? value : 0 } validate={[validateDouble(translate('common.validation.number'))]} />                                        \r\n                          </Grid> \r\n                          <Grid item xs={1}>  \r\n                          </Grid> \r\n                          <Grid item xs={3}> \r\n                            <FormTitle name={translate('users_annuary.form_economic_data_expenses')} /> \r\n                            <NumberInput label={translate('users_economic_data.exp_rentals')} fullWidth source=\"users_economic_data.exp_rentals\" parse={value => value ? value : 0 } validate={[validateDouble(translate('common.validation.number'))]} />                                        \r\n                            <NumberInput label={translate('users_economic_data.exp_workers')}  fullWidth source=\"users_economic_data.exp_workers\" parse={value => value ? value : 0 } validate={[validateDouble(translate('common.validation.number'))]} />                                        \r\n                            <NumberInput label={translate('users_economic_data.exp_material')}  fullWidth source=\"users_economic_data.exp_material\" parse={value => value ? value : 0 } validate={[validateDouble(translate('common.validation.number'))]} />                                        \r\n                            <NumberInput label={translate('users_economic_data.exp_professionals')}   fullWidth source=\"users_economic_data.exp_professionals\" parse={value => value ? value : 0 } validate={[validateDouble(translate('common.validation.number'))]} />                                        \r\n                            <NumberInput label={translate('users_economic_data.exp_groups')}   fullWidth source=\"users_economic_data.exp_groups\" parse={value => value ? value : 0 } validate={[validateDouble(translate('common.validation.number'))]} />                                        \r\n                            <NumberInput label={translate('users_economic_data.exp_supplies')}  fullWidth source=\"users_economic_data.exp_supplies\" parse={value => value ? value : 0 } validate={[validateDouble(translate('common.validation.number'))]} />                                        \r\n                            <NumberInput label={translate('users_economic_data.exp_maintenance')} fullWidth source=\"users_economic_data.exp_maintenance\" parse={value => value ? value : 0 } validate={[validateDouble(translate('common.validation.number'))]} />                                        \r\n                            <NumberInput label={translate('users_economic_data.exp_marketing')} fullWidth source=\"users_economic_data.exp_marketing\" parse={value => value ? value : 0 } validate={[validateDouble(translate('common.validation.number'))]} />                                        \r\n                            <NumberInput label={translate('users_economic_data.exp_others')}     fullWidth source=\"users_economic_data.exp_others\" parse={value => value ? value : 0 } validate={[validateDouble(translate('common.validation.number'))]} />                                        \r\n\r\n                          </Grid>\r\n                          <Grid item xs={1}>  \r\n                          </Grid> \r\n                          <Grid item xs={3}>  \r\n                            <FormTitle name={translate('users_annuary.form_economic_data_inversion')} />     \r\n                            <NumberInput label={translate('users_economic_data.inv_building')}  fullWidth source=\"users_economic_data.inv_building\" parse={value => value ? value : 0 } validate={[validateDouble(translate('common.validation.number'))]} />                                        \r\n                            <NumberInput label={translate('users_economic_data.inv_theatre')} fullWidth source=\"users_economic_data.inv_theatre\" parse={value => value ? value : 0 } validate={[validateDouble(translate('common.validation.number'))]} />                                        \r\n                            <NumberInput label={translate('users_economic_data.inv_bar')} fullWidth source=\"users_economic_data.inv_bar\" parse={value => value ? value : 0 } validate={[validateDouble(translate('common.validation.number'))]} />                                        \r\n                            <NumberInput label={translate('users_economic_data.inv_accessibility')} fullWidth source=\"users_economic_data.inv_accessibility\" parse={value => value ? value : 0 } validate={[validateDouble(translate('common.validation.number'))]} />                                        \r\n                            <NumberInput label={translate('users_economic_data.inv_security')} fullWidth source=\"users_economic_data.inv_security\" parse={value => value ? value : 0 } validate={[validateDouble(translate('common.validation.number'))]} />                                        \r\n                            <NumberInput label={translate('users_economic_data.inv_others')} fullWidth source=\"users_economic_data.inv_others\" parse={value => value ? value : 0 } validate={[validateDouble(translate('common.validation.number'))]} />                                        \r\n\r\n                          </Grid> \r\n                        </Grid>\r\n                      </AccordionSection>\r\n                                \r\n                      <AccordionSection className=\"accordion\" label={translate('users_annuary.form_edited_books_books')} fullWidth defaultExpanded={false}> \r\n                        <span>{translate('users_annuary.form_desc_edited_books_books')}</span>\r\n                        <ArrayInput source=\"users_edited_books_books\" label=\"\" className=\"array-input\" disabled={annuaryForm.expired}>\r\n                          <SimpleFormIterator \r\n                            disableReordering\r\n                            inline\r\n                            className=\"simple-iterator-inline\"\r\n                            getItemLabel={index => ''}\r\n                          >\r\n                            <TextInput className=\"form-250\" source=\"name\" label={translate('common.name')} validate={[required(), validateMaxLength(100,translate('common.validation.maxLength'))]} />   \r\n                            <DateInput className=\"form-200\" source=\"date_publication\" label={translate('users_federation.edited_books_date')} validate={[required()]} />                                    \r\n                          </SimpleFormIterator>\r\n                        </ArrayInput>\r\n                      </AccordionSection>\r\n                                \r\n                      <AccordionSection className=\"accordion\" label={translate('users_annuary.form_edited_books_newsletters')} fullWidth defaultExpanded={false}>  \r\n                        <span>{translate('users_annuary.form_desc_edited_books_newsletters')}</span>\r\n                        <ArrayInput source=\"users_edited_books_newsletters\" label=\"\" className=\"array-input\" disabled={annuaryForm.expired}>\r\n                          <SimpleFormIterator \r\n                            disableReordering\r\n                            inline \r\n                            className=\"simple-iterator-inline\"\r\n                            getItemLabel={index => ''}\r\n                          >\r\n                            <TextInput className=\"form-250\" source=\"name\" label={translate('common.name')} validate={[required(), validateMaxLength(100,translate('common.validation.maxLength'))]} />                                       \r\n                            <TextInput className=\"form-200\" source=\"period\" label={translate('users_federation.edited_books_period')} validate={[validateMaxLength(100,translate('common.validation.maxLength'))]} />   \r\n                          </SimpleFormIterator>\r\n                        </ArrayInput>\r\n                      </AccordionSection>\r\n                                \r\n                      <AccordionSection className=\"accordion\" label={translate('users_annuary.form_edited_books_magazines')} fullWidth defaultExpanded={false}>  \r\n                        <span>{translate('users_annuary.form_desc_edited_books_magazines')}</span>\r\n                        <ArrayInput source=\"users_edited_books_magazines\" label=\"\" className=\"array-input\" disabled={annuaryForm.expired}>\r\n                          <SimpleFormIterator \r\n                            disableReordering\r\n                            inline \r\n                            className=\"simple-iterator-inline\"\r\n                            getItemLabel={index => ''}\r\n                          >\r\n                            <TextInput className=\"form-250\" source=\"name\" label={translate('common.name')} validate={[required(), validateMaxLength(100,translate('common.validation.maxLength'))]} />                                       \r\n                            <TextInput className=\"form-200\" source=\"period\" label={translate('users_federation.edited_books_period')} validate={[validateMaxLength(100,translate('common.validation.maxLength'))]} />   \r\n                          </SimpleFormIterator>\r\n                        </ArrayInput>\r\n                      </AccordionSection>\r\n                                                             \r\n                      <CustomFieldsEdit associations_id={annuaryForm.associations_id} target={targets.USER_FEDERATION_SPORTS} accordion={true} only_form_annuary={true} prefix=\"federation_sports_\"/>\r\n                                      \r\n                      {!annuaryForm.expired ?\r\n                        <div className=\"add_member_lopd\" dangerouslySetInnerHTML={{ __html: info.annuary_form_lopd ? info.annuary_form_lopd.replaceAll('%year%',annuaryForm.year) : ''}} />\r\n                        : null }\r\n\r\n                      {!annuaryForm.expired ?\r\n                        <div className=\"add_member_button\" >\r\n                          <SaveButton\r\n                            saving={formProps.saving}\r\n                            handleSubmitWithRedirect={formProps.handleSubmitWithRedirect}\r\n                            label={translate('users_annuary.form_send')}\r\n                            icon={<span />}\r\n                          />\r\n                        </div>\r\n                        : null }\r\n                    </fieldset>\r\n\r\n                    <br />\r\n\r\n                  </>\r\n\r\n\r\n                )}\r\n              />\r\n            </Grid> \r\n          </>                \r\n        </Box>\r\n          \r\n        <BootstrapDialog\r\n          onClose={closeErrorDialog}\r\n          aria-labelledby=\"customized-dialog-title\"\r\n          open={open}\r\n        >\r\n          <DialogTitle sx={{ m: 0, p: 2 }}>\r\n            {translate('users_annuary.title')}   \r\n            <IconButton\r\n              aria-label=\"close\"\r\n              onClick={closeErrorDialog}\r\n              sx={{\r\n                position: 'absolute',\r\n                right: 8,\r\n                top: 8,\r\n                color: (theme) => theme.palette.grey[500],\r\n              }}\r\n            >\r\n              <CloseIcon />\r\n            </IconButton>\r\n          </DialogTitle>\r\n\r\n          <DialogContent dividers>\r\n            <Typography gutterBottom>\r\n              {errorApi}\r\n            </Typography>\r\n          </DialogContent>\r\n        </BootstrapDialog>\r\n          \r\n      </>\r\n    );\r\n};\r\n\r\nconst FormTitle = ({...props}) => {\r\n  return (\r\n    <Grid container spacing={1} >\r\n      <Grid item xs={12} sm={12}>\r\n        <Typography variant=\"h6\" className=\"grey8 mt-30 bt-2-grey\" align=\"\">\r\n          {props.name}\r\n        </Typography>\r\n        <br />\r\n      </Grid>\r\n    </Grid>   \r\n  );\r\n};\r\n\r\nexport const HeaderPage = ({info,title,users_name,...props}) => {\r\n\r\n  return ( \r\n    <>\r\n      { info.annuary_form_logo ? \r\n        <>\r\n          { info.image > 0 ? \r\n            <center><ImageViewer docs_id={info.image} className=\"docs_logo_add_member\" is_public={true} /></center>\r\n            : \r\n            <Typography variant=\"h4\" className=\"grey8\" align=\"center\">\r\n              <br/>{info.name}          \r\n            </Typography>\r\n          } \r\n          <br />           \r\n          <Typography variant=\"h6\" className=\"grey8\" align=\"center\">              \r\n            {title}\r\n          </Typography>\r\n          <br /><br />\r\n        </>\r\n        : null }\r\n    </>\r\n  );\r\n};\r\n\r\n\r\n\r\nconst BootstrapDialog = styled(Dialog)(({ theme }) => ({\r\n  '& .MuiDialogContent-root': {\r\n    padding: theme.spacing(2),\r\n  },\r\n  '& .MuiDialogActions-root': {\r\n    padding: theme.spacing(1),\r\n  },\r\n}));\r\n","// in src/posts.js\r\nimport * as React from \"react\";\r\n\r\nimport {\r\n    BooleanInput,\r\n    List, \r\n    SimpleList,\r\n    Datagrid,\r\n    TextField,\r\n    ReferenceField,\r\n    EditButton,\r\n    DeleteButton,\r\n    Edit,\r\n    Create,\r\n    SimpleForm,\r\n    ReferenceInput,\r\n    SelectInput,\r\n    TextInput,\r\n    BooleanField ,\r\n    ReferenceManyField,\r\n    Pagination,\r\n    TabbedForm,\r\n    FormTab,\r\n    Filter,\r\n    ChipField, SingleFieldList,NumberInput,ImageInput ,ImageField,useListContext,ResourceContextProvider, FunctionField\r\n\r\n} from 'react-admin';\r\n\r\nimport Button from '@mui/material/Button';\r\n\r\n\r\nimport {\r\n    Grid,\r\n    Card,\r\n    CardMedia,\r\n    CardContent,\r\n    CardActions,\r\n    Typography,\r\n} from '@material-ui/core';\r\n\r\nimport Chip from '@material-ui/core/Chip';\r\nimport { EditableDatagrid, RowForm } from '@react-admin/ra-editable-datagrid';\r\nimport RichTextInput from 'ra-input-rich-text';\r\n\r\nimport { useMediaQuery } from '@material-ui/core';\r\nimport Paper from '@material-ui/core/Paper';\r\nimport Tabs from '@material-ui/core/Tabs';\r\nimport Tab from '@material-ui/core/Tab';\r\nimport { makeStyles } from '@material-ui/core/styles';\r\n\r\nimport { styled } from '@mui/material/styles';\r\nimport Dialog from '@mui/material/Dialog';\r\nimport DialogTitle from '@mui/material/DialogTitle';\r\nimport DialogContent from '@mui/material/DialogContent';\r\nimport IconButton from '@mui/material/IconButton';\r\nimport CloseIcon from '@mui/icons-material/Close';\r\n\r\n\r\nimport { i18nProvider, useTranslate  } from '../common/language';\r\nimport { subscriptionModule  } from '../common/utils';\r\nimport { targets, modules} from '../common/constants';\r\nimport {  ImageViewer } from '../resources/docs';\r\n\r\nconst useStyles = makeStyles({\r\n    root: {\r\n        marginTop: '1em',\r\n    },\r\n    media: {\r\n        height: 140,\r\n    },\r\n    title: {\r\n        paddingBottom: '0.5em',\r\n    },\r\n    actionSpacer: {\r\n        display: 'flex',\r\n        justifyContent: 'space-around',\r\n    },\r\n});\r\n\r\nconst BootstrapDialog = styled(Dialog)(({ theme }) => ({\r\n  '& .MuiDialogContent-root': {\r\n    padding: theme.spacing(2),\r\n  },\r\n  '& .MuiDialogActions-root': {\r\n    padding: theme.spacing(1),\r\n  },\r\n}));\r\n\r\n\r\nconst ModuleView: FC = props => {\r\n    const { ids, data, basePath } = useListContext();\r\n    const [open, setOpen] = React.useState(false);\r\n    const classes = useStyles(props);\r\n    const translate = useTranslate(); \r\n    \r\n    const openDialog = () => {\r\n        setOpen(true);\r\n    };\r\n    const closeDialog = () => {\r\n        setOpen(false);\r\n    };\r\n    \r\n    let emptyImg = <img src=\"/img/pixel.jpg\" className=\"public-events-img\" />;\r\n  \r\n    return(\r\n        <>\r\n        <Grid container spacing={4} className={classes.root}>\r\n           {ids.map((id: Identifier) => (\r\n                !( data[id].public_id === modules.CONTACTS_FAC && (!subscriptionModule(modules.MEMBER_FAC)) ||\r\n                  data[id].public_id === modules.FEDERATION && (!subscriptionModule(modules.FEDERATION)) ||\r\n                  data[id].public_id === modules.MEMBER_FAC && (!subscriptionModule(modules.MEMBER_FAC)) ||\r\n                  data[id].public_id === modules.RECERCAT && (!subscriptionModule(modules.RECERCAT)) ||\r\n                  data[id].public_id === modules.DOCUMENTS_FAC && (!subscriptionModule(modules.MEMBER_FAC))                   \r\n                ) ?\r\n                <Grid key={id} xs={12} sm={6} md={6} lg={4} xl={3} item>\r\n                    <Card>\r\n                        \r\n                        <ResourceContextProvider value=\"docs\">\r\n                            <ReferenceManyField                    \r\n                              reference=\"docs\"\r\n                              target=\"modules_id\"\r\n                              filter={{ target : targets.MODULE , items_id : data[id].id }}\r\n                              label=\"\"\r\n                              className=\"photo_user\"\r\n                              perPage={1000}\r\n                              sort={{ field: 'priority', order: 'ASC' }}\r\n                            >\r\n                              <SingleFieldList linkType={false} empty={emptyImg} >                                \r\n                                <FunctionField render={record => <ImageViewer docs_id={record.id} is_public={true} className=\"public-events-img\" />  }  />\r\n                              </SingleFieldList>\r\n\r\n                            </ReferenceManyField>\r\n                          </ResourceContextProvider>\r\n                        \r\n                        <CardContent className={classes.title}>\r\n                            { subscriptionModule(data[id].public_id) ? \r\n                            <Chip className=\"bg-green bold upper mb-10\" label={translate('modules_view.actived')} />\r\n                            : null }\r\n                            <Typography\r\n                                variant=\"h5\"\r\n                                component=\"h2\"\r\n                                align=\"left\"\r\n                            >\r\n                                {data[id].name}\r\n                            </Typography>\r\n                            <Typography variant=\"body2\" color=\"text.secondary\" className=\"mt-10\" >\r\n                                <span dangerouslySetInnerHTML={{ __html: data[id].description }} />\r\n                            </Typography>\r\n                            \r\n                        </CardContent>\r\n                        <CardActions className=\"justify-right\">\r\n                            { subscriptionModule(data[id].public_id) ? \r\n                                <Button size=\"small\" onClick={openDialog}>{translate('modules_view.to_desactive')}</Button>\r\n                            :\r\n                                <Button size=\"small\" onClick={openDialog}>{translate('modules_view.to_active_button')}</Button>\r\n                            }\r\n                        </CardActions>\r\n                    </Card>\r\n                </Grid> : null \r\n            ))}\r\n        </Grid>\r\n        \r\n        <BootstrapDialog\r\n            onClose={closeDialog}\r\n            aria-labelledby=\"customized-dialog-title\"\r\n            open={open}\r\n            fullWidth\r\n            maxWidth=\"md\"\r\n          >\r\n            <DialogTitle sx={{ m: 0, p: 2 }}>\r\n              {translate('modules_view.change_modules_title')}   \r\n              <IconButton\r\n                aria-label=\"close\"\r\n                onClick={closeDialog}\r\n                sx={{\r\n                  position: 'absolute',\r\n                  right: 8,\r\n                  top: 8,\r\n                  color: (theme) => theme.palette.grey[500],\r\n                }}\r\n              >\r\n                <CloseIcon />\r\n              </IconButton>\r\n            </DialogTitle>\r\n\r\n            <DialogContent>   \r\n                { window.location.hostname.replaceAll('.','')=='admingestioentitatscat' || subscriptionModule(modules.RECERCAT) ? \r\n                translate('modules_view.to_activate')\r\n                :\r\n                translate('modules_view.to_activate_sifac')\r\n                }                 \r\n              <br />\r\n              <br />\r\n            </DialogContent>\r\n            \r\n        </BootstrapDialog>\r\n        </>\r\n    ) ;\r\n};\r\n\r\n\r\nexport const ModulesViewList = props => {\r\n    const translate = useTranslate(); \r\n    \r\n    return (\r\n            <>\r\n            <Typography gutterBottom variant=\"h5\" component=\"div\" className=\"mt-20\">\r\n                {translate('modules_view.title')}\r\n            </Typography>\r\n            <ResourceContextProvider value=\"modules_view\">\r\n                <List\r\n                    {...props}\r\n                    sort={{ field: 'priority', order: 'ASC' }}\r\n                    perPage={1000}\r\n                    pagination={false}\r\n                    component=\"div\"\r\n                    actions={false}\r\n                    basePath=\"modules_view\"\r\n                >\r\n                    <ModuleView />\r\n                </List>\r\n            </ResourceContextProvider>\r\n            </>\r\n    );\r\n}\r\n\r\n/*\r\n\r\nexport const ModulesViewListOld = (props) => {\r\n    const translate = useTranslate(); \r\n    const isSmall = useMediaQuery(theme => theme.breakpoints.down('sm'));\r\n    return (\r\n        <List {...props}>\r\n            <Datagrid>                   \r\n                <TextField source=\"name\" label={translate('common.name')}/>\r\n                <BooleanField source=\"actived\" label={translate('common.actived')} />\r\n                <BooleanField source=\"visible\" label={translate('common.visible')} />\r\n                <TextField source=\"priority\" label={translate('common.priority')}/>\r\n                <EditButton />\r\n                <DeleteButton />\r\n            </Datagrid>\r\n        </List>\r\n    );\r\n}\r\n\r\nconst ElementTitle = ({ record }) => {\r\n    const translate = useTranslate(); \r\n    return <span>{translate('common.edit')} {record ? `\"${record.name}\"` : ''}</span>;\r\n};\r\n\r\nexport const ModulesViewEdit  = ({ id, ...props }) => {\r\n\r\n    const translate = useTranslate(); \r\n    return (\r\n\r\n    <Edit title={<ElementTitle />} {...props} id={id} > \r\n    <TabbedForm>\r\n            <FormTab\r\n                label={translate('subscriptions.module')}\r\n            >       \r\n                <TextInput source=\"public_id\" label={translate('common.name_internal')} />      \r\n                <TextInput source=\"name\" label={translate('common.name')} />\r\n                <TextInput multiline source=\"description\" label={translate('common.description')} />\r\n                <ImageInput source=\"image\" label={translate('common.image')} accept=\"image/*\">\r\n                    <ImageField source=\"image\" title=\"title\" />\r\n                </ImageInput>\r\n                <BooleanInput source=\"actived\" label={translate('common.actived')} />\r\n                <BooleanInput source=\"visible\" label={translate('common.visible')} />\r\n                <NumberInput source=\"priority\" step={1} />\r\n            </FormTab>\r\n\r\n            <FormTab\r\n                label={translate('subscriptions.options')}\r\n            >\r\n\r\n            <ReferenceManyField {...props}\r\n                fullWidth\r\n                label=\"\"\r\n                reference=\"modules_options\"\r\n                target=\"modules_id\"\r\n                hasCreate\r\n            >\r\n            \r\n                <EditableDatagrid                    \r\n                    undoable\r\n                    createForm={<OptionForm initialValues={{ modules_id: id }} />}\r\n                    editForm={<OptionForm />}\r\n                >\r\n                    <TextField source=\"public_id\" label={translate('common.name_internal')} />\r\n                    <TextField source=\"name\" label={translate('common.name')} />\r\n                    <TextField multiline source=\"description\" label={translate('common.description')} />\r\n                 \r\n                </EditableDatagrid>\r\n                \r\n            </ReferenceManyField>   \r\n\r\n            </FormTab>\r\n    </TabbedForm>\r\n    </Edit>\r\n);\r\n};\r\n\r\nconst OptionForm= props => {\r\n    const translate = useTranslate(); \r\n    return (\r\n    <RowForm {...props}>\r\n        <TextInput source=\"public_id\" label={translate('common.name_internal')} />\r\n        <TextInput source=\"name\" label={translate('common.name')} />     \r\n        <TextInput multiline source=\"description\" label={translate('common.description')} />   \r\n    </RowForm>\r\n);\r\n};\r\n\r\n\r\nexport const ModulesViewCreate = props => {\r\n    const translate = useTranslate(); \r\n    return (\r\n    <Create {...props}>\r\n        <SimpleForm>\r\n            <TextInput source=\"public_id\" label={translate('common.name_internal')} />\r\n            <TextInput source=\"name\" label={translate('common.name')} /> \r\n            <TextInput source=\"description\" multiline label={translate('common.description')} />\r\n            <ImageInput source=\"image\" label={translate('common.image')} accept=\"image/*\">\r\n                <ImageField source=\"image\" title=\"title\" />\r\n            </ImageInput>\r\n            <BooleanInput source=\"actived\" label={translate('common.actived')}/>\r\n            <BooleanInput source=\"visible\" label={translate('common.visible')}/>\r\n            <NumberInput source=\"priority\" step={1} label={translate('common.priority')} />\r\n        </SimpleForm>\r\n    </Create>\r\n);\r\n};\r\n\r\n*/","// in src/customRoutes.js\r\nimport * as React from 'react';\r\nimport { Route } from 'react-router-dom';\r\nimport { Settings, SettingsData, SettingsNotAvailable, SettingsAddMember,SettingsEmails,SettingsEmailsItem,SettingsSAdmin, SettingsClassroomRequests,SettingsAnnuaryForm, SettingsProfile, SettingsDonationsCertificates, SettingsDonationsOwn, SettingsDocs  } from './settings';\r\nimport { AddMember } from './components/AddMember';\r\nimport { SettingsIbans } from './components/Banks';\r\nimport { SettingsPaymentSystems } from './components/PaymentSystems';\r\nimport { SettingsPostalLabels } from './components/PostalLabels';\r\nimport { RecercatAddMember } from './components/RecercatAddMember';\r\nimport { RecercatValidateRequest } from './components/RecercatValidateRequest';\r\nimport { RecercatResumeCenter } from './components/RecercatResumeCenter';\r\nimport { ForgotPassword,ResetPassword } from './components/Password';\r\nimport { SignUp } from './components/SignUp';\r\nimport { default as Dashboard } from './components/Dashboard';\r\nimport { NotFound } from './components/NotFound';\r\nimport { ClassroomsRequests, ClassroomsRequestsItem } from './components/ClassroomsRequests';\r\nimport { Reports,ReportsAnnuary,ReportsResponsabilities,ReportsDonationsTransferValidations, ReportsDonationsProjects, ReportsDonationsPayments, ReportsDonationsCertificates } from './components/Reports';\r\nimport { PublicEventsList, PublicEvent } from './components/PublicEvents';\r\nimport { CheckMembers } from './components/CheckMembers';\r\nimport { AnnuaryForm } from './components/Annuary';\r\nimport { ModulesViewList } from './components/ModulesView';\r\nimport { DonationsUsersList } from './resources/donations_users';\r\n\r\nexport default [\r\n  <Route exact path=\"/dashboard\" component={Dashboard} />,\r\n  <Route exact path=\"/not-found\" component={NotFound} noLayout /> ,   \r\n  <Route exact path=\"/settings\" component={Settings} />,\r\n  <Route exact path=\"/settings-data\" component={SettingsData} />,\r\n  <Route exact path=\"/settings-ibans\" component={SettingsIbans} />,\r\n  <Route exact path=\"/settings-payment-systems\" component={SettingsPaymentSystems} />,\r\n  <Route exact path=\"/settings-postal-labels\" component={SettingsPostalLabels} />,\r\n  <Route exact path=\"/settings-add-member\" component={SettingsAddMember} />,    \r\n  <Route exact path=\"/settings-classrooms-requests\" component={SettingsClassroomRequests} />,\r\n  <Route exact path=\"/settings-annuary-form\" component={SettingsAnnuaryForm} />, \r\n  <Route exact path=\"/settings-donations-certificates\" component={SettingsDonationsCertificates} />,\r\n  <Route exact path=\"/settings-donations-own\" component={SettingsDonationsOwn} />,\r\n  <Route exact path=\"/settings-docs\" component={SettingsDocs} />,\r\n  <Route exact path=\"/settings-emails\" component={SettingsEmails} />,\r\n  <Route exact path=\"/settings-emails/:id\" component={SettingsEmailsItem} />,\r\n  <Route exact path=\"/settings-emails/:id/docs\" component={SettingsEmailsItem} />,\r\n  <Route exact path=\"/settings-users\" component={SettingsNotAvailable} />,\r\n  <Route exact path=\"/settings-subscription\" component={SettingsNotAvailable} />,\r\n  <Route exact path=\"/settings-profile\" component={SettingsProfile} />,\r\n  <Route exact path=\"/settings-sadmin\" component={SettingsSAdmin} />,\r\n  <Route path=\"/public/add-member\" component={AddMember} noLayout/>,\r\n  <Route path=\"/public/sol-licitud-carnet-recercat\" component={RecercatAddMember} noLayout/>,\r\n  <Route path=\"/public/validar-sol-licitud-carnet-recercat\" component={RecercatValidateRequest} noLayout/>,\r\n  <Route path=\"/public/resum-centre\" component={RecercatResumeCenter} noLayout/>,\r\n  <Route path=\"/public/classrooms-requests\" component={ClassroomsRequests} noLayout/>,\r\n  <Route path=\"/public/classrooms-requests-item\" component={ClassroomsRequestsItem} noLayout/>,\r\n  <Route exact path=\"/forgot-password\" component={ForgotPassword} noLayout/>,\r\n  <Route exact path=\"/reset-password\" component={ResetPassword} noLayout/>,\r\n  <Route exact path=\"/sign-up\" component={SignUp} noLayout/>,\r\n  <Route exact path=\"/reports\" component={Reports} />,\r\n  <Route exact path=\"/donations_users/:id\" component={DonationsUsersList} />,\r\n  <Route exact path=\"/reports/donations_certificates/:year\" component={ReportsDonationsCertificates} />,\r\n  <Route exact path=\"/reports/donations_projects\" component={ReportsDonationsProjects} />,\r\n  <Route exact path=\"/reports/donations_transfer_validations\" component={ReportsDonationsTransferValidations} />,\r\n  <Route exact path=\"/reports/donations_users/:id\" component={DonationsUsersList} />,  \r\n  <Route exact path=\"/reports/donations_payments/:date_from/:date_to\" component={ReportsDonationsPayments} />,  \r\n  <Route exact path=\"/reports/annuary\" component={ReportsAnnuary} />,\r\n  <Route exact path=\"/reports/responsabilities\" component={ReportsResponsabilities} />,\r\n  <Route exact path=\"/modules-view\" component={ModulesViewList} />,\r\n  <Route path=\"/public/events/list\" component={PublicEventsList} noLayout/>,\r\n  <Route path=\"/public/events\" component={PublicEvent} noLayout/>,   \r\n  <Route path=\"/public/annuary\" component={AnnuaryForm} noLayout/>,\r\n  <Route path=\"/public/check-members\" component={CheckMembers} noLayout/>,  \r\n    \r\n];\r\n","// in src/posts.js\r\nimport * as React from 'react';\r\n\r\nimport {\r\n  BooleanInput,\r\n  TextField,\r\n  TextInput,\r\n  BooleanField ,\r\n  ReferenceManyField,\r\n  useTranslate,NumberInput,required\r\n} from 'react-admin';\r\n\r\nimport { useFormState } from 'react-final-form';\r\n\r\nimport { EditableDatagrid, RowForm } from '@react-admin/ra-editable-datagrid';\r\n\r\nimport { makeStyles } from '@material-ui/core/styles';\r\n\r\n//import { useStyles  } from '../common/styles';\r\n\r\nimport { validateMaxLength, validateInteger  } from './../components/Validator';\r\n\r\nconst choicesPeriodQuote = [\r\n  { id: 0, name: 'Mensual' },\r\n  { id: 1, name: 'Bimensual' },\r\n  { id: 2, name: 'Trimestral' },\r\n  { id: 3, name: 'Quatrimestral' },\r\n  { id: 4, name: 'Semestral' },\r\n  { id: 5, name: 'Anual' },\r\n];\r\n\r\nconst useStyles = makeStyles({\r\n  rowCell: {\r\n    padding: '6px 5px 6px 5x'\r\n  },\r\n});\r\n\r\nexport const GroupQuotePeriodList= (props) => {\r\n  const translate = useTranslate();   \r\n  const { values } = useFormState();\r\n  const classes = useStyles();\r\n    \r\n  return (\r\n    <ReferenceManyField                    \r\n      reference=\"groups_quotes_periods\"\r\n      target=\"groups_quotes_id\"\r\n      label=\"Periodicitats\"\r\n      sort={{ field: 'priority', order: 'ASC' }}\r\n      perPage={1000}\r\n    >\r\n\r\n      <EditableDatagrid                       \r\n        createForm={<GroupQuotePeriodEdit initialValues={{ groups_quotes_id: props.record.id, quantity: 0, month_1: 0,month_2: 0,month_3: 0,month_4: 0,month_5: 0,month_6: 0,month_7: 0,month_8: 0,month_9: 0,month_10: 0,month_11: 0,month_12: 0, status: true, priority: 2 }} />}\r\n        editForm={<GroupQuotePeriodEdit />}\r\n        label={translate('groups_quotes.title')}\r\n        hasCreate\r\n        className=\"table-quotes-periods\"\r\n      >\r\n        <TextField source=\"name\" label={translate('common.name')} sortable={false} />            \r\n        <TextField source=\"month_1\" label={translate('common.month_1')} sortable={false} /> \r\n        <TextField source=\"month_2\" label={translate('common.month_2')} sortable={false} /> \r\n        <TextField source=\"month_3\" label={translate('common.month_3')} sortable={false} /> \r\n        <TextField source=\"month_4\" label={translate('common.month_4')} sortable={false} /> \r\n        <TextField source=\"month_5\" label={translate('common.month_5')} sortable={false} /> \r\n        <TextField source=\"month_6\" label={translate('common.month_6')} sortable={false} /> \r\n        <TextField source=\"month_7\" label={translate('common.month_7')} sortable={false} /> \r\n        <TextField source=\"month_8\" label={translate('common.month_8')} sortable={false} /> \r\n        <TextField source=\"month_9\" label={translate('common.month_9')} sortable={false} /> \r\n        <TextField source=\"month_10\" label={translate('common.month_10')} sortable={false} /> \r\n        <TextField source=\"month_11\" label={translate('common.month_11')} sortable={false} /> \r\n        <TextField source=\"month_12\" label={translate('common.month_12')} sortable={false} />             \r\n        <BooleanField source=\"status\" label={translate('common.actived_female')} sortable={false} /> \r\n        <TextField source=\"priority\" step={1} label={translate('common.priority')} sortable={false} />\r\n      </EditableDatagrid>\r\n\r\n    </ReferenceManyField> \r\n  );\r\n};\r\n\r\n\r\nexport const GroupQuotePeriodEdit= (props) => {\r\n  const translate = useTranslate();   \r\n  const { values } = useFormState();\r\n  const classes = useStyles();\r\n\r\n  return (\r\n    <RowForm {...props} >\r\n      <TextInput source=\"name\" label={translate('common.name')} validate={[required(),validateMaxLength(100,translate('common.validation.maxLength'))]} />   \r\n      <NumberInput source=\"month_1\" label=\"\" parse={value => value ? value : 0 } validate={[validateInteger(translate('common.validation.number'))]} /> \r\n      <NumberInput source=\"month_2\" label=\"\" parse={value => value ? value : 0 } validate={[validateInteger(translate('common.validation.number'))]} /> \r\n      <NumberInput source=\"month_3\" label=\"\" parse={value => value ? value : 0 } validate={[validateInteger(translate('common.validation.number'))]} /> \r\n      <NumberInput source=\"month_4\" label=\"\" parse={value => value ? value : 0 } validate={[validateInteger(translate('common.validation.number'))]} /> \r\n      <NumberInput source=\"month_5\" label=\"\" parse={value => value ? value : 0 } validate={[validateInteger(translate('common.validation.number'))]} /> \r\n      <NumberInput source=\"month_6\" label=\"\" parse={value => value ? value : 0 } validate={[validateInteger(translate('common.validation.number'))]} /> \r\n      <NumberInput source=\"month_7\" label=\"\" parse={value => value ? value : 0 } validate={[validateInteger(translate('common.validation.number'))]} /> \r\n      <NumberInput source=\"month_8\" label=\"\" parse={value => value ? value : 0 } validate={[validateInteger(translate('common.validation.number'))]} /> \r\n      <NumberInput source=\"month_9\" label=\"\" parse={value => value ? value : 0 } validate={[validateInteger(translate('common.validation.number'))]} /> \r\n      <NumberInput source=\"month_10\" label=\"\" parse={value => value ? value : 0 } validate={[validateInteger(translate('common.validation.number'))]} /> \r\n      <NumberInput source=\"month_11\" label=\"\" parse={value => value ? value : 0 } validate={[validateInteger(translate('common.validation.number'))]} /> \r\n      <NumberInput source=\"month_12\" label=\"\" parse={value => value ? value : 0 } validate={[validateInteger(translate('common.validation.number'))]} /> \r\n      <BooleanInput source=\"status\" label=\"\" /> \r\n      <NumberInput source=\"priority\" step={1} label={translate('common.priority')} parse={value => value ? value : 0 } validate={[validateInteger(translate('common.validation.number'))]}  />\r\n    </RowForm>\r\n  );\r\n};\r\n\r\n","import React, { useState } from 'react';\r\n\r\nimport {\r\n  BooleanInput,\r\n  List,\r\n  Datagrid,\r\n  TextField,\r\n  EditButton,\r\n  DeleteButton,\r\n  Edit,\r\n  Create,\r\n  SimpleForm,\r\n  TextInput,\r\n  BooleanField ,\r\n  useTranslate,\r\n  ResourceContextProvider, TopToolbar, CreateButton,NumberInput,useRedirect,useRefresh,SelectField,RadioButtonGroupInput,DateInput,required,\r\n  FormDataConsumer, useNotify, SaveButton, Toolbar, FunctionField, useCreate, useDataProvider, Button, FormWithRedirect\r\n} from 'react-admin';\r\n\r\nimport { Link } from 'react-router-dom';\r\n\r\n\r\nimport { parse } from 'query-string';\r\n\r\nimport Grid from '@mui/material/Grid';\r\nimport VolunteerActivismIcon from '@mui/icons-material/VolunteerActivism';\r\nimport IconCancel from '@material-ui/icons/Cancel';\r\n\r\nimport Dialog from '@material-ui/core/Dialog';\r\nimport DialogTitle from '@material-ui/core/DialogTitle';\r\nimport DialogContent from '@material-ui/core/DialogContent';\r\nimport DialogActions from '@material-ui/core/DialogActions';\r\nimport Tooltip from '@mui/material/Tooltip';\r\nimport DoneIcon from '@mui/icons-material/Done';\r\n\r\nimport { makeStyles } from '@material-ui/core/styles';\r\n\r\nimport { GroupQuotePeriodList } from './groups_quotes_periods';\r\n\r\n\r\nimport { validateMaxLength, validateInteger  } from './../components/Validator';\r\n\r\n\r\nexport const GroupsQuotesList = ({ group_id, ...props }) => {\r\n  const translate = useTranslate();  \r\n\r\n  return (            \r\n    <ResourceContextProvider value=\"groups_quotes\" >\r\n\r\n      <List              \r\n        basePath=\"/groups_quotes\" \r\n        filter={{ groups_id : group_id }}\r\n        actions={<ListActions groups_id={ group_id } /> }\r\n        empty={<ListActions groups_id={ group_id } /> }     \r\n        label=\"\"  \r\n        title={<ElementTitleGroupsQuotes />}  \r\n        bulkActionButtons={false} \r\n        pagination={false}\r\n        perPage={1000}\r\n        sort={{ field: 'priority', order: 'ASC' }}\r\n      >\r\n        <Datagrid>                    \r\n          <TextField source=\"name\" label={translate('common.name')} sortable={false} />  \r\n          <SelectField source=\"type\" choices={choicesTypeQuote} optionText=\"name\" optionValue=\"id\" label={translate('common.type')} sortable={false} />\r\n          <FunctionField render={record => record.apply_to_all ? <BooleanField source=\"apply_to_all\" /> : '' } label={translate('groups_quotes.apply_to_all_list')} sortable={false}  /> \r\n          <BooleanField source=\"status\" label={translate('common.actived_female')} sortable={false}/>     \r\n          <FunctionField render={record => record.is_donation ? <><BooleanField source=\"is_donation\" /></> : '' } label={translate('groups_quotes.is_donation')} sortable={false}  /> \r\n          <FunctionField render={record => <>{record.is_donation ? <ApplyToRemittancesButton id={record.id} /> : null }</>  } label={translate('common.actions')} sortable={false}  /> \r\n          <EditButton groups_id={ group_id } />\r\n        </Datagrid>                            \r\n      </List>\r\n    </ResourceContextProvider>\r\n  );\r\n};\r\n\r\n\r\n\r\nexport const ApplyToRemittancesButton = ({ id, ...props }) => {\r\n\r\n  const [showDialog, setShowDialog] = useState(false);\r\n  const [create, { loading }] = useCreate('groups_quotes/' + id + '/apply-to-remittances' );\r\n  const notify = useNotify();\r\n  const refresh = useRefresh();    \r\n  const translate = useTranslate();  \r\n  const dataProvider = useDataProvider();\r\n  \r\n  const today = new Date();\r\n          \r\n  const handleClick = () => {        \r\n    setShowDialog(true);        \r\n  };\r\n\r\n  const handleCloseClick = () => {\r\n    setShowDialog(false);\r\n  };\r\n\r\n  const handleSubmit = async values => {\r\n    create(            \r\n      { payload: { data: values } },\r\n      {\r\n        onSuccess: ({ data }) => {\r\n          setShowDialog(false);\r\n          notify( translate('groups_quotes.apply_to_all_donation_ok') , 'success');\r\n        },\r\n        onFailure: ( error ) => {\r\n          notify( translate('groups_quotes.apply_to_all_donation_ko') , 'error');\r\n        }\r\n      }\r\n    );\r\n  };\r\n      \r\n  return (\r\n    <>        \r\n      \r\n        <Button onClick={handleClick} label={translate('groups_quotes.apply_to_all_donation')} title={translate('groups_quotes.apply_to_all_donation_title')} className=\"\">\r\n          <VolunteerActivismIcon  />\r\n        </Button>\r\n\r\n      <Dialog\r\n        fullWidth\r\n        open={showDialog}\r\n        onClose={handleCloseClick}\r\n        aria-label={translate('groups_quotes.apply_to_all_donation_title')}\r\n      >\r\n        <DialogTitle>{translate('groups_quotes.apply_to_all_donation_title')}</DialogTitle>\r\n\r\n        <FormWithRedirect\r\n          save={handleSubmit}\r\n          initialValues={{ groups_quotes_id : id }}\r\n          render={({\r\n            handleSubmitWithRedirect,\r\n            pristine,\r\n            saving\r\n          }) => (\r\n            <>\r\n              <DialogContent>\r\n                {translate('groups_quotes.apply_to_all_donation_desc')}\r\n              </DialogContent>\r\n              <DialogActions>\r\n                <Button label=\"ra.action.cancel\" onClick={handleCloseClick} disabled={loading} >\r\n                  <IconCancel />\r\n                </Button>\r\n                <SaveButton\r\n                  handleSubmitWithRedirect={\r\n                    handleSubmitWithRedirect\r\n                  }\r\n                  pristine={pristine}\r\n                  saving={saving}\r\n                  disabled={loading}\r\n                  label={translate('common.yes')}\r\n                  icon={<DoneIcon />}\r\n                />\r\n              </DialogActions>\r\n            </>\r\n          )}\r\n        />\r\n      </Dialog>\r\n    </>\r\n  );\r\n};\r\n\r\n\r\nconst ListActions = ({groups_id, ...props}) => {\r\n  return (\r\n    <TopToolbar>\r\n      <CreateCustomButton groups_id={groups_id} />\r\n    </TopToolbar>\r\n  );\r\n};\r\n\r\nconst CreateCustomButton = ({groups_id, ...props}) => {\r\n\r\n  return (\r\n    <CreateButton\r\n      {...props}\r\n      component={Link}\r\n      to={{\r\n        pathname: '/groups_quotes/create',\r\n        search: `?groups_id=${groups_id}`, \r\n      }}\r\n    />\r\n  );\r\n};\r\n\r\n/*\r\nconst Empty = () => {\r\n    const { basePath, resource } = useListContext();\r\n    return (\r\n        <Box textAlign=\"center\" m={1}>            \r\n            <CreateButton basePath={basePath} />            \r\n        </Box>\r\n    );\r\n};*/\r\n\r\n/*\r\nconst ListActions = ( {groups_id, ...props} ) => {\r\n    return (\r\n    <TopToolbar>\r\n        <CreateButton \r\n        component={Link}\r\n        to={{\r\n            pathname: '/groups_quotes/create',\r\n            state: { record: { groups_id: groups_id } }\r\n        }}/>\r\n    </TopToolbar>\r\n);\r\n};*/\r\n\r\nconst choicesTypeQuote = [\r\n  { id: 0, name: 'Periòdica' },\r\n  { id: 1, name: 'Puntual' }\r\n];\r\n\r\nexport const GroupsQuotesEdit = ({ id, ...props }) => {\r\n\r\n  const translate = useTranslate();   \r\n\r\n  const notify = useNotify();\r\n  const refresh = useRefresh();\r\n  const redirect = useRedirect();\r\n\r\n  const onSuccess = ({ data }) => {\r\n    notify(translate('common.notification.updated'));\r\n    redirect(`/groups-tree/${data.groups_id}/quotes`);\r\n    refresh();\r\n  };\r\n\r\n  return (\r\n    <Edit \r\n      title={<ElementTitleEdit />} \r\n      {...props}  \r\n      id={id}\r\n      onSuccess={onSuccess}   \r\n      mutationMode=\"pessimistic\"\r\n    > \r\n      <SimpleForm\r\n        toolbar={<CustomToolbar {...props} />}\r\n      >\r\n        <Grid container spacing={12}>\r\n          <Grid item xs={4}>\r\n            <BooleanInput fullWidth source=\"status\" label={translate('common.actived_female')} />                     \r\n          </Grid>\r\n        </Grid>\r\n\r\n        <Grid container spacing={2}>\r\n          <Grid item xs={9}>\r\n            <TextInput fullWidth source=\"name\" label={translate('common.name')} validate={[required(),validateMaxLength(25,translate('common.validation.maxLength'))]} /> \r\n          </Grid>\r\n                \r\n          <Grid item xs={3}>\r\n            <NumberInput fullWidth source=\"priority\" step={1} label={translate('common.priority')} parse={value => value ? value : 0 } validate={[validateInteger(translate('common.validation.number'))]} />\r\n          </Grid>\r\n        </Grid>\r\n            \r\n        <Grid container spacing={2}>\r\n          <Grid item xs={12}>\r\n            <BooleanInput fullWidth source=\"apply_to_all\" label={translate('groups_quotes.apply_to_all')} />                     \r\n          </Grid>\r\n        </Grid>\r\n        \r\n        <Grid container spacing={2}>\r\n          <Grid item xs={12}>\r\n            <BooleanInput fullWidth source=\"is_donation\" label={translate('groups_quotes.is_donation')} />                     \r\n          </Grid>\r\n        </Grid>\r\n            \r\n        <RadioButtonGroupInput source=\"type\" choices={choicesTypeQuote} optionText=\"name\" optionValue=\"id\" label={translate('common.type')} disabled />\r\n        <FormDataConsumer>\r\n          {({ formData, ...rest }) => formData.type==1 &&\r\n                    <DateInput source=\"date_payment\" label={translate('groups_quotes.date_payment')} {...rest} />\r\n          }\r\n        </FormDataConsumer>\r\n        <FormDataConsumer>\r\n          {({ formData, ...rest }) => (formData.type==1 || formData.type==2 ) &&\r\n                        <NumberInput source=\"quantity\" step={1} label={translate('groups_quotes.quantity')} {...rest} validate={[validateInteger(translate('common.validation.number'))]} />\r\n          }\r\n        </FormDataConsumer>\r\n        <FormDataConsumer>\r\n          {({ formData, ...rest }) => formData.type==0 &&\r\n                    <GroupQuotePeriodList {...rest} />\r\n          }\r\n        </FormDataConsumer>\r\n        <br />       \r\n\r\n      </SimpleForm>\r\n\r\n    </Edit>\r\n  );\r\n\r\n};\r\n\r\nconst customToolbarStyles = makeStyles({\r\n  toolbar: {\r\n    display: 'flex',\r\n    justifyContent: 'space-between',\r\n  },\r\n});\r\n\r\nconst CustomToolbar = props => {\r\n    \r\n  let strRedirect = `/groups-tree/${props.record.groups_id}/quotes`;\r\n  return (\r\n    <Toolbar {...props} classes={customToolbarStyles()}>\r\n      <SaveButton />\r\n      <DeleteButton undoable={false} redirect={strRedirect} />\r\n    </Toolbar>\r\n  );\r\n};\r\n\r\nexport const GroupsQuotesCreate = props => {\r\n\r\n  const translate = useTranslate();   \r\n  const today = new Date().toISOString().slice(0, 10);\r\n    \r\n  const { groups_id: groups_id_string } = parse(props.location.search);\r\n  const groups_id = groups_id_string ? parseInt(groups_id_string, 10) : '';\r\n\r\n  return (\r\n    <Create {...props} \r\n      title={<ElementTitleNew />} \r\n    >\r\n      <SimpleForm\r\n        redirect=\"edit\"\r\n        initialValues={{ type: 0, status: 1, priority: 1, date_payment: today, groups_id }}\r\n      >\r\n        <Grid container spacing={12}>\r\n          <Grid item xs={2}>\r\n            <BooleanInput fullWidth source=\"status\" label={translate('common.actived_female')} />                     \r\n          </Grid>\r\n        </Grid>\r\n\r\n        <Grid container spacing={2}>\r\n          <Grid item xs={9}>\r\n            <TextInput fullWidth source=\"name\" label={translate('common.name')} validate={[required(),validateMaxLength(25,translate('common.validation.maxLength'))]} /> \r\n          </Grid>\r\n                \r\n          <Grid item xs={3}>\r\n            <NumberInput fullWidth source=\"priority\" step={1} label={translate('common.priority')} parse={value => value ? value : 0 } validate={[validateInteger(translate('common.validation.number'))]} />\r\n          </Grid>\r\n        </Grid>\r\n            \r\n        <RadioButtonGroupInput source=\"type\" choices={choicesTypeQuote} optionText=\"name\" optionValue=\"id\" label={translate('common.type')} validate={required()} />\r\n        <FormDataConsumer>\r\n          {({ formData, ...rest }) => formData.type==1 &&              \r\n                <Grid container spacing={2}>\r\n                  <Grid item xs={3}>\r\n                    <DateInput fullWidth source=\"date_payment\" label={translate('groups_quotes.date_payment')} {...rest} /> \r\n                  </Grid>                    \r\n                  <Grid item xs={3}>\r\n                    <NumberInput fullWidth source=\"quantity\" step={1} label={translate('groups_quotes.quantity')}  {...rest} validate={[validateInteger(translate('common.validation.number'))]} />\r\n                  </Grid>\r\n                </Grid>\r\n          }\r\n        </FormDataConsumer>\r\n        <FormDataConsumer>\r\n          {({ formData, ...rest }) => ( formData.type==2 ) &&\r\n                <NumberInput source=\"quantity\" step={1} label={translate('groups_quotes.quantity')}  {...rest} validate={[validateInteger(translate('common.validation.number'))]} />                      \r\n          }\r\n        </FormDataConsumer>\r\n            \r\n            \r\n      </SimpleForm>\r\n    </Create>\r\n  );\r\n\r\n};\r\n\r\nconst ElementTitleEdit = ({ record }) => {\r\n  const translate = useTranslate(); \r\n  console.log(record);\r\n  return <span>{translate('common.edit')} {record ? '${record.name}' : ''}</span>;\r\n};\r\n\r\nconst ElementTitleNew = () => {\r\n  const translate = useTranslate(); \r\n  return <span>Afegir quota</span>;\r\n};\r\n\r\nconst ElementTitleGroupsQuotes = ({ record }) => {\r\n  const translate = useTranslate(); \r\n  return '';\r\n};","import {    \r\n  useTranslate\r\n} from 'react-admin';\r\n\r\nexport const PDFField = ({ url, ...props }) => {\r\n    \r\n  const translate = useTranslate();   \r\n  const className = props.className  ? props.className : 'pdfFieldContainer';\r\n  \r\n  return (   \r\n    <div className={className}>\r\n      {url ? <iframe src={url} title=\"PDF\"></iframe> : <p>{translate('groups_cards.pdf_card_preview')}</p>}\r\n    </div>\r\n  );\r\n\r\n};","// in src/posts.js\r\nimport * as React from 'react';\r\nimport { useState, useEffect } from 'react';\r\n\r\nimport {\r\n  BooleanInput,\r\n  Datagrid,\r\n  DeleteButton,\r\n  TextInput,\r\n  SelectInput,\r\n  BooleanField ,\r\n  ReferenceManyField,\r\n  useTranslate,\r\n  ResourceContextProvider, Button, TopToolbar,NumberInput,useRefresh,SelectField,RadioButtonGroupInput,required,\r\n  FormDataConsumer, useNotify, SaveButton, useCreate, FormWithRedirect,Confirm, useDataProvider, useUpdate, FunctionField\r\n} from 'react-admin';\r\n\r\nimport { ColorField, ColorInput } from 'react-admin-color-input';\r\n\r\nimport { useFormState } from 'react-final-form';\r\n\r\n\r\nimport Grid from '@mui/material/Grid';\r\n\r\n\r\nimport Typography from '@material-ui/core/Typography';\r\n\r\nimport Divider from '@mui/material/Divider';\r\nimport Dialog from '@material-ui/core/Dialog';\r\nimport DialogTitle from '@material-ui/core/DialogTitle';\r\nimport DialogContent from '@material-ui/core/DialogContent';\r\nimport DialogActions from '@material-ui/core/DialogActions';\r\n\r\nimport EmailIcon from '@mui/icons-material/Email';\r\nimport ReplayCircleFilledIcon from '@mui/icons-material/ReplayCircleFilled';\r\nimport DownloadIcon from '@mui/icons-material/Download';\r\nimport IconCancel from '@material-ui/icons/Cancel';\r\nimport Tooltip from '@mui/material/Tooltip';\r\nimport EditIcon from '@material-ui/icons/Edit';\r\nimport IconContentAdd from '@material-ui/icons/Add';\r\nimport PictureAsPdfIcon from '@mui/icons-material/PictureAsPdf';\r\n\r\n\r\nimport { targets , apiUrl, apiOrigin, apiDefaultLanguage, modules, cardTypes } from './../common/constants';\r\nimport { BoxPhotoUser } from './docs';\r\n\r\nimport { subscriptionModule  } from '../common/utils';\r\nimport { PDFField  } from '../common/fields';\r\n\r\n\r\nimport { validateMaxLength, validatePercent  } from './../components/Validator';\r\nimport { fetchCustomFields } from './../components/CustomFields';\r\n\r\n\r\nexport const GroupsCardsList = ({ groups_id, ...props }) => {\r\n  const translate = useTranslate();  \r\n  const refresh = useRefresh();\r\n  \r\n  const dataProvider = useDataProvider();  \r\n  const [customFields, setCustomFields] = useState();  \r\n  const [error, setError] = useState(false);   \r\n  const [pdfUrl, setPdfUrl] = useState(null);\r\n  const [title, setTitle] = useState('');\r\n        \r\n  const updatePDFCardView = () => {\r\n                \r\n    let headers = new Headers({ Accept: 'application/json' });\r\n    headers.set('Access-Control-Allow-Origin', apiOrigin );\r\n    headers.set('Authorization', localStorage.getItem('auth'));\r\n    headers.set('Accept-Language', apiDefaultLanguage);\r\n    headers.set('Role', localStorage.getItem('active_permission'));\r\n\r\n    fetch(apiUrl + '/groups_cards/demo/' + groups_id,{ \r\n      headers: headers\r\n    })\r\n      .then(response => response.blob() )\r\n      .then(data => setPdfUrl(URL.createObjectURL(data)+'#toolbar=0&view=Fit,page=1')\r\n      )\r\n      .catch(error => console.error(error));\r\n  };\r\n  \r\n  \r\n  const handleChangeType = (value) => {\r\n    \r\n    if (value < 1000000)\r\n    {\r\n        setTitle(translate('groups_cards.type_' + value + '_default_title'));\r\n    }\r\n    else\r\n    {\r\n        customFields.map((element, index) => {\r\n            \r\n            if (element.id == (value-1000000)) setTitle(element.name);\r\n                \r\n        });\r\n        \r\n    }\r\n        \r\n        \r\n  };    \r\n     \r\n  useEffect(() => {    \r\n      \r\n    if (subscriptionModule(modules.CUSTOM_FIELDS))  \r\n    {\r\n        fetchCustomFields(localStorage.getItem('associations_id'), targets.USER, setCustomFields, setError, dataProvider, false, false );\r\n    }    \r\n    updatePDFCardView();    \r\n\r\n    }, []);\r\n  \r\n  if (subscriptionModule(modules.CUSTOM_FIELDS) && !customFields) return null;\r\n  \r\n  return (  \r\n    <>                 \r\n      <TopToolbar>                \r\n        <GroupsCardsSendButton groups_id={groups_id} />\r\n      </TopToolbar>\r\n      \r\n      { props.card_digital ?\r\n      <>\r\n      <Typography variant=\"h6\" className=\"grey8 titleUserShow\">                        \r\n        {translate('groups_cards.settings_pdf')}\r\n      </Typography>\r\n      <Divider fullWidth className=\"\" />\r\n      <br />\r\n                  \r\n      <Grid container spacing={2}>   \r\n        <Grid item xs={5}>       \r\n          <ResourceContextProvider value=\"groups_cards\" >\r\n            <TopToolbar>\r\n              <GroupsCardsCreateButton groups_id={groups_id} card_type={cardTypes.PDF} onSuccess={updatePDFCardView} customFields={customFields} title={title} handleChangeType={handleChangeType} setTitle={setTitle} />\r\n            </TopToolbar>\r\n            <ReferenceManyField                    \r\n              reference=\"groups_cards\"\r\n              target=\"groups_id\"\r\n              filter={{ card_type : cardTypes.PDF }}\r\n              label=\"\"\r\n              perPage={1000}\r\n              sort={{ field: 'positionY', order: 'ASC' }}\r\n            >\r\n              <Datagrid className=\"groups_cards\"> \r\n                <SelectField source=\"type\" choices={choicesTypeGroupCard(translate,cardTypes.PDF,customFields)} optionText=\"name\" optionValue=\"id\" label={translate('groups_cards.type')} sortable={false} />                \r\n                <ColorField label={translate('groups_cards.font_color')} source=\"font_color\" sortable={false} />\r\n                <BooleanField label={translate('groups_cards.status')} source=\"status\" sortable={false} />\r\n                <GroupsCardsEditButton onSuccess={updatePDFCardView} card_type={cardTypes.PDF} label=\"\" customFields={customFields} title={title} handleChangeType={handleChangeType} setTitle={setTitle} />\r\n                <DeleteButton undoable={false} onSuccess={()=>{ window.location.reload(); }} label=\"\"  />\r\n              </Datagrid>                                                    \r\n            </ReferenceManyField>\r\n          </ResourceContextProvider>          \r\n        </Grid>\r\n        <Grid item xs={2}>  \r\n            <br /><br /><br /><b>{translate('groups_cards.background')}</b><br /><br />\r\n            <BoxPhotoUser target={targets.GROUP_CARD} items_id={groups_id} edit={true} default_img={2} className=\"docs_card\" onSuccess={updatePDFCardView} />\r\n        </Grid>\r\n        <Grid item xs={1}></Grid>  \r\n        <Grid item xs={4}>   \r\n          <TopToolbar>\r\n            <DownloadDemoCard groups_id={groups_id} />\r\n          </TopToolbar>\r\n          <PDFField url={pdfUrl} loading={translate('groups_cards.pdf_card_preview')} {...props} />                    \r\n          <br /><br />\r\n        </Grid>\r\n      </Grid> \r\n      </> : null }\r\n      \r\n      { subscriptionModule(modules.WALLETS) && props.card_digital_wallets ?\r\n      <>\r\n      <Typography variant=\"h6\" className=\"grey8 titleUserShow\">                        \r\n        {translate('groups_cards.settings_wallets_google')}\r\n      </Typography>\r\n      <Divider fullWidth className=\"\" />\r\n      <br />      \r\n      \r\n      <Grid container spacing={2}>      \r\n      \r\n        <Grid item xs={8}>  \r\n            <GroupsCardsItems groups_id={groups_id} card_type={cardTypes.GOOGLE_WALLET_CONFIG} title={title} setTitle={setTitle} handleChangeType={handleChangeType} customFields={customFields} label_create={translate('groups_cards.create_config')} label_edit={translate('groups_cards.edit_config')} />                        \r\n            <br /><br />\r\n            <GroupsCardsItems groups_id={groups_id} card_type={cardTypes.GOOGLE_WALLET} title={title} setTitle={setTitle} handleChangeType={handleChangeType} customFields={customFields} />            \r\n        </Grid> \r\n        <Grid item xs={1}></Grid>  \r\n        <Grid item xs={3}>  \r\n            <br /><b>{translate('groups_cards.google_wallet_icon')}</b><br /><br />\r\n            <BoxPhotoUser target={targets.GROUP_CARD_GOOGLE_WALLET_ICON} items_id={groups_id} edit={true} default_img={3} className=\"docs_card_google_wallet_icon\" />        \r\n            <b>{translate('groups_cards.background_google_wallet')}</b><br /><br />\r\n            <BoxPhotoUser target={targets.GROUP_CARD_GOOGLE_WALLET} items_id={groups_id} edit={true} default_img={3} className=\"docs_card_google_wallet_image\" />            \r\n        </Grid>\r\n      </Grid>\r\n      \r\n      </> : null }\r\n      \r\n      <br />\r\n      \r\n      { subscriptionModule(modules.WALLETS) && props.card_digital_wallets ?\r\n      <>\r\n      <Typography variant=\"h6\" className=\"grey8 titleUserShow\">                        \r\n        {translate('groups_cards.settings_wallets_apple')}\r\n      </Typography>\r\n      <Divider fullWidth className=\"\" />\r\n      <br />\r\n            \r\n      <Grid container spacing={2}>      \r\n      \r\n        <Grid item xs={8}>  \r\n            <GroupsCardsItems groups_id={groups_id} card_type={cardTypes.APPLE_WALLET_CONFIG} title={title} setTitle={setTitle} handleChangeType={handleChangeType} customFields={customFields} label_create={translate('groups_cards.create_config')} label_edit={translate('groups_cards.edit_config')} />            \r\n            <br /><br/>\r\n            <GroupsCardsItems groups_id={groups_id} card_type={cardTypes.APPLE_WALLET} title={title} setTitle={setTitle} handleChangeType={handleChangeType} customFields={customFields} />            \r\n        </Grid> \r\n        <Grid item xs={1}></Grid>  \r\n        <Grid item xs={3}>  \r\n            <br /><b>{translate('groups_cards.apple_wallet_icon')}</b><br /><br />\r\n            <BoxPhotoUser target={targets.GROUP_CARD_APPLE_WALLET_ICON} items_id={groups_id} edit={true} default_img={3} className=\"docs_card_apple_wallet_icon\" />            \r\n        </Grid>\r\n      </Grid>\r\n      </> : null }\r\n            \r\n      <br />\r\n        \r\n    </>\r\n  );\r\n};\r\n     \r\n      \r\nconst GroupsCardsItems = ({ groups_id, card_type, title, setTitle, handleChangeType, customFields, label_create, label_edit, ...props}) => {\r\n\r\n    const translate = useTranslate();  \r\n    \r\n    return  (\r\n       <ResourceContextProvider value=\"groups_cards\" >\r\n            { card_type === cardTypes.GOOGLE_WALLET || card_type === cardTypes.APPLE_WALLET ?\r\n            <TopToolbar>\r\n              <GroupsCardsCreateButton groups_id={groups_id} card_type={card_type} customFields={customFields} onSuccess={()=>{ }} title={title} handleChangeType={handleChangeType} setTitle={setTitle} label={label_create} />\r\n            </TopToolbar>\r\n            : null }\r\n            <ReferenceManyField                    \r\n              reference=\"groups_cards\"\r\n              target=\"groups_id\"\r\n              filter={{ card_type : card_type }}\r\n              label=\"hola\"\r\n              perPage={1000}\r\n              sort={{ field: 'position,priority', order: 'ASC' }}\r\n            >\r\n              <Datagrid className=\"groups_cards\"> \r\n                { card_type === cardTypes.GOOGLE_WALLET || card_type === cardTypes.APPLE_WALLET ?\r\n                <SelectField source=\"position\" choices={choicesPosition(translate, card_type)} optionText=\"name\" optionValue=\"id\" label={translate('groups_cards.position')} sortable={false} />  \r\n                : null }\r\n                { card_type === cardTypes.GOOGLE_WALLET_CONFIG || card_type === cardTypes.APPLE_WALLET_CONFIG ?\r\n                <SelectField source=\"type\" choices={choicesTypeGroupCardConfig(translate,card_type)} optionText=\"name\" optionValue=\"id\" label={translate('groups_cards.config')} sortable={false} />                                \r\n                : null }\r\n                { !(card_type === cardTypes.GOOGLE_WALLET_CONFIG || card_type === cardTypes.APPLE_WALLET_CONFIG) ?\r\n                <SelectField source=\"type\" choices={choicesTypeGroupCard(translate,card_type,customFields)} optionText=\"name\" optionValue=\"id\" label={translate('groups_cards.type')} sortable={false} />                                \r\n                : null } \r\n                { card_type === cardTypes.GOOGLE_WALLET_CONFIG || card_type === cardTypes.APPLE_WALLET_CONFIG ?\r\n                <FunctionField render={record => <span>{[23,25,26].includes(record.type) ? <ColorField source=\"font_color\" record={{ font_color: record.font_color }} /> : ''}</span> } label={translate('groups_cards.font_color')} source=\"font_color\" sortable={false}  />\r\n                : null }\r\n                { !(card_type === cardTypes.GOOGLE_WALLET_CONFIG || card_type === cardTypes.APPLE_WALLET_CONFIG) ?\r\n                <FunctionField render={record => <span>{record.title ? record.title : ''}</span> } label={translate('groups_cards.name')} sortable={false}  />\r\n                : null }\r\n                <BooleanField label={translate('groups_cards.status')} source=\"status\" sortable={false} />\r\n                <GroupsCardsEditButton onSuccess={()=>{ }} card_type={card_type} label=\"\" customFields={customFields} title={title} handleChangeType={handleChangeType} setTitle={setTitle} label={label_edit} label=\"Accions\" />\r\n                { card_type === cardTypes.GOOGLE_WALLET || card_type === cardTypes.APPLE_WALLET ?\r\n                <DeleteButton undoable={false} onSuccess={()=>{ window.location.reload(); }} label=\"\"  />\r\n                : null }\r\n              </Datagrid>                                                    \r\n            </ReferenceManyField>\r\n          </ResourceContextProvider>\r\n    );\r\n}\r\n      \r\nexport const GroupsCardsCreateButton = ({ groups_id , card_type, onSuccess, customFields, title, handleChangeType, setTitle, label, ...props }) => {\r\n\r\n  const [showDialog, setShowDialog] = useState(false);\r\n  const [create, { loading }] = useCreate('groups_cards');\r\n  const notify = useNotify();\r\n  const refresh = useRefresh();    \r\n  const translate = useTranslate();  \r\n        \r\n  const handleClick = () => {\r\n    setShowDialog(true);\r\n  };\r\n\r\n  const handleCloseClick = () => {\r\n    setShowDialog(false);\r\n  };\r\n\r\n  const handleSubmit = async values => {\r\n    create(            \r\n      { payload: { data: values } },\r\n      {\r\n        onSuccess: ({ data }) => {\r\n          setShowDialog(false);\r\n          refresh();\r\n          onSuccess();\r\n        },\r\n        onFailure: ( error ) => {\r\n          notify( error.message , 'error');\r\n        }\r\n      }\r\n    );\r\n  };\r\n    \r\n  return (\r\n    <>            \r\n      <Button onClick={handleClick} label={label ? label : translate('groups_cards.create')}>\r\n        <IconContentAdd />                \r\n      </Button>\r\n\r\n      <Dialog                \r\n        open={showDialog}\r\n        onClose={handleCloseClick}\r\n        aria-label={label ? label : translate('groups_cards.create')}\r\n        maxWidth=\"md\"\r\n        fullWidth\r\n      >\r\n        <DialogTitle>{label ? label : translate('groups_cards.create')}</DialogTitle>\r\n\r\n        <FormWithRedirect\r\n          save={handleSubmit}\r\n          initialValues={{ groups_id: groups_id, card_type: card_type, pos_x: 0, pos_y: 0, size_x: 100, size_y: 10,num_lines: 2, font_size: 5,font_color: '#000000', status: true, alignment: 0, uppercase: true, opacity: 50, rectangle_round: 0.5, title: '', message: '', title: title }}\r\n          render={({\r\n            handleSubmitWithRedirect,\r\n            pristine,\r\n            saving\r\n          }) => (\r\n            <>\r\n              <DialogContentCards card_type={card_type} customFields={customFields} title={title} handleChangeType={handleChangeType} setTitle={setTitle} />\r\n                        \r\n              <DialogActions>\r\n                <Button label=\"ra.action.cancel\" onClick={handleCloseClick} disabled={loading} >\r\n                  <IconCancel />\r\n                </Button>\r\n                <SaveButton\r\n                  handleSubmitWithRedirect={\r\n                    handleSubmitWithRedirect\r\n                  }\r\n                  pristine={pristine}\r\n                  saving={saving}\r\n                  disabled={loading}\r\n                />\r\n              </DialogActions>\r\n            </>\r\n          )}\r\n        />\r\n      </Dialog>\r\n    </>\r\n  );\r\n};\r\n\r\nexport const GroupsCardsEditButton = ({ onSuccess, card_type, customFields, title, handleChangeType, setTitle, ...props }) => {\r\n\r\n  const [showDialog, setShowDialog] = useState(false);\r\n  \r\n  const notify = useNotify();\r\n  const refresh = useRefresh();    \r\n  const translate = useTranslate();  \r\n\r\n  const [update, { loading, error }] = useUpdate();\r\n\r\n  const handleClick = () => {\r\n    setShowDialog(true);\r\n  };\r\n\r\n  const handleCloseClick = () => {\r\n    setShowDialog(false);\r\n  };\r\n\r\n  const handleSubmit = async values => {\r\n    update(\r\n      { \r\n        type: 'update', \r\n        resource: 'groups_cards', \r\n        payload : { id: values.id, data : values }\r\n      },\r\n      {\r\n        onSuccess: ({ data }) => {\r\n          setShowDialog(false);\r\n          refresh();\r\n          onSuccess();\r\n        },\r\n        onFailure: ( error ) => {\r\n          notify(error.message, 'error');\r\n        }\r\n      }\r\n    );\r\n  };    \r\n  \r\n  \r\n\r\n  return (\r\n    <>\r\n      <Button onClick={handleClick} label=\"\" startIcon={<EditIcon />} />\r\n\r\n      <Dialog\r\n        open={showDialog}\r\n        onClose={handleCloseClick}\r\n        aria-label={translate('groups_cards.edit')}\r\n        maxWidth=\"md\"\r\n        fullWidth\r\n      >\r\n        <DialogTitle>{translate('groups_cards.edit')}</DialogTitle>\r\n\r\n        <FormWithRedirect\r\n          resource=\"groups_cards\"\r\n          save={handleSubmit}\r\n          initialValues={props.record}\r\n          render={({\r\n            handleSubmitWithRedirect,\r\n            pristine,\r\n            saving\r\n          }) => (\r\n            <>\r\n              <DialogContentCards card_type={card_type} customFields={customFields} title={title} handleChangeType={handleChangeType} setTitle={setTitle} />\r\n              <DialogActions>\r\n                <Button label=\"ra.action.cancel\" onClick={handleCloseClick} disabled={loading} >\r\n                  <IconCancel />\r\n                </Button>\r\n                <SaveButton\r\n                  handleSubmitWithRedirect={\r\n                    handleSubmitWithRedirect\r\n                  }\r\n                  pristine={pristine}\r\n                  saving={saving}\r\n                  disabled={loading}\r\n                />\r\n              </DialogActions>\r\n            </>\r\n          )}\r\n        />\r\n      </Dialog>\r\n    </>\r\n  );\r\n};\r\n\r\nconst DialogContentCards = ({title, handleChangeType, setTitle, ...props}) => {\r\n    \r\n  const translate = useTranslate();\r\n            \r\n  return (\r\n    <DialogContent>\r\n      <Grid container spacing={2}>      \r\n        \r\n        {props.card_type === cardTypes.GOOGLE_WALLET || props.card_type === cardTypes.APPLE_WALLET ?  \r\n        <Grid item xs={3}> \r\n          <SelectInput fullWidth label={translate('groups_cards.position')} source=\"position\" choices={choicesPosition(translate, props.card_type)} validate={[required()]} />\r\n        </Grid> \r\n        : null }\r\n        \r\n        <Grid item xs={6}> \r\n          <SelectInput fullWidth label={translate('groups_cards.type')} source=\"type\" choices={props.card_type === cardTypes.GOOGLE_WALLET_CONFIG || props.card_type === cardTypes.APPLE_WALLET_CONFIG ? choicesTypeGroupCardConfig(translate,props.card_type) : choicesTypeGroupCard(translate,props.card_type,props.customFields)} validate={[required()]} onChange={(e) => { handleChangeType(e.target.value) } } disabled={props.card_type === cardTypes.GOOGLE_WALLET_CONFIG || props.card_type === cardTypes.APPLE_WALLET_CONFIG} />\r\n        </Grid> \r\n        \r\n        { props.card_type === cardTypes.PDF || props.card_type === cardTypes.GOOGLE_WALLET_CONFIG || props.card_type === cardTypes.APPLE_WALLET_CONFIG ?   \r\n            <ColorInputConditioned />\r\n        : null }\r\n        \r\n        { props.card_type === cardTypes.GOOGLE_WALLET || props.card_type === cardTypes.APPLE_WALLET ?                                              \r\n            <Grid item xs={3}>\r\n              <TitleInputConditioned title={title} setTitle={setTitle} />          \r\n            </Grid>   \r\n        : null }         \r\n        \r\n      </Grid>          \r\n      \r\n      <Grid container spacing={2}>  \r\n         \r\n        <Grid item xs={6}> \r\n          <MessageInputConditioned />\r\n        </Grid>\r\n        \r\n      </Grid>\r\n      \r\n      {props.card_type === cardTypes.PDF ?\r\n      <Grid container spacing={2}>       \r\n        <Grid item xs={3}> \r\n          <NumberInput fullWidth label={translate('groups_cards.pos_x')} source=\"pos_x\" validate={[required(),validatePercent(translate('common.validation.number'))]} />\r\n        </Grid>\r\n        <Grid item xs={3}> \r\n          <NumberInput fullWidth label={translate('groups_cards.pos_y')} source=\"pos_y\" validate={[required(),validatePercent(translate('common.validation.number'))]} />\r\n        </Grid>\r\n        <Grid item xs={3}> \r\n          <NumberInput fullWidth label={translate('groups_cards.size_x')} source=\"size_x\" validate={[required(),validatePercent(translate('common.validation.number'))]} />        \r\n        </Grid>\r\n        <Grid item xs={3}> \r\n          <NumberInputSizeYConditioned /> \r\n        </Grid>\r\n      </Grid>\r\n      : null }\r\n      <Grid container spacing={2}>     \r\n        {props.card_type === cardTypes.PDF ?\r\n        <Grid item xs={3}> \r\n          <NumberInputNumLinesConditioned /> \r\n        </Grid>\r\n        : null }\r\n        {props.card_type === cardTypes.PDF ?\r\n        <Grid item xs={3}> \r\n          <SelectInputAlignmentConditioned />                \r\n        </Grid>\r\n        : null }\r\n        {props.card_type === cardTypes.PDF ?\r\n        <Grid item xs={3}> \r\n          <NumberInputFontSizeConditioned /> \r\n        </Grid>\r\n        : null }\r\n        \r\n        {props.card_type === cardTypes.PDF || props.card_type === cardTypes.GOOGLE_WALLET || props.card_type === cardTypes.APPLE_WALLET ?\r\n        <Grid item xs={3}> \r\n          <BooleanInputUppercaseConditioned /> \r\n        </Grid>  \r\n        : null }\r\n        \r\n      </Grid>\r\n      <Grid container spacing={2}>                          \r\n        <Grid item xs={3}> \r\n          <OpacityInputConditioned />\r\n        </Grid>\r\n        <Grid item xs={3}> \r\n          <RectangleRoundInputConditioned />\r\n        </Grid>                    \r\n      </Grid>\r\n      <Grid container spacing={2}> \r\n        \r\n        { props.card_type === cardTypes.PDF || props.card_type === cardTypes.GOOGLE_WALLET || props.card_type === cardTypes.APPLE_WALLET ?\r\n        <Grid item xs={3}> \r\n          <NumberInput fullWidth label={translate('common.priority')} source=\"priority\" />\r\n        </Grid> \r\n        : null }\r\n        \r\n        <Grid item xs={3}> \r\n          <BooleanInput label={translate('groups_cards.status')} source=\"status\" />\r\n        </Grid> \r\n      </Grid>\r\n      \r\n      <br /><br/><br /><br/><br /><br/>    \r\n    </DialogContent>\r\n  );\r\n\r\n};\r\n\r\nconst NumberInputSizeYConditioned = props => {\r\n  const translate = useTranslate();   \r\n  const { values } = useFormState();        \r\n  return (\r\n    ( values.type===1 || values.type===6 || values.type===22) ? \r\n      <NumberInput fullWidth label={translate('groups_cards.size_y')} source=\"size_y\" validate={[required(),validatePercent(translate('common.validation.number'))]} />  : <span />\r\n  );\r\n};\r\n\r\nconst NumberInputNumLinesConditioned = props => {\r\n  const translate = useTranslate();   \r\n  const { values } = useFormState();        \r\n  return (\r\n    ( values.type!==1 && values.type!==6 && values.type!==10 && values.type!==22 ) ? \r\n      <NumberInput fullWidth label={translate('groups_cards.num_lines')} source=\"num_lines\" validate={[required()]} />  : <span />\r\n  );\r\n};\r\n\r\nconst NumberInputFontSizeConditioned = props => {\r\n  const translate = useTranslate();   \r\n  const { values } = useFormState();        \r\n  return (\r\n    ( values.type!==1 && values.type!==6 && values.type!==10 && values.type!==22 ) ? \r\n      <NumberInput fullWidth label={translate('groups_cards.font_size')} source=\"font_size\" validate={[required(),validatePercent(translate('common.validation.number'))]} />  : <span />\r\n  );\r\n};\r\n\r\n\r\nconst BooleanInputUppercaseConditioned = props => {\r\n  const translate = useTranslate();   \r\n  const { values } = useFormState();        \r\n  return (\r\n    ( values.type!==1 && values.type!==6 && values.type!==10 && values.type!==22 && values.type!==23 && values.type!==25 && values.type!==26 ) ? \r\n      <BooleanInput fullWidth label={translate('groups_cards.uppercase')} source=\"uppercase\" />  : <span />\r\n  );\r\n};\r\n\r\nconst ColorInputConditioned = props => {\r\n  const translate = useTranslate();   \r\n  const { values } = useFormState();  \r\n  \r\n  return (\r\n      (values.card_type === cardTypes.PDF && values.type!==1 && values.type!==6 && values.type!==10) || \r\n      (values.card_type === cardTypes.GOOGLE_WALLET_CONFIG && values.type===23) || \r\n      (values.card_type === cardTypes.APPLE_WALLET_CONFIG && (values.type===23 || values.type===25 || values.type===26)) ? \r\n      <Grid item xs={3} className=\"\">\r\n        <ColorInput fullWidth className=\"color-input-cards\" fullWidth source=\"font_color\" label={translate('groups_cards.font_color')}  validate={[required(),validateMaxLength(7,translate('common.validation.maxLength'))]} /> \r\n      </Grid>\r\n      : <span />\r\n  );\r\n};\r\n\r\nconst TitleInputConditioned = (props) => {\r\n  const translate = useTranslate();   \r\n  const { values } = useFormState();  \r\n\r\n  return (\r\n    [0,2,3,4,5,7,8,9,11,12,13,14,15,16,17,18,19,20,21,24,27,28].includes(values.type) || values.type >= 1000000 ? (\r\n      <TextInput\r\n        fullWidth\r\n        label={translate('groups_cards.title')}\r\n        source=\"title\"\r\n        value={props.title} \r\n        onChange={(e)=>props.setTitle(e.target.value)}\r\n        validate={[required(),validateMaxLength(255,translate('common.validation.maxLength'))]}\r\n      />\r\n    ) : (\r\n      <span />\r\n    )\r\n  );\r\n};\r\n\r\nconst SelectInputAlignmentConditioned = props => {\r\n  const translate = useTranslate();   \r\n  const { values } = useFormState();        \r\n  return (\r\n    ( values.type!==1 && values.type!==6 && values.type!==10 && values.type!==22 ) ? \r\n      <SelectInput fullWidth label={translate('groups_cards.alignment')} source=\"alignment\" choices={choicesAlignmentGroupCard(translate)} validate={[required()]} />  : <span />\r\n  );\r\n};\r\n\r\nconst OpacityInputConditioned = props => {\r\n  const translate = useTranslate();   \r\n  const { values } = useFormState();        \r\n  return (\r\n    ( values.type==22 ) ? \r\n      <NumberInput fullWidth label={translate('groups_cards.opacity')} source=\"opacity\" validate={[required(),validatePercent(translate('common.validation.number'))]} />  : <span />\r\n  );\r\n};\r\n\r\nconst RectangleRoundInputConditioned = props => {\r\n  const translate = useTranslate();   \r\n  const { values } = useFormState();        \r\n  return (\r\n    ( values.type==22 ) ? \r\n      <NumberInput fullWidth label={translate('groups_cards.rectangle_round')} source=\"rectangle_round\" validate={[required(),validatePercent(translate('common.validation.number'))]} />  : <span />\r\n  );\r\n};\r\n\r\nconst MessageInputConditioned = props => {\r\n  const translate = useTranslate();   \r\n  const { values } = useFormState();        \r\n  return (\r\n    ( [24].includes(values.type) ) ? \r\n      <TextInput fullWidth label={translate('groups_cards.message')} source=\"message\" validate={[required(),validateMaxLength(255,translate('common.validation.maxLength'))]} />  : <span />\r\n  );\r\n};\r\n\r\nconst choicesTypeGroupCard = (translate,card_type,customFields) => { \r\n\r\n  let arrFields = [                        \r\n    { id: 0, name: translate('groups_cards.type_0') },\r\n    { id: 19, name: translate('groups_cards.type_19') },\r\n    { id: 20, name: translate('groups_cards.type_20') },\r\n    { id: 21, name: translate('groups_cards.type_21') },    \r\n    { id: 2, name: translate('groups_cards.type_2') },\r\n    { id: 3, name: translate('groups_cards.type_3') },\r\n    { id: 4, name: translate('groups_cards.type_4') },\r\n    { id: 13, name: translate('groups_cards.type_13') },\r\n    { id: 14, name: translate('groups_cards.type_14') },\r\n    { id: 15, name: translate('groups_cards.type_15') },\r\n    { id: 16, name: translate('groups_cards.type_16') },\r\n    { id: 5, name: translate('groups_cards.type_5') }     \r\n  ];\r\n  \r\n  if (card_type == cardTypes.PDF) {\r\n       arrFields.push ({ id: 6, name: translate('groups_cards.type_6')  });\r\n       arrFields.push ({ id: 1, name: translate('groups_cards.type_1')  });\r\n  }\r\n  \r\n  arrFields.push ({ id: 7, name: translate('groups_cards.type_7')  });\r\n  arrFields.push ({ id: 8, name: translate('groups_cards.type_8')  });\r\n  arrFields.push ({ id: 9, name: translate('groups_cards.type_9')  });\r\n  \r\n  if (card_type == cardTypes.PDF) {\r\n    arrFields.push ({ id: 10, name: translate('groups_cards.type_10')  });\r\n  }\r\n  \r\n  arrFields.push ({ id: 11, name: translate('groups_cards.type_11')  });\r\n  arrFields.push ({ id: 12, name: translate('groups_cards.type_12')  });\r\n      \r\n  if (card_type == cardTypes.PDF) {\r\n      arrFields.push ({ id: 22, name: translate('groups_cards.type_22')  });\r\n  }\r\n    \r\n  if (subscriptionModule(modules.RECERCAT)){ \r\n    arrFields.push ({ id: 17, name: translate('groups_cards.type_17')  });\r\n    arrFields.push ({ id: 18, name: translate('groups_cards.type_18')  });\r\n  }\r\n  \r\n  arrFields.push ({ id: 24, name: translate('groups_cards.type_24')  });\r\n  \r\n  if (customFields)\r\n  {\r\n    customFields.map((element, index) => {\r\n       arrFields.push({ id: 1000000+element.id, name: element.name }); \r\n    });    \r\n  }\r\n    \r\n  return (arrFields);\r\n};\r\n\r\n\r\nconst choicesTypeGroupCardConfig = (translate,card_type) => { \r\n\r\n  let arrFields = [];\r\n\r\n  arrFields.push ({ id: 10, name: translate('groups_cards.type_10')  });\r\n  arrFields.push ({ id: 23, name: translate('groups_cards.type_23')  });\r\n    \r\n  if (card_type == (cardTypes.APPLE_WALLET_CONFIG ) ) {\r\n      arrFields.push ({ id: 25, name: translate('groups_cards.type_25')  });\r\n      arrFields.push ({ id: 26, name: translate('groups_cards.type_26')  });\r\n  }\r\n  \r\n  arrFields.push ({ id: 1, name: translate('groups_cards.type_1')  });\r\n    \r\n  return (arrFields);\r\n  \r\n};\r\n\r\n\r\nconst choicesPosition = (translate, cardType) => { \r\n\r\n    let arrPositions = [];\r\n\r\n    arrPositions.push({ id: 0, name: translate('groups_cards.position_0') });\r\n\r\n    if (cardType === cardTypes.APPLE_WALLET)\r\n    {\r\n        arrPositions.push({ id: 1, name: translate('groups_cards.position_1') });\r\n    }\r\n    arrPositions.push({ id: 2, name: translate('groups_cards.position_2') });\r\n\r\n    if (cardType === cardTypes.APPLE_WALLET)\r\n    {\r\n        arrPositions.push({ id: 3, name: translate('groups_cards.position_3') });\r\n        arrPositions.push({ id: 4, name: translate('groups_cards.position_4') });\r\n        arrPositions.push({ id: 5, name: translate('groups_cards.position_5') });\r\n    }\r\n\r\n    arrPositions.push({ id: 6, name: translate('groups_cards.position_6') });\r\n\r\n    return (arrPositions);\r\n};\r\n\r\n\r\nconst choicesAlignmentGroupCard = (translate) => { \r\n  return ([                        \r\n    { id: 0, name: translate('groups_cards.alignment_0')  },\r\n    { id: 1, name: translate('groups_cards.alignment_1')  },\r\n    { id: 2, name: translate('groups_cards.alignment_2')  },\r\n    { id: 3, name: translate('groups_cards.alignment_3')  }\r\n  ]);\r\n};\r\n\r\nexport const DownloadDemoCard = ({ record, groups_id, ...props}) => {\r\n    \r\n  const translate = useTranslate(); \r\n  const notify = useNotify();\r\n\r\n  const handleAction = async () => {\r\n\r\n    let headers = new Headers({ Accept: 'application/json' });\r\n    headers.set('Access-Control-Allow-Origin', apiOrigin );\r\n    headers.set('Authorization', localStorage.getItem('auth'));\r\n    headers.set('Accept-Language', apiDefaultLanguage);\r\n    headers.set('Role', localStorage.getItem('active_permission'));\r\n\r\n    const result = await fetch(apiUrl + '/groups_cards/demo/' + groups_id , { \r\n      headers: headers\r\n    });\r\n    \r\n    const blob = await result.blob();\r\n    const href = window.URL.createObjectURL(blob);\r\n    \r\n    var tempLink = document.createElement('a');\r\n    tempLink.href = href;\r\n    tempLink.setAttribute('download', translate('groups_cards.pdf_card_filename'));\r\n    tempLink.click();\r\n    \r\n    notify(translate('groups_cards.pdf_card_ok'),\"success\");\r\n    \r\n  };\r\n  \r\n  return (\r\n    <Button label={translate('groups_cards.pdf_card_download')} startIcon={<DownloadIcon />} onClick={handleAction} />\r\n  );\r\n\r\n};\r\n\r\n\r\n\r\n\r\nexport const DownloadCard = ({ record, users_groups_id, ...props}) => {\r\n    \r\n  const translate = useTranslate(); \r\n  const notify = useNotify();\r\n\r\n  const handleAction = async () => {\r\n\r\n    let headers = new Headers({ Accept: 'application/json' });\r\n    headers.set('Access-Control-Allow-Origin', apiOrigin );\r\n    headers.set('Authorization', localStorage.getItem('auth'));\r\n    headers.set('Accept-Language', apiDefaultLanguage);\r\n    headers.set('Role', localStorage.getItem('active_permission'));\r\n\r\n    const result = await fetch(apiUrl + '/groups_cards/card/' + users_groups_id , { \r\n      headers: headers\r\n    });\r\n    \r\n    const blob = await result.blob();\r\n    const href = window.URL.createObjectURL(blob);\r\n    \r\n    var tempLink = document.createElement('a');\r\n    tempLink.href = href;\r\n    tempLink.setAttribute('download', translate('groups_cards.pdf_card_filename'));\r\n    tempLink.click();\r\n    \r\n    notify(translate('groups_cards.pdf_card_ok'),\"success\");\r\n  };\r\n  \r\n  return (\r\n    <Tooltip title={translate('groups_cards.pdf_view')}> \r\n      <PictureAsPdfIcon onClick={handleAction} />\r\n    </Tooltip>\r\n  );\r\n\r\n};\r\n\r\nexport const RegenerateCard = ({ record, users_groups_id, ...props}) => {\r\n    \r\n  const [open, setOpen] = useState(false);\r\n  const [create, { loading }] = useCreate('bookings');    \r\n  const notify = useNotify();\r\n  const dataProvider = useDataProvider();\r\n  const refresh = useRefresh(); \r\n  const translate = useTranslate(); \r\n \r\n  const handleClick = () => setOpen(true);\r\n  const handleDialogClose = () => setOpen(false);\r\n  const handleConfirm = () => { regenerateCard();  };\r\n    \r\n  const regenerateCard = () => {\r\n                \r\n    dataProvider.getOne('groups_cards/regenerate' , { id: users_groups_id })\r\n      .then(( { data } ) => {   \r\n        setOpen(false);            \r\n        notify(translate('groups_cards.regenerated_ok' ), 'success');            \r\n        refresh();\r\n      })\r\n      .catch(error => {                \r\n        notify(error.message, 'error');\r\n        setOpen(false);\r\n      });\r\n        \r\n  };\r\n  \r\n  return (\r\n    <>\r\n      <Tooltip title={translate('groups_cards.regenerate')}> \r\n        <ReplayCircleFilledIcon onClick={ (e) => { e.stopPropagation(); handleClick(users_groups_id); } }/>\r\n      </Tooltip>\r\n      <Confirm\r\n        isOpen={open}\r\n        loading={loading}\r\n        title={translate('groups_cards.regenerate_title')}\r\n        content={translate('groups_cards.regenerate_text')}\r\n        onConfirm={handleConfirm}\r\n        onClose={handleDialogClose}\r\n      />\r\n    </>\r\n  );\r\n\r\n};\r\n\r\n\r\nexport const GroupsCardsSendButton = ({ ...props }) => {\r\n\r\n  const [showDialog, setShowDialog] = useState(false);\r\n  const [create, { loading }] = useCreate('groups_cards/send');\r\n  const notify = useNotify();\r\n  const refresh = useRefresh();    \r\n  const translate = useTranslate();  \r\n  const [info, setInfo] = useState();\r\n  const dataProvider = useDataProvider();\r\n    \r\n  let lastYear = new Date().getFullYear()-1;\r\n    \r\n\r\n  const handleClick = () => {\r\n    setShowDialog(true);\r\n  };\r\n\r\n  const handleCloseClick = () => {\r\n    setShowDialog(false);\r\n  };\r\n\r\n  const handleSubmit = async values => {\r\n    create(\r\n      { payload: { data: values } },\r\n      {\r\n        onSuccess: ({ data }) => {\r\n          setShowDialog(false);\r\n          refresh();\r\n        },\r\n        onFailure: ( error ) => {\r\n          notify(error.message, 'error');\r\n        }\r\n      }\r\n    );\r\n  };\r\n        \r\n\r\n  useEffect(() => {\r\n        \r\n    dataProvider.getOne('groups_cards/prev_info', { id: props.groups_id })\r\n      .then(({ data }) => {     \r\n        setInfo(data);\r\n      })\r\n      .catch(error => {           \r\n      });\r\n       \r\n  }, []);\r\n\r\n  let num_pending = '';\r\n  let num_total = '';\r\n  if (info) {\r\n    num_pending = info.num_pending;\r\n    num_total = info.num_total;\r\n  } \r\n  let option_0=translate('groups_cards.send_dialog_action_0').replaceAll('%num_pending%',num_pending);\r\n  let option_1=translate('groups_cards.send_dialog_action_1').replaceAll('%num_total%',num_total);\r\n\r\n  return (\r\n    <>            \r\n      <Button onClick={handleClick} label={translate('groups_cards.send_dialog_button')}>\r\n        <EmailIcon />                \r\n      </Button>\r\n\r\n      <Dialog\r\n        fullWidth\r\n        open={showDialog}\r\n        onClose={handleCloseClick}\r\n        aria-label={translate('groups_cards.send_dialog_button')}\r\n      >\r\n        <DialogTitle>{translate('groups_cards.send_dialog_button')}</DialogTitle>\r\n\r\n        <FormWithRedirect\r\n          resource=\"groups_cards\"\r\n          save={handleSubmit}\r\n          initialValues={{ action : 0, groups_id: props.groups_id }}\r\n          render={({\r\n            handleSubmitWithRedirect,\r\n            pristine,\r\n            saving\r\n          }) => (\r\n            <>\r\n                                                        \r\n              <DialogContent className=\"users_sections_form\">\r\n                <FormDataConsumer>\r\n                  {({ formData, ...rest }) => <>\r\n                    <Grid container spacing={2} > \r\n                      <Grid item xs={12}> \r\n                        <RadioButtonGroupInput source=\"action\" choices={[\r\n                          { id: 0, name: option_0 },\r\n                          { id: 1, name: option_1 }\r\n                        ]} \r\n                        optionText=\"name\" optionValue=\"id\" label={translate('groups_cards.send_dialog_action')} validate={required()}  />\r\n                      </Grid>\r\n                      {formData.action===1 ? \r\n                        <Grid item xs={12}> \r\n                          <BooleanInput label={translate('groups_cards.send_dialog_regenerate')} source=\"regenerate\" />\r\n                        </Grid> : null }\r\n                      { localStorage.getItem('email').includes('@softovi.com') || localStorage.getItem('email').includes('francesctomas@gmail.com') ?\r\n                        <Grid item xs={12}> \r\n                          <NumberInput label={translate('groups_cards.send_dialog_block_size')} source=\"number\" />\r\n                        </Grid> : null }\r\n                      <Grid item xs={12}> \r\n                        <span>{translate('groups_cards.send_dialog_text2')}</span>\r\n                      </Grid>\r\n                    </Grid> \r\n                  </> }\r\n                </FormDataConsumer>\r\n              </DialogContent>\r\n                                                        \r\n              <br />\r\n                            \r\n              <DialogActions>\r\n                <Button label=\"ra.action.cancel\" onClick={handleCloseClick} disabled={loading} >\r\n                  <IconCancel />\r\n                </Button>\r\n                <SaveButton\r\n                  handleSubmitWithRedirect={\r\n                    handleSubmitWithRedirect\r\n                  }\r\n                  pristine={pristine}\r\n                  saving={saving}\r\n                  disabled={loading}\r\n                  label={translate('users_annuary.send')}\r\n                  icon={<EmailIcon/>}\r\n                />\r\n              </DialogActions>\r\n            </>\r\n          )}\r\n        />\r\n      </Dialog>\r\n    </>\r\n  );  \r\n    \r\n};","// in src/posts.js\r\n//import * as React from \"react\";\r\nimport React, { useState } from 'react';\r\n\r\nimport {\r\n  Datagrid,\r\n  TextField,\r\n  ReferenceInput,\r\n  SelectInput,\r\n  TextInput, \r\n  ReferenceManyField,\r\n  useTranslate,NumberInput,NumberField,DateInput,required, DateField\r\n} from 'react-admin';\r\n\r\nimport { useFormState, useForm } from 'react-final-form';\r\n\r\nimport { EditableDatagrid, RowForm } from '@react-admin/ra-editable-datagrid';\r\n\r\n\r\n\r\nimport { validateMaxLength, validateInteger  } from './../components/Validator';\r\n\r\n\r\nconst choicesPeriodQuote = [\r\n  { id: 0, name: 'Mensual' },\r\n  { id: 1, name: 'Bimensual' },\r\n  { id: 2, name: 'Trimestral' },\r\n  { id: 3, name: 'Quatrimestral' },\r\n  { id: 4, name: 'Semestral' },\r\n  { id: 5, name: 'Anual' },\r\n];\r\n\r\nexport const UsersGroupsQuotesList= ({users_id, ...props}) => {\r\n  const translate = useTranslate();   \r\n  const { values } = useFormState();\r\n\r\n  return (\r\n    <ReferenceManyField                    \r\n      reference=\"users_groups_quotes\"\r\n      target=\"users_id\"\r\n      label=\"\"\r\n      perPage={1000}\r\n    >\r\n\r\n      <EditableDatagrid                       \r\n        createForm={<UsersGroupsQuotesEdit initialValues={{ users_id: users_id }} />}\r\n        editForm={<UsersGroupsQuotesEdit />}\r\n        label=\"\"\r\n        hasCreate\r\n        className=\"table-quotes-periods\"\r\n      >\r\n        <TextField source=\"group.name\" label={translate('users_groups_quotes.group')} sortable={false} />\r\n        <TextField source=\"group_quote.name\" label={translate('users_groups_quotes.group_quote')} sortable={false} />\r\n        <TextField source=\"groups_quotes_periods_name\" label={translate('users_groups_quotes.group_quote_period')} sortable={false} /> \r\n        <NumberField source=\"discount_percent\" label={translate('users_groups_quotes.discount_percent')} sortable={false} /> \r\n        <NumberField source=\"discount_quantity\" label={translate('users_groups_quotes.discount_quantity')} sortable={false} /> \r\n        <NumberField source=\"manual_quantity\" step={1} label={translate('users_groups_quotes.manual_quantity')} sortable={false} />\r\n        <DateField source=\"discount_ini\" label={translate('users_groups_quotes.discount_ini')} sortable={false} />\r\n        <DateField source=\"discount_end\" label={translate('users_groups_quotes.discount_end')} sortable={false} />\r\n        <TextField source=\"comment\" label={translate('users_groups_quotes.comment')} sortable={false} /> \r\n            \r\n      </EditableDatagrid>\r\n\r\n    </ReferenceManyField> \r\n  );\r\n};\r\n\r\n\r\nconst OptionsQuotesInput = props => {\r\n  const translate = useTranslate();   \r\n  const { values } = useFormState();\r\n    \r\n  //console.log('OptionsQuotesInput');\r\n  //console.log(values);\r\n  //console.log(props);\r\n    \r\n  return (\r\n    values.groups_id ? \r\n      <ReferenceInput label={translate('users_groups_quotes.group_quote')} source=\"groups_quotes_id\" reference=\"groups_quotes\" filter={{ groups_id : values.groups_id }} perPage={1000} >\r\n        <SelectInput fullWidth optionText=\"name\" optionValue=\"id\" validate={required()} resettable />\r\n      </ReferenceInput> : ''\r\n  );\r\n};\r\n\r\nconst OptionsQuotesPeriodsInput = props => {\r\n  const translate = useTranslate();   \r\n  const { values } = useFormState();\r\n\r\n  //console.log('OptionsQuotesPeriodsInput');\r\n  //console.log(values);\r\n  //console.log(props);\r\n\r\n  return (\r\n    (values.groups_id && values.groups_quotes_id ) ? \r\n      <ReferenceInput label={translate('users_groups_quotes.group_quote_period')} source=\"groups_quotes_periods_id\" reference=\"groups_quotes_periods\" filter={{ groups_quotes_id : values.groups_quotes_id }} perPage={1000} >\r\n        <SelectInput fullWidth optionText=\"name\" optionValue=\"id\" resettable />\r\n      </ReferenceInput> : ''\r\n  );\r\n};\r\n\r\n/*\r\n * <OptionsQuotesInput source=\"groups_quotes_id\"   />\r\n        <OptionsQuotesPeriodsInput source=\"groups_quotes_periods_id\" /> \r\n */\r\n\r\n/*\r\n * onChange={event => {\r\n            event.preventDefault();  \r\n            form.change('groups_quotes_id', null);\r\n            form.change('groups_quotes_periods_id', null);\r\n            \r\n            }}\r\n */\r\nexport const UsersGroupsQuotesEdit= (props) => {\r\n  const translate = useTranslate();   \r\n  //const form = useForm();\r\n  const { values } = useFormState();\r\n  const [groups_id, setGroupsId] = useState();\r\n  const [groups_quotes_id, setGroupsQuotesId] = useState();\r\n  const [groups_quotes_periods_id, setGroupsQuotesPeriodsId] = useState();\r\n    \r\n  const initialFormState = { users_id: values.id };\r\n  const { register, handleSubmit, setValue, reset, watch } = useForm({\r\n    defaultValues: props.initialValues ? props.initialValues : initialFormState,\r\n  });\r\n\r\n  /*\r\n    const handleChange = (e) => console.log('HOLA');\r\n    onChange={handleChange}\r\n    */\r\n\r\n  return (\r\n    <RowForm {...props}  >\r\n      <ReferenceInput \r\n        label={translate('users_groups_quotes.group')} \r\n        source=\"groups_id\" \r\n        reference=\"groups\" \r\n        filter={{ users_id : values.id, associations_id: localStorage.getItem('associations_id') }}  \r\n        perPage={1000}\r\n      >\r\n        <SelectInput fullWidth optionText=\"name\" optionValue=\"id\" validate={required()} />\r\n      </ReferenceInput> \r\n      <OptionsQuotesInput source=\"groups_quotes_id\"   />\r\n      <OptionsQuotesPeriodsInput source=\"groups_quotes_periods_id\" /> \r\n      <NumberInput fullWidth source=\"discount_percent\" step={1} label={translate('users_groups_quotes.discount_percent')} validate={[validateInteger(translate('common.validation.number'))]} />\r\n      <NumberInput fullWidth source=\"discount_quantity\" step={1} label={translate('users_groups_quotes.discount_quantity')} validate={[validateInteger(translate('common.validation.number'))]} />\r\n      <NumberInput fullWidth source=\"manual_quantity\" step={1} label={translate('users_groups_quotes.manual_quantity')} validate={[validateInteger(translate('common.validation.number'))]} />\r\n      <DateInput fullWidth source=\"discount_ini\" step={1} label={translate('users_groups_quotes.discount_ini')} />\r\n      <DateInput fullWidth source=\"discount_end\" step={1} label={translate('users_groups_quotes.discount_end')} />\r\n      <TextInput fullWidth source=\"comment\" label={translate('users_groups_quotes.comment')} validate={[validateMaxLength(255,translate('common.validation.maxLength'))]} />   \r\n    </RowForm>\r\n  );\r\n};\r\n\r\nexport const UsersGroupsQuotesShowList= (props) => {\r\n  const translate = useTranslate();   \r\n\r\n  return (\r\n    <ReferenceManyField                    \r\n      reference=\"users_groups_quotes\"\r\n      target=\"users_id\"\r\n      label=\"\"\r\n      perPage={1000}\r\n    >\r\n\r\n      <Datagrid          \r\n        hasCreate\r\n        className=\"table-quotes-periods users_remittances_list header_grey6\"\r\n      >\r\n        <TextField source=\"group.name\" label={translate('users_groups_quotes.group')} sortable={false} />\r\n        <TextField source=\"group_quote.name\" label={translate('users_groups_quotes.group_quote')} sortable={false} />\r\n        <TextField source=\"groups_quotes_periods_name\" label={translate('users_groups_quotes.group_quote_period')} sortable={false} /> \r\n        <NumberField source=\"discount_percent\" label={translate('users_groups_quotes.discount_percent')} sortable={false} /> \r\n        <NumberField source=\"discount_quantity\" label={translate('users_groups_quotes.discount_quantity')} sortable={false} /> \r\n        <NumberField source=\"manual_quantity\" step={1} label={translate('users_groups_quotes.manual_quantity')} sortable={false} />\r\n        <DateField source=\"discount_ini\" label={translate('users_groups_quotes.discount_ini')} sortable={false}/>\r\n        <DateField source=\"discount_end\" label={translate('users_groups_quotes.discount_end')} sortable={false}/>\r\n        <TextField source=\"comment\" label={translate('users_groups_quotes.comment')} sortable={false} /> \r\n            \r\n      </Datagrid>\r\n\r\n    </ReferenceManyField> \r\n  );\r\n};\r\n\r\n\r\n\r\n","// in src/posts.js\r\nimport * as React from 'react';\r\nimport { useState, useEffect } from 'react';\r\n\r\nimport {\r\n  Datagrid,\r\n  TextField,\r\n  ReferenceInput,\r\n  SelectInput,\r\n  TextInput, \r\n  ReferenceManyField,\r\n  useTranslate,\r\n  DateField ,DateInput, required, useDataProvider, Loading, Error, FunctionField, useNotify, useCreate, useRefresh, Button, FormWithRedirect, BooleanInput, SaveButton\r\n} from 'react-admin';\r\n\r\nimport { useFormState } from 'react-final-form';\r\n\r\nimport { EditableDatagrid, RowForm } from '@react-admin/ra-editable-datagrid';\r\n\r\n\r\nimport Grid from '@mui/material/Grid';\r\nimport IconCancel from '@material-ui/icons/Cancel';\r\n\r\nimport { SendEmailIconStatus } from './../components/Emails';\r\nimport MyLoading from '../components/MyLoading';\r\nimport { targetsEmails,modules } from './../common/constants';\r\nimport { subscriptionModule  } from '../common/utils';\r\nimport { DownloadCard,RegenerateCard } from '../resources/groups_cards';\r\n\r\nimport DoneIcon from '@mui/icons-material/Done';\r\n\r\nimport Dialog from '@material-ui/core/Dialog';\r\nimport DialogTitle from '@material-ui/core/DialogTitle';\r\nimport DialogContent from '@material-ui/core/DialogContent';\r\nimport DialogActions from '@material-ui/core/DialogActions';\r\n\r\n\r\nimport { validateMaxLength  } from './../components/Validator';\r\n\r\n\r\nexport const UsersGroupsShow= (props) => {\r\n    \r\n  const translate = useTranslate();  \r\n            \r\n  return (\r\n    <>\r\n      <ReferenceManyField                    \r\n        reference=\"users_groups\"\r\n        target=\"users_id\"\r\n        label=\"\"\r\n        perPage={1000}\r\n      >\r\n\r\n        <Datagrid        \r\n          className=\"users_remittances_list header_grey6\"\r\n        >\r\n          <TextField source=\"group.name\" label={translate('users.group')} />\r\n          <TextField source=\"num_member\" label={translate('users_groups.num_member')} />\r\n                        \r\n          { subscriptionModule(modules.RECERCAT) ?\r\n            <DateField source=\"date_join\" showTime label={translate('users_groups.date_join')}/>\r\n            :\r\n            <DateField source=\"date_join\" label={translate('users_groups.date_join')}/> }\r\n                \r\n          { subscriptionModule(modules.RECERCAT) ?\r\n            <DateField source=\"date_left\" showTime label={translate('users_groups.date_left')}/>\r\n            :\r\n            <DateField source=\"date_left\" label={translate('users_groups.date_left')}/>\r\n          }\r\n                        \r\n          <TextField source=\"comment\" label={translate('common.comment')} /> \r\n                        \r\n          { !subscriptionModule(modules.RECERCAT) ?\r\n            <FunctionField label={translate('users.welcome_email_sent')} render={record => \r\n              <SendEmailIconStatus record={record} target={targetsEmails.WELCOME}  />\r\n            } sortable={false}  /> : null }\r\n                        \r\n          { subscriptionModule(modules.DIGITAL_CARDS) || subscriptionModule(modules.WALLETS) ?\r\n            <FunctionField label={translate('users.digital_card_send')} render={record => \r\n              <>\r\n                { record.group.card_digital ? <DownloadCard users_groups_id={record.id} /> : null }\r\n                <SendEmailIconStatus record={record} target={targetsEmails.DIGITAL_CARD_SEND}  />\r\n                { (record.group.card_digital || record.group.card_digital_wallets) && record.card_hash != null && record.card_hash.length > 0 ? <RegenerateCard users_groups_id={record.id} /> : null }              \r\n              </>\r\n            } sortable={false}  /> : null }\r\n            \r\n          { !subscriptionModule(modules.RECERCAT) ?\r\n            <FunctionField label={translate('users.group_left_email_sent')} render={record => \r\n              <SendEmailIconStatus record={record} target={targetsEmails.GROUP_LEFT}  />\r\n            } sortable={false}  /> : null }\r\n            \r\n           { !subscriptionModule(modules.RECERCAT) ?\r\n            <FunctionField label={translate('common.actions')} render={record => \r\n              record.date_left == null ? \r\n              <LeftGroupUserButton id={record.id} groups_public_id={record.group.public_id} />\r\n              : null \r\n            } sortable={false}  /> : null }\r\n            \r\n        </Datagrid>\r\n\r\n      </ReferenceManyField> \r\n                \r\n    </>\r\n  );\r\n};\r\n                  \r\nexport const UsersGroupsEdit= (props) => {\r\n  const translate = useTranslate();\r\n  return (\r\n    <ReferenceManyField                    \r\n      reference=\"users_groups\"\r\n      target=\"users_id\"\r\n      label=\"\"\r\n      perPage={1000}\r\n    >\r\n\r\n      <EditableDatagrid                       \r\n        createForm={<GroupFormNew initialValues={{ users_id: props.id, comment: '', date_join: props.today }} />}\r\n        editForm={<GroupForm />}\r\n        label=\"\"\r\n        hasCreate\r\n        fullWidth\r\n      >\r\n        <TextField source=\"group.name\" label={translate('users.group')} sortable={false} />\r\n        <TextField source=\"num_member\" label={translate('users_groups.num_member')} sortable={false} />\r\n        <DateField source=\"date_join\" label={translate('users_groups.date_join')} sortable={false} />\r\n        <DateField source=\"date_left\" label={translate('users_groups.date_left')} sortable={false} />\r\n        <TextField source=\"comment\" label={translate('common.comment')} sortable={false} />   \r\n      </EditableDatagrid>\r\n\r\n    </ReferenceManyField> \r\n  );\r\n};\r\n\r\nconst GroupForm= (props) => {\r\n  const translate = useTranslate();   \r\n  const { values } = useFormState();\r\n  return (\r\n    <RowForm {...props}  >\r\n      <ReferenceInput label={translate('users.group')} source=\"groups_id\" reference=\"groups\" filter={{ associations_id : localStorage.getItem('associations_id') }} perPage={1000} >\r\n        <SelectInput fullWidth optionText=\"path\" optionValue=\"id\" validate={required()} disabled />\r\n      </ReferenceInput>         \r\n      <TextInput fullWidth source=\"num_member\" label={translate('users_groups.num_member')} validate={[validateMaxLength(25,translate('common.validation.maxLength'))]} />   \r\n      <DateInput fullWidth source=\"date_join\" label={translate('users_groups.date_join')} />\r\n      <DateInput fullWidth source=\"date_left\" label={translate('users_groups.date_left')} />\r\n      <TextInput fullWidth multiline source=\"comment\" label={translate('common.comment')} validate={[validateMaxLength(255,translate('common.validation.maxLength'))]} />   \r\n    </RowForm>\r\n  );\r\n};\r\n\r\n\r\n/* <LastNumMemberInserted groups_id={values.groups_id} /> */\r\n\r\nconst GroupFormNew= (props) => {\r\n  const translate = useTranslate();   \r\n  const { values } = useFormState();\r\n  return (\r\n    <RowForm {...props}  >\r\n      <><br/>\r\n        <ReferenceInput label={translate('users.group')} source=\"groups_id\" reference=\"groups\" filter={{ associations_id : localStorage.getItem('associations_id') }} perPage={1000} >            \r\n          <SelectInput fullWidth optionText=\"path\" optionValue=\"id\" validate={required()} />            \r\n        </ReferenceInput> \r\n      </>\r\n      <NumMemberInput source=\"num_member\" />\r\n      <><br/>\r\n        <DateInput fullWidth source=\"date_join\" label={translate('users_groups.date_join')} />\r\n      </>\r\n      <span />\r\n      <><br/>\r\n        <TextInput fullWidth multiline source=\"comment\" label={translate('common.comment')} validate={[validateMaxLength(255,translate('common.validation.maxLength'))]} />   \r\n      </>\r\n    </RowForm>\r\n  );\r\n};\r\n\r\nexport const NumMemberInput = props => {\r\n  const translate = useTranslate();   \r\n  const { values } = useFormState();\r\n        \r\n  return (\r\n    values.groups_id ? \r\n      <>\r\n        <LastNumMemberInserted groups_id={values.groups_id} />\r\n        <TextInput fullWidth source=\"num_member\" label={translate('users_groups.num_member')} validate={[validateMaxLength(25,translate('common.validation.maxLength'))]} /> \r\n      </>\r\n      : ''\r\n  );\r\n};\r\n\r\n\r\nexport const LastNumMemberInserted = props => { \r\n    \r\n  const translate = useTranslate();   \r\n  const dataProvider = useDataProvider();\r\n  const [group, setGroup] = useState(0);\r\n  const [info, setInfo] = useState();\r\n  const [loading, setLoading] = useState(true);\r\n  const [error, setError] = useState();\r\n    \r\n  if (group !== props.groups_id)\r\n    setGroup(props.groups_id); \r\n    \r\n  useEffect(() => {\r\n    //console.log('LastNumMemberInserted->useEffect');\r\n    dataProvider.getOne('users_groups/last-num-member-inserted', { id: props.groups_id })\r\n      .then(( { data } ) => {           \r\n        setInfo(data);\r\n        setLoading(false);\r\n      })\r\n      .catch(error => {                \r\n        setLoading(false);                \r\n      });\r\n            \r\n  }, [group]);\r\n\r\n  if (loading) return <MyLoading />;\r\n  if (error) return <Error />;\r\n  if (!info) return null;\r\n    \r\n  return (\r\n    <span fullWidth className=\"last_num_inserted grey8\">{translate('users_groups.last_num_inserted')} {info.num_member}</span>\r\n  );\r\n};\r\n\r\n\r\n\r\n\r\n\r\nexport const LeftGroupUserButton = ({ id, groups_public_id, ...props }) => {\r\n\r\n  const [showDialog, setShowDialog] = useState(false);\r\n  const [create, { loading }] = useCreate('users_groups/left');\r\n  const notify = useNotify();\r\n  const refresh = useRefresh();    \r\n  const translate = useTranslate();  \r\n  const dataProvider = useDataProvider();\r\n    \r\n    \r\n  const today = new Date().toISOString().slice(0, 10);\r\n\r\n\r\n  const handleClick = () => {        \r\n    setShowDialog(true);        \r\n  };\r\n\r\n  const handleCloseClick = () => {\r\n    setShowDialog(false);\r\n  };\r\n\r\n  const handleSubmit = async values => {\r\n    create(            \r\n      { payload: { data: values } },\r\n      {\r\n        onSuccess: ({ data }) => {\r\n          setShowDialog(false);\r\n          refresh();\r\n        },\r\n        onFailure: ( error ) => {\r\n          notify( error.message , 'error');\r\n        }\r\n      }\r\n    );\r\n  };\r\n    \r\n  return (\r\n    <>            \r\n      <Button onClick={handleClick} label={translate('users_groups.left')} className=\"\" />\r\n        \r\n      <Dialog\r\n        fullWidth\r\n        open={showDialog}\r\n        onClose={handleCloseClick}\r\n        aria-label={translate('users_groups.left')}\r\n      >\r\n        <DialogTitle>{translate('users_groups.left')}</DialogTitle>\r\n\r\n        <FormWithRedirect\r\n          save={handleSubmit}\r\n          initialValues={{ id : id , date_left: today, left_send_email: groups_public_id == 'SOCIS' ? true : false }}\r\n          render={({\r\n            handleSubmitWithRedirect,\r\n            pristine,\r\n            saving\r\n          }) => (\r\n            <>\r\n              <DialogContent>\r\n                <Grid container spacing={2}>\r\n                  <Grid item xs={6}>     \r\n                    <br />\r\n                    <DateInput fullWidth source=\"date_left\" label={translate('users_groups.date_left')} />\r\n                  </Grid> \r\n                  <Grid item xs={6}>                         \r\n                  </Grid> \r\n                  { groups_public_id == 'SOCIS' ?\r\n                  <Grid item xs={12}>     \r\n                    <BooleanInput fullWidth source=\"left_send_email\" label={translate('users_groups.left_send_email')} />\r\n                  </Grid> : null }\r\n                </Grid>\r\n              </DialogContent>\r\n              <DialogActions>\r\n                <Button label=\"ra.action.cancel\" onClick={handleCloseClick} disabled={loading} >\r\n                  <IconCancel />\r\n                </Button>\r\n                <SaveButton\r\n                  handleSubmitWithRedirect={\r\n                    handleSubmitWithRedirect\r\n                  }\r\n                  pristine={pristine}\r\n                  saving={saving}\r\n                  disabled={loading}\r\n                />\r\n              </DialogActions>\r\n            </>\r\n          )}\r\n        />\r\n      </Dialog>\r\n    </>\r\n  );\r\n};\r\n","// in src/posts.js\r\nimport * as React from 'react';\r\nimport { useState } from 'react';\r\n\r\nimport {\r\n  List,\r\n  Datagrid,\r\n  TextField,\r\n  DeleteButton,\r\n  SelectInput, \r\n  ReferenceManyField,\r\n  useTranslate,\r\n  TopToolbar,\r\n  Button,\r\n  FormWithRedirect,\r\n  SaveButton,\r\n  DateField ,DateInput, required, FunctionField, useCreate, useNotify, useRefresh, NumberInput,\r\n  ResourceContextProvider,useUpdate, RadioButtonGroupInput, FormDataConsumer\r\n} from 'react-admin';\r\n\r\n\r\n\r\nimport EditIcon from '@material-ui/icons/Edit';\r\n\r\nimport IconCancel from '@material-ui/icons/Cancel';\r\nimport EmailIcon from '@mui/icons-material/Email';\r\n\r\nimport Grid from '@mui/material/Grid';\r\n\r\nimport Dialog from '@material-ui/core/Dialog';\r\nimport DialogTitle from '@material-ui/core/DialogTitle';\r\nimport DialogContent from '@material-ui/core/DialogContent';\r\nimport DialogActions from '@material-ui/core/DialogActions';\r\n\r\nimport { SendEmailIconStatus } from './../components/Emails';\r\nimport { targetsEmails } from './../common/constants';\r\nimport { useStyles  } from '../common/styles';\r\n\r\n\r\n\r\n\r\nexport const UsersAnnuaryShow= (props) => {\r\n    \r\n  const translate = useTranslate();  \r\n            \r\n  return (\r\n    <>\r\n      <ReferenceManyField                    \r\n        reference=\"users_annuary\"\r\n        target=\"users_id\"\r\n        label=\"\"\r\n        perPage={1000}\r\n        sort={{ field: 'year', order: 'DESC' }} \r\n      >\r\n\r\n        <Datagrid        \r\n          className=\"users_remittances_list header_grey6\"\r\n        >\r\n          <TextField source=\"year\" label={translate('common.year')} sortable={false} />\r\n          <FunctionField label={translate('users_annuary.answered_status')} render={record =>\r\n            translate('users_annuary.answered_status_' + record.answered_status)\r\n          } sortable={false}  /> \r\n          <DateField showTime source=\"answered_date_time\" label={translate('users_annuary.answered_date_time')} sortable={false} />\r\n          <DateField source=\"expiration_date\" label={translate('users_annuary.expiration_date')} sortable={false} />\r\n          <FunctionField label={translate('users_annuary.sent_status')} render={record => \r\n            <SendEmailIconStatus record={record} target={targetsEmails.ANNUARY_SEND}  />\r\n          } sortable={false}  />       \r\n          <FunctionField label={translate('users_annuary.reminder_status')} render={record => \r\n            <SendEmailIconStatus record={record} target={targetsEmails.ANNUARY_REMINDER}  />\r\n          } sortable={false}  /> \r\n          <FunctionField label={translate('users_annuary.confirm_status')} render={record => \r\n            <SendEmailIconStatus record={record} target={targetsEmails.ANNUARY_CONFIRM}  />\r\n          } sortable={false}  /> \r\n        </Datagrid>\r\n\r\n      </ReferenceManyField> \r\n                \r\n    </>\r\n  );\r\n};\r\n                  \r\nexport const UsersAnnuaryList= (props) => {\r\n  const translate = useTranslate();\r\n    \r\n  let strRedirect =  `/users/${props.users_id}/more_federation`; \r\n    \r\n  return (\r\n    <ResourceContextProvider value=\"users_annuary\" >\r\n      <List \r\n        syncWithLocation \r\n        basePath=\"/users_annuary\" \r\n        filter={{ users_id : props.users_id }}  \r\n        title=\"\"\r\n        bulkActionButtons={false}                \r\n        actions={<CustomToolbar users_id={props.users_id} /> }  \r\n        perPage={1000}\r\n        sort={{ field: 'year', order: 'ASC' }} \r\n        empty={<CustomToolbar users_id={props.users_id} /> } \r\n        pagination={false}\r\n      >\r\n        <Datagrid                     \r\n          label=\"\"\r\n          fullWidth\r\n        >\r\n          <TextField source=\"year\" label={translate('common.year')} sortable={false} />\r\n          <FunctionField label={translate('users_annuary.answered_status')} render={record =>\r\n            translate('users_annuary.answered_status_' + record.answered_status)\r\n          } sortable={false}  /> \r\n          <DateField showTime source=\"answered_date_time\" label={translate('users_annuary.answered_date_time')} sortable={false} />\r\n          <DateField source=\"expiration_date\" label={translate('users_annuary.expiration_date')} sortable={false} />\r\n          <FunctionField label={translate('users_annuary.sent_status')} render={record => \r\n            <SendEmailIconStatus record={record} target={targetsEmails.ANNUARY_SEND}  />\r\n          } sortable={false}  />       \r\n          <FunctionField label={translate('users_annuary.reminder_status')} render={record => \r\n            <SendEmailIconStatus record={record} target={targetsEmails.ANNUARY_REMINDER}  />\r\n          } sortable={false}  />  \r\n          <FunctionField label={translate('users_annuary.confirm_status')} render={record => \r\n            <SendEmailIconStatus record={record} target={targetsEmails.ANNUARY_CONFIRM}  />\r\n          } sortable={false}  /> \r\n          <CustomEditButton label=\"\"/>\r\n          <DeleteButton undoable={false} redirect={strRedirect} label=\"\"/>\r\n        </Datagrid>\r\n\r\n      </List> \r\n    </ResourceContextProvider>\r\n  );\r\n};\r\n\r\n\r\nexport const CustomEditButton = ({ ...props }) => {\r\n\r\n  const [showDialog, setShowDialog] = useState(false);\r\n  const notify = useNotify();\r\n  const refresh = useRefresh();    \r\n  const translate = useTranslate();  \r\n\r\n  const [update, { loading, error }] = useUpdate();\r\n\r\n  const handleClick = () => {\r\n    setShowDialog(true);\r\n  };\r\n\r\n  const handleCloseClick = () => {\r\n    setShowDialog(false);\r\n  };\r\n                        \r\n  const handleSubmit = async values => {\r\n    update(\r\n      { \r\n        type: 'update', \r\n        resource: 'users_annuary', \r\n        payload : { id: values.id, data : \r\n                {       users_id: values.users_id,\r\n                  year : values.year, \r\n                  expiration_date: values.expiration_date,\r\n                  answered_status: values.answered_status\r\n                } }\r\n      },\r\n      {\r\n        onSuccess: ({ data }) => {\r\n          setShowDialog(false);\r\n          refresh();\r\n        },\r\n        onFailure: ( error ) => {\r\n          notify(error.message, 'error');\r\n        }\r\n      }\r\n    );\r\n  };    \r\n\r\n  return (\r\n    <>\r\n      <Button onClick={handleClick} label=\"\" startIcon={<EditIcon />} />\r\n\r\n      <Dialog\r\n        fullWidth\r\n        open={showDialog}\r\n        onClose={handleCloseClick}\r\n      >\r\n        <DialogTitle>{translate('users_annuary.edit')}</DialogTitle>\r\n\r\n        <FormWithRedirect\r\n          resource=\"\"\r\n          save={handleSubmit}\r\n          initialValues={{ id : props.record.id, \r\n            users_id: props.record.users_id,\r\n            year : props.record.year, \r\n            expiration_date: props.record.expiration_date,\r\n            answered_status: props.record.answered_status\r\n          }}\r\n          render={({\r\n            handleSubmitWithRedirect,\r\n            pristine,\r\n            saving\r\n          }) => (\r\n            <>\r\n              <CustomForm />\r\n                            \r\n              <DialogContent className=\"users_sections_form\">\r\n                <Grid container spacing={2} >\r\n                  <Grid item xs={4}> \r\n                    <SelectInput label={translate('users_annuary.answered_status')} source=\"answered_status\" choices={[{id:1,name:translate('common.yes')},{id:0,name:translate('common.no')}]} validate={[required()]} />\r\n                  </Grid> \r\n                </Grid>\r\n              </DialogContent>\r\n                            \r\n              <DialogActions>\r\n                <Button label=\"ra.action.cancel\" onClick={handleCloseClick} disabled={loading} >\r\n                  <IconCancel />\r\n                </Button>\r\n                <SaveButton\r\n                  handleSubmitWithRedirect={\r\n                    handleSubmitWithRedirect\r\n                  }\r\n                  pristine={pristine}\r\n                  saving={saving}\r\n                  disabled={loading}\r\n                />\r\n              </DialogActions>\r\n            </>\r\n          )}\r\n        />\r\n      </Dialog>\r\n    </>\r\n  );\r\n};\r\n\r\n\r\nexport const CustomToolbar = ({ ...props }) => {\r\n\r\n  return (\r\n        \r\n    <TopToolbar>\r\n      <CustomCreateButton users_id={props.users_id} />\r\n    </TopToolbar>\r\n        \r\n  );\r\n};\r\n\r\n\r\nexport const CustomCreateButton = ({ ...props }) => {\r\n\r\n  const [showDialog, setShowDialog] = useState(false);\r\n  const [create, { loading }] = useCreate('users_annuary');\r\n  const notify = useNotify();\r\n  const refresh = useRefresh();    \r\n  const translate = useTranslate();  \r\n    \r\n  let lastYear = new Date().getFullYear()-1;\r\n    \r\n  const handleClick = () => {\r\n    setShowDialog(true);\r\n  };\r\n\r\n  const handleCloseClick = () => {\r\n    setShowDialog(false);\r\n  };\r\n\r\n  const handleSubmit = async values => {\r\n    create(\r\n      { payload: { data: values } },\r\n      {\r\n        onSuccess: ({ data }) => {\r\n          setShowDialog(false);\r\n          refresh();\r\n        },\r\n        onFailure: ( error ) => {\r\n          notify(error.message, 'error');\r\n        }\r\n      }\r\n    );\r\n  };\r\n\r\n\r\n  return (\r\n    <>            \r\n      <Button onClick={handleClick} label={translate('users_annuary.create_button')}>\r\n        <EmailIcon />                \r\n      </Button>\r\n\r\n      <Dialog\r\n        fullWidth\r\n        open={showDialog}\r\n        onClose={handleCloseClick}\r\n        aria-label={translate('users_annuary.create_button')}\r\n      >\r\n        <DialogTitle>{translate('users_annuary.create_button')}</DialogTitle>\r\n\r\n        <FormWithRedirect\r\n          resource=\"users_sections\"\r\n          save={handleSubmit}\r\n          initialValues={{ users_id : props.users_id, year: lastYear, action: 0 }}\r\n          render={({\r\n            handleSubmitWithRedirect,\r\n            pristine,\r\n            saving\r\n          }) => (\r\n            <>\r\n              <CustomForm />\r\n                            \r\n              <DialogActions>\r\n                <Button label=\"ra.action.cancel\" onClick={handleCloseClick} disabled={loading} >\r\n                  <IconCancel />\r\n                </Button>\r\n                <SaveButton\r\n                  handleSubmitWithRedirect={\r\n                    handleSubmitWithRedirect\r\n                  }\r\n                  pristine={pristine}\r\n                  saving={saving}\r\n                  disabled={loading}\r\n                  label={translate('users_annuary.send')}\r\n                  icon={<EmailIcon/>}\r\n                />\r\n              </DialogActions>\r\n            </>\r\n          )}\r\n        />\r\n      </Dialog>\r\n    </>\r\n  );\r\n};\r\n\r\nconst CustomForm = ({ ...props }) => {\r\n  const translate = useTranslate(); \r\n  const classes = useStyles();\r\n    \r\n  return (\r\n    <DialogContent className=\"users_sections_form\">\r\n      <br />\r\n      <Grid container spacing={2} >\r\n        <Grid item xs={4}> \r\n          <NumberInput label={translate('common.year')} fullWidth source=\"year\" step={1} disabled validate={[required()]} />  \r\n        </Grid> \r\n        <Grid item xs={5}> \r\n          <DateInput label={translate('users_annuary.expiration_date')} fullWidth source=\"expiration_date\" validate={[required()]} /> \r\n        </Grid>\r\n      </Grid>                \r\n                        \r\n    </DialogContent>\r\n  );\r\n    \r\n    \r\n};\r\n\r\nexport const UsersAnnuarySendButton = ({ ...props }) => {\r\n\r\n  const [showDialog, setShowDialog] = useState(false);\r\n  const [create, { loading }] = useCreate('users_annuary/all');\r\n  const notify = useNotify();\r\n  const refresh = useRefresh();    \r\n  const translate = useTranslate();  \r\n    \r\n  let lastYear = new Date().getFullYear()-1;\r\n    \r\n\r\n  const handleClick = () => {\r\n    setShowDialog(true);\r\n  };\r\n\r\n  const handleCloseClick = () => {\r\n    setShowDialog(false);\r\n  };\r\n\r\n  const handleSubmit = async values => {\r\n    create(\r\n      { payload: { data: values } },\r\n      {\r\n        onSuccess: ({ data }) => {\r\n          setShowDialog(false);\r\n          refresh();\r\n        },\r\n        onFailure: ( error ) => {\r\n          notify(error.message, 'error');\r\n        }\r\n      }\r\n    );\r\n  };\r\n\r\n\r\n  return (\r\n    <>            \r\n      <Button onClick={handleClick} label={translate('users_annuary.send_dialog_button')}>\r\n        <EmailIcon />                \r\n      </Button>\r\n\r\n      <Dialog\r\n        fullWidth\r\n        open={showDialog}\r\n        onClose={handleCloseClick}\r\n        aria-label={translate('users_annuary.title')}\r\n      >\r\n        <DialogTitle>{translate('users_annuary.title')}</DialogTitle>\r\n\r\n        <FormWithRedirect\r\n          resource=\"users_annuary\"\r\n          save={handleSubmit}\r\n          initialValues={{ action : 0, year: lastYear, groups_id: props.group }}\r\n          render={({\r\n            handleSubmitWithRedirect,\r\n            pristine,\r\n            saving\r\n          }) => (\r\n            <>\r\n                                                        \r\n              <DialogContent className=\"users_sections_form\">\r\n                <FormDataConsumer>\r\n                  {({ formData, ...rest }) => <>\r\n                    <Grid container spacing={2} > \r\n                      <Grid item xs={12}> \r\n                        <RadioButtonGroupInput source=\"action\" choices={[\r\n                          { id: 0, name: translate('users_annuary.send_dialog_action_0') },\r\n                          { id: 1, name: translate('users_annuary.send_dialog_action_1') }\r\n                        ]} \r\n                        optionText=\"name\" optionValue=\"id\" label={translate('users_annuary.send_dialog_action')} validate={required()}  />\r\n                      </Grid>\r\n                      <Grid item xs={12}> \r\n                        <span>{translate('users_annuary.send_dialog_text1_' + formData.action )}</span>\r\n                      </Grid>\r\n                      <Grid item xs={12}> \r\n                        <span>{translate('users_annuary.send_dialog_text2')}</span>\r\n                      </Grid>\r\n                      <Grid item xs={12}> \r\n                        <span>{translate('users_annuary.send_dialog_text3')}</span>\r\n                      </Grid>\r\n                    </Grid> \r\n                  </> }\r\n                </FormDataConsumer>\r\n              </DialogContent>\r\n                            \r\n              <CustomForm />\r\n                            \r\n              <br />\r\n                            \r\n              <DialogActions>\r\n                <Button label=\"ra.action.cancel\" onClick={handleCloseClick} disabled={loading} >\r\n                  <IconCancel />\r\n                </Button>\r\n                <SaveButton\r\n                  handleSubmitWithRedirect={\r\n                    handleSubmitWithRedirect\r\n                  }\r\n                  pristine={pristine}\r\n                  saving={saving}\r\n                  disabled={loading}\r\n                  label={translate('users_annuary.send')}\r\n                  icon={<EmailIcon/>}\r\n                />\r\n              </DialogActions>\r\n            </>\r\n          )}\r\n        />\r\n      </Dialog>\r\n    </>\r\n  );  \r\n    \r\n};\r\n","// in src/posts.js\r\nimport * as React from 'react';\r\n\r\nimport { \r\n  Datagrid,\r\n  TextField,\r\n  SimpleForm,\r\n  ReferenceInput,\r\n  SelectInput,\r\n  TextInput, \r\n  TopToolbar,\r\n  ReferenceManyField, required,DateField ,DateInput,FunctionField, AutocompleteInput, downloadCSV\r\n} from 'react-admin';\r\n\r\n\r\nimport { ExportButton } from './../components/ExportButton';\r\nimport jsonExport from 'jsonexport/dist';\r\n\r\nimport { EditableDatagrid, RowForm } from '@react-admin/ra-editable-datagrid';\r\n\r\n\r\n\r\n\r\n\r\nimport { useFormState } from 'react-final-form';\r\n\r\n\r\nimport { useTranslate  } from '../common/language';\r\n\r\nimport { UserAvatarIcon, UserFullNameTxt } from '../components/User';\r\n\r\n\r\nimport { validateMaxLength  } from './../components/Validator';\r\n\r\n\r\n/* LLISTAT DES DE PAGINA DE USERS */\r\n\r\nexport const UsersGroupsResponsabilitiesShow = (props) => {\r\n  const translate = useTranslate();\r\n  return (\r\n    <ReferenceManyField                    \r\n      reference=\"users_groups_responsabilities\"\r\n      target=\"users_id\"\r\n      label=\"\"\r\n      perPage={1000}\r\n    >\r\n      <Datagrid      \r\n        fullWidth\r\n        className=\"users_remittances_list header_grey6\"\r\n      >\r\n        <TextField source=\"group.name\" label={translate('users.group')} sortable={false} />\r\n        <TextField source=\"responsability.name\" label={translate('users_groups.responsability')} sortable={false} />\r\n        <DateField source=\"date_join\" label={translate('users_groups.date_join')} sortable={false}/>\r\n        <DateField source=\"date_left\" label={translate('users_groups.date_left')} sortable={false}/>\r\n        <TextField source=\"comment\" label={translate('common.comment')} sortable={false} />   \r\n      </Datagrid>\r\n\r\n    </ReferenceManyField>               \r\n  );\r\n};\r\n\r\n\r\nexport const UsersGroupsResponsabilitiesEdit= (props) => {\r\n  const translate = useTranslate();\r\n  let users_id = props.id;\r\n    \r\n  return (\r\n    <ReferenceManyField                    \r\n      reference=\"users_groups_responsabilities\"\r\n      target=\"users_id\"\r\n      label=\"\"\r\n      perPage={1000}\r\n    >\r\n      <EditableDatagrid                       \r\n        createForm={<GroupResponsabilityFormNew initialValues={{ users_id: users_id, comment: '', date_join: props.today }} />}\r\n        editForm={<GroupResponsabilityForm userId={{users_id}} />}\r\n        label=\"\"\r\n        hasCreate\r\n        fullWidth                        \r\n      >\r\n        <TextField source=\"group.name\" label={translate('users.group')} sortable={false} />\r\n        <TextField source=\"responsability.name\" label={translate('users_groups.responsability')} sortable={false} />\r\n        <DateField source=\"date_join\" label={translate('users_groups.date_join')} sortable={false} />\r\n        <DateField source=\"date_left\" label={translate('users_groups.date_left')} sortable={false} />\r\n        <TextField source=\"comment\" label={translate('common.comment')} sortable={false} />   \r\n      </EditableDatagrid>\r\n\r\n    </ReferenceManyField> \r\n  );\r\n};\r\n\r\n\r\nconst GroupResponsabilityForm = ({ ...props}) => {\r\n  const translate = useTranslate();   \r\n  const { values } = useFormState();\r\n  return (\r\n    <RowForm {...props}  >\r\n      <ReferenceInput label={translate('users.group')} source=\"groups_id\" reference=\"groups\" filter={{ users_id : values.id, associations_id : localStorage.getItem('associations_id') }} perPage={1000} >\r\n        <SelectInput fullWidth optionText=\"name\" optionValue=\"id\" validate={required()} disabled />\r\n      </ReferenceInput> \r\n      <ReferenceInput label={translate('users_groups.responsability')} source=\"responsabilities_id\" reference=\"responsabilities\" perPage={100} sort={{ field: 'priority', order: 'ASC' }} perPage={1000} >\r\n        <SelectInput fullWidth optionText=\"name\" optionValue=\"id\" validate={required()} disabled />\r\n      </ReferenceInput> \r\n      <DateInput fullWidth source=\"date_join\" label={translate('users_groups.date_join')} />\r\n      <DateInput fullWidth source=\"date_left\" label={translate('users_groups.date_left')} />\r\n      <TextInput fullWidth multiline source=\"comment\" label={translate('common.comment')} validate={[validateMaxLength(255,translate('common.validation.maxLength'))]} />   \r\n    </RowForm>\r\n  );\r\n};\r\n\r\nconst GroupResponsabilityFormNew = ({ ...props}) => {\r\n  const translate = useTranslate();   \r\n  const { values } = useFormState();\r\n  return (\r\n    <RowForm {...props}  >\r\n      <ReferenceInput label={translate('users.group')} source=\"groups_id\" reference=\"groups\" filter={{ users_id : values.id, associations_id : localStorage.getItem('associations_id') }} perPage={1000} >\r\n        <SelectInput fullWidth optionText=\"name\" optionValue=\"id\" validate={required()} />\r\n      </ReferenceInput> \r\n      <ReferenceInput label={translate('users_groups.responsability')} source=\"responsabilities_id\" reference=\"responsabilities\" perPage={100} sort={{ field: 'priority', order: 'ASC' }} perPage={1000} >\r\n        <SelectInput fullWidth optionText=\"name\" optionValue=\"id\" validate={required()} />\r\n      </ReferenceInput> \r\n      <DateInput fullWidth source=\"date_join\" label={translate('users_groups.date_join')} />\r\n      <span />\r\n      <TextInput fullWidth multiline source=\"comment\" label={translate('common.comment')} validate={[validateMaxLength(255,translate('common.validation.maxLength'))]} />   \r\n    </RowForm>\r\n  );\r\n};\r\n\r\n/* LLISTAT DES DE PAGINA DE GROUPS */\r\n\r\n\r\nconst GroupResponsabilitiesToolbar = ({ groups_id , ...props }) => {\r\n\r\n  const translate = useTranslate();\r\n    \r\n  let filterExport = {\r\n    groups_id : groups_id        \r\n  };\r\n    \r\n  return (        \r\n    <TopToolbar>            \r\n      <ExportButton maxResults=\"100000\" filterValues={filterExport} alwaysEnabled={true} exporter={exporter} resource=\"users_groups_responsabilities\" sort={{ field: 'id', order: 'DESC' }} />\r\n    </TopToolbar>               \r\n  );\r\n};\r\n\r\n\r\nconst exporter = (items, translate, notify) => {\r\n        \r\n  const eventsForExport = items.map(item => {\r\n    var eventForExport = {\r\n      id : item.id,\r\n      first_name : item.user.first_name,             \r\n      last_name_1 : item.user.last_name_1, \r\n      last_name_2 : item.user.last_name_2, \r\n      email : item.user.email, \r\n      group_name : item.group.name, \r\n      responsability_name: item.responsability.name,\r\n      date_join : item.date_join ? item.date_join.substr(0,10) : '', \r\n      date_left : item.date_left ? item.date_left.substr(0,10) : '',\r\n      comment: item.comment\r\n    };\r\n    return eventForExport;\r\n  });\r\n  jsonExport(eventsForExport, {\r\n    headers: ['id', 'first_name', 'last_name_1', 'last_name_2','email','group_name','responsability_name','date_join','date_left','comment'],\r\n    rename: [translate('common.id'), translate('users.first_name'), translate('users.last_name_1'), translate('users.last_name_2'), translate('users.email'), translate('groups.group'),  translate('users_groups.responsability'),  translate('users_groups.date_join'),  translate('users_groups.date_left'),  translate('common.comment')],        \r\n        \r\n  }, (err, csv) => {\r\n    const csv_new = '\\uFEFF' + csv;\r\n    downloadCSV(csv_new, translate('users_groups.exporter_file_name') ); \r\n    notify(translate('common.download_ok'),\"success\");\r\n  });\r\n};\r\n\r\n\r\nexport const UsersGroupsResponsabilitiesList = ({ ...props}) => {\r\n    \r\n  const translate = useTranslate();  \r\n\r\n  const today = new Date().toISOString().slice(0, 10);\r\n    \r\n  let groups_id = props.groups_id;\r\n\r\n  return (\r\n    <SimpleForm basePath=\"\" toolbar={<span/>} {...props}>  \r\n      <GroupResponsabilitiesToolbar groups_id={groups_id} empty={false} />\r\n      <ReferenceManyField   \r\n        fullWidth                 \r\n        reference=\"users_groups_responsabilities\"\r\n        filter={{ groups_id : groups_id }}\r\n        target=\"irrellevant\"\r\n        label=\"\"   \r\n        perPage={1000} \r\n      >\r\n        <EditableDatagrid                       \r\n          createForm={<GroupResponsabilityFormCreate groups_id={groups_id} initialValues={{ groups_id: groups_id, comment: '', date_join: today }} />}\r\n          editForm={<GroupResponsabilityFormEdit groups_id={groups_id} />}\r\n          label=\"\"\r\n          hasCreate        \r\n                        \r\n          {...props}         \r\n        >\r\n          <FunctionField label=\"\" render={record => <UserAvatarIcon record={record.user} /> } sortable={false} /> \r\n          <FunctionField label={translate('users.first_name')} render={record => <UserFullNameTxt record={record.user} /> } sortable={false} /> \r\n          <TextField source=\"responsability.name\" label={translate('users_groups.responsability')} sortable={false} />\r\n          <DateField source=\"date_join\" label={translate('users_groups.date_join')} sortable={false}/>\r\n          <DateField source=\"date_left\" label={translate('users_groups.date_left')} sortable={false} />\r\n          <TextField source=\"comment\" label={translate('common.comment')} sortable={false} />   \r\n        </EditableDatagrid>\r\n\r\n      </ReferenceManyField> \r\n    </SimpleForm> \r\n  );\r\n};\r\n\r\nconst GroupResponsabilityFormCreate = ({ ...props}) => {\r\n  const translate = useTranslate();   \r\n  const { values } = useFormState();\r\n\r\n  return (\r\n    <RowForm {...props}  >\r\n\r\n      <span />\r\n      <ReferenceInput \r\n        label={translate('users.person')}\r\n        source=\"users_id\" \r\n        reference=\"users\"\r\n        filter={{ groups_id : props.groups_id, associations_id: localStorage.getItem('associations_id') }}             \r\n      >\r\n        <AutocompleteInput fullWidth optionText=\"complete_name\" validate={required()} />\r\n      </ReferenceInput>\r\n      <ReferenceInput \r\n        label={translate('users_groups.responsability')} \r\n        source=\"responsabilities_id\" \r\n        reference=\"responsabilities\"\r\n        sort={{ field: 'priority', order: 'ASC' }} \r\n        perPage={1000}\r\n      >\r\n        <SelectInput fullWidth optionText=\"name\" optionValue=\"id\" validate={required()} />\r\n      </ReferenceInput> \r\n      <DateInput fullWidth source=\"date_join\" label={translate('users_groups.date_join')} />\r\n      <span />\r\n      <TextInput fullWidth multiline source=\"comment\" label={translate('common.comment')} validate={[validateMaxLength(255,translate('common.validation.maxLength'))]} />   \r\n    </RowForm>\r\n  );\r\n};\r\n\r\nconst GroupResponsabilityFormEdit = ({...props}) => {\r\n  const translate = useTranslate();   \r\n  const { values } = useFormState();\r\n    \r\n  console.log('GroupResponsabilityFormEdit');\r\n  console.log(props);\r\n  console.log(values);\r\n    \r\n  return (\r\n    <RowForm {...props}  >\r\n\r\n      <span />\r\n      <ReferenceInput \r\n        label={translate('users.person')}\r\n        source=\"users_id\" \r\n        reference=\"users\"\r\n        filter={{ groups_id : props.groups_id, associations_id: localStorage.getItem('associations_id') }} \r\n        perPage={10000}\r\n      >\r\n        <AutocompleteInput fullWidth disabled optionText=\"complete_name\"  validate={required()} />\r\n      </ReferenceInput>\r\n      <ReferenceInput label={translate('users_groups.responsability')} source=\"responsabilities_id\" reference=\"responsabilities\">\r\n        <SelectInput fullWidth optionText=\"name\" optionValue=\"id\" validate={required()} disabled />\r\n      </ReferenceInput> \r\n      <DateInput fullWidth source=\"date_join\" label={translate('users_groups.date_join')} />\r\n      <DateInput fullWidth source=\"date_left\" label={translate('users_groups.date_left')} />\r\n      <TextInput fullWidth multiline source=\"comment\" label={translate('common.comment')} validate={[validateMaxLength(255,translate('common.validation.maxLength'))]} />   \r\n    </RowForm>\r\n  );\r\n};\r\n\r\n\r\n","// in src/posts.js\r\nimport * as React from 'react';\r\n\r\nimport { \r\n  Datagrid,\r\n  TextField,\r\n  TextInput,\r\n  ReferenceManyField, required,DateField ,DateInput\r\n} from 'react-admin';\r\n\r\n\r\n\r\nimport { EditableDatagrid, RowForm } from '@react-admin/ra-editable-datagrid';\r\n\r\n\r\n\r\n\r\n\r\nimport { useFormState } from 'react-final-form';\r\n\r\n\r\nimport { useTranslate  } from '../common/language';\r\n\r\n\r\n\r\nimport { validateMaxLength  } from './../components/Validator';\r\nimport { usersEditedBooksType  } from './../common/constants';\r\n\r\n\r\n/* LLISTAT DES DE PAGINA DE USERS */\r\n\r\nexport const UsersEditedBooksShow = (props) => {\r\n  const translate = useTranslate();\r\n  return (\r\n    <ReferenceManyField                    \r\n      reference=\"users_edited_books\"\r\n      target=\"users_id\"\r\n      label=\"\"\r\n      filter={{ type : props.type }}\r\n      sort={{ field: 'datePublication', order: 'ASC' }}\r\n      perPage={1000}\r\n    >\r\n        { props.type === usersEditedBooksType.HIGHLIGHTED_DATES ?\r\n            <Datagrid    \r\n                className=\"users_remittances_list header_grey6\"\r\n            >\r\n                <DateField source=\"date_publication\" label={translate('users_federation.edited_books_date')} sortable={false}/>\r\n                <TextField source=\"name\" label={translate('users_federation.event')} sortable={false}/>        \r\n            </Datagrid>   \r\n        :\r\n            <Datagrid    \r\n              className=\"users_remittances_list header_grey6\"\r\n            >\r\n              <TextField source=\"name\"  label={props.type === usersEditedBooksType.NOTABLE_INDIVIDUALS ? translate('common.name') : props.type === usersEditedBooksType.LINKS ? translate('common.link') : translate('common.title')} sortable={false}/>\r\n              { ( props.type === usersEditedBooksType.BOOKS || props.type === usersEditedBooksType.BOOK_ENTITY || props.type === usersEditedBooksType.HIGHLIGHTED_DATES ) ? \r\n                <DateField source=\"date_publication\" label={translate('users_federation.edited_books_date')} sortable={false}/>\r\n                : null }\r\n              { !(props.type === usersEditedBooksType.BOOKS || props.type === usersEditedBooksType.BOOK_ENTITY || props.type === usersEditedBooksType.HIGHLIGHTED_DATES || props.type === usersEditedBooksType.NOTABLE_INDIVIDUALS || props.type === usersEditedBooksType.LINKS) ? \r\n                <TextField source=\"period\" label={translate('users_federation.edited_books_period')} sortable={false} />\r\n                : null }\r\n      </Datagrid> }\r\n\r\n    </ReferenceManyField>                  \r\n  );\r\n};\r\n\r\nexport const UsersEditedBooksEdit= (props) => {\r\n  const translate = useTranslate();\r\n  let users_id = props.id;\r\n    \r\n  return (\r\n    <ReferenceManyField                    \r\n      reference=\"users_edited_books\"\r\n      target=\"users_id\"\r\n      label=\"\"\r\n      filter={{ type : props.type }}\r\n      sort={{ field: 'datePublication', order: 'ASC' }}\r\n      perPage={1000}\r\n    >\r\n        { props.type === usersEditedBooksType.HIGHLIGHTED_DATES ?\r\n        <EditableDatagrid                       \r\n            createForm={<UsersEditedBooksFormHighlightedDates initialValues={{ users_id: users_id, type: props.type }} />}\r\n            editForm={<UsersEditedBooksFormHighlightedDates />}\r\n            label=\"\"\r\n            hasCreate\r\n            fullWidth                        \r\n        >       \r\n            <DateField source=\"date_publication\" label={translate('users_federation.edited_books_date')} sortable={false} />\r\n            <TextField source=\"name\" label={translate('users_federation.event')} sortable={false} />        \r\n        </EditableDatagrid>   \r\n        :\r\n      <EditableDatagrid                       \r\n        createForm={<UsersEditedBooksForm initialValues={{ users_id: users_id, type: props.type }} />}\r\n        editForm={<UsersEditedBooksForm />}\r\n        label=\"\"\r\n        hasCreate\r\n        fullWidth                        \r\n      >       \r\n        <TextField source=\"name\" label={props.type === usersEditedBooksType.NOTABLE_INDIVIDUALS ? translate('common.name') : props.type === usersEditedBooksType.LINKS ? translate('common.link') : translate('common.title')} sortable={false} />\r\n        { (props.type === usersEditedBooksType.BOOKS || props.type === usersEditedBooksType.BOOK_ENTITY || props.type === usersEditedBooksType.HIGHLIGHTED_DATES )? \r\n          <DateField source=\"date_publication\" label={translate('users_federation.edited_books_date')} sortable={false} />\r\n          : null }\r\n        { !(props.type === usersEditedBooksType.BOOKS || props.type === usersEditedBooksType.BOOK_ENTITY || props.type === usersEditedBooksType.HIGHLIGHTED_DATES || props.type === usersEditedBooksType.NOTABLE_INDIVIDUALS || props.type === usersEditedBooksType.LINKS ) ? \r\n          <TextField source=\"period\" label={translate('users_federation.edited_books_period')} sortable={false} />\r\n          : null }    \r\n      </EditableDatagrid> }\r\n\r\n    </ReferenceManyField> \r\n  );\r\n};\r\n\r\n\r\nconst UsersEditedBooksFormHighlightedDates = ({ ...props}) => {\r\n  const translate = useTranslate();   \r\n  const { values } = useFormState();\r\n    \r\n  let type = props.initialValues ? props.initialValues.type : props.record.type;\r\n  return (\r\n    <RowForm {...props}  >    \r\n      <DateInput source=\"date_publication\" label={translate('users_federation.edited_books_date')} validate={[required()]} />\r\n      <TextInput fullWidth source=\"name\" label={translate('users_federation.event')} validate={[required(), validateMaxLength(100,translate('common.validation.maxLength'))]} />        \r\n    </RowForm>\r\n  );\r\n};\r\n\r\nconst UsersEditedBooksForm = ({ ...props}) => {\r\n  const translate = useTranslate();   \r\n  const { values } = useFormState();\r\n    \r\n  let type = props.initialValues ? props.initialValues.type : props.record.type;\r\n  return (\r\n    <RowForm {...props}  >                \r\n      <TextInput fullWidth source=\"name\" label={type === usersEditedBooksType.NOTABLE_INDIVIDUALS ? translate('common.name') : type === usersEditedBooksType.LINKS ? translate('common.link') : translate('common.title')} validate={[required(), validateMaxLength(100,translate('common.validation.maxLength'))]} />  \r\n      { (type === usersEditedBooksType.BOOKS || type === usersEditedBooksType.BOOK_ENTITY || type === usersEditedBooksType.HIGHLIGHTED_DATES ) ? \r\n        <DateInput source=\"date_publication\" label={translate('users_federation.edited_books_date')} validate={[required()]} />\r\n        : null }\r\n      { !(type === usersEditedBooksType.BOOKS || type === usersEditedBooksType.BOOK_ENTITY || type === usersEditedBooksType.HIGHLIGHTED_DATES || type === usersEditedBooksType.NOTABLE_INDIVIDUALS || type === usersEditedBooksType.LINKS) ? \r\n        <TextInput fullWidth source=\"period\" label={translate('users_federation.edited_books_period')} validate={[validateMaxLength(100,translate('common.validation.maxLength'))]} />   \r\n        : null }\r\n    </RowForm>\r\n  );\r\n};\r\n","// in src/posts.js\r\nimport * as React from 'react';\r\n\r\nimport { \r\n  Datagrid,\r\n  TextField,\r\n  TextInput,\r\n  ReferenceManyField, required,DateField ,DateInput\r\n} from 'react-admin';\r\n\r\n\r\n\r\nimport { EditableDatagrid, RowForm } from '@react-admin/ra-editable-datagrid';\r\n\r\n\r\n\r\n\r\n\r\nimport { useFormState } from 'react-final-form';\r\n\r\n\r\nimport { useTranslate  } from '../common/language';\r\n\r\n\r\n\r\nimport { validateMaxLength  } from './../components/Validator';\r\n\r\n\r\n/* LLISTAT DES DE PAGINA DE USERS */\r\n\r\nexport const UsersRecognitionsShow = (props) => {\r\n  const translate = useTranslate();\r\n  return (\r\n    <ReferenceManyField                    \r\n      reference=\"users_recognitions\"\r\n      target=\"users_id\"\r\n      label=\"\"\r\n    >\r\n      <Datagrid     \r\n        className=\"users_remittances_list header_grey6\"\r\n      >\r\n        <TextField source=\"name\" label={translate('common.name')} sortable={false} />\r\n        <DateField source=\"date_recognition\" label={translate('users_federation.recognitions_date')} sortable={false}/>\r\n      </Datagrid>\r\n\r\n    </ReferenceManyField>                         \r\n  );\r\n};\r\n\r\n\r\nexport const UsersRecognitionsEdit= (props) => {\r\n  const translate = useTranslate();\r\n  let users_id = props.id;\r\n    \r\n  return (\r\n    <ReferenceManyField                    \r\n      reference=\"users_recognitions\"\r\n      target=\"users_id\"\r\n      label=\"\"\r\n    >\r\n      <EditableDatagrid                       \r\n        createForm={<UsersRecognitionsForm initialValues={{ users_id: users_id }} />}\r\n        editForm={<UsersRecognitionsForm userId={{users_id}} />}\r\n        label=\"\"\r\n        hasCreate\r\n        fullWidth                        \r\n      >\r\n        <TextField source=\"name\" label={translate('common.name')} sortable={false} />\r\n        <DateField source=\"date_recognition\" label={translate('users_federation.recognitions_date')} sortable={false}/>\r\n      </EditableDatagrid>\r\n\r\n    </ReferenceManyField> \r\n  );\r\n};\r\n\r\nconst UsersRecognitionsForm = ({ ...props}) => {\r\n  const translate = useTranslate();   \r\n  const { values } = useFormState();\r\n  return (\r\n    <RowForm {...props}  >                \r\n      <TextInput fullWidth source=\"name\" label={translate('common.name')} validate={[required(),validateMaxLength(255,translate('common.validation.maxLength'))]} />  \r\n      <DateInput source=\"date_recognition\" label={translate('users_federation.recognitions_date')} validate={[required()]} />\r\n    </RowForm>\r\n  );\r\n};","// in src/posts.js\r\nimport * as React from 'react';\r\n\r\nimport { \r\n  Datagrid,\r\n  SelectInput,\r\n  ReferenceManyField, required,FunctionField, DateTimeInput\r\n} from 'react-admin';\r\n\r\n\r\nimport { EditableDatagrid, RowForm  } from '@react-admin/ra-editable-datagrid';\r\n\r\n\r\n\r\n\r\n\r\nimport { useFormState } from 'react-final-form';\r\n\r\n\r\nimport { useTranslate  } from '../common/language';\r\n\r\n\r\n\r\n\r\n\r\n/* LLISTAT DES DE PAGINA DE USERS */\r\n\r\nexport const UsersSchedulesShow = (props) => {\r\n  const translate = useTranslate();\r\n  return (\r\n    <ReferenceManyField                    \r\n      reference=\"users_schedules\"\r\n      target=\"users_id\"\r\n      label=\"\"\r\n      sort={{ field: 'dayWeek,timeStart', order: 'ASC' }}\r\n    >\r\n      <Datagrid     \r\n        className=\"users_remittances_list header_grey6\"\r\n      >                        \r\n        <FunctionField\r\n          label={translate('users_federation.schedules_day_week')}\r\n          render={record => translate('common.day_week_complete_' + record.day_week ) }\r\n          sortable={false}\r\n        />\r\n        <FunctionField label={translate('users_federation.schedules_time_finish')} render={record => \r\n          record.time_start ? record.time_start.substring(0,5) : ''\r\n        } sortable={false}  />\r\n        <FunctionField label={translate('users_federation.schedules_time_finish')} render={record => \r\n          record.time_finish ? record.time_finish.substring(0,5) : ''\r\n        } sortable={false}  />\r\n      </Datagrid>\r\n\r\n    </ReferenceManyField>                     \r\n  );\r\n};\r\n\r\nvar dayWeekFormat = function (value) {\r\n  return 'holaaaaa';\r\n}; \r\n\r\nexport const UsersSchedulesEdit= (props) => {\r\n  const translate = useTranslate();\r\n  let users_id = props.id;\r\n    \r\n  return (\r\n    <ReferenceManyField                    \r\n      reference=\"users_schedules\"\r\n      target=\"users_id\"\r\n      label=\"\"\r\n      sort={{ field: 'dayWeek,timeStart', order: 'ASC' }}\r\n    >\r\n      <EditableDatagrid                       \r\n        createForm={<UsersSchedulesForm initialValues={{ users_id: users_id, time_start: '09:00', time_finish: '22:00' }} />}\r\n        editForm={<UsersSchedulesForm userId={{users_id}} />}\r\n        label=\"\"\r\n        hasCreate\r\n        fullWidth                        \r\n      >\r\n        <FunctionField\r\n          label={translate('users_federation.schedules_day_week')}\r\n          render={record => translate('common.day_week_complete_' + record.day_week ) }\r\n          sortable={false}\r\n        />\r\n        <FunctionField label={translate('users_federation.schedules_time_finish')} render={record => \r\n          record.time_start ? record.time_start.substring(0,5) : ''\r\n        } sortable={false}  />\r\n        <FunctionField label={translate('users_federation.schedules_time_finish')} render={record => \r\n          record.time_finish ? record.time_finish.substring(0,5) : ''\r\n        } sortable={false}  />\r\n      </EditableDatagrid>\r\n\r\n    </ReferenceManyField> \r\n  );\r\n};\r\n\r\nconst UsersSchedulesForm = ({ ...props}) => {\r\n  const translate = useTranslate();   \r\n  const { values } = useFormState();\r\n        \r\n  return (\r\n    <RowForm {...props} >     \r\n      <SelectInput label={translate('users_federation.schedules_day_week')} source=\"day_week\" choices={[\r\n        { id: 1, name: translate('common.day_week_complete_1') },\r\n        { id: 2, name: translate('common.day_week_complete_2') },\r\n        { id: 3, name: translate('common.day_week_complete_3') },\r\n        { id: 4, name: translate('common.day_week_complete_4') },\r\n        { id: 5, name: translate('common.day_week_complete_5') },\r\n        { id: 6, name: translate('common.day_week_complete_6') },\r\n        { id: 7, name: translate('common.day_week_complete_7') },\r\n      ]} validate={[required()]} />\r\n                \r\n      <DateTimeInput format={formatTime} parse={timeParser} type=\"time\" source=\"time_start\" label={translate('users_federation.schedules_time_start')} validate={[required()]} />\r\n      <DateTimeInput format={formatTime} parse={timeParser} type=\"time\" source=\"time_finish\" label={translate('users_federation.schedules_time_finish')} validate={[required()]} /> \r\n        \r\n    </RowForm>\r\n  );\r\n};\r\n\r\nconst timeParser = (v) => {\r\n  return v;\r\n};\r\n\r\nvar formatTime = function (value) {    \r\n  return value;\r\n};","import React, { useState } from 'react';\r\nimport {\r\n  required,\r\n  Button,\r\n  SaveButton,\r\n  TextInput,\r\n  useCreate,\r\n  useNotify,\r\n  FormWithRedirect,\r\n  useRefresh, TopToolbar, useTranslate, BooleanInput, FormDataConsumer, useUpdate, SelectInput, NumberInput\r\n} from 'react-admin';\r\nimport IconContentAdd from '@material-ui/icons/Add';\r\nimport IconCancel from '@material-ui/icons/Cancel';\r\n\r\nimport EditIcon from '@material-ui/icons/Edit';\r\n\r\n\r\nimport Grid from '@mui/material/Grid';\r\n\r\nimport Dialog from '@material-ui/core/Dialog';\r\nimport DialogTitle from '@material-ui/core/DialogTitle';\r\nimport DialogContent from '@material-ui/core/DialogContent';\r\nimport DialogActions from '@material-ui/core/DialogActions';\r\n\r\nimport { choicesRegion, choicesProvince, choicesCountry , modules} from './../common/constants';\r\nimport { validateMaxLength  } from './../components/Validator';\r\nimport { subscriptionModule  } from './../common/utils';\r\n\r\n\r\nexport const UsersAddressesCreateButton = ({ users_id , ...props }) => {\r\n  \r\n  const [showDialog, setShowDialog] = useState(false);\r\n  const [create, { loading }] = useCreate('users_addresses');\r\n  const notify = useNotify();\r\n  const refresh = useRefresh();    \r\n  const translate = useTranslate();  \r\n\r\n  const handleClick = () => {\r\n    setShowDialog(true);\r\n  };\r\n\r\n  const handleCloseClick = () => {\r\n    setShowDialog(false);\r\n  };\r\n\r\n  const handleSubmit = async values => {\r\n    create(\r\n      { payload: { data: values } },\r\n      {\r\n        onSuccess: ({ data }) => {\r\n          setShowDialog(false);\r\n          refresh();\r\n        },\r\n        onFailure: ( error ) => {                    \r\n          notify(error.message, 'error');\r\n        }\r\n      }\r\n    );\r\n  };\r\n\r\n  return (\r\n    <>\r\n      <TopToolbar>\r\n        <Button onClick={handleClick} >\r\n          <IconContentAdd/>\r\n        </Button>\r\n      </TopToolbar> \r\n\r\n      <Dialog\r\n        fullWidth\r\n        open={showDialog}\r\n        onClose={handleCloseClick}\r\n        aria-label={translate('users_federation.addresses_create')}\r\n      >\r\n        <DialogTitle>{translate('users_federation.addresses_create')}</DialogTitle>\r\n\r\n        <FormWithRedirect\r\n          resource=\"users_addresses\"\r\n          save={handleSubmit}\r\n          initialValues={{ users_id: users_id, ship_to_same: true, is_foundation_address: true }}\r\n          render={({\r\n            handleSubmitWithRedirect,\r\n            pristine,\r\n            saving\r\n          }) => (\r\n            <>\r\n              <AddressDialogContent />\r\n              <DialogActions>\r\n                <Button label=\"ra.action.cancel\" onClick={handleCloseClick} disabled={loading} >\r\n                  <IconCancel />\r\n                </Button>\r\n                <SaveButton\r\n                  handleSubmitWithRedirect={\r\n                    handleSubmitWithRedirect\r\n                  }\r\n                  pristine={pristine}\r\n                  saving={saving}\r\n                  disabled={loading}\r\n                />\r\n              </DialogActions>\r\n            </>\r\n          )}\r\n        />\r\n      </Dialog>\r\n            \r\n    </>\r\n  );\r\n};\r\n\r\n\r\n\r\nexport const UsersAddressesEditButton = ({ ...props }) => {\r\n\r\n  const [showDialog, setShowDialog] = useState(false);\r\n  const refresh = useRefresh();    \r\n  const translate = useTranslate();  \r\n\r\n  const [update, { loading, error }] = useUpdate();\r\n\r\n  const handleClick = () => {\r\n    setShowDialog(true);\r\n  };\r\n\r\n  const handleCloseClick = () => {\r\n    setShowDialog(false);\r\n  };\r\n\r\n  const handleSubmit = async values => {\r\n    update(\r\n      { \r\n        type: 'update', \r\n        resource: 'users_addresses', \r\n        payload : { id: values.id, data: values }\r\n      },\r\n      {\r\n        onSuccess: ({ data }) => {\r\n          setShowDialog(false);\r\n          refresh();\r\n        },\r\n        onFailure: ( error ) => {\r\n        }\r\n      }\r\n    );\r\n  };    \r\n\r\n  return (\r\n    <>\r\n      <Button onClick={handleClick} label=\"\" startIcon={<EditIcon />} />\r\n\r\n      <Dialog\r\n        fullWidth\r\n        open={showDialog}\r\n        onClose={handleCloseClick}\r\n        aria-label={translate('users_federation.addresses_edit')}\r\n      >\r\n        <DialogTitle>{translate('users_federation.addresses_edit')}</DialogTitle>\r\n\r\n        <FormWithRedirect\r\n          resource=\"users_addresses\"\r\n          save={handleSubmit}\r\n          initialValues={props.record}\r\n          render={({\r\n            handleSubmitWithRedirect,\r\n            pristine,\r\n            saving\r\n          }) => (\r\n            <>\r\n              <AddressDialogContent />                            \r\n              <DialogActions>\r\n                <Button label=\"ra.action.cancel\" onClick={handleCloseClick} disabled={loading} >\r\n                  <IconCancel />\r\n                </Button>\r\n                <SaveButton\r\n                  handleSubmitWithRedirect={\r\n                    handleSubmitWithRedirect\r\n                  }\r\n                  pristine={pristine}\r\n                  saving={saving}\r\n                  disabled={loading}\r\n                />\r\n              </DialogActions>\r\n            </>\r\n          )}\r\n        />\r\n      </Dialog>\r\n    </>\r\n  );\r\n};\r\n\r\nconst AddressDialogContent = ({ ...props}) => {\r\n\r\n  const translate = useTranslate();  \r\n    \r\n  return (\r\n    <DialogContent>\r\n      <Grid container spacing={2}>\r\n        <Grid item xs={8}>\r\n          <TextInput fullWidth source=\"name\" label={translate('common.name')} validate={[validateMaxLength(100,translate('common.validation.maxLength'))]} />   \r\n        </Grid>\r\n        <Grid item xs={4}>\r\n          <NumberInput fullWidth source=\"priority\" label={translate('common.priority')} />   \r\n        </Grid>\r\n        <Grid item xs={4}>\r\n          <TextInput fullWidth source=\"address\" label={translate('users.address')} validate={[required(),validateMaxLength(100,translate('common.validation.maxLength'))]} />\r\n        </Grid>                                    \r\n        <Grid item xs={4}>\r\n          <TextInput fullWidth source=\"zip\" label={translate('users.zip')} validate={[validateMaxLength(10,translate('common.validation.maxLength'))]} />\r\n        </Grid>\r\n        <Grid item xs={4}>\r\n          <TextInput fullWidth source=\"city\" label={translate('users.city')} validate={[validateMaxLength(100,translate('common.validation.maxLength'))]} />\r\n        </Grid>\r\n        <Grid item xs={4}>\r\n          <SelectInput fullWidth source=\"region\" choices={choicesRegion} optionText=\"name\" optionValue=\"id\" label={translate('users.region')} resettable />    \r\n        </Grid>\r\n        <Grid item xs={4}>\r\n          <SelectInput fullWidth source=\"province\" choices={choicesProvince} optionText=\"name\" optionValue=\"id\" label={translate('users_federation.province')} resettable />   \r\n        </Grid>\r\n        <Grid item xs={4}>\r\n          <SelectInput fullWidth source=\"country\" choices={choicesCountry} optionText=\"name\" optionValue=\"id\" label={translate('users.country')} resettable />   \r\n        </Grid>\r\n        <Grid item xs={4}>\r\n          <NumberInput fullWidth source=\"lat\" label={translate('users.lat')} />\r\n        </Grid>\r\n        <Grid item xs={4}>\r\n          <NumberInput fullWidth source=\"lng\" label={translate('users.lng')} />\r\n        </Grid>\r\n        <Grid item xs={4}>\r\n          <TextInput fullWidth source=\"gmaps\" label={translate('users_federation.gmaps')} validate={[validateMaxLength(255,translate('common.validation.maxLength'))]} />\r\n        </Grid>\r\n        <FormDataConsumer>\r\n            {({ formData, ...rest }) => subscriptionModule(modules.FEDERATION) && \r\n            <Grid item xs={12}>\r\n                <BooleanInput fullWidth source=\"is_foundation_address\" label={translate('users_federation.is_foundation_address')}  />\r\n            </Grid>\r\n            }\r\n        </FormDataConsumer>\r\n        <Grid item xs={12}>\r\n          <BooleanInput fullWidth source=\"ship_to_same\" label={translate('users_federation.ship_to_same')}  />\r\n        </Grid>\r\n        <FormDataConsumer>\r\n          {({ formData, ...rest }) => formData.ship_to_same === false && \r\n                <>\r\n                  <Grid item xs={4}>\r\n                    <TextInput fullWidth source=\"ship_address\" label={translate('users_federation.ship_address')} validate={[validateMaxLength(100,translate('common.validation.maxLength'))]} />\r\n                  </Grid>                                    \r\n                  <Grid item xs={4}>\r\n                    <TextInput fullWidth source=\"ship_zip\" label={translate('users.zip')} validate={[validateMaxLength(10,translate('common.validation.maxLength'))]} />\r\n                  </Grid>\r\n                  <Grid item xs={4}>\r\n                    <TextInput fullWidth source=\"ship_city\" label={translate('users.city')} validate={[validateMaxLength(100,translate('common.validation.maxLength'))]} />\r\n                  </Grid>\r\n                  <Grid item xs={4}>\r\n                    <SelectInput fullWidth source=\"ship_region\" choices={choicesRegion} optionText=\"name\" optionValue=\"id\" label={translate('users.region')} resettable />    \r\n                  </Grid>\r\n                  <Grid item xs={4}>\r\n                    <SelectInput fullWidth source=\"ship_province\" choices={choicesProvince} optionText=\"name\" optionValue=\"id\" label={translate('users_federation.province')} resettable />   \r\n                  </Grid>\r\n                  <Grid item xs={4}>\r\n                    <SelectInput fullWidth source=\"ship_country\" choices={choicesCountry} optionText=\"name\" optionValue=\"id\" label={translate('users.country')} resettable />   \r\n                  </Grid>\r\n                </>\r\n          }\r\n        </FormDataConsumer>\r\n      </Grid>\r\n    </DialogContent>     \r\n  );\r\n};\r\n\r\n","// in src/posts.js\r\nimport React from 'react';\r\n\r\nimport {\r\n  List, \r\n  Datagrid,\r\n  TextField,\r\n  DeleteButton, \r\n  ReferenceManyField,\r\n  ResourceContextProvider,\r\n  FunctionField\r\n} from 'react-admin';\r\n\r\n\r\nimport { UsersAddressesCreateButton, UsersAddressesEditButton } from './../components/UsersAddressesCreateButton';\r\n\r\nimport { targets, choicesRegion } from './../common/constants';\r\n\r\n\r\nimport ListItem from '@mui/material/ListItem';\r\nimport ListItemText from '@mui/material/ListItemText';\r\n\r\n\r\n\r\n\r\nimport Grid from '@mui/material/Grid';\r\n\r\n\r\n\r\n\r\n\r\nimport { useTranslate  } from '../common/language';\r\n\r\n\r\n\r\n\r\n\r\nexport const UsersAddressesShow = (props) => {\r\n  const translate = useTranslate();\r\n  return (\r\n    <ReferenceManyField                    \r\n      reference=\"users_addresses\"\r\n      target=\"users_id\"\r\n      label=\"\"\r\n      sort={{ field: 'priority', order: 'ASC' }}\r\n    >\r\n      <Datagrid                              \r\n        className=\"users_remittances_list header_grey6\"\r\n      >\r\n        <TextField source=\"name\" label={translate('common.name')} sortable={false} />\r\n        <TextField source=\"address\" label={translate('users.address')} sortable={false} /> \r\n        <TextField source=\"zip\" label={translate('users.zip')} sortable={false} /> \r\n        <TextField source=\"city\" label={translate('users.city')} sortable={false} />\r\n        <FunctionField render={record => record.region ? choicesRegion.find(item => item.id === record.region).name : ''} label={translate('users.region')}  />\r\n      </Datagrid>\r\n\r\n    </ReferenceManyField>                         \r\n  );\r\n};\r\n\r\n\r\nexport const UsersAddressesEdit = (props) => {\r\n  const translate = useTranslate();\r\n  let users_id = props.id;\r\n  let strRedirect =  `/users/${users_id}/more`;  \r\n  let sort = { field: 'priority', order: 'ASC' };\r\n    \r\n  return (\r\n    <ResourceContextProvider value=\"users_addresses\">\r\n      <List              \r\n        basePath=\"/users_addresses\" \r\n        filter={{ target : targets.USER, users_id : users_id }}\r\n                    \r\n        actions={<UsersAddressesCreateButton users_id={users_id} label={translate('users_federation.addresses_create')} /> } \r\n        empty={<UsersAddressesCreateButton users_id={users_id} label={translate('users_federation.addresses_create')} /> }     \r\n        sort={sort} \r\n        label=\"\"  \r\n        title=\"\"  \r\n        bulkActionButtons={false} \r\n        pagination={false}\r\n        perPage={1000}\r\n      >\r\n        <Datagrid>                    \r\n          <TextField source=\"name\" label={translate('common.name')} sortable={false} /> \r\n          <TextField source=\"address\" label={translate('users.address')} sortable={false} /> \r\n          <TextField source=\"zip\" label={translate('users.zip')} sortable={false} /> \r\n          <TextField source=\"city\" label={translate('users.city')} sortable={false} />    \r\n          <FunctionField render={record => record.region ? choicesRegion.find(item => item.id === record.region).name : ''} label={translate('users.region')}  />\r\n          <UsersAddressesEditButton />\r\n          <DeleteButton undoable={false} redirect={strRedirect} label=\"\" />      \r\n        </Datagrid>                            \r\n      </List>\r\n\r\n    </ResourceContextProvider>               \r\n                          \r\n  );\r\n};\r\n\r\nexport const UserAddressDetail = ({ id, record, resource, edit, ...props }) => {\r\n  const translate = useTranslate(); \r\n    \r\n  return (\r\n    <div className=\"\">\r\n      <Grid container spacing={2}>\r\n           \r\n        <Grid item xs={6}>\r\n          <ListItem>\r\n            <ListItemText\r\n              primary={translate('users.address')}\r\n              secondary={record.address}\r\n            />\r\n          </ListItem>\r\n          <ListItem>\r\n            <ListItemText\r\n              primary={translate('users.zip')}\r\n              secondary={record.zip}\r\n            />\r\n          </ListItem>\r\n          <ListItem>\r\n            <ListItemText\r\n              primary={translate('users.city')}\r\n              secondary={record.city}\r\n            />\r\n          </ListItem>\r\n          <ListItem>\r\n            <ListItemText\r\n              primary={translate('users.region')}\r\n              secondary={record.region}\r\n            />\r\n          </ListItem>\r\n          <ListItem>\r\n            <ListItemText\r\n              primary={translate('users_federation.province')}\r\n              secondary={record.province}\r\n            />\r\n          </ListItem>\r\n          <ListItem>\r\n            <ListItemText\r\n              primary={translate('users.country')}\r\n              secondary={record.country}\r\n            />\r\n          </ListItem>\r\n          <ListItem>\r\n            <ListItemText\r\n              primary={translate('users_federation.gmaps')}\r\n              secondary={record.gmaps}\r\n            />\r\n          </ListItem>\r\n        </Grid> \r\n        <Grid item xs={6}>                \r\n          <ListItem>\r\n            <ListItemText\r\n              primary={translate('users_federation.ship_address')}\r\n              secondary={record.ship_address}\r\n            />\r\n          </ListItem>\r\n          <ListItem>\r\n            <ListItemText\r\n              primary={translate('users.zip')}\r\n              secondary={record.ship_zip}\r\n            />\r\n          </ListItem>\r\n          <ListItem>\r\n            <ListItemText\r\n              primary={translate('users.city')}\r\n              secondary={record.ship_city}\r\n            />\r\n          </ListItem>\r\n          <ListItem>\r\n            <ListItemText\r\n              primary={translate('users.region')}\r\n              secondary={record.ship_region}\r\n            />\r\n          </ListItem>\r\n          <ListItem>\r\n            <ListItemText\r\n              primary={translate('users_federation.province')}\r\n              secondary={record.ship_province}\r\n            />\r\n          </ListItem>\r\n          <ListItem>\r\n            <ListItemText\r\n              primary={translate('users.country')}\r\n              secondary={record.ship_country}\r\n            />\r\n          </ListItem>\r\n        </Grid> \r\n\r\n      </Grid>  \r\n\r\n      <br /> \r\n    </div>\r\n  );\r\n};\r\n\r\n\r\n\r\n","import React, { useState } from 'react';\r\n\r\nimport {\r\n  List, \r\n  Datagrid,\r\n  TextField,\r\n  DeleteButton,\r\n  Edit,\r\n  SelectInput,\r\n  TextInput,\r\n  Button ,\r\n  Create,\r\n  SimpleForm,\r\n  CreateButton ,\r\n  TopToolbar,\r\n  FormTab,\r\n  TabbedForm,\r\n  ReferenceManyField,\r\n  FormDataConsumer,\r\n  useListContext, required,NumberInput,BooleanInput,SelectField,  FunctionField, ResourceContextProvider, useCreate, useRefresh, FormWithRedirect, Toolbar, SaveButton,\r\n  useNotify,\r\n  useRedirect,\r\n  DateField  , \r\n  Filter, \r\n  downloadCSV,\r\n  DateInput,\r\n  SimpleFormIterator,\r\n  ArrayInput,BooleanField\r\n} from 'react-admin';\r\n\r\nimport { useEffect } from 'react';\r\n\r\nimport jsonExport from 'jsonexport/dist';\r\n\r\nimport {useHistory} from 'react-router-dom';\r\n\r\nimport ArrowBackIosNewIcon from '@mui/icons-material/ArrowBackIosNew';\r\nimport { Card, CardContent, CardHeader,useMediaQuery } from '@material-ui/core';\r\nimport { green, orange, deepOrange } from '@mui/material/colors';\r\nimport DoneIcon from '@mui/icons-material/Done';\r\nimport CloseIcon from '@mui/icons-material/Close';\r\n\r\nimport { AccordionSection  } from '@react-admin/ra-form-layout';\r\n\r\n\r\nimport { makeStyles } from '@material-ui/core/styles';\r\n\r\nimport Divider from '@mui/material/Divider';\r\n\r\n\r\nimport { useTranslate  } from '../common/language';\r\n\r\nimport Typography from '@mui/material/Typography';\r\n\r\n\r\nimport RichTextInput from 'ra-input-rich-text';\r\n\r\n\r\nimport { TextFieldShow, TextHtmlShow } from '../components/TextFieldShow';\r\n\r\nimport Grid from '@mui/material/Grid';\r\nimport Avatar from '@mui/material/Avatar';\r\nimport IconContentAdd from '@material-ui/icons/Add';\r\nimport IconCancel from '@material-ui/icons/Cancel';\r\nimport GavelIcon from '@material-ui/icons/Gavel';\r\nimport PersonIcon from '@mui/icons-material/Person';\r\n\r\nimport Dialog from '@material-ui/core/Dialog';\r\nimport DialogTitle from '@material-ui/core/DialogTitle';\r\nimport DialogContent from '@material-ui/core/DialogContent';\r\nimport DialogActions from '@material-ui/core/DialogActions';\r\nimport Chip from '@material-ui/core/Chip';\r\nimport ForwardToInboxIcon from '@mui/icons-material/ForwardToInbox';\r\n\r\nimport { ColorInput } from 'react-admin-color-input';\r\n\r\nimport { DocsList, DocsListShow } from './docs';\r\nimport { targets, modules, choicesClassroomsType  } from './../common/constants';\r\nimport { dateOnlyToCatalan, subscriptionModule, setActivePermissionData, structArrayToIdList, DateTimeField } from './../common/utils';  \r\n\r\nimport { CityInput } from './../components/Inputs';\r\nimport { ExportButton } from './../components/ExportButton';\r\n\r\nimport { RenderBoolean } from '../components/User';\r\n\r\nimport Box from '@material-ui/core/Box';\r\n\r\nimport { Link } from 'react-router-dom';\r\n\r\nimport { validateMaxLength, validateInteger  } from './../components/Validator';\r\n\r\n\r\nexport const EmailsHistoryList = (props) => {\r\n  const translate = useTranslate();  \r\n    \r\n  let basePath='/emails'; \r\n  let resource = 'emails';\r\n  let strRedirect = 'emails';\r\n    \r\n  return (\r\n          <>\r\n      <br/>\r\n      { !props.show ?\r\n      <Typography variant=\"h5\" className=\"grey8\" align=\"center\">\r\n        {translate('settings.emails_logs')}              \r\n      </Typography> : null }\r\n    <ResourceContextProvider value={resource}>\r\n      <List \r\n        basePath={basePath}   \r\n        filter={{ associations_id : localStorage.getItem('associations_id'), users_id : props.users_id ? props.users_id : -1 }}  \r\n        actions={null}    \r\n        empty={null}        \r\n        bulkActionButtons={false}          \r\n        perPage={props.show ? 10 : 50}   \r\n        sort={{ field: 'id', order: 'DESC' }} \r\n        label=\"\"  \r\n        title=\"\"  \r\n        resource={resource}\r\n        filters={ !props.show? <MyFilter /> : null } \r\n        filterDefaultValues={ { q: \"\", only_not_sent: false }}\r\n      >        \r\n        <Datagrid \r\n          rowClick={null}\r\n          expand={<EmailsDetails />} >                                                 \r\n          <DateTimeField source=\"date_ordered\" label={translate('emails.date_ordered')} sortable={false} />  \r\n          <FunctionField label={translate('emails.from')} render={record => record.from_name + ' <' + record.from_email + '>'} sortable={false}  />\r\n          { !props.show ? <UserLinkButton label={translate('emails.contact')} /> : null }\r\n          <FunctionField label={translate('emails.to')} render={record => <>{record.to}</>} sortable={false}  />          \r\n          <TextField source=\"subject\" label={translate('emails.subject')} sortable={false} />            \r\n          <FunctionField label={translate('remittances.status')} render={RenderStatus} sortable={false}  />\r\n        </Datagrid>        \r\n      </List>\r\n    </ResourceContextProvider>\r\n    </>\r\n  );\r\n};\r\n\r\nconst UserLinkButton = ({ record, ...props }) => {\r\n    const translate = useTranslate();\r\n    const history = useHistory();\r\n\r\n    const handleClick = () => {\r\n            history.push('/users/' + record.users_id + '/show');  \r\n    };\r\n    if (record.users_id)\r\n        return <Button {...props} label=\"\" onClick={handleClick} startIcon={<PersonIcon />} />;\r\n    else\r\n        return null;\r\n    \r\n};\r\n\r\nexport function RenderStatus( record )\r\n{\r\n    const translate = useTranslate(); \r\n    \r\n    let title = translate('emails.status_' + record.status);\r\n\r\n    if (record.status === 0) \r\n        return (<CardHeader\r\n            avatar={<Avatar sx={{ bgcolor: orange[500] , width: 30, height: 30 }} ><CloseIcon/></Avatar> }\r\n            title={title}\r\n            className=\"remittanceStatusIcon\"\r\n        />);\r\n\r\n    else if (record.status === 1) \r\n        return (<CardHeader\r\n            avatar={<Avatar sx={{ bgcolor: orange[500] , width: 30, height: 30 }} ><ForwardToInboxIcon/></Avatar> }\r\n            title={title}\r\n            className=\"remittanceStatusIcon\"\r\n        />);\r\n\r\n    else if (record.status === 2)\r\n        return (<CardHeader\r\n            avatar={<Avatar sx={{ bgcolor: deepOrange[500] , width: 30, height: 30 }} ><CloseIcon/></Avatar> }\r\n            title={title}\r\n            className=\"remittanceStatusIcon\"\r\n        />);\r\n\r\n    else if (record.status === 3)\r\n        return (<CardHeader\r\n            avatar={<Avatar sx={{ bgcolor: green[500] , width: 30, height: 30 }} ><DoneIcon/></Avatar> }\r\n            title={title}\r\n            className=\"remittanceStatusIcon\"\r\n        />);\r\n    \r\n    else if (record.status === 4)\r\n        return (<CardHeader\r\n            avatar={<Avatar sx={{ bgcolor: deepOrange[500] , width: 30, height: 30 }} ><CloseIcon/></Avatar> }\r\n            title={title}\r\n            className=\"remittanceStatusIcon\"\r\n        />);\r\n}\r\n\r\nconst MyFilter = (props) => {\r\n    const translate = useTranslate(); \r\n    return (\r\n    <Filter {...props}>         \r\n        <TextInput label={translate('common.search')} source=\"q\" alwaysOn validate={[validateMaxLength(50,translate('common.validation.maxLength'))]} resettable /> \r\n        <BooleanInput label={translate('emails.only_not_sent')} source=\"only_not_sent\" alwaysOn />\r\n    </Filter>\r\n);\r\n};\r\n\r\nexport const EmailsDetails = ({ id, record, resource, ...props }) => {\r\n  const translate = useTranslate(); \r\n        \r\n  return (\r\n    <div className=\"emails-details\">        \r\n      <Grid container spacing={2}>   \r\n        { record.error_message ?\r\n        <Grid item xs={12} >   \r\n          <span className=\"bg-red p-5\">{record.error_message}</span><br/><br/>\r\n        </Grid> : null }\r\n        <Grid item xs={12}>   \r\n          <TextHtmlShow source={record.content} label={translate('emails.content')} html={true} />\r\n        </Grid> \r\n        { record.docs ?\r\n        <Grid item xs={12}>   \r\n          <TextFieldShow source={record.docs} label={translate('emails.docs')} />\r\n        </Grid> : null }        \r\n      </Grid>\r\n      \r\n    </div>\r\n  );\r\n};\r\n\r\n/*\r\nconst exporter = (items, translate, notify) => {\r\n    \r\n  const itemsForExport = items.map(item => {\r\n    var itemForExport = {\r\n        id: item.id,\r\n        target: item.target,\r\n        users_id: item.users_id,\r\n        groups_id: item.groups_id,\r\n        events_id: item.events_id,\r\n        bookings_id: item.bookings_id,\r\n        date_ordered: dateOnlyToCatalan(item.date_ordered),\r\n        from_name: item.from_name,\r\n        from_email: item.from_email,\r\n        to: item.to,\r\n        cc: item.cc,\r\n        bcc: item.bcc,\r\n        subject: item.subject,\r\n        content: item.content,\r\n        docs: item.docs,\r\n        date_sent: dateOnlyToCatalan(item.date_sent),\r\n        status: item.status,\r\n        reply_to: item.reply_to,\r\n        remittances_users_id: item.remittances_users_id,\r\n        users_groups_id: item.users_groups_id,\r\n        users_permissions_id: item.users_permissions_id,\r\n        users_annuary_id: item.users_annuary_id,\r\n        error_message: item.error_message,\r\n        recercat_centers_id: item.recercat_centers_id,\r\n        users_login_id: item.users_login_id,\r\n        donations_users_id: item.donations_users_id,\r\n        donations_projects_id: item.donations_projects_id,\r\n    };\r\n    return itemForExport;\r\n  });\r\n  jsonExport(itemsForExport, {\r\n    headers: ['id','target'\r\n,'users_id'\r\n,'groups_id'\r\n,'events_id'\r\n,'bookings_id'\r\n,'date_ordered'\r\n,'from_name'\r\n,'from_email'\r\n,'to'\r\n,'cc'\r\n,'bcc'\r\n,'subject'\r\n,'content'\r\n,'docs'\r\n,'date_sent'\r\n,'status'\r\n,'reply_to'\r\n,'remittances_users_id'\r\n,'users_groups_id'\r\n,'users_permissions_id'\r\n,'users_annuary_id'\r\n,'error_message'\r\n,'recercat_centers_id'\r\n,'users_login_id'\r\n,'donations_users_id'\r\n,'donations_projects_id'\r\n],\r\n    rename: [translate('common.id'),translate('emails.target'),translate('emails.users_id'),translate('emails.groups_id'),translate('emails.events_id'),translate('emails.bookings_id'),translate('emails.date_ordered'),translate('emails.from_name'),translate('emails.from_email'),translate('emails.to'),translate('emails.cc'),translate('emails.bcc'),translate('emails.subject'),translate('emails.content'),translate('emails.docs'),translate('emails.date_sent'),translate('emails.status'),translate('emails.reply_to'),translate('emails.remittances_users_id'),translate('emails.users_groups_id'),translate('emails.users_permissions_id'),translate('emails.users_annuary_id'),translate('emails.error_message'),translate('emails.recercat_centers_id'),translate('emails.users_login_id'),translate('emails.donations_users_id'),translate('emails.donations_projects_id')],        \r\n        \r\n  }, (err, csv) => {\r\n    const csv_new = '\\uFEFF' + csv;\r\n    downloadCSV(csv_new, translate('emails.exporter_file_name') ); \r\n    notify(translate('common.download_ok'),\"success\");\r\n  });\r\n};\r\n*/","// in src/posts.js\r\n//import * as React from \"react\";\r\nimport React from 'react';\r\n\r\nimport {\r\n  Datagrid,\r\n  TextField,\r\n  ReferenceInput,\r\n  SelectInput,\r\n  TextInput, \r\n  ReferenceManyField,\r\n  useTranslate, TopToolbar, CreateButton,required, FunctionField\r\n} from 'react-admin';\r\n\r\n\r\nimport Avatar from '@mui/material/Avatar';\r\n\r\nimport { useFormState } from 'react-final-form';\r\n\r\nimport { EditableDatagrid, RowForm } from '@react-admin/ra-editable-datagrid';\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\nimport './../common/styles.css';\r\n\r\n\r\n\r\nimport { validateMaxLength  } from './../components/Validator';\r\n\r\n\r\nexport const SocialNetsList = ({ target, items_id , ...props }) => {\r\n\r\n  const translate = useTranslate(); \r\n\r\n  return (  \r\n\r\n    <ReferenceManyField                    \r\n      reference=\"social_nets\"\r\n      target=\"users_id\"\r\n      label=\"\"\r\n      filter={{ target : target, items_id : items_id }}\r\n      perPage={1000}\r\n    >\r\n\r\n      <EditableDatagrid                       \r\n        createForm={<SocialNetsFormNew initialValues={{ associations_id: localStorage.getItem('associations_id') , target: target, items_id: items_id }} />}\r\n        editForm={<SocialNetsFormEdit />}\r\n        label=\"\"\r\n        hasCreate\r\n        fullWidth\r\n      >\r\n        <FunctionField label=\"\" render={record => <Avatar><img src={'/img/' + record.net.image} width=\"40\" height=\"40\" /></Avatar> } />\r\n        <TextField source=\"net.name\" label={translate('social_nets.title')} sortable={false} /> \r\n        <FunctionField label=\"\" render={record => {\r\n          let net_link = record.net.url + '/' + record.link;\r\n          return (<a href={net_link} target=\"_blank\"\r\n          >\r\n            {record.link}\r\n          </a>);\r\n        }\r\n        } />\r\n\r\n      </EditableDatagrid>\r\n\r\n    </ReferenceManyField>\r\n\r\n  );\r\n};\r\n\r\nconst ListActions = (props) => (\r\n  <TopToolbar>\r\n    <CreateButton/>  \r\n  </TopToolbar>\r\n);\r\n\r\nconst SocialNetsFormNew= (props) => {\r\n  const translate = useTranslate();   \r\n  const { values } = useFormState();\r\n  return (\r\n    <RowForm {...props}  >\r\n      <span />\r\n      <ReferenceInput label={translate('social_nets.title')} source=\"nets_id\" reference=\"nets\" perPage={1000} >\r\n        <SelectInput fullWidth optionValue=\"id\" validate={required()} optionText=\"name\" />\r\n      </ReferenceInput> \r\n      <TextInput fullWidth source=\"link\" label={translate('social_nets.link')} validate={[required(),validateMaxLength(100,translate('common.validation.maxLength'))]} />   \r\n    </RowForm>\r\n  );\r\n};\r\n\r\nconst SocialNetsFormEdit= (props) => {\r\n  const translate = useTranslate();   \r\n  const { values } = useFormState();\r\n  return (\r\n    <RowForm {...props}  >\r\n      <span />\r\n      <ReferenceInput label={translate('social_nets.title')} source=\"nets_id\" reference=\"nets\" perPage={1000}>\r\n        <SelectInput fullWidth optionValue=\"id\" validate={required()} optionText=\"name\" disabled />\r\n      </ReferenceInput> \r\n      <TextInput fullWidth source=\"link\" label={translate('social_nets.link')} validate={[required(),validateMaxLength(100,translate('common.validation.maxLength'))]} />   \r\n    </RowForm>\r\n  );\r\n};\r\n\r\nexport const SocialNetsListShow = ({ target, items_id , reference, ...props }) => {\r\n\r\n  const translate = useTranslate(); \r\n\r\n  return (  \r\n\r\n    <ReferenceManyField                    \r\n      reference={reference}\r\n      target=\"users_id\"\r\n      label=\"\"\r\n      filter={{ target : target, items_id : items_id }}\r\n      perPage={1000} \r\n    >\r\n\r\n      <Datagrid     \r\n        fullWidth\r\n        className=\"users_show_social_nets_datagrid\"\r\n      >\r\n        <FunctionField label=\"\" render={record => <Avatar className=\"avatar\"><img src={'/img/' + record.net.image} width=\"30\" height=\"30\" /></Avatar> } />\r\n        <FunctionField label=\"\" render={record => {\r\n          let net_link = record.link.includes(record.net.url) ? record.link : record.net.url + '/' + record.link;\r\n          return (<a href={net_link} target=\"_blank\"\r\n          >\r\n            {record.link}\r\n          </a>);\r\n        }\r\n        } />\r\n                \r\n\r\n      </Datagrid>\r\n\r\n    </ReferenceManyField>\r\n\r\n  );\r\n};\r\n","// in src/posts.js\r\nimport * as React from 'react';\r\n\r\nimport { \r\n  ReferenceManyField, \r\n  SingleFieldList,\r\n  useTranslate, FunctionField\r\n} from 'react-admin';\r\n\r\nimport { useFormState } from 'react-final-form';\r\n\r\nimport { EditableDatagrid, RowForm } from '@react-admin/ra-editable-datagrid';\r\n\r\n\r\nimport { UserAvatarField, UserFullNameTxt, ChipFieldUserName, UserInput } from '../components/User';\r\n\r\n/* visibility: hidden!important; */\r\n\r\nimport './../common/styles.css';\r\n\r\n\r\nexport const UsersFamiliesList= ({ users_id , ...props }) => {\r\n  const translate = useTranslate();   \r\n\r\n  return (\r\n    <ReferenceManyField                    \r\n      reference=\"users_families\"\r\n      target=\"users_id\"\r\n      label=\"\"\r\n      perPage={1000}\r\n    >\r\n\r\n      <EditableDatagrid                       \r\n        createForm={<UserFamilyFormNew initialValues={{ users_id: users_id }} />}\r\n        editForm={<UserFamilyFormNew />}\r\n        label=\"\"\r\n        hasCreate\r\n        noEdit={true}\r\n      >\r\n        <UserAvatarField />   \r\n        <FunctionField label={translate('users.first_name')} render={record => <UserFullNameTxt record={record} /> } />                                 \r\n\r\n      </EditableDatagrid>\r\n\r\n    </ReferenceManyField> \r\n  );\r\n};\r\n\r\nconst UserFamilyFormNew= (props) => {\r\n  const translate = useTranslate();   \r\n  const { values } = useFormState();\r\n\r\n  return (\r\n    <RowForm {...props}  >\r\n      <span />  \r\n      <UserInput source=\"users_referred_id\" user_type={0} disabled={false} label={translate('users_families.name')} allowEmpty={false} required={true} />        \r\n    </RowForm>\r\n  );\r\n};\r\n\r\nexport const UsersFamiliesShow= ({ users_id , ...props }) => {\r\n  const translate = useTranslate();   \r\n\r\n  return (\r\n    <ReferenceManyField                    \r\n      reference=\"users_families\"\r\n      target=\"users_id\"\r\n      label=\"\"\r\n      perPage={1000}\r\n    >\r\n      <SingleFieldList className=\"users_show_family_title\" linkType={false}>\r\n        <ChipFieldUserName />\r\n      </SingleFieldList>\r\n\r\n    </ReferenceManyField>\r\n  );\r\n};\r\n\r\n\r\n\r\n\r\n","\r\nimport {\r\n  useTranslate ,\r\n  Button ,\r\n  useNotify\r\n} from 'react-admin';\r\n\r\nimport SaveIcon from '@material-ui/icons/GetApp';\r\n\r\nimport { apiUrl, apiOrigin, apiDefaultLanguage,  } from './../common/constants';\r\n\r\nexport function DownloadXLSButton ({ ...props}) {\r\n    \r\n  const translate = useTranslate(); \r\n  const notify = useNotify();\r\n\r\n  const handleAction = async () => {\r\n\r\n    let headers = new Headers({ Accept: 'application/json' });\r\n    headers.set('Access-Control-Allow-Origin', apiOrigin );\r\n    headers.set('Authorization', localStorage.getItem('auth'));\r\n    headers.set('Accept-Language', apiDefaultLanguage);\r\n    headers.set('Role', localStorage.getItem('active_permission'));\r\n    \r\n    const { field, order } = props.currentSort;   \r\n    \r\n    const mainLoading = document.getElementById(\"mainLoading\");\r\n    mainLoading.style.display = \"flex\";\r\n        \r\n    try {\r\n\r\n        var queryStringFilter = '';\r\n        if (props.filterValues && props.filterValues.filter)\r\n        {\r\n            queryStringFilter = '&filter=' + encodeURIComponent(JSON.stringify(props.filterValues.filter));\r\n        }\r\n        var queryStringFilterSearch = '';\r\n        if (props.filterValues && props.filterValues.q)\r\n        {\r\n            queryStringFilterSearch = '&q=' + encodeURIComponent(props.filterValues.q);\r\n        }\r\n        const result = await fetch(apiUrl + '/users/export?associations_id=' + localStorage.getItem('associations_id') + '&groups_id=' + props.groups_id +\r\n                '&page=0&size=1000000&sort=' + field + ',' + order + queryStringFilter + queryStringFilterSearch , { \r\n          headers: headers\r\n        });\r\n\r\n        const blob = await result.blob();\r\n        const href = window.URL.createObjectURL(blob);\r\n\r\n        var tempLink = document.createElement('a');\r\n        tempLink.href = href;\r\n        tempLink.setAttribute('download', translate('users.exporter_file_name'));\r\n        tempLink.click();\r\n\r\n        notify(translate('remittances.pdf_ok'),\"success\");\r\n    \r\n    } catch (error) {\r\n    \r\n    } finally {      \r\n        mainLoading.style.display = \"none\";\r\n    }\r\n    \r\n  };\r\n\r\n  return (\r\n    <Button label={translate('users.export')} startIcon={<SaveIcon />} onClick={handleAction} />\r\n  );\r\n\r\n}","import React, { useState } from 'react';\r\nimport {\r\n  required,\r\n  Button,\r\n  SaveButton,\r\n  TextInput,\r\n  useCreate,\r\n  useNotify,\r\n  FormWithRedirect,\r\n  useRefresh, TopToolbar, useTranslate, BooleanInput, FormDataConsumer, useUpdate, SelectInput, NumberInput, ReferenceInput, CreateButton\r\n} from 'react-admin';\r\nimport IconContentAdd from '@material-ui/icons/Add';\r\nimport IconCancel from '@material-ui/icons/Cancel';\r\n\r\nimport EditIcon from '@material-ui/icons/Edit';\r\nimport DownloadIcon from '@material-ui/icons/GetApp';\r\nimport BorderAllIcon from '@mui/icons-material/BorderAll';\r\n\r\nimport { Link } from 'react-router-dom';\r\n\r\n\r\nimport Grid from '@mui/material/Grid';\r\n\r\nimport Dialog from '@material-ui/core/Dialog';\r\nimport DialogTitle from '@material-ui/core/DialogTitle';\r\nimport DialogContent from '@material-ui/core/DialogContent';\r\nimport DialogActions from '@material-ui/core/DialogActions';\r\n\r\nimport { choicesRegion, choicesProvince, choicesCountry } from './../common/constants';\r\nimport { apiUrl, apiOrigin, apiDefaultLanguage, targets, targetsResources, modules} from './../common/constants';\r\n\r\nimport { validateMaxLength  } from './../components/Validator';\r\n\r\n\r\nexport const UsersPostalLabelsCreateButton = ({ filterValues , ...props }) => {\r\n  \r\n  const [showDialog, setShowDialog] = useState(false);\r\n  const [create, { loading }] = useCreate('');\r\n  const notify = useNotify();\r\n  const refresh = useRefresh();    \r\n  const translate = useTranslate();  \r\n  \r\n  const { field, order } = props.currentSort;   \r\n\r\n  const handleClick = () => {\r\n    setShowDialog(true);\r\n  };\r\n\r\n  const handleCloseClick = () => {\r\n    setShowDialog(false);\r\n  };\r\n  \r\n  const handleAction = async values => {\r\n\r\n    let headers = new Headers({ Accept: 'application/json' });\r\n    headers.set('Access-Control-Allow-Origin', apiOrigin );\r\n    headers.set('Authorization', localStorage.getItem('auth'));\r\n    headers.set('Accept-Language', apiDefaultLanguage);\r\n    headers.set('Role', localStorage.getItem('active_permission'));\r\n    \r\n    let last_row = values.last_row && values.last_row == true ? 1 : 0;\r\n    const result = await fetch(apiUrl + '/postal_labels/pdf?associations_id=' + localStorage.getItem('associations_id') + '&groups_id='+ filterValues.groups_id + '&format=' + values.format + '&filter=' +  encodeURIComponent(JSON.stringify(filterValues.filter)) + '&q=' + filterValues.q + '&size=100000' + '&page=0&sort=' + field + ',' + order , { \r\n      headers: headers\r\n    });\r\n    \r\n    const blob = await result.blob();\r\n    const href = window.URL.createObjectURL(blob);\r\n        \r\n    var tempLink = document.createElement('a');\r\n    tempLink.href = href;\r\n    tempLink.setAttribute('download', translate('postal_labels.generate_pdf_filename'));\r\n    tempLink.click();\r\n    \r\n    setShowDialog(false);\r\n    notify(translate('postal_labels.generate_ok_message'),\"success\");\r\n    \r\n  };\r\n\r\n  return (\r\n    <>\r\n      \r\n        <Button onClick={handleClick} label={translate('postal_labels.generate_button_title')} >\r\n          <BorderAllIcon />\r\n        </Button>\r\n\r\n      <Dialog\r\n        fullWidth\r\n        open={showDialog}\r\n        onClose={handleCloseClick}\r\n        aria-label={translate('postal_labels.generate_modal_title')}\r\n      >\r\n        <DialogTitle>{translate('postal_labels.generate_modal_title')}</DialogTitle>\r\n\r\n        <FormWithRedirect\r\n          resource=\"\"\r\n          save={handleAction}\r\n          initialValues={{ groups_id: filterValues.groups_id, filters : filterValues.filter, q: filterValues.q }}\r\n          render={({\r\n            handleSubmitWithRedirect,\r\n            pristine,\r\n            saving\r\n          }) => (\r\n            <>\r\n              <FormatDialogContent />\r\n              <DialogActions>\r\n                <Button label=\"ra.action.cancel\" onClick={handleCloseClick} disabled={loading} >\r\n                  <IconCancel />\r\n                </Button>\r\n                <SaveButton\r\n                  handleSubmitWithRedirect={\r\n                    handleSubmitWithRedirect\r\n                  }\r\n                  pristine={pristine}\r\n                  saving={saving}\r\n                  disabled={loading}\r\n                  label={translate('postal_labels.generate_modal_button')}\r\n                  icon={<BorderAllIcon />}\r\n                />\r\n              </DialogActions>\r\n            </>\r\n          )}\r\n        />\r\n      </Dialog>\r\n            \r\n    </>\r\n  );\r\n};\r\n\r\n\r\nconst FormatDialogContent = ({ ...props}) => {\r\n\r\n  const translate = useTranslate();  \r\n    \r\n  return (\r\n    <DialogContent>\r\n      <Grid container spacing={2}>\r\n        <Grid item xs={12}>            \r\n            {translate('postal_labels.generate_modal_desc')}\r\n        </Grid>\r\n        <Grid item xs={7}>\r\n            <ReferenceInput \r\n                fullWidth\r\n                sort={{ field: 'priority', order: 'ASC' }} \r\n                perPage={1000} \r\n                label={translate('postal_labels.generate_format')} \r\n                source=\"format\" \r\n                reference=\"postal_labels\"\r\n                filter={{ associations_id : localStorage.getItem('associations_id') }}\r\n            >\r\n                <SelectInput optionText=\"name\" optionValue=\"id\" validate={required()} optionText={optionRenderer} />\r\n            </ReferenceInput>  \r\n        </Grid>\r\n        <Grid item xs={5}>\r\n            <CreateButton \r\n                component={Link}\r\n                to={{\r\n                    pathname: `/settings-postal-labels`\r\n                }} \r\n                target=\"_blank\"\r\n                className=\"mt-10\"\r\n                label={translate('postal_labels.add_formats')}\r\n            />\r\n        </Grid>\r\n        <Grid item xs={12}>            \r\n                <br />\r\n        </Grid>\r\n      </Grid>\r\n    </DialogContent>     \r\n  );\r\n};\r\n\r\nconst optionRenderer = record => {\r\n    let str = record.name + ' (' + record.num_columns + ' x ' + record.num_rows + ')';\r\n    return str;\r\n};\r\n","import React, { useState, useEffect } from 'react';\r\n\r\nimport { useListContext,      \r\n  Button, FormWithRedirect, TextInput, SaveButton, SimpleFormIterator, ArrayInput,required , SelectInput, FormDataConsumer, DateInput, NumberInput, ReferenceInput, useDataProvider } from 'react-admin';\r\n\r\n\r\nimport { useTranslate  } from '../common/language';\r\n\r\n\r\nimport Dialog from '@material-ui/core/Dialog';\r\nimport DialogTitle from '@material-ui/core/DialogTitle';\r\nimport DialogContent from '@material-ui/core/DialogContent';\r\nimport DialogActions from '@material-ui/core/DialogActions';\r\n\r\nimport IconCancel from '@material-ui/icons/Cancel';\r\n\r\n\r\nimport Grid from '@mui/material/Grid';\r\n\r\n\r\nimport ContentFilter from '@mui/icons-material/FilterList';\r\n\r\n\r\nimport { validateMaxLength  } from './../components/Validator';\r\n\r\nimport { fetchCustomFields } from '../components/CustomFields';\r\n\r\nimport { subscriptionModule  } from '../common/utils';\r\nimport {modules,targets, choicesDelegations,choicesProperty,choicesCession,\r\n  choicesClassroomsType,choicesYears,choicesShowsType, choicesRemittancesStatus,\r\n  choicesRegion, choicesProvince, choicesCountry, choicesTrainingsType0,choicesTrainingsType1,\r\n  choicesTrainingsFormal,choicesTrainingsFormalArt, choicesSocialProjects, choicesTypeUser, choicesGenderUser } from './../common/constants';\r\n\r\nexport const MyFilterUsers = (props) => {\r\n    \r\n  const [showDialog, setShowDialog] = useState(false);\r\n  const translate = useTranslate();\r\n  \r\n  const dataProvider = useDataProvider();  \r\n  const [customFields, setCustomFields] = useState();  \r\n  const [federationCustomFields, setFederationCustomFields] = useState();  \r\n  const [federationSportsCustomFields, setFederationSportsCustomFields] = useState(); \r\n  const [error, setError] = useState(false);  \r\n    \r\n  const {\r\n    // fetched data\r\n    data, // an array of the list records, e.g. [{ id: 123, title: 'hello world' }, { ... }]\r\n    total, // the total number of results for the current filters, excluding pagination. Useful to build the pagination controls, e.g. 23      \r\n    isFetching, // boolean that is true while the data is being fetched, and false once the data is fetched\r\n    isLoading, // boolean that is true until the data is available for the first time\r\n    // pagination\r\n    page, // the current page. Starts at 1\r\n    perPage, // the number of results per page. Defaults to 25\r\n    setPage, // a callback to change the page, e.g. setPage(3)\r\n    setPerPage, // a callback to change the number of results per page, e.g. setPerPage(25)\r\n    hasPreviousPage, // boolean, true if the current page is not the first one\r\n    hasNextPage, // boolean, true if the current page is not the last one\r\n    // sorting\r\n    sort, // a sort object { field, order }, e.g. { field: 'date', order: 'DESC' }\r\n    setSort, // a callback to change the sort, e.g. setSort({ field: 'name', orfer: 'ASC' })\r\n    // filtering\r\n    filterValues, // a dictionary of filter values, e.g. { title: 'lorem', nationality: 'fr' }\r\n    displayedFilters, // a dictionary of the displayed filters, e.g. { title: true, nationality: true }\r\n    setFilters, // a callback to update the filters, e.g. setFilters(filters, displayedFilters)\r\n    showFilter, // a callback to show one of the filters, e.g. showFilter('title', defaultValue)\r\n    hideFilter, // a callback to hide one of the filters, e.g. hideFilter('title')\r\n    // record selection\r\n    selectedIds, // an array listing the ids of the selected rows, e.g. [123, 456]\r\n    onSelect, // callback to change the list of selected rows, e.g. onSelect([456, 789])\r\n    onToggleItem, // callback to toggle the selection of a given record based on its id, e.g. onToggleItem(456)\r\n    onUnselectItems, // callback to clear the selection, e.g. onUnselectItems();\r\n    // misc\r\n    defaultTitle, // the translated title based on the resource, e.g. 'Posts'\r\n    resource, // the resource name, deduced from the location. e.g. 'posts'\r\n    refetch, // callback for fetching the list data again\r\n  } = useListContext();\r\n    \r\n  const fieldsString = [1,2,3,4,6,7,8,9,10,11,12,13,18,19,22,23,24,25,27,29,34,36,37,41,80,81,82,99,100,101,102,105,114,132,135,141];\r\n  const fieldsDate = [14,15,33,110,111,140];\r\n  const fieldsNumber = [16,17,\r\n    115,116,117,118,119,120,\r\n    201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,\r\n    301,302,303,304,305,306,307,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,327,\r\n    351,352,353,354,355,356,\r\n    401,402,403,404,405,406,407,408,409,410,\r\n    451,452,453,454,455,456,457,458,459,460,\r\n    470,471,472,473,474,475,476,\r\n    480,481,482,483,484,485,486,\r\n    490,491,\r\n    501,502,503,504,\r\n    601,602,603,604,605,606,\r\n    701,702,703];\r\n  const fieldsBoolean = [28,30,103,104,106,107,108,109,113,121,122,123,125,126,127,130,131,133,134,136,137,138,139,750,751,752,50,51];    \r\n    \r\n  const fieldsUserType = [5];\r\n  const fieldsQuote = [20];\r\n  const fieldsRemittance = [21];\r\n  const fieldsGender = [26];\r\n  const fieldsDocs = [31,32,40];\r\n  const fieldsNets = [35];  \r\n  const fieldsProperty = [128];\r\n  const fieldsCession = [129];\r\n  const fieldsDelegation = [112];\r\n  const fieldsClassrooms = [200];\r\n  const fieldsEconomicData = [300];\r\n  const fieldsDemografy = [350];\r\n  const fieldsWorkers = [400,450];\r\n  const fieldsActivities = [500];\r\n  const fieldsActivitiesSelect = [503,504];\r\n  const fieldsShows = [600];\r\n  const fieldsShowsSelect = [604,605,606]; \r\n  const fieldsSections = [700];\r\n  const fieldsSectionsSelect = [703];\r\n  const fieldsCensusSelect = [800];\r\n  const fieldsBooksSelect = [801];\r\n  const fieldsMailingListsSelect = [802];\r\n  const fieldsClassroomsTypeSelect = [202,203];\r\n  const fieldsTrainingsType0Select = [471,473,475];\r\n  const fieldsTrainingsType1Select = [481,483,485];\r\n  const fieldsTrainingsFormalArtSelect = [472,474,476];\r\n  const fieldsTrainingsFormalSelect = [482,484,486];\r\n  const fieldsSocialProjecteTypeSelect = [491];\r\n  const fieldsGroupSelect = [38];\r\n  const fieldsRegionSelect = [83,89];\r\n  const fieldsProvinceSelect = [84,90];\r\n  const fieldsCountrySelect = [85,91];\r\n  const fieldsRecercatCenterSelect = [39];\r\n\r\n  const defaultYear = new Date().getFullYear()-1;\r\n    \r\n  useEffect(() => {\r\n      \r\n    if (subscriptionModule(modules.CUSTOM_FIELDS))  \r\n    {\r\n        fetchCustomFields(localStorage.getItem('associations_id'), targets.USER, setCustomFields, setError, dataProvider, false, false );\r\n        \r\n        if (subscriptionModule(modules.FEDERATION))\r\n        {\r\n            fetchCustomFields(localStorage.getItem('associations_id'), targets.USER_FEDERATION, setFederationCustomFields, setError, dataProvider, false, false );\r\n            fetchCustomFields(localStorage.getItem('associations_id'), targets.USER_FEDERATION_SPORTS, setFederationSportsCustomFields, setError, dataProvider, false, false );\r\n        }\r\n    }\r\n    \r\n  }, []);\r\n\r\n  if (subscriptionModule(modules.CUSTOM_FIELDS) && !customFields) return null;\r\n  if (subscriptionModule(modules.CUSTOM_FIELDS) && subscriptionModule(modules.FEDERATION) && !federationCustomFields) return null;\r\n  if (subscriptionModule(modules.CUSTOM_FIELDS) && subscriptionModule(modules.FEDERATION) && !federationSportsCustomFields) return null;\r\n    \r\n  const handleClick = () => {\r\n    setShowDialog(true);\r\n  };\r\n\r\n  const handleCloseClick = () => {\r\n    setShowDialog(false);\r\n  };\r\n    \r\n  const handleSubmit = async values => {                \r\n    setFilters( { q:filterValues.q ? filterValues.q : ''  , ...values } );        \r\n    setShowDialog(false);\r\n  };\r\n    \r\n  const today = new Date().toISOString().slice(0, 10);\r\n  let button_title = filterValues.filter && filterValues.filter.length > 0 ? translate('users_filter.filters') + ' (' + filterValues.filter.length + ')' : translate('users_filter.filters') ;\r\n    \r\n  let initialValues = filterValues && filterValues.filter && filterValues.filter.length ? filterValues : { filter: [ {f:0,o:1,v:''} ] };\r\n    \r\n  return (   \r\n    <>\r\n      <Button\r\n        size=\"small\"\r\n        color=\"primary\"\r\n        onClick={handleClick}\r\n        startIcon={<ContentFilter />}\r\n        label={button_title}\r\n      >\r\n      </Button>\r\n        \r\n      <Dialog            \r\n        open={showDialog}\r\n        onClose={handleCloseClick}\r\n        className=\"dialog-lg\"\r\n        maxWidth=\"xl\"\r\n      >\r\n        <DialogTitle>{translate('users_filter.title')}</DialogTitle>\r\n\r\n        <FormWithRedirect\r\n          save={handleSubmit}\r\n          initialValues={initialValues}\r\n          render={({\r\n            handleSubmitWithRedirect,\r\n            pristine,\r\n            saving\r\n          }) => (\r\n            <>\r\n              <DialogContent>\r\n                <Grid container spacing={2}>\r\n                  <Grid item xs={12}> \r\n                    <ArrayInput source=\"filter\" label=\"\" >\r\n                      <SimpleFormIterator\r\n                        disableReordering\r\n                        inline\r\n                        className=\"simple-iterator-inline\" \r\n                        getItemLabel={index => ''}\r\n                      >\r\n                        <FormDataConsumer>\r\n                          {({ formData, scopedFormData, getSource, ...rest }) => true &&\r\n                                            <>\r\n                                            \r\n                                              {/* TIPUS DE FILTRE */}\r\n                                              <SelectInput label={translate('users_filter.field')} source={getSource('f')} choices={filterChoice(translate,props.group,customFields, federationCustomFields, federationSportsCustomFields)} validate={[required()]} />\r\n                                            \r\n                                              {/* ANY */}\r\n                                              { scopedFormData && scopedFormData.f && scopedFormData.f >= 300 && scopedFormData.f < 800 ?\r\n                                                <SelectInput label={translate('users_filter.year')} source={getSource('y')} choices={choicesYears(translate)} validate={[required()]} initialValue={defaultYear} />\r\n                                                : null } \r\n                                            \r\n                                              {/* Activities */}\r\n                                              { scopedFormData && scopedFormData.f && fieldsActivitiesSelect.includes(scopedFormData.f) ?\r\n                                                <ReferenceInput label={translate('users_activities.name')} source={getSource('a')} reference=\"activities_users\" perPage={1000} sort={{ field: 'priority', order: 'ASC' }} >\r\n                                                  <SelectInput optionText=\"name\" optionValue=\"id\" validate={required()} resettable />\r\n                                                </ReferenceInput>      \r\n                                                : null } \r\n                                              {/* Shows */}\r\n                                              { scopedFormData && scopedFormData.f && fieldsShowsSelect.includes(scopedFormData.f) ?\r\n                                                <SelectInput label={translate('users_shows.type')} source={getSource('s')} choices={choicesShowsType(translate)} validate={[required()]} initialValue={1} />                                            \r\n                                                : null } \r\n                                              {/* Sections */}\r\n                                              { scopedFormData && scopedFormData.f && fieldsSectionsSelect.includes(scopedFormData.f) ?\r\n                                                <ReferenceInput label={translate('users_sections.name')} source={getSource('t')} reference=\"sections_users\" perPage={1000} sort={{ field: 'priority', order: 'ASC' }} >\r\n                                                  <SelectInput optionText=\"name\" optionValue=\"id\" validate={required()} resettable />\r\n                                                </ReferenceInput>      \r\n                                                : null } \r\n                                              {/* Census */}\r\n                                              { scopedFormData && scopedFormData.f && fieldsCensusSelect.includes(scopedFormData.f) ?\r\n                                                <ReferenceInput label={translate('users_federation.census')} source={getSource('c')} reference=\"census\" perPage={1000} sort={{ field: 'priority', order: 'ASC' }} >\r\n                                                  <SelectInput optionText=\"name\" optionValue=\"id\" validate={required()} resettable />\r\n                                                </ReferenceInput>      \r\n                                                : null } \r\n                                              {/* Books */}\r\n                                              { scopedFormData && scopedFormData.f && fieldsBooksSelect.includes(scopedFormData.f) ?\r\n                                                <ReferenceInput label={translate('users_federation.books')} source={getSource('b')} reference=\"books\" perPage={1000} sort={{ field: 'priority', order: 'ASC' }} >\r\n                                                  <SelectInput optionText=\"name\" optionValue=\"id\" validate={required()} resettable />\r\n                                                </ReferenceInput>  \r\n                                                : null } \r\n                                              {/* MailingLists */}\r\n                                              { scopedFormData && scopedFormData.f && fieldsMailingListsSelect.includes(scopedFormData.f) ?\r\n                                                <ReferenceInput label={translate('users_federation.mailing_lists')} source={getSource('m')} reference=\"mailing_lists\" perPage={1000} sort={{ field: 'priority', order: 'ASC' }} >\r\n                                                  <SelectInput optionText=\"name\" optionValue=\"id\" validate={required()} resettable />\r\n                                                </ReferenceInput>  \r\n                                                : null } \r\n                                              {/* Classrooms type */}\r\n                                              { scopedFormData && scopedFormData.f && fieldsClassroomsTypeSelect.includes(scopedFormData.f) ?\r\n                                                <SelectInput label={translate('classrooms.type')} source={getSource('l')} choices={choicesClassroomsType(translate)} validate={[required()]} initialValue={1} />                                            \r\n                                                : null }     \r\n                                                \r\n                                              {/* Tipus de formació en arts */}\r\n                                              { scopedFormData && scopedFormData.f && fieldsTrainingsType0Select.includes(scopedFormData.f) ?\r\n                                                <SelectInput label={translate('users_trainings.type')} source={getSource('d')} choices={choicesTrainingsType0(translate)} validate={[required()]} initialValue={0} />                                            \r\n                                                : null }    \r\n                                              {/* Tipus de formació Formal/No formal */}\r\n                                              { scopedFormData && scopedFormData.f && fieldsTrainingsFormalArtSelect.includes(scopedFormData.f) ?\r\n                                                <SelectInput label={translate('users_trainings.formal')} source={getSource('h')} choices={choicesTrainingsFormalArt(translate)} validate={[required()]} initialValue={0} />                                            \r\n                                                : null } \r\n                                              {/* Tipus de formació */}\r\n                                              { scopedFormData && scopedFormData.f && fieldsTrainingsType1Select.includes(scopedFormData.f) ?\r\n                                                <SelectInput label={translate('users_trainings.type')} source={getSource('e')} choices={choicesTrainingsType1(translate)} validate={[required()]} initialValue={0} />                                            \r\n                                                : null }    \r\n                                              {/* Tipus de formació Formal/No formal */}\r\n                                              { scopedFormData && scopedFormData.f && fieldsTrainingsFormalSelect.includes(scopedFormData.f) ?\r\n                                                <SelectInput label={translate('users_trainings.formal')} source={getSource('h')} choices={choicesTrainingsFormal(translate)} validate={[required()]} initialValue={0} />                                            \r\n                                                : null } \r\n                                              {/* Tipus de projecte social */}\r\n                                              { scopedFormData && scopedFormData.f && fieldsSocialProjecteTypeSelect.includes(scopedFormData.f) ?\r\n                                                <SelectInput label={translate('users_social_projects.type')} source={getSource('i')} choices={choicesSocialProjects(translate)} validate={[required()]} initialValue={0} />                                            \r\n                                                : null } \r\n                                            \r\n                                              {/* OPERADOR */}\r\n                                              {/* Data */}\r\n                                              { scopedFormData && scopedFormData.f && (fieldsDate.includes(scopedFormData.f) || checkCustomFieldType(customFields,federationCustomFields,federationSportsCustomFields,scopedFormData.f,[5]) ) ?\r\n                                                <SelectInput label={translate('users_filter.operator')} source={getSource('o')} choices={filterOperations(translate,[2,3,4,5,6,7])} validate={[required()]} initialValue={2} />\r\n                                                : null }   \r\n                                              {/* String */}\r\n                                              { scopedFormData && scopedFormData.f && (fieldsString.includes(scopedFormData.f) || checkCustomFieldType(customFields,federationCustomFields,federationSportsCustomFields, scopedFormData.f,[1,2,3]) ) ?\r\n                                                <SelectInput label={translate('users_filter.operator')} source={getSource('o')} choices={filterOperations(translate,[1,2,3,8])} validate={[required()]} initialValue={1} />\r\n                                                : null }   \r\n                                              {/* Boolean & selects */}\r\n                                              { scopedFormData && scopedFormData.f && (fieldsBoolean.includes(scopedFormData.f) ||\r\n                                                    fieldsUserType.includes(scopedFormData.f) ||\r\n                                                    fieldsQuote.includes(scopedFormData.f) ||\r\n                                                    fieldsRemittance.includes(scopedFormData.f) ||\r\n                                                    fieldsProperty.includes(scopedFormData.f) ||\r\n                                                    fieldsCession.includes(scopedFormData.f) ||   \r\n                                                    fieldsDelegation.includes(scopedFormData.f) || \r\n                                                    fieldsRegionSelect.includes(scopedFormData.f) || \r\n                                                    fieldsProvinceSelect.includes(scopedFormData.f) || \r\n                                                    fieldsCountrySelect.includes(scopedFormData.f) || \r\n                                                    fieldsRecercatCenterSelect.includes(scopedFormData.f) || \r\n                                                    fieldsGender.includes(scopedFormData.f) ||\r\n                                                    checkCustomFieldType(customFields,federationCustomFields,federationSportsCustomFields, scopedFormData.f,[6,7,8]) \r\n                                                    ) ?\r\n                                                <SelectInput label={translate('users_filter.operator')} source={getSource('o')} choices={filterOperations(translate,[2,3])} validate={[required()]} initialValue={2} />\r\n                                                : null }   \r\n                                              {/* Number */}\r\n                                              { scopedFormData && scopedFormData.f && (fieldsNumber.includes(scopedFormData.f) || checkCustomFieldType(customFields,federationCustomFields,federationSportsCustomFields, scopedFormData.f,[4]) ) ?\r\n                                                <SelectInput label={translate('users_filter.operator')} source={getSource('o')} choices={filterOperations(translate,[2,3,4,5,6,7])} validate={[required()]} initialValue={4} />\r\n                                                : null }   \r\n                                              {/* Docs & nets */}\r\n                                              { scopedFormData && scopedFormData.f && (fieldsDocs.includes(scopedFormData.f) || \r\n                                                    fieldsNets.includes(scopedFormData.f) || \r\n                                                    fieldsClassrooms.includes(scopedFormData.f) || \r\n                                                    fieldsWorkers.includes(scopedFormData.f) ||\r\n                                                    fieldsActivities.includes(scopedFormData.f) ||\r\n                                                    fieldsShows.includes(scopedFormData.f) ||\r\n                                                    fieldsSections.includes(scopedFormData.f) ||\r\n                                                    fieldsCensusSelect.includes(scopedFormData.f) ||\r\n                                                    fieldsBooksSelect.includes(scopedFormData.f) ||\r\n                                                    fieldsMailingListsSelect.includes(scopedFormData.f) ||\r\n                                                    fieldsGroupSelect.includes(scopedFormData.f) ||\r\n                                                    fieldsEconomicData.includes(scopedFormData.f)||\r\n                                                    fieldsDemografy.includes(scopedFormData.f) ) ?\r\n                                                <SelectInput label={translate('users_filter.operator')} source={getSource('o')} choices={[\r\n                                                  { id: 9, name: translate('users_filter.filter_op_9') },\r\n                                                  { id: 10, name: translate('users_filter.filter_op_10') }\r\n                                                ]} validate={[required()]} initialValue={9} />\r\n                                                : null }  \r\n                                            \r\n                                              {/* VALOR */}\r\n                                              {/* Data */}\r\n                                              { scopedFormData && scopedFormData.f && (fieldsDate.includes(scopedFormData.f) || checkCustomFieldType(customFields,federationCustomFields,federationSportsCustomFields,scopedFormData.f,[5]) ) ?\r\n                                                <DateInput label={translate('users_filter.value')} source={getSource('v')} validate={[required()]} initialValue={today} />\r\n                                                : null }   \r\n                                              {/* String */}\r\n                                              { scopedFormData && scopedFormData.f && (fieldsString.includes(scopedFormData.f) || checkCustomFieldType(customFields,federationCustomFields,federationSportsCustomFields,scopedFormData.f,[1,2,3]) ) ?\r\n                                                <TextInput label={translate('users_filter.value')} source={getSource('v')}  validate={[validateMaxLength(30,translate('common.validation.maxLength'))]} />\r\n                                                : null } \r\n                                              {/* Boolean */}\r\n                                              { scopedFormData && scopedFormData.f && (fieldsBoolean.includes(scopedFormData.f) || checkCustomFieldType(customFields,federationCustomFields,federationSportsCustomFields,scopedFormData.f,[6]) )?\r\n                                                <SelectInput label={translate('users_filter.value')} source={getSource('v')} choices={filterBooleanChoice(translate)} validate={[required()]} initialValue={1} />\r\n                                                : null } \r\n                                              {/* Number */}\r\n                                              { scopedFormData && scopedFormData.f && (fieldsNumber.includes(scopedFormData.f) || checkCustomFieldType(customFields,federationCustomFields,federationSportsCustomFields,scopedFormData.f,[4])) ?\r\n                                                <NumberInput label={translate('users_filter.value')} source={getSource('v')} validate={[required(),validateMaxLength(10,translate('common.validation.maxLength'))]} />\r\n                                                : null } \r\n                                              {/* fieldsUserType */}\r\n                                              { scopedFormData && scopedFormData.f && fieldsUserType.includes(scopedFormData.f) ?\r\n                                                <SelectInput label={translate('users_filter.value')} source={getSource('v')} choices={choicesTypeUser(translate)} validate={[required()]} initialValue={1} />\r\n                                                : null } \r\n                                              {/* fieldsQuote */}\r\n                                              { scopedFormData && scopedFormData.f && fieldsQuote.includes(scopedFormData.f) ?\r\n                                                <ReferenceInput label={translate('users_groups_quotes.group_quote')} source={getSource('v')} reference=\"groups_quotes\" filter={{ groups_id : props.group }} perPage={1000} >\r\n                                                  <SelectInput optionText=\"name\" optionValue=\"id\" validate={required()} resettable />\r\n                                                </ReferenceInput>                                             \r\n                                                : null } \r\n                                              {/* fieldsRemittance */}\r\n                                              { scopedFormData && scopedFormData.f && fieldsRemittance.includes(scopedFormData.f) ?\r\n                                                <SelectInput label={translate('users_filter.value')} source={getSource('v')} choices={choicesRemittancesStatus(translate)} validate={[required()]} initialValue={1} />\r\n                                                : null } \r\n                                              {/* fieldsGender */}\r\n                                              { scopedFormData && scopedFormData.f && fieldsGender.includes(scopedFormData.f) ?\r\n                                                <SelectInput label={translate('users_filter.value')} source={getSource('v')} choices={choicesGenderUser(translate)} validate={[required()]} initialValue={1} />\r\n                                                : null } \r\n                                              {/* fieldsNets */}\r\n                                              { scopedFormData && scopedFormData.f && fieldsNets.includes(scopedFormData.f) ?\r\n                                                <ReferenceInput label={translate('social_nets.title')} source={getSource('v')} reference=\"nets\" perPage={1000} >\r\n                                                  <SelectInput optionText=\"name\" optionValue=\"id\" validate={required()} resettable />\r\n                                                </ReferenceInput> \r\n                                                : null } \r\n                                              {/* fieldsProperty */}\r\n                                              { scopedFormData && scopedFormData.f && fieldsProperty.includes(scopedFormData.f) ?\r\n                                                <SelectInput label={translate('users_filter.value')} source={getSource('v')} choices={choicesProperty} validate={[required()]} initialValue={1} />                                            \r\n                                                : null } \r\n                                              {/* fieldsCession */}\r\n                                              { scopedFormData && scopedFormData.f && fieldsCession.includes(scopedFormData.f) ?\r\n                                                <SelectInput label={translate('users_filter.value')} source={getSource('v')} choices={choicesCession} validate={[required()]} initialValue={1} />                                            \r\n                                                : null }  \r\n                                              {/* fieldsDelegation */}\r\n                                              { scopedFormData && scopedFormData.f && fieldsDelegation.includes(scopedFormData.f) ?\r\n                                                <SelectInput label={translate('users_filter.value')} source={getSource('v')} choices={choicesDelegations} validate={[required()]} initialValue={1} />                                            \r\n                                                : null } \r\n                                              {/* fieldsClassroooms */}\r\n                                              { scopedFormData && scopedFormData.f && fieldsClassrooms.includes(scopedFormData.f) ?\r\n                                                <SelectInput label={translate('users_filter.value')} source={getSource('v')} choices={choicesClassroomsType(translate)} validate={[required()]} initialValue={1} />                                            \r\n                                                : null } \r\n                                              {/* fieldsGroupSelect */}\r\n                                              { scopedFormData && scopedFormData.f && fieldsGroupSelect.includes(scopedFormData.f) ?\r\n                                                <ReferenceInput label={translate('users.group')} source={getSource('g')} reference=\"groups\" filter={{ associations_id : localStorage.getItem('associations_id') }} perPage={1000} >\r\n                                                  <SelectInput optionText=\"path\" optionValue=\"id\" validate={required()} resettable />\r\n                                                </ReferenceInput> \r\n                                                : null }  \r\n                                              {/* fieldsRegion */}\r\n                                              { scopedFormData && scopedFormData.f && fieldsRegionSelect.includes(scopedFormData.f) ?\r\n                                                <SelectInput label={translate('users_filter.value')} source={getSource('r')} choices={choicesRegion} validate={[required()]} initialValue={1} />                                            \r\n                                                : null } \r\n                                              {/* fieldsProvince */}\r\n                                              { scopedFormData && scopedFormData.f && fieldsProvinceSelect.includes(scopedFormData.f) ?\r\n                                                <SelectInput label={translate('users_filter.value')} source={getSource('p')} choices={choicesProvince} validate={[required()]} initialValue={1} />                                            \r\n                                                : null } \r\n                                              {/* fieldsCountry */}\r\n                                              { scopedFormData && scopedFormData.f && fieldsCountrySelect.includes(scopedFormData.f) ?\r\n                                                <SelectInput label={translate('users_filter.value')} source={getSource('u')} choices={choicesCountry} validate={[required()]} initialValue={1} />                                            \r\n                                                : null } \r\n                                              {/* fieldsRecercatCenters */}\r\n                                              { scopedFormData && scopedFormData.f && fieldsRecercatCenterSelect.includes(scopedFormData.f) ?\r\n                                                <ReferenceInput label={translate('recercat_centers.column_center')} source={getSource('v')} reference=\"recercat_centers\" filter={{ associations_id : localStorage.getItem('associations_id') }} perPage={10000} >\r\n                                                  <SelectInput optionText=\"name\" optionValue=\"id\" validate={required()} resettable />\r\n                                                </ReferenceInput> \r\n                                                : null } \r\n                                              \r\n                                              { /* CUSTOM FIELDS */ }\r\n                                              { scopedFormData && scopedFormData.f && checkCustomFieldType(customFields,federationCustomFields,federationSportsCustomFields, scopedFormData.f,[7,8]) ?\r\n                                              <SelectInput label={translate('users_filter.value')} source={getSource('j')} choices={getChoices(customFields,federationCustomFields,federationSportsCustomFields, scopedFormData.f)} validate={[required()]} />                                                                                          \r\n                                              : null }\r\n                                            \r\n                                            </>\r\n                          }\r\n                        </FormDataConsumer>\r\n                                        \r\n                      </SimpleFormIterator>                                   \r\n                    </ArrayInput>\r\n                  </Grid> \r\n                </Grid>\r\n                            \r\n              </DialogContent>\r\n              <DialogActions>\r\n                <Button label=\"ra.action.cancel\" onClick={handleCloseClick} >\r\n                  <IconCancel />\r\n                </Button>\r\n                <SaveButton\r\n                  handleSubmitWithRedirect={\r\n                    handleSubmitWithRedirect\r\n                  }\r\n                  pristine={pristine}\r\n                  saving={saving}\r\n                />\r\n              </DialogActions>\r\n            </>\r\n          )}\r\n        />\r\n      </Dialog>\r\n    </>\r\n  );\r\n};\r\n        \r\nconst checkCustomFieldType = (customFields,federationCustomFields,federationSportsCustomFields,id,typeList) => {\r\n    let found = false;\r\n    let ct_id = id - 1000000;\r\n    if (customFields)\r\n    {\r\n        customFields.map((element, index) => {\r\n            if (element.id == ct_id && typeList.includes(element.type)) found = true;\r\n        });  \r\n    }\r\n    if (federationCustomFields)\r\n    {\r\n        federationCustomFields.map((element, index) => {\r\n            if (element.id == ct_id && typeList.includes(element.type)) found = true;\r\n        });  \r\n    }\r\n    if (federationSportsCustomFields)\r\n    {\r\n        federationSportsCustomFields.map((element, index) => {\r\n            if (element.id == ct_id && typeList.includes(element.type)) found = true;\r\n        });  \r\n    }\r\n    return found;\r\n}\r\n\r\nconst getChoices = (customFields,federationCustomFields,federationSportsCustomFields, id) => {\r\n    \r\n    let ct_id = id - 1000000;\r\n    \r\n    for (let index = 0; index < customFields.length; index++) {\r\n        let element = customFields[index];\r\n\r\n        if (element.id == ct_id) {\r\n            return element.choices;\r\n        }\r\n    }\r\n    \r\n    for (let index = 0; index < federationCustomFields.length; index++) {\r\n        let element = federationCustomFields[index];\r\n\r\n        if (element.id == ct_id) {\r\n            return element.choices;\r\n        }\r\n    }\r\n    \r\n    for (let index = 0; index < federationSportsCustomFields.length; index++) {\r\n        let element = federationSportsCustomFields[index];\r\n\r\n        if (element.id == ct_id) {\r\n            return element.choices;\r\n        }\r\n    }\r\n    \r\n    return [];\r\n}\r\n\r\nconst filterChoice = (translate,group,customFields,federationCustomFields, federationSportsCustomFields) => {\r\n\r\n  const filter = [];    \r\n  let i = 1;\r\n    \r\n  for (i=1;i<=4;i++)\r\n    filter.push({ id: i, name: translate('users_filter.filter_' + i) });\r\n  \r\n  if ( !subscriptionModule(modules.RECERCAT) )\r\n  {\r\n      filter.push({ id: 41, name: translate('users_filter.filter_41') });\r\n  }\r\n  \r\n  if ( !subscriptionModule(modules.RECERCAT) )\r\n  {\r\n    for (i=5;i<=32;i++)\r\n      filter.push({ id: i, name: translate('users_filter.filter_' + i) });\r\n  \r\n    filter.push({ id: 40, name: translate('users_filter.filter_40') });    \r\n    \r\n    if (customFields)\r\n    {\r\n        customFields.map((element, index) => {\r\n            filter.push({ id: 1000000+element.id, name: element.name }); \r\n        });    \r\n    }    \r\n\r\n  }\r\n    \r\n  // FILTRES QUE HAN DE TENIR GRUP\r\n  if (group !== 999999998 && group !== 999999999)\r\n  {\r\n    filter.push({ id: 33, name: translate('users_filter.filter_33') });\r\n    filter.push({ id: 34, name: translate('users_filter.filter_34') });\r\n        \r\n    if ( !subscriptionModule(modules.RECERCAT) )\r\n    {\r\n      filter.push({ id: 50, name: translate('users_filter.filter_50') });\r\n    }\r\n        \r\n    if ( subscriptionModule(modules.DIGITAL_CARDS) || subscriptionModule(modules.WALLETS) )\r\n    {\r\n      filter.push({ id: 51, name: translate('users_filter.filter_51') });\r\n    }\r\n  }\r\n    \r\n  if ( !subscriptionModule(modules.RECERCAT) )\r\n  {\r\n    for (i=35;i<=37;i++)\r\n      filter.push({ id: i, name: translate('users_filter.filter_' + i) });\r\n  }\r\n        \r\n  // FILTRES DEL GRUP TOTS\r\n  if (group === 999999998)\r\n  {\r\n    filter.push({ id: 38, name: translate('users_filter.filter_38') });\r\n  }\r\n    \r\n  if ( subscriptionModule(modules.RECERCAT) )\r\n  {\r\n    filter.push({ id: 39, name: translate('users_filter.filter_39') });\r\n  }\r\n      \r\n  if ( subscriptionModule(modules.FEDERATION) )\r\n  {\r\n    for (i=80;i<=91;i++)\r\n      filter.push({ id: i, name: translate('users_filter.filter_' + i) });\r\n    \r\n    for (i=99;i<=141;i++)\r\n    {\r\n      if (i != 115 && i != 116 && i != 117 && i != 118 && i != 119 && i != 120 && i != 124 ) filter.push({ id: i, name: translate('users_filter.filter_' + i) });\r\n    }\r\n    \r\n    if (federationCustomFields)\r\n    {\r\n        federationCustomFields.map((element, index) => {\r\n            filter.push({ id: 1000000+element.id, name: element.name }); \r\n        }); \r\n    }\r\n    \r\n    if (federationSportsCustomFields)\r\n    {\r\n        federationSportsCustomFields.map((element, index) => {\r\n            filter.push({ id: 1000000+element.id, name: element.name }); \r\n        }); \r\n    }\r\n        \r\n    for (i=200;i<=203;i++)\r\n      filter.push({ id: i, name: translate('users_filter.filter_' + i) });\r\n        \r\n    for (i=300;i<=327;i++)\r\n      filter.push({ id: i, name: translate('users_filter.filter_' + i) });\r\n  \r\n    for (i=350;i<=356;i++)\r\n      filter.push({ id: i, name: translate('users_filter.filter_' + i) });\r\n        \r\n    for (i=400;i<=410;i++)\r\n      filter.push({ id: i, name: translate('users_filter.filter_' + i) });\r\n        \r\n    for (i=450;i<=460;i++)\r\n      filter.push({ id: i, name: translate('users_filter.filter_' + i) });\r\n    \r\n    for (i=470;i<=476;i++)\r\n      filter.push({ id: i, name: translate('users_filter.filter_' + i) });\r\n  \r\n    for (i=480;i<=486;i++)\r\n      filter.push({ id: i, name: translate('users_filter.filter_' + i) });\r\n  \r\n    for (i=490;i<=491;i++)\r\n      filter.push({ id: i, name: translate('users_filter.filter_' + i) });\r\n        \r\n    for (i=500;i<=504;i++)\r\n      filter.push({ id: i, name: translate('users_filter.filter_' + i) });\r\n        \r\n    for (i=600;i<=606;i++)\r\n      filter.push({ id: i, name: translate('users_filter.filter_' + i) });\r\n      \r\n    for (i=700;i<=703;i++)\r\n      filter.push({ id: i, name: translate('users_filter.filter_' + i) });\r\n        \r\n    for (i=800;i<=802;i++)\r\n      filter.push({ id: i, name: translate('users_filter.filter_' + i) });\r\n          \r\n    for (i=750;i<=752;i++)\r\n      filter.push({ id: i, name: translate('users_filter.filter_' + i) });\r\n  }\r\n  \r\n  // Ordenar per nom ascendent\r\n    filter.sort((a, b) => {\r\n      if (a.name < b.name) return -1;\r\n      if (a.name > b.name) return 1;\r\n      return 0;\r\n    });\r\n    \r\n  return filter;    \r\n};\r\n\r\nfunction filterOperations (translate,operatorsToApply) {\r\n  const filter = [];    \r\n  let i = 1;\r\n    \r\n  //console.log(operatorsToApply);\r\n    \r\n  for (i=1;i<=9;i++)\r\n  {\r\n    if (operatorsToApply.includes(i))\r\n      filter.push({ id: i, name: translate('users_filter.filter_op_' + i) });\r\n  }    \r\n  return filter;    \r\n}\r\n\r\nconst filterBooleanChoice = (translate) => {\r\n  return (\r\n    [{id:1,name:translate('common.yes')},{id:0,name:translate('common.no')}]\r\n  );\r\n};\r\n\r\n\r\n","import React, { useState } from 'react';\r\nimport { Button, useListContext, useNotify, useUnselectAll, useDataProvider, useRefresh } from 'react-admin';\r\nimport { Dialog, DialogActions, DialogContent, DialogContentText, DialogTitle } from '@mui/material';\r\nimport { Delete } from '@mui/icons-material';\r\nimport MyLoading from '../components/MyLoading';\r\nimport { useTranslate  } from '../common/language';\r\n\r\n\r\nconst BulkDeleteButton = ({ resource_name, ...props}) => {\r\n    const { selectedIds, resource, setSelectedIds } = useListContext();\r\n    const [open, setOpen] = useState(false);\r\n    const dataProvider = useDataProvider();\r\n    const notify = useNotify();\r\n    const unselectAll = useUnselectAll();\r\n    const refresh = useRefresh();\r\n    const [loading, setLoading] = useState(false);\r\n    const translate = useTranslate(); \r\n\r\n    const handleClickOpen = () => {\r\n        setOpen(true);\r\n    };\r\n\r\n    const handleClose = () => {\r\n        setOpen(false);\r\n    };\r\n\r\n    const handleDelete = async () => {\r\n        setLoading(true);\r\n\r\n        const deletePromises = selectedIds.map(id =>\r\n            dataProvider.delete(resource_name, { id })\r\n        );\r\n\r\n        const results = await Promise.allSettled(deletePromises);\r\n\r\n        const errors = results\r\n            .filter(result => result.status === 'rejected')\r\n            .map((result, index) => ({\r\n                id: selectedIds[index],\r\n                message: result.reason.message,\r\n            }));\r\n\r\n        const successCount = results.filter(result => result.status === 'fulfilled').length;\r\n\r\n        if (errors.length > 0) {\r\n            notify(translate('users.delete_all_ko') + ` ${errors.map(e => '\\n' + e.id + ' -> ' + e.message ).join('\\n')}`, 'error');\r\n        } else {\r\n            notify(selectedIds.length + ' ' + translate('users.delete_all_ok') , 'success');\r\n        }\r\n\r\n        unselectAll(resource_name);\r\n        refresh();\r\n\r\n        handleClose();\r\n        setLoading(false);\r\n    };\r\n\r\n    if (loading) return <MyLoading />;\r\n    \r\n    return (\r\n        <>\r\n            <Button label={translate('users.delete_all')} onClick={handleClickOpen} className=\"red_button\" >\r\n                <Delete />\r\n            </Button>\r\n            <Dialog open={open} onClose={handleClose}>\r\n                <DialogTitle>\r\n                    {translate('users.delete_all_confirm_title').replace('%num_registers%',selectedIds.length)}\r\n                </DialogTitle>\r\n                <DialogContent>\r\n                    <DialogContentText>\r\n                        {translate('users.delete_all_confirm_description')}\r\n                        <br /><br/>{translate('users.delete_all_confirm_description_ask')}\r\n                    </DialogContentText>\r\n                </DialogContent>\r\n                <DialogActions>\r\n                    <Button onClick={handleClose} label={translate('ra.action.cancel')} />\r\n                    <Button onClick={handleDelete} label={translate('users.delete_all')} className=\"red_button\" >\r\n                        <Delete />\r\n                    </Button>\r\n                </DialogActions>\r\n            </Dialog>\r\n        </>\r\n    );\r\n};\r\n\r\nexport default BulkDeleteButton;\r\n","import React, { useState } from 'react';\r\nimport { Button, useListContext, useNotify, useUnselectAll, useDataProvider, useRefresh, RadioButtonGroupInput, \r\n    FormWithRedirect, SaveButton, DateTimeInput, required, ReferenceInput, SelectInput, FormDataConsumer, \r\n    BooleanInput, DateInput, useCreate, SaveContextProvider  } from 'react-admin';\r\nimport { Dialog, DialogActions, DialogContent, DialogContentText, DialogTitle } from '@mui/material';\r\nimport { Delete } from '@mui/icons-material';\r\nimport GroupsIcon from '@mui/icons-material/Groups';\r\nimport IconCancel from '@material-ui/icons/Cancel';\r\nimport CheckIcon from '@mui/icons-material/Check';\r\nimport MyLoading from '../components/MyLoading';\r\nimport { useTranslate  } from '../common/language';\r\n\r\nimport Grid from '@mui/material/Grid';\r\n\r\n\r\nconst BulkGroupsButton = ({ resource_name, group_public_id, source_group_id, group_name, ...props}) => {\r\n    const { selectedIds, resource, setSelectedIds } = useListContext();\r\n    const [open, setOpen] = useState(false);\r\n    const dataProvider = useDataProvider();\r\n    const notify = useNotify();\r\n    const unselectAll = useUnselectAll();\r\n    const refresh = useRefresh();\r\n    const [loading, setLoading] = useState(false);\r\n    const translate = useTranslate(); \r\n    const [create] = useCreate('users_groups/change');\r\n\r\n    const handleClickOpen = () => {\r\n        setOpen(true);\r\n    };\r\n\r\n    const handleClose = () => {\r\n        setOpen(false);\r\n    };\r\n\r\n    const handleSubmit = async (values) => {\r\n        setLoading(true);\r\n\r\n        const changePromises = selectedIds.map(id => {\r\n          const newValues = { ...values, users_id: id };\r\n\r\n          return new Promise((resolve, reject) => {\r\n            create(\r\n              { payload: { data: newValues } },\r\n              {\r\n                onSuccess: ({ data }) => {\r\n                  resolve(data); // Resol la promesa en cas d'èxit\r\n                },\r\n                onFailure: (error) => {\r\n                  reject(error); // Rebutja la promesa en cas d'error\r\n                }\r\n              }\r\n            );\r\n          });\r\n        });\r\n\r\n        const results = await Promise.allSettled(changePromises);\r\n\r\n        const errors = results\r\n          .filter(result => result.status === 'rejected')\r\n          .map(result => ({\r\n            id: selectedIds[results.indexOf(result)],\r\n            message: result.reason.message || 'Error desconegut',\r\n          }));\r\n\r\n        const successCount = results.filter(result => result.status === 'fulfilled').length;\r\n\r\n        let styleNotification='success';\r\n        if ( successCount === 0 ) styleNotification = 'error';\r\n        if ( errors.length > 0 && successCount > 0 ) styleNotification = 'warning';\r\n\r\n        let message='';\r\n        if ( successCount > 0 ) \r\n        {\r\n            message = message + translate('users.group_changes_ok_' + values.action ).replace('%num_registers%',successCount) + '<br/><br/>';\r\n        }\r\n\r\n        if ( errors.length > 0 ) \r\n        {\r\n            message = message + translate('users.group_changes_ko_' + values.action ).replace('%num_registers%',errors.length) + ':<br/>' + ` ${errors.map(e => e.message).join('<br/>')}`\r\n        }\r\n\r\n        notify( <div className=\"\" dangerouslySetInnerHTML={{ __html: message }} /> , styleNotification);\r\n\r\n        unselectAll(resource_name);\r\n        refresh();  \r\n        handleClose();\r\n        setLoading(false);\r\n    \r\n    };\r\n\r\n    const today = new Date();\r\n\r\n    if (loading) return <MyLoading />;\r\n    \r\n    return (\r\n        <>\r\n            <Button label={translate('users.group_changes')} onClick={handleClickOpen}>                \r\n               <GroupsIcon />   \r\n            </Button>\r\n            <Dialog open={open} onClose={handleClose}>\r\n                <DialogTitle>\r\n                    {translate('users.group_changes_title').replace('%num_registers%',selectedIds.length)}\r\n                </DialogTitle>\r\n                <SaveContextProvider>\r\n                <FormWithRedirect\r\n                save={handleSubmit}\r\n                initialValues={{ source_groups_id: source_group_id, action: 1 , left_send_email: group_public_id == 'SOCIS' ? true : false, date_action : today }}\r\n                render={({\r\n                  handleSubmitWithRedirect,\r\n                  pristine,\r\n                  saving\r\n                }) => (\r\n                  <>\r\n                <DialogContent>                    \r\n                    <Grid container spacing={2}>\r\n                    <Grid item xs={12}> \r\n                      <RadioButtonGroupInput label={translate('users.group_changes_action')} row={false} validate={[required()]} source=\"action\" choices={[\r\n                        { id: 1, name: translate('users.group_changes_action_1').replace('%group_name%',group_name) },\r\n                        { id: 2, name: translate('users.group_changes_action_2') },\r\n                        { id: 3, name: translate('users.group_changes_action_3') }\r\n                      ]} />\r\n                    </Grid> \r\n                    </Grid>                    \r\n                    \r\n                    <FormDataConsumer>\r\n                        {({ formData, ...rest }) => \r\n                        <>\r\n                        { formData.action != 1 ?\r\n                            <Grid container spacing={2}>\r\n                                <Grid item xs={12}>     \r\n                                <ReferenceInput label={translate('users.group_changes_destination_group')} source=\"destination_groups_id\" reference=\"groups\" filter={{ associations_id : localStorage.getItem('associations_id') }} sort={{ field: 'priority', order: 'ASC' }}  >\r\n                                    <SelectInput \r\n                                    fullWidth \r\n                                    optionText=\"path\" \r\n                                    optionValue=\"id\" \r\n                                    validate={required()}                             \r\n                                    />\r\n                                </ReferenceInput>   \r\n                                </Grid>\r\n                            </Grid>\r\n                        : null }\r\n                        <Grid container spacing={2}>\r\n                            <Grid item xs={6}>     \r\n                                <DateInput fullWidth source=\"date_action\" label={translate('users.group_changes_date_' + formData.action)} validate={[required()]} />   \r\n                            </Grid>\r\n                        </Grid>\r\n                        { group_public_id == 'SOCIS' && formData.action === 1 ?\r\n                        <Grid container spacing={2}>\r\n                            <Grid item xs={12}>     \r\n                              <BooleanInput fullWidth source=\"left_send_email\" label={translate('users_groups.left_send_email')} />\r\n                            </Grid>\r\n                        </Grid>\r\n                        : null }\r\n                        </>\r\n                        }\r\n                    </FormDataConsumer>                       \r\n                    \r\n                </DialogContent>\r\n                \r\n                <DialogActions>\r\n                <Button label=\"ra.action.cancel\" onClick={handleClose} disabled={loading} >\r\n                  <IconCancel />\r\n                </Button>\r\n                <SaveButton\r\n                  handleSubmitWithRedirect={\r\n                    handleSubmitWithRedirect\r\n                  }\r\n                  pristine={pristine}\r\n                  saving={saving}\r\n                  disabled={loading}\r\n                  icon={<CheckIcon />}\r\n                  label={translate('users.group_changes_confirm')}\r\n                />\r\n              </DialogActions>\r\n            </>\r\n          )}\r\n        />\r\n        </SaveContextProvider>\r\n        </Dialog>\r\n        </>\r\n    );\r\n};\r\n\r\nexport default BulkGroupsButton;\r\n","import React, { useState } from 'react';\r\nimport {\r\n  required,\r\n  Button,\r\n  SaveButton,\r\n  useCreate,\r\n  useNotify,\r\n  FormWithRedirect,\r\n  useRefresh, useTranslate, FileInput, FileField\r\n} from 'react-admin';\r\nimport IconCancel from '@material-ui/icons/Cancel';\r\nimport PublishIcon from '@mui/icons-material/Publish';\r\nimport SaveIcon from '@material-ui/icons/GetApp';\r\n\r\nimport Dialog from '@material-ui/core/Dialog';\r\nimport DialogTitle from '@material-ui/core/DialogTitle';\r\nimport DialogContent from '@material-ui/core/DialogContent';\r\nimport DialogActions from '@material-ui/core/DialogActions';\r\n\r\nimport { subscriptionModule  } from '../common/utils';\r\nimport {modules } from './../common/constants';\r\n\r\nimport {maxDocFileSize} from './../common/constants';\r\n\r\nimport { apiUrl, apiOrigin, apiDefaultLanguage,  } from './../common/constants';\r\n\r\nexport const ImportButton = ({ target, items_id , label, icon, btnClassname, group_public_id, ...props }) => {\r\n  \r\n  const [showDialog, setShowDialog] = useState(false);\r\n  const [create, { loading }] = useCreate('docs/import');\r\n  const notify = useNotify();\r\n  const refresh = useRefresh();    \r\n  const translate = useTranslate();  \r\n\r\n  let allowableAllDocs = false;\r\n  let labelInputFile = '';    \r\n  let maxDocFileSizeMin = maxDocFileSize / 1000000;\r\n  labelInputFile = translate('docs.fieldExcel').replace('%size%',maxDocFileSizeMin);\r\n    \r\n  const handleClick = () => {\r\n    setShowDialog(true);\r\n  };\r\n\r\n  const handleCloseClick = () => {\r\n    setShowDialog(false);\r\n  };\r\n\r\n  const handleSubmit = async values => {\r\n    create(\r\n      { payload: { data: values } },\r\n      {\r\n        onSuccess: (data) => {\r\n            \r\n            if (data.data.num > 0)\r\n            {\r\n                setShowDialog(false);\r\n                notify( translate('docs.imported').replaceAll('%num%',data.data.num) , 'success');\r\n                refresh();\r\n            }\r\n            else\r\n            {\r\n                notify( translate('docs.imported_none') , 'error');             \r\n            }\r\n          \r\n        },\r\n        onFailure: ( error ) => {                   \r\n          notify( <div dangerouslySetInnerHTML={{ __html: error.message }} ></div>, 'error');\r\n        }\r\n      }\r\n    );\r\n  };\r\n        \r\n  const handleClickGetTemplate = async () => {\r\n        \r\n    try {\r\n        let headers = new Headers({\r\n            'Authorization': localStorage.getItem('auth'),\r\n            'Accept-Language': apiDefaultLanguage,\r\n            'Role': localStorage.getItem('active_permission')\r\n        });\r\n\r\n        const result = await fetch(`${apiUrl}/docs/template_import/${localStorage.getItem('associations_id')}`, {\r\n            headers: headers\r\n        });\r\n\r\n        // Comprova si la resposta ha tingut èxit\r\n        if (!result.ok) {\r\n            throw new Error('Error descarregant el fitxer');\r\n        }\r\n\r\n        const blob = await result.blob();\r\n        const href = window.URL.createObjectURL(blob);\r\n\r\n        // Generar un nom de fitxer dinàmic (opcionalment a partir del `Content-Disposition`)\r\n        const contentDisposition = result.headers.get('Content-Disposition');\r\n        \r\n        const fileName = contentDisposition\r\n            ? contentDisposition.split('filename=')[1].split(';')[0].trim()\r\n            : 'plantilla.xlsx'; // Nom per defecte\r\n\r\n        // Crear i clicar l'enllaç temporal per descarregar el fitxer\r\n        const tempLink = document.createElement('a');\r\n        tempLink.href = href;\r\n        tempLink.setAttribute('download', fileName); // Nom dinàmic\r\n        document.body.appendChild(tempLink);\r\n        tempLink.click();\r\n\r\n        // Eliminar l'enllaç temporal\r\n        document.body.removeChild(tempLink);\r\n        window.URL.revokeObjectURL(href); // Alliberar memòria\r\n        \r\n        notify( translate('common.download_ok') , 'success');\r\n        \r\n    } catch (error) {\r\n        \r\n        notify( translate('common.notification.error') , 'error');\r\n    }\r\n    \r\n  };\r\n  \r\n  const handleSubmit2 = async values => {\r\n        \r\n  };\r\n\r\n  return (\r\n    <>           \r\n               \r\n      <Button onClick={handleClick} label={translate('users.import')} className={btnClassname} >\r\n        <PublishIcon />\r\n      </Button>\r\n\r\n      <Dialog\r\n        fullWidth\r\n        open={showDialog}\r\n        onClose={handleCloseClick}\r\n        aria-label={translate('users.import')}\r\n      >\r\n        <DialogTitle>{translate('users.import_title')}</DialogTitle>\r\n\r\n        <FormWithRedirect\r\n          resource=\"docs\"\r\n          save={handleSubmit}\r\n          onSuccess={handleSubmit2}\r\n          initialValues={{ associations_id : localStorage.getItem('associations_id'), target: target, items_id: items_id }}\r\n          render={({\r\n            handleSubmitWithRedirect,\r\n            pristine,\r\n            saving\r\n          }) => (\r\n            <>\r\n              <DialogContent>                 \r\n                <Button onClick={()=>handleClickGetTemplate()} className=\"link\" label={translate('users.import_template')} icon={<IconCancel />} >\r\n                    <SaveIcon />\r\n                </Button>\r\n                <br /><br />\r\n                <FileInput source=\"image\" label={labelInputFile} accept=\"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet, application/vnd.ms-excel\" validate={required()} maxSize={maxDocFileSize} >\r\n                  <FileField source=\"image\" title=\"title\" />\r\n                </FileInput>                                \r\n              </DialogContent>\r\n              <DialogActions>\r\n                <Button label=\"ra.action.cancel\" onClick={handleCloseClick} disabled={loading} >\r\n                  <IconCancel />\r\n                </Button>\r\n                <SaveButton\r\n                  handleSubmitWithRedirect={\r\n                    handleSubmitWithRedirect\r\n                  }\r\n                  pristine={pristine}\r\n                  saving={saving}\r\n                  disabled={loading}\r\n                />\r\n              </DialogActions>\r\n            </>\r\n          )}\r\n        />\r\n      </Dialog>\r\n            \r\n    </>\r\n  );\r\n};\r\n","import React, { useState } from 'react';\r\nimport {\r\n  required,\r\n  Button,\r\n  SaveButton,\r\n  TextInput,\r\n  useCreate,\r\n  useUpdate,\r\n  useNotify,\r\n  FormWithRedirect,\r\n  useRefresh, TopToolbar, useTranslate, SelectInput, NumberInput, BooleanInput, FormDataConsumer, downloadCSV\r\n} from 'react-admin';\r\n\r\nimport jsonExport from 'jsonexport/dist';\r\nimport {emailsStatus } from './../common/constants';\r\n\r\nimport IconContentAdd from '@material-ui/icons/Add';\r\nimport IconCancel from '@material-ui/icons/Cancel';\r\n\r\nimport Dialog from '@material-ui/core/Dialog';\r\nimport DialogTitle from '@material-ui/core/DialogTitle';\r\nimport DialogContent from '@material-ui/core/DialogContent';\r\nimport DialogActions from '@material-ui/core/DialogActions';\r\n\r\nimport EditIcon from '@material-ui/icons/Edit';\r\nimport RefreshIcon from '@mui/icons-material/Refresh';\r\n\r\n\r\nimport Grid from '@mui/material/Grid';\r\n\r\n\r\nimport { choicesRemittancesStatus} from './../common/constants';\r\n\r\nimport { UserInput } from '../components/User';\r\nimport { ExportButton } from './../components/ExportButton';\r\n\r\nimport { validateMaxLength, validateInteger  } from './../components/Validator';\r\n\r\nexport const RemittancesUsersEditButton = ({ ...props }) => {\r\n\r\n  const [showDialog, setShowDialog] = useState(false);\r\n  const notify = useNotify();\r\n  const refresh = useRefresh();    \r\n  const translate = useTranslate();  \r\n\r\n  const [update, { loading, error }] = useUpdate();\r\n\r\n  const handleClick = () => {\r\n    setShowDialog(true);\r\n  };\r\n\r\n  const handleCloseClick = () => {\r\n    setShowDialog(false);\r\n  };\r\n\r\n  const handleSubmit = async values => {\r\n    update(\r\n      { \r\n        type: 'update', \r\n        resource: 'remittances_users', \r\n        payload : { id: values.remittances_users_id, data : { status : values.status, comments: values.comments, reemit: values.reemit, payer_payment_cash: values.payer_payment_cash, return_notification: values.return_notification } }\r\n      },\r\n      {\r\n        onSuccess: ({ data }) => {\r\n          setShowDialog(false);\r\n          refresh();\r\n        },\r\n        onFailure: ( error ) => {\r\n          notify(error.message, 'error');\r\n        }\r\n      }\r\n    );\r\n  };    \r\n\r\n  return (\r\n    <>\r\n      <Button onClick={handleClick} label=\"\" startIcon={<EditIcon />} />\r\n\r\n      <Dialog\r\n        fullWidth\r\n        open={showDialog}\r\n        onClose={handleCloseClick}\r\n        aria-label={translate('remittances.status_form')}\r\n      >\r\n        <DialogTitle>{translate('remittances.status_form')}</DialogTitle>\r\n\r\n        <FormWithRedirect\r\n          resource=\"remittances_users_items\"\r\n          save={handleSubmit}\r\n          initialValues={{ remittances_users_id : props.record.id, status : props.record.status, comments: props.record.comments, reemit: props.record.reemit, payer_payment_cash: props.record.payer_payment_cash, return_notification : false }}\r\n          render={({\r\n            handleSubmitWithRedirect,\r\n            pristine,\r\n            saving\r\n          }) => (\r\n            <>\r\n              <DialogContent>\r\n                <Grid container spacing={2}>\r\n                  <Grid item xs={5}>     \r\n                    <SelectInput fullWidth label={translate('remittances.status_new')} source=\"status\" choices={choicesRemittancesStatus(translate)} />\r\n                  </Grid> \r\n                  <Grid item xs={1}> \r\n                  </Grid> \r\n                  <Grid item xs={6}>  <br/>   \r\n                    <BooleanInput label={translate('remittances.payer_payment_cash')} source=\"payer_payment_cash\" />\r\n                  </Grid> \r\n                </Grid>\r\n\r\n                <Grid container spacing={2}>\r\n                  <Grid item xs={12}>  \r\n                    <TextInput label={translate('remittances.comments_form')} fullWidth source=\"comments\" validate={[validateMaxLength(255,translate('common.validation.maxLength'))]} />                                        \r\n                  </Grid> \r\n                </Grid>                                \r\n                                \r\n                <FormDataConsumer>\r\n                  {({ formData, ...rest }) => \r\n                    formData.status === 1 && \r\n                                <>                                \r\n                                  <BooleanInput label={translate('remittances.check_reemit')} source=\"reemit\" />\r\n                                  <BooleanInput label={translate('remittances.check_sent_return_notification')} source=\"return_notification\" />\r\n                                </>                                \r\n                  }\r\n                </FormDataConsumer>\r\n              </DialogContent>\r\n              <DialogActions>\r\n                <Button label=\"ra.action.cancel\" onClick={handleCloseClick} disabled={loading} >\r\n                  <IconCancel />\r\n                </Button>\r\n                <SaveButton\r\n                  handleSubmitWithRedirect={\r\n                    handleSubmitWithRedirect\r\n                  }\r\n                  pristine={pristine}\r\n                  saving={saving}\r\n                  disabled={loading}\r\n                />\r\n              </DialogActions>\r\n            </>\r\n          )}\r\n        />\r\n      </Dialog>\r\n    </>\r\n  );\r\n};\r\n\r\n\r\nexport const RemittancesUsersRefreshButton = ({ record, ...props }) => {\r\n\r\n  const [showDialog, setShowDialog] = useState(false);\r\n  const notify = useNotify();\r\n  const refresh = useRefresh();    \r\n  const translate = useTranslate();  \r\n\r\n  const [update, { loading, error }] = useUpdate();\r\n\r\n  const handleClickRefresh = id => {\r\n        \r\n    update(\r\n      { \r\n        type: 'update', \r\n        resource: 'remittances_users/refresh', \r\n        payload : { id: id, data : { refresh : true } }\r\n      },\r\n      {\r\n        onSuccess: ({ data }) => {\r\n          notify(translate('remittances.refresh_payer_confirm'));\r\n          refresh();\r\n        },\r\n        onFailure: ( error ) => {                                        \r\n          notify(error.message, 'error');\r\n        }\r\n      }\r\n    );\r\n\r\n  };\r\n\r\n  return (\r\n    <Button onClick={ (e) => { e.stopPropagation(); handleClickRefresh(record.id); } } label={translate('remittances.refresh_payer')} startIcon={<RefreshIcon />} />        \r\n  );\r\n};\r\n\r\n\r\nexport const RemittancesUsersToolbar = ({ remittances_id , date_creation, ...props }) => {\r\n\r\n  let filterExport = {\r\n    remittances_id : remittances_id,  \r\n    associations_id: localStorage.getItem('associations_id'),\r\n    export: 1,\r\n  };\r\n    \r\n  return (        \r\n    <TopToolbar>\r\n      <RemittancesUsersCreateButton remittances_id={remittances_id} date_creation={date_creation} />\r\n      <ExportButton maxResults=\"100000\" filterValues={filterExport} alwaysEnabled={false} exporter={exporter} sort={{ field: 'id', order: 'DESC' }} />        \r\n    </TopToolbar>        \r\n  );\r\n};\r\n\r\n\r\nconst exporter = (items, translate, notify) => {\r\n    \r\n  const eventsForExport = items.map(remittance_user => {\r\n    var eventForExport = {\r\n      id : remittance_user.id,\r\n      first_name : remittance_user.first_name, \r\n      last_name_1 : remittance_user.last_name_1, \r\n      last_name_2 : remittance_user.last_name_2, \r\n      email: remittance_user.email,\r\n      payer_first_name : remittance_user.payer_first_name, \r\n      payer_last_name_1 : remittance_user.payer_last_name_1, \r\n      payer_last_name_2 : remittance_user.payer_last_name_2, \r\n      payer_iban: remittance_user.payer_iban, \r\n      payer_nif: remittance_user.payer_nif,\r\n      payer_payment_cash: remittance_user.payer_payment_cash ? translate('remittances.cash') : translate('remittances.bank'), \r\n      quantity: remittance_user.quantity != null ? remittance_user.quantity.toFixed(2).replace('.', ',') : '',   \r\n      status: translate('remittances.status' + remittance_user.status ) ,\r\n      returned_status: remittance_user.status === 1 ? remittance_user.returned_status === emailsStatus.SENT_TO_SMTP_OK ? translate('common.yes') : translate('common.no') : '',\r\n      concept: remittance_user.items ? remittance_user.items\r\n              .map(\r\n                  (item) =>\r\n                      `${item.concept} (${item.quantity.toFixed(2).replace('.', ',')})`\r\n              )\r\n              .join(', ') : '',\r\n      comments: remittance_user.comments\r\n    };\r\n    return eventForExport;\r\n  });\r\n  jsonExport(eventsForExport, {\r\n    headers: ['id', 'first_name', 'last_name_1', 'last_name_2','email','quantity', 'payer_first_name', 'payer_last_name_1', 'payer_last_name_2', \r\n      'payer_iban', 'payer_nif','payer_payment_cash','status','returned_status','concept', 'comments'],\r\n    rename: [translate('remittances.ref'), translate('users.first_name'), translate('users.last_name_1'), translate('users.last_name_2'), \r\n      translate('users.email'), translate('remittances.quantity'), translate('users.first_name') + ' (' + translate('remittances.payer') + ')', \r\n      translate('users.last_name_1')+ ' (' + translate('remittances.payer') + ')', translate('users.last_name_2')+ ' (' + translate('remittances.payer') + ')',\r\n      translate('users.bank_iban')+ ' (' + translate('remittances.payer') + ')', translate('users.nif')+ ' (' + translate('remittances.payer') + ')',\r\n      translate('remittances.payment_system'),translate('remittances.status'), translate('remittances.exporter_header_returned_status') , translate('remittances.concept'), translate('remittances.comments')  \r\n    ],        \r\n        \r\n  }, (err, csv) => {\r\n    const csv_new = '\\uFEFF' + csv;\r\n    downloadCSV(csv_new, translate('remittances.exporter_file_name') ); \r\n    notify(translate('common.download_ok'),\"success\");\r\n  });\r\n};\r\n\r\n\r\nexport const RemittancesUsersCreateButton = ({ remittances_id , date_creation, ...props }) => {\r\n\r\n  const [showDialog, setShowDialog] = useState(false);\r\n  const [create, { loading }] = useCreate('remittances_users');\r\n  const notify = useNotify();\r\n  const refresh = useRefresh();    \r\n  const translate = useTranslate();  \r\n\r\n\r\n  const handleClick = () => {\r\n    setShowDialog(true);\r\n  };\r\n\r\n  const handleCloseClick = () => {\r\n    setShowDialog(false);\r\n  };\r\n\r\n  const handleSubmit = async values => {\r\n    create(            \r\n      { payload: { data: values } },\r\n      {\r\n        onSuccess: ({ data }) => {\r\n          setShowDialog(false);\r\n          refresh();\r\n        },\r\n        onFailure: ( error ) => {\r\n          notify( error.message , 'error');\r\n        }\r\n      }\r\n    );\r\n  };\r\n    \r\n  return (\r\n    <>            \r\n      <Button onClick={handleClick} label={translate('remittances.create')}>\r\n        <IconContentAdd />                \r\n      </Button>\r\n\r\n      <Dialog\r\n        fullWidth\r\n        open={showDialog}\r\n        onClose={handleCloseClick}\r\n        aria-label={translate('remittances.create')}\r\n      >\r\n        <DialogTitle>{translate('remittances.create')}</DialogTitle>\r\n\r\n        <FormWithRedirect\r\n          save={handleSubmit}\r\n          initialValues={{ remittances_id : remittances_id }}\r\n          render={({\r\n            handleSubmitWithRedirect,\r\n            pristine,\r\n            saving\r\n          }) => (\r\n            <>\r\n              <DialogContent>\r\n                <Grid container spacing={2}>\r\n                  <Grid item xs={12}> \r\n                    <UserInput source=\"users_id\" user_type={-1} disabled={false} label={translate('common.name')} allowEmpty={false} required={true} />\r\n                  </Grid> \r\n                </Grid>\r\n                <Grid container spacing={2}>\r\n                  <Grid item xs={9}>     \r\n                    <TextInput label={translate('remittances.concept')} fullWidth source=\"concept\" validate={[required(),validateMaxLength(100,translate('common.validation.maxLength'))]} />                                        \r\n                  </Grid> \r\n                  <Grid item xs={3}>     \r\n                    <NumberInput label={translate('remittances.quantity')} fullWidth source=\"quantity\" validate={[required(),validateInteger(translate('common.validation.number'))]} />                                        \r\n                  </Grid> \r\n                </Grid>\r\n              </DialogContent>\r\n              <DialogActions>\r\n                <Button label=\"ra.action.cancel\" onClick={handleCloseClick} disabled={loading} >\r\n                  <IconCancel />\r\n                </Button>\r\n                <SaveButton\r\n                  handleSubmitWithRedirect={\r\n                    handleSubmitWithRedirect\r\n                  }\r\n                  pristine={pristine}\r\n                  saving={saving}\r\n                  disabled={loading}\r\n                />\r\n              </DialogActions>\r\n            </>\r\n          )}\r\n        />\r\n      </Dialog>\r\n    </>\r\n  );\r\n};\r\n","\r\nimport {\r\n  useTranslate ,\r\n  Button ,\r\n  useDataProvider  ,\r\n  useNotify\r\n} from 'react-admin';\r\n\r\nimport SaveIcon from '@material-ui/icons/GetApp';\r\n\r\n\r\n\r\nexport function DownloadSEPAButton ({ record, remittances_id, date_creation, ...props}) {\r\n  const translate = useTranslate();\r\n  const dataProvider = useDataProvider();    \r\n  const notify = useNotify();\r\n\r\n  if (record)\r\n  {\r\n    remittances_id = record.id;\r\n    date_creation = record.date_creation;\r\n  }\r\n\r\n  const handleClick = () => {\r\n    dataProvider.getOne('remittances/sepa',{ id: remittances_id })\r\n      .then(({ data }) => {\r\n        var ms = new Date().getTime();\r\n        var strName = date_creation.substring(0,10) + '_' + remittances_id+ '_' + ms;\r\n        var fileDownload = require('js-file-download');\r\n        fileDownload( data.xmlValue , 'remesa_sepa_' + strName + '.xml');\r\n        notify(translate('remittances.pdf_ok'),\"success\");\r\n      })\r\n      .catch(error => {\r\n        notify(error.message,'error');\r\n      });\r\n  };\r\n  return <Button {...props} label={translate('remittances.sepa')} onClick={handleClick} startIcon={<SaveIcon />} className=\"remittancesButtonSEPA\" />;\r\n}","\r\nimport {\r\n  useTranslate ,\r\n  Button ,\r\n  useNotify\r\n} from 'react-admin';\r\n\r\nimport SaveIcon from '@material-ui/icons/GetApp';\r\n\r\nimport { apiUrl, apiOrigin, apiDefaultLanguage,  } from './../common/constants';\r\n\r\nexport function DownloadPDFButton ({ record, remittances_id, date_creation, ...props}) {\r\n    \r\n  const translate = useTranslate(); \r\n  const notify = useNotify();\r\n\r\n  const handleAction = async () => {\r\n\r\n    let headers = new Headers({ Accept: 'application/json' });\r\n    headers.set('Access-Control-Allow-Origin', apiOrigin );\r\n    headers.set('Authorization', localStorage.getItem('auth'));\r\n    headers.set('Accept-Language', apiDefaultLanguage);\r\n    headers.set('Role', localStorage.getItem('active_permission'));\r\n\r\n    const result = await fetch(apiUrl + '/remittances/pdf/' + remittances_id , { \r\n      headers: headers\r\n    });\r\n    \r\n    const blob = await result.blob();\r\n    const href = window.URL.createObjectURL(blob);\r\n    \r\n    var ms = new Date().getTime();\r\n    var strName = date_creation.substring(0,10) + '_' + remittances_id+ '_' + ms;\r\n    \r\n    var tempLink = document.createElement('a');\r\n    tempLink.href = href;\r\n    tempLink.setAttribute('download', translate('remittances.pdf_filename') + '_' + strName);\r\n    tempLink.click();\r\n    \r\n    notify(translate('remittances.pdf_ok'),\"success\");\r\n    \r\n  };\r\n\r\n  return (\r\n    <Button label={translate('remittances.pdf')} startIcon={<SaveIcon />} onClick={handleAction} />\r\n  );\r\n\r\n}","import * as React from 'react';\r\nimport { Typography } from '@material-ui/core';\r\nimport { makeStyles } from '@material-ui/core/styles';\r\n\r\nimport { useTranslate, useListContext, useResourceContext, useGetResourceLabel, } from 'ra-core';\r\n\r\nimport {\r\n  CreateButton     \r\n} from 'react-admin';\r\n\r\nexport var Empty = function ({ title, subtitle, icon, ...props }) {\r\n  var _a = useListContext(props), basePath = _a.basePath, hasCreate = _a.hasCreate;\r\n  var resource = useResourceContext(props);\r\n  var classes = useStyles(props);\r\n  var translate = useTranslate();\r\n  var getResourceLabel = useGetResourceLabel();\r\n  var resourceName = translate('resources.' + resource + '.forcedCaseName', {\r\n    smart_count: 0,\r\n    _: getResourceLabel(resource, 0),\r\n  });\r\n  var emptyMessage = translate('ra.page.empty', { name: title });\r\n  var inviteMessage = translate('ra.page.invite');\r\n  return (React.createElement(React.Fragment, null,\r\n    React.createElement('div', { className: classes.message },\r\n      React.createElement(icon, { className: classes.icon }),\r\n      React.createElement(Typography, { variant: 'h4', paragraph: true }, translate('resources.' + resource + '.empty', {\r\n        _: emptyMessage,\r\n      })),\r\n      hasCreate && (React.createElement(Typography, { variant: 'body1' }, translate('resources.' + resource + '.invite', {\r\n        _: inviteMessage,\r\n      })))),\r\n    hasCreate && (React.createElement('div', { className: classes.toolbar },\r\n      React.createElement(CreateButton, { variant: 'contained', basePath: basePath })))));\r\n};\r\nvar useStyles = makeStyles(function (theme) { return ({\r\n  message: {\r\n    textAlign: 'center',\r\n    opacity: theme.palette.type === 'light' ? 0.5 : 0.8,\r\n    margin: '2em 1em',\r\n    color: theme.palette.type === 'light'\r\n      ? 'inherit'\r\n      : theme.palette.text.primary,\r\n  },\r\n  icon: {\r\n    width: '9em',\r\n    height: '9em',\r\n  },\r\n  toolbar: {\r\n    textAlign: 'center',\r\n    marginTop: '2em',\r\n  },\r\n}); }, { name: 'RaEmpty' });\r\n","// in src/posts.js\r\nimport React, { useState } from 'react';\r\nimport { cloneElement , Confirm , useForm, useNotify, doStuff, Component } from 'react';\r\nimport { FC, createElement } from 'react';\r\n\r\nimport {\r\n    List, SimpleList, \r\n    Datagrid,\r\n    TextField,\r\n    ReferenceField,\r\n    EditButton,\r\n    DeleteButton,\r\n    Edit,\r\n    Create,\r\n    SimpleForm,\r\n    ReferenceInput,\r\n    SelectInput,\r\n    TextInput,\r\n    Button ,\r\n    CreateButton ,\r\n    ExportButton,\r\n    TopToolbar,\r\n    Pagination,\r\n    FormTab,\r\n    TabbedForm,\r\n    ReferenceManyField,\r\n    Title,\r\n    FormDataConsumer,\r\n    useListContext,\r\n    Filter, required, ChipField,ReferenceArrayField, SingleFieldList, ArrayField,DateField ,DateInput,NumberInput,RadioButtonGroupInput,BooleanInput,SelectField,\r\n    useGetOne , FunctionField, ResourceContextProvider, useCreate, useRefresh, FormWithRedirect, Toolbar, SaveButton, useDataProvider, Loading, Error, NumberField,\r\n    CheckboxGroupInput,\r\n    ReferenceArrayInput,\r\n    SelectArrayInput,\r\n    BooleanField\r\n} from 'react-admin';\r\n\r\nimport { useEffect } from 'react';\r\n\r\nimport { DualListInput } from '@react-admin/ra-relationships';\r\nimport { EditableDatagrid, RowForm } from '@react-admin/ra-editable-datagrid';\r\n\r\nimport { Card, CardContent, CardHeader,useMediaQuery } from '@material-ui/core';\r\nimport IconEvent from '@material-ui/icons/Event';\r\nimport ChevronLeft from '@material-ui/icons/ChevronLeft';\r\nimport ChevronRight from '@material-ui/icons/ChevronRight';\r\nimport Chip from '@material-ui/core/Chip';\r\nimport { makeStyles } from '@material-ui/core/styles';\r\n\r\nimport { useFormState } from 'react-final-form';\r\n\r\nimport { i18nProvider, useTranslate  } from '../common/language';\r\nimport MyLoading from '../components/MyLoading';\r\n\r\nimport Typography from '@mui/material/Typography';\r\n\r\nimport { green, orange, deepOrange } from '@mui/material/colors';\r\n\r\nimport { UserAvatarField, UserFullNameTxt } from '../components/User';\r\n\r\nimport IconButton from '@material-ui/core/IconButton';\r\nimport SaveIcon from '@material-ui/icons/GetApp';\r\nimport EditIcon from '@material-ui/icons/Edit';\r\nimport PersonIcon from '@mui/icons-material/Person';\r\nimport EqualizerIcon from '@mui/icons-material/Equalizer';\r\nimport Grid from '@mui/material/Grid';\r\nimport Avatar from '@mui/material/Avatar';\r\nimport DescriptionIcon from '@mui/icons-material/Description';\r\nimport DoneIcon from '@mui/icons-material/Done';\r\nimport CloseIcon from '@mui/icons-material/Close';\r\nimport Listt from '@mui/material/List';\r\nimport ListItem from '@mui/material/ListItem';\r\nimport ListItemAvatar from '@mui/material/ListItemAvatar';\r\nimport ListItemIcon from '@mui/material/ListItemIcon';\r\nimport ListItemText from '@mui/material/ListItemText';\r\nimport CheckCircleIcon from '@mui/icons-material/CheckCircle';\r\nimport DoNotDisturbOffIcon from '@mui/icons-material/DoNotDisturbOff';\r\nimport DoNotDisturbOnIcon from '@mui/icons-material/DoNotDisturbOn';\r\nimport IconContentAdd from '@material-ui/icons/Add';\r\nimport IconCancel from '@material-ui/icons/Cancel';\r\nimport AccountBalanceIcon from '@mui/icons-material/AccountBalance';\r\nimport AccountBalanceBigIcon from '@material-ui/icons/AccountBalance';\r\nimport EuroIcon from '@mui/icons-material/Euro';\r\n\r\n\r\nimport Dialog from '@material-ui/core/Dialog';\r\nimport DialogTitle from '@material-ui/core/DialogTitle';\r\nimport DialogContent from '@material-ui/core/DialogContent';\r\nimport DialogActions from '@material-ui/core/DialogActions';\r\n\r\n\r\nimport { RemittancesUsersToolbar, RemittancesUsersEditButton, RemittancesUsersRefreshButton, RemittancesUsersCreateButton, RemittancesUsersEditButton2 } from './../components/RemittancesUsers';\r\n\r\nimport { DownloadSEPAButton } from './../components/DownloadSEPAButton';\r\nimport { DownloadPDFButton } from './../components/DownloadPDFButton';\r\nimport { Empty } from './../components/Empty';\r\nimport { SendEmailIconStatus } from './../components/Emails';\r\nimport { targetsEmails } from './../common/constants';\r\n\r\nimport Box from '@material-ui/core/Box';\r\n\r\nimport { Link } from 'react-router-dom';\r\n\r\nimport { validateMaxLength, validateInteger, validateDouble  } from './../components/Validator';\r\n\r\n\r\nexport const RemittancesList = (props) => {\r\n    const translate = useTranslate();    \r\n    const isSmall = useMediaQuery(theme => theme.breakpoints.down('sm'));\r\n    return (\r\n        <><br />\r\n        <List {...props} \r\n        sort={{ field: 'date_creation', order: 'DESC' }} \r\n        actions={<ListActionsRemittancesList/>}    \r\n        filter={{ associations_id : localStorage.getItem('associations_id') }}  \r\n        bulkActionButtons={false}  \r\n        empty={<Empty title={translate('remittances.no_remittances_users_title')} icon={AccountBalanceBigIcon} />} \r\n        filters={<RemittancesFilter />} \r\n        >        \r\n                <Datagrid \r\n                rowClick=\"edit\">  \r\n                    <Avatar><DescriptionIcon/></Avatar>   \r\n                    <DateField source=\"date_creation\" label={translate('remittances.date_creation')} sortable={false} />                \r\n                    <TextField source=\"ibans_name\" label={translate('ibans.name_create_remittance')} sortable={false} />  \r\n                    <TextField source=\"name\" label={translate('common.name')} sortable={false} />                      \r\n                    <TextField source=\"count_users\" label={translate('remittances.count_users')} sortable={false} />                  \r\n                    <NumberField source=\"sum_quantity\" label={translate('remittances.sum_quantity')} sortable={false} locales=\"es-ES\" options={{ style: 'currency', currency: 'EUR' }} />  \r\n                </Datagrid>        \r\n        </List>\r\n        </>\r\n    );\r\n}\r\n\r\nconst RemittancesFilter = (props) => {\r\n    const translate = useTranslate(); \r\n    return (\r\n    \r\n    <Filter {...props}>  \r\n        <ReferenceInput \r\n            fullWidth\r\n            sort={{ field: 'priority', order: 'ASC' }} \r\n            perPage={1000} \r\n            label={translate('ibans.name_create_remittance')} \r\n            source=\"ibans_id\" \r\n            reference=\"ibans\"\r\n            filter={{ associations_id : localStorage.getItem('associations_id') }}\r\n            alwaysOn\r\n            className=\"form-300\" \r\n        >\r\n            <SelectInput optionText=\"name\" optionValue=\"id\" optionText={optionRenderer} resettable />\r\n        </ReferenceInput> \r\n    </Filter>\r\n);\r\n};\r\n\r\nconst ListActionsRemittancesList = (props) => {\r\n    const translate = useTranslate(); \r\n    return (\r\n    <TopToolbar>     \r\n        <CreateButton label={translate('remittances.create_remittance')} />      \r\n    </TopToolbar>\r\n    );\r\n};\r\n\r\nconst UserLinkButton = ({ record, ...props }) => {\r\n    const translate = useTranslate();\r\n    const dataProvider = useDataProvider();\r\n\r\n    const handleClick = () => {\r\n            window.open('/#/users/' + record.users_id + '/show' , '_blank');\r\n    };\r\n    \r\n    if (!record.users_deleted)\r\n        return <Button {...props} label=\"\" onClick={handleClick} startIcon={<PersonIcon />} />;\r\n    else\r\n        return <span />;\r\n};\r\n\r\nexport const RemittancesEdit  = ({ id, ...props }) => {\r\n\r\n    const translate = useTranslate();        \r\n    const classes = useStyles();\r\n\r\n    let strRedirect =  `/remittances/${id}/receipts`;    \r\n\r\n    return (\r\n\r\n    <Edit \r\n        title={<ElementTitle />} \r\n        {...props} \r\n        id={id}\r\n        mutationMode=\"pessimistic\"\r\n    > \r\n        <SimpleForm {...props} redirect=\"edit\" >\r\n            \r\n            <>  \r\n            \r\n            <FormDataConsumer>\r\n                {({ formData, ...rest }) => \r\n                \r\n                <>\r\n                \r\n                <Grid container spacing={2}>\r\n                    <Grid item xs={12}>                    \r\n                        <Typography variant=\"h5\" className=\"grey\">{formData.name}</Typography>\r\n                    </Grid>     \r\n                    <Grid item xs={5}>   \r\n                        <ReferenceInput \r\n                            fullWidth\r\n                            sort={{ field: 'priority', order: 'ASC' }} \r\n                            perPage={1000} \r\n                            label={translate('ibans.name_create_remittance')} \r\n                            source=\"ibans_id\" \r\n                            reference=\"ibans\"\r\n                            filter={{ associations_id : localStorage.getItem('associations_id') }}\r\n                        >\r\n                            <SelectInput optionText=\"name\" optionValue=\"id\" validate={required()} optionText={optionRenderer} />\r\n                        </ReferenceInput> \r\n                    </Grid>  \r\n                    <Grid item xs={4}>                    \r\n                        <TextInput fullWidth source=\"name\" label={translate('common.name')} validate={[required(),validateMaxLength(100,translate('common.validation.maxLength'))]} />\r\n                    </Grid>\r\n                    <Grid item xs={3}>\r\n                        <DateInput fullWidth source=\"date_creation\" label={translate('remittances.date_creation')} />\r\n                    </Grid>                \r\n                </Grid>   \r\n\r\n                <RemittanceResume id={id} date_creation={formData.date_creation} />\r\n                <ResourceContextProvider value=\"remittances_users\" >\r\n                <List \r\n                syncWithLocation \r\n                basePath=\"/remittances_users\" \r\n                filter={{ remittances_id : id }}  \r\n                title=\"\"\r\n                bulkActionButtons={false}                \r\n                actions={<RemittancesUsersToolbar remittances_id={id} date_creation={formData.date_creation} /> }                  \r\n                filters={<RemittancesUsersFilter />} \r\n                filterDefaultValues={ {status : -1, payment_system : -1, q: \"\" }}\r\n                perPage=\"25\"\r\n                >\r\n\r\n                    <Datagrid                            \r\n                        expand={<RemittancesUsersItemsDetails edit={true} />}                                                  \r\n                    >   \r\n                        <UserLinkButton />\r\n                        <NumberField source=\"id\" label={translate('remittances.ref')} sortable={false}  />\r\n                        <FunctionField label={translate('users.first_name')} render={record => <UserFullNameTxt record={record} /> } sortable={false}  />\r\n                        <TextField label={translate('users.email')} source=\"email\" sortable={false}  />\r\n                        <NumberField source=\"quantity\" label={translate('remittances.quantity')} sortable={false} locales=\"es-ES\" options={{ style: 'currency', currency: 'EUR' }} />\r\n                        <FunctionField label={translate('remittances.payment_system')} render={RenderPaymentSystem} sortable={false}  />\r\n                        <FunctionField label={translate('remittances.status')} render={RenderStatus} sortable={false}  />\r\n                        <FunctionField label=\"\" render={record => \r\n                            <SendEmailIconStatus record={record} target={targetsEmails.RECEIVERETURNED}  />\r\n                        } sortable={false}  />\r\n                        <TextField source=\"comments\" label={translate('remittances.comments')} sortable={false}  />\r\n                        <RemittancesUsersEditButton label=\"\"/>\r\n                        \r\n                        <DeleteButton undoable={false} redirect={strRedirect} label=\"\"/>\r\n                    </Datagrid>\r\n\r\n                </List> \r\n                </ResourceContextProvider>\r\n                </>\r\n\r\n            }\r\n            </FormDataConsumer>\r\n\r\n            </>\r\n\r\n        </SimpleForm> \r\n    </Edit>\r\n);\r\n};\r\n\r\nconst useStylesRemittanceInfo = makeStyles(theme => ({\r\n    card: {\r\n        minHeight: 52,\r\n        display: 'flex',\r\n        flexDirection: 'column',\r\n        flex: '1',\r\n        '& a': {\r\n            textDecoration: 'none',\r\n            color: 'inherit',\r\n        },\r\n        marginBottom: 20\r\n    },\r\n    main: (props: Props) => ({\r\n        overflow: 'inherit',\r\n        padding: 16,\r\n        display: 'flex',\r\n        justifyContent: 'space-between',\r\n        alignItems: 'center',\r\n        '& .icon': {\r\n            color: theme.palette.type === 'dark' ? 'inherit' : '#FF6600',\r\n        },\r\n    }),\r\n    title: {},\r\n}));\r\n\r\nconst RemittanceResume = ({ id, date_creation, ...props}) => {\r\n    const classes = useStylesRemittanceInfo(props);\r\n    const translate = useTranslate(); \r\n    const dataProvider = useDataProvider();\r\n    const [info, setInfo] = useState();\r\n    const [loading, setLoading] = useState(true);\r\n    const [error, setError] = useState();\r\n    useEffect(() => {\r\n        dataProvider.getOne('remittances/info', { id: id })\r\n            .then(({ data }) => {                \r\n                setInfo(data);\r\n                setLoading(false);\r\n            })\r\n            .catch(error => {\r\n                setError(error);\r\n                setLoading(false);\r\n                alert(error);\r\n            })\r\n    }, []);\r\n\r\n    if (loading) return <MyLoading />;\r\n    if (error) return <Error />;\r\n    if (!info) return null;\r\n\r\n    let total = new Intl.NumberFormat('es-ES', { style: 'currency', currency: 'EUR' }).format(info.total);\r\n    let total_bank = new Intl.NumberFormat('es-ES', { style: 'currency', currency: 'EUR' }).format(info.total_bank);\r\n    let total_cash = new Intl.NumberFormat('es-ES', { style: 'currency', currency: 'EUR' }).format(info.total_cash);\r\n\r\n    return (\r\n        <>\r\n\r\n        <Grid container spacing={2}>\r\n\r\n            <Grid item xs={4}> \r\n                <Card className={classes.card}>\r\n                    <div className={classes.main}>\r\n                        <Box width=\"3em\" className=\"icon\">\r\n                            {createElement(EqualizerIcon, { fontSize: 'large' })}\r\n                        </Box>\r\n                        <Box textAlign=\"right\">\r\n                            <Typography className={classes.title} color=\"textSecondary\">{ (info.num_receips > 1 || info.num_receips ==0 ) ? info.num_receips + ' ' + translate('remittances.resume_total_plural') : info.num_receips + ' ' + translate('remittances.resume_total')}</Typography>\r\n                            <Typography variant=\"h5\" component=\"h2\">{total}</Typography>\r\n                        </Box>\r\n                    </div>\r\n                </Card>               \r\n            </Grid> \r\n\r\n            <Grid item xs={4}>\r\n                <Card className={classes.card}>\r\n                    <div className={classes.main}>\r\n                        <Box width=\"3em\" className=\"icon\">\r\n                            {createElement(AccountBalanceIcon, { fontSize: 'large' })}\r\n                        </Box>\r\n                        <Box textAlign=\"right\">\r\n                            <Typography className={classes.title} color=\"textSecondary\">{ (info.num_receips_bank > 1 || info.num_receips_bank === 0) ? info.num_receips_bank + ' ' + translate('remittances.resume_bank_plural') : info.num_receips_bank + ' ' + translate('remittances.resume_bank')}</Typography>\r\n                            <Typography variant=\"h5\" component=\"h2\">{total_bank}</Typography>\r\n                            { (info.num_receips_bank > 0 ) ? \r\n                                <DownloadSEPAButton remittances_id={id} date_creation={date_creation} /> : <span/>\r\n                            }\r\n                        </Box>\r\n                    </div>\r\n                </Card>\r\n            </Grid> \r\n\r\n            <Grid item xs={4}>\r\n                <Card className={classes.card}>\r\n                    <div className={classes.main}>\r\n                        <Box width=\"3em\" className=\"icon\">\r\n                            {createElement(EuroIcon, { fontSize: 'large' })}\r\n                        </Box>\r\n                        <Box textAlign=\"right\">\r\n                            <Typography className={classes.title} color=\"textSecondary\">{ (info.num_receips_cash > 1 || info.num_receips_cash === 0 ) ? info.num_receips_cash + ' ' + translate('remittances.resume_cash_plural') : info.num_receips_cash + ' ' + translate('remittances.resume_cash')}</Typography>\r\n                            <Typography variant=\"h5\" component=\"h2\">{total_cash}</Typography>\r\n                            { (info.num_receips_cash > 0 ) ? \r\n                                <DownloadPDFButton remittances_id={id} date_creation={date_creation} /> : <span/>\r\n                            }\r\n                        </Box>\r\n                    </div>\r\n                </Card>\r\n            </Grid> \r\n\r\n        </Grid>\r\n\r\n        </>\r\n    )\r\n};\r\n\r\nconst stylesRemittanceInfo = {\r\n    flex: { display: 'flex' },\r\n    flexColumn: { display: 'flex', flexDirection: 'column' },\r\n    leftCol: { flex: 1, marginRight: '0.5em' },\r\n    rightCol: { flex: 1, marginLeft: '0.5em' },\r\n    singleCol: { marginTop: '1em', marginBottom: '1em' },\r\n};\r\n\r\n/*\r\nconst Empty = ({ remittances_id , date_creation, ...props}) => {\r\n    const translate = useTranslate(); \r\n    const { basePath, resource } = useListContext();\r\n    return (\r\n        <Box textAlign=\"center\" m={1}>\r\n            <br />\r\n            <Typography variant=\"h5\" paragraph>\r\n                {translate('remittances.no_remittances_users_title')} \r\n            </Typography>\r\n            <Typography variant=\"body1\">\r\n                {translate('remittances.no_remittances_users_ask')} \r\n            </Typography>\r\n            <RemittancesUsersCreateButton remittances_id={remittances_id} date_creation={date_creation} />\r\n        </Box>\r\n    );\r\n};*/\r\n\r\nconst RemittancesUsersFilter = (props) => {\r\n    const translate = useTranslate(); \r\n    return (\r\n    <Filter {...props}>         \r\n        <SelectInput label={translate('remittances.status')} source=\"status\" choices={[\r\n            { id: 0, name: translate('remittances.statusFilter0')  },\r\n            { id: 1, name: translate('remittances.statusFilter1')  }\r\n        ]} alwaysOn resettable />  \r\n        <SelectInput label={translate('remittances.payment_system')} source=\"payment_system\" choices={[\r\n            { id: 0, name: translate('remittances.bank')  },\r\n            { id: 1, name: translate('remittances.cash')  }\r\n        ]} alwaysOn resettable />  \r\n        <TextInput label={translate('common.search')} source=\"q\" alwaysOn validate={[validateMaxLength(50,translate('common.validation.maxLength'))]} resettable />    \r\n    </Filter>\r\n);\r\n};\r\n\r\nconst CreateCustomButton = ({remittances_id, ...props}) => {\r\n\r\n    console.log('CreateCustomButton ' + remittances_id);\r\n\r\n    return (\r\n    <CreateButton\r\n        {...props}\r\n        component={Link}        \r\n        to={{\r\n            pathname: '/remittances_users/create',\r\n            state: { record: { remittances_id: remittances_id } },\r\n        }}\r\n    />\r\n);\r\n};\r\n\r\nexport function RenderPaymentSystem( record )\r\n{\r\n    const translate = useTranslate(); \r\n\r\n    if (record.payer_payment_cash === 0) \r\n        return (<Avatar sx={{ width: 35, height: 35 }} ><AccountBalanceIcon/></Avatar>);\r\n    else \r\n        return (<Avatar sx={{ width: 35, height: 35 }} ><EuroIcon/></Avatar>);\r\n\r\n}\r\n\r\n\r\n\r\nexport function RenderStatus( record )\r\n{\r\n    const translate = useTranslate(); \r\n\r\n    if (record.status === 0) \r\n        return (<CardHeader\r\n            avatar={<Avatar sx={{ bgcolor: green[500] , width: 30, height: 30 }} ><DoneIcon/></Avatar> }\r\n            title={translate('remittances.status0')}\r\n            className=\"remittanceStatusIcon\"\r\n        />);\r\n\r\n    else if (record.status === 1) \r\n        return (<CardHeader\r\n            avatar={<Avatar sx={{ bgcolor: orange[500] , width: 30, height: 30 }} ><CloseIcon/></Avatar> }\r\n            title={translate('remittances.status1')}\r\n            className=\"remittanceStatusIcon\"\r\n        />);\r\n\r\n    else if (record.status === 2)\r\n        return (<CardHeader\r\n            avatar={<Avatar sx={{ bgcolor: deepOrange[500] , width: 30, height: 30 }} ><CloseIcon/></Avatar> }\r\n            title={translate('remittances.status2')}\r\n            className=\"remittanceStatusIcon\"\r\n        />);\r\n\r\n    else if (record.status === 3)\r\n        return (<CardHeader\r\n            avatar={<Avatar sx={{ bgcolor: deepOrange[500] , width: 30, height: 30 }} ><CloseIcon/></Avatar> }\r\n            title={translate('remittances.status3')}\r\n            className=\"remittanceStatusIcon\"\r\n        />);\r\n}\r\n\r\n\r\n\r\nexport const RemittancesUsersItemsDetails = ({ id, record, resource, edit, ...props }) => {\r\n    const translate = useTranslate(); \r\n\r\n    let first_name = record.payer_first_name;\r\n    let last_name_1 = record.payer_last_name_1 ? record.payer_last_name_1 : \"\";\r\n    let last_name_2 = record.payer_last_name_2 ? record.payer_last_name_2 : \"\";\r\n    let payer_name = `${first_name} ${last_name_1} ${last_name_2}`; \r\n\r\n    let date_creation = record.date_creation.substring(8,10) + '-' + record.date_creation.substring(5,7) + '-' + record.date_creation.substring(0,4);\r\n\r\n    let tamCols = edit ? 3 : 4;\r\n\r\n    return (\r\n    <div className=\"remittanceExpand\">\r\n        { edit ? (\r\n        <Grid container spacing={2}>\r\n            <Grid item xs={4}> \r\n                { !record.users_deleted ? <RemittancesUsersRefreshButton record={record} />:<span /> }\r\n            </Grid>\r\n        </Grid> )\r\n        : \"\" }\r\n        <Grid container spacing={2}>\r\n\r\n            <Grid item xs={tamCols}>                    \r\n                <ListItem>\r\n                  <ListItemText\r\n                    primary={translate('remittances.payer')}\r\n                    secondary={payer_name}\r\n                  />\r\n                </ListItem>                \r\n            </Grid>\r\n            <Grid item xs={tamCols}>\r\n                <ListItem>\r\n                  <ListItemText\r\n                    primary={translate('remittances.nif')}\r\n                    secondary={record.payer_nif}\r\n                  />\r\n                </ListItem>\r\n            </Grid> \r\n            <Grid item xs={tamCols}>\r\n                <ListItem>\r\n                { record.payer_payment_cash ? (\r\n                  <ListItemText\r\n                    primary={translate('remittances.payment_system')}\r\n                    secondary={translate('remittances.cash')}\r\n                  />\r\n                  ) :\r\n                  (\r\n                  <ListItemText\r\n                    primary={translate('remittances.iban')}\r\n                    secondary={record.payer_iban}\r\n                  />\r\n                  )\r\n                }\r\n                </ListItem>\r\n            </Grid> \r\n            {edit ? ( \r\n            <Grid item xs={tamCols}>\r\n                <ListItem>\r\n                  <ListItemText\r\n                    primary={translate('remittances.date_creation')}\r\n                    secondary={date_creation}\r\n                  />\r\n                </ListItem>\r\n            </Grid> \r\n            ) : \"\" }\r\n\r\n        </Grid>  \r\n\r\n        { record.comments && false ? (     \r\n        <Grid container spacing={2}>\r\n            <Grid item xs={12}>                    \r\n                <ListItem>\r\n                  <ListItemText\r\n                    primary={translate('remittances.comment')}\r\n                    secondary={record.comments}\r\n                  />\r\n                </ListItem>\r\n            </Grid>\r\n        </Grid> ) : (<span />) }\r\n\r\n\r\n    <ReferenceManyField                    \r\n        reference=\"remittances_users_items\"\r\n        target=\"remittances_users_id\"\r\n        label=\"\"\r\n        fullWidth\r\n        sort={{ field: 'id', order: 'ASC' }} \r\n        perPage=\"1000\"\r\n    >\r\n        { edit ? (\r\n        <EditableDatagrid                       \r\n            createForm={<RemittancesUsersItemsForm initialValues={{ remittances_users_id: id, comment: \"\" }} />}\r\n            editForm={<RemittancesUsersItemsForm />}\r\n            label=\"\"  \r\n            className=\"remittanceExpandTable\"          \r\n        >\r\n            <TextField source=\"concept\" label={translate('remittances.concept')} sortable={false}  />            \r\n            <NumberField source=\"quantity\" label={translate('remittances.quantity')} sortable={false} locales=\"es-ES\" options={{ style: 'currency', currency: 'EUR' }} /> \r\n            <FunctionField render={record => record.is_donation ? <BooleanField source=\"is_donation\" /> : '' } label={translate('remittances.is_donation')} sortable={false}  />                \r\n        </EditableDatagrid> \r\n        ):(\r\n        <Datagrid                       \r\n            label=\"\"  \r\n            className=\"remittanceExpandTable\"          \r\n        >\r\n            <TextField source=\"concept\" label={translate('remittances.concept')} sortable={false}  />            \r\n            <NumberField source=\"quantity\" label={translate('remittances.quantity')} sortable={false} locales=\"es-ES\" options={{ style: 'currency', currency: 'EUR' }} />  \r\n            <FunctionField render={record => record.is_donation ? <BooleanField source=\"is_donation\" /> : '' } label={translate('remittances.is_donation')} sortable={false}  /> \r\n        </Datagrid> \r\n        )}\r\n\r\n    </ReferenceManyField>\r\n    <br /> \r\n    </div>\r\n    );\r\n};\r\n\r\n\r\nconst RemittancesUsersItemsForm= (props) => {\r\n    const translate = useTranslate();   \r\n    const { values } = useFormState();\r\n    return (\r\n    <RowForm {...props}  >\r\n        <TextInput fullWidth source=\"concept\" label={translate('remittances.concept')} validate={[required(),validateMaxLength(100,translate('common.validation.maxLength'))]} />  \r\n        <NumberInput fullWidth source=\"quantity\" label={translate('remittances.quantity')} validate={[required(),validateInteger(translate('common.validation.number'))]} />  \r\n        <BooleanInput source=\"is_donation\" label=\"\" />    \r\n    </RowForm>\r\n);\r\n};\r\n\r\n\r\n\r\nconst CustomToolbarCreateRemittance = props => (\r\n    <Toolbar {...props} >\r\n        <SaveButton />\r\n    </Toolbar>\r\n);\r\n\r\n\r\nexport const RemittancesCreate = props => {    \r\n    const today = new Date().toISOString().slice(0, 10);\r\n    const translate = useTranslate();   \r\n\r\n    let default_remittance_name = translate('remittances.default_name') + today;\r\n\r\n    const redirect = (basePath, id, data) => `/remittances/${data.id}`;\r\n\r\n    return (\r\n    <Create {...props} >\r\n        <SimpleForm \r\n            toolbar={<CustomToolbarCreateRemittance />}\r\n            redirect={redirect}\r\n            initialValues={{ associations_id: localStorage.getItem('associations_id') ,type: 0,status: 0,date_creation: today, name: default_remittance_name }}\r\n            \r\n        >\r\n            <Grid container spacing={1}>\r\n                <Grid item xs={12}>                    \r\n                    <Typography variant=\"h5\" className=\"grey\">{translate('remittances.create_remittance')}</Typography>\r\n                </Grid>     \r\n                <Grid item xs={5}>\r\n                    <ReferenceInput \r\n                        fullWidth\r\n                        sort={{ field: 'priority', order: 'ASC' }} \r\n                        perPage={1000} \r\n                        label={translate('ibans.name_create_remittance')} \r\n                        source=\"ibans_id\" \r\n                        reference=\"ibans\"\r\n                        filter={{ associations_id : localStorage.getItem('associations_id') }}\r\n                    >\r\n                        <SelectInput optionText=\"name\" optionValue=\"id\" validate={required()} optionText={optionRenderer} />\r\n                    </ReferenceInput> \r\n                </Grid>\r\n                <Grid item xs={4}>                    \r\n                    <TextInput fullWidth source=\"name\" label={translate('common.name')} validate={[required(),validateMaxLength(100,translate('common.validation.maxLength'))]}  />\r\n                </Grid>\r\n                <Grid item xs={3}>\r\n                    <DateInput fullWidth source=\"date_creation\" label={translate('remittances.date_creation')} />\r\n                </Grid> \r\n                <Grid item xs={12}>                    \r\n                    <ReferenceArrayInput\r\n                        source=\"groups_list\"\r\n                        reference=\"groups_with_quotes\"\r\n                        filter={{ associations_id : localStorage.getItem('associations_id') }}\r\n                        perPage={1000}\r\n                    >\r\n                        <CheckboxGroupInput optionText=\"name\" label={translate('remittances.groups_with_quotes')} row={false} className=\"checkboxGroupInputCompacted\" />\r\n                    </ReferenceArrayInput>        \r\n                </Grid>\r\n                <Grid item xs={12}>                    \r\n                    <BooleanInput label={translate('remittances.check_partial_quotes')} source=\"partial_quotes\" />                   \r\n                </Grid>\r\n                <Grid item xs={12}>                    \r\n                    <ReferenceArrayInput\r\n                        source=\"returns_list\"\r\n                        reference=\"remittances_users_returns\"\r\n                        filter={{ associations_id : localStorage.getItem('associations_id') }}\r\n                        perPage={1000}\r\n                    >\r\n                        <CheckboxGroupInput \r\n                            optionText=\"first_name\" \r\n                            label={translate('remittances.returns')} \r\n                            optionText={returnsRenderer}                            \r\n                            row={false}\r\n                            className=\"checkboxGroupInputCompacted\"                            \r\n                        />\r\n                    </ReferenceArrayInput>        \r\n                </Grid>\r\n\r\n            </Grid>   \r\n\r\n        </SimpleForm>\r\n    </Create>\r\n);\r\n};\r\n\r\nconst optionRenderer = choice => {\r\n    let str = '';\r\n    if (choice.name) str+=choice.name;   \r\n    //if (choice.ordering) str+=' | ' + choice.ordering;  \r\n    //if (choice.iban) str+=' | ' + choice.iban;\r\n    return str;\r\n};\r\n\r\nconst returnsRenderer = choice =>\r\n{\r\n    let date_creation = choice.date_creation.substring(8,10) + '-' + choice.date_creation.substring(5,7) + '-' + choice.date_creation.substring(0,4);\r\n\r\n    return (<>{date_creation} | {choice.ibans_name} | {choice.name} | <UserFullNameTxt record={choice} /> | {choice.sum_quantity}€ </>);  \r\n} \r\n\r\nconst useStyles = makeStyles({\r\n    comment: {\r\n        maxWidth: '100%',\r\n        overflow: 'hidden',\r\n        textOverflow: 'ellipsis',\r\n        whiteSpace: 'nowrap',\r\n    },\r\n    tab: {\r\n        maxWidth: '100%',\r\n        display: 'block',\r\n    },\r\n});\r\n\r\n\r\n\r\n\r\n\r\nconst ElementTitle = ({ record }) => {\r\n    const translate = useTranslate(); \r\n    return <span>{translate('common.edit')} {record ? `\"${record.first_name}\"` : ''}</span>;\r\n};\r\n\r\n\r\n\r\n","import * as React from 'react';\r\n\r\nimport {\r\n  Datagrid,\r\n  TextField,\r\n  ReferenceInput,\r\n  SelectInput,\r\n  TextInput, \r\n  ReferenceManyField,\r\n  useTranslate,\r\n  required,\r\n  FunctionField, DateField, DateInput\r\n} from 'react-admin';\r\n\r\nimport { EditableDatagrid, RowForm } from '@react-admin/ra-editable-datagrid';\r\n\r\n\r\n\r\nimport { useFormState } from 'react-final-form';\r\nimport { UserAvatarIcon, UserFullNameTxt, UserInput } from '../components/User';\r\n\r\n\r\nimport { validateMaxLength  } from './../components/Validator';\r\n\r\nexport const UsersContactsList= ({ ...props }) => {\r\n  const translate = useTranslate();   \r\n    \r\n  const target = props.rel ? 'users_rel_id' : 'users_id';\r\n    \r\n  const responsabilities = props.responsabilities ? true : false;\r\n    \r\n  const initial_values = props.rel ? { users_rel_id: props.users_id , comment: '' } : { users_id: props.users_id , comment: '' };\r\n\r\n  return (\r\n           \r\n    <ReferenceManyField                    \r\n      reference=\"users_contacts\"\r\n      target={target}\r\n      label=\"\"\r\n      perPage={1000}\r\n      filter={{ responsabilities : responsabilities }}\r\n    >\r\n\r\n      <EditableDatagrid                       \r\n        createForm={<UserContactForm initialValues={initial_values} edit={false} rel={props.rel} responsabilities={responsabilities} />}\r\n        editForm={<UserContactForm edit={true} rel={props.rel} responsabilities={responsabilities} />}\r\n        label=\"\"\r\n        hasCreate\r\n        fullWidth\r\n      >           \r\n        {props.rel ?\r\n          <FunctionField label=\"\" render={record => <UserAvatarIcon record={record.user} /> } /> \r\n          :\r\n          <FunctionField label=\"\" render={record => <UserAvatarIcon record={record.user_rel} /> } /> \r\n        }                        \r\n        <FunctionField label={translate('users.first_name')} render={record => <UserFullNameTxt record={props.rel ? record.user : record.user_rel} /> } /> \r\n        {responsabilities ? \r\n          <TextField source=\"responsability_name\" label={translate('users_groups.responsability')} sortable={false} />\r\n          : null }\r\n        {responsabilities ? \r\n          <DateField source=\"date_join\" label={translate('users_groups.date_join')} sortable={false}/>\r\n          : null }\r\n        {responsabilities ? \r\n          <DateField source=\"date_left\" label={translate('users_groups.date_left')} sortable={false}/>\r\n          : null }\r\n        <TextField source=\"comment\" label={translate('common.comment')} onClick={ (e) => { e.stopPropagation(); } } sortable={false} />   \r\n      </EditableDatagrid>\r\n\r\n    </ReferenceManyField> \r\n  );\r\n};\r\n\r\nconst UserContactForm= ({edit, rel, ...props}) => {\r\n  const translate = useTranslate();   \r\n  const { values } = useFormState();\r\n\r\n  const user_type = rel ? 1 : 0;\r\n  const source = rel ? 'users_id' : 'users_rel_id';\r\n\r\n  return (\r\n    <RowForm {...props}  >\r\n      <span />\r\n      <UserInput source={source} user_type={user_type} disabled={edit} label={translate('common.name')} allowEmpty={false} required={true} />\r\n      {props.responsabilities ? \r\n        <ReferenceInput label={translate('users_groups.responsability')} source=\"responsabilities_id\" reference=\"responsabilities\" perPage={100} sort={{ field: 'priority', order: 'ASC' }} perPage={1000} >\r\n          <SelectInput fullWidth optionText=\"name\" optionValue=\"id\" validate={required()} />\r\n        </ReferenceInput> \r\n        : null }\r\n      {props.responsabilities ? \r\n        <DateInput fullWidth source=\"date_join\" label={translate('users_groups.date_join')} />\r\n        : null }\r\n      {props.responsabilities ? \r\n        <DateInput fullWidth source=\"date_left\" label={translate('users_groups.date_left')} />\r\n        : null }\r\n      <TextInput source=\"comment\" label={translate('common.comment')} validate={[validateMaxLength(255,translate('common.validation.maxLength'))]} />  \r\n    </RowForm>\r\n  );\r\n};\r\n\r\n\r\nexport const UsersContactsShow= ({ reference, rowClick, rel, ...props }) => {\r\n  const translate = useTranslate();   \r\n    \r\n  const target = rel ? 'users_rel_id' : 'users_id';\r\n  const responsabilities = props.responsabilities ? true : false;\r\n  const only_valid_contacts = props.only_valid_contacts ? props.only_valid_contacts : 0;\r\n\r\n  const postRowClick = (id, basePath, record) => {\r\n    if (rel)\r\n      return '/' + rowClick + '/' + record.users_id + '/show';\r\n    else\r\n      return '/' + rowClick + '/' + record.users_rel_id + '/show';\r\n  };\r\n        \r\n  return (\r\n           \r\n    <ReferenceManyField                    \r\n      reference={reference}\r\n      target={target}\r\n      label=\"\"\r\n      perPage={1000}\r\n      filter={{ responsabilities : responsabilities, only_valid_contacts : only_valid_contacts }}\r\n    >\r\n\r\n      <Datagrid                       \r\n        label=\"\"\r\n        fullWidth\r\n        className=\"users_remittances_list header_grey6\"\r\n        rowClick={postRowClick}\r\n      >\r\n        {rel ?\r\n          <FunctionField label=\"\" render={record => <UserAvatarIcon record={record.user} /> } /> \r\n          :\r\n          <FunctionField label=\"\" render={record => <UserAvatarIcon record={record.user_rel} /> } /> \r\n        }                        \r\n        <FunctionField label={translate('users.first_name')} render={record => <UserFullNameTxt record={rel ? record.user : record.user_rel} /> } /> \r\n                        \r\n        {responsabilities ? \r\n          <TextField source=\"responsability_name\" label={translate('users_groups.responsability')} sortable={false} />\r\n          : null }\r\n        {responsabilities ? \r\n          <DateField source=\"date_join\" label={translate('users_groups.date_join')} sortable={false} />\r\n          : null }\r\n        {responsabilities ? \r\n          <DateField source=\"date_left\" label={translate('users_groups.date_left')} sortable={false} />\r\n          : null }\r\n                        \r\n        <TextField source=\"comment\" label={translate('common.comment')} onClick={ (e) => { e.stopPropagation(); } } sortable={false} />   \r\n      </Datagrid>\r\n\r\n    </ReferenceManyField> \r\n\r\n  );\r\n};\r\n","import * as React from 'react';\r\n\r\nimport {\r\n  Datagrid,\r\n  TextField,\r\n  TextInput, \r\n  ReferenceManyField,\r\n  useTranslate\r\n} from 'react-admin';\r\n\r\nimport { EditableDatagrid, RowForm } from '@react-admin/ra-editable-datagrid';\r\n\r\n\r\n\r\nimport { useFormState } from 'react-final-form';\r\n\r\n\r\nimport { validateMaxLength, validateEmail  } from './../components/Validator';\r\n\r\nexport const UsersEmailsList= ({ ...props }) => {\r\n  const translate = useTranslate();   \r\n\r\n  return (\r\n           \r\n    <ReferenceManyField                    \r\n      reference=\"users_emails\"\r\n      target=\"users_id\"\r\n      label=\"\"\r\n      perPage={1000}\r\n    >\r\n\r\n      <EditableDatagrid                       \r\n        createForm={<UserEmailForm initialValues={{ users_id: props.users_id , comment: '', priority: 0 }} edit={false} />}\r\n        editForm={<UserEmailForm edit={true} />}\r\n        label=\"\"\r\n        hasCreate\r\n        fullWidth\r\n      >                        \r\n        <TextField source=\"email\" label={translate('common.email')} sortable={false} />   \r\n        <TextField source=\"comment\" label={translate('common.comment')} sortable={false} />   \r\n      </EditableDatagrid>\r\n\r\n    </ReferenceManyField> \r\n\r\n  );\r\n};\r\n\r\nconst UserEmailForm= ({edit, ...props}) => {\r\n  const translate = useTranslate();   \r\n  const { values } = useFormState();\r\n\r\n  return (\r\n    <RowForm {...props}  >\r\n      <TextInput source=\"email\" label={translate('common.email')} validate={[validateMaxLength(100,translate('common.validation.maxLength')),validateEmail()]} />   \r\n      <TextInput source=\"comment\" label={translate('common.comment')} validate={[validateMaxLength(255,translate('common.validation.maxLength'))]} />  \r\n    </RowForm>\r\n  );\r\n};\r\n\r\n\r\nexport const UsersEmailsShow= ({ reference, ...props }) => {\r\n  const translate = useTranslate();   \r\n    \r\n  return (\r\n           \r\n    <ReferenceManyField                    \r\n      reference={reference}\r\n      target=\"users_id\"\r\n      label=\"\"\r\n      perPage={1000}\r\n    >\r\n\r\n      <Datagrid               \r\n        label=\"\"\r\n        hasCreate\r\n        fullWidth\r\n        className=\"users_remittances_list header_grey6\"\r\n      >\r\n        <TextField source=\"email\" label={translate('common.email')} sortable={false} />   \r\n        <TextField source=\"comment\" label={translate('common.comment')} sortable={false} />   \r\n      </Datagrid>\r\n\r\n    </ReferenceManyField> \r\n\r\n  );\r\n};\r\n","import React, { useState } from 'react';\r\n\r\nimport { SaveButton ,\r\n  List,\r\n  Datagrid,\r\n  TextField,\r\n  DeleteButton,\r\n  useTranslate,\r\n  required,    \r\n  useCreate,\r\n  useUpdate,\r\n  useNotify,\r\n  FormWithRedirect,useRefresh,\r\n  Button,\r\n  FunctionField, TopToolbar, NumberInput, ResourceContextProvider, TabbedShowLayout, Tab\r\n} from 'react-admin';\r\n\r\n\r\nimport EditIcon from '@material-ui/icons/Edit';\r\n\r\nimport { useStyles  } from '../common/styles';\r\n\r\nimport Typography from '@material-ui/core/Typography';\r\n\r\n\r\n\r\nimport Divider from '@mui/material/Divider';\r\n\r\nimport IconContentAdd from '@material-ui/icons/Add';\r\nimport IconCancel from '@material-ui/icons/Cancel';\r\n\r\nimport Dialog from '@material-ui/core/Dialog';\r\nimport DialogTitle from '@material-ui/core/DialogTitle';\r\nimport DialogContent from '@material-ui/core/DialogContent';\r\nimport DialogActions from '@material-ui/core/DialogActions';\r\n\r\n\r\nimport { TextFieldShow } from '../components/TextFieldShow';\r\n\r\nimport Grid from '@mui/material/Grid';\r\n\r\n\r\nimport { validateInteger, validateDouble  } from './../components/Validator';\r\n\r\nexport const UsersEconomicDataList = (props) => {\r\n  const translate = useTranslate(); \r\n    \r\n  let strRedirect =  `/users/${props.users_id}/more_federation`; \r\n    \r\n  return (\r\n           \r\n    <ResourceContextProvider value=\"users_economic_data\" >\r\n      <List \r\n        syncWithLocation \r\n        basePath=\"/users_economic_data\" \r\n        filter={{ users_id : props.users_id }}  \r\n        title=\"\"\r\n        bulkActionButtons={false}                \r\n        actions={<UsersEconomicDataToolbar users_id={props.users_id} /> }  \r\n        perPage={1000}\r\n        sort={{ field: 'year', order: 'ASC' }} \r\n        empty={<UsersEconomicDataToolbar users_id={props.users_id} /> } \r\n        pagination={false}\r\n      >\r\n\r\n        <Datagrid   \r\n          expand={<UsersEconomicDataDetails />} \r\n          className=\"header_grey6\"\r\n          label=\"\"\r\n          fullWidth\r\n        >\r\n          <TextField source=\"year\" label={translate('common.year')} sortable={false} /> \r\n          <TextField label={translate('users_economic_data.avg_quote')} source=\"avg_quote\" sortable={false} />\r\n          <FunctionField label={translate('users_economic_data.incomings')} render={record => <RenderEconomicDataTotalIncoming record={record} /> } sortable={false} />\r\n          <FunctionField label={translate('users_economic_data.expenses')} render={record => <RenderEconomicDataTotalExpenses record={record} /> } sortable={false} />\r\n          <FunctionField label={translate('users_economic_data.inversion')} render={record => <RenderEconomicDataTotalInversion record={record} /> } sortable={false} />\r\n          <FunctionField label={translate('users_economic_data.total')} render={record => <RenderEconomicDataTotal record={record} /> } sortable={false} />                \r\n          <UsersEconomicDataEditButton label=\"\"/>\r\n          <DeleteButton undoable={false} redirect={strRedirect} label=\"\"/>\r\n        </Datagrid>\r\n\r\n      </List> \r\n    </ResourceContextProvider>\r\n\r\n  );\r\n};\r\n\r\n\r\nexport const UsersEconomicDataEditButton = ({ ...props }) => {\r\n\r\n  const [showDialog, setShowDialog] = useState(false);\r\n  const notify = useNotify();\r\n  const refresh = useRefresh();    \r\n  const translate = useTranslate();  \r\n\r\n  const [update, { loading, error }] = useUpdate();\r\n\r\n  const handleClick = () => {\r\n    setShowDialog(true);\r\n  };\r\n\r\n  const handleCloseClick = () => {\r\n    setShowDialog(false);\r\n  };\r\n                        \r\n  const handleSubmit = async values => {\r\n    update(\r\n      { \r\n        type: 'update', \r\n        resource: 'users_economic_data', \r\n        payload : { id: values.id, data : \r\n                {       users_id: values.users_id,\r\n                  year : values.year, \r\n                  avg_quote: values.avg_quote,\r\n                  members: values.members, \r\n                  services: values.services, \r\n                  subsidies: values.subsidies,\r\n                  rentals : values.rentals, \r\n                  products: values.products, \r\n                  privates: values.privates, \r\n                  others: values.others,\r\n                  exp_rentals: values.exp_rentals,\r\n                  exp_workers: values.exp_workers,\r\n                  exp_material: values.exp_material,\r\n                  exp_professionals: values.exp_professionals,\r\n                  exp_groups: values.exp_groups,\r\n                  exp_supplies: values.exp_supplies,\r\n                  exp_maintenance: values.exp_maintenance,\r\n                  exp_marketing: values.exp_marketing,\r\n                  exp_others: values.exp_others ,\r\n                  inv_building: values.inv_building,\r\n                  inv_theatre: values.inv_theatre,\r\n                  inv_bar: values.inv_bar,\r\n                  inv_accessibility: values.inv_accessibility,\r\n                  inv_security: values.inv_security,\r\n                  inv_others: values.inv_others\r\n                } }\r\n      },\r\n      {\r\n        onSuccess: ({ data }) => {\r\n          setShowDialog(false);\r\n          refresh();\r\n        },\r\n        onFailure: ( error ) => {\r\n          notify(error.message, 'error');\r\n        }\r\n      }\r\n    );\r\n  };    \r\n\r\n  return (\r\n    <>\r\n      <Button onClick={handleClick} label=\"\" startIcon={<EditIcon />} />\r\n\r\n      <Dialog\r\n        fullWidth\r\n        open={showDialog}\r\n        onClose={handleCloseClick}\r\n      >\r\n        <DialogTitle>{translate('users_economic_data.edit_title')}</DialogTitle>\r\n\r\n        <FormWithRedirect\r\n          resource=\"\"\r\n          save={handleSubmit}\r\n          initialValues={{ id : props.record.id, \r\n            users_id: props.record.users_id,\r\n            year : props.record.year, \r\n            avg_quote : props.record.avg_quote,\r\n            members: props.record.members, \r\n            services: props.record.services,\r\n            subsidies: props.record.subsidies,\r\n            rentals: props.record.rentals,\r\n            products: props.record.products,\r\n            privates: props.record.privates,\r\n            others: props.record.others,\r\n            exp_rentals: props.record.exp_rentals,\r\n            exp_workers: props.record.exp_workers,\r\n            exp_material: props.record.exp_material,\r\n            exp_professionals: props.record.exp_professionals,\r\n            exp_groups: props.record.exp_groups,\r\n            exp_supplies: props.record.exp_supplies,\r\n            exp_maintenance: props.record.exp_maintenance,\r\n            exp_marketing: props.record.exp_marketing,\r\n            exp_others: props.record.exp_others ,\r\n            inv_building: props.record.inv_building,\r\n            inv_theatre: props.record.inv_theatre,\r\n            inv_bar: props.record.inv_bar,\r\n            inv_accessibility: props.record.inv_accessibility,\r\n            inv_security: props.record.inv_security,\r\n            inv_others: props.record.inv_others\r\n          }}\r\n          render={({\r\n            handleSubmitWithRedirect,\r\n            pristine,\r\n            saving\r\n          }) => (\r\n            <>\r\n              <UsersEconomicDataForm edit={true} />\r\n                            \r\n              <DialogActions>\r\n                <Button label=\"ra.action.cancel\" onClick={handleCloseClick} disabled={loading} >\r\n                  <IconCancel />\r\n                </Button>\r\n                <SaveButton\r\n                  handleSubmitWithRedirect={\r\n                    handleSubmitWithRedirect\r\n                  }\r\n                  pristine={pristine}\r\n                  saving={saving}\r\n                  disabled={loading}\r\n                />\r\n              </DialogActions>\r\n            </>\r\n          )}\r\n        />\r\n      </Dialog>\r\n    </>\r\n  );\r\n};\r\n\r\nconst RenderEconomicDataTotalIncoming = ({ record, ...props }) => {\r\n    \r\n  let total_incoming = record.members + record.services + record.subsidies + record.rentals + record.products + record.privates + record.others;\r\n  return (        \r\n    total_incoming\r\n  );\r\n};\r\n\r\nconst RenderEconomicDataTotalExpenses = ({ record, ...props }) => {\r\n    \r\n  let total_expenses = record.exp_rentals + record.exp_workers + record.exp_material + record.exp_professionals + record.exp_groups + record.exp_supplies + record.exp_maintenance + record.exp_marketing + record.exp_others;\r\n  return (        \r\n    total_expenses\r\n  );\r\n};\r\n\r\nconst RenderEconomicDataTotalInversion = ({ record, ...props }) => {\r\n    \r\n  let total_inversion = record.inv_building + record.inv_theatre + record.inv_bar + record.inv_accessibility + record.inv_security + record.inv_others;\r\n  return (        \r\n    total_inversion\r\n  );\r\n};\r\n\r\nconst RenderEconomicDataTotal = ({ record, ...props }) => {\r\n    \r\n  let total_incoming = record.members + record.services + record.subsidies + record.rentals + record.products + record.privates + record.others;\r\n  let total_expenses = record.exp_rentals + record.exp_workers + record.exp_material + record.exp_professionals + record.exp_groups + record.exp_supplies + record.exp_maintenance + record.exp_marketing + record.exp_others;\r\n  let total = total_incoming - total_expenses;\r\n  return (        \r\n    total\r\n  );\r\n};\r\n\r\nexport const UsersEconomicDataShow = ({ ...props }) => {\r\n  const translate = useTranslate();   \r\n\r\n  return (\r\n        \r\n    <ResourceContextProvider value=\"users_economic_data\" >\r\n      <List \r\n        syncWithLocation \r\n        basePath=\"/users_economic_data\" \r\n        filter={{ users_id : props.users_id }}  \r\n        title=\"\"\r\n        bulkActionButtons={false}                                \r\n        perPage={1000}\r\n        sort={{ field: 'year', order: 'ASC' }} \r\n        pagination={false}\r\n        actions={false}\r\n        empty={<></>}\r\n        className=\"users_remittances_list\"\r\n      >                            \r\n        <Datagrid\r\n          expand={<UsersEconomicDataDetails />} \r\n          className=\"header_grey6\"\r\n          fullWidth\r\n        >   \r\n          <TextField source=\"year\" label={translate('common.year')} sortable={false}  />     \r\n          <TextField label={translate('users_economic_data.avg_quote')} source=\"avg_quote\" sortable={false} />\r\n          <FunctionField label={translate('users_economic_data.incomings')} render={record => <RenderEconomicDataTotalIncoming record={record} /> } sortable={false} />\r\n          <FunctionField label={translate('users_economic_data.expenses')} render={record => <RenderEconomicDataTotalExpenses record={record} /> } sortable={false} />\r\n          <FunctionField label={translate('users_economic_data.inversion')} render={record => <RenderEconomicDataTotalInversion record={record} /> } sortable={false} />\r\n          <FunctionField label={translate('users_economic_data.total')} render={record => <RenderEconomicDataTotal record={record} /> } sortable={false} />                  \r\n        </Datagrid>\r\n\r\n      </List> \r\n\r\n    </ResourceContextProvider>            \r\n\r\n  );\r\n};\r\n\r\nexport const UsersEconomicDataToolbar = ({ ...props }) => {\r\n\r\n  return (\r\n        \r\n    <TopToolbar>\r\n      <UsersEconomicDataCreateButton users_id={props.users_id} />\r\n    </TopToolbar>\r\n        \r\n  );\r\n};\r\n\r\n\r\nexport const UsersEconomicDataCreateButton = ({ ...props }) => {\r\n\r\n  const [showDialog, setShowDialog] = useState(false);\r\n  const [create, { loading }] = useCreate('users_economic_data');\r\n  const notify = useNotify();\r\n  const refresh = useRefresh();    \r\n  const translate = useTranslate();  \r\n    \r\n\r\n  const handleClick = () => {\r\n    setShowDialog(true);\r\n  };\r\n\r\n  const handleCloseClick = () => {\r\n    setShowDialog(false);\r\n  };\r\n\r\n  const handleSubmit = async values => {\r\n    create(\r\n      { payload: { data: values } },\r\n      {\r\n        onSuccess: ({ data }) => {\r\n          setShowDialog(false);\r\n          refresh();\r\n        },\r\n        onFailure: ( error ) => {\r\n          notify(error.message, 'error');\r\n        }\r\n      }\r\n    );\r\n  };\r\n\r\n\r\n  return (\r\n    <>            \r\n      <Button onClick={handleClick} label={translate('users_economic_data.create_button')}>\r\n        <IconContentAdd />                \r\n      </Button>\r\n\r\n      <Dialog\r\n        fullWidth\r\n        open={showDialog}\r\n        onClose={handleCloseClick}\r\n        aria-label={translate('users_economic_data.create')}\r\n      >\r\n        <DialogTitle>{translate('users_economic_data.create')}</DialogTitle>\r\n\r\n        <FormWithRedirect\r\n          resource=\"users_economic_data\"\r\n          save={handleSubmit}\r\n          initialValues={{ users_id : props.users_id }}\r\n          render={({\r\n            handleSubmitWithRedirect,\r\n            pristine,\r\n            saving\r\n          }) => (\r\n            <>\r\n              <UsersEconomicDataForm edit={false} />\r\n                            \r\n              <DialogActions>\r\n                <Button label=\"ra.action.cancel\" onClick={handleCloseClick} disabled={loading} >\r\n                  <IconCancel />\r\n                </Button>\r\n                <SaveButton\r\n                  handleSubmitWithRedirect={\r\n                    handleSubmitWithRedirect\r\n                  }\r\n                  pristine={pristine}\r\n                  saving={saving}\r\n                  disabled={loading}\r\n                />\r\n              </DialogActions>\r\n            </>\r\n          )}\r\n        />\r\n      </Dialog>\r\n    </>\r\n  );\r\n};\r\n\r\nconst UsersEconomicDataForm = ({ edit, ...props }) => {\r\n  const translate = useTranslate(); \r\n  const classes = useStyles();\r\n    \r\n  return (\r\n    <DialogContent className=\"users_economic_data_form\">\r\n      <br />\r\n      <Grid container spacing={2} >\r\n        <Grid item xs={9}>     \r\n          <Typography className=\"grey8\">{translate('common.year')}                                 \r\n          </Typography>\r\n        </Grid> \r\n        <Grid item xs={3}>  \r\n          { edit ? (\r\n            <NumberInput label=\"\" fullWidth source=\"year\" step={1} disabled />                                        \r\n          ) : (\r\n            <NumberInput label=\"\" fullWidth source=\"year\" step={1} validate={[required(),validateInteger(translate('common.validation.number'))]} />                                        \r\n          )}\r\n        </Grid> \r\n      </Grid>\r\n      \r\n      <Grid container spacing={2} >\r\n        <Grid item xs={9}>     \r\n          <Typography className=\"grey8\">{translate('users_economic_data.avg_quote')}                                 \r\n          </Typography>\r\n        </Grid> \r\n        <Grid item xs={3}>  \r\n          <NumberInput label=\"\" fullWidth source=\"avg_quote\" step={1} validate={[validateDouble(translate('common.validation.number'))]} /> \r\n        </Grid> \r\n      </Grid>\r\n                \r\n      <TabbedShowLayout\r\n        syncWithLocation={false}>\r\n           \r\n        <Tab\r\n          label={translate('users_economic_data.incomings')}\r\n          contentClassName={classes.tab}\r\n          fullWidth\r\n          path=\"\"\r\n        >          \r\n          <br />                    \r\n          <Grid container spacing={2}>\r\n            <Grid item xs={9}>     \r\n              <Typography className=\"grey8\">{translate('users_economic_data.members')}                                   \r\n              </Typography>\r\n            </Grid> \r\n            <Grid item xs={3}>     \r\n              <NumberInput label=\"\" fullWidth source=\"members\" parse={value => value ? value : 0 } validate={[validateDouble(translate('common.validation.number'))]} />                                        \r\n            </Grid> \r\n          </Grid>\r\n          <Grid container spacing={2}>\r\n            <Grid item xs={9}>     \r\n              <Typography className=\"grey8\">{translate('users_economic_data.services')}                                   \r\n              </Typography>\r\n            </Grid> \r\n            <Grid item xs={3}>     \r\n              <NumberInput label=\"\" fullWidth source=\"services\" parse={value => value ? value : 0 } validate={[validateDouble(translate('common.validation.number'))]} />                                        \r\n            </Grid> \r\n          </Grid>\r\n          <Grid container spacing={2}>\r\n            <Grid item xs={9}>     \r\n              <Typography className=\"grey8\">{translate('users_economic_data.subsidies')}                                   \r\n              </Typography>\r\n            </Grid> \r\n            <Grid item xs={3}>     \r\n              <NumberInput label=\"\" fullWidth source=\"subsidies\" parse={value => value ? value : 0 } validate={[validateDouble(translate('common.validation.number'))]} />                                        \r\n            </Grid> \r\n          </Grid>\r\n          <Grid container spacing={2}>\r\n            <Grid item xs={9}>     \r\n              <Typography className=\"grey8\">{translate('users_economic_data.rentals')}                                   \r\n              </Typography>\r\n            </Grid> \r\n            <Grid item xs={3}>     \r\n              <NumberInput label=\"\" fullWidth source=\"rentals\" parse={value => value ? value : 0 } validate={[validateDouble(translate('common.validation.number'))]} />                                        \r\n            </Grid> \r\n          </Grid>\r\n          <Grid container spacing={2}>\r\n            <Grid item xs={9}>     \r\n              <Typography className=\"grey8\">{translate('users_economic_data.products')}                                   \r\n              </Typography>\r\n            </Grid> \r\n            <Grid item xs={3}>     \r\n              <NumberInput label=\"\" fullWidth source=\"products\" parse={value => value ? value : 0 } validate={[validateDouble(translate('common.validation.number'))]} />                                        \r\n            </Grid> \r\n          </Grid>\r\n          <Grid container spacing={2}>\r\n            <Grid item xs={9}>     \r\n              <Typography className=\"grey8\">{translate('users_economic_data.privates')}                                   \r\n              </Typography>\r\n            </Grid> \r\n            <Grid item xs={3}>     \r\n              <NumberInput label=\"\" fullWidth source=\"privates\" parse={value => value ? value : 0 } validate={[validateDouble(translate('common.validation.number'))]} />                                        \r\n            </Grid> \r\n          </Grid>\r\n          <Grid container spacing={2}>\r\n            <Grid item xs={9}>     \r\n              <Typography className=\"grey8\">{translate('users_economic_data.others')}                                   \r\n              </Typography>\r\n            </Grid> \r\n            <Grid item xs={3}>     \r\n              <NumberInput label=\"\" fullWidth source=\"others\" parse={value => value ? value : 0 } validate={[validateDouble(translate('common.validation.number'))]} />                                        \r\n            </Grid> \r\n          </Grid>\r\n        </Tab>\r\n        <Tab\r\n          label={translate('users_economic_data.expenses')}\r\n          contentClassName={classes.tab}\r\n          fullWidth\r\n          path=\"\"\r\n        >      \r\n          <br />\r\n          <Grid container spacing={2}>\r\n            <Grid item xs={9}>     \r\n              <Typography className=\"grey8\">{translate('users_economic_data.exp_rentals')}                                   \r\n              </Typography>\r\n            </Grid> \r\n            <Grid item xs={3}>     \r\n              <NumberInput label=\"\" fullWidth source=\"exp_rentals\" parse={value => value ? value : 0 } validate={[validateDouble(translate('common.validation.number'))]} />                                        \r\n            </Grid> \r\n          </Grid>\r\n          <Grid container spacing={2}>\r\n            <Grid item xs={9}>     \r\n              <Typography className=\"grey8\">{translate('users_economic_data.exp_workers')}                                   \r\n              </Typography>\r\n            </Grid> \r\n            <Grid item xs={3}>     \r\n              <NumberInput label=\"\" fullWidth source=\"exp_workers\" parse={value => value ? value : 0 } validate={[validateDouble(translate('common.validation.number'))]} />                                        \r\n            </Grid> \r\n          </Grid>\r\n          <Grid container spacing={2}>\r\n            <Grid item xs={9}>     \r\n              <Typography className=\"grey8\">{translate('users_economic_data.exp_material')}                                   \r\n              </Typography>\r\n            </Grid> \r\n            <Grid item xs={3}>     \r\n              <NumberInput label=\"\" fullWidth source=\"exp_material\" parse={value => value ? value : 0 } validate={[validateDouble(translate('common.validation.number'))]} />                                        \r\n            </Grid> \r\n          </Grid>\r\n          <Grid container spacing={2}>\r\n            <Grid item xs={9}>     \r\n              <Typography className=\"grey8\">{translate('users_economic_data.exp_professionals')}                                   \r\n              </Typography>\r\n            </Grid> \r\n            <Grid item xs={3}>     \r\n              <NumberInput label=\"\" fullWidth source=\"exp_professionals\" parse={value => value ? value : 0 } validate={[validateDouble(translate('common.validation.number'))]} />                                        \r\n            </Grid> \r\n          </Grid>\r\n          <Grid container spacing={2}>\r\n            <Grid item xs={9}>     \r\n              <Typography className=\"grey8\">{translate('users_economic_data.exp_groups')}                                   \r\n              </Typography>\r\n            </Grid> \r\n            <Grid item xs={3}>     \r\n              <NumberInput label=\"\" fullWidth source=\"exp_groups\" parse={value => value ? value : 0 } validate={[validateDouble(translate('common.validation.number'))]} />                                        \r\n            </Grid> \r\n          </Grid>\r\n          <Grid container spacing={2}>\r\n            <Grid item xs={9}>     \r\n              <Typography className=\"grey8\">{translate('users_economic_data.exp_supplies')}                                   \r\n              </Typography>\r\n            </Grid> \r\n            <Grid item xs={3}>     \r\n              <NumberInput label=\"\" fullWidth source=\"exp_supplies\" parse={value => value ? value : 0 } validate={[validateDouble(translate('common.validation.number'))]} />                                        \r\n            </Grid> \r\n          </Grid>\r\n          <Grid container spacing={2}>\r\n            <Grid item xs={9}>     \r\n              <Typography className=\"grey8\">{translate('users_economic_data.exp_maintenance')}                                   \r\n              </Typography>\r\n            </Grid> \r\n            <Grid item xs={3}>     \r\n              <NumberInput label=\"\" fullWidth source=\"exp_maintenance\" parse={value => value ? value : 0 } validate={[validateDouble(translate('common.validation.number'))]} />                                        \r\n            </Grid> \r\n          </Grid>\r\n          <Grid container spacing={2}>\r\n            <Grid item xs={9}>     \r\n              <Typography className=\"grey8\">{translate('users_economic_data.exp_marketing')}                                   \r\n              </Typography>\r\n            </Grid> \r\n            <Grid item xs={3}>     \r\n              <NumberInput label=\"\" fullWidth source=\"exp_marketing\" parse={value => value ? value : 0 } validate={[validateDouble(translate('common.validation.number'))]} />                                        \r\n            </Grid> \r\n          </Grid>\r\n          <Grid container spacing={2}>\r\n            <Grid item xs={9}>     \r\n              <Typography className=\"grey8\">{translate('users_economic_data.exp_others')}                                   \r\n              </Typography>\r\n            </Grid> \r\n            <Grid item xs={3}>     \r\n              <NumberInput label=\"\" fullWidth source=\"exp_others\" parse={value => value ? value : 0 } validate={[validateDouble(translate('common.validation.number'))]} />                                        \r\n            </Grid> \r\n          </Grid>\r\n        </Tab>\r\n        <Tab\r\n          label={translate('users_economic_data.inversion')}\r\n          contentClassName={classes.tab}\r\n          fullWidth\r\n          path=\"\"\r\n        >      \r\n          <br />\r\n          <Grid container spacing={2}>\r\n            <Grid item xs={9}>     \r\n              <Typography className=\"grey8\">{translate('users_economic_data.inv_building')}                                   \r\n              </Typography>\r\n            </Grid> \r\n            <Grid item xs={3}>     \r\n              <NumberInput label=\"\" fullWidth source=\"inv_building\" parse={value => value ? value : 0 } validate={[validateDouble(translate('common.validation.number'))]} />                                        \r\n            </Grid> \r\n          </Grid>\r\n          <Grid container spacing={2}>\r\n            <Grid item xs={9}>     \r\n              <Typography className=\"grey8\">{translate('users_economic_data.inv_theatre')}                                   \r\n              </Typography>\r\n            </Grid> \r\n            <Grid item xs={3}>     \r\n              <NumberInput label=\"\" fullWidth source=\"inv_theatre\" parse={value => value ? value : 0 } validate={[validateDouble(translate('common.validation.number'))]} />                                        \r\n            </Grid> \r\n          </Grid>\r\n          <Grid container spacing={2}>\r\n            <Grid item xs={9}>     \r\n              <Typography className=\"grey8\">{translate('users_economic_data.inv_bar')}                                   \r\n              </Typography>\r\n            </Grid> \r\n            <Grid item xs={3}>     \r\n              <NumberInput label=\"\" fullWidth source=\"inv_bar\" parse={value => value ? value : 0 } validate={[validateDouble(translate('common.validation.number'))]} />                                        \r\n            </Grid> \r\n          </Grid>\r\n          <Grid container spacing={2}>\r\n            <Grid item xs={9}>     \r\n              <Typography className=\"grey8\">{translate('users_economic_data.inv_accessibility')}                                   \r\n              </Typography>\r\n            </Grid> \r\n            <Grid item xs={3}>     \r\n              <NumberInput label=\"\" fullWidth source=\"inv_accessibility\" parse={value => value ? value : 0 } validate={[validateDouble(translate('common.validation.number'))]} />                                        \r\n            </Grid> \r\n          </Grid>\r\n          <Grid container spacing={2}>\r\n            <Grid item xs={9}>     \r\n              <Typography className=\"grey8\">{translate('users_economic_data.inv_security')}                                   \r\n              </Typography>\r\n            </Grid> \r\n            <Grid item xs={3}>     \r\n              <NumberInput label=\"\" fullWidth source=\"inv_security\" parse={value => value ? value : 0 } validate={[validateDouble(translate('common.validation.number'))]} />                                        \r\n            </Grid> \r\n          </Grid>\r\n          <Grid container spacing={2}>\r\n            <Grid item xs={9}>     \r\n              <Typography className=\"grey8\">{translate('users_economic_data.inv_others')}                                   \r\n              </Typography>\r\n            </Grid> \r\n            <Grid item xs={3}>     \r\n              <NumberInput label=\"\" fullWidth source=\"inv_others\" parse={value => value ? value : 0 } validate={[validateDouble(translate('common.validation.number'))]} />                                        \r\n            </Grid> \r\n          </Grid>                    \r\n        </Tab>\r\n      </TabbedShowLayout>\r\n                        \r\n    </DialogContent>\r\n  );\r\n    \r\n    \r\n};\r\n    \r\nexport const UsersEconomicDataDetails = ({ id, record, resource, ...props }) => {\r\n  const translate = useTranslate(); \r\n    \r\n  let total_incomings = record.members + record.services + record.subsidies + record.rentals + record.products + record.privates + record.others;\r\n  let total_expenses = record.exp_rentals + record.exp_workers + record.exp_material + record.exp_professionals + record.exp_groups + record.exp_supplies + record.exp_maintenance + record.exp_marketing + record.exp_others;\r\n  let total_inversion = record.inv_building + record.inv_theatre + record.inv_bar + record.inv_accessibility + record.inv_security + record.inv_others;\r\n    \r\n  let total = total_incomings - total_expenses;\r\n\r\n  return (\r\n    <div className=\"usersEconomicDataExpand\">\r\n      <Grid container spacing={2}>\r\n        <Grid item xs={2} >\r\n          <FunctionField render={record => <TextFieldShow source={record.year} label={translate('common.year')} /> } />\r\n        </Grid>\r\n        <Grid item xs={2} >\r\n          <FunctionField render={record => <TextFieldShow source={record.avg_quote} label={translate('users_economic_data.avg_quote')} /> } />\r\n        </Grid>            \r\n      </Grid>\r\n      \r\n      <br />\r\n      <Divider className=\"\" />\r\n      \r\n      <Grid container spacing={2}>\r\n        <Grid item xs={1} >\r\n          \r\n        </Grid>\r\n        <Grid item xs={1} >\r\n          \r\n        </Grid>\r\n        <Grid item xs={3} >\r\n          <FunctionField render={record => <TextFieldShow source={total_incomings} label={translate('users_economic_data.incomings')} /> } />\r\n        </Grid>\r\n        <Grid item xs={3} >\r\n          <FunctionField render={record => <TextFieldShow source={total_expenses} label={translate('users_economic_data.expenses')} /> } />\r\n        </Grid>\r\n        <Grid item xs={3} >\r\n          <FunctionField render={record => <TextFieldShow source={total_inversion} label={translate('users_economic_data.inversion')} /> } />\r\n        </Grid>\r\n        <Grid item xs={1} >\r\n          <FunctionField render={record => <TextFieldShow source={total} label={translate('users_economic_data.total')} /> } />\r\n        </Grid>            \r\n      </Grid>\r\n        \r\n      <br />\r\n      <Divider className=\"\" />\r\n                \r\n      <Grid container spacing={2}>\r\n        <Grid item xs={2} >\r\n        </Grid>\r\n        <Grid item xs={3} >\r\n          <FunctionField render={record => <TextFieldShow source={record.members} label={translate('users_economic_data.members')} /> } /><br />\r\n          <FunctionField render={record => <TextFieldShow source={record.services} label={translate('users_economic_data.services')} /> } /><br />\r\n          <FunctionField render={record => <TextFieldShow source={record.subsidies} label={translate('users_economic_data.subsidies')} /> } /><br />\r\n          <FunctionField render={record => <TextFieldShow source={record.rentals} label={translate('users_economic_data.rentals')} /> } /><br />\r\n          <FunctionField render={record => <TextFieldShow source={record.products} label={translate('users_economic_data.products')} /> } /><br />\r\n          <FunctionField render={record => <TextFieldShow source={record.privates} label={translate('users_economic_data.privates')} /> } /><br />\r\n          <FunctionField render={record => <TextFieldShow source={record.others} label={translate('users_economic_data.others')} /> } />\r\n        </Grid>\r\n        <Grid item xs={3} >\r\n          <FunctionField render={record => <TextFieldShow source={record.exp_rentals} label={translate('users_economic_data.exp_rentals')} /> } /><br />\r\n          <FunctionField render={record => <TextFieldShow source={record.exp_workers} label={translate('users_economic_data.exp_workers')} /> } /><br />\r\n          <FunctionField render={record => <TextFieldShow source={record.exp_material} label={translate('users_economic_data.exp_material')} /> } /><br />\r\n          <FunctionField render={record => <TextFieldShow source={record.exp_professionals} label={translate('users_economic_data.exp_professionals')} /> } /><br />\r\n          <FunctionField render={record => <TextFieldShow source={record.exp_groups} label={translate('users_economic_data.exp_groups')} /> } /><br />\r\n          <FunctionField render={record => <TextFieldShow source={record.exp_supplies} label={translate('users_economic_data.exp_supplies')} /> } /><br />\r\n          <FunctionField render={record => <TextFieldShow source={record.exp_maintenance} label={translate('users_economic_data.exp_maintenance')} /> } /><br />\r\n          <FunctionField render={record => <TextFieldShow source={record.exp_marketing} label={translate('users_economic_data.exp_marketing')} /> } /><br />\r\n          <FunctionField render={record => <TextFieldShow source={record.exp_others} label={translate('users_economic_data.exp_others')} /> } />\r\n        </Grid>            \r\n        <Grid item xs={3} >\r\n          <FunctionField render={record => <TextFieldShow source={record.inv_building} label={translate('users_economic_data.inv_building')} /> } /><br />\r\n          <FunctionField render={record => <TextFieldShow source={record.inv_theatre} label={translate('users_economic_data.inv_theatre')} /> } /><br />\r\n          <FunctionField render={record => <TextFieldShow source={record.inv_bar} label={translate('users_economic_data.inv_bar')} /> } /><br />\r\n          <FunctionField render={record => <TextFieldShow source={record.inv_accessibility} label={translate('users_economic_data.inv_accessibility')} /> } /><br />\r\n          <FunctionField render={record => <TextFieldShow source={record.inv_security} label={translate('users_economic_data.inv_security')} /> } /><br />\r\n          <FunctionField render={record => <TextFieldShow source={record.inv_others} label={translate('users_economic_data.inv_others')} /> } /><br />\r\n        </Grid>\r\n        <Grid item xs={1} >\r\n        </Grid>\r\n      </Grid>\r\n        \r\n      <br /> \r\n    </div>\r\n  );\r\n};","import React, { useState } from 'react';\r\n\r\nimport { SaveButton ,\r\n  List,\r\n  Datagrid,\r\n  TextField,\r\n  DeleteButton,\r\n  required,    \r\n  useCreate,\r\n  useUpdate,\r\n  useNotify,\r\n  FormWithRedirect,useRefresh,\r\n  Button,\r\n  FunctionField, TopToolbar, NumberInput, ResourceContextProvider, TabbedShowLayout, Tab\r\n} from 'react-admin';\r\n\r\n\r\nimport EditIcon from '@material-ui/icons/Edit';\r\n\r\nimport { useStyles  } from '../common/styles';\r\nimport { useTranslate  } from '../common/language';\r\n\r\nimport Typography from '@material-ui/core/Typography';\r\n\r\n\r\n\r\nimport Divider from '@mui/material/Divider';\r\n\r\nimport IconContentAdd from '@material-ui/icons/Add';\r\nimport IconCancel from '@material-ui/icons/Cancel';\r\n\r\nimport Dialog from '@material-ui/core/Dialog';\r\nimport DialogTitle from '@material-ui/core/DialogTitle';\r\nimport DialogContent from '@material-ui/core/DialogContent';\r\nimport DialogActions from '@material-ui/core/DialogActions';\r\n\r\n\r\nimport { TextFieldShow } from '../components/TextFieldShow';\r\n\r\nimport Grid from '@mui/material/Grid';\r\n\r\nimport { validateInteger, validateDouble, validatePercent  } from './../components/Validator';\r\n\r\nexport const UsersDemografyList = (props) => {\r\n  const translate = useTranslate(); \r\n    \r\n  let strRedirect =  `/users/${props.users_id}/more_federation`; \r\n    \r\n  return (\r\n           \r\n    <ResourceContextProvider value=\"users_demografy\" >\r\n      <List \r\n        syncWithLocation \r\n        basePath=\"/users_demografy\" \r\n        filter={{ users_id : props.users_id }}  \r\n        title=\"\"\r\n        bulkActionButtons={false}                \r\n        actions={!props.show ? <UsersDemografyToolbar users_id={props.users_id} /> : null }  \r\n        perPage={1000}\r\n        sort={{ field: 'year', order: 'ASC' }} \r\n        empty={!props.show ? <UsersDemografyToolbar users_id={props.users_id} /> : <span /> } \r\n        pagination={false}\r\n      >\r\n\r\n        <Datagrid   \r\n          \r\n          className=\"header_grey6\"\r\n          label=\"\"\r\n          fullWidth\r\n        >\r\n          <TextField source=\"year\" label={translate('users_demografy.year')} sortable={false} />  \r\n          <TextField source=\"num_members\" label={translate('users_demografy.num_members')} sortable={false} />  \r\n          <TextField source=\"avg_age\" label={translate('users_demografy.avg_age')} sortable={false} />  \r\n          <TextField source=\"avg_age_managers\" label={translate('users_demografy.avg_age_managers')} sortable={false} />  \r\n          <TextField source=\"percent_man\" label={translate('users_demografy.percent_man')} sortable={false} />  \r\n          <TextField source=\"percent_woman\" label={translate('users_demografy.percent_woman')} sortable={false} />  \r\n          <TextField source=\"percent_no_binary\" label={translate('users_demografy.percent_no_binary')} sortable={false} />  \r\n          { !props.show ? <UsersDemografyEditButton label=\"\"/> : null }\r\n          { !props.show ? <DeleteButton undoable={false} redirect={strRedirect} label=\"\"/> : null }\r\n        </Datagrid>\r\n\r\n      </List> \r\n    </ResourceContextProvider>\r\n\r\n  );\r\n};\r\n\r\n\r\nexport const UsersDemografyToolbar = ({ ...props }) => {\r\n\r\n  return (\r\n        \r\n    <TopToolbar>\r\n      <UsersDemografyCreateButton users_id={props.users_id} />\r\n    </TopToolbar>\r\n        \r\n  );\r\n};\r\n\r\nexport const UsersDemografyCreateButton = ({ ...props }) => {\r\n\r\n  const [showDialog, setShowDialog] = useState(false);\r\n  const [create, { loading }] = useCreate('users_demografy');\r\n  const notify = useNotify();\r\n  const refresh = useRefresh();    \r\n  const translate = useTranslate();  \r\n    \r\n\r\n  const handleClick = () => {\r\n    setShowDialog(true);\r\n  };\r\n\r\n  const handleCloseClick = () => {\r\n    setShowDialog(false);\r\n  };\r\n\r\n  const handleSubmit = async values => {\r\n    create(\r\n      { payload: { data: values } },\r\n      {\r\n        onSuccess: ({ data }) => {\r\n          setShowDialog(false);\r\n          refresh();\r\n        },\r\n        onFailure: ( error ) => {\r\n          notify(error.message, 'error');\r\n        }\r\n      }\r\n    );\r\n  };\r\n\r\n\r\n  return (\r\n    <>            \r\n      <Button onClick={handleClick} label={translate('users_demografy.create')}>\r\n        <IconContentAdd />                \r\n      </Button>\r\n\r\n      <Dialog\r\n        fullWidth\r\n        open={showDialog}\r\n        onClose={handleCloseClick}\r\n        aria-label={translate('users_demografy.create')}\r\n      >\r\n        <DialogTitle>{translate('users_demografy.create')}</DialogTitle>\r\n\r\n        <FormWithRedirect\r\n          resource=\"users_demografy\"\r\n          save={handleSubmit}\r\n          initialValues={{ users_id : props.users_id }}\r\n          render={({\r\n            handleSubmitWithRedirect,\r\n            pristine,\r\n            saving\r\n          }) => (\r\n            <>\r\n              <UsersDemografyForm edit={false} />\r\n                            \r\n              <DialogActions>\r\n                <Button label=\"ra.action.cancel\" onClick={handleCloseClick} disabled={loading} >\r\n                  <IconCancel />\r\n                </Button>\r\n                <SaveButton\r\n                  handleSubmitWithRedirect={\r\n                    handleSubmitWithRedirect\r\n                  }\r\n                  pristine={pristine}\r\n                  saving={saving}\r\n                  disabled={loading}\r\n                />\r\n              </DialogActions>\r\n            </>\r\n          )}\r\n        />\r\n      </Dialog>\r\n    </>\r\n  );\r\n};\r\n\r\n\r\nexport const UsersDemografyEditButton = ({ ...props }) => {\r\n\r\n  const [showDialog, setShowDialog] = useState(false);\r\n  const notify = useNotify();\r\n  const refresh = useRefresh();    \r\n  const translate = useTranslate();  \r\n\r\n  const [update, { loading, error }] = useUpdate();\r\n\r\n  const handleClick = () => {\r\n    setShowDialog(true);\r\n  };\r\n\r\n  const handleCloseClick = () => {\r\n    setShowDialog(false);\r\n  };\r\n                        \r\n  const handleSubmit = async values => {\r\n    update(\r\n      { \r\n        type: 'update', \r\n        resource: 'users_demografy', \r\n        payload : { id: values.id, data : \r\n                {       users_id: values.users_id,\r\n                  year : values.year, \r\n                  num_members: values.num_members, \r\n                  avg_age: values.avg_age, \r\n                  avg_age_managers: values.avg_age_managers,\r\n                  percent_man : values.percent_man, \r\n                  percent_woman: values.percent_woman, \r\n                  percent_no_binary: values.percent_no_binary\r\n                } }\r\n      },\r\n      {\r\n        onSuccess: ({ data }) => {\r\n          setShowDialog(false);\r\n          refresh();\r\n        },\r\n        onFailure: ( error ) => {\r\n          notify(error.message, 'error');\r\n        }\r\n      }\r\n    );\r\n  };    \r\n\r\n  return (\r\n    <>\r\n      <Button onClick={handleClick} label=\"\" startIcon={<EditIcon />} />\r\n\r\n      <Dialog\r\n        fullWidth\r\n        open={showDialog}\r\n        onClose={handleCloseClick}\r\n      >\r\n        <DialogTitle>{translate('users_demografy.edit_title')}</DialogTitle>\r\n\r\n        <FormWithRedirect\r\n          resource=\"\"\r\n          save={handleSubmit}\r\n          initialValues={{ id : props.record.id, \r\n            users_id: props.record.users_id,\r\n            year : props.record.year, \r\n            num_members: props.record.num_members, \r\n            avg_age: props.record.avg_age, \r\n            avg_age_managers: props.record.avg_age_managers,\r\n            percent_man : props.record.percent_man, \r\n            percent_woman: props.record.percent_woman, \r\n            percent_no_binary: props.record.percent_no_binary\r\n          }}\r\n          render={({\r\n            handleSubmitWithRedirect,\r\n            pristine,\r\n            saving\r\n          }) => (\r\n            <>\r\n              <UsersDemografyForm edit={true} />\r\n                            \r\n              <DialogActions>\r\n                <Button label=\"ra.action.cancel\" onClick={handleCloseClick} disabled={loading} >\r\n                  <IconCancel />\r\n                </Button>\r\n                <SaveButton\r\n                  handleSubmitWithRedirect={\r\n                    handleSubmitWithRedirect\r\n                  }\r\n                  pristine={pristine}\r\n                  saving={saving}\r\n                  disabled={loading}\r\n                />\r\n              </DialogActions>\r\n            </>\r\n          )}\r\n        />\r\n      </Dialog>\r\n    </>\r\n  );\r\n};\r\n\r\n\r\nconst UsersDemografyForm = ({ edit, ...props }) => {\r\n  const translate = useTranslate(); \r\n    \r\n  return (\r\n    <DialogContent className=\"\">\r\n      <br />\r\n      <Grid container spacing={2} > \r\n        <Grid item xs={3}>  \r\n          { edit ? (\r\n            <NumberInput label={translate('common.year')} fullWidth source=\"year\" step={1} disabled />                                        \r\n          ) : (\r\n            <NumberInput label={translate('common.year')} fullWidth source=\"year\" step={1} validate={[required(),validateInteger(translate('common.validation.number'))]} />                                        \r\n          )}\r\n        </Grid> \r\n      </Grid>\r\n      <br/>\r\n        <Grid container spacing={2}>\r\n            <Grid item xs={4}>   \r\n                <NumberInput fullWidth source=\"num_members\" label={translate('users_demografy.num_members')} step={1} validate={[validateInteger(translate('common.validation.number'))]} />\r\n            </Grid> \r\n            <Grid item xs={4}>   \r\n                <NumberInput fullWidth source=\"avg_age\" label={translate('users_demografy.avg_age')} validate={[validateDouble(translate('common.validation.number'))]}  />\r\n            </Grid> \r\n            <Grid item xs={4}>   \r\n                <NumberInput fullWidth source=\"avg_age_managers\" label={translate('users_demografy.avg_age_managers')} validate={[validateDouble(translate('common.validation.number'))]}  />\r\n            </Grid> \r\n            <Grid item xs={4}>   \r\n                <NumberInput fullWidth source=\"percent_man\" label={translate('users_demografy.percent_man')} validate={[validatePercent(translate('common.validation.number'))]}  />\r\n            </Grid> \r\n            <Grid item xs={4}>   \r\n                <NumberInput fullWidth source=\"percent_woman\" label={translate('users_demografy.percent_woman')} validate={[validatePercent(translate('common.validation.number'))]}  />\r\n            </Grid> \r\n            <Grid item xs={4}>   \r\n                <NumberInput fullWidth source=\"percent_no_binary\" label={translate('users_demografy.percent_no_binary')} validate={[validatePercent(translate('common.validation.number'))]}  />\r\n            </Grid> \r\n        </Grid>       \r\n                        \r\n    </DialogContent>\r\n  );\r\n    \r\n    \r\n};\r\n\r\n\r\n","import React, { useState } from 'react';\r\n\r\nimport { SaveButton ,\r\n  List,\r\n  Datagrid,\r\n  TextField,\r\n  DeleteButton,\r\n  useTranslate,\r\n  required,    \r\n  useCreate,\r\n  useUpdate,\r\n  useNotify,\r\n  FormWithRedirect,useRefresh,\r\n  Button,\r\n  FunctionField, TopToolbar, NumberInput, ResourceContextProvider\r\n} from 'react-admin';\r\n\r\n\r\nimport EditIcon from '@material-ui/icons/Edit';\r\n\r\nimport { useStyles  } from '../common/styles';\r\n\r\nimport Typography from '@material-ui/core/Typography';\r\n\r\n\r\n\r\nimport Divider from '@mui/material/Divider';\r\n\r\nimport IconContentAdd from '@material-ui/icons/Add';\r\nimport IconCancel from '@material-ui/icons/Cancel';\r\n\r\nimport Dialog from '@material-ui/core/Dialog';\r\nimport DialogTitle from '@material-ui/core/DialogTitle';\r\nimport DialogContent from '@material-ui/core/DialogContent';\r\nimport DialogActions from '@material-ui/core/DialogActions';\r\n\r\n\r\nimport { TextFieldShow } from '../components/TextFieldShow';\r\n\r\nimport Grid from '@mui/material/Grid';\r\n\r\n\r\nimport { validateInteger, validateDouble  } from './../components/Validator';\r\n\r\nexport const UsersWorkersList = (props) => {\r\n  const translate = useTranslate(); \r\n    \r\n  let strRedirect =  `/users/${props.users_id}/more_federation`; \r\n        \r\n  return (\r\n           \r\n    <ResourceContextProvider value=\"users_workers\" >\r\n      <List \r\n        syncWithLocation \r\n        basePath=\"/users_workers\" \r\n        filter={{ users_id : props.users_id, type: props.type }}  \r\n        title=\"\"\r\n        bulkActionButtons={false}                \r\n        actions={<UsersWorkersToolbar users_id={props.users_id} type={props.type} /> }  \r\n        perPage={1000}\r\n        sort={{ field: 'year', order: 'ASC' }} \r\n        empty={<UsersWorkersToolbar users_id={props.users_id} type={props.type} /> } \r\n        pagination={false}\r\n      >\r\n\r\n        <Datagrid   \r\n          expand={<UsersWorkersDetails type={props.type} />} \r\n          className=\"header_grey6\"\r\n          label=\"\"\r\n          fullWidth\r\n        >\r\n          <TextField source=\"year\" label={translate('common.year')} sortable={false} /> \r\n          <FunctionField label={translate('users_workers.total_' + props.type)} render={record => <RenderWorkersTotal record={record} /> } sortable={false} />\r\n          <UsersWorkersEditButton label=\"\" type={props.type} />\r\n          <DeleteButton undoable={false} redirect={strRedirect} label=\"\"/>\r\n        </Datagrid>\r\n\r\n      </List> \r\n    </ResourceContextProvider>\r\n\r\n  );\r\n};\r\n\r\n\r\nexport const UsersWorkersEditButton = ({ ...props }) => {\r\n\r\n  const [showDialog, setShowDialog] = useState(false);\r\n  const notify = useNotify();\r\n  const refresh = useRefresh();    \r\n  const translate = useTranslate();  \r\n\r\n  const [update, { loading, error }] = useUpdate();\r\n\r\n  const handleClick = () => {\r\n    setShowDialog(true);\r\n  };\r\n\r\n  const handleCloseClick = () => {\r\n    setShowDialog(false);\r\n  };\r\n                        \r\n  const handleSubmit = async values => {\r\n    update(\r\n      { \r\n        type: 'update', \r\n        resource: 'users_workers', \r\n        payload : { id: values.id, data : \r\n                {       users_id: values.users_id,\r\n                  year : values.year, \r\n                  administration: values.administration,\r\n                  activities: values.activities,\r\n                  concierge: values.concierge,\r\n                  clean_up: values.clean_up,\r\n                  comunication : values.comunication,\r\n                  accounting : values.accounting,\r\n                  maintenance : values.maintenance,\r\n                  management : values.management,\r\n                  others : values.others\r\n                } }\r\n      },\r\n      {\r\n        onSuccess: ({ data }) => {\r\n          setShowDialog(false);\r\n          refresh();\r\n        },\r\n        onFailure: ( error ) => {\r\n          notify(error.message, 'error');\r\n        }\r\n      }\r\n    );\r\n  };    \r\n\r\n  return (\r\n    <>\r\n      <Button onClick={handleClick} label=\"\" startIcon={<EditIcon />} />\r\n\r\n      <Dialog\r\n        fullWidth\r\n        open={showDialog}\r\n        onClose={handleCloseClick}\r\n      >\r\n        <DialogTitle>{translate('users_workers.edit_title_' + props.type)}</DialogTitle>\r\n\r\n        <FormWithRedirect\r\n          resource=\"\"\r\n          save={handleSubmit}\r\n          initialValues={{ id : props.record.id, \r\n            users_id: props.record.users_id,\r\n            year : props.record.year, \r\n            administration: props.record.administration,\r\n            activities: props.record.activities,\r\n            concierge: props.record.concierge,\r\n            clean_up: props.record.clean_up,\r\n            comunication : props.record.comunication,\r\n            accounting : props.record.accounting,\r\n            maintenance : props.record.maintenance,\r\n            management : props.record.management,\r\n            others : props.record.others\r\n          }}\r\n          render={({\r\n            handleSubmitWithRedirect,\r\n            pristine,\r\n            saving\r\n          }) => (\r\n            <>\r\n              <UsersWorkersForm edit={true} />\r\n                            \r\n              <DialogActions>\r\n                <Button label=\"ra.action.cancel\" onClick={handleCloseClick} disabled={loading} >\r\n                  <IconCancel />\r\n                </Button>\r\n                <SaveButton\r\n                  handleSubmitWithRedirect={\r\n                    handleSubmitWithRedirect\r\n                  }\r\n                  pristine={pristine}\r\n                  saving={saving}\r\n                  disabled={loading}\r\n                />\r\n              </DialogActions>\r\n            </>\r\n          )}\r\n        />\r\n      </Dialog>\r\n    </>\r\n  );\r\n};\r\n\r\nconst RenderWorkersTotal = ({ record, ...props }) => {\r\n                           \r\n  let total_workers = record.administration + record.activities + record.concierge + record.clean_up + record.comunication + record.accounting + record.maintenance + record.management + record.others;\r\n  return (        \r\n    total_workers\r\n  );\r\n};\r\n\r\nexport const UsersWorkersShow = ({ ...props }) => {\r\n  const translate = useTranslate();   \r\n\r\n  return (\r\n        \r\n    <ResourceContextProvider value=\"users_workers\" >\r\n      <List \r\n        syncWithLocation \r\n        basePath=\"/users_workers\" \r\n        filter={{ users_id : props.users_id, type: props.type }}  \r\n        title=\"\"\r\n        bulkActionButtons={false}                                \r\n        perPage={1000}\r\n        sort={{ field: 'year', order: 'ASC' }} \r\n        pagination={false}\r\n        actions={false}\r\n        empty={<></>}\r\n        className=\"users_remittances_list\"\r\n      >                            \r\n        <Datagrid\r\n          expand={<UsersWorkersDetails type={props.type} />} \r\n          className=\"header_grey6\"\r\n          fullWidth\r\n        >   \r\n          <TextField source=\"year\" label={translate('common.year')} sortable={false}  />                        \r\n          <FunctionField label={translate('users_workers.total_' + props.type)} render={record => <RenderWorkersTotal record={record} /> } sortable={false} />\r\n        </Datagrid>\r\n\r\n      </List> \r\n\r\n    </ResourceContextProvider>            \r\n\r\n  );\r\n};\r\n\r\nexport const UsersWorkersToolbar = ({ ...props }) => {\r\n\r\n  return (\r\n        \r\n    <TopToolbar>\r\n      <UsersWorkersCreateButton users_id={props.users_id} type={props.type} />\r\n    </TopToolbar>\r\n        \r\n  );\r\n};\r\n\r\n\r\nexport const UsersWorkersCreateButton = ({ ...props }) => {\r\n\r\n  const [showDialog, setShowDialog] = useState(false);\r\n  const [create, { loading }] = useCreate('users_workers');\r\n  const notify = useNotify();\r\n  const refresh = useRefresh();    \r\n  const translate = useTranslate();  \r\n    \r\n\r\n  const handleClick = () => {\r\n    setShowDialog(true);\r\n  };\r\n\r\n  const handleCloseClick = () => {\r\n    setShowDialog(false);\r\n  };\r\n\r\n  const handleSubmit = async values => {\r\n    create(\r\n      { payload: { data: values } },\r\n      {\r\n        onSuccess: ({ data }) => {\r\n          setShowDialog(false);\r\n          refresh();\r\n        },\r\n        onFailure: ( error ) => {\r\n          notify(error.message, 'error');\r\n        }\r\n      }\r\n    );\r\n  };\r\n\r\n\r\n  return (\r\n    <>            \r\n      <Button onClick={handleClick} label={translate('users_workers.create_button')}>\r\n        <IconContentAdd />                \r\n      </Button>\r\n\r\n      <Dialog\r\n        fullWidth\r\n        open={showDialog}\r\n        onClose={handleCloseClick}\r\n        aria-label={translate('users_workers.create_' + props.type)}\r\n      >\r\n        <DialogTitle>{translate('users_workers.create_' + props.type)}</DialogTitle>\r\n\r\n        <FormWithRedirect\r\n          resource=\"users_workers\"\r\n          save={handleSubmit}\r\n          initialValues={{ users_id : props.users_id, type: props.type }}\r\n          render={({\r\n            handleSubmitWithRedirect,\r\n            pristine,\r\n            saving\r\n          }) => (\r\n            <>\r\n              <UsersWorkersForm edit={false} />\r\n                            \r\n              <DialogActions>\r\n                <Button label=\"ra.action.cancel\" onClick={handleCloseClick} disabled={loading} >\r\n                  <IconCancel />\r\n                </Button>\r\n                <SaveButton\r\n                  handleSubmitWithRedirect={\r\n                    handleSubmitWithRedirect\r\n                  }\r\n                  pristine={pristine}\r\n                  saving={saving}\r\n                  disabled={loading}\r\n                />\r\n              </DialogActions>\r\n            </>\r\n          )}\r\n        />\r\n      </Dialog>\r\n    </>\r\n  );\r\n};\r\n\r\nconst UsersWorkersForm = ({ edit, ...props }) => {\r\n  const translate = useTranslate(); \r\n  const classes = useStyles();\r\n    \r\n  return (\r\n    <DialogContent className=\"users_workers_form\">\r\n      <br />\r\n      <Grid container spacing={2} >\r\n        <Grid item xs={3}>     \r\n          <Typography className=\"grey8\">{translate('common.year')}                                 \r\n          </Typography>\r\n        </Grid> \r\n        <Grid item xs={3}>  \r\n          { edit ? (\r\n            <NumberInput label=\"\" fullWidth source=\"year\" step={1} disabled />                                        \r\n          ) : (\r\n            <NumberInput label=\"\" fullWidth source=\"year\" step={1} validate={[required(),validateInteger(translate('common.validation.number'))]} />                                        \r\n          )}\r\n        </Grid> \r\n      </Grid>\r\n                \r\n      <br />                    \r\n      <Grid container spacing={2}>\r\n        <Grid item xs={9}>     \r\n          <Typography className=\"grey8\">{translate('users_workers.administration')}                                   \r\n          </Typography>\r\n        </Grid> \r\n        <Grid item xs={3}>     \r\n          <NumberInput label=\"\" fullWidth source=\"administration\" parse={value => value ? value : 0 } validate={[validateDouble(translate('common.validation.number'))]} />                                        \r\n        </Grid> \r\n      </Grid>\r\n      <Grid container spacing={2}>\r\n        <Grid item xs={9}>     \r\n          <Typography className=\"grey8\">{translate('users_workers.activities')}                                   \r\n          </Typography>\r\n        </Grid> \r\n        <Grid item xs={3}>     \r\n          <NumberInput label=\"\" fullWidth source=\"activities\" parse={value => value ? value : 0 } validate={[validateDouble(translate('common.validation.number'))]} />                                        \r\n        </Grid> \r\n      </Grid>\r\n      <Grid container spacing={2}>\r\n        <Grid item xs={9}>     \r\n          <Typography className=\"grey8\">{translate('users_workers.concierge')}                                   \r\n          </Typography>\r\n        </Grid> \r\n        <Grid item xs={3}>     \r\n          <NumberInput label=\"\" fullWidth source=\"concierge\" parse={value => value ? value : 0 } validate={[validateDouble(translate('common.validation.number'))]} />                                        \r\n        </Grid> \r\n      </Grid>\r\n      <Grid container spacing={2}>\r\n        <Grid item xs={9}>     \r\n          <Typography className=\"grey8\">{translate('users_workers.clean_up')}                                   \r\n          </Typography>\r\n        </Grid> \r\n        <Grid item xs={3}>     \r\n          <NumberInput label=\"\" fullWidth source=\"clean_up\" parse={value => value ? value : 0 } validate={[validateDouble(translate('common.validation.number'))]} />                                        \r\n        </Grid> \r\n      </Grid>\r\n      <Grid container spacing={2}>\r\n        <Grid item xs={9}>     \r\n          <Typography className=\"grey8\">{translate('users_workers.comunication')}                                   \r\n          </Typography>\r\n        </Grid> \r\n        <Grid item xs={3}>     \r\n          <NumberInput label=\"\" fullWidth source=\"comunication\" parse={value => value ? value : 0 } validate={[validateDouble(translate('common.validation.number'))]} />                                        \r\n        </Grid> \r\n      </Grid>\r\n      <Grid container spacing={2}>\r\n        <Grid item xs={9}>     \r\n          <Typography className=\"grey8\">{translate('users_workers.accounting')}                                   \r\n          </Typography>\r\n        </Grid> \r\n        <Grid item xs={3}>     \r\n          <NumberInput label=\"\" fullWidth source=\"accounting\" parse={value => value ? value : 0 } validate={[validateDouble(translate('common.validation.number'))]} />                                        \r\n        </Grid> \r\n      </Grid>\r\n      <Grid container spacing={2}>\r\n        <Grid item xs={9}>     \r\n          <Typography className=\"grey8\">{translate('users_workers.maintenance')}                                   \r\n          </Typography>\r\n        </Grid> \r\n        <Grid item xs={3}>     \r\n          <NumberInput label=\"\" fullWidth source=\"maintenance\" parse={value => value ? value : 0 } validate={[validateDouble(translate('common.validation.number'))]} />                                        \r\n        </Grid> \r\n      </Grid>\r\n      <Grid container spacing={2}>\r\n        <Grid item xs={9}>     \r\n          <Typography className=\"grey8\">{translate('users_workers.management')}                                   \r\n          </Typography>\r\n        </Grid> \r\n        <Grid item xs={3}>     \r\n          <NumberInput label=\"\" fullWidth source=\"management\" parse={value => value ? value : 0 } validate={[validateDouble(translate('common.validation.number'))]} />                                        \r\n        </Grid> \r\n      </Grid>\r\n      <Grid container spacing={2}>\r\n        <Grid item xs={9}>     \r\n          <Typography className=\"grey8\">{translate('users_workers.others')}                                   \r\n          </Typography>\r\n        </Grid> \r\n        <Grid item xs={3}>     \r\n          <NumberInput label=\"\" fullWidth source=\"others\" parse={value => value ? value : 0 } validate={[validateDouble(translate('common.validation.number'))]} />                                        \r\n        </Grid> \r\n      </Grid>\r\n                        \r\n    </DialogContent>\r\n  );\r\n    \r\n    \r\n};\r\n    \r\nexport const UsersWorkersDetails = ({ id, record, resource, ...props }) => {\r\n  const translate = useTranslate(); \r\n\r\n  let total_workers = record.administration + record.activities + record.concierge + record.clean_up + record.comunication + record.accounting + record.maintenance + record.management + record.others;\r\n        \r\n  return (\r\n    <div className=\"usersEconomicDataExpand\">\r\n      <Grid container spacing={2}>\r\n        <Grid item xs={2} >\r\n          <FunctionField render={record => <TextFieldShow source={record.year} label={translate('common.year')} /> } />\r\n        </Grid>\r\n        <Grid item xs={3} >\r\n          <FunctionField render={record => <TextFieldShow source={total_workers} label={translate('users_workers.total_' + props.type)} /> } />\r\n        </Grid> \r\n      </Grid>\r\n        \r\n      <br />\r\n      <Divider className=\"\" />\r\n                \r\n      <Grid container spacing={2}>\r\n        <Grid item xs={2} >\r\n        </Grid>\r\n        <Grid item xs={3} >\r\n          <FunctionField render={record => <TextFieldShow source={record.administration} label={translate('users_workers.administration')} /> } /><br />\r\n          <FunctionField render={record => <TextFieldShow source={record.activities} label={translate('users_workers.activities')} /> } /><br />\r\n          <FunctionField render={record => <TextFieldShow source={record.concierge} label={translate('users_workers.concierge')} /> } /><br />\r\n          <FunctionField render={record => <TextFieldShow source={record.clean_up} label={translate('users_workers.clean_up')} /> } /><br />\r\n          <FunctionField render={record => <TextFieldShow source={record.comunication} label={translate('users_workers.comunication')} /> } /><br />\r\n          <FunctionField render={record => <TextFieldShow source={record.accounting} label={translate('users_workers.accounting')} /> } /><br />\r\n          <FunctionField render={record => <TextFieldShow source={record.maintenance} label={translate('users_workers.maintenance')} /> } /><br />\r\n          <FunctionField render={record => <TextFieldShow source={record.management} label={translate('users_workers.management')} /> } /><br />\r\n          <FunctionField render={record => <TextFieldShow source={record.others} label={translate('users_workers.others')} /> } />\r\n        </Grid>\r\n        <Grid item xs={7} >\r\n        </Grid>\r\n      </Grid>\r\n        \r\n      <br /> \r\n    </div>\r\n  );\r\n};","import React, { useState } from 'react';\r\n\r\nimport { SaveButton ,\r\n  List,\r\n  Datagrid,\r\n  TextField,\r\n  ReferenceField,\r\n  DeleteButton,\r\n  ReferenceInput,\r\n  SelectInput,\r\n  TextInput,\r\n  useTranslate,\r\n  required,    \r\n  useCreate,\r\n  useUpdate,\r\n  useNotify,\r\n  FormWithRedirect,useRefresh,\r\n  Button,\r\n  FunctionField, TopToolbar, NumberInput, ResourceContextProvider,\r\n  ArrayField, ArrayInput,SimpleFormIterator \r\n} from 'react-admin';\r\n\r\n\r\nimport EditIcon from '@material-ui/icons/Edit';\r\n\r\nimport { useStyles  } from '../common/styles';\r\n\r\n\r\n\r\n\r\nimport Divider from '@mui/material/Divider';\r\n\r\nimport IconContentAdd from '@material-ui/icons/Add';\r\nimport IconCancel from '@material-ui/icons/Cancel';\r\n\r\nimport Dialog from '@material-ui/core/Dialog';\r\nimport DialogTitle from '@material-ui/core/DialogTitle';\r\nimport DialogContent from '@material-ui/core/DialogContent';\r\nimport DialogActions from '@material-ui/core/DialogActions';\r\n\r\nimport { choicesAdult } from './../common/constants';\r\n\r\nimport { TextFieldShow } from '../components/TextFieldShow';\r\n\r\nimport Grid from '@mui/material/Grid';\r\n\r\n\r\nimport { validateMaxLength, validateInteger  } from './../components/Validator';\r\n\r\nexport const UsersActivitiesList = (props) => {\r\n  const translate = useTranslate(); \r\n    \r\n  let strRedirect =  `/users/${props.users_id}/more_federation`; \r\n    \r\n  return (\r\n           \r\n    <ResourceContextProvider value=\"users_activities\" >\r\n      <List \r\n        syncWithLocation \r\n        basePath=\"/users_activities\" \r\n        filter={{ users_id : props.users_id }}  \r\n        title=\"\"\r\n        bulkActionButtons={false}                \r\n        actions={<CustomToolbar users_id={props.users_id} /> }  \r\n        perPage={1000}\r\n        sort={{ field: 'year', order: 'ASC' }} \r\n        empty={<CustomToolbar users_id={props.users_id} /> } \r\n        pagination={false}\r\n      >\r\n\r\n        <Datagrid   \r\n          expand={<UsersActivitiesDetails />} \r\n          className=\"header_grey6\"\r\n          label=\"\"\r\n          fullWidth\r\n        >\r\n          <TextField source=\"year\" label={translate('common.year')} sortable={false} /> \r\n          <FunctionField label={translate('users_activities.total_quantity')} render={record => <RenderTotalQuantity record={record} /> } sortable={false} />\r\n          <FunctionField label={translate('users_activities.total_assistants')} render={record => <RenderTotalAssistants record={record} /> } sortable={false} /> \r\n          <CustomEditButton label=\"\"/>\r\n          <DeleteButton undoable={false} redirect={strRedirect} label=\"\"/>\r\n        </Datagrid>\r\n\r\n      </List> \r\n    </ResourceContextProvider>\r\n\r\n  );\r\n};\r\n\r\n\r\nexport const CustomEditButton = ({ ...props }) => {\r\n\r\n  const [showDialog, setShowDialog] = useState(false);\r\n  const notify = useNotify();\r\n  const refresh = useRefresh();    \r\n  const translate = useTranslate();  \r\n\r\n  const [update, { loading, error }] = useUpdate();\r\n\r\n  const handleClick = () => {\r\n    setShowDialog(true);\r\n  };\r\n\r\n  const handleCloseClick = () => {\r\n    setShowDialog(false);\r\n  };\r\n                        \r\n  const handleSubmit = async values => {\r\n    update(\r\n      { \r\n        type: 'update', \r\n        resource: 'users_activities', \r\n        payload : { id: values.id, data : \r\n                {       users_id: values.users_id,\r\n                  year : values.year, \r\n                  items: values.items\r\n                } }\r\n      },\r\n      {\r\n        onSuccess: ({ data }) => {\r\n          setShowDialog(false);\r\n          refresh();\r\n        },\r\n        onFailure: ( error ) => {\r\n          notify(error.message, 'error');\r\n        }\r\n      }\r\n    );\r\n  };    \r\n\r\n  return (\r\n    <>\r\n      <Button onClick={handleClick} label=\"\" startIcon={<EditIcon />} />\r\n\r\n      <Dialog\r\n        fullWidth\r\n        open={showDialog}\r\n        onClose={handleCloseClick}\r\n      >\r\n        <DialogTitle>{translate('users_activities.edit')}</DialogTitle>\r\n\r\n        <FormWithRedirect\r\n          resource=\"\"\r\n          save={handleSubmit}\r\n          initialValues={{ id : props.record.id, \r\n            users_id: props.record.users_id,\r\n            year : props.record.year, \r\n            items: props.record.items\r\n          }}\r\n          render={({\r\n            handleSubmitWithRedirect,\r\n            pristine,\r\n            saving\r\n          }) => (\r\n            <>\r\n              <CustomForm edit={true} />\r\n                            \r\n              <DialogActions>\r\n                <Button label=\"ra.action.cancel\" onClick={handleCloseClick} disabled={loading} >\r\n                  <IconCancel />\r\n                </Button>\r\n                <SaveButton\r\n                  handleSubmitWithRedirect={\r\n                    handleSubmitWithRedirect\r\n                  }\r\n                  pristine={pristine}\r\n                  saving={saving}\r\n                  disabled={loading}\r\n                />\r\n              </DialogActions>\r\n            </>\r\n          )}\r\n        />\r\n      </Dialog>\r\n    </>\r\n  );\r\n};\r\n\r\nconst RenderTotalQuantity = ({ record, ...props }) => {\r\n    \r\n  let total_quantity = 0;\r\n  if (record.items)\r\n  {\r\n    record.items.forEach(element => { if (element.quantity) total_quantity+=element.quantity; } );\r\n  }\r\n    \r\n  return ( total_quantity );\r\n    \r\n};\r\n\r\nconst RenderTotalAssistants = ({ record, ...props }) => {\r\n    \r\n  let total_assistants = 0;\r\n  if (record.items)\r\n  {\r\n    record.items.forEach(element => { if (element.assistants) total_assistants+=element.assistants; } );\r\n  }\r\n    \r\n  return ( total_assistants );\r\n    \r\n};\r\n\r\nexport const UsersActivitiesShow = ({ ...props }) => {\r\n  const translate = useTranslate();   \r\n\r\n  return (\r\n        \r\n    <ResourceContextProvider value=\"users_activities\" >\r\n      <List \r\n        syncWithLocation \r\n        basePath=\"/users_activities\" \r\n        filter={{ users_id : props.users_id }}  \r\n        title=\"\"\r\n        bulkActionButtons={false}                                \r\n        perPage={1000}\r\n        sort={{ field: 'year', order: 'ASC' }} \r\n        pagination={false}\r\n        actions={false}\r\n        empty={<></>}\r\n        className=\"users_remittances_list\"\r\n      >                            \r\n        <Datagrid\r\n          expand={<UsersActivitiesDetails />} \r\n          className=\"header_grey6\"\r\n          fullWidth\r\n        >   \r\n          <TextField source=\"year\" label={translate('common.year')} sortable={false}  />                        \r\n          <FunctionField label={translate('users_activities.total_quantity')} render={record => <RenderTotalQuantity record={record} /> } sortable={false} />\r\n          <FunctionField label={translate('users_activities.total_assistants')} render={record => <RenderTotalAssistants record={record} /> } sortable={false} />           \r\n        </Datagrid>\r\n\r\n      </List> \r\n\r\n    </ResourceContextProvider>            \r\n\r\n  );\r\n};\r\n\r\nexport const CustomToolbar = ({ ...props }) => {\r\n\r\n  return (\r\n        \r\n    <TopToolbar>\r\n      <CustomCreateButton users_id={props.users_id} />\r\n    </TopToolbar>\r\n        \r\n  );\r\n};\r\n\r\n\r\nexport const CustomCreateButton = ({ ...props }) => {\r\n\r\n  const [showDialog, setShowDialog] = useState(false);\r\n  const [create, { loading }] = useCreate('users_activities');\r\n  const notify = useNotify();\r\n  const refresh = useRefresh();    \r\n  const translate = useTranslate();  \r\n    \r\n\r\n  const handleClick = () => {\r\n    setShowDialog(true);\r\n  };\r\n\r\n  const handleCloseClick = () => {\r\n    setShowDialog(false);\r\n  };\r\n\r\n  const handleSubmit = async values => {\r\n    create(\r\n      { payload: { data: values } },\r\n      {\r\n        onSuccess: ({ data }) => {\r\n          setShowDialog(false);\r\n          refresh();\r\n        },\r\n        onFailure: ( error ) => {\r\n          notify(error.message, 'error');\r\n        }\r\n      }\r\n    );\r\n  };\r\n\r\n\r\n  return (\r\n    <>            \r\n      <Button onClick={handleClick} label={translate('users_activities.create_button')}>\r\n        <IconContentAdd />                \r\n      </Button>\r\n\r\n      <Dialog\r\n        fullWidth\r\n        open={showDialog}\r\n        onClose={handleCloseClick}\r\n        aria-label={translate('users_activities.create')}\r\n      >\r\n        <DialogTitle>{translate('users_activities.create')}</DialogTitle>\r\n\r\n        <FormWithRedirect\r\n          resource=\"users_activities\"\r\n          save={handleSubmit}\r\n          initialValues={{ users_id : props.users_id }}\r\n          render={({\r\n            handleSubmitWithRedirect,\r\n            pristine,\r\n            saving\r\n          }) => (\r\n            <>\r\n              <CustomForm edit={false} />\r\n                            \r\n              <DialogActions>\r\n                <Button label=\"ra.action.cancel\" onClick={handleCloseClick} disabled={loading} >\r\n                  <IconCancel />\r\n                </Button>\r\n                <SaveButton\r\n                  handleSubmitWithRedirect={\r\n                    handleSubmitWithRedirect\r\n                  }\r\n                  pristine={pristine}\r\n                  saving={saving}\r\n                  disabled={loading}\r\n                />\r\n              </DialogActions>\r\n            </>\r\n          )}\r\n        />\r\n      </Dialog>\r\n    </>\r\n  );\r\n};\r\n\r\nconst CustomForm = ({ edit, ...props }) => {\r\n  const translate = useTranslate(); \r\n  const classes = useStyles();\r\n    \r\n  return (\r\n    <DialogContent className=\"users_activities_form\">\r\n      <br />\r\n      <Grid container spacing={2} >\r\n        <Grid item xs={3}>  \r\n          { edit ? (\r\n            <NumberInput label={translate('common.year')} fullWidth source=\"year\" step={1} disabled />                                        \r\n          ) : (\r\n            <NumberInput label={translate('common.year')} fullWidth source=\"year\" step={1} validate={[required(),validateInteger(translate('common.validation.number'))]} />                           \r\n          )}\r\n        </Grid> \r\n      </Grid>\r\n                \r\n      <ArrayInput source=\"items\" label=\"\">\r\n        <SimpleFormIterator \r\n          disableReordering                     \r\n        >\r\n          <ReferenceInput sort={{ field: 'priority', order: 'ASC' }} perPage={1000} label={translate('users_activities.name')} source=\"activities_users_id\" reference=\"activities_users\">\r\n            <SelectInput fullWidth optionText=\"name\" optionValue=\"id\" validate={required()} />\r\n          </ReferenceInput> \r\n          <NumberInput source=\"quantity\" step={1} validate={[validateInteger(translate('common.validation.number'))]} label={translate('users_activities.quantity')} />\r\n          <NumberInput source=\"assistants\" step={1} validate={[validateInteger(translate('common.validation.number'))]} label={translate('users_activities.assistants')} />\r\n          <SelectInput fullWidth label={translate('users_activities.adult')} source=\"adult\" choices={choicesAdult(translate)} resettable /> \r\n          <TextInput fullWidth source=\"comment\" validate={[validateMaxLength(255,translate('common.validation.maxLength'))]} label={translate('common.comment')} />\r\n                            \r\n        </SimpleFormIterator>\r\n      </ArrayInput>\r\n                        \r\n    </DialogContent>\r\n  );\r\n    \r\n    \r\n};\r\n    \r\n\r\nexport const UsersActivitiesDetails = ({ id, record, resource, ...props }) => {\r\n  const translate = useTranslate(); \r\n        \r\n  let total_quantity = 0;\r\n  if (record.items)\r\n  {\r\n    record.items.forEach(element => { if (element.quantity) total_quantity+=element.quantity; } );\r\n  }\r\n    \r\n  let total_assistants = 0;\r\n  if (record.items)\r\n  {\r\n    record.items.forEach(element => { if (element.assistants) total_assistants+=element.assistants; } );\r\n  }\r\n        \r\n  return (\r\n    <div className=\"usersEconomicDataExpand\">\r\n      <Grid container spacing={2}>\r\n        <Grid item xs={2} >\r\n          <FunctionField render={record => <TextFieldShow source={record.year} label={translate('common.year')} /> } />\r\n        </Grid>\r\n        <Grid item xs={3} >\r\n          <FunctionField render={record => <TextFieldShow source={total_quantity} label={translate('users_activities.total_quantity')} /> } />\r\n        </Grid>\r\n        <Grid item xs={3} >\r\n          <FunctionField render={record => <TextFieldShow source={total_assistants} label={translate('users_activities.total_assistants')} /> } />\r\n        </Grid>\r\n      </Grid>\r\n        \r\n      <br />\r\n      <Divider className=\"\" />\r\n      <br />\r\n      <ArrayField source=\"items\">\r\n        <Datagrid>\r\n          <ReferenceField label={translate('users_activities.name')} source=\"activities_users_id\" reference=\"activities_users\" link={false} > \r\n            <TextField source=\"name\" />                               \r\n          </ReferenceField>\r\n          <TextField source=\"quantity\" label={translate('users_activities.quantity')} />\r\n          <TextField source=\"assistants\" label={translate('users_activities.assistants')} />\r\n          <FunctionField render={record => record.adult ? translate('users_shows.adult_' + record.adult) : '' } label={translate('users_activities.adult')} />\r\n          <TextField source=\"comment\" label={translate('common.comment')} />\r\n        </Datagrid>\r\n      </ArrayField>\r\n        \r\n      <br /> \r\n    </div>\r\n  );\r\n};","import React, { useState } from 'react';\r\n\r\nimport { SaveButton ,\r\n  List,\r\n  Datagrid,\r\n  TextField,\r\n  DeleteButton,\r\n  SelectInput,\r\n  useTranslate,\r\n  required,    \r\n  useCreate,\r\n  useUpdate,\r\n  useNotify,\r\n  FormWithRedirect,useRefresh,\r\n  Button,\r\n  FunctionField, TopToolbar, NumberInput, ResourceContextProvider,\r\n  ArrayField, ArrayInput,SimpleFormIterator , SelectField, TextInput, CheckboxGroupInput\r\n} from 'react-admin';\r\n\r\nimport { useWatch } from \"react-hook-form\";\r\n\r\nimport EditIcon from '@material-ui/icons/Edit';\r\n\r\nimport { useStyles  } from '../common/styles';\r\n\r\n\r\n\r\nimport { choicesTrainingsType0,choicesTrainingsType1,choicesTrainingsFormal,choicesTrainingsFormalArt, choicesTrainingsTrainingType, choicesTrainingsPeriodicity, choicesTrainingsAges  } from './../common/constants';\r\n\r\n\r\nimport Divider from '@mui/material/Divider';\r\n\r\nimport IconContentAdd from '@material-ui/icons/Add';\r\nimport IconCancel from '@material-ui/icons/Cancel';\r\n\r\nimport Dialog from '@material-ui/core/Dialog';\r\nimport DialogTitle from '@material-ui/core/DialogTitle';\r\nimport DialogContent from '@material-ui/core/DialogContent';\r\nimport DialogActions from '@material-ui/core/DialogActions';\r\n\r\n\r\nimport { TextFieldShow } from '../components/TextFieldShow';\r\n\r\nimport Grid from '@mui/material/Grid';\r\n\r\nimport { validateInteger, validateMaxLength  } from './../components/Validator';\r\n\r\nexport const UsersTrainingsList = (props) => {\r\n  const translate = useTranslate(); \r\n    \r\n  let strRedirect =  `/users/${props.users_id}/more_federation`; \r\n    \r\n  return (\r\n           \r\n    <ResourceContextProvider value=\"users_trainings\" >\r\n      <List \r\n        syncWithLocation \r\n        basePath=\"/users_trainings\" \r\n        filter={{ users_id : props.users_id, type: props.type }}  \r\n        title=\"\"\r\n        bulkActionButtons={false}                \r\n        actions={<CustomToolbar users_id={props.users_id} type={props.type} /> }  \r\n        perPage={1000}\r\n        sort={{ field: 'year', order: 'ASC' }} \r\n        empty={<CustomToolbar users_id={props.users_id} type={props.type} /> } \r\n        pagination={false}\r\n      >\r\n\r\n        <Datagrid   \r\n          expand={<UsersTrainingsDetails type={props.type} />} \r\n          className=\"header_grey6\"\r\n          label=\"\"\r\n          fullWidth\r\n        >\r\n          <TextField source=\"year\" label={translate('common.year')} sortable={false} /> \r\n          <TextField source=\"hours\" label={translate('users_trainings.total_hours')} sortable={false} />  \r\n          <FunctionField label={translate('users_trainings.total_quantity' + props.type)} render={record => <RenderTotalQuantity record={record} /> } sortable={false} />\r\n          <FunctionField label={translate('users_trainings.total_students')} render={record => <RenderTotalStudents record={record} /> } sortable={false} />\r\n          <FunctionField label={translate('users_trainings.total_teachers_workers')} render={record => <RenderTotalTeachersWorkers record={record} /> } sortable={false} />\r\n          <FunctionField label={translate('users_trainings.total_teachers_volunteers')} render={record => <RenderTotalTeachersVolunteers record={record} /> } sortable={false} />\r\n          <CustomEditButton label=\"\" type={props.type}/>\r\n          <DeleteButton undoable={false} redirect={strRedirect} label=\"\"/>\r\n        </Datagrid>\r\n\r\n      </List> \r\n    </ResourceContextProvider>\r\n\r\n  );\r\n};\r\n\r\n\r\nexport const CustomEditButton = ({ ...props }) => {\r\n\r\n  const [showDialog, setShowDialog] = useState(false);\r\n  const notify = useNotify();\r\n  const refresh = useRefresh();    \r\n  const translate = useTranslate();  \r\n\r\n  const [update, { loading, error }] = useUpdate();\r\n\r\n  const handleClick = () => {\r\n    setShowDialog(true);\r\n  };\r\n\r\n  const handleCloseClick = () => {\r\n    setShowDialog(false);\r\n  };\r\n                        \r\n  const handleSubmit = async values => {\r\n    update(\r\n      { \r\n        type: 'update', \r\n        resource: 'users_trainings', \r\n        payload : { id: values.id, data : \r\n                {       users_id: values.users_id,\r\n                  year : values.year, \r\n                  hours : values.hours, \r\n                  type: values.type,\r\n                  items: values.items\r\n                } }\r\n      },\r\n      {\r\n        onSuccess: ({ data }) => {\r\n          setShowDialog(false);\r\n          refresh();\r\n        },\r\n        onFailure: ( error ) => {\r\n          notify(error.message, 'error');\r\n        }\r\n      }\r\n    );\r\n  };    \r\n\r\n  return (\r\n    <>\r\n      <Button onClick={handleClick} label=\"\" startIcon={<EditIcon />} />\r\n\r\n      <Dialog\r\n        fullWidth\r\n        open={showDialog}\r\n        onClose={handleCloseClick}\r\n      >\r\n        <DialogTitle>{translate('users_trainings.edit'+props.type)}</DialogTitle>\r\n\r\n        <FormWithRedirect\r\n          resource=\"\"\r\n          save={handleSubmit}\r\n          initialValues={{ id : props.record.id, \r\n            users_id: props.record.users_id,\r\n            year : props.record.year, \r\n            hours : props.record.hours, \r\n            type: props.record.type,\r\n            items: props.record.items\r\n          }}\r\n          render={({\r\n            handleSubmitWithRedirect,\r\n            pristine,\r\n            saving\r\n          }) => (\r\n            <>\r\n              <CustomForm edit={true} type={props.type} />\r\n                            \r\n              <DialogActions>\r\n                <Button label=\"ra.action.cancel\" onClick={handleCloseClick} disabled={loading} >\r\n                  <IconCancel />\r\n                </Button>\r\n                <SaveButton\r\n                  handleSubmitWithRedirect={\r\n                    handleSubmitWithRedirect\r\n                  }\r\n                  pristine={pristine}\r\n                  saving={saving}\r\n                  disabled={loading}\r\n                />\r\n              </DialogActions>\r\n            </>\r\n          )}\r\n        />\r\n      </Dialog>\r\n    </>\r\n  );\r\n};\r\n\r\nconst RenderTotalHours = ({ record, ...props }) => {\r\n    \r\n  let total_hours = 0;\r\n  if (record.items)\r\n  {\r\n    record.items.forEach(element => { if (element.hours) total_hours+=element.hours; } );\r\n  }\r\n    \r\n  return ( total_hours );\r\n    \r\n};\r\n\r\nconst RenderTotalQuantity = ({ record, ...props }) => {\r\n    \r\n  let total_quantity = 0;\r\n  if (record.items)\r\n  {\r\n    record.items.forEach(element => { total_quantity+=1; } );\r\n  }\r\n    \r\n  return ( total_quantity );\r\n    \r\n};\r\n\r\nconst RenderTotalStudents = ({ record, ...props }) => {\r\n    \r\n  let total_students = 0;\r\n  if (record.items)\r\n  {\r\n    record.items.forEach(element => { if (element.students) total_students+=element.students; } );\r\n  }\r\n    \r\n  return ( total_students );\r\n    \r\n};\r\n\r\nconst RenderTotalTeachersWorkers = ({ record, ...props }) => {\r\n    \r\n  let total_teachers = 0;\r\n  if (record.items)\r\n  {\r\n    record.items.forEach(element => { if (element.teachers_workers) total_teachers+=element.teachers_workers; } );\r\n  }\r\n    \r\n  return ( total_teachers );\r\n    \r\n};\r\n\r\nconst RenderTotalTeachersVolunteers = ({ record, ...props }) => {\r\n    \r\n  let total_teachers = 0;\r\n  if (record.items)\r\n  {\r\n    record.items.forEach(element => { if (element.teachers_volunteers) total_teachers+=element.teachers_volunteers; } );\r\n  }\r\n    \r\n  return ( total_teachers );\r\n    \r\n};\r\n\r\n\r\nexport const UsersTrainingsShow = ({ ...props }) => {\r\n  const translate = useTranslate();   \r\n\r\n  return (\r\n        \r\n    <ResourceContextProvider value=\"users_trainings\" >\r\n      <List \r\n        syncWithLocation \r\n        basePath=\"/users_trainings\" \r\n        filter={{ users_id : props.users_id, type: props.type }}  \r\n        title=\"\"\r\n        bulkActionButtons={false}                                \r\n        perPage={1000}\r\n        sort={{ field: 'year', order: 'ASC' }} \r\n        pagination={false}\r\n        actions={false}\r\n        empty={<></>}\r\n        className=\"users_remittances_list\"\r\n      >                            \r\n        <Datagrid\r\n          expand={<UsersTrainingsDetails type={props.type} />} \r\n          className=\"header_grey6\"\r\n          fullWidth\r\n          props\r\n        >   \r\n          <TextField source=\"year\" label={translate('common.year')} sortable={false}  />                  \r\n          <TextField source=\"hours\" label={translate('users_trainings.total_hours')} sortable={false} /> \r\n          <FunctionField label={translate('users_trainings.total_quantity' + props.type )} render={record => <RenderTotalQuantity record={record} /> } sortable={false} />\r\n          <FunctionField label={translate('users_trainings.total_students')} render={record => <RenderTotalStudents record={record} /> } sortable={false} /> \r\n          <FunctionField label={translate('users_trainings.total_teachers_workers')} render={record => <RenderTotalTeachersWorkers record={record} /> } sortable={false} /> \r\n          <FunctionField label={translate('users_trainings.total_teachers_volunteers')} render={record => <RenderTotalTeachersVolunteers record={record} /> } sortable={false} /> \r\n        </Datagrid>\r\n\r\n      </List> \r\n\r\n    </ResourceContextProvider>            \r\n\r\n  );\r\n};\r\n\r\nexport const CustomToolbar = ({ ...props }) => {\r\n\r\n  return (\r\n        \r\n    <TopToolbar>\r\n      <CustomCreateButton users_id={props.users_id} type={props.type} />\r\n    </TopToolbar>\r\n        \r\n  );\r\n};\r\n\r\n\r\nexport const CustomCreateButton = ({ ...props }) => {\r\n\r\n  const [showDialog, setShowDialog] = useState(false);\r\n  const [create, { loading }] = useCreate('users_trainings');\r\n  const notify = useNotify();\r\n  const refresh = useRefresh();    \r\n  const translate = useTranslate();  \r\n    \r\n\r\n  const handleClick = () => {\r\n    setShowDialog(true);\r\n  };\r\n\r\n  const handleCloseClick = () => {\r\n    setShowDialog(false);\r\n  };\r\n\r\n  const handleSubmit = async values => {\r\n    create(\r\n      { payload: { data: values } },\r\n      {\r\n        onSuccess: ({ data }) => {\r\n          setShowDialog(false);\r\n          refresh();\r\n        },\r\n        onFailure: ( error ) => {\r\n          notify(error.message, 'error');\r\n        }\r\n      }\r\n    );\r\n  };\r\n\r\n\r\n  return (\r\n    <>            \r\n      <Button onClick={handleClick} label={translate('users_trainings.create_button')}>\r\n        <IconContentAdd />                \r\n      </Button>\r\n\r\n      <Dialog\r\n        fullWidth\r\n        open={showDialog}\r\n        onClose={handleCloseClick}\r\n        aria-label={translate('users_trainings.create' + props.type)}\r\n      >\r\n        <DialogTitle>{translate('users_trainings.create' + props.type)}</DialogTitle>\r\n\r\n        <FormWithRedirect\r\n          resource=\"users_trainings\"\r\n          save={handleSubmit}\r\n          initialValues={{ users_id : props.users_id, type: props.type }}\r\n          render={({\r\n            handleSubmitWithRedirect,\r\n            pristine,\r\n            saving\r\n          }) => (\r\n            <>\r\n              <CustomForm edit={false} type={props.type}/>\r\n                            \r\n              <DialogActions>\r\n                <Button label=\"ra.action.cancel\" onClick={handleCloseClick} disabled={loading} >\r\n                  <IconCancel />\r\n                </Button>\r\n                <SaveButton\r\n                  handleSubmitWithRedirect={\r\n                    handleSubmitWithRedirect\r\n                  }\r\n                  pristine={pristine}\r\n                  saving={saving}\r\n                  disabled={loading}\r\n                />\r\n              </DialogActions>\r\n            </>\r\n          )}\r\n        />\r\n      </Dialog>\r\n    </>\r\n  );\r\n};\r\n\r\nconst CustomForm = ({ edit, ...props }) => {\r\n  const translate = useTranslate(); \r\n  const classes = useStyles();\r\n    \r\n  return (\r\n    <DialogContent className=\"users_activities_form\">\r\n      <br />\r\n      <Grid container spacing={2} >\r\n        <Grid item xs={3}>  \r\n          { edit ? (\r\n            <NumberInput label={translate('common.year')} fullWidth source=\"year\" step={1} disabled />                                        \r\n          ) : (\r\n            <NumberInput label={translate('common.year')} fullWidth source=\"year\" step={1} validate={[required(),validateInteger(translate('common.validation.number'))]} />                           \r\n          )}\r\n        </Grid> \r\n        <Grid item xs={3}>  \r\n          <NumberInput label={translate('users_trainings.total_hours')} fullWidth source=\"hours\" step={1} validate={[validateInteger(translate('common.validation.number'))]} />                           \r\n        </Grid> \r\n      </Grid>\r\n                \r\n      <ArrayInput source=\"items\" label=\"\">\r\n        <SimpleFormIterator \r\n          disableReordering                     \r\n        >\r\n          {props.type==0 ?\r\n            <SelectInput source=\"training_type\" label={translate('users_trainings.training_type')} fullWidth choices={choicesTrainingsTrainingType(translate)} />\r\n          : null }\r\n          {props.type==0 ?\r\n            <TextInput fullWidth source=\"training_type_others\" validate={[validateMaxLength(255,translate('common.validation.maxLength'))]} label={translate('users_trainings.training_type_others')} />            \r\n          : null }          \r\n          {props.type==0 ?\r\n            <SelectInput source=\"type\" label={translate('users_trainings.type')} fullWidth validate={required()} choices={choicesTrainingsType0(translate)} />\r\n            :\r\n            <SelectInput source=\"type\" label={translate('users_trainings.type')} fullWidth validate={required()} choices={choicesTrainingsType1(translate)} />                            \r\n          }\r\n          {props.type==0 ?\r\n            <SelectInput source=\"formal\" label={translate('users_trainings.formal')} fullWidth validate={required()} choices={choicesTrainingsFormalArt(translate)} />\r\n          :\r\n            <SelectInput source=\"formal\" label={translate('users_trainings.formal')} fullWidth validate={required()} choices={choicesTrainingsFormal(translate)} />\r\n          }\r\n          { props.type==0 ? <CheckboxGroupInput source=\"periodicities\" choices={choicesTrainingsPeriodicity(translate)} label={translate('users_trainings.periodicities')} /> : null }\r\n          { props.type==0 ? <SelectInput source=\"ages\" label={translate('users_trainings.ages')} fullWidth choices={choicesTrainingsAges(translate)} /> : null }\r\n          { props.type==0 ? <NumberInput source=\"num_classrooms\" step={1} validate={[validateInteger(translate('common.validation.number'))]} label={translate('users_trainings.num_classrooms')} /> : null }\r\n          \r\n          <NumberInput source=\"students\" step={1} validate={[validateInteger(translate('common.validation.number'))]} label={translate('users_trainings.students')} />\r\n          <NumberInput source=\"teachers_workers\" step={1} validate={[validateInteger(translate('common.validation.number'))]} label={translate('users_trainings.teachers_workers')} />\r\n          <NumberInput source=\"teachers_volunteers\" step={1} validate={[validateInteger(translate('common.validation.number'))]} label={translate('users_trainings.teachers_volunteers')} />\r\n                            \r\n        </SimpleFormIterator>\r\n      </ArrayInput>\r\n                        \r\n    </DialogContent>\r\n  );\r\n    \r\n    \r\n};\r\n    \r\n\r\nexport const UsersTrainingsDetails = ({ id, record, resource, ...props }) => {\r\n  const translate = useTranslate(); \r\n        \r\n  let total_quantity = 0;\r\n  if (record.items)\r\n  {\r\n    record.items.forEach(element => { total_quantity+=1; } );\r\n  }\r\n        \r\n  let total_students = 0;\r\n  if (record.items)\r\n  {\r\n    record.items.forEach(element => { if (element.students) total_students+=element.students; } );\r\n  }\r\n    \r\n  let total_teachers_workers = 0;\r\n  if (record.items)\r\n  {\r\n    record.items.forEach(element => { if (element.teachers_workers) total_teachers_workers+=element.teachers_workers; } );\r\n  }\r\n    \r\n  let total_teachers_volunteers = 0;\r\n  if (record.items)\r\n  {\r\n    record.items.forEach(element => { if (element.teachers_volunteers) total_teachers_volunteers+=element.teachers_volunteers; } );\r\n  }\r\n        \r\n  return (\r\n    <div className=\"usersEconomicDataExpand\">\r\n      <Grid container spacing={2}>\r\n        <Grid item xs={2} >\r\n          <FunctionField render={record => <TextFieldShow source={record.year} label={translate('common.year')} /> } />\r\n        </Grid>\r\n        <Grid item xs={2} >\r\n          <FunctionField render={record => <TextFieldShow source={record.hours} label={translate('users_trainings.total_hours')} /> } />\r\n        </Grid>\r\n        <Grid item xs={2} >\r\n          <FunctionField render={record => <TextFieldShow source={total_quantity} label={translate('users_trainings.total_quantity'+props.type)} /> } />\r\n        </Grid>\r\n        <Grid item xs={2} >\r\n          <FunctionField render={record => <TextFieldShow source={total_students} label={translate('users_trainings.total_students')} /> } />\r\n        </Grid>\r\n        <Grid item xs={2} >\r\n          <FunctionField render={record => <TextFieldShow source={total_teachers_workers} label={translate('users_trainings.total_teachers_workers')} /> } />\r\n        </Grid>\r\n        <Grid item xs={2} >\r\n          <FunctionField render={record => <TextFieldShow source={total_teachers_volunteers} label={translate('users_trainings.total_teachers_volunteers')} /> } />\r\n        </Grid>\r\n      </Grid>\r\n        \r\n      <br />\r\n      <Divider className=\"\" />\r\n      <br />\r\n      <ArrayField source=\"items\">\r\n        <Datagrid>\r\n          {props.type==0 ?\r\n            <SelectField source=\"type\" choices={choicesTrainingsType0(translate)} label={translate('users_trainings.type')} sortable={false} />\r\n            :\r\n            <SelectField source=\"type\" choices={choicesTrainingsType1(translate)} label={translate('users_trainings.type')} sortable={false} />\r\n          }\r\n          <SelectField source=\"formal\" choices={choicesTrainingsFormal(translate)} label={translate('users_trainings.formal')} sortable={false} />\r\n          <TextField source=\"students\" label={translate('users_trainings.students')} />\r\n          <TextField source=\"teachers_workers\" label={translate('users_trainings.teachers_workers')} />\r\n          <TextField source=\"teachers_volunteers\" label={translate('users_trainings.teachers_volunteers')} />\r\n        </Datagrid>\r\n      </ArrayField>\r\n        \r\n      <br /> \r\n    </div>\r\n  );\r\n};","import React, { useState } from 'react';\r\n\r\nimport { SaveButton ,\r\n  List,\r\n  Datagrid,\r\n  TextField,\r\n  DeleteButton,\r\n  SelectInput,\r\n  useTranslate,\r\n  required,    \r\n  useCreate,\r\n  useUpdate,\r\n  useNotify,\r\n  FormWithRedirect,useRefresh,\r\n  Button,\r\n  FunctionField, TopToolbar, NumberInput, ResourceContextProvider,\r\n  ArrayField, ArrayInput,SimpleFormIterator , SelectField\r\n} from 'react-admin';\r\n\r\n\r\nimport EditIcon from '@material-ui/icons/Edit';\r\n\r\nimport { useStyles  } from '../common/styles';\r\n\r\n\r\n\r\nimport { choicesSocialProjects  } from './../common/constants';\r\n\r\n\r\nimport Divider from '@mui/material/Divider';\r\n\r\nimport IconContentAdd from '@material-ui/icons/Add';\r\nimport IconCancel from '@material-ui/icons/Cancel';\r\n\r\nimport Dialog from '@material-ui/core/Dialog';\r\nimport DialogTitle from '@material-ui/core/DialogTitle';\r\nimport DialogContent from '@material-ui/core/DialogContent';\r\nimport DialogActions from '@material-ui/core/DialogActions';\r\n\r\n\r\nimport { TextFieldShow } from '../components/TextFieldShow';\r\n\r\nimport Grid from '@mui/material/Grid';\r\n\r\n\r\nimport { validateInteger  } from './../components/Validator';\r\n\r\nexport const UsersSocialProjectsList = (props) => {\r\n  const translate = useTranslate(); \r\n    \r\n  let strRedirect =  `/users/${props.users_id}/more_federation`; \r\n    \r\n  return (\r\n           \r\n    <ResourceContextProvider value=\"users_social_projects\" >\r\n      <List \r\n        syncWithLocation \r\n        basePath=\"/users_social_projects\" \r\n        filter={{ users_id : props.users_id }}  \r\n        title=\"\"\r\n        bulkActionButtons={false}                \r\n        actions={<CustomToolbar users_id={props.users_id} /> }  \r\n        perPage={1000}\r\n        sort={{ field: 'year', order: 'ASC' }} \r\n        empty={<CustomToolbar users_id={props.users_id} /> } \r\n        pagination={false}\r\n      >\r\n\r\n        <Datagrid   \r\n          expand={<UsersSocialProjectsDetails />} \r\n          className=\"header_grey6\"\r\n          label=\"\"\r\n          fullWidth\r\n        >\r\n          <TextField source=\"year\" label={translate('common.year')} sortable={false} /> \r\n          <FunctionField label={translate('users_social_projects.total_quantity' )} render={record => <RenderTotalQuantity record={record} /> } sortable={false} />\r\n          <CustomEditButton label=\"\" />\r\n          <DeleteButton undoable={false} redirect={strRedirect} label=\"\"/>\r\n        </Datagrid>\r\n\r\n      </List> \r\n    </ResourceContextProvider>\r\n\r\n  );\r\n};\r\n\r\n\r\nexport const CustomEditButton = ({ ...props }) => {\r\n\r\n  const [showDialog, setShowDialog] = useState(false);\r\n  const notify = useNotify();\r\n  const refresh = useRefresh();    \r\n  const translate = useTranslate();  \r\n\r\n  const [update, { loading, error }] = useUpdate();\r\n\r\n  const handleClick = () => {\r\n    setShowDialog(true);\r\n  };\r\n\r\n  const handleCloseClick = () => {\r\n    setShowDialog(false);\r\n  };\r\n                        \r\n  const handleSubmit = async values => {\r\n    update(\r\n      { \r\n        type: 'update', \r\n        resource: 'users_social_projects', \r\n        payload : { id: values.id, data : \r\n                {       users_id: values.users_id,\r\n                  year : values.year, \r\n                  items: values.items\r\n                } }\r\n      },\r\n      {\r\n        onSuccess: ({ data }) => {\r\n          setShowDialog(false);\r\n          refresh();\r\n        },\r\n        onFailure: ( error ) => {\r\n          notify(error.message, 'error');\r\n        }\r\n      }\r\n    );\r\n  };    \r\n\r\n  return (\r\n    <>\r\n      <Button onClick={handleClick} label=\"\" startIcon={<EditIcon />} />\r\n\r\n      <Dialog\r\n        fullWidth\r\n        open={showDialog}\r\n        onClose={handleCloseClick}\r\n      >\r\n        <DialogTitle>{translate('users_social_projects.edit')}</DialogTitle>\r\n\r\n        <FormWithRedirect\r\n          resource=\"\"\r\n          save={handleSubmit}\r\n          initialValues={{ id : props.record.id, \r\n            users_id: props.record.users_id,\r\n            year : props.record.year, \r\n            items: props.record.items\r\n          }}\r\n          render={({\r\n            handleSubmitWithRedirect,\r\n            pristine,\r\n            saving\r\n          }) => (\r\n            <>\r\n              <CustomForm edit={true} />\r\n                            \r\n              <DialogActions>\r\n                <Button label=\"ra.action.cancel\" onClick={handleCloseClick} disabled={loading} >\r\n                  <IconCancel />\r\n                </Button>\r\n                <SaveButton\r\n                  handleSubmitWithRedirect={\r\n                    handleSubmitWithRedirect\r\n                  }\r\n                  pristine={pristine}\r\n                  saving={saving}\r\n                  disabled={loading}\r\n                />\r\n              </DialogActions>\r\n            </>\r\n          )}\r\n        />\r\n      </Dialog>\r\n    </>\r\n  );\r\n};\r\n\r\nconst RenderTotalQuantity = ({ record, ...props }) => {\r\n    \r\n  let total_quantity = 0;\r\n  if (record.items)\r\n  {\r\n    record.items.forEach(element => { if (element.quantity) total_quantity+=element.quantity;  } );\r\n  }\r\n    \r\n  return ( total_quantity );\r\n    \r\n};\r\n\r\nexport const UsersSocialProjectsShow = ({ ...props }) => {\r\n  const translate = useTranslate();   \r\n\r\n  return (\r\n        \r\n    <ResourceContextProvider value=\"users_social_projects\" >\r\n      <List \r\n        syncWithLocation \r\n        basePath=\"/users_social_projects\" \r\n        filter={{ users_id : props.users_id }}  \r\n        title=\"\"\r\n        bulkActionButtons={false}                                \r\n        perPage={1000}\r\n        sort={{ field: 'year', order: 'ASC' }} \r\n        pagination={false}\r\n        actions={false}\r\n        empty={<></>}\r\n        className=\"users_remittances_list\"\r\n      >                            \r\n        <Datagrid\r\n          expand={<UsersSocialProjectsDetails />} \r\n          className=\"header_grey6\"\r\n          fullWidth\r\n          props\r\n        >   \r\n          <TextField source=\"year\" label={translate('common.year')} sortable={false}  />                  \r\n          <FunctionField label={translate('users_social_projects.total_quantity' )} render={record => <RenderTotalQuantity record={record} /> } sortable={false} />          \r\n        </Datagrid>\r\n\r\n      </List> \r\n\r\n    </ResourceContextProvider>            \r\n\r\n  );\r\n};\r\n\r\nexport const CustomToolbar = ({ ...props }) => {\r\n\r\n  return (\r\n        \r\n    <TopToolbar>\r\n      <CustomCreateButton users_id={props.users_id} />\r\n    </TopToolbar>\r\n        \r\n  );\r\n};\r\n\r\n\r\nexport const CustomCreateButton = ({ ...props }) => {\r\n\r\n  const [showDialog, setShowDialog] = useState(false);\r\n  const [create, { loading }] = useCreate('users_social_projects');\r\n  const notify = useNotify();\r\n  const refresh = useRefresh();    \r\n  const translate = useTranslate();  \r\n    \r\n\r\n  const handleClick = () => {\r\n    setShowDialog(true);\r\n  };\r\n\r\n  const handleCloseClick = () => {\r\n    setShowDialog(false);\r\n  };\r\n\r\n  const handleSubmit = async values => {\r\n    create(\r\n      { payload: { data: values } },\r\n      {\r\n        onSuccess: ({ data }) => {\r\n          setShowDialog(false);\r\n          refresh();\r\n        },\r\n        onFailure: ( error ) => {\r\n          notify(error.message, 'error');\r\n        }\r\n      }\r\n    );\r\n  };\r\n\r\n\r\n  return (\r\n    <>            \r\n      <Button onClick={handleClick} label={translate('users_social_projects.create_button')}>\r\n        <IconContentAdd />                \r\n      </Button>\r\n\r\n      <Dialog\r\n        fullWidth\r\n        open={showDialog}\r\n        onClose={handleCloseClick}\r\n        aria-label={translate('users_social_projects.create')}\r\n      >\r\n        <DialogTitle>{translate('users_social_projects.create')}</DialogTitle>\r\n\r\n        <FormWithRedirect\r\n          resource=\"users_social_projects\"\r\n          save={handleSubmit}\r\n          initialValues={{ users_id : props.users_id }}\r\n          render={({\r\n            handleSubmitWithRedirect,\r\n            pristine,\r\n            saving\r\n          }) => (\r\n            <>\r\n              <CustomForm edit={false} />\r\n                            \r\n              <DialogActions>\r\n                <Button label=\"ra.action.cancel\" onClick={handleCloseClick} disabled={loading} >\r\n                  <IconCancel />\r\n                </Button>\r\n                <SaveButton\r\n                  handleSubmitWithRedirect={\r\n                    handleSubmitWithRedirect\r\n                  }\r\n                  pristine={pristine}\r\n                  saving={saving}\r\n                  disabled={loading}\r\n                />\r\n              </DialogActions>\r\n            </>\r\n          )}\r\n        />\r\n      </Dialog>\r\n    </>\r\n  );\r\n};\r\n\r\nconst CustomForm = ({ edit, ...props }) => {\r\n  const translate = useTranslate(); \r\n  const classes = useStyles();\r\n    \r\n  return (\r\n    <DialogContent className=\"users_activities_form\">\r\n      <br />\r\n      <Grid container spacing={2} >\r\n        <Grid item xs={3}>  \r\n          { edit ? (\r\n            <NumberInput label={translate('common.year')} fullWidth source=\"year\" step={1} disabled />                                        \r\n          ) : (\r\n            <NumberInput label={translate('common.year')} fullWidth source=\"year\" step={1} validate={[required(),validateInteger(translate('common.validation.number'))]} />                           \r\n          )}\r\n        </Grid> \r\n      </Grid>\r\n                \r\n      <ArrayInput source=\"items\" label=\"\">\r\n        <SimpleFormIterator \r\n          disableReordering                     \r\n        >\r\n          <SelectInput source=\"type\" label={translate('users_social_projects.type')} fullWidth validate={required()} choices={choicesSocialProjects(translate)} />          \r\n          <NumberInput source=\"quantity\" step={1} validate={[validateInteger(translate('common.validation.number'))]} label={translate('users_social_projects.quantity')} />                             \r\n        </SimpleFormIterator>\r\n      </ArrayInput>\r\n                        \r\n    </DialogContent>\r\n  );\r\n    \r\n    \r\n};\r\n    \r\n\r\nexport const UsersSocialProjectsDetails = ({ id, record, resource, ...props }) => {\r\n  const translate = useTranslate(); \r\n        \r\n  let total_quantity = 0;\r\n  if (record.items)\r\n  {\r\n    record.items.forEach(element => { if (element.quantity) total_quantity+=element.quantity; } );\r\n  }\r\n                \r\n  return (\r\n    <div className=\"usersEconomicDataExpand\">\r\n      <Grid container spacing={2}>\r\n        <Grid item xs={2} >\r\n          <FunctionField render={record => <TextFieldShow source={record.year} label={translate('common.year')} /> } />\r\n        </Grid>\r\n        <Grid item xs={2} >\r\n          <FunctionField render={record => <TextFieldShow source={total_quantity} label={translate('users_social_projects.total_quantity')} /> } />\r\n        </Grid>\r\n      </Grid>\r\n        \r\n      <br />\r\n      <Divider className=\"\" />\r\n      <br />\r\n      <ArrayField source=\"items\">\r\n        <Datagrid>\r\n          <SelectField source=\"type\" choices={choicesSocialProjects(translate)} label={translate('users_social_projects.type')} sortable={false} />            \r\n          <TextField source=\"quantity\" label={translate('users_social_projects.quantity')} />\r\n        </Datagrid>\r\n      </ArrayField>\r\n        \r\n      <br /> \r\n    </div>\r\n  );\r\n};","import React, { useState } from 'react';\r\n\r\nimport { SaveButton ,\r\n  List,\r\n  Datagrid,\r\n  TextField,\r\n  DeleteButton,\r\n  SelectInput,\r\n  TextInput,\r\n  useTranslate,\r\n  required,    \r\n  useCreate,\r\n  useUpdate,\r\n  useNotify,\r\n  FormWithRedirect,useRefresh,\r\n  Button,\r\n  FunctionField, TopToolbar, NumberInput, ResourceContextProvider,\r\n  ArrayField, ArrayInput,SimpleFormIterator \r\n} from 'react-admin';\r\n\r\n\r\nimport EditIcon from '@material-ui/icons/Edit';\r\n\r\nimport { useStyles  } from '../common/styles';\r\n\r\n\r\n\r\n\r\nimport Divider from '@mui/material/Divider';\r\n\r\nimport IconContentAdd from '@material-ui/icons/Add';\r\nimport IconCancel from '@material-ui/icons/Cancel';\r\n\r\nimport Dialog from '@material-ui/core/Dialog';\r\nimport DialogTitle from '@material-ui/core/DialogTitle';\r\nimport DialogContent from '@material-ui/core/DialogContent';\r\nimport DialogActions from '@material-ui/core/DialogActions';\r\n\r\n\r\nimport { TextFieldShow } from '../components/TextFieldShow';\r\n\r\nimport Grid from '@mui/material/Grid';\r\n\r\n\r\nimport { validateMaxLength, validateInteger  } from './../components/Validator';\r\n\r\nimport { choicesShowsType, choicesAdult  } from './../common/constants';\r\n\r\nexport const UsersShowsList = (props) => {\r\n  const translate = useTranslate(); \r\n    \r\n  let strRedirect =  `/users/${props.users_id}/more_federation`; \r\n    \r\n  return (\r\n           \r\n    <ResourceContextProvider value=\"users_shows\" >\r\n      <List \r\n        syncWithLocation \r\n        basePath=\"/users_shows\" \r\n        filter={{ users_id : props.users_id }}  \r\n        title=\"\"\r\n        bulkActionButtons={false}                \r\n        actions={<CustomToolbar users_id={props.users_id} /> }  \r\n        perPage={1000}\r\n        sort={{ field: 'year', order: 'ASC' }} \r\n        empty={<CustomToolbar users_id={props.users_id} /> } \r\n        pagination={false}\r\n      >\r\n\r\n        <Datagrid   \r\n          expand={<UsersShowsDetails />} \r\n          className=\"header_grey6\"\r\n          label=\"\"\r\n          fullWidth\r\n        >\r\n          <TextField source=\"year\" label={translate('common.year')} sortable={false} /> \r\n          <FunctionField label={translate('users_shows.total_quantity')} render={record => <RenderTotalQuantity record={record} /> } sortable={false} />\r\n          <FunctionField label={translate('users_shows.total_assistants')} render={record => <RenderTotalAssistants record={record} /> } sortable={false} />\r\n          <FunctionField label={translate('users_shows.total_inversion')} render={record => <RenderTotalInversion record={record} /> } sortable={false} />    \r\n          <CustomEditButton label=\"\"/>\r\n          <DeleteButton undoable={false} redirect={strRedirect} label=\"\"/>\r\n        </Datagrid>\r\n\r\n      </List> \r\n    </ResourceContextProvider>\r\n\r\n  );\r\n};\r\n\r\n\r\nexport const CustomEditButton = ({ ...props }) => {\r\n\r\n  const [showDialog, setShowDialog] = useState(false);\r\n  const notify = useNotify();\r\n  const refresh = useRefresh();    \r\n  const translate = useTranslate();  \r\n\r\n  const [update, { loading, error }] = useUpdate();\r\n\r\n  const handleClick = () => {\r\n    setShowDialog(true);\r\n  };\r\n\r\n  const handleCloseClick = () => {\r\n    setShowDialog(false);\r\n  };\r\n                        \r\n  const handleSubmit = async values => {\r\n    update(\r\n      { \r\n        type: 'update', \r\n        resource: 'users_shows', \r\n        payload : { id: values.id, data : \r\n                {       users_id: values.users_id,\r\n                  year : values.year, \r\n                  items: values.items\r\n                } }\r\n      },\r\n      {\r\n        onSuccess: ({ data }) => {\r\n          setShowDialog(false);\r\n          refresh();\r\n        },\r\n        onFailure: ( error ) => {\r\n          notify(error.message, 'error');\r\n        }\r\n      }\r\n    );\r\n  };    \r\n\r\n  return (\r\n    <>\r\n      <Button onClick={handleClick} label=\"\" startIcon={<EditIcon />} />\r\n\r\n      <Dialog\r\n        fullWidth\r\n        open={showDialog}\r\n        onClose={handleCloseClick}\r\n      >\r\n        <DialogTitle>{translate('users_shows.edit')}</DialogTitle>\r\n\r\n        <FormWithRedirect\r\n          resource=\"\"\r\n          save={handleSubmit}\r\n          initialValues={{ id : props.record.id, \r\n            users_id: props.record.users_id,\r\n            year : props.record.year, \r\n            items: props.record.items\r\n          }}\r\n          render={({\r\n            handleSubmitWithRedirect,\r\n            pristine,\r\n            saving\r\n          }) => (\r\n            <>\r\n              <CustomForm edit={true} />\r\n                            \r\n              <DialogActions>\r\n                <Button label=\"ra.action.cancel\" onClick={handleCloseClick} disabled={loading} >\r\n                  <IconCancel />\r\n                </Button>\r\n                <SaveButton\r\n                  handleSubmitWithRedirect={\r\n                    handleSubmitWithRedirect\r\n                  }\r\n                  pristine={pristine}\r\n                  saving={saving}\r\n                  disabled={loading}\r\n                />\r\n              </DialogActions>\r\n            </>\r\n          )}\r\n        />\r\n      </Dialog>\r\n    </>\r\n  );\r\n};\r\n\r\nconst RenderTotalQuantity = ({ record, ...props }) => {\r\n    \r\n  let total_quantity = 0;\r\n  if (record.items)\r\n  {\r\n    record.items.forEach(element => { if (element.quantity) total_quantity+=element.quantity; } );\r\n  }\r\n    \r\n  return ( total_quantity );\r\n    \r\n};\r\n\r\nconst RenderTotalAssistants = ({ record, ...props }) => {\r\n    \r\n  let total_assistants = 0;\r\n  if (record.items)\r\n  {\r\n    record.items.forEach(element => { if (element.assistants) total_assistants+=element.assistants; } );\r\n  }\r\n    \r\n  return ( total_assistants );\r\n    \r\n};\r\n\r\nconst RenderTotalInversion = ({ record, ...props }) => {\r\n    \r\n  let total_inversion = 0;\r\n  if (record.items)\r\n  {\r\n    record.items.forEach(element => { if (element.inversion) total_inversion+=element.inversion; } );\r\n  }\r\n    \r\n  return ( total_inversion );\r\n    \r\n};\r\n\r\nexport const UsersShowsShow = ({ ...props }) => {\r\n  const translate = useTranslate();   \r\n\r\n  return (\r\n        \r\n    <ResourceContextProvider value=\"users_shows\" >\r\n      <List \r\n        syncWithLocation \r\n        basePath=\"/users_shows\" \r\n        filter={{ users_id : props.users_id }}  \r\n        title=\"\"\r\n        bulkActionButtons={false}                                \r\n        perPage={1000}\r\n        sort={{ field: 'year', order: 'ASC' }} \r\n        pagination={false}\r\n        actions={false}\r\n        empty={<></>}\r\n        className=\"users_remittances_list\"\r\n      >                            \r\n        <Datagrid\r\n          expand={<UsersShowsDetails />} \r\n          className=\"header_grey6\"\r\n          fullWidth\r\n        >   \r\n          <TextField source=\"year\" label={translate('common.year')} sortable={false}  />                        \r\n          <FunctionField label={translate('users_shows.total_quantity')} render={record => <RenderTotalQuantity record={record} /> } sortable={false} />\r\n          <FunctionField label={translate('users_shows.total_assistants')} render={record => <RenderTotalAssistants record={record} /> } sortable={false} />\r\n          <FunctionField label={translate('users_shows.total_inversion')} render={record => <RenderTotalInversion record={record} /> } sortable={false} />                \r\n        </Datagrid>\r\n\r\n      </List> \r\n\r\n    </ResourceContextProvider>            \r\n\r\n  );\r\n};\r\n\r\nexport const CustomToolbar = ({ ...props }) => {\r\n\r\n  return (\r\n        \r\n    <TopToolbar>\r\n      <CustomCreateButton users_id={props.users_id} />\r\n    </TopToolbar>\r\n        \r\n  );\r\n};\r\n\r\n\r\nexport const CustomCreateButton = ({ ...props }) => {\r\n\r\n  const [showDialog, setShowDialog] = useState(false);\r\n  const [create, { loading }] = useCreate('users_shows');\r\n  const notify = useNotify();\r\n  const refresh = useRefresh();    \r\n  const translate = useTranslate();  \r\n    \r\n\r\n  const handleClick = () => {\r\n    setShowDialog(true);\r\n  };\r\n\r\n  const handleCloseClick = () => {\r\n    setShowDialog(false);\r\n  };\r\n\r\n  const handleSubmit = async values => {\r\n    create(\r\n      { payload: { data: values } },\r\n      {\r\n        onSuccess: ({ data }) => {\r\n          setShowDialog(false);\r\n          refresh();\r\n        },\r\n        onFailure: ( error ) => {\r\n          notify(error.message, 'error');\r\n        }\r\n      }\r\n    );\r\n  };\r\n\r\n\r\n  return (\r\n    <>            \r\n      <Button onClick={handleClick} label={translate('users_shows.create_button')}>\r\n        <IconContentAdd />                \r\n      </Button>\r\n\r\n      <Dialog\r\n        fullWidth\r\n        open={showDialog}\r\n        onClose={handleCloseClick}\r\n        aria-label={translate('users_shows.create')}\r\n      >\r\n        <DialogTitle>{translate('users_shows.create')}</DialogTitle>\r\n\r\n        <FormWithRedirect\r\n          resource=\"users_shows\"\r\n          save={handleSubmit}\r\n          initialValues={{ users_id : props.users_id }}\r\n          render={({\r\n            handleSubmitWithRedirect,\r\n            pristine,\r\n            saving\r\n          }) => (\r\n            <>\r\n              <CustomForm edit={false} />\r\n                            \r\n              <DialogActions>\r\n                <Button label=\"ra.action.cancel\" onClick={handleCloseClick} disabled={loading} >\r\n                  <IconCancel />\r\n                </Button>\r\n                <SaveButton\r\n                  handleSubmitWithRedirect={\r\n                    handleSubmitWithRedirect\r\n                  }\r\n                  pristine={pristine}\r\n                  saving={saving}\r\n                  disabled={loading}\r\n                />\r\n              </DialogActions>\r\n            </>\r\n          )}\r\n        />\r\n      </Dialog>\r\n    </>\r\n  );\r\n};\r\n\r\nconst CustomForm = ({ edit, ...props }) => {\r\n  const translate = useTranslate(); \r\n  const classes = useStyles();\r\n    \r\n  return (\r\n    <DialogContent className=\"users_shows_form\">\r\n      <br />\r\n      <Grid container spacing={2} >\r\n        <Grid item xs={3}>  \r\n          { edit ? (\r\n            <NumberInput label={translate('common.year')} fullWidth source=\"year\" step={1} disabled />                                        \r\n          ) : (\r\n            <NumberInput label={translate('common.year')} fullWidth source=\"year\" step={1} validate={[required(),validateInteger(translate('common.validation.number'))]} />                           \r\n          )}\r\n        </Grid> \r\n      </Grid>\r\n                \r\n      <ArrayInput source=\"items\" label=\"\">\r\n        <SimpleFormIterator \r\n          disableReordering                     \r\n        >\r\n          <SelectInput fullWidth label={translate('users_shows.type')} source=\"type\" choices={choicesShowsType(translate)} validate={[required()]} />\r\n          <SelectInput fullWidth label={translate('users_shows.amateur')} source=\"amateur\" choices={[                        \r\n            { id: 1, name: translate('users_shows.amateur_1')  },\r\n            { id: 2, name: translate('users_shows.amateur_2')  }\r\n          ]} resettable />\r\n          <SelectInput fullWidth label={translate('users_shows.adult')} source=\"adult\" choices={choicesAdult(translate)} resettable />                    \r\n          <NumberInput source=\"quantity\" step={1} validate={[validateInteger(translate('common.validation.number'))]} label={translate('users_shows.quantity')} />\r\n          <NumberInput source=\"assistants\" step={1} validate={[validateInteger(translate('common.validation.number'))]} label={translate('users_shows.assistants')} />\r\n          <NumberInput source=\"inversion\" validate={[validateInteger(translate('common.validation.number'))]} label={translate('users_shows.inversion')} />\r\n          <NumberInput source=\"occupancy\" validate={[validateInteger(translate('common.validation.number'))]} label={translate('users_shows.occupancy')} />\r\n          <TextInput fullWidth source=\"comment\" validate={[validateMaxLength(255,translate('common.validation.maxLength'))]} label={translate('common.comment')} />\r\n                            \r\n        </SimpleFormIterator>\r\n      </ArrayInput>\r\n                        \r\n    </DialogContent>\r\n  );\r\n    \r\n    \r\n};\r\n    \r\n\r\nexport const UsersShowsDetails = ({ id, record, resource, ...props }) => {\r\n  const translate = useTranslate(); \r\n        \r\n  let total_quantity = 0;\r\n  if (record.items)\r\n  {\r\n    record.items.forEach(element => { if (element.quantity) total_quantity+=element.quantity; } );\r\n  }\r\n    \r\n  let total_assistants = 0;\r\n  if (record.items)\r\n  {\r\n    record.items.forEach(element => { if (element.assistants) total_assistants+=element.assistants; } );\r\n  }\r\n    \r\n  let total_inversion = 0;\r\n  if (record.items)\r\n  {\r\n    record.items.forEach(element => { if (element.inversion) total_inversion+=element.inversion; } );\r\n  }\r\n    \r\n    \r\n  return (\r\n    <div className=\"usersEconomicDataExpand\">\r\n      <Grid container spacing={2}>\r\n        <Grid item xs={2} >\r\n          <FunctionField render={record => <TextFieldShow source={record.year} label={translate('common.year')} /> } />\r\n        </Grid>\r\n        <Grid item xs={3} >\r\n          <FunctionField render={record => <TextFieldShow source={total_quantity} label={translate('users_shows.total_quantity')} /> } />\r\n        </Grid>\r\n        <Grid item xs={3} >\r\n          <FunctionField render={record => <TextFieldShow source={total_assistants} label={translate('users_shows.total_assistants')} /> } />\r\n        </Grid>\r\n        <Grid item xs={3} >\r\n          <FunctionField render={record => <TextFieldShow source={total_inversion} label={translate('users_shows.total_inversion')} /> } />\r\n        </Grid>\r\n      </Grid>\r\n        \r\n      <br />\r\n      <Divider className=\"\" />\r\n      <br />\r\n      <ArrayField source=\"items\">\r\n        <Datagrid>\r\n          <FunctionField render={record => record.type ? translate('users_shows.type_' + record.type) : '' } label={translate('users_shows.type')} />\r\n          <FunctionField render={record => record.amateur ? translate('users_shows.amateur_' + record.amateur) : '' } label={translate('users_shows.amateur')} />\r\n          <FunctionField render={record => record.adult ? translate('users_shows.adult_' + record.adult) : '' } label={translate('users_shows.adult')} />\r\n          <TextField source=\"quantity\" label={translate('users_shows.quantity')} />\r\n          <TextField source=\"assistants\" label={translate('users_shows.assistants')} />\r\n          <TextField source=\"inversion\" label={translate('users_shows.inversion')} />\r\n          <TextField source=\"occupancy\" label={translate('users_shows.occupancy')} />\r\n          <TextField source=\"comment\" label={translate('common.comment')} />\r\n        </Datagrid>\r\n      </ArrayField>\r\n        \r\n      <br /> \r\n    </div>\r\n  );\r\n};","import React, { useState } from 'react';\r\n\r\nimport { SaveButton ,\r\n  List,\r\n  Datagrid,\r\n  TextField,\r\n  ReferenceField,\r\n  DeleteButton,\r\n  ReferenceInput,\r\n  SelectInput,\r\n  TextInput,\r\n  useTranslate,\r\n  required,    \r\n  useCreate,\r\n  useUpdate,\r\n  useNotify,\r\n  FormWithRedirect,useRefresh,\r\n  Button,\r\n  FunctionField, TopToolbar, NumberInput, ResourceContextProvider,\r\n  ArrayInput,\r\n  SimpleFormIterator, ArrayField\r\n} from 'react-admin';\r\n\r\n\r\nimport EditIcon from '@material-ui/icons/Edit';\r\n\r\nimport { useStyles  } from '../common/styles';\r\n\r\n\r\n\r\n\r\nimport Divider from '@mui/material/Divider';\r\n\r\nimport IconContentAdd from '@material-ui/icons/Add';\r\nimport IconCancel from '@material-ui/icons/Cancel';\r\n\r\nimport Dialog from '@material-ui/core/Dialog';\r\nimport DialogTitle from '@material-ui/core/DialogTitle';\r\nimport DialogContent from '@material-ui/core/DialogContent';\r\nimport DialogActions from '@material-ui/core/DialogActions';\r\n\r\n\r\nimport { TextFieldShow } from '../components/TextFieldShow';\r\n\r\nimport Grid from '@mui/material/Grid';\r\n\r\n\r\nimport { validateMaxLength, validateInteger  } from './../components/Validator';\r\n\r\nexport const UsersSectionsList = (props) => {\r\n  const translate = useTranslate(); \r\n    \r\n  let strRedirect =  `/users/${props.users_id}/more_federation`; \r\n    \r\n  return (\r\n           \r\n    <ResourceContextProvider value=\"users_sections\" >\r\n      <List \r\n        syncWithLocation \r\n        basePath=\"/users_sections\" \r\n        filter={{ users_id : props.users_id }}  \r\n        title=\"\"\r\n        bulkActionButtons={false}                \r\n        actions={<CustomToolbar users_id={props.users_id} /> }  \r\n        perPage={1000}\r\n        sort={{ field: 'year', order: 'ASC' }} \r\n        empty={<CustomToolbar users_id={props.users_id} /> } \r\n        pagination={false}\r\n      >\r\n\r\n        <Datagrid   \r\n          expand={<UsersSectionsDetails />} \r\n          className=\"header_grey6\"\r\n          label=\"\"\r\n          fullWidth\r\n        >\r\n          <TextField source=\"year\" label={translate('common.year')} sortable={false} /> \r\n          <FunctionField label={translate('users_sections.num_sections')} render={record => <RenderNumSections record={record} /> } sortable={false} />\r\n          <FunctionField label={translate('users_sections.total_participants')} render={record => <RenderTotalParticipants record={record} /> } sortable={false} />\r\n          <CustomEditButton label=\"\"/>\r\n          <DeleteButton undoable={false} redirect={strRedirect} label=\"\"/>\r\n        </Datagrid>\r\n\r\n      </List> \r\n    </ResourceContextProvider>\r\n\r\n  );\r\n};\r\n\r\nexport const CustomEditButton = ({ ...props }) => {\r\n\r\n  const [showDialog, setShowDialog] = useState(false);\r\n  const notify = useNotify();\r\n  const refresh = useRefresh();    \r\n  const translate = useTranslate();  \r\n\r\n  const [update, { loading, error }] = useUpdate();\r\n\r\n  const handleClick = () => {\r\n    setShowDialog(true);\r\n  };\r\n\r\n  const handleCloseClick = () => {\r\n    setShowDialog(false);\r\n  };\r\n                        \r\n  const handleSubmit = async values => {\r\n    update(\r\n      { \r\n        type: 'update', \r\n        resource: 'users_sections', \r\n        payload : { id: values.id, data : \r\n                {       users_id: values.users_id,\r\n                  year : values.year, \r\n                  items: values.items\r\n                } }\r\n      },\r\n      {\r\n        onSuccess: ({ data }) => {\r\n          setShowDialog(false);\r\n          refresh();\r\n        },\r\n        onFailure: ( error ) => {\r\n          notify(error.message, 'error');\r\n        }\r\n      }\r\n    );\r\n  };    \r\n\r\n  return (\r\n    <>\r\n      <Button onClick={handleClick} label=\"\" startIcon={<EditIcon />} />\r\n\r\n      <Dialog\r\n        fullWidth\r\n        open={showDialog}\r\n        onClose={handleCloseClick}\r\n      >\r\n        <DialogTitle>{translate('users_sections.edit')}</DialogTitle>\r\n\r\n        <FormWithRedirect\r\n          resource=\"\"\r\n          save={handleSubmit}\r\n          initialValues={{ id : props.record.id, \r\n            users_id: props.record.users_id,\r\n            year : props.record.year, \r\n            items: props.record.items\r\n          }}\r\n          render={({\r\n            handleSubmitWithRedirect,\r\n            pristine,\r\n            saving\r\n          }) => (\r\n            <>\r\n              <CustomForm edit={true} />\r\n                            \r\n              <DialogActions>\r\n                <Button label=\"ra.action.cancel\" onClick={handleCloseClick} disabled={loading} >\r\n                  <IconCancel />\r\n                </Button>\r\n                <SaveButton\r\n                  handleSubmitWithRedirect={\r\n                    handleSubmitWithRedirect\r\n                  }\r\n                  pristine={pristine}\r\n                  saving={saving}\r\n                  disabled={loading}\r\n                />\r\n              </DialogActions>\r\n            </>\r\n          )}\r\n        />\r\n      </Dialog>\r\n    </>\r\n  );\r\n};\r\n\r\nconst RenderNumSections = ({ record, ...props }) => {\r\n    \r\n  let num_sections = 0;\r\n  if (record.items)\r\n  {\r\n    record.items.forEach(element => { num_sections++; } );\r\n  }\r\n    \r\n  return ( num_sections );\r\n};\r\n\r\nconst RenderTotalParticipants = ({ record, ...props }) => {\r\n    \r\n  let total_participants = 0;\r\n  if (record.items)\r\n  {\r\n    record.items.forEach(element => { if (element.participants) total_participants+=element.participants; } );\r\n  }\r\n    \r\n  return ( total_participants );\r\n    \r\n};\r\n\r\nexport const UsersSectionsShow = ({ ...props }) => {\r\n  const translate = useTranslate();   \r\n\r\n  return (\r\n        \r\n    <ResourceContextProvider value=\"users_sections\" >\r\n      <List \r\n        syncWithLocation \r\n        basePath=\"/users_sections\" \r\n        filter={{ users_id : props.users_id }}  \r\n        title=\"\"\r\n        bulkActionButtons={false}                                \r\n        perPage={1000}\r\n        sort={{ field: 'year', order: 'ASC' }} \r\n        pagination={false}\r\n        actions={false}\r\n        empty={<></>}\r\n        className=\"users_remittances_list\"\r\n      >                            \r\n        <Datagrid\r\n          expand={<UsersSectionsDetails />} \r\n          className=\"header_grey6\"\r\n          fullWidth\r\n        >   \r\n          <TextField source=\"year\" label={translate('common.year')} sortable={false}  />   \r\n          <FunctionField label={translate('users_sections.num_sections')} render={record => <RenderNumSections record={record} /> } sortable={false} />\r\n          <FunctionField label={translate('users_sections.total_participants')} render={record => <RenderTotalParticipants record={record} /> } sortable={false} />\r\n        </Datagrid>\r\n\r\n      </List> \r\n\r\n    </ResourceContextProvider>            \r\n\r\n  );\r\n};\r\n\r\nexport const CustomToolbar = ({ ...props }) => {\r\n\r\n  return (\r\n        \r\n    <TopToolbar>\r\n      <CustomCreateButton users_id={props.users_id} />\r\n    </TopToolbar>\r\n        \r\n  );\r\n};\r\n\r\n\r\nexport const CustomCreateButton = ({ ...props }) => {\r\n\r\n  const [showDialog, setShowDialog] = useState(false);\r\n  const [create, { loading }] = useCreate('users_sections');\r\n  const notify = useNotify();\r\n  const refresh = useRefresh();    \r\n  const translate = useTranslate();  \r\n    \r\n\r\n  const handleClick = () => {\r\n    setShowDialog(true);\r\n  };\r\n\r\n  const handleCloseClick = () => {\r\n    setShowDialog(false);\r\n  };\r\n\r\n  const handleSubmit = async values => {\r\n    create(\r\n      { payload: { data: values } },\r\n      {\r\n        onSuccess: ({ data }) => {\r\n          setShowDialog(false);\r\n          refresh();\r\n        },\r\n        onFailure: ( error ) => {\r\n          notify(error.message, 'error');\r\n        }\r\n      }\r\n    );\r\n  };\r\n\r\n\r\n  return (\r\n    <>            \r\n      <Button onClick={handleClick} label={translate('users_sections.create_button')}>\r\n        <IconContentAdd />                \r\n      </Button>\r\n\r\n      <Dialog\r\n        fullWidth\r\n        open={showDialog}\r\n        onClose={handleCloseClick}\r\n        aria-label={translate('users_sections.create')}\r\n      >\r\n        <DialogTitle>{translate('users_sections.create')}</DialogTitle>\r\n\r\n        <FormWithRedirect\r\n          resource=\"users_sections\"\r\n          save={handleSubmit}\r\n          initialValues={{ users_id : props.users_id }}\r\n          render={({\r\n            handleSubmitWithRedirect,\r\n            pristine,\r\n            saving\r\n          }) => (\r\n            <>\r\n              <CustomForm edit={false} />\r\n                            \r\n              <DialogActions>\r\n                <Button label=\"ra.action.cancel\" onClick={handleCloseClick} disabled={loading} >\r\n                  <IconCancel />\r\n                </Button>\r\n                <SaveButton\r\n                  handleSubmitWithRedirect={\r\n                    handleSubmitWithRedirect\r\n                  }\r\n                  pristine={pristine}\r\n                  saving={saving}\r\n                  disabled={loading}\r\n                />\r\n              </DialogActions>\r\n            </>\r\n          )}\r\n        />\r\n      </Dialog>\r\n    </>\r\n  );\r\n};\r\n\r\nconst CustomForm = ({ edit, ...props }) => {\r\n  const translate = useTranslate(); \r\n  const classes = useStyles();\r\n    \r\n  return (\r\n    <DialogContent className=\"users_sections_form\">\r\n      <br />\r\n      <Grid container spacing={2} >\r\n        <Grid item xs={3}>  \r\n          { edit ? (\r\n            <NumberInput label={translate('common.year')} fullWidth source=\"year\" step={1} disabled />                                        \r\n          ) : (\r\n            <NumberInput label={translate('common.year')} fullWidth source=\"year\" step={1} validate={[required(),validateInteger(translate('common.validation.number'))]} />                           \r\n          )}\r\n        </Grid> \r\n      </Grid>\r\n                \r\n      <ArrayInput source=\"items\" label=\"\">\r\n        <SimpleFormIterator \r\n          disableReordering                     \r\n        >\r\n          <ReferenceInput sort={{ field: 'priority', order: 'ASC' }}  perPage={1000} label={translate('users_sections.name')} source=\"sections_users_id\" reference=\"sections_users\" className=\"mt-10\">\r\n            <SelectInput fullWidth optionText=\"name\" optionValue=\"id\" validate={required()} />\r\n          </ReferenceInput> \r\n          <NumberInput source=\"participants\" step={1} validate={[validateInteger(translate('common.validation.number'))]} label={translate('users_sections.participants')} />\r\n          <TextInput fullWidth source=\"comment\" validate={[validateMaxLength(255,translate('common.validation.maxLength'))]} label={translate('common.comment')} />\r\n        </SimpleFormIterator>\r\n      </ArrayInput>\r\n                        \r\n    </DialogContent>\r\n  );\r\n    \r\n    \r\n};\r\n    \r\n\r\nexport const UsersSectionsDetails = ({ id, record, resource, ...props }) => {\r\n  const translate = useTranslate(); \r\n    \r\n  let num_sections = 0;\r\n  if (record.items)\r\n  {\r\n    record.items.forEach(element => { num_sections++; } );\r\n  }\r\n    \r\n  let total_participants = 0;\r\n  if (record.items)\r\n  {\r\n    record.items.forEach(element => { if (element.participants) total_participants+=element.participants; } );\r\n  }\r\n    \r\n  return (\r\n    <div className=\"usersEconomicDataExpand\">\r\n      <Grid container spacing={2}>\r\n        <Grid item xs={2} >\r\n          <FunctionField render={record => <TextFieldShow source={record.year} label={translate('common.year')} /> } />\r\n        </Grid>\r\n        <Grid item xs={3} >\r\n          <FunctionField render={record => <TextFieldShow source={num_sections} label={translate('users_sections.num_sections')} /> } />\r\n        </Grid>\r\n        <Grid item xs={3} >\r\n          <FunctionField render={record => <TextFieldShow source={total_participants} label={translate('users_sections.total_participants')} /> } />\r\n        </Grid>\r\n      </Grid>\r\n        \r\n      <br />\r\n      <Divider className=\"\" />\r\n      <br />\r\n      <ArrayField source=\"items\">\r\n        <Datagrid>\r\n          <ReferenceField label={translate('users_sections.name')} source=\"sections_users_id\" reference=\"sections_users\" link={false} > \r\n            <TextField source=\"name\" />                               \r\n          </ReferenceField>\r\n          <TextField source=\"participants\" label={translate('users_sections.participants')} />\r\n          <TextField source=\"comment\" label={translate('common.comment')} />\r\n        </Datagrid>\r\n      </ArrayField>\r\n        \r\n      <br /> \r\n    </div>\r\n  );\r\n};","// in src/posts.js\r\nimport React, { useState } from 'react';\r\n\r\nimport {\r\n  List, \r\n  Datagrid,\r\n  TextField,\r\n  DeleteButton,\r\n  Edit,\r\n  SelectInput,\r\n  TextInput,\r\n  Button ,\r\n  CreateButton ,\r\n  TopToolbar,\r\n  FormTab,\r\n  TabbedForm,\r\n  ReferenceManyField,\r\n  FormDataConsumer,\r\n  useListContext, required,NumberInput,BooleanInput,SelectField,  FunctionField, ResourceContextProvider, useCreate, useRefresh, FormWithRedirect, Toolbar, SaveButton,\r\n  useNotify,\r\n  useRedirect,\r\n  ReferenceField    \r\n} from 'react-admin';\r\n\r\nimport { useEffect } from 'react';\r\n\r\nimport { makeStyles } from '@material-ui/core/styles';\r\n\r\nimport Divider from '@mui/material/Divider';\r\n\r\n\r\nimport { useTranslate  } from '../common/language';\r\n\r\nimport Typography from '@mui/material/Typography';\r\n\r\nimport SettingsIcon from '@mui/icons-material/Settings';\r\nimport RichTextInput from 'ra-input-rich-text';\r\n\r\n\r\nimport { TextFieldShow } from '../components/TextFieldShow';\r\n\r\nimport Grid from '@mui/material/Grid';\r\nimport Avatar from '@mui/material/Avatar';\r\nimport IconContentAdd from '@material-ui/icons/Add';\r\nimport IconCancel from '@material-ui/icons/Cancel';\r\nimport MeetingRoomIcon from '@mui/icons-material/MeetingRoom';\r\n\r\nimport Dialog from '@material-ui/core/Dialog';\r\nimport DialogTitle from '@material-ui/core/DialogTitle';\r\nimport DialogContent from '@material-ui/core/DialogContent';\r\nimport DialogActions from '@material-ui/core/DialogActions';\r\n\r\nimport { ColorInput } from 'react-admin-color-input';\r\n\r\nimport { DocsList, DocsListShow } from './docs';\r\nimport { targets, choicesClassroomsType  } from './../common/constants';\r\n\r\nimport { subscriptionModule  } from './../common/utils';\r\nimport { modules, modulesOptions  } from './../common/constants';\r\n\r\nimport { CityInput } from './../components/Inputs';\r\n\r\nimport { RenderBoolean } from '../components/User';\r\nimport { BackLink } from './../components/BackLink';\r\n\r\nimport Box from '@material-ui/core/Box';\r\n\r\nimport { Link } from 'react-router-dom';\r\n\r\nimport { validateMaxLength, validateInteger  } from './../components/Validator';\r\n\r\n//empty={<EmptyClassrooms title={translate('classrooms.no_classrooms_title')} icon={MeetingRoomIcon} />}\r\n/* \r\n * Llista editable des de la pestanya general Espais (espais per associació)\r\n * i Llista des de l'edició de la fitxa d'users (espais d'usuari)\r\n * El paràmetre que ho distingeix és props.user_classroom\r\n */\r\nexport const ClassroomsList = (props) => {\r\n  const translate = useTranslate();  \r\n    \r\n  let basePath='/classrooms'; \r\n  let resource = 'classrooms';\r\n  let strRedirect = 'classrooms';\r\n  if (props.user_classroom)\r\n  {\r\n    basePath='/users_classrooms';\r\n    resource = 'users_classrooms';\r\n    strRedirect =  `/users/${props.users_id}/classrooms`;\r\n  }\r\n    \r\n  return (\r\n    <ResourceContextProvider value={resource}>\r\n      <List \r\n        basePath={basePath}   \r\n        filter={{ associations_id : localStorage.getItem('associations_id'), users_id: props.users_id }}  \r\n        actions={<ListActionsClassrooms users_id={props.users_id}  />}    \r\n        empty={<ListActionsClassrooms users_id={props.users_id} />}        \r\n        bulkActionButtons={false}          \r\n        perPage={1000}   \r\n        pagination={false}\r\n        sort={{ field: 'priority', order: 'ASC' }} \r\n        label=\"\"  \r\n        title=\"\"  \r\n        resource={resource}\r\n      >        \r\n        <Datagrid \r\n          rowClick=\"edit\"\r\n          expand={<UsersClassroomsDetails />} >  \r\n          <Avatar><MeetingRoomIcon/></Avatar>                                  \r\n          <TextField source=\"name\" label={translate('common.name')} sortable={false} />    \r\n          <FunctionField render={record => <span>{translate('classrooms.type' + record.type)}</span> } label={translate('common.type')} sortable={false}  />   \r\n          <TextField source=\"m2\" label={translate('classrooms.m2')} sortable={false} />  \r\n          <TextField source=\"seats\" label={translate('classrooms.seats')} sortable={false} />     \r\n          <DeleteButton undoable={false} label=\"\" redirect={strRedirect} />\r\n        </Datagrid>        \r\n      </List>\r\n    </ResourceContextProvider>\r\n  );\r\n};\r\n\r\n/* \r\n * Llista no editable des de la fitxa d'users (espais d'usuari)\r\n */\r\nexport const UsersClassroomsShow = (props) => {\r\n  const translate = useTranslate();    \r\n  return (\r\n    <ReferenceManyField                    \r\n      reference=\"users_classrooms\"\r\n      target=\"users_id\"\r\n      label=\"\"\r\n      filter={{ associations_id : localStorage.getItem('associations_id') }}  \r\n    >\r\n\r\n      <Datagrid          \r\n        hasCreate\r\n        className=\"table-quotes-periods users_remittances_list header_grey6\"\r\n        expand={<UsersClassroomsDetails />} \r\n      >\r\n        <Avatar><MeetingRoomIcon/></Avatar>                                  \r\n        <TextField source=\"name\" label={translate('common.name')} sortable={false} />    \r\n        <FunctionField render={record => <span>{translate('classrooms.type' + record.type)}</span> } label={translate('common.type')} sortable={false}  />   \r\n        <TextField source=\"m2\" label={translate('classrooms.m2')} sortable={false} />  \r\n        <TextField source=\"seats\" label={translate('classrooms.seats')} sortable={false} />                    \r\n      </Datagrid>\r\n\r\n    </ReferenceManyField> \r\n  );\r\n};\r\n\r\n\r\nexport const UsersClassroomsDetails = ({ id, record, resource, ...props }) => {\r\n  const translate = useTranslate(); \r\n    \r\n  let target_photo = targets.CLASSROOM_PHOTO;\r\n  let target_doc = targets.CLASSROOM_DOC;\r\n  if (resource === 'users_classrooms')\r\n  {\r\n    target_photo = targets.USER_CLASSROOM_PHOTO;\r\n    target_doc = targets.USER_CLASSROOM_DOC;\r\n  }\r\n    \r\n  return (\r\n    <div className=\"usersClassroomsExpand\">        \r\n      <Grid container spacing={2}>\r\n        <Grid item xs={6}>                    \r\n          <TextFieldShow source={record.name} label={translate('common.name')} />                       \r\n        </Grid>\r\n        <Grid item xs={6}>                    \r\n          <FunctionField render={record => <TextFieldShow source={<SelectField source=\"type\" choices={choicesClassroomsType(translate)} /> } label={translate('classrooms.type')} /> } />                        \r\n        </Grid>\r\n      </Grid>\r\n      \r\n      <Grid container spacing={2}>\r\n        <Grid item xs={6}>                    \r\n          <TextFieldShow source={record.address} label={translate('users.address')} />                       \r\n        </Grid>\r\n        <Grid item xs={6}>        \r\n          <br/><span className=\"custom-field-title grey6\">{translate('events.city')}</span><br/>\r\n          <ReferenceField label={translate('events.city')} source=\"cities_id\" reference=\"cities\" link={false} > \r\n            <TextField source=\"name\" />                               \r\n          </ReferenceField>                      \r\n        </Grid>\r\n      </Grid>\r\n        \r\n      <Grid container spacing={2}>\r\n        <Grid item xs={2}>                    \r\n          <TextFieldShow source={record.m2} label={translate('classrooms.m2')} />                   \r\n        </Grid>\r\n        <Grid item xs={2}>                    \r\n          <TextFieldShow source={record.seats} label={translate('classrooms.seats')} />                   \r\n        </Grid>            \r\n        <Grid item xs={2}>                    \r\n          <TextFieldShow source={<RenderBoolean source={record.accessible} />} label={translate('classrooms.accessible')} />                   \r\n        </Grid>\r\n        <Grid item xs={2}>  \r\n          <TextFieldShow source={<RenderBoolean source={record.outdoor} />} label={translate('classrooms.outdoor')} />     \r\n        </Grid>\r\n        <Grid item xs={2}>                    \r\n          <TextFieldShow source={<RenderBoolean source={record.lift} />} label={translate('classrooms.lift')} />                   \r\n        </Grid>\r\n      </Grid>\r\n      \r\n      <Grid container spacing={2}>\r\n        <Grid item xs={2}>                    \r\n          <TextFieldShow source={<RenderBoolean source={record.cession} />} label={translate('classrooms.cession')} />                   \r\n        </Grid>\r\n        <Grid item xs={2}>                    \r\n          <TextFieldShow source={<RenderBoolean source={record.rent} />} label={translate('classrooms.rent')} />                   \r\n        </Grid>\r\n        <Grid item xs={2}>                    \r\n          <TextFieldShow source={<RenderBoolean source={record.rentable} />} label={translate('classrooms.rentable')} />                   \r\n        </Grid>        \r\n      </Grid>\r\n        \r\n        \r\n      { resource === 'classrooms' ? <>\r\n      \r\n        <Grid container spacing={2}>\r\n            <Grid item xs={12}>                    \r\n              <TextFieldShow source={<div className=\"\" spacing={2} dangerouslySetInnerHTML={{ __html: record.description }} />} label={translate('common.description')} />                   \r\n            </Grid>\r\n        </Grid>\r\n        <Typography variant=\"h6\" className=\"grey8 titleUserShow\">                        \r\n          {translate('classrooms.visibility')}\r\n        </Typography>\r\n        <Divider fullWidth className=\"\" />\r\n        \r\n        <br/>\r\n        <Grid container spacing={2}>\r\n          <Grid item xs={6}>                    \r\n            <TextFieldShow source={<RenderBoolean source={record.is_public} />} label={translate('classrooms.is_public')} />                   \r\n          </Grid>\r\n          { subscriptionModule(modules.CLASSROOMS,modulesOptions.CLASSROOMS_FAC ) ?\r\n          <Grid item xs={6}>                    \r\n            <TextFieldShow source={<RenderBoolean source={record.show_fac} />} label={translate('classrooms.show_fac')} />                   \r\n          </Grid>\r\n          : null }\r\n          <Grid item xs={12}>                    \r\n            <TextFieldShow source={<RenderBoolean source={record.is_requestable} />} label={translate('classrooms.is_requestable')} />                   \r\n          </Grid>\r\n        </Grid>\r\n        \r\n        <Typography variant=\"h6\" className=\"grey8 titleUserShow\">                        \r\n          {translate('classrooms.events')}\r\n        </Typography>\r\n        <Divider fullWidth className=\"\" />        \r\n        <br/>\r\n        <Grid container spacing={2}>\r\n          <Grid item xs={5}>                    \r\n            <TextFieldShow source={<RenderBoolean source={record.is_for_events} />} label={translate('classrooms.is_for_events')} />                   \r\n          </Grid>\r\n          {record.is_for_events ? <>\r\n            <Grid item xs={5}>                    \r\n              <TextFieldShow source={<RenderBoolean source={record.overlapable} />} label={translate('classrooms.overlapable')} />                   \r\n            </Grid>\r\n            <Grid item xs={2}>                    \r\n              <TextFieldShow source={record.color} label={translate('classrooms.color')} />                   \r\n            </Grid>\r\n          </> : null }\r\n        </Grid>\r\n        \r\n        \r\n      </> : null }\r\n        \r\n      <Typography variant=\"h6\" className=\"grey8 titleUserShow\">                        \r\n        {translate('classrooms.photos')}\r\n      </Typography>\r\n      <Divider fullWidth className=\"\" />\r\n        \r\n      <DocsListShow target={target_photo} items_id={record.id} />\r\n        \r\n      <Typography variant=\"h6\" className=\"grey8 titleUserShow\">                        \r\n        {translate('classrooms.docs')}\r\n      </Typography>\r\n      <Divider fullWidth className=\"\" />\r\n        \r\n      <DocsListShow target={target_doc} items_id={record.id} />\r\n        \r\n    </div>\r\n  );\r\n};\r\n\r\n\r\nconst ListActionsClassrooms = (props) => {\r\n  const translate = useTranslate(); \r\n  return (\r\n    <TopToolbar>             \r\n      <ClassroomsCreateButton {...props} />\r\n      <Button \r\n            component={Link}\r\n            to={'/settings-classrooms-requests'}\r\n            label={translate('settings.classrooms_requests')}\r\n            align=\"right\"\r\n            className\r\n          > \r\n          <SettingsIcon />\r\n        </Button>\r\n    </TopToolbar>\r\n  );\r\n};\r\n\r\n\r\nexport const ClassroomsCreateButton = ({ users_id , ...props }) => {\r\n\r\n  const [showDialog, setShowDialog] = useState(false);\r\n  const [create, { loading }] = useCreate('classrooms');\r\n  const notify = useNotify();\r\n  const refresh = useRefresh();    \r\n  const translate = useTranslate();  \r\n  const redirect = useRedirect();\r\n    \r\n  const [automaticName, setAutomaticName] = useState();\r\n\r\n    \r\n  useEffect(() => {\r\n    setAutomaticName(translate('classrooms.type0'));            \r\n  }, []);\r\n    \r\n    \r\n  const handleClick = () => {\r\n    setShowDialog(true);\r\n  };\r\n\r\n  const handleCloseClick = () => {\r\n    setShowDialog(false);\r\n  };\r\n\r\n  const handleSubmit = async values => {\r\n    create(            \r\n      { payload: { data: values } },\r\n      {\r\n        onSuccess: ({ data }) => {                    \r\n          if (props.resource === 'users_classrooms')\r\n          {\r\n            redirect('/users_classrooms/' + data.id );                        \r\n          }\r\n          else\r\n            redirect('/classrooms/' + data.id);\r\n        \r\n        },\r\n        onFailure: ( error ) => {\r\n          notify( error.message , 'error');\r\n        }\r\n      }\r\n    );\r\n  };\r\n    \r\n  return (\r\n    <>            \r\n      <Button onClick={handleClick} label={translate('classrooms.create')}>\r\n        <IconContentAdd />                \r\n      </Button>\r\n\r\n      <Dialog\r\n        fullWidth\r\n        open={showDialog}\r\n        onClose={handleCloseClick}\r\n        aria-label={translate('classrooms.create')}\r\n      >\r\n        <DialogTitle>{translate('classrooms.create')}</DialogTitle>\r\n\r\n        <FormWithRedirect\r\n          save={handleSubmit}\r\n          initialValues={{ associations_id: localStorage.getItem('associations_id') , type: 0, users_id : users_id, name: automaticName }}\r\n          render={({\r\n            handleSubmitWithRedirect,\r\n            pristine,\r\n            saving\r\n          }) => (\r\n            <>\r\n              <DialogContent>\r\n                <Grid container spacing={1}>                                     \r\n                  <Grid item xs={5}> \r\n                    <SelectInput\r\n                      onChange={event => { \r\n                        setAutomaticName(translate('classrooms.type' + event.target.value));  \r\n                      }} \r\n                      fullWidth label={translate('classrooms.type')} source=\"type\" choices={choicesClassroomsType(translate)} validate={[required()]} />\r\n                  </Grid>  \r\n                                    \r\n                  <Grid item xs={7}>                                               \r\n                    <TextInput fullWidth source=\"name\" label={translate('common.name')} validate={[required(),validateMaxLength(255,translate('common.validation.maxLength'))]} />\r\n                  </Grid>\r\n                                    \r\n                </Grid> \r\n              </DialogContent>\r\n              <DialogActions>\r\n                <Button label=\"ra.action.cancel\" onClick={handleCloseClick} disabled={loading} >\r\n                  <IconCancel />\r\n                </Button>\r\n                <SaveButton\r\n                  handleSubmitWithRedirect={\r\n                    handleSubmitWithRedirect\r\n                  }\r\n                  pristine={pristine}\r\n                  saving={saving}\r\n                  disabled={loading}\r\n                />\r\n              </DialogActions>\r\n            </>\r\n          )}\r\n        />\r\n      </Dialog>\r\n    </>\r\n  );\r\n};\r\n\r\nconst ClassroomsActions = ({ basePath, data, resource }) => {\r\n\r\n  const translate = useTranslate();   \r\n    \r\n  let backLink = '';\r\n  if (resource === 'users_classrooms' && data && data.users_id )\r\n    backLink = '/users/' + data.users_id + '/classrooms';\r\n  else\r\n    backLink = '/classrooms';\r\n    \r\n  return <BackLink link={backLink} title={ data && data.name ? data.name : null } />;\r\n  \r\n};\r\n\r\n\r\nexport const ClassroomsEdit  = ({ id, ...props }) => {\r\n\r\n  const translate = useTranslate();        \r\n  const classes = useStyles();\r\n  const notify = useNotify();\r\n  const refresh = useRefresh();\r\n  const redirect = useRedirect();\r\n\r\n  let strRedirect =  `/classrooms/${id}`;    \r\n    \r\n  const onSuccess = ({ data }) => {\r\n    notify(translate('common.notification.updated'));\r\n        \r\n    if (props.resource === 'users_classrooms')\r\n    {\r\n      redirect('/users/' + data.users_id + '/classrooms');\r\n      refresh();\r\n    }\r\n    else\r\n      redirect('/classrooms');\r\n        \r\n  };\r\n    \r\n  let target_photo = targets.CLASSROOM_PHOTO;\r\n  let target_doc = targets.CLASSROOM_DOC;\r\n  if (props.resource === 'users_classrooms')\r\n  {\r\n    target_photo = targets.USER_CLASSROOM_PHOTO;\r\n    target_doc = targets.USER_CLASSROOM_DOC;\r\n  }\r\n    \r\n  return (\r\n\r\n    <Edit \r\n      title={<ElementTitle {...props}  />} \r\n      {...props} \r\n      id={id}\r\n      mutationMode=\"pessimistic\"\r\n      actions={<ClassroomsActions {...props} />}\r\n      onSuccess={onSuccess}   \r\n    >\r\n        \r\n      <TabbedForm        \r\n        toolbar={<FormToolbar />}\r\n      >    \r\n        <FormTab\r\n          label={translate('classrooms.data')}\r\n          contentClassName={classes.tab}\r\n          path=\"\" \r\n                \r\n        > \r\n               \r\n          <FormDataConsumer>\r\n            {({ formData, ...rest }) => \r\n              <>                              \r\n                <br/>\r\n                <Grid container spacing={2}>\r\n                  <Grid item xs={8}>   \r\n                    <TextInput fullWidth autoFocus source=\"name\" label={translate('common.name')} validate={[required(),validateMaxLength(255,translate('common.validation.maxLength'))]}  />\r\n                  </Grid> \r\n                  <Grid item xs={4}> \r\n                    <SelectInput fullWidth label={translate('classrooms.type')} source=\"type\" choices={choicesClassroomsType(translate)} validate={[required()]} />\r\n                  </Grid>   \r\n                  <Grid item xs={12} sm={6}>\r\n                    <TextInput fullWidth source=\"address\" label={translate('users.address')} validate={[validateMaxLength(255,translate('common.validation.maxLength'))]} />                             \r\n                  </Grid>\r\n                  <Grid item xs={12} sm={6}>\r\n                    <CityInput />\r\n                  </Grid>\r\n                </Grid>\r\n                \r\n                \r\n                <Grid container spacing={2}>                   \r\n                  <Grid item xs={3}>                    \r\n                    <NumberInput fullWidth source=\"m2\" label={translate('classrooms.m2')} validate={[validateInteger(translate('common.validation.number'))]}  />\r\n                  </Grid> \r\n                  <Grid item xs={3}>                    \r\n                    <NumberInput fullWidth source=\"seats\" label={translate('classrooms.seats')} validate={[validateInteger(translate('common.validation.number'))]}  />\r\n                  </Grid>   \r\n                  <Grid item xs={2}>                    \r\n                    <NumberInput fullWidth source=\"priority\" label={translate('common.priority')} validate={[validateInteger(translate('common.validation.number'))]}  />\r\n                  </Grid> \r\n                </Grid>\r\n                \r\n                <Grid container spacing={2}>                   \r\n                  <Grid item xs={3}>\r\n                    <BooleanInput source=\"accessible\" label={translate('classrooms.accessible')} />         \r\n                  </Grid> \r\n                  <Grid item xs={3}>\r\n                    <BooleanInput source=\"outdoor\" label={translate('classrooms.outdoor')} />         \r\n                  </Grid>\r\n                  <Grid item xs={3}>\r\n                    <BooleanInput source=\"lift\" label={translate('classrooms.lift')} />         \r\n                  </Grid> \r\n                </Grid>\r\n                \r\n                <Grid container spacing={2}>       \r\n                  <Grid item xs={3}>\r\n                    <BooleanInput source=\"cession\" label={translate('classrooms.cession')} />         \r\n                  </Grid> \r\n                  <Grid item xs={3}>\r\n                    <BooleanInput source=\"rent\" label={translate('classrooms.rent')} />         \r\n                  </Grid> \r\n                  <Grid item xs={3}>\r\n                    <BooleanInput source=\"rentable\" label={translate('classrooms.rentable')} />         \r\n                  </Grid>                   \r\n                </Grid>\r\n                \r\n                <Grid container spacing={2}>\r\n                    \r\n                </Grid>\r\n                \r\n                {!(props.resource === 'users_classrooms') ?\r\n                  <Grid container spacing={2}>\r\n                    <Grid item xs={12}>                     \r\n                      <RichTextInput source=\"description\" label={translate('common.description')} />\r\n                    </Grid>\r\n                  </Grid>\r\n                  : null }\r\n                       \r\n                { props.resource === 'classrooms' ? <>\r\n                  <Typography variant=\"h6\" className=\"grey8 titleUserShow\">                        \r\n                    {translate('classrooms.visibility')}\r\n                  </Typography>\r\n                  <Divider fullWidth className=\"\" />\r\n                  <br />\r\n\r\n                  <Grid container spacing={2}>                        \r\n                    <Grid item xs={12}>\r\n                      <BooleanInput source=\"is_public\" label={translate('classrooms.is_public')} />         \r\n                    </Grid> \r\n                  </Grid>\r\n                  { subscriptionModule(modules.CLASSROOMS,modulesOptions.CLASSROOMS_FAC ) ?\r\n                  <Grid container spacing={2}>                        \r\n                    <Grid item xs={12}>\r\n                      <BooleanInput source=\"show_fac\" label={translate('classrooms.show_fac')} />         \r\n                    </Grid> \r\n                  </Grid> : null }\r\n                  <Grid container spacing={2}>\r\n                    <Grid item xs={12}>\r\n                      <BooleanInput source=\"is_requestable\" label={translate('classrooms.is_requestable')} />         \r\n                    </Grid> \r\n                  </Grid>\r\n\r\n                  <Typography variant=\"h6\" className=\"grey8 titleUserShow\">                        \r\n                    {translate('classrooms.events')}\r\n                  </Typography>\r\n                  <Divider fullWidth className=\"\" />\r\n                  <br />\r\n\r\n                  <Grid container spacing={2}>\r\n                    <Grid item xs={12}>\r\n                      <BooleanInput source=\"is_for_events\" label={translate('classrooms.is_for_events')} />         \r\n                    </Grid>                   \r\n                  </Grid>   \r\n                  { formData.is_for_events ? \r\n                    <>\r\n                      <Grid container spacing={2}>\r\n                        <Grid item xs={12}>\r\n                          <BooleanInput source=\"overlapable\" label={translate('classrooms.overlapable')} />         \r\n                        </Grid>                    \r\n                      </Grid>    \r\n                      <Grid container spacing={2}>\r\n                        <Grid item xs={4}>\r\n                          <ColorInput fullWidth source=\"color\" label={translate('classrooms.color')}  validate={[validateMaxLength(7,translate('common.validation.maxLength'))]} />  \r\n                        </Grid>                        \r\n                      </Grid> \r\n                    </>\r\n                    : null }\r\n                \r\n                </>\r\n                  : null }\r\n\r\n              </>\r\n            }\r\n          </FormDataConsumer>\r\n\r\n        </FormTab> \r\n        \r\n        {!(props.resource === 'users_classrooms') ?\r\n          <FormTab\r\n            label={translate('classrooms.photos')}\r\n            contentClassName={classes.tab}\r\n            path=\"photos\" \r\n                \r\n          > \r\n            \r\n            <DocsList target={target_photo} items_id={id} />\r\n            \r\n          </FormTab>\r\n          : null }\r\n        \r\n        {!(props.resource === 'users_classrooms') ?\r\n          <FormTab\r\n            label={translate('classrooms.docs')}\r\n            contentClassName={classes.tab}\r\n            path=\"docs\" \r\n                \r\n          > \r\n            \r\n            <DocsList target={target_doc} items_id={id} />\r\n            \r\n          </FormTab>\r\n          : null }\r\n    \r\n      </TabbedForm>\r\n    </Edit>\r\n  );\r\n};\r\n\r\nconst ElementTitle = ({ record, ...props }) => {    \r\n  const translate = useTranslate(); \r\n  return (<span>{translate('common.edit')} {record ? `\"${record.name}\"` : ''}</span>);\r\n};\r\n\r\nconst FormToolbar = ({ id , ...props }) => {\r\n    \r\n  let redirect = '/classrooms';\r\n    \r\n  if (props.resource === 'users_classrooms')\r\n  {\r\n    redirect = '/users/' + props.record.users_id + '/classrooms';\r\n  }\r\n    \r\n  return (\r\n    <Toolbar {...props} className=\"user_form_toolbar\" >\r\n      <SaveButton />\r\n      <DeleteButton redirect={redirect} mutationMode=\"pessimistic\" />\r\n    </Toolbar>\r\n  );\r\n};\r\n\r\nconst EmptyClassrooms = ({ associations_id , ...props}) => {\r\n  const translate = useTranslate(); \r\n  const { basePath, resource } = useListContext();\r\n  return (\r\n    <Box textAlign=\"center\" m={1} >\r\n      <br />\r\n      <Typography variant=\"h5\" paragraph className=\"grey8\">\r\n        {translate('classrooms.no_classrooms_title')} \r\n      </Typography>\r\n      <Typography variant=\"body1\" className=\"grey8\">\r\n        {translate('classrooms.no_classrooms_ask')} \r\n      </Typography>\r\n      <br />\r\n      <CreateButton />\r\n    </Box>\r\n  );\r\n};\r\n\r\n\r\nconst useStyles = makeStyles({\r\n  comment: {\r\n    maxWidth: '100%',\r\n    overflow: 'hidden',\r\n    textOverflow: 'ellipsis',\r\n    whiteSpace: 'nowrap',\r\n  },\r\n  tab: {\r\n    maxWidth: '100%',\r\n    display: 'block',\r\n  },\r\n});\r\n\r\n\r\n\r\n\r\n\r\n","// in src/posts.js\r\nimport React, { useState } from 'react';\r\n\r\nimport {\r\n  List, \r\n  Datagrid,\r\n  TextField,\r\n  DeleteButton,\r\n  Edit,\r\n  SelectInput,\r\n  TextInput,\r\n  Button ,\r\n  Create, \r\n  CreateButton ,\r\n  TopToolbar,\r\n  FormTab,\r\n  TabbedForm,\r\n  ReferenceManyField,\r\n  FormDataConsumer,\r\n  useListContext, required,NumberInput,BooleanInput,SelectField,  FunctionField, ResourceContextProvider, useCreate, useRefresh, FormWithRedirect, Toolbar, SaveButton,\r\n  useNotify,\r\n  useRedirect,\r\n  SimpleForm,\r\n  DateField ,\r\n  DateInput,\r\n  useDataProvider,\r\n  AutocompleteInput,\r\n  downloadCSV\r\n} from 'react-admin';\r\n\r\nimport { useEffect } from 'react';\r\n\r\nimport jsonExport from 'jsonexport/dist';\r\n\r\nimport { ExportButton } from './../components/ExportButton';\r\n\r\nimport { AccordionSection  } from '@react-admin/ra-form-layout';\r\n\r\nimport PaymentIcon from '@material-ui/icons/Payment';\r\nimport AccountBoxIcon from '@material-ui/icons/AccountBox';\r\n\r\nimport { makeStyles } from '@material-ui/core/styles';\r\n\r\nimport Divider from '@mui/material/Divider';\r\n\r\n\r\nimport { useTranslate  } from '../common/language';\r\n\r\nimport Typography from '@mui/material/Typography';\r\n\r\n\r\nimport RichTextInput from 'ra-input-rich-text';\r\n\r\n\r\nimport { TextFieldShow } from '../components/TextFieldShow';\r\n\r\nimport Grid from '@mui/material/Grid';\r\nimport Avatar from '@mui/material/Avatar';\r\nimport IconContentAdd from '@material-ui/icons/Add';\r\nimport IconCancel from '@material-ui/icons/Cancel';\r\nimport MeetingRoomIcon from '@mui/icons-material/MeetingRoom';\r\n\r\nimport Dialog from '@material-ui/core/Dialog';\r\nimport DialogTitle from '@material-ui/core/DialogTitle';\r\nimport DialogContent from '@material-ui/core/DialogContent';\r\nimport DialogActions from '@material-ui/core/DialogActions';\r\n\r\nimport { ColorInput } from 'react-admin-color-input';\r\n\r\nimport { DocsList, DocsListShow } from './docs';\r\nimport { targets, choicesRealStatePaymentsType, choicesRealStatePaymentsPayer } from './../common/constants';\r\n\r\nimport { CityInput } from './../components/Inputs';\r\nimport { dateOnlyToCatalan, structArrayToIdList } from './../common/utils';        \r\n\r\nimport { UserInput, RenderBoolean } from '../components/User';\r\nimport { BackLink } from './../components/BackLink';\r\n\r\nimport Box from '@material-ui/core/Box';\r\n\r\nimport { Link } from 'react-router-dom';\r\n\r\nimport { validateMaxLength, validateInteger  } from './../components/Validator';\r\n\r\nexport const RealStatePaymentsList = (props) => {\r\n  const translate = useTranslate();  \r\n    \r\n  let basePath='/real_state_payments';\r\n  let resource = 'real_state_payments';\r\n  let strRedirect =  `/real_state/${props.real_state_id}/payments`;\r\n      \r\n  return (\r\n    <ResourceContextProvider value={resource}>\r\n      <List \r\n        basePath={basePath}   \r\n        filter={{ associations_id : localStorage.getItem('associations_id'), real_state_id: props.real_state_id }}  \r\n        actions={props.show ? <span/> : <ListActions real_state_id={props.real_state_id}  />}    \r\n        empty={props.show ? <span/> : <ListActions real_state_id={props.real_state_id} />}        \r\n        bulkActionButtons={false}          \r\n        perPage={1000}   \r\n        pagination={false}\r\n        sort={{ field: 'datePayment', order: 'DESC' }} \r\n        label=\"\"  \r\n        title=\"\"  \r\n        resource={resource}\r\n      >        \r\n        <Datagrid \r\n          rowClick=\"edit\"\r\n          expand={<RealStatePaymentsDetails />} >  \r\n          <Avatar><PaymentIcon/></Avatar>   \r\n          <DateField source=\"date_payment\" label={translate('real_state_payments.date_payment')} sortable={false} /> \r\n          <FunctionField render={record => <span>{record.type > 0 ? translate('real_state_payments.type_' + record.type) : record.type_other}</span> } label={translate('real_state_payments.type')} sortable={false}  />  \r\n          <TextField source=\"amount\" label={translate('real_state_payments.amount')} sortable={false} />  \r\n          <FunctionField render={record => <span>{record.payer > 0 ? translate('real_state_payments.payer_' + record.payer) : record.payer_other}</span> } label={translate('real_state_payments.payer')} sortable={false}  />  \r\n          <TextField source=\"comments\" label={translate('real_state_payments.comments')} sortable={false} />           \r\n        </Datagrid>        \r\n      </List>\r\n    </ResourceContextProvider>\r\n  );\r\n};\r\n\r\n\r\n\r\n/* \r\n * Llista no editable des de la fitxa d'users (espais d'usuari)\r\n */\r\n/*\r\nexport const UsersClassroomsShow = (props) => {\r\n  const translate = useTranslate();    \r\n  return (\r\n    <ReferenceManyField                    \r\n      reference=\"users_classrooms\"\r\n      target=\"users_id\"\r\n      label=\"\"\r\n      filter={{ associations_id : localStorage.getItem('associations_id') }}  \r\n    >\r\n\r\n      <Datagrid          \r\n        hasCreate\r\n        className=\"table-quotes-periods users_remittances_list header_grey6\"\r\n        expand={<MyDetails />} \r\n      >\r\n        <Avatar><MeetingRoomIcon/></Avatar>                                  \r\n        <TextField source=\"name\" label={translate('common.name')} sortable={false} />    \r\n        <FunctionField render={record => <span>{translate('classrooms.type' + record.type)}</span> } label={translate('common.type')} sortable={false}  />   \r\n        <TextField source=\"m2\" label={translate('classrooms.m2')} sortable={false} />  \r\n        <TextField source=\"seats\" label={translate('classrooms.seats')} sortable={false} />                    \r\n      </Datagrid>\r\n\r\n    </ReferenceManyField> \r\n  );\r\n};*/\r\n\r\n\r\nexport const RealStatePaymentsDetails = ({ id, record, resource, ...props }) => {\r\n  const translate = useTranslate(); \r\n      \r\n  return (\r\n    <div className=\"usersClassroomsExpand\">        \r\n      <Grid container spacing={2}>\r\n        <Grid item xs={4}>                    \r\n          <TextFieldShow source={dateOnlyToCatalan(record.date_payment)} label={translate('real_state_payments.date_payment')} />                   \r\n        </Grid>\r\n        <Grid item xs={4}>                    \r\n          <TextFieldShow source={record.type > 0 ? translate('real_state_payments.type'+record.type) : record.type_other} label={translate('real_state_payments.type')} />               \r\n        </Grid>        \r\n        <Grid item xs={4}>                    \r\n          <TextFieldShow source={record.amount} label={translate('real_state_payments.amount')} />                       \r\n        </Grid> \r\n        <Grid item xs={4}>                    \r\n          <TextFieldShow source={record.payer > 0 ? translate('real_state_payments.payer_'+record.payer) : record.payer_other} label={translate('real_state_payments.payer')} />               \r\n        </Grid>\r\n        <Grid item xs={4}>                    \r\n          <TextFieldShow source={<RenderBoolean source={record.financing} />} label={translate('real_state_payments.financing')} />   \r\n        </Grid>  \r\n        <Grid item xs={4}>                 \r\n            {record.financing ?\r\n            <TextFieldShow source={record.financing_type} label={translate('real_state_payments.financing_type')} />                       \r\n            : null }\r\n        </Grid>   \r\n        <Grid item xs={12}>                    \r\n          <TextFieldShow source={record.comments} label={translate('real_state_payments.comments')} />                       \r\n        </Grid>\r\n      </Grid>\r\n                \r\n      <Typography variant=\"h6\" className=\"grey8 titleUserShow\">                        \r\n        {translate('real_state_payments.docs_billing')}\r\n      </Typography>\r\n      <Divider fullWidth className=\"\" /><br/>\r\n        \r\n      <DocsListShow target={targets.REAL_STATE_PAYMENT} items_id={record.id} />\r\n              \r\n    </div>\r\n  );\r\n};\r\n\r\n\r\nconst exporter = (items, translate, notify) => {\r\n    \r\n  const itemsForExport = items.map(item => {\r\n    var itemForExport = {\r\n      real_state_id: item.real_state_id,\r\n      id : item.id,\r\n      type : item.type != null ? translate('real_state_payments.type_'+item.type) : '', \r\n      type_other : item.type_other, \r\n      date_payment : dateOnlyToCatalan(item.date_payment), \r\n      amount : item.amount != null ? item.amount.toFixed(2).replace('.', ',') : '',        \r\n      payer : item.payer != null ? translate('real_state_payments.payer_' + item.payer) : '', \r\n      payer_other : item.payer_other, \r\n      financing: item.financing != null ? item.financing : '',\r\n      financing_type : item.financing_type, \r\n      comments : item.comments\r\n    };\r\n    return itemForExport;\r\n  });\r\n  jsonExport(itemsForExport, {\r\n    headers: ['real_state_id','id','type','type_other','date_payment','amount','payer','payer_other','financing','financing_type','comments',],\r\n    rename: [translate('real_state_activities.real_state_id'), translate('common.id'),\r\n    translate('real_state_payments.type'),translate('real_state_payments.type_other'),translate('real_state_payments.date_payment'),\r\n    translate('real_state_payments.amount'),translate('real_state_payments.payer'),translate('real_state_payments.payer_other'),\r\n    translate('real_state_payments.financing'),translate('real_state_payments.financing_type'),translate('real_state_payments.comments')],                \r\n  }, (err, csv) => {\r\n    const csv_new = '\\uFEFF' + csv;\r\n    downloadCSV(csv_new, translate('real_state_payments.exporter_file_name') ); \r\n    notify(translate('common.download_ok'),\"success\");\r\n  });\r\n};\r\n\r\nconst ListActions = (props) => {\r\n  const translate = useTranslate(); \r\n  \r\n  let filterExport = { \r\n    associations_id: localStorage.getItem('associations_id'),        \r\n    real_state_id: props.real_state_id\r\n  };\r\n    \r\n  return (\r\n    <TopToolbar>             \r\n      <MyCreateButton {...props} />\r\n      <ExportButton maxResults=\"100000\" filterValues={filterExport} alwaysEnabled={false} exporter={exporter} sort={{ field: 'id', order: 'DESC' }} /> \r\n    </TopToolbar>\r\n  );\r\n};\r\n\r\n\r\nexport const MyCreateButton = ({ real_state_id , ...props }) => {\r\n\r\n  const [showDialog, setShowDialog] = useState(false);\r\n  const [create, { loading }] = useCreate('real_state_payments');\r\n  const notify = useNotify();\r\n  const refresh = useRefresh();    \r\n  const translate = useTranslate();  \r\n  const redirect = useRedirect();\r\n    \r\n  const handleClick = () => {\r\n    setShowDialog(true);\r\n  };\r\n\r\n  const handleCloseClick = () => {\r\n    setShowDialog(false);\r\n  };\r\n\r\n  const handleSubmit = async values => {\r\n    create(            \r\n      { payload: { data: values } },\r\n      {\r\n        onSuccess: ({ data }) => {                    \r\n          redirect('/real_state_payments/' + data.id);        \r\n        },\r\n        onFailure: ( error ) => {\r\n          notify( error.message , 'error');\r\n        }\r\n      }\r\n    );\r\n  };\r\n  \r\n  const today = new Date().toISOString().slice(0, 10);\r\n    \r\n  return (\r\n    <>            \r\n      <Button onClick={handleClick} label={translate('real_state_payments.create')}>\r\n        <IconContentAdd />                \r\n      </Button>\r\n\r\n      <Dialog\r\n        fullWidth\r\n        open={showDialog}\r\n        onClose={handleCloseClick}\r\n        aria-label={translate('real_state_payments.create')}\r\n      >\r\n        <DialogTitle>{translate('real_state_payments.create')}</DialogTitle>\r\n\r\n        <FormWithRedirect\r\n          save={handleSubmit}\r\n          initialValues={{ associations_id: localStorage.getItem('associations_id') , real_state_id : real_state_id, type: 0, payer: 3 , date_payment: today }}\r\n          render={({\r\n            handleSubmitWithRedirect,\r\n            pristine,\r\n            saving\r\n          }) => (\r\n            <>\r\n              <DialogContent>\r\n                <FormDataConsumer>\r\n            {({ formData, ...rest }) => \r\n              <>                              \r\n                <br/>\r\n                <Grid container spacing={1}>                                     \r\n                  <Grid item xs={4}> \r\n                    <SelectInput fullWidth label={translate('real_state_payments.type')} source=\"type\" choices={choicesRealStatePaymentsType(translate)} validate={[required()]} />\r\n                  </Grid>                   \r\n                  { formData.type == 0 ?\r\n                  <Grid item xs={8}>                       \r\n                    <TextInput fullWidth autoFocus source=\"type_other\" label={translate('real_state_payments.type_other')} validate={[required(),validateMaxLength(255,translate('common.validation.maxLength'))]}  />                                                      \r\n                  </Grid> \r\n                  : <Grid item xs={8}></Grid> } \r\n                  \r\n                  <Grid item xs={4}>\r\n                    <DateInput source=\"date_payment\" fullWidth label={translate('real_state_payments.date_payment')} validate={[required()]} />\r\n                  </Grid>  \r\n                  <Grid item xs={4}>\r\n                    <NumberInput source=\"amount\" fullWidth label={translate('real_state_payments.amount')} validate={[required()]} />\r\n                  </Grid> \r\n                </Grid> \r\n                </>\r\n            }\r\n          </FormDataConsumer>\r\n              </DialogContent>\r\n              <DialogActions>\r\n                <Button label=\"ra.action.cancel\" onClick={handleCloseClick} disabled={loading} >\r\n                  <IconCancel />\r\n                </Button>\r\n                <SaveButton\r\n                  handleSubmitWithRedirect={\r\n                    handleSubmitWithRedirect\r\n                  }\r\n                  pristine={pristine}\r\n                  saving={saving}\r\n                  disabled={loading}\r\n                />\r\n              </DialogActions>\r\n            </>\r\n          )}\r\n        />\r\n      </Dialog>\r\n    </>\r\n  );\r\n};\r\n\r\nconst MyActions = ({ basePath, data, resource }) => {\r\n\r\n  const translate = useTranslate();   \r\n  \r\n  if (!data || !data.real_state_id) return null;\r\n  \r\n  let backLink = '/real_state/' + data.real_state_id + '/payments';\r\n  let title = data && data.type && data.type > 0 ? translate('real_state_payments.type_' + data.type) : data && data.type == 0 ? data.type_other : null;\r\n      \r\n  return <BackLink link={backLink} title={title} />;\r\n  \r\n};\r\n\r\n\r\nexport const RealStatePaymentsEdit  = ({ id, ...props }) => {\r\n\r\n  const translate = useTranslate();        \r\n  const classes = useStyles();\r\n  const notify = useNotify();\r\n  const refresh = useRefresh();\r\n  const redirect = useRedirect();\r\n    \r\n  const onSuccess = ({ data }) => {\r\n      notify(translate('common.notification.updated'));\r\n      redirect('/real_state/' + data.real_state_id + '/payments');\r\n      refresh();        \r\n  };\r\n        \r\n  return (\r\n\r\n    <Edit \r\n      title={<ElementTitle {...props}  />} \r\n      {...props} \r\n      id={id}\r\n      mutationMode=\"pessimistic\"\r\n      actions={<MyActions {...props} />}\r\n      onSuccess={onSuccess}   \r\n    >\r\n        \r\n      <TabbedForm        \r\n        toolbar={<FormToolbar />}\r\n      >    \r\n        <FormTab\r\n          label={translate('common.data')}\r\n          contentClassName={classes.tab}\r\n          path=\"\" \r\n                \r\n        > \r\n               \r\n          <FormDataConsumer>\r\n            {({ formData, ...rest }) => \r\n              <>                              \r\n                <br/>\r\n                <Grid container spacing={2}>\r\n                  <Grid item xs={3}> \r\n                    <SelectInput fullWidth label={translate('real_state_payments.type')} source=\"type\" choices={choicesRealStatePaymentsType(translate)} />\r\n                  </Grid>                   \r\n                  { formData.type == 0 ?\r\n                  <Grid item xs={9}>                       \r\n                    <TextInput fullWidth autoFocus source=\"type_other\" label={translate('real_state_payments.type_other')} validate={[validateMaxLength(255,translate('common.validation.maxLength'))]}  />                                                      \r\n                  </Grid> \r\n                  : <Grid item xs={9}></Grid> }        \r\n                  \r\n                  <Grid item xs={2}>\r\n                    <DateInput source=\"date_payment\" fullWidth label={translate('real_state_payments.date_payment')} />\r\n                  </Grid>  \r\n                  <Grid item xs={2}>\r\n                    <NumberInput source=\"amount\" fullWidth label={translate('real_state_payments.amount')} />\r\n                  </Grid>  \r\n                  \r\n                  <Grid item xs={2}> \r\n                    <SelectInput fullWidth label={translate('real_state_payments.payer')} source=\"payer\" choices={choicesRealStatePaymentsPayer(translate)} />\r\n                  </Grid>                   \r\n                  { formData.payer == 0 ?\r\n                  <Grid item xs={6}>                       \r\n                    <TextInput fullWidth source=\"payer_other\" label={translate('real_state_payments.payer_other')} validate={[validateMaxLength(255,translate('common.validation.maxLength'))]}  />                                                      \r\n                  </Grid> \r\n                  : <Grid item xs={6}></Grid> }   \r\n                  \r\n                  <Grid item xs={2}>\r\n                    <BooleanInput source=\"financing\" label={translate('real_state_payments.financing')} />  \r\n                  </Grid>  \r\n                  { formData.financing == true ?\r\n                  <Grid item xs={10}>                       \r\n                    <TextInput fullWidth source=\"financing_type\" label={translate('real_state_payments.financing_type')} validate={[validateMaxLength(255,translate('common.validation.maxLength'))]}  />                                                      \r\n                  </Grid> \r\n                  : <Grid item xs={10}></Grid> } \r\n                  \r\n                  <Grid item xs={10}>                       \r\n                    <TextInput fullWidth source=\"comments\" label={translate('real_state_payments.comments')} />                                                      \r\n                  </Grid> \r\n                                    \r\n                </Grid>\r\n\r\n              </>\r\n            }\r\n          </FormDataConsumer>\r\n\r\n        </FormTab> \r\n        \r\n        <FormTab\r\n            label={translate('real_state_payments.docs')}\r\n            contentClassName={classes.tab}\r\n            path=\"docs\"                 \r\n        >             \r\n                        \r\n            <br />\r\n            <AccordionSection className=\"accordion\" label={translate('real_state_payments.docs_billing')} fullWidth defaultExpanded={true}>              \r\n              <DocsList target={targets.REAL_STATE_PAYMENT} items_id={id} />\r\n            </AccordionSection>   \r\n                    \r\n          <br />\r\n          <br />\r\n          \r\n        </FormTab>        \r\n    \r\n      </TabbedForm>\r\n    </Edit>\r\n  );\r\n};\r\n\r\nexport const AgreementsInput = ({ ...props }) => {\r\n\r\n  const translate = useTranslate(); \r\n    \r\n  const dataProvider = useDataProvider();\r\n  const [info, setInfo] = useState();\r\n  const [loading, setLoading] = useState(true);\r\n  const [error, setError] = useState();\r\n    \r\n  const disabled = props.disabled && props.disabled==true ? true : false;\r\n  const resettable = props.resettable != null ? props.resettable : true;\r\n  const label = props.label ? props.label : translate('common.name');\r\n  const validate = props.required ? [required()] : [];\r\n    \r\n  useEffect(() => {\r\n    dataProvider\r\n      .getList('agreements', {\r\n        pagination: { page: 0, perPage: 10000 },\r\n        sort: { field: 'id', order: 'ASC' },\r\n        filter: { associations_id: localStorage.getItem('associations_id') },\r\n      })\r\n      .then(({ data }) => {\r\n        setInfo(data);\r\n        setLoading(false);\r\n      })\r\n      .catch((error) => {\r\n        setError(error);\r\n        setLoading(false);\r\n      });\r\n  }, []);\r\n\r\n  if (loading) return (<span>{translate('common.loading')}</span>);\r\n  if (error) return null;\r\n  if (!info) return null;\r\n  \r\n  return (\r\n    <AutocompleteInput \r\n      optionText={ (record)=> record.name } \r\n      suggestionLimit={50}\r\n      resettable={resettable}\r\n      clearAlwaysVisible={true}\r\n      validate={validate}\r\n      fullWidth\r\n      disabled={disabled}\r\n      choices={info}\r\n      source={props.source}\r\n      label={label}\r\n    />\r\n                \r\n  );\r\n};\r\n\r\nconst ElementTitle = ({ record, ...props }) => {    \r\n  const translate = useTranslate(); \r\n  return (<span>{translate('common.edit')} {record ? `\"${record.name}\"` : ''}</span>);\r\n};\r\n\r\nconst FormToolbar = ({ id , ...props }) => {\r\n    \r\n  let redirect = '/real_state/' + props.record.real_state_id + '/payments';\r\n    \r\n  return (\r\n    <Toolbar {...props} className=\"user_form_toolbar\" >\r\n      <SaveButton />\r\n      <DeleteButton redirect={redirect} mutationMode=\"pessimistic\" />\r\n    </Toolbar>\r\n  );\r\n};\r\n\r\n\r\nconst useStyles = makeStyles({\r\n  comment: {\r\n    maxWidth: '100%',\r\n    overflow: 'hidden',\r\n    textOverflow: 'ellipsis',\r\n    whiteSpace: 'nowrap',\r\n  },\r\n  tab: {\r\n    maxWidth: '100%',\r\n    display: 'block',\r\n  },\r\n});\r\n\r\n\r\n\r\n\r\nexport const RealStatePaymentsCreate  = ({ id, ...props }) => {\r\n\r\n  const translate = useTranslate();   \r\n  const [info, setInfo] = useState();\r\n    \r\n  return (\r\n\r\n    <Create {...props} >\r\n      <SimpleForm \r\n        initialValues={{ associations_id: localStorage.getItem('associations_id') }}\r\n        redirect=\"list\"\r\n      >                \r\n        <Grid container spacing={2}>\r\n          <Grid item xs={12}>                    \r\n            <Typography variant=\"h5\" className=\"grey\">{translate('real_state.create')}</Typography>\r\n          </Grid>  \r\n          <Grid item xs={12}>                    \r\n            <TextInput fullWidth source=\"name\" label={translate('common.name')} validate={[required(),validateMaxLength(255,translate('common.validation.maxLength'))]} />\r\n          </Grid>      \r\n          \r\n        </Grid>   \r\n\r\n      </SimpleForm> \r\n    </Create>\r\n  );\r\n};\r\n","// in src/posts.js\r\nimport React, { useState } from 'react';\r\n\r\nimport {\r\n  List, \r\n  Datagrid,\r\n  TextField,\r\n  DeleteButton,\r\n  Edit,\r\n  SelectInput,\r\n  TextInput,\r\n  Button ,\r\n  Create,\r\n  SimpleForm,\r\n  CreateButton ,\r\n  TopToolbar,\r\n  FormTab,\r\n  TabbedForm,\r\n  ReferenceManyField,\r\n  FormDataConsumer,\r\n  useListContext, required,NumberInput,BooleanInput,SelectField,  FunctionField, ResourceContextProvider, useCreate, useRefresh, FormWithRedirect, Toolbar, SaveButton,\r\n  useNotify,\r\n  useRedirect,\r\n  DateField  , \r\n  Filter, \r\n  downloadCSV,\r\n  DateInput,\r\n  SimpleFormIterator,\r\n  ArrayInput,\r\n} from 'react-admin';\r\n\r\nimport { useEffect } from 'react';\r\n\r\nimport jsonExport from 'jsonexport/dist';\r\n\r\nimport { AccordionSection  } from '@react-admin/ra-form-layout';\r\n\r\n\r\nimport { makeStyles } from '@material-ui/core/styles';\r\n\r\nimport Divider from '@mui/material/Divider';\r\n\r\n\r\nimport { useTranslate  } from '../common/language';\r\n\r\nimport Typography from '@mui/material/Typography';\r\n\r\n\r\nimport RichTextInput from 'ra-input-rich-text';\r\n\r\n\r\nimport { TextFieldShow } from '../components/TextFieldShow';\r\n\r\nimport Grid from '@mui/material/Grid';\r\nimport Avatar from '@mui/material/Avatar';\r\nimport IconContentAdd from '@material-ui/icons/Add';\r\nimport IconCancel from '@material-ui/icons/Cancel';\r\nimport GavelIcon from '@material-ui/icons/Gavel';\r\n\r\nimport Dialog from '@material-ui/core/Dialog';\r\nimport DialogTitle from '@material-ui/core/DialogTitle';\r\nimport DialogContent from '@material-ui/core/DialogContent';\r\nimport DialogActions from '@material-ui/core/DialogActions';\r\nimport Chip from '@material-ui/core/Chip';\r\n\r\nimport { ColorInput } from 'react-admin-color-input';\r\n\r\nimport { DocsList, DocsListShow } from './docs';\r\nimport { targets, modules, choicesClassroomsType  } from './../common/constants';\r\nimport { dateOnlyToCatalan, subscriptionModule, setActivePermissionData, structArrayToIdList } from './../common/utils';  \r\n\r\nimport { CityInput } from './../components/Inputs';\r\nimport { ExportButton } from './../components/ExportButton';\r\nimport { BackLink } from './../components/BackLink';\r\nimport { RenderBoolean } from '../components/User';\r\nimport { chipsRealState, RealStateInput } from '../resources/real_state';\r\n\r\nimport Box from '@material-ui/core/Box';\r\n\r\nimport { Link } from 'react-router-dom';\r\n\r\nimport { validateMaxLength, validateInteger  } from './../components/Validator';\r\n\r\n\r\nexport const InsurancesList = (props) => {\r\n  const translate = useTranslate();  \r\n    \r\n  let basePath='/insurances'; \r\n  let resource = 'insurances';\r\n  let strRedirect = 'insurances';\r\n  let real_state_id = props.real_state_id ? props.real_state_id : 0;\r\n    \r\n  return (\r\n    <ResourceContextProvider value={resource}>\r\n      <List \r\n        basePath={basePath}   \r\n        filter={{ associations_id : localStorage.getItem('associations_id'), real_state_id: real_state_id }}  \r\n        actions={props.show ?  <span/> : <ListActions />}    \r\n        empty={props.show ?  <span/> : <ListActions />}        \r\n        bulkActionButtons={false}          \r\n        perPage={1000}   \r\n        pagination={false}\r\n        sort={{ field: 'id', order: 'ASC' }} \r\n        label=\"\"  \r\n        title=\"\"  \r\n        resource={resource}\r\n        filters={props.show ?  <span/> : <MyFilter />} \r\n        filterDefaultValues={ { only_current : props.show ? false : true, q: \"\" }}\r\n      >        \r\n        <Datagrid \r\n          rowClick={props.show ? null : 'edit'}\r\n          expand={<InsurancesDetails />} >  \r\n          <Avatar><GavelIcon/></Avatar>                                  \r\n          <TextField source=\"name\" label={translate('common.name')} sortable={false} />  \r\n          { subscriptionModule(modules.REAL_STATE) ? \r\n          <FunctionField render={record => chipsRealState(record.real_state) } label={translate('insurances.real_state')} sortable={false}  />  \r\n          : null }\r\n          <DateField source=\"date_start\" label={translate('insurances.date_start')} sortable={false} /> \r\n          <DateField source=\"date_finish\" label={translate('insurances.date_finish')} sortable={false} /> \r\n        </Datagrid>        \r\n      </List>\r\n    </ResourceContextProvider>\r\n  );\r\n};\r\n\r\nconst MyFilter = (props) => {\r\n    const translate = useTranslate(); \r\n    return (\r\n    <Filter {...props}>         \r\n        <TextInput label={translate('common.search')} source=\"q\" alwaysOn validate={[validateMaxLength(50,translate('common.validation.maxLength'))]} resettable />    \r\n        <BooleanInput label={translate('insurances.filter_only_current')} source=\"only_current\" alwaysOn />        \r\n    </Filter>\r\n);\r\n};\r\n\r\nexport const InsurancesDetails = ({ id, record, resource, ...props }) => {\r\n  const translate = useTranslate(); \r\n        \r\n  return (\r\n    <div className=\"usersClassroomsExpand\">        \r\n      <Grid container spacing={2}>\r\n        <Grid item xs={12}>   \r\n          <TextFieldShow source={record.name} label={translate('common.name')} />\r\n        </Grid> \r\n        <Grid item xs={2}>                    \r\n          <TextFieldShow source={dateOnlyToCatalan(record.date_start)} label={translate('insurances.date_start')} /> \r\n        </Grid>\r\n        <Grid item xs={2}>                      \r\n          <TextFieldShow source={dateOnlyToCatalan(record.date_finish)} label={translate('insurances.date_finish')} /> \r\n        </Grid>        \r\n        <Grid item xs={2}>                     \r\n          <TextFieldShow source={dateOnlyToCatalan(record.date_alert)} label={translate('insurances.date_alert')} /> \r\n        </Grid>                   \r\n        <Grid item xs={2}>                     \r\n          <TextFieldShow source={dateOnlyToCatalan(record.date_renewal)} label={translate('insurances.date_renewal')} /> \r\n        </Grid>\r\n        <Grid item xs={4}>                     \r\n          <TextFieldShow source={record.renewal_duration} label={translate('insurances.renewal_duration')} /> \r\n        </Grid>\r\n        <Grid item xs={12}>                    \r\n          <TextFieldShow source={record.comments} label={translate('insurances.comments')} />                       \r\n        </Grid>\r\n      </Grid>\r\n      \r\n      { subscriptionModule(modules.REAL_STATE) ? <>\r\n      <Typography variant=\"h6\" className=\"grey8 titleUserShow\">                        \r\n        {translate('agreements.real_state')}\r\n      </Typography>\r\n      <Divider fullWidth className=\"\" />      \r\n      <br />\r\n      {chipsRealState(record.real_state)}\r\n      </> : null }\r\n                                \r\n      <Typography variant=\"h6\" className=\"grey8 titleUserShow\">                        \r\n        {translate('insurances.docs')}\r\n      </Typography>\r\n      <Divider fullWidth className=\"\" />\r\n      <br />  \r\n      <DocsListShow target={targets.INSURANCE} items_id={record.id} />\r\n                \r\n    </div>\r\n  );\r\n};\r\n\r\nconst exporter = (items, translate, notify) => {\r\n    \r\n  const itemsForExport = items.map(item => {\r\n    var itemForExport = {\r\n      id : item.id,\r\n      name: item.name,\r\n      real_state: subscriptionModule(modules.REAL_STATE) ? structArrayToIdList(item.real_state) : '',\r\n      date_start: dateOnlyToCatalan(item.date_start),\r\n      date_finish: dateOnlyToCatalan(item.date_finish), \r\n      date_alert: dateOnlyToCatalan(item.date_alert), \r\n      date_renewal: dateOnlyToCatalan(item.date_renewal), \r\n      renewal_duration: item.renewal_duration, \r\n      comments: item.comments\r\n    };\r\n    return itemForExport;\r\n  });\r\n  jsonExport(itemsForExport, {\r\n    headers: ['id', 'name', 'real_state','date_start','date_finish','date_alert','date_renewal','renewal_duration','comments'],\r\n    rename: [translate('common.id'),translate('common.name'), translate('insurances.real_state'), translate('insurances.date_start'), translate('insurances.date_finish')\r\n    , translate('insurances.date_alert'), translate('insurances.date_renewal'),translate('insurances.renewal_duration'), translate('insurances.comments')],        \r\n        \r\n  }, (err, csv) => {\r\n    const csv_new = '\\uFEFF' + csv;\r\n    downloadCSV(csv_new, translate('insurances.exporter_file_name') ); \r\n    notify(translate('common.download_ok'),\"success\");\r\n  });\r\n};\r\n\r\n\r\nconst ListActions = (props) => {\r\n    const translate = useTranslate(); \r\n    \r\n    let filterExport = { \r\n        associations_id: localStorage.getItem('associations_id'),        \r\n        q: props.filterValues && props.filterValues.q ? props.filterValues.q : '',\r\n        only_current: props.filterValues && props.filterValues.only_current ? props.filterValues.only_current : false\r\n    };\r\n    \r\n    return (\r\n    <TopToolbar>     \r\n        <MyCreateButton {...props} />    \r\n        <ExportButton maxResults=\"100000\" filterValues={filterExport} alwaysEnabled={false} exporter={exporter} sort={{ field: 'id', order: 'DESC' }} /> \r\n    </TopToolbar>\r\n    );\r\n};\r\n\r\nexport const MyCreateButton = ({ users_id , ...props }) => {\r\n\r\n  const [showDialog, setShowDialog] = useState(false);\r\n  const [create, { loading }] = useCreate('insurances');\r\n  const notify = useNotify();\r\n  const refresh = useRefresh();    \r\n  const translate = useTranslate();  \r\n  const redirect = useRedirect();\r\n        \r\n  const handleClick = () => {\r\n    setShowDialog(true);\r\n  };\r\n\r\n  const handleCloseClick = () => {\r\n    setShowDialog(false);\r\n  };\r\n\r\n  const handleSubmit = async values => {\r\n    create(            \r\n      { payload: { data: values } },\r\n      {\r\n        onSuccess: ({ data }) => {                    \r\n          redirect('/insurances/' + data.id);\r\n        \r\n        },\r\n        onFailure: ( error ) => {\r\n          notify( error.message , 'error');\r\n        }\r\n      }\r\n    );\r\n  };\r\n    \r\n  return (\r\n    <>            \r\n      <Button onClick={handleClick} label={translate('insurances.create')}>\r\n        <IconContentAdd />                \r\n      </Button>\r\n\r\n      <Dialog\r\n        fullWidth\r\n        open={showDialog}\r\n        onClose={handleCloseClick}\r\n        aria-label={translate('insurances.create')}\r\n      >\r\n        <DialogTitle>{translate('insurances.create')}</DialogTitle>\r\n\r\n        <FormWithRedirect\r\n          save={handleSubmit}\r\n          initialValues={{ associations_id: localStorage.getItem('associations_id') }}\r\n          render={({\r\n            handleSubmitWithRedirect,\r\n            pristine,\r\n            saving\r\n          }) => (\r\n            <>\r\n              <DialogContent>\r\n                <Grid container spacing={1}>                                     \r\n                  <Grid item xs={12}>                                               \r\n                    <TextInput fullWidth source=\"name\" label={translate('common.name')} validate={[required(),validateMaxLength(255,translate('common.validation.maxLength'))]} />\r\n                  </Grid>\r\n                </Grid> \r\n              </DialogContent>\r\n              <DialogActions>\r\n                <Button label=\"ra.action.cancel\" onClick={handleCloseClick} disabled={loading} >\r\n                  <IconCancel />\r\n                </Button>\r\n                <SaveButton\r\n                  handleSubmitWithRedirect={\r\n                    handleSubmitWithRedirect\r\n                  }\r\n                  pristine={pristine}\r\n                  saving={saving}\r\n                  disabled={loading}\r\n                />\r\n              </DialogActions>\r\n            </>\r\n          )}\r\n        />\r\n      </Dialog>\r\n    </>\r\n  );\r\n};\r\n\r\nconst MyActions = ({ basePath, data, resource }) => {\r\n\r\n  let backLink = '/insurances';\r\n  return <BackLink link={backLink} title={ data && data.name ? data.name : null } />;\r\n        \r\n};\r\n\r\n\r\nexport const InsurancesEdit  = ({ id, ...props }) => {\r\n\r\n  const translate = useTranslate();        \r\n  const classes = useStyles();\r\n  const notify = useNotify();\r\n  const refresh = useRefresh();\r\n  const redirect = useRedirect();\r\n\r\n  let strRedirect =  `/insurances/${id}`;    \r\n    \r\n  const onSuccess = ({ data }) => {\r\n    notify(translate('common.notification.updated'));        \r\n    redirect('/insurances');        \r\n  };\r\n        \r\n  return (\r\n\r\n    <Edit \r\n      title={<ElementTitle {...props}  />} \r\n      {...props} \r\n      id={id}\r\n      mutationMode=\"pessimistic\"\r\n      actions={<MyActions {...props} />}\r\n      onSuccess={onSuccess}   \r\n    >\r\n        \r\n      <TabbedForm        \r\n        toolbar={<FormToolbar />}\r\n      >    \r\n        <FormTab\r\n          label={translate('classrooms.data')}\r\n          contentClassName={classes.tab}\r\n          path=\"\" \r\n                \r\n        > \r\n               \r\n          <FormDataConsumer>\r\n            {({ formData, ...rest }) => \r\n              <>                              \r\n                <br/>\r\n                <Grid container spacing={2}>\r\n                  <Grid item xs={12}>   \r\n                    <TextInput fullWidth autoFocus source=\"name\" label={translate('common.name')} validate={[required(),validateMaxLength(255,translate('common.validation.maxLength'))]}  />\r\n                  </Grid> \r\n                  <Grid item xs={2}>\r\n                    <DateInput source=\"date_start\" fullWidth label={translate('insurances.date_start')} />\r\n                  </Grid>\r\n                  <Grid item xs={2}>\r\n                    <DateInput source=\"date_finish\" fullWidth label={translate('insurances.date_finish')} />\r\n                  </Grid>\r\n                  <Grid item xs={2}>\r\n                    <DateInput source=\"date_alert\" fullWidth label={translate('insurances.date_alert')} />\r\n                  </Grid>\r\n                  <Grid item xs={2}>\r\n                    <DateInput source=\"date_renewal\" fullWidth label={translate('insurances.date_renewal')} />\r\n                  </Grid>\r\n                  <Grid item xs={4}>   \r\n                    <TextInput fullWidth autoFocus source=\"renewal_duration\" label={translate('insurances.renewal_duration')} validate={[validateMaxLength(100,translate('common.validation.maxLength'))]}  />\r\n                  </Grid> \r\n                  \r\n                  { subscriptionModule(modules.REAL_STATE) ? \r\n                  <Grid item xs={12}>\r\n                    <AccordionSection className=\"accordion\" label={translate('agreements.real_state')} fullWidth defaultExpanded={true}>\r\n                        <ArrayInput source=\"real_state\" label=\"\">\r\n                            <SimpleFormIterator \r\n                              disableReordering\r\n                              getItemLabel={index => ''}\r\n                            >\r\n                              <RealStateInput source=\"id\" disabled={false} label={translate('agreements.real_state')} allowEmpty={false} required={true} resettable={false} />\r\n                            </SimpleFormIterator>\r\n                        </ArrayInput>\r\n                    </AccordionSection>   \r\n                  </Grid>   \r\n                  : null }\r\n                  \r\n                  <Grid item xs={12}>   \r\n                    <TextInput fullWidth autoFocus source=\"comments\" label={translate('insurances.comments')} />\r\n                  </Grid>\r\n                  \r\n                </Grid>                                \r\n\r\n              </>\r\n            }\r\n          </FormDataConsumer>\r\n\r\n        </FormTab> \r\n        \r\n        <FormTab\r\n            label={translate('insurances.docs')}\r\n            contentClassName={classes.tab}\r\n            path=\"docs\"                 \r\n        > \r\n            \r\n          <DocsList target={targets.INSURANCE} items_id={id} />\r\n          <br />\r\n          <br />\r\n        </FormTab>\r\n    \r\n      </TabbedForm>\r\n    </Edit>\r\n  );\r\n};\r\n\r\nconst ElementTitle = ({ record, ...props }) => {    \r\n  const translate = useTranslate(); \r\n  return (<span>{translate('common.edit')} {record ? `\"${record.name}\"` : ''}</span>);\r\n};\r\n\r\nconst FormToolbar = ({ id , ...props }) => {\r\n    \r\n  let redirect = '/insurances';\r\n    \r\n  return (\r\n    <Toolbar {...props} className=\"user_form_toolbar\" >\r\n      <SaveButton />\r\n      <DeleteButton redirect={redirect} mutationMode=\"pessimistic\" />\r\n    </Toolbar>\r\n  );\r\n};\r\n\r\n\r\nconst useStyles = makeStyles({\r\n  comment: {\r\n    maxWidth: '100%',\r\n    overflow: 'hidden',\r\n    textOverflow: 'ellipsis',\r\n    whiteSpace: 'nowrap',\r\n  },\r\n  tab: {\r\n    maxWidth: '100%',\r\n    display: 'block',\r\n  },\r\n});\r\n\r\n\r\nexport const InsurancesCreate  = ({ id, ...props }) => {\r\n\r\n  const translate = useTranslate();   \r\n  const [info, setInfo] = useState();\r\n    \r\n  return (\r\n\r\n    <Create {...props} >\r\n      <SimpleForm \r\n        initialValues={{ associations_id: localStorage.getItem('associations_id') }}\r\n        redirect=\"list\"\r\n      >                \r\n        <Grid container spacing={2}>\r\n          <Grid item xs={12}>                    \r\n            <Typography variant=\"h5\" className=\"grey\">{translate('insurances.create')}</Typography>\r\n          </Grid>  \r\n          <Grid item xs={11}>                    \r\n            <TextInput fullWidth source=\"name\" label={translate('common.name')} validate={[required(),validateMaxLength(255,translate('common.validation.maxLength'))]} />\r\n          </Grid>          \r\n        </Grid>   \r\n\r\n      </SimpleForm> \r\n    </Create>\r\n  );\r\n};\r\n","// in src/posts.js\r\nimport React, { useState } from 'react';\r\n\r\nimport {\r\n  List, \r\n  Datagrid,\r\n  TextField,\r\n  DeleteButton,\r\n  Edit,\r\n  SelectInput,\r\n  TextInput,\r\n  Button ,  \r\n  Create,\r\n  SimpleForm,\r\n  CreateButton ,\r\n  TopToolbar,\r\n  FormTab,\r\n  TabbedForm,\r\n  ReferenceManyField,\r\n  FormDataConsumer,\r\n  useListContext, required,NumberInput,BooleanInput,SelectField,  FunctionField, ResourceContextProvider, useCreate, useRefresh, FormWithRedirect, Toolbar, SaveButton,\r\n  useNotify,\r\n  useRedirect,\r\n  DateField,\r\n  DateInput,\r\n  SimpleFormIterator,\r\n  ArrayInput,\r\n  ReferenceInput,\r\n  useDataProvider,\r\n  AutocompleteInput, \r\n  Filter, \r\n  downloadCSV\r\n} from 'react-admin';\r\n\r\nimport jsonExport from 'jsonexport/dist';\r\n\r\nimport { useEffect } from 'react';\r\n\r\nimport { AccordionSection  } from '@react-admin/ra-form-layout';\r\n\r\nimport { makeStyles } from '@material-ui/core/styles';\r\n\r\nimport Divider from '@mui/material/Divider';\r\n\r\n\r\nimport { useTranslate  } from '../common/language';\r\nimport { UserAvatarField, UserFullNameTxt, UserInput } from '../components/User';\r\nimport { dateOnlyToCatalan, subscriptionModule, setActivePermissionData, structArrayToIdList } from './../common/utils';    \r\n\r\nimport Typography from '@mui/material/Typography';\r\n\r\n\r\nimport RichTextInput from 'ra-input-rich-text';\r\n\r\n\r\nimport { TextFieldShow } from '../components/TextFieldShow';\r\n\r\nimport Grid from '@mui/material/Grid';\r\nimport Avatar from '@mui/material/Avatar';\r\nimport IconContentAdd from '@material-ui/icons/Add';\r\nimport IconCancel from '@material-ui/icons/Cancel';\r\nimport ThumbUpIcon from '@material-ui/icons/ThumbUp';\r\nimport Chip from '@material-ui/core/Chip';\r\n\r\nimport Dialog from '@material-ui/core/Dialog';\r\nimport DialogTitle from '@material-ui/core/DialogTitle';\r\nimport DialogContent from '@material-ui/core/DialogContent';\r\nimport DialogActions from '@material-ui/core/DialogActions';\r\n\r\nimport { ColorInput } from 'react-admin-color-input';\r\n\r\nimport { DocsList, DocsListShow } from './docs';\r\nimport { targets, choicesClassroomsType, modules  } from './../common/constants';\r\n\r\nimport { CityInput } from './../components/Inputs';\r\n\r\nimport { RenderBoolean, chipsUsers } from '../components/User';\r\nimport { ExportButton } from './../components/ExportButton';\r\nimport { BackLink } from './../components/BackLink';\r\n\r\nimport { chipsRealState, RealStateInput } from '../resources/real_state';\r\n\r\nimport Box from '@material-ui/core/Box';\r\n\r\nimport { Link } from 'react-router-dom';\r\n\r\nimport { validateMaxLength, validateInteger  } from './../components/Validator';\r\n\r\n//empty={<EmptyClassrooms title={translate('classrooms.no_classrooms_title')} icon={MeetingRoomIcon} />}\r\n/* \r\n * Llista editable des de la pestanya general Espais (espais per associació)\r\n * i Llista des de l'edició de la fitxa d'users (espais d'usuari)\r\n * El paràmetre que ho distingeix és props.user_classroom\r\n */\r\nexport const AgreementsList = (props) => {\r\n  const translate = useTranslate();  \r\n    \r\n  let basePath='/agreements'; \r\n  let resource = 'agreements';\r\n  let strRedirect = 'agreements';\r\n  \r\n  let real_state_id = props.real_state_id ? props.real_state_id : 0;\r\n    \r\n  return (\r\n    <ResourceContextProvider value={resource}>\r\n      <List \r\n        basePath={basePath}   \r\n        filter={{ associations_id : localStorage.getItem('associations_id'), real_state_id: real_state_id, users_id: props.users_id ? props.users_id : 0 }}  \r\n        actions={props.show ?  <span/> : <ListActions />}    \r\n        empty={props.show ?  <span/> : <ListActions />}        \r\n        bulkActionButtons={false}          \r\n        perPage={1000}   \r\n        pagination={false}\r\n        sort={{ field: 'id', order: 'ASC' }} \r\n        label=\"\"  \r\n        title=\"\"  \r\n        resource={resource}\r\n        filters={props.show ?  <span/> : <MyFilter />} \r\n        filterDefaultValues={ { only_current : props.show ? false : true, q: \"\" }}\r\n      >        \r\n        <Datagrid \r\n          rowClick={props.show ? null : 'edit'}\r\n          expand={<AgreementsDetails />} >  \r\n          <Avatar><ThumbUpIcon/></Avatar>                                  \r\n          <TextField source=\"name\" label={translate('common.name')} sortable={false} /> \r\n          <FunctionField render={record => chipsUsers(record.users) } label={translate('agreements.users')} sortable={false}  />  \r\n          { subscriptionModule(modules.REAL_STATE) ? \r\n          <FunctionField render={record => chipsRealState(record.real_state) } label={translate('agreements.real_state')} sortable={false}  />  \r\n          : null }\r\n          <DateField source=\"date_start\" label={translate('agreements.date_start')} sortable={false} /> \r\n          <DateField source=\"date_finish\" label={translate('agreements.date_finish')} sortable={false} /> \r\n        </Datagrid>        \r\n      </List>\r\n    </ResourceContextProvider>\r\n  );\r\n};\r\n\r\nconst MyFilter = (props) => {\r\n    const translate = useTranslate(); \r\n    return (\r\n    <Filter {...props}>         \r\n        <TextInput label={translate('common.search')} source=\"q\" alwaysOn validate={[validateMaxLength(50,translate('common.validation.maxLength'))]} resettable />    \r\n        <BooleanInput label={translate('agreements.filter_only_current')} source=\"only_current\" alwaysOn />         \r\n    </Filter>\r\n);\r\n};\r\n\r\n\r\n\r\nexport const AgreementsDetails = ({ id, record, resource, ...props }) => {\r\n  const translate = useTranslate(); \r\n        \r\n  return (\r\n    <div className=\"usersClassroomsExpand\">        \r\n      <Grid container spacing={2}>\r\n        <Grid item xs={6}>                    \r\n          <TextFieldShow source={record.name} label={translate('common.name')} />                       \r\n        </Grid>\r\n        <Grid item xs={6}>                                        \r\n        </Grid>\r\n        <Grid item xs={2}>                    \r\n          <TextFieldShow source={dateOnlyToCatalan(record.date_start, translate)} label={translate('agreements.date_start')} />                   \r\n        </Grid>\r\n        <Grid item xs={2}>                    \r\n          <TextFieldShow source={dateOnlyToCatalan(record.date_finish, translate)} label={translate('agreements.date_finish')} />                   \r\n        </Grid>\r\n        <Grid item xs={2}>                    \r\n          <TextFieldShow source={dateOnlyToCatalan(record.date_alert, translate)} label={translate('agreements.date_alert')} />                   \r\n        </Grid>\r\n        <Grid item xs={2}>                    \r\n          <TextFieldShow source={dateOnlyToCatalan(record.date_renewal, translate)} label={translate('agreements.date_renewal')} />                   \r\n        </Grid>\r\n        <Grid item xs={2}>                    \r\n          <TextFieldShow source={record.renewal_duration} label={translate('agreements.renewal_duration')} />                   \r\n        </Grid>\r\n        <Grid item xs={2}>                    \r\n          <TextFieldShow source={dateOnlyToCatalan(record.date_renewal_quote, translate)} label={translate('agreements.date_renewal_quote')} />                   \r\n        </Grid>\r\n        <Grid item xs={12}>                    \r\n          <TextFieldShow source={record.comments} label={translate('agreements.comments')} />                   \r\n        </Grid>\r\n      </Grid>\r\n      \r\n      <Typography variant=\"h6\" className=\"grey8 titleUserShow\">                        \r\n        {translate('agreements.users')}\r\n      </Typography>\r\n      <Divider fullWidth className=\"\" />\r\n      \r\n      <br />\r\n      {chipsUsers(record.users)}\r\n            \r\n      { subscriptionModule(modules.REAL_STATE) ? <>\r\n      <Typography variant=\"h6\" className=\"grey8 titleUserShow\">                        \r\n        {translate('agreements.real_state')}\r\n      </Typography>\r\n      <Divider fullWidth className=\"\" />      \r\n      <br />\r\n      {chipsRealState(record.real_state)}\r\n      </> : null }\r\n                                \r\n      <Typography variant=\"h6\" className=\"grey8 titleUserShow\">                        \r\n        {translate('agreements.docs')}\r\n      </Typography>\r\n      <Divider fullWidth className=\"\" />\r\n        \r\n      <br />\r\n      <DocsListShow target={targets.AGREEMENT} items_id={record.id} />\r\n        \r\n    </div>\r\n  );\r\n};\r\n\r\n\r\nconst exporter = (items, translate, notify) => {\r\n    \r\n  const itemsForExport = items.map(item => {\r\n    var itemForExport = {\r\n      id : item.id,\r\n      name: item.name,\r\n      date_start: dateOnlyToCatalan(item.date_start),\r\n      date_finish: dateOnlyToCatalan(item.date_finish), \r\n      date_alert: dateOnlyToCatalan(item.date_alert), \r\n      date_renewal: dateOnlyToCatalan(item.date_renewal), \r\n      renewal_duration: item.renewal_duration, \r\n      date_renewal_quote: dateOnlyToCatalan(item.date_renewal_quote),\r\n      comments: item.comments,\r\n      users: structArrayToIdList(item.users),\r\n      real_state: subscriptionModule(modules.REAL_STATE) ? structArrayToIdList(item.real_state) : '',\r\n    };\r\n    return itemForExport;\r\n  });\r\n  jsonExport(itemsForExport, {\r\n    headers: ['id','name','date_start','date_finish','date_alert','date_renewal','renewal_duration','date_renewal_quote','comments','users','real_state'],\r\n    rename: [translate('common.id'), translate('common.name'), translate('agreements.date_start'), translate('agreements.date_finish'), translate('agreements.date_alert')\r\n    , translate('agreements.date_renewal'), translate('agreements.renewal_duration'), translate('agreements.date_renewal_quote'), translate('agreements.comments'), translate('agreements.users')\r\n    , translate('agreements.real_state')],        \r\n        \r\n  }, (err, csv) => {\r\n    const csv_new = '\\uFEFF' + csv;\r\n    downloadCSV(csv_new, translate('agreements.exporter_file_name') ); \r\n    notify(translate('common.download_ok'),\"success\");\r\n  });\r\n};\r\n\r\nconst ListActions = (props) => {\r\n  const translate = useTranslate(); \r\n  \r\n  let filterExport = { \r\n        associations_id: localStorage.getItem('associations_id'),        \r\n        q: props.filterValues && props.filterValues.q ? props.filterValues.q : '',\r\n        only_current: props.filterValues && props.filterValues.only_current ? props.filterValues.only_current : false\r\n    };\r\n    \r\n  return (\r\n    <TopToolbar>             \r\n      <MyCreateButton {...props} />\r\n      <ExportButton maxResults=\"100000\" filterValues={filterExport} alwaysEnabled={false} exporter={exporter} sort={{ field: 'id', order: 'DESC' }} /> \r\n    </TopToolbar>\r\n  );\r\n};\r\n\r\nexport const MyCreateButton = ({ ...props }) => {\r\n\r\n  const [showDialog, setShowDialog] = useState(false);\r\n  const [create, { loading }] = useCreate('agreements');\r\n  const notify = useNotify();\r\n  const refresh = useRefresh();    \r\n  const translate = useTranslate();  \r\n  const redirect = useRedirect();\r\n        \r\n  const handleClick = () => {\r\n    setShowDialog(true);\r\n  };\r\n\r\n  const handleCloseClick = () => {\r\n    setShowDialog(false);\r\n  };\r\n\r\n  const handleSubmit = async values => {\r\n    create(            \r\n      { payload: { data: values } },\r\n      {\r\n        onSuccess: ({ data }) => {                    \r\n          redirect('/agreements/' + data.id);\r\n        \r\n        },\r\n        onFailure: ( error ) => {\r\n          notify( error.message , 'error');\r\n        }\r\n      }\r\n    );\r\n  };\r\n    \r\n  return (\r\n    <>            \r\n      <Button onClick={handleClick} label={translate('agreements.create')}>\r\n        <IconContentAdd />                \r\n      </Button>\r\n\r\n      <Dialog\r\n        fullWidth\r\n        open={showDialog}\r\n        onClose={handleCloseClick}\r\n        aria-label={translate('agreements.create')}\r\n      >\r\n        <DialogTitle>{translate('agreements.create')}</DialogTitle>\r\n\r\n        <FormWithRedirect\r\n          save={handleSubmit}\r\n          initialValues={{ associations_id: localStorage.getItem('associations_id') }}\r\n          render={({\r\n            handleSubmitWithRedirect,\r\n            pristine,\r\n            saving\r\n          }) => (\r\n            <>\r\n              <DialogContent>\r\n                <Grid container spacing={1}>                                     \r\n                  <Grid item xs={12}>                                               \r\n                    <TextInput fullWidth source=\"name\" label={translate('common.name')} validate={[required(),validateMaxLength(255,translate('common.validation.maxLength'))]} />\r\n                  </Grid>\r\n                </Grid> \r\n              </DialogContent>\r\n              <DialogActions>\r\n                <Button label=\"ra.action.cancel\" onClick={handleCloseClick} disabled={loading} >\r\n                  <IconCancel />\r\n                </Button>\r\n                <SaveButton\r\n                  handleSubmitWithRedirect={\r\n                    handleSubmitWithRedirect\r\n                  }\r\n                  pristine={pristine}\r\n                  saving={saving}\r\n                  disabled={loading}\r\n                />\r\n              </DialogActions>\r\n            </>\r\n          )}\r\n        />\r\n      </Dialog>\r\n    </>\r\n  );\r\n};\r\n\r\nconst MyActions = ({ basePath, data, resource }) => {\r\n  \r\n  let backLink = '/agreements';  \r\n  return <BackLink link={backLink} title={ data && data.name ? data.name : null } />;\r\n  \r\n};\r\n\r\n\r\nexport const AgreementsEdit  = ({ id, ...props }) => {\r\n\r\n  const translate = useTranslate();        \r\n  const classes = useStyles();\r\n  const notify = useNotify();\r\n  const refresh = useRefresh();\r\n  const redirect = useRedirect();\r\n\r\n  let strRedirect =  `/agreements/${id}`;    \r\n    \r\n  const onSuccess = ({ data }) => {\r\n    notify(translate('common.notification.updated'));\r\n    redirect('/agreements');        \r\n  };\r\n    \r\n  return (\r\n\r\n    <Edit \r\n      title={<ElementTitle {...props}  />} \r\n      {...props} \r\n      id={id}\r\n      mutationMode=\"pessimistic\"\r\n      actions={<MyActions {...props} />}\r\n      onSuccess={onSuccess}   \r\n    >\r\n        \r\n      <TabbedForm        \r\n        toolbar={<FormToolbar />}\r\n      >    \r\n        <FormTab\r\n          label={translate('common.data')}\r\n          contentClassName={classes.tab}\r\n          path=\"\" \r\n                \r\n        > \r\n               \r\n          <FormDataConsumer>\r\n            {({ formData, ...rest }) => \r\n              <>                              \r\n                <br/>\r\n                <Grid container spacing={2}>\r\n                  <Grid item xs={12}>   \r\n                    <TextInput fullWidth autoFocus source=\"name\" label={translate('common.name')} validate={[required(),validateMaxLength(255,translate('common.validation.maxLength'))]}  />\r\n                  </Grid>                             \r\n                  <Grid item xs={2}>\r\n                    <DateInput source=\"date_start\" fullWidth label={translate('agreements.date_start')} />\r\n                  </Grid>  \r\n                  <Grid item xs={2}>\r\n                    <DateInput source=\"date_finish\" fullWidth label={translate('agreements.date_finish')} />\r\n                  </Grid>  \r\n                  <Grid item xs={2}>\r\n                    <DateInput source=\"date_alert\" fullWidth label={translate('agreements.date_alert')} />\r\n                  </Grid>  \r\n                  <Grid item xs={2}>\r\n                    <DateInput source=\"date_renewal\" fullWidth label={translate('agreements.date_renewal')} />\r\n                  </Grid>  \r\n                  <Grid item xs={2}>\r\n                    <TextInput fullWidth source=\"renewal_duration\" label={translate('agreements.renewal_duration')} validate={[validateMaxLength(100,translate('common.validation.maxLength'))]} />                             \r\n                  </Grid>\r\n                  <Grid item xs={2}>\r\n                    <DateInput source=\"date_renewal_quote\" fullWidth label={translate('agreements.date_renewal_quote')} />\r\n                  </Grid> \r\n                  <Grid item xs={12}>\r\n                    <AccordionSection className=\"accordion\" label={translate('agreements.users')} fullWidth defaultExpanded={true}>\r\n                        <ArrayInput source=\"users\" label=\"\">\r\n                            <SimpleFormIterator \r\n                              disableReordering\r\n                              getItemLabel={index => ''}\r\n                            >\r\n                              <UserInput source=\"id\" user_type={-1} disabled={false} label={translate('common.name')} allowEmpty={false} required={true} resettable={false} />\r\n                            </SimpleFormIterator>\r\n                        </ArrayInput>\r\n                    </AccordionSection>   \r\n                  </Grid>  \r\n                  { subscriptionModule(modules.REAL_STATE) ? \r\n                  <Grid item xs={12}>\r\n                    <AccordionSection className=\"accordion\" label={translate('agreements.real_state')} fullWidth defaultExpanded={true}>\r\n                        <ArrayInput source=\"real_state\" label=\"\">\r\n                            <SimpleFormIterator \r\n                              disableReordering\r\n                              getItemLabel={index => ''}\r\n                            >\r\n                              <RealStateInput source=\"id\" disabled={false} label={translate('agreements.real_state')} allowEmpty={false} required={true} resettable={false} />\r\n                            </SimpleFormIterator>\r\n                        </ArrayInput>\r\n                    </AccordionSection>   \r\n                  </Grid>   \r\n                  : null }\r\n                  <Grid item xs={12}>\r\n                    <TextInput fullWidth source=\"comments\" label={translate('real_state.comments')} />                             \r\n                  </Grid>\r\n                </Grid>\r\n              </>\r\n            }\r\n          </FormDataConsumer>\r\n\r\n        </FormTab> \r\n        \r\n        <FormTab\r\n            label={translate('agreements.docs')}\r\n            contentClassName={classes.tab}\r\n            path=\"docs\"                 \r\n        > \r\n                      \r\n            <br />\r\n            <AccordionSection className=\"accordion\" label={translate('agreements.docs')} fullWidth defaultExpanded={true}>\r\n              <DocsList target={targets.AGREEMENT} items_id={id} />\r\n            </AccordionSection>   \r\n\r\n        </FormTab>\r\n            \r\n      </TabbedForm>\r\n    </Edit>\r\n  );\r\n};\r\n\r\n\r\n\r\nconst ElementTitle = ({ record, ...props }) => {    \r\n  const translate = useTranslate(); \r\n  return (<span>{translate('common.edit')} {record ? `\"${record.name}\"` : ''}</span>);\r\n};\r\n\r\nconst FormToolbar = ({ id , ...props }) => {\r\n    \r\n  let redirect = '/classrooms';\r\n    \r\n  if (props.resource === 'users_classrooms')\r\n  {\r\n    redirect = '/users/' + props.record.users_id + '/classrooms';\r\n  }\r\n    \r\n  return (\r\n    <Toolbar {...props} className=\"user_form_toolbar\" >\r\n      <SaveButton />\r\n      <DeleteButton redirect={redirect} mutationMode=\"pessimistic\" />\r\n    </Toolbar>\r\n  );\r\n};\r\n\r\nconst EmptyClassrooms = ({ associations_id , ...props}) => {\r\n  const translate = useTranslate(); \r\n  const { basePath, resource } = useListContext();\r\n  return (\r\n    <Box textAlign=\"center\" m={1} >\r\n      <br />\r\n      <Typography variant=\"h5\" paragraph className=\"grey8\">\r\n        {translate('classrooms.no_classrooms_title')} \r\n      </Typography>\r\n      <Typography variant=\"body1\" className=\"grey8\">\r\n        {translate('classrooms.no_classrooms_ask')} \r\n      </Typography>\r\n      <br />\r\n      <CreateButton />\r\n    </Box>\r\n  );\r\n};\r\n\r\n\r\nconst useStyles = makeStyles({\r\n  comment: {\r\n    maxWidth: '100%',\r\n    overflow: 'hidden',\r\n    textOverflow: 'ellipsis',\r\n    whiteSpace: 'nowrap',\r\n  },\r\n  tab: {\r\n    maxWidth: '100%',\r\n    display: 'block',\r\n  },\r\n});\r\n\r\n\r\n\r\n\r\nexport const AgreementsCreate  = ({ id, ...props }) => {\r\n\r\n  const translate = useTranslate();   \r\n  const [info, setInfo] = useState();\r\n    \r\n  return (\r\n\r\n    <Create {...props} >\r\n      <SimpleForm \r\n        initialValues={{ associations_id: localStorage.getItem('associations_id') }}\r\n        redirect=\"list\"\r\n      >                \r\n        <Grid container spacing={2}>\r\n          <Grid item xs={12}>                    \r\n            <Typography variant=\"h5\" className=\"grey\">{translate('agreements.create')}</Typography>\r\n          </Grid>  \r\n          <Grid item xs={11}>                    \r\n            <TextInput fullWidth source=\"name\" label={translate('common.name')} validate={[required(),validateMaxLength(255,translate('common.validation.maxLength'))]} />\r\n          </Grid>          \r\n        </Grid>   \r\n\r\n      </SimpleForm> \r\n    </Create>\r\n  );\r\n};\r\n\r\n\r\n\r\n","// in src/posts.js\r\nimport React, { useState } from 'react';\r\n\r\nimport {\r\n  List, \r\n  Datagrid,\r\n  TextField,\r\n  DeleteButton,\r\n  Edit,\r\n  SelectInput,\r\n  TextInput,\r\n  Button ,  \r\n  Create,\r\n  SimpleForm,\r\n  CreateButton ,\r\n  TopToolbar,\r\n  FormTab,\r\n  TabbedForm,\r\n  ReferenceManyField,\r\n  FormDataConsumer,\r\n  useListContext, required,NumberInput,BooleanInput,SelectField,  FunctionField, ResourceContextProvider, useCreate, useRefresh, FormWithRedirect, Toolbar, SaveButton,\r\n  useNotify,\r\n  useRedirect,\r\n  DateInput ,\r\n  ReferenceArrayInput,\r\n  SelectArrayInput,\r\n  SimpleFormIterator,\r\n  ArrayInput,\r\n  ReferenceInput,\r\n  ArrayField,\r\n  SingleFieldList,\r\n  ChipField,\r\n  EditButton,\r\n  useDataProvider,Show, SimpleShowLayout, useShowController, ShowButton, Filter, downloadCSV, AutocompleteInput\r\n} from 'react-admin';\r\n\r\nimport { Link } from 'react-router-dom';\r\n\r\nimport jsonExport from 'jsonexport/dist';\r\n\r\nimport { EditableDatagrid, RowForm } from '@react-admin/ra-editable-datagrid';\r\n\r\nimport { useEffect } from 'react';\r\nimport { useFormState } from 'react-final-form';\r\n\r\nimport Chip from '@material-ui/core/Chip';\r\nimport { AccordionSection  } from '@react-admin/ra-form-layout';\r\n\r\nimport { makeStyles } from '@material-ui/core/styles';\r\n\r\nimport Divider from '@mui/material/Divider';\r\n\r\n\r\nimport { useTranslate  } from '../common/language';\r\n\r\nimport Typography from '@mui/material/Typography';\r\n\r\n\r\nimport RichTextInput from 'ra-input-rich-text';\r\n\r\n\r\nimport { TextFieldShow } from '../components/TextFieldShow';\r\n\r\nimport Grid from '@mui/material/Grid';\r\nimport Avatar from '@mui/material/Avatar';\r\nimport IconContentAdd from '@material-ui/icons/Add';\r\nimport IconCancel from '@material-ui/icons/Cancel';\r\nimport GiteIcon from '@mui/icons-material/Gite';\r\n\r\nimport Dialog from '@material-ui/core/Dialog';\r\nimport DialogTitle from '@material-ui/core/DialogTitle';\r\nimport DialogContent from '@material-ui/core/DialogContent';\r\nimport DialogActions from '@material-ui/core/DialogActions';\r\n\r\nimport { ColorInput } from 'react-admin-color-input';\r\n\r\nimport { DocsList, DocsListShow } from './docs';\r\nimport { targets, choicesClassroomsType, choicesRealStateUse , modules } from './../common/constants';\r\nimport { subscriptionModule, setActivePermissionData,structArrayToIdList  } from '../common/utils';\r\nimport { dateOnlyToCatalan } from './../common/utils';  \r\n\r\nimport { CityInput } from './../components/Inputs';\r\nimport { ExportButton } from './../components/ExportButton';\r\nimport { BackLink } from './../components/BackLink';\r\nimport { RenderBoolean } from '../components/User';\r\n\r\nimport { RealStateActivitiesList,RealStateActivitiesEdit, RealStateActivitiesCreate  } from '../resources/real_state_activities';\r\nimport { RealStatePaymentsList,RealStatePaymentsEdit, RealStatePaymentsCreate  } from '../resources/real_state_payments';\r\nimport { InsurancesList } from '../resources/insurances';\r\nimport { AgreementsList } from '../resources/agreements';\r\n\r\nimport Box from '@material-ui/core/Box';\r\n\r\nimport { validateMaxLength, validateInteger  } from './../components/Validator';\r\n\r\nexport const RealStateList = (props) => {\r\n  const translate = useTranslate();  \r\n    \r\n  let basePath='/real_state'; \r\n  let resource = 'real_state';\r\n  let strRedirect = 'real_state';\r\n    \r\n  return (\r\n    <ResourceContextProvider value={resource}>\r\n      <List \r\n        basePath={basePath}   \r\n        filter={{ associations_id : localStorage.getItem('associations_id') }}  \r\n        actions={<ListActions />}    \r\n        empty={<ListActions />}        \r\n        bulkActionButtons={false}          \r\n        perPage={1000}   \r\n        pagination={false}\r\n        sort={{ field: 'id', order: 'ASC' }} \r\n        label=\"\"  \r\n        title=\"\"  \r\n        resource={resource}\r\n        filters={<MyFilter />} \r\n        filterDefaultValues={ { only_current : true, q: \"\" }}\r\n      >        \r\n        <Datagrid \r\n          rowClick=\"show\"\r\n           >  \r\n          <Avatar><GiteIcon/></Avatar>                                  \r\n          <TextField source=\"name\" label={translate('common.name')} sortable={false} />    \r\n          <TextField source=\"identifier\" label={translate('real_state.identifier')} sortable={false} />             \r\n          <TextField source=\"address\" label={translate('real_state.address')} sortable={false} />   \r\n          <TextField source=\"city\" label={translate('real_state.city')} sortable={false} />   \r\n          <FunctionField render={record => <span>{record.use > 0 ? translate('real_state.use_' + record.use) : record.use_others}</span> } label={translate('real_state.use')} sortable={false}  />  \r\n        </Datagrid>        \r\n      </List>\r\n    </ResourceContextProvider>\r\n  );\r\n};\r\n\r\nconst MyFilter = (props) => {\r\n    const translate = useTranslate(); \r\n    return (\r\n    <Filter {...props}>         \r\n        <TextInput label={translate('common.search')} source=\"q\" alwaysOn validate={[validateMaxLength(50,translate('common.validation.maxLength'))]} resettable />                      \r\n        <BooleanInput label={translate('real_state.filter_only_current')} source=\"only_current\" alwaysOn />          \r\n    </Filter>\r\n);\r\n};\r\n\r\nexport const RealStateDetails = ({ id, record, resource, ...props }) => {\r\n  const translate = useTranslate(); \r\n        \r\n  return (\r\n    <div className=\"usersClassroomsExpand\">        \r\n      \r\n        \r\n    </div>\r\n  );\r\n};\r\n\r\nconst exporter = (items, translate, notify) => {\r\n    \r\n  const itemsForExport = items.map(item => {\r\n    var itemForExport = {\r\n      id : item.id,\r\n      identifier : item.identifier,\r\n      name : item.name,\r\n      description: item.description, \r\n      address: item.address, \r\n      city: item.city, \r\n      use: item.use != null ? translate('real_state.use_'+item.use) : '', \r\n      use_others: item.use_others, \r\n      acquisition_date: dateOnlyToCatalan(item.acquisition_date), \r\n      sale_date: dateOnlyToCatalan(item.sale_date), \r\n      amount: item.amount != null ? item.amount.toFixed(2).replace('.', ',') : '',    \r\n      guaranteed_value: item.guaranteed_value != null ? item.guaranteed_value.toFixed(2).replace('.', ',') : '',    \r\n      cadastral_reference: item.cadastral_reference, \r\n      comments: item.comments,\r\n      agreements: subscriptionModule(modules.AGREEMENTS) ? structArrayToIdList(item.agreements) : '',\r\n      insurances: subscriptionModule(modules.INSURANCES) ? structArrayToIdList(item.insurances)  : '',\r\n    };\r\n    return itemForExport;\r\n  });\r\n  jsonExport(itemsForExport, {\r\n    headers: ['id', 'identifier', 'name','description','address','city','use','use_others','acquisition_date','sale_date','amount','guaranteed_value','cadastral_reference','comments','agreements','insurances'],\r\n    rename: [translate('common.id'), translate('real_state.identifier'), translate('common.name'), translate('real_state.description'), \r\n        translate('real_state.address'), translate('real_state.city'), translate('real_state.use'), translate('real_state.use_others'), \r\n        translate('real_state.acquisition_date'), translate('real_state.sale_date'), translate('real_state.amount'), translate('real_state.guaranteed_value'), \r\n        translate('real_state.cadastral_reference'),translate('real_state.comments'),translate('real_state.agreements'),translate('real_state.insurances') ],        \r\n        \r\n  }, (err, csv) => {\r\n    const csv_new = '\\uFEFF' + csv;\r\n    downloadCSV(csv_new, translate('real_state.exporter_file_name') ); \r\n    notify(translate('common.download_ok'),\"success\");\r\n  });\r\n};\r\n\r\n\r\n\r\nconst ListActions = (props) => {\r\n    const translate = useTranslate(); \r\n        \r\n    let filterExport = { \r\n        associations_id: localStorage.getItem('associations_id'),        \r\n        q: props.filterValues && props.filterValues.q ? props.filterValues.q : '',\r\n        only_current: props.filterValues && props.filterValues.only_current ? props.filterValues.only_current : false\r\n    };\r\n\r\n    return (\r\n    <TopToolbar>     \r\n        <MyCreateButton {...props} />      \r\n        <ExportButton maxResults=\"100000\" filterValues={filterExport} alwaysEnabled={false} exporter={exporter} sort={{ field: 'id', order: 'DESC' }} /> \r\n    </TopToolbar>\r\n    );\r\n};\r\n\r\nexport const MyCreateButton = ({ users_id , ...props }) => {\r\n\r\n  const [showDialog, setShowDialog] = useState(false);\r\n  const [create, { loading }] = useCreate('real_state');\r\n  const notify = useNotify();\r\n  const refresh = useRefresh();    \r\n  const translate = useTranslate();  \r\n  const redirect = useRedirect();\r\n        \r\n  const handleClick = () => {\r\n    setShowDialog(true);\r\n  };\r\n\r\n  const handleCloseClick = () => {\r\n    setShowDialog(false);\r\n  };\r\n\r\n  const handleSubmit = async values => {\r\n    create(            \r\n      { payload: { data: values } },\r\n      {\r\n        onSuccess: ({ data }) => {                    \r\n          redirect('/real_state/' + data.id);\r\n        \r\n        },\r\n        onFailure: ( error ) => {\r\n          notify( error.message , 'error');\r\n        }\r\n      }\r\n    );\r\n  };\r\n    \r\n  return (\r\n    <>            \r\n      <Button onClick={handleClick} label={translate('real_state.create')}>\r\n        <IconContentAdd />                \r\n      </Button>\r\n\r\n      <Dialog\r\n        fullWidth\r\n        open={showDialog}\r\n        onClose={handleCloseClick}\r\n        aria-label={translate('real_state.create')}\r\n      >\r\n        <DialogTitle>{translate('real_state.create')}</DialogTitle>\r\n\r\n        <FormWithRedirect\r\n          save={handleSubmit}\r\n          initialValues={{ associations_id: localStorage.getItem('associations_id') }}\r\n          render={({\r\n            handleSubmitWithRedirect,\r\n            pristine,\r\n            saving\r\n          }) => (\r\n            <>\r\n              <DialogContent>\r\n                <Grid container spacing={1}>                                     \r\n                  <Grid item xs={12}>                                               \r\n                    <TextInput fullWidth source=\"name\" label={translate('common.name')} validate={[required(),validateMaxLength(255,translate('common.validation.maxLength'))]} />\r\n                  </Grid>\r\n                </Grid> \r\n              </DialogContent>\r\n              <DialogActions>\r\n                <Button label=\"ra.action.cancel\" onClick={handleCloseClick} disabled={loading} >\r\n                  <IconCancel />\r\n                </Button>\r\n                <SaveButton\r\n                  handleSubmitWithRedirect={\r\n                    handleSubmitWithRedirect\r\n                  }\r\n                  pristine={pristine}\r\n                  saving={saving}\r\n                  disabled={loading}\r\n                />\r\n              </DialogActions>\r\n            </>\r\n          )}\r\n        />\r\n      </Dialog>\r\n    </>\r\n  );\r\n};\r\n\r\nconst MyActions = ({ basePath, data, resource }) => {\r\n\r\n  const translate = useTranslate();   \r\n    \r\n  let backLink = '/real_state';\r\n  return <BackLink link={backLink} title={data && data.name ? data.name : null} />;\r\n        \r\n};\r\n\r\n\r\nexport const RealStateEdit  = ({ id, ...props }) => {\r\n\r\n  const translate = useTranslate();        \r\n  const classes = useStyles();\r\n  const notify = useNotify();\r\n  const refresh = useRefresh();\r\n  const redirect = useRedirect();\r\n\r\n  let strRedirect =  `/real_state/${id}`;    \r\n    \r\n  const onSuccess = ({ data }) => {\r\n    notify(translate('common.notification.updated'));        \r\n    redirect('/real_state');        \r\n  };\r\n        \r\n  return (\r\n\r\n    <Edit \r\n      title={<ElementTitle {...props}  />} \r\n      {...props} \r\n      id={id}\r\n      mutationMode=\"pessimistic\"\r\n      actions={<RealStateActions show={false} {...props} />}\r\n      onSuccess={onSuccess}   \r\n    >\r\n        \r\n      <TabbedForm        \r\n        toolbar={<FormToolbar />}\r\n      >    \r\n        <FormTab\r\n          label={translate('common.data')}\r\n          contentClassName={classes.tab}\r\n          path=\"\" \r\n                \r\n        > \r\n               \r\n          <FormDataConsumer>\r\n            {({ formData, ...rest }) => \r\n              <>                              \r\n                <br/>\r\n                <Grid container spacing={2}>\r\n                  <Grid item xs={9}>   \r\n                    <TextInput fullWidth autoFocus source=\"name\" label={translate('common.name')} validate={[required(),validateMaxLength(255,translate('common.validation.maxLength'))]}  />\r\n                  </Grid> \r\n                  <Grid item xs={3}>   \r\n                    <TextInput fullWidth autoFocus source=\"identifier\" label={translate('real_state.identifier')} validate={[validateMaxLength(255,translate('common.validation.maxLength'))]}  />\r\n                  </Grid>                   \r\n                  <Grid item xs={12}>\r\n                    <TextInput fullWidth source=\"description\" label={translate('real_state.description')} />                             \r\n                  </Grid>\r\n                  <Grid item xs={3}> \r\n                    <SelectInput fullWidth label={translate('real_state.use')} source=\"use\" choices={choicesRealStateUse(translate)} />\r\n                  </Grid>   \r\n                  <Grid item xs={9}>   \r\n                    { formData.use === 0 ?\r\n                        <TextInput fullWidth autoFocus source=\"use_others\" label={translate('real_state.use_others')} validate={[validateMaxLength(255,translate('common.validation.maxLength'))]}  />\r\n                    : null }\r\n                  </Grid> \r\n                  <Grid item xs={6}>\r\n                    <TextInput fullWidth source=\"address\" label={translate('real_state.address')} validate={[validateMaxLength(255,translate('common.validation.maxLength'))]} />                             \r\n                  </Grid>\r\n                  <Grid item xs={6}>\r\n                    <TextInput fullWidth source=\"city\" label={translate('real_state.city')} validate={[validateMaxLength(255,translate('common.validation.maxLength'))]} />                             \r\n                  </Grid>\r\n                  <Grid item xs={2}>\r\n                    <DateInput source=\"acquisition_date\" fullWidth label={translate('real_state.acquisition_date')} />\r\n                  </Grid>\r\n                  <Grid item xs={2}>\r\n                    <DateInput source=\"sale_date\" fullWidth label={translate('real_state.sale_date')} />\r\n                  </Grid>                  \r\n                  <Grid item xs={4}>\r\n                    <TextInput fullWidth source=\"cadastral_reference\" label={translate('real_state.cadastral_reference')} validate={[validateMaxLength(255,translate('common.validation.maxLength'))]} />                             \r\n                  </Grid>\r\n                  <Grid item xs={2}>\r\n                    <NumberInput fullWidth source=\"amount\" label={translate('real_state.amount')} />                             \r\n                  </Grid>\r\n                  <Grid item xs={2}>\r\n                    <NumberInput fullWidth source=\"guaranteed_value\" label={translate('real_state.guaranteed_value')} />                             \r\n                  </Grid>\r\n                  { subscriptionModule(modules.INSURANCES) ? \r\n                  <Grid item xs={12}>\r\n                    <AccordionSection className=\"accordion\" label={translate('real_state.insurances')} fullWidth defaultExpanded={true}>\r\n                        <ArrayInput source=\"insurances\" label=\"\">\r\n                            <SimpleFormIterator \r\n                              disableReordering\r\n                              getItemLabel={index => ''}\r\n                            >\r\n                              <ReferenceInput \r\n                                sort={{ field: 'id', order: 'ASC' }} \r\n                                perPage={10000} \r\n                                label={translate('real_state.insurance')} \r\n                                source=\"id\" \r\n                                reference=\"insurances\"\r\n                                filter={{ associations_id: localStorage.getItem('associations_id') }}\r\n                                fullWidth\r\n                                >\r\n                                    <SelectInput fullWidth optionText=\"name\" optionValue=\"id\" validate={required()} />\r\n                              </ReferenceInput> \r\n                            </SimpleFormIterator>\r\n                        </ArrayInput>\r\n                    </AccordionSection>   \r\n                  </Grid>  \r\n                  : null }\r\n                  { subscriptionModule(modules.AGREEMENTS) ? \r\n                  <Grid item xs={12}>\r\n                    <AccordionSection className=\"accordion\" label={translate('real_state.agreements')} fullWidth defaultExpanded={true}>\r\n                        <ArrayInput source=\"agreements\" label=\"\">\r\n                            <SimpleFormIterator \r\n                              disableReordering\r\n                              getItemLabel={index => ''}\r\n                            >\r\n                              <ReferenceInput \r\n                                sort={{ field: 'id', order: 'ASC' }} \r\n                                perPage={10000} \r\n                                label={translate('real_state.agreements')} \r\n                                source=\"id\" \r\n                                reference=\"agreements\"\r\n                                filter={{ associations_id: localStorage.getItem('associations_id') }}\r\n                                fullWidth\r\n                                >\r\n                                    <SelectInput fullWidth optionText=\"name\" optionValue=\"id\" validate={required()} />\r\n                              </ReferenceInput> \r\n                            </SimpleFormIterator>\r\n                        </ArrayInput>\r\n                    </AccordionSection>   \r\n                  </Grid>  \r\n                  : null }\r\n                  <Grid item xs={12}>\r\n                    <TextInput fullWidth source=\"comments\" label={translate('real_state.comments')} />                             \r\n                  </Grid>\r\n                  \r\n                </Grid>                \r\n                \r\n              </>\r\n            }\r\n          </FormDataConsumer>\r\n\r\n        </FormTab> \r\n                \r\n        <FormTab\r\n            label={translate('real_state.activities')}\r\n            contentClassName={classes.tab}\r\n            path=\"activities\"                 \r\n        > \r\n          \r\n          <RealStateActivitiesList real_state_id={id} />\r\n          \r\n          <br />\r\n          <br />\r\n        </FormTab>\r\n        \r\n        <FormTab\r\n            label={translate('real_state.payments')}\r\n            contentClassName={classes.tab}\r\n            path=\"payments\"                 \r\n        > \r\n          \r\n          <RealStatePaymentsList real_state_id={id} />\r\n          \r\n          <br />\r\n          <br />\r\n        </FormTab>\r\n        \r\n        <FormTab\r\n            label={translate('real_state.docs')}\r\n            contentClassName={classes.tab}\r\n            path=\"docs\"                 \r\n        > \r\n            \r\n            <br />\r\n            <AccordionSection className=\"accordion\" label={translate('real_state.docs_deed')} fullWidth defaultExpanded={true}>\r\n              <DocsList target={targets.REAL_STATE_DEED} items_id={id} />\r\n            </AccordionSection>   \r\n          \r\n            <br />\r\n            <AccordionSection className=\"accordion\" label={translate('real_state.docs_map')} fullWidth defaultExpanded={true}>\r\n              <DocsList target={targets.REAL_STATE_MAP} items_id={id} />\r\n            </AccordionSection> \r\n          \r\n          <br />\r\n          <br />\r\n        </FormTab>\r\n                \r\n      </TabbedForm>\r\n    </Edit>\r\n  );\r\n};\r\n\r\nconst OptionForm= ({edit, ...props}) => {\r\n  const translate = useTranslate();   \r\n  const { values } = useFormState();\r\n  return (\r\n    <RowForm {...props}>\r\n      <ReferenceInput label={translate('subscriptions.module')} source=\"modules_id\" reference=\"modules\"  sort={{ field: 'priority', order: 'ASC' }} >\r\n        { edit ? (\r\n          <SelectInput fullWidth optionText=\"name\" optionValue=\"id\" validate={required()} disabled />\r\n        ) : (\r\n          <SelectInput fullWidth optionText=\"name\" optionValue=\"id\" validate={required()} />\r\n        ) }\r\n      </ReferenceInput> \r\n    </RowForm>\r\n  );\r\n};\r\n\r\nconst ElementTitle = ({ record, ...props }) => {    \r\n  const translate = useTranslate(); \r\n  return (<span>{translate('common.edit')} {record ? `\"${record.name}\"` : ''}</span>);\r\n};\r\n\r\nconst FormToolbar = ({ id , ...props }) => {\r\n    \r\n  let redirect = '/classrooms';\r\n        \r\n  return (\r\n    <Toolbar {...props} className=\"user_form_toolbar\" >\r\n      <SaveButton />\r\n      <DeleteButton redirect={redirect} mutationMode=\"pessimistic\" />\r\n    </Toolbar>\r\n  );\r\n};\r\n\r\nconst EmptyClassrooms = ({ associations_id , ...props}) => {\r\n  const translate = useTranslate(); \r\n  const { basePath, resource } = useListContext();\r\n  return (\r\n    <Box textAlign=\"center\" m={1} >\r\n      <br />\r\n      <Typography variant=\"h5\" paragraph className=\"grey8\">\r\n        {translate('classrooms.no_classrooms_title')} \r\n      </Typography>\r\n      <Typography variant=\"body1\" className=\"grey8\">\r\n        {translate('classrooms.no_classrooms_ask')} \r\n      </Typography>\r\n      <br />\r\n      <CreateButton />\r\n    </Box>\r\n  );\r\n};\r\n\r\n\r\nconst useStyles = makeStyles({\r\n  comment: {\r\n    maxWidth: '100%',\r\n    overflow: 'hidden',\r\n    textOverflow: 'ellipsis',\r\n    whiteSpace: 'nowrap',\r\n  },\r\n  tab: {\r\n    maxWidth: '100%',\r\n    display: 'block',\r\n  },\r\n});\r\n\r\n\r\n\r\nexport const RealStateShow = (props) => {\r\n\r\n  const translate = useTranslate();   \r\n  const [info, setInfo] = useState();\r\n  const { record } = useShowController(props);\r\n  \r\n  if (!record) return null;\r\n  \r\n  return (\r\n    <Show actions={<RealStateActions show={true} />} {...props} >\r\n        <SimpleShowLayout>  \r\n        \r\n          <Typography variant=\"h6\" className=\"grey8 titleUserShow\">                        \r\n            {translate('common.data')}\r\n          </Typography>\r\n          <Divider fullWidth className=\"\" />\r\n          <br />  \r\n          \r\n            <Grid container spacing={2}>\r\n            <Grid item xs={9}>                    \r\n              <TextFieldShow source={record.name} label={translate('common.name')} />                     \r\n            </Grid>\r\n            <Grid item xs={3}>                    \r\n              <TextFieldShow source={record.identifier} label={translate('real_state.identifier')} />                    \r\n            </Grid>\r\n            <Grid item xs={12}>                    \r\n              <TextFieldShow source={record.description} label={translate('real_state.description')} />                     \r\n            </Grid>\r\n            <Grid item xs={12}>                    \r\n              <TextFieldShow source={record.use > 0 ? translate('real_state.use_'+record.use) : record.use_others} label={translate('real_state.use')} />\r\n            </Grid>\r\n            <Grid item xs={6}>                    \r\n              <TextFieldShow source={record.address} label={translate('real_state.address')} />                    \r\n            </Grid>\r\n            <Grid item xs={6}>                    \r\n              <TextFieldShow source={record.city} label={translate('real_state.city')} />                     \r\n            </Grid>\r\n            <Grid item xs={2}>  \r\n              <TextFieldShow source={dateOnlyToCatalan(record.acquisition_date)} label={translate('real_state.acquisition_date')} />  \r\n            </Grid>\r\n            <Grid item xs={2}>  \r\n              <TextFieldShow source={dateOnlyToCatalan(record.sale_date)} label={translate('real_state.sale_date')} /> \r\n            </Grid>\r\n            <Grid item xs={4}>  \r\n              <TextFieldShow source={record.cadastral_reference} label={translate('real_state.cadastral_reference')} />                 \r\n            </Grid>\r\n            <Grid item xs={2}>  \r\n              <TextFieldShow source={record.amount} label={translate('real_state.amount')} />            \r\n            </Grid>\r\n            <Grid item xs={2}>  \r\n              <TextFieldShow source={record.guaranteed_value} label={translate('real_state.guaranteed_value')} />           \r\n            </Grid>\r\n            <Grid item xs={12}>  \r\n              <TextFieldShow source={record.comments} label={translate('real_state.comments')} />\r\n            </Grid>\r\n          </Grid>\r\n\r\n          { subscriptionModule(modules.INSURANCES) ? <>\r\n          <br />\r\n          <Typography variant=\"h6\" className=\"grey8 titleUserShow\">                        \r\n            {translate('real_state.insurances')}\r\n          </Typography>\r\n          <Divider fullWidth className=\"\" />          \r\n          <InsurancesList real_state_id={record.id} show={true} /> \r\n          </> : null }\r\n          \r\n          { subscriptionModule(modules.AGREEMENTS) ? <>\r\n          <br />\r\n          <Typography variant=\"h6\" className=\"grey8 titleUserShow\">                        \r\n            {translate('real_state.agreements')}\r\n          </Typography>\r\n          <Divider fullWidth className=\"\" />          \r\n          <AgreementsList real_state_id={record.id} show={true} /> \r\n          </> : null }\r\n          \r\n          <br />\r\n          <Typography variant=\"h6\" className=\"grey8 titleUserShow\">                        \r\n            {translate('real_state.activities')}\r\n          </Typography>\r\n          <Divider fullWidth className=\"\" />\r\n          \r\n          <RealStateActivitiesList real_state_id={record.id} show={true} /> \r\n\r\n          <br />\r\n          <Typography variant=\"h6\" className=\"grey8 titleUserShow\">                        \r\n            {translate('real_state.payments')}\r\n          </Typography>\r\n          <Divider fullWidth className=\"\" />\r\n          \r\n          <RealStatePaymentsList real_state_id={record.id} show={true} /> \r\n\r\n          <br />\r\n          <Typography variant=\"h6\" className=\"grey8 titleUserShow\">                        \r\n            {translate('real_state.docs_deed')}\r\n          </Typography>\r\n          <Divider fullWidth className=\"\" />\r\n          <br />  \r\n          <DocsListShow target={targets.REAL_STATE_DEED} items_id={record.id} /> \r\n\r\n          <br />\r\n          <Typography variant=\"h6\" className=\"grey8 titleUserShow\">                        \r\n            {translate('real_state.docs_map')}\r\n          </Typography>\r\n          <Divider fullWidth className=\"\" />\r\n          <br />  \r\n          <DocsListShow target={targets.REAL_STATE_MAP} items_id={record.id} />\r\n          \r\n      \r\n        </SimpleShowLayout> \r\n    </Show>\r\n  );\r\n};\r\n\r\n\r\nconst RealStateActions = ({ basePath, data, resource_name, ...props }) => {\r\n  const translate = useTranslate();  \r\n    \r\n  const dataProvider = useDataProvider();\r\n  const refresh = useRefresh();\r\n    \r\n  const [info, setInfo] = useState();\r\n  const [loading, setLoading] = useState(true);\r\n  const [error, setError] = useState();\r\n  const notify = useNotify();           \r\n        \r\n  return (\r\n    <>      \r\n        <TopToolbar>\r\n            <Grid container spacing={2}>\r\n              <Grid item xs={8}>                    \r\n                <Typography variant=\"h5\" className=\"grey8\">\r\n                  {data ? data.name : ''}                    \r\n                </Typography>\r\n              </Grid>\r\n              <Grid item xs={4} align=\"right\">                    \r\n                {props.show ?\r\n                    <EditButton basePath={basePath} record={data} /> \r\n                :\r\n                    <ShowButton basePath={basePath} record={data} />\r\n                }                \r\n              </Grid>\r\n            </Grid>            \r\n        </TopToolbar>\r\n    </>    \r\n  );\r\n};\r\n\r\nexport const RealStateCreate  = ({ id, ...props }) => {\r\n\r\n  const translate = useTranslate();   \r\n  const [info, setInfo] = useState();\r\n    \r\n  return (\r\n\r\n    <Create {...props} >\r\n      <SimpleForm \r\n        initialValues={{ associations_id: localStorage.getItem('associations_id') }}\r\n        redirect=\"list\"\r\n      >                \r\n        <Grid container spacing={2}>\r\n          <Grid item xs={12}>                    \r\n            <Typography variant=\"h5\" className=\"grey\">{translate('real_state.create')}</Typography>\r\n          </Grid>  \r\n          <Grid item xs={11}>                    \r\n            <TextInput fullWidth source=\"name\" label={translate('common.name')} validate={[required(),validateMaxLength(255,translate('common.validation.maxLength'))]} />\r\n          </Grid>          \r\n        </Grid>   \r\n\r\n      </SimpleForm> \r\n    </Create>\r\n  );\r\n};\r\n\r\n\r\nexport const chipsRealState = (real_state) => {\r\n  if (!real_state) {\r\n    return null; \r\n  }\r\n  const chips = real_state.map((item) => (\r\n    <Link key={item.id} to={`/real_state/${item.id}/show`} className=\"chip\" >\r\n      <Chip label={item.name} clickable />\r\n    </Link>\r\n  ));\r\n\r\n  return <div>{chips}</div>;\r\n};\r\n\r\nexport const chipRealState = (real_state_id, real_state_name) => {\r\n\r\n  const chips = \r\n    <Link key={real_state_id} to={`/real_state/${real_state_id}/show`} className=\"chip\" >\r\n      <Chip label={real_state_name} clickable />\r\n    </Link>\r\n  ;\r\n\r\n  return <div>{chips}</div>;\r\n};\r\n\r\nexport const RealStateInput = ({ ...props }) => {\r\n\r\n  const translate = useTranslate(); \r\n    \r\n  const dataProvider = useDataProvider();\r\n  const [info, setInfo] = useState();\r\n  const [loading, setLoading] = useState(true);\r\n  const [error, setError] = useState();\r\n    \r\n  const disabled = props.disabled && props.disabled==true ? true : false;\r\n  const resettable = props.resettable != null ? props.resettable : true;\r\n  const label = props.label ? props.label : translate('common.name');\r\n  const validate = props.required ? [required()] : [];\r\n    \r\n  useEffect(() => {\r\n    dataProvider\r\n      .getList('real_state', {\r\n        pagination: { page: 0, perPage: 10000 },\r\n        sort: { field: 'id', order: 'ASC' },\r\n        filter: { associations_id: localStorage.getItem('associations_id'), real_state_id: 0 },\r\n      })\r\n      .then(({ data }) => {\r\n        setInfo(data);\r\n        setLoading(false);\r\n      })\r\n      .catch((error) => {\r\n        setError(error);\r\n        setLoading(false);\r\n      });\r\n  }, []);\r\n\r\n  if (loading) return (<span>{translate('common.loading')}</span>);\r\n  if (error) return null;\r\n  if (!info) return null;\r\n  \r\n  return (\r\n    <AutocompleteInput \r\n      optionText={ (record)=> record.name } \r\n      suggestionLimit={50}\r\n      resettable={resettable}\r\n      clearAlwaysVisible={true}\r\n      validate={validate}\r\n      fullWidth\r\n      disabled={disabled}\r\n      choices={info}\r\n      source={props.source}\r\n      label={label}\r\n    />\r\n                \r\n  );\r\n};\r\n\r\n","// in src/posts.js\r\nimport React, { useState } from 'react';\r\n\r\nimport {\r\n  List, \r\n  Datagrid,\r\n  TextField,\r\n  DeleteButton,\r\n  Edit,\r\n  SelectInput,\r\n  TextInput,\r\n  Button ,\r\n  Create, \r\n  CreateButton ,\r\n  TopToolbar,\r\n  FormTab,\r\n  TabbedForm,\r\n  ReferenceManyField,\r\n  FormDataConsumer,\r\n  useListContext, required,NumberInput,BooleanInput,SelectField,  FunctionField, ResourceContextProvider, useCreate, useRefresh, FormWithRedirect, Toolbar, SaveButton,\r\n  useNotify,\r\n  useRedirect,\r\n  SimpleForm,\r\n  DateField ,\r\n  DateInput,\r\n  useDataProvider,\r\n  AutocompleteInput,\r\n  downloadCSV\r\n} from 'react-admin';\r\n\r\nimport { useEffect } from 'react';\r\n\r\nimport jsonExport from 'jsonexport/dist';\r\n\r\nimport { ExportButton } from './../components/ExportButton';\r\n\r\nimport { AccordionSection  } from '@react-admin/ra-form-layout';\r\n\r\nimport PaymentIcon from '@material-ui/icons/Payment';\r\nimport AccountBoxIcon from '@material-ui/icons/AccountBox';\r\n\r\nimport Chip from '@material-ui/core/Chip';\r\n\r\nimport { makeStyles } from '@material-ui/core/styles';\r\n\r\nimport Divider from '@mui/material/Divider';\r\n\r\n\r\nimport { useTranslate  } from '../common/language';\r\n\r\nimport Typography from '@mui/material/Typography';\r\n\r\n\r\nimport RichTextInput from 'ra-input-rich-text';\r\n\r\n\r\nimport { TextFieldShow } from '../components/TextFieldShow';\r\n\r\nimport Grid from '@mui/material/Grid';\r\nimport Avatar from '@mui/material/Avatar';\r\nimport IconContentAdd from '@material-ui/icons/Add';\r\nimport IconCancel from '@material-ui/icons/Cancel';\r\nimport MeetingRoomIcon from '@mui/icons-material/MeetingRoom';\r\n\r\nimport Dialog from '@material-ui/core/Dialog';\r\nimport DialogTitle from '@material-ui/core/DialogTitle';\r\nimport DialogContent from '@material-ui/core/DialogContent';\r\nimport DialogActions from '@material-ui/core/DialogActions';\r\n\r\nimport { ColorInput } from 'react-admin-color-input';\r\n\r\nimport { DocsList, DocsListShow } from './docs';\r\nimport { subscriptionModule, structArrayToIdList } from '../common/utils';\r\nimport { targets, choicesClassroomsType, choicesRealStateActivitiesType, choicesRealStateActivitiesInsuranceWho, modules  } from './../common/constants';\r\n\r\nimport { CityInput } from './../components/Inputs';\r\nimport { BackLink } from './../components/BackLink';\r\nimport { dateOnlyToCatalan } from './../common/utils';        \r\n\r\nimport { UserInput, RenderBoolean, chipsUsers } from '../components/User';\r\nimport { chipsRealState, chipRealState } from '../resources/real_state';\r\n\r\nimport Box from '@material-ui/core/Box';\r\n\r\nimport { Link } from 'react-router-dom';\r\n\r\nimport { validateMaxLength, validateInteger  } from './../components/Validator';\r\n\r\nexport const RealStateActivitiesList = (props) => {\r\n  const translate = useTranslate();  \r\n    \r\n  let basePath='/real_state_activities';\r\n  let resource = 'real_state_activities';\r\n  let strRedirect =  `/real_state/${props.real_state_id}/activities`;\r\n      \r\n  return (\r\n    <ResourceContextProvider value={resource}>\r\n      <List \r\n        basePath={basePath}   \r\n        filter={{ associations_id : localStorage.getItem('associations_id'), real_state_id: props.real_state_id ? props.real_state_id : 0, users_id: props.users_id ? props.users_id : 0 }}  \r\n        actions={ props.show ?  <span/> : <ListActions real_state_id={props.real_state_id}  /> }    \r\n        empty={ props.show ? <span/> : <ListActions real_state_id={props.real_state_id} /> }        \r\n        bulkActionButtons={false}          \r\n        perPage={1000}   \r\n        pagination={false}\r\n        sort={{ field: 'id', order: 'ASC' }} \r\n        label=\"\"  \r\n        title=\"\"  \r\n        resource={resource}\r\n      >        \r\n        <Datagrid \r\n          rowClick={props.show ? null : 'edit'}\r\n          expand={<RealStateActivitiesDetails users_id={props.users_id ? props.users_id : 0} />} >  \r\n          <Avatar><AccountBoxIcon/></Avatar>                                  \r\n          <TextField source=\"name\" label={translate('real_state_activities.name')} sortable={false} /> \r\n          { props.users_id ?\r\n            <FunctionField render={record => chipRealState(record.real_state_id, record.real_state_name ) } label={translate('real_state_activities.real_state')} sortable={false}  />  \r\n          :\r\n            <FunctionField render={record => chipsUsers(record.users) } label={translate('real_state_activities.user')} sortable={false}  />  \r\n          }\r\n          <FunctionField render={record => <span>{record.type > 0 ? translate('real_state_activities.type_' + record.type) : record.type_other}</span> } label={translate('real_state_activities.type')} sortable={false}  />  \r\n          { subscriptionModule(modules.AGREEMENTS) ? \r\n          <FunctionField render={record => chipAgreement(record.agreements_id,record.agreements_name) } label={translate('real_state_activities.agreements_id')} sortable={false}  />  \r\n          : null }\r\n          <DateField source=\"date_start\" label={translate('real_state_activities.date_start')} sortable={false} /> \r\n          <DateField source=\"date_finish\" label={translate('real_state_activities.date_finish')} sortable={false} /> \r\n        </Datagrid>        \r\n      </List>\r\n    </ResourceContextProvider>\r\n  );\r\n};\r\n\r\nexport const chipAgreement = ( agreements_id,agreements_name ) => {\r\n  if (!agreements_id) {\r\n    return null; \r\n  }\r\n  return (\r\n    <div>\r\n    <Link key={agreements_id.id} to={`/agreements/${agreements_id}`} className=\"chip\" >\r\n      <Chip label={agreements_name} className=\"chip\" clickable />\r\n    </Link>\r\n    </div>\r\n  );\r\n  \r\n};\r\n\r\n\r\nexport const RealStateActivitiesDetails = ({ id, record, resource, ...props }) => {\r\n  const translate = useTranslate(); \r\n      \r\n  return (\r\n    <div className=\"usersClassroomsExpand\">        \r\n      <Grid container spacing={2}>\r\n        <Grid item xs={4}>                    \r\n          <TextFieldShow source={record.name} label={translate('real_state_activities.name')} />                       \r\n        </Grid>        \r\n        { props.users_id ?\r\n            <Grid item xs={4}>               \r\n              <TextFieldShow source={record.real_state_name} label={translate('real_state_activities.real_state')} />                 \r\n            </Grid>\r\n        :\r\n            <Grid item xs={4}> \r\n              { record.users && record.users[0] ? \r\n              <TextFieldShow source={record.users[0].name} label={translate('real_state_activities.user')} />   \r\n              : null }\r\n            </Grid>\r\n        }\r\n        <Grid item xs={4}>                    \r\n          <TextFieldShow source={record.insurance_who ? translate('real_state_activities.insurance_who_'+record.insurance_who) : ''} label={translate('real_state_activities.insurance_who')} />               \r\n        </Grid>\r\n        <Grid item xs={3}>                    \r\n          <FunctionField render={\r\n          record => record.type != 0 ? \r\n            <TextFieldShow source={translate('real_state_activities.type_'+record.type)} label={translate('real_state_activities.type')} /> \r\n            : \r\n            <TextFieldShow source={record.type_other} label={translate('real_state_activities.type')} />\r\n          } />                        \r\n        </Grid>\r\n        {record.type == 1 && subscriptionModule(modules.AGREEMENTS) ?\r\n        <Grid item xs={9}>                    \r\n          <TextFieldShow source={record.agreements_name} label={translate('real_state_activities.agreements_id')} />                       \r\n        </Grid>\r\n        : \r\n        <Grid item xs={9}>\r\n        \r\n        </Grid>\r\n        }\r\n        \r\n        <Grid item xs={3}>                    \r\n          <TextFieldShow source={dateOnlyToCatalan(record.date_start)} label={translate('real_state_activities.date_start')} />                   \r\n        </Grid>\r\n        <Grid item xs={3}>                    \r\n          <TextFieldShow source={dateOnlyToCatalan(record.date_finish)} label={translate('real_state_activities.date_finish')} />                   \r\n        </Grid>\r\n        <Grid item xs={3}>                    \r\n          <TextFieldShow source={dateOnlyToCatalan(record.date_alert)} label={translate('real_state_activities.date_alert')} />                   \r\n        </Grid>\r\n        <Grid item xs={3}>                    \r\n                            \r\n        </Grid>\r\n        \r\n        <Grid item xs={12}>                    \r\n          <TextFieldShow source={record.relations} label={translate('real_state_activities.relations')} />                   \r\n        </Grid>\r\n        <Grid item xs={12}>                    \r\n          <TextFieldShow source={record.comments} label={translate('real_state_activities.comments')} />                   \r\n        </Grid>\r\n      </Grid>                \r\n        \r\n      <Typography variant=\"h6\" className=\"grey8 titleUserShow\">                        \r\n        {translate('real_state_activities.docs_contracts')}\r\n      </Typography>\r\n      <Divider fullWidth className=\"\" /><br/>\r\n        \r\n      <DocsListShow target={targets.REAL_STATE_ACTIVITY_CONTRACT} items_id={record.id} />\r\n        \r\n      <Typography variant=\"h6\" className=\"grey8 titleUserShow\">                        \r\n        {translate('real_state_activities.docs_insurances')}\r\n      </Typography>\r\n      <Divider fullWidth className=\"\" /><br/>\r\n        \r\n      <DocsListShow target={targets.REAL_STATE_ACTIVITY_INSURANCE} items_id={record.id} />\r\n              \r\n    </div>\r\n  );\r\n};\r\n\r\nconst exporter = (items, translate, notify) => {\r\n    \r\n  const itemsForExport = items.map(item => {\r\n    var itemForExport = {\r\n      real_state_id: item.real_state_id,\r\n      id : item.id,\r\n      users_id : structArrayToIdList(item.users), \r\n      type : item.type != null ? translate('real_state_activities.type_'+item.type) : '', \r\n      type_other : item.type_other, \r\n      name : item.name, \r\n      agreements_id : subscriptionModule(modules.AGREEMENTS) ? item.agreements_id : '', \r\n      date_start : dateOnlyToCatalan(item.date_start), \r\n      date_finish : dateOnlyToCatalan(item.date_finish), \r\n      date_alert : dateOnlyToCatalan(item.date_alert), \r\n      insurance_who : item.insurance_who != null ? translate('real_state_activities.insurance_who_' + item.insurance_who) : '', \r\n      relations : item.relations, \r\n      comments : item.comments\r\n    };\r\n    return itemForExport;\r\n  });\r\n  jsonExport(itemsForExport, {\r\n    headers: ['real_state_id','id','users_id','type','type_other','name','agreements_id','date_start','date_finish','date_alert','insurance_who','relations','comments',],\r\n    rename: [translate('real_state_activities.real_state_id'), translate('common.id'),translate('real_state_activities.user'),translate('real_state_activities.type'),translate('real_state_activities.type_other'),translate('real_state_activities.name'),\r\n    translate('real_state_activities.agreements_id'),translate('real_state_activities.date_start'),translate('real_state_activities.date_finish'),\r\n    translate('real_state_activities.date_alert'),translate('real_state_activities.insurance_who'),translate('real_state_activities.relations'),\r\n    translate('real_state_activities.comments')],                \r\n  }, (err, csv) => {\r\n    const csv_new = '\\uFEFF' + csv;\r\n    downloadCSV(csv_new, translate('real_state_activities.exporter_file_name') ); \r\n    notify(translate('common.download_ok'),\"success\");\r\n  });\r\n};\r\n\r\n\r\nconst ListActions = (props) => {\r\n  const translate = useTranslate(); \r\n    \r\n    let filterExport = { \r\n        associations_id: localStorage.getItem('associations_id'),        \r\n        real_state_id: props.real_state_id,\r\n    };\r\n    \r\n  return (\r\n    <TopToolbar>             \r\n      <MyCreateButton {...props} />\r\n      <ExportButton maxResults=\"100000\" filterValues={filterExport} alwaysEnabled={false} exporter={exporter} sort={{ field: 'id', order: 'DESC' }} /> \r\n    </TopToolbar>\r\n  );\r\n};\r\n\r\n\r\nexport const MyCreateButton = ({ real_state_id , ...props }) => {\r\n\r\n  const [showDialog, setShowDialog] = useState(false);\r\n  const [create, { loading }] = useCreate('real_state_activities');\r\n  const notify = useNotify();\r\n  const refresh = useRefresh();    \r\n  const translate = useTranslate();  \r\n  const redirect = useRedirect();\r\n    \r\n  const handleClick = () => {\r\n    setShowDialog(true);\r\n  };\r\n\r\n  const handleCloseClick = () => {\r\n    setShowDialog(false);\r\n  };\r\n\r\n  const handleSubmit = async values => {\r\n    create(            \r\n      { payload: { data: values } },\r\n      {\r\n        onSuccess: ({ data }) => {                    \r\n          redirect('/real_state_activities/' + data.id);        \r\n        },\r\n        onFailure: ( error ) => {\r\n          notify( error.message , 'error');\r\n        }\r\n      }\r\n    );\r\n  };\r\n    \r\n  return (\r\n    <>            \r\n      <Button onClick={handleClick} label={translate('real_state_activities.create')}>\r\n        <IconContentAdd />                \r\n      </Button>\r\n\r\n      <Dialog\r\n        fullWidth\r\n        open={showDialog}\r\n        onClose={handleCloseClick}\r\n        aria-label={translate('real_state_activities.create')}\r\n      >\r\n        <DialogTitle>{translate('real_state_activities.create')}</DialogTitle>\r\n\r\n        <FormWithRedirect\r\n          save={handleSubmit}\r\n          initialValues={{ associations_id: localStorage.getItem('associations_id') , real_state_id : real_state_id, type: 0 }}\r\n          render={({\r\n            handleSubmitWithRedirect,\r\n            pristine,\r\n            saving\r\n          }) => (\r\n            <>\r\n              <DialogContent>\r\n                <Grid container spacing={1}>                                     \r\n                  <Grid item xs={12}>                                               \r\n                    <TextInput fullWidth source=\"name\" label={translate('common.name')} validate={[required(),validateMaxLength(255,translate('common.validation.maxLength'))]} />\r\n                  </Grid>\r\n                </Grid> \r\n              </DialogContent>\r\n              <DialogActions>\r\n                <Button label=\"ra.action.cancel\" onClick={handleCloseClick} disabled={loading} >\r\n                  <IconCancel />\r\n                </Button>\r\n                <SaveButton\r\n                  handleSubmitWithRedirect={\r\n                    handleSubmitWithRedirect\r\n                  }\r\n                  pristine={pristine}\r\n                  saving={saving}\r\n                  disabled={loading}\r\n                />\r\n              </DialogActions>\r\n            </>\r\n          )}\r\n        />\r\n      </Dialog>\r\n    </>\r\n  );\r\n};\r\n\r\nconst MyActions = ({ basePath, data, resource }) => {\r\n\r\n  const translate = useTranslate();   \r\n  \r\n  if (!data || !data.real_state_id) return null;\r\n  \r\n  let backLink = '/real_state/' + data.real_state_id + '/activities';\r\n  return <BackLink link={backLink} title={data && data.name ? data.name : null} />;\r\n       \r\n};\r\n\r\n\r\nexport const RealStateActivitiesEdit  = ({ id, ...props }) => {\r\n\r\n  const translate = useTranslate();        \r\n  const classes = useStyles();\r\n  const notify = useNotify();\r\n  const refresh = useRefresh();\r\n  const redirect = useRedirect();\r\n    \r\n  const onSuccess = ({ data }) => {\r\n      notify(translate('common.notification.updated'));\r\n      redirect('/real_state/' + data.real_state_id + '/activities');\r\n      refresh();        \r\n  };\r\n        \r\n  return (\r\n\r\n    <Edit \r\n      title={<ElementTitle {...props}  />} \r\n      {...props} \r\n      id={id}\r\n      mutationMode=\"pessimistic\"\r\n      actions={<MyActions {...props} />}\r\n      onSuccess={onSuccess}   \r\n    >\r\n        \r\n      <TabbedForm        \r\n        toolbar={<FormToolbar />}\r\n      >    \r\n        <FormTab\r\n          label={translate('common.data')}\r\n          contentClassName={classes.tab}\r\n          path=\"\" \r\n                \r\n        > \r\n               \r\n          <FormDataConsumer>\r\n            {({ formData, ...rest }) => \r\n              <>                              \r\n                <br/>\r\n                <Grid container spacing={2}>\r\n                  <Grid item xs={12}>   \r\n                    <TextInput fullWidth autoFocus source=\"name\" label={translate('real_state_activities.name')} validate={[required(),validateMaxLength(255,translate('common.validation.maxLength'))]}  />\r\n                  </Grid> \r\n                  <Grid item xs={6}>\r\n                    <UserInput source=\"users_id\" user_type={-1} disabled={false} label={translate('real_state_activities.user')} allowEmpty={true} required={false} resettable={true} />\r\n                  </Grid> \r\n                  <Grid item xs={6}> \r\n                    <SelectInput fullWidth label={translate('real_state_activities.insurance_who')} source=\"insurance_who\" choices={choicesRealStateActivitiesInsuranceWho(translate)} />\r\n                  </Grid> \r\n                  <Grid item xs={3}> \r\n                    <SelectInput fullWidth label={translate('real_state_activities.type')} source=\"type\" choices={choicesRealStateActivitiesType(translate)} />\r\n                  </Grid>                     \r\n                  { formData.type == 0 ?\r\n                  <Grid item xs={9}>                       \r\n                    <TextInput fullWidth autoFocus source=\"type_other\" label={translate('real_state_activities.type_other')} validate={[validateMaxLength(255,translate('common.validation.maxLength'))]}  />                                                      \r\n                  </Grid> \r\n                  : formData.type == 1 && subscriptionModule(modules.AGREEMENTS) ? \r\n                  <Grid item xs={9}>                       \r\n                    <AgreementsInput source=\"agreements_id\" disabled={false} label={translate('real_state_activities.agreements_id')} allowEmpty={true} required={false} resettable={true} />\r\n                  </Grid> \r\n                  : <Grid item xs={9}></Grid> }             \r\n                  \r\n                  <Grid item xs={2}>\r\n                    <DateInput source=\"date_start\" fullWidth label={translate('real_state_activities.date_start')} />\r\n                  </Grid>  \r\n                  <Grid item xs={2}>\r\n                    <DateInput source=\"date_finish\" fullWidth label={translate('real_state_activities.date_finish')} />\r\n                  </Grid>  \r\n                  <Grid item xs={2}>\r\n                    <DateInput source=\"date_alert\" fullWidth label={translate('real_state_activities.date_alert')} />\r\n                  </Grid>                    \r\n                  <Grid item xs={12}>   \r\n                    <TextInput fullWidth autoFocus source=\"relations\" label={translate('real_state_activities.relations')} />\r\n                  </Grid> \r\n                  <Grid item xs={12}>   \r\n                    <TextInput fullWidth autoFocus source=\"comments\" label={translate('real_state_activities.comments')} />\r\n                  </Grid> \r\n                  \r\n                </Grid>\r\n\r\n              </>\r\n            }\r\n          </FormDataConsumer>\r\n\r\n        </FormTab> \r\n        \r\n        <FormTab\r\n            label={translate('real_state_activities.docs')}\r\n            contentClassName={classes.tab}\r\n            path=\"docs\"                 \r\n        >             \r\n                        \r\n            <br />\r\n            <AccordionSection className=\"accordion\" label={translate('real_state_activities.docs_contracts')} fullWidth defaultExpanded={true}>              \r\n              <DocsList target={targets.REAL_STATE_ACTIVITY_CONTRACT} items_id={id} />\r\n            </AccordionSection>   \r\n          \r\n            <br />\r\n            <AccordionSection className=\"accordion\" label={translate('real_state_activities.docs_insurances')} fullWidth defaultExpanded={true}>\r\n              <DocsList target={targets.REAL_STATE_ACTIVITY_INSURANCE} items_id={id} />\r\n            </AccordionSection> \r\n          \r\n          <br />\r\n          <br />\r\n          \r\n        </FormTab>        \r\n    \r\n      </TabbedForm>\r\n    </Edit>\r\n  );\r\n};\r\n\r\nexport const AgreementsInput = ({ ...props }) => {\r\n\r\n  const translate = useTranslate(); \r\n    \r\n  const dataProvider = useDataProvider();\r\n  const [info, setInfo] = useState();\r\n  const [loading, setLoading] = useState(true);\r\n  const [error, setError] = useState();\r\n    \r\n  const disabled = props.disabled && props.disabled==true ? true : false;\r\n  const resettable = props.resettable != null ? props.resettable : true;\r\n  const label = props.label ? props.label : translate('common.name');\r\n  const validate = props.required ? [required()] : [];\r\n    \r\n  useEffect(() => {\r\n    dataProvider\r\n      .getList('agreements', {\r\n        pagination: { page: 0, perPage: 10000 },\r\n        sort: { field: 'id', order: 'ASC' },\r\n        filter: { associations_id: localStorage.getItem('associations_id') },\r\n      })\r\n      .then(({ data }) => {\r\n        setInfo(data);\r\n        setLoading(false);\r\n      })\r\n      .catch((error) => {\r\n        setError(error);\r\n        setLoading(false);\r\n      });\r\n  }, []);\r\n\r\n  if (loading) return (<span>{translate('common.loading')}</span>);\r\n  if (error) return null;\r\n  if (!info) return null;\r\n  \r\n  return (\r\n    <AutocompleteInput \r\n      optionText={ (record)=> record.name } \r\n      suggestionLimit={50}\r\n      resettable={resettable}\r\n      clearAlwaysVisible={true}\r\n      validate={validate}\r\n      fullWidth\r\n      disabled={disabled}\r\n      choices={info}\r\n      source={props.source}\r\n      label={label}\r\n    />\r\n                \r\n  );\r\n};\r\n\r\nconst ElementTitle = ({ record, ...props }) => {    \r\n  const translate = useTranslate(); \r\n  return (<span>{translate('common.edit')} {record ? `\"${record.name}\"` : ''}</span>);\r\n};\r\n\r\nconst FormToolbar = ({ id , ...props }) => {\r\n    \r\n  let redirect = '/real_state/' + props.record.real_state_id + '/activities';\r\n    \r\n  return (\r\n    <Toolbar {...props} className=\"user_form_toolbar\" >\r\n      <SaveButton />\r\n      <DeleteButton redirect={redirect} mutationMode=\"pessimistic\" />\r\n    </Toolbar>\r\n  );\r\n};\r\n\r\n\r\nconst useStyles = makeStyles({\r\n  comment: {\r\n    maxWidth: '100%',\r\n    overflow: 'hidden',\r\n    textOverflow: 'ellipsis',\r\n    whiteSpace: 'nowrap',\r\n  },\r\n  tab: {\r\n    maxWidth: '100%',\r\n    display: 'block',\r\n  },\r\n});\r\n\r\n\r\n\r\n\r\nexport const RealStateActivitiesCreate  = ({ id, ...props }) => {\r\n\r\n  const translate = useTranslate();   \r\n  const [info, setInfo] = useState();\r\n    \r\n  return (\r\n\r\n    <Create {...props} >\r\n      <SimpleForm \r\n        initialValues={{ associations_id: localStorage.getItem('associations_id') }}\r\n        redirect=\"list\"\r\n      >                \r\n        <Grid container spacing={2}>\r\n          <Grid item xs={12}>                    \r\n            <Typography variant=\"h5\" className=\"grey\">{translate('real_state.create')}</Typography>\r\n          </Grid>  \r\n          <Grid item xs={12}>                    \r\n            <TextInput fullWidth source=\"name\" label={translate('common.name')} validate={[required(),validateMaxLength(255,translate('common.validation.maxLength'))]} />\r\n          </Grid>          \r\n        </Grid>   \r\n\r\n      </SimpleForm> \r\n    </Create>\r\n  );\r\n};\r\n","// in src/posts.js\r\nimport * as React from 'react';\r\nimport { useState, useEffect } from 'react';\r\n\r\nimport {\r\n  List, \r\n  Datagrid,\r\n  TextField,\r\n  ReferenceField,\r\n  EditButton,\r\n  DeleteButton,\r\n  Edit,\r\n  Create,\r\n  SimpleForm,\r\n  ReferenceInput,\r\n  SelectInput,\r\n  TextInput,\r\n  Button ,\r\n  CreateButton ,\r\n  TopToolbar,\r\n  Toolbar,\r\n  FormTab,\r\n  TabbedForm,\r\n  FormDataConsumer,\r\n  useListContext,\r\n  Filter, required, ChipField,ReferenceArrayField, SingleFieldList, ArrayField,DateField ,DateInput, NumberInput,RadioButtonGroupInput,\r\n  ResourceContextProvider,FunctionField, BooleanInput, Show, SimpleShowLayout, useRefresh, useRedirect,\r\n  NumberField, ShowButton, useNotify, useDataProvider, Loading, Error, SaveButton, FormWithRedirect, useCreate, downloadCSV,\r\n  ReferenceArrayInput,CheckboxGroupInput,  SelectField , useUnselectAll, useRecordSelection, Pagination, DatagridBody \r\n} from 'react-admin';\r\n\r\nimport { Delete } from '@mui/icons-material';\r\nimport { SelectAll } from '@mui/icons-material';\r\n\r\nimport jsonExport from 'jsonexport/dist';\r\nimport RichTextInput from 'ra-input-rich-text';\r\n\r\nimport { AccordionSection  } from '@react-admin/ra-form-layout';\r\n\r\n\r\nimport { Link } from 'react-router-dom';\r\n\r\nimport Grid from '@mui/material/Grid';\r\n\r\n//import { Toolbar } from '@material-ui/core';\r\n\r\n\r\nimport Divider from '@mui/material/Divider';\r\n\r\nimport Box from '@material-ui/core/Box';\r\nimport Typography from '@material-ui/core/Typography';\r\n\r\nimport Dialog from '@material-ui/core/Dialog';\r\nimport DialogTitle from '@material-ui/core/DialogTitle';\r\nimport DialogContent from '@material-ui/core/DialogContent';\r\nimport DialogActions from '@material-ui/core/DialogActions';\r\n\r\nimport { UsersGroupsQuotesList, UsersGroupsQuotesShowList } from './users_groups_quotes';\r\nimport { UsersGroupsShow, UsersGroupsEdit, LastNumMemberInserted } from './users_groups';\r\nimport { UsersAnnuaryShow, UsersAnnuaryList, UsersAnnuarySendButton } from './users_annuary';\r\nimport { UsersGroupsResponsabilitiesShow, UsersGroupsResponsabilitiesEdit } from './users_groups_responsabilities';\r\nimport { UsersEditedBooksShow, UsersEditedBooksEdit } from './users_edited_books';\r\nimport { UsersRecognitionsShow, UsersRecognitionsEdit } from './users_recognitions';\r\nimport { UsersSchedulesShow, UsersSchedulesEdit } from './users_schedules';\r\nimport { UsersAddressesShow, UsersAddressesEdit } from './users_addresses';\r\nimport { EmailsHistoryList } from './emails';\r\n\r\nimport { DocsList, DocsListShow, BoxPhotoUser } from './docs';\r\nimport { SocialNetsList , SocialNetsListShow } from './social_nets';\r\nimport { UsersFamiliesList, UsersFamiliesShow  } from './users_families';\r\n\r\nimport { useTranslate  } from '../common/language';\r\nimport { useStyles  } from '../common/styles';\r\n\r\nimport { DownloadXLSButton } from './../components/DownloadXLSButton';\r\nimport { UsersPostalLabelsCreateButton } from './../components/UsersPostalLabelsCreateButton';\r\nimport { ExportButton } from './../components/ExportButton';\r\nimport { MyFilterUsers } from '../components/MyFilterUsers';\r\nimport { TextFieldShow } from '../components/TextFieldShow';\r\nimport BulkDeleteButton from '../components/BulkDeleteButton';\r\nimport BulkGroupsButton from '../components/BulkGroupsButton';\r\nimport { ImportButton } from '../components/ImportButton';\r\nimport MyLoading from '../components/MyLoading';\r\nimport { UserAvatarField , UserFullNameTxt , RenderAge, RenderDate, RenderGender, RenderBoolean, ChipFieldUserName, UserInput } from '../components/User';\r\n\r\nimport { CustomFieldsShow, CustomFieldsEdit } from '../components/CustomFields';\r\n\r\nimport { RenderStatus, RemittancesUsersItemsDetails } from '../resources/remittances';\r\nimport { UsersContactsList, UsersContactsShow } from '../resources/users_contacts';\r\nimport { UsersEmailsList, UsersEmailsShow } from '../resources/users_emails';\r\nimport { UsersEconomicDataList, UsersEconomicDataShow } from '../resources/users_economic_data';\r\nimport { UsersDemografyList } from '../resources/users_demografy';\r\nimport { UsersWorkersList, UsersWorkersShow } from '../resources/users_workers';\r\nimport { UsersActivitiesList, UsersActivitiesShow } from '../resources/users_activities';\r\nimport { UsersTrainingsList, UsersTrainingsShow } from '../resources/users_trainings';\r\nimport { UsersSocialProjectsList, UsersSocialProjectsShow } from '../resources/users_social_projects';\r\nimport { UsersShowsList, UsersShowsShow } from '../resources/users_shows';\r\nimport { UsersSectionsList, UsersSectionsShow } from '../resources/users_sections';\r\nimport { NumMemberInput } from '../resources/users_groups';\r\nimport { ClassroomsList, UsersClassroomsShow } from '../resources/classrooms';\r\nimport { RealStateActivitiesList } from '../resources/real_state_activities';\r\nimport { AgreementsList } from '../resources/agreements';\r\n\r\nimport DoneIcon from '@mui/icons-material/Done';\r\nimport IconCancel from '@material-ui/icons/Cancel';\r\nimport SettingsIcon from '@mui/icons-material/Settings';\r\n\r\n\r\nimport { parse } from 'query-string';\r\n\r\nimport { targets,modules,usersEditedBooksType,choicesDelegations,choicesProperty,choicesCession, recercatActions, choicesTypeUser, choicesGenderUser } from './../common/constants';\r\nimport { subscriptionModule } from '../common/utils';\r\n\r\n\r\nimport { validateMaxLength, validateEmail, validatePercent  } from './../components/Validator';\r\n\r\nimport { useHistory } from 'react-router-dom';\r\n\r\n\r\nexport const UsersList = ({ group, group_public_id, resource_name, group_name, ...props}) => {\r\n        \r\n  const translate = useTranslate(); \r\n  const history = useHistory();\r\n    \r\n  const [showDialog, setShowDialog] = useState(false);\r\n  const [create, { loading }] = useCreate('users_groups/recercat-actions');\r\n  const notify = useNotify();\r\n  const refresh = useRefresh();    \r\n  const dataProvider = useDataProvider();\r\n    \r\n  const [info, setInfo] = useState();\r\n  const [action, setAction] = useState();\r\n  const [firstName, setFirstName] = useState();\r\n  const [lastName1, setLastName1] = useState();\r\n  const [lastName2, setLastName2] = useState();\r\n  const [usersGroupsId, setUsersGroupsId] = useState();\r\n    \r\n  const [completeName, setCompleteName] = useState();\r\n  const [email, setEmail] = useState();\r\n  const [recercatCentersId, setRecercatCentersId] = useState();\r\n    \r\n    \r\n  const today = new Date().toISOString().slice(0, 10);\r\n\r\n\r\n  /*const handleClick = () => {\r\n        \r\n        dataProvider.getOne('users/pre-validate', { id: users_id })\r\n        .then(( { data } ) => {   \r\n            setShowDialog(true);\r\n        })\r\n        .catch(error => {   \r\n            notify(error.message, 'error');    \r\n        });\r\n        \r\n    };*/\r\n\r\n  const handleCloseClick = () => {\r\n    setShowDialog(false);\r\n  };\r\n\r\n  const handleSubmit = async values => {\r\n    create(            \r\n      { payload: { data: values } },\r\n      {\r\n        onSuccess: ({ data }) => {\r\n          setShowDialog(false);\r\n          refresh();\r\n        },\r\n        onFailure: ( error ) => {\r\n          notify( error.message , 'error');\r\n        }\r\n      }\r\n    );\r\n  };\r\n    \r\n    \r\n  let context_provider = 'users';\r\n  if (resource_name === 'groups-tree-contacts') context_provider = 'users-fac-contacts';\r\n  let base_path = '/' + context_provider;\r\n    \r\n  /*let users_groups_id = 0;\r\n    let action = 0;\r\n    let next_num_member = '';*/\r\n    \r\n  const handleClick = (record,action) => {\r\n        \r\n    if (action === recercatActions.IRMU_VALIDATE)\r\n    {\r\n      // Validar IRMU\r\n      dataProvider.getOne('users_groups/recercat-next-num-member', { id: record.users_groups_id })\r\n        .then(( { data } ) => { \r\n          setInfo(data);\r\n          setAction(action);\r\n          setFirstName(record.first_name);\r\n          setLastName1(record.last_name_1);\r\n          setLastName2(record.last_name_2);\r\n          setUsersGroupsId(record.users_groups_id);\r\n          setEmail(record.email);\r\n          setRecercatCentersId(record.recercat_centers_id);\r\n          setShowDialog(true);\r\n        })\r\n        .catch(error => {   \r\n          notify(error.message, 'error');    \r\n        });        \r\n    }\r\n    else if (action === recercatActions.IRMU_REVOKE || action === recercatActions.IRMU_DENY || \r\n                action === recercatActions.CENTER_VALIDATE || action === recercatActions.CENTER_REVOKE || action === recercatActions.CENTER_DENY ||\r\n                action === recercatActions.USER_VALIDATE )\r\n    {\r\n      // La resta d'accions\r\n      setInfo({num_member: record.num_member });\r\n      setAction(action);\r\n      setFirstName(record.first_name);\r\n      setLastName1(record.last_name_1);\r\n      setLastName2(record.last_name_2);\r\n      setUsersGroupsId(record.users_groups_id);\r\n      setEmail(record.email);\r\n      setRecercatCentersId(record.recercat_centers_id);\r\n      setShowDialog(true);\r\n    }\r\n        \r\n  };\r\n             \r\n  return (\r\n    <>\r\n      <ResourceContextProvider value={context_provider} >\r\n        <List                  \r\n          basePath={base_path}\r\n          filter={{ groups_id : group, associations_id: localStorage.getItem('associations_id') }}  \r\n          title={<ElementTitleUsers />}           \r\n          actions={<ListActions group={group} group_public_id={group_public_id} resource_name={resource_name} />}\r\n          empty={<Empty group={group} group_public_id={group_public_id} resource_name={resource_name} />}    \r\n          filters={<UsersFilter />} \r\n          syncWithLocation\r\n          sort={{ field: 'date_join', order: 'DESC' }}  \r\n          perPage={25}\r\n          bulkActionButtons={!(resource_name === 'groups-tree-contacts') && !subscriptionModule(modules.RECERCAT) && (window.location.hostname === 'localhost' || window.location.hostname === 'admin.gestioentitats.cat') ? <BulkActionButtonToolbar group_id={group} group_public_id={group_public_id} resource_name={context_provider} group_name={group_name} /> : false}      \r\n          pagination={<Pagination\r\n            rowsPerPageOptions={[10, 25, 50, 100]} \r\n            {...props}\r\n          />}\r\n        >\r\n          <Datagrid            \r\n            rowClick=\"show\"\r\n          >  \r\n            <UserAvatarField />\r\n            <TextField source=\"complete_name\" label={translate('common.name')} sortable={true} />\r\n                                                \r\n            { /*resource_name==\"groups-tree\" ? \r\n                        <FunctionField label={translate('users.age')} render={record => record.birthday ? getAge(record.birthday) + \" \" + translate('users.age_sufix') : \"\" } sortable={false}  />\r\n                        : null */ }\r\n                        \r\n            { subscriptionModule(modules.RECERCAT) ?\r\n              <ReferenceField source=\"recercat_centers_id\" reference=\"recercat_centers\"  label={translate('recercat_centers.column_center')} link={false} sortable={false} >\r\n                <TextField source=\"name\" />\r\n              </ReferenceField>\r\n              : null\r\n            }\r\n                        \r\n            {resource_name === 'groups-tree' && group !== 999999999 && group !== 999999998 ? \r\n              <TextField source=\"num_member\" label={translate('users_groups.num_member')} sortable={true} />\r\n              : null }\r\n                        \r\n            <TextField source=\"email\" label={translate('common.email')} sortable={true} />     \r\n                        \r\n            { subscriptionModule(modules.RECERCAT) ? \r\n              group_public_id === 'SOCIS' ? \r\n                <FunctionField label={translate('recercat_centers.actions')} render={record => {\r\n                  return <><Button\r\n                    size=\"small\"\r\n                    color=\"primary\"\r\n                    onClick={(e) => { e.stopPropagation(); handleClick(record,recercatActions.IRMU_REVOKE); }}\r\n                    startIcon={null}\r\n                    label={translate('recercat_centers.actions_revoke')}\r\n                  ></Button>\r\n                  </>;\r\n                }} sortable={false}  /> :\r\n                group_public_id === 'RECERCAT_PENDING_IRMU' ?\r\n                  <FunctionField label={translate('recercat_centers.actions')} render={record => {\r\n                    return <><Button\r\n                      size=\"small\"\r\n                      color=\"primary\"\r\n                      onClick={(e) => { e.stopPropagation(); handleClick(record,recercatActions.IRMU_VALIDATE); }}\r\n                      startIcon={null}\r\n                      label={translate('recercat_centers.actions_validate')}\r\n                    >\r\n                    </Button>\r\n                    <Button\r\n                      size=\"small\"\r\n                      color=\"primary\"\r\n                      onClick={(e) => { e.stopPropagation(); handleClick(record,recercatActions.IRMU_DENY); }}\r\n                      startIcon={null}\r\n                      label={translate('recercat_centers.actions_deny')}\r\n                    >\r\n                    </Button></>;                            \r\n                  }} sortable={false}  /> :\r\n                  group_public_id === 'RECERCAT_PENDING_CENTER' ?  \r\n                    <FunctionField label={translate('recercat_centers.actions')} render={record => {\r\n                      return <><Button\r\n                        size=\"small\"\r\n                        color=\"primary\"\r\n                        onClick={(e) => { e.stopPropagation(); handleClick(record,recercatActions.IRMU_VALIDATE); }}\r\n                        startIcon={null}\r\n                        label={translate('recercat_centers.actions_validate')}\r\n                      ></Button>\r\n                      <Button\r\n                        size=\"small\"\r\n                        color=\"primary\"\r\n                        onClick={(e) => { e.stopPropagation(); handleClick(record,recercatActions.IRMU_DENY); }}\r\n                        startIcon={null}\r\n                        label={translate('recercat_centers.actions_deny')}\r\n                      >\r\n                      </Button></>;\r\n                    }} sortable={false}  /> :\r\n                    group_public_id === 'RECERCAT_PENDING_EMAIL' ?  \r\n                      <FunctionField label={translate('recercat_centers.actions')} render={record => {\r\n                        return <><Button\r\n                          size=\"small\"\r\n                          color=\"primary\"\r\n                          onClick={(e) => { e.stopPropagation(); handleClick(record,recercatActions.IRMU_VALIDATE); }}\r\n                          startIcon={null}\r\n                          label={translate('recercat_centers.actions_validate')}\r\n                        ></Button>\r\n                        <Button\r\n                          size=\"small\"\r\n                          color=\"primary\"\r\n                          onClick={(e) => { e.stopPropagation(); handleClick(record,recercatActions.IRMU_DENY); }}\r\n                          startIcon={null}\r\n                          label={translate('recercat_centers.actions_deny')}\r\n                        >\r\n                        </Button></>;\r\n                      }} sortable={false}  /> \r\n                      : null \r\n              : null }\r\n                    \r\n                        \r\n            { !subscriptionModule(modules.RECERCAT) ?\r\n              <FunctionField label={translate('users.phones')} render={record => {\r\n                let str = '';\r\n                if (record.phone) str += record.phone; \r\n                if (record.mobile) str += str.length > 0 ? ' / ' + record.mobile : record.mobile;                            \r\n                return str;\r\n              }} sortable={false}  />\r\n              : null }\r\n                              \r\n            { !subscriptionModule(modules.RECERCAT) ? \r\n              resource_name=='groups-tree' ? \r\n                <ArrayField source=\"groups\" label={translate('users.groups')} sortable={false}>\r\n                  <SingleFieldList linkType={false}>\r\n                    <ChipField source=\"name\" />\r\n                  </SingleFieldList>\r\n                </ArrayField>                   \r\n                : null \r\n              : null }\r\n\r\n          </Datagrid>                             \r\n        </List>\r\n\r\n      </ResourceContextProvider>\r\n      {info ? \r\n        <Dialog\r\n          fullWidth\r\n          open={showDialog}\r\n          onClose={handleCloseClick}\r\n          aria-label={translate('recercat_centers.actions_title' + action)}\r\n        >\r\n          <DialogTitle>{translate('recercat_centers.actions_title' + action )}</DialogTitle>\r\n\r\n          <FormWithRedirect\r\n            save={handleSubmit}\r\n            initialValues={{ \r\n              users_groups_id : usersGroupsId,\r\n              action : action, \r\n              num_member: info.num_member , \r\n              send_email: true,                        \r\n              first_name : firstName,\r\n              last_name_1 : lastName1,\r\n              last_name_2 : lastName2,\r\n              email: email,\r\n              recercat_centers_id: recercatCentersId  \r\n            }}\r\n            render={({\r\n              handleSubmitWithRedirect,\r\n              pristine,\r\n              saving\r\n            }) => (\r\n              <>\r\n                <DialogContent>\r\n                  <Grid container spacing={2}>\r\n                    { (action === recercatActions.IRMU_REVOKE || action === recercatActions.CENTER_REVOKE) ?\r\n                      <Grid item xs={12}>\r\n                        {translate('recercat_centers.revoke_ask')}\r\n                      </Grid> : null }\r\n                    { (action === recercatActions.IRMU_DENY || action === recercatActions.CENTER_DENY) ?\r\n                      <Grid item xs={12}>\r\n                        {translate('recercat_centers.deny_ask')}\r\n                      </Grid> : null }\r\n                    <Grid item xs={4}>\r\n                      <TextInput fullWidth source=\"first_name\" label={translate('users.first_name')} validate={[validateMaxLength(100,translate('common.validation.maxLength'))]} disabled />\r\n                    </Grid>\r\n                    <Grid item xs={4}>\r\n                      <TextInput fullWidth source=\"last_name_1\" label={translate('users.last_name_1')} validate={[validateMaxLength(100,translate('common.validation.maxLength'))]} disabled />    \r\n                    </Grid>\r\n                    <Grid item xs={4}>\r\n                      <TextInput fullWidth source=\"last_name_2\" label={translate('users.last_name_2')} validate={[validateMaxLength(100,translate('common.validation.maxLength'))]} disabled />  \r\n                    </Grid>\r\n                  </Grid>  \r\n                  <Grid container spacing={2}>\r\n                    <Grid item xs={12}>\r\n                      <TextInput fullWidth source=\"email\" label={translate('users.email')} parse={value => value} validate={[validateMaxLength(100,translate('common.validation.maxLength')),validateEmail(),required()]} disabled />\r\n                    </Grid>\r\n                  </Grid>                                    \r\n                  <Grid container spacing={2}>\r\n                    <Grid item xs={12}>\r\n                      <ReferenceInput fullWidth source=\"recercat_centers_id\" reference=\"recercat_centers\"  label={translate('recercat_centers.column_center')} link={false} sortable={false} filter={{ associations_id : localStorage.getItem('associations_id') }} perPage={10000} >\r\n                        <SelectInput optionText=\"name\" optionValue=\"id\" resettable disabled validate={[required()]} />  \r\n                      </ReferenceInput>\r\n                    </Grid>\r\n                  </Grid> \r\n                  <Grid container spacing={2}>\r\n                    { (action === recercatActions.IRMU_VALIDATE || action === recercatActions.IRMU_REVOKE || action === recercatActions.CENTER_REVOKE) ?\r\n                      <Grid item xs={6}>     \r\n                        <TextInput fullWidth source=\"num_member\" label={translate('recercat_centers.validate_num_member')} disabled={action==1 ? false : true} />\r\n                      </Grid>\r\n                      : null }\r\n                    <Grid item xs={12}> \r\n                      { (action === recercatActions.IRMU_VALIDATE ) ?\r\n                        <BooleanInput fullWidth source=\"send_email\" label={translate('recercat_centers.validate_send_email')} />\r\n                        : null }\r\n                      { (action === recercatActions.IRMU_REVOKE || action === recercatActions.CENTER_REVOKE ) ?\r\n                        <BooleanInput fullWidth source=\"send_email\" label={translate('recercat_centers.revoke_send_email')} />\r\n                        : null }\r\n                      { (action === recercatActions.IRMU_DENY || action === recercatActions.CENTER_DENY ) ?\r\n                        <BooleanInput fullWidth source=\"send_email\" label={translate('recercat_centers.revoke_send_email')} />\r\n                        : null }\r\n                    </Grid> \r\n                  </Grid>\r\n                </DialogContent>\r\n                <DialogActions>\r\n                  <Button label=\"ra.action.cancel\" onClick={handleCloseClick} disabled={loading} >\r\n                    <IconCancel />\r\n                  </Button>\r\n                  <SaveButton\r\n                    handleSubmitWithRedirect={\r\n                      handleSubmitWithRedirect\r\n                    }\r\n                    pristine={pristine}\r\n                    saving={saving}\r\n                    disabled={loading}\r\n                    label={translate('recercat_centers.action_button' + action)}\r\n                  />\r\n                </DialogActions>\r\n              </>\r\n            )}\r\n          />\r\n        </Dialog>\r\n        : null }\r\n                    \r\n    </>\r\n  );\r\n};\r\n\r\n\r\n\r\nconst BulkActionButtonToolbar = ({ group_id, group_name, group_public_id, resource_name, ...props }) => {\r\n\r\n    const { setSelectedIds } = useListContext();\r\n    \r\n    const dataProvider = useDataProvider();\r\n    const notify = useNotify();\r\n    const unselectAll = useUnselectAll();\r\n\r\n    const handleBulkAction = () => {\r\n        //notify(`Has seleccionat ${selectedIds.length} files`);\r\n        // Realitza alguna acció amb les files seleccionades\r\n        unselectAll(resource_name); // Deselecta totes les files després de l’acció\r\n    };\r\n    \r\n    let redirect = '/groups-tree/' + group_id;\r\n    \r\n    return (\r\n        <>\r\n            { group_public_id != 'SOCIS_PENDING' ?\r\n            <BulkGroupsButton \r\n            {...props} \r\n            resource_name={resource_name}\r\n            source_group_id={group_id}\r\n            group_name={group_name}\r\n            group_public_id={group_public_id}\r\n            /> : null }\r\n            \r\n            <BulkDeleteButton \r\n            {...props} \r\n            resource_name={resource_name}\r\n            />     \r\n            \r\n        </>\r\n    );\r\n};\r\n\r\n\r\nconst Empty = ({group, group_public_id, resource_name, ...props}) => {\r\n  const translate = useTranslate(); \r\n  const { basePath, resource } = useListContext();\r\n  return (<>\r\n    {group_public_id == 'SOCIS_PENDING' && resource_name === 'groups-tree' ? \r\n    <Box textAlign=\"center\" m={1}>\r\n        <ShowButton \r\n            component={Link}\r\n            to={'/public/add-member?associations_id=' + localStorage.getItem('associations_id')}\r\n            label={translate('settings.add_member_view_form')}\r\n            target=\"_blank\"\r\n            align=\"right\"\r\n            className\r\n          /> \r\n        <Button \r\n            component={Link}\r\n            to={'/settings-add-member'}\r\n            label={translate('settings.add_member_edit_form')}\r\n            align=\"right\"\r\n            className\r\n          > \r\n          <SettingsIcon />\r\n        </Button>\r\n    </Box> : null }\r\n          \r\n    {group_public_id !== 'SOCIS_PENDING' ? \r\n      <Box textAlign=\"center\" m={1}>\r\n        <br />\r\n        <Typography variant=\"h5\" paragraph>\r\n          {translate('users.no_users_title')} \r\n        </Typography>\r\n        {resource_name === 'groups-tree' ? <>\r\n          <Typography variant=\"body1\">\r\n            {translate('users.no_users_ask')} \r\n          </Typography>\r\n          <br/> \r\n          <CreateCustomButton group={group} basePath={basePath} />\r\n          { subscriptionModule(modules.RECERCAT) ? \r\n            group_public_id === 'SOCIS' || group_public_id === 'RECERCAT_PENDING_IRMU' || group_public_id === 'RECERCAT_PENDING_CENTER' ?\r\n              <ImportButton target={targets.GROUP} items_id={group} group_public_id={group_public_id} />        \r\n              : null \r\n            :                \r\n            <ImportButton target={targets.GROUP} items_id={group} group_public_id={group_public_id} />\r\n          }\r\n        </> : null } \r\n      </Box> : null }\r\n  </>\r\n  );\r\n};\r\n\r\nconst CreateCustomButton = ({group, ...props}) => {\r\n\r\n  return (\r\n    <CreateButton\r\n      {...props}\r\n      component={Link}\r\n      to={{\r\n        pathname: '/users/create',\r\n        search: `?groups_id=${group}`, \r\n      }}\r\n    />\r\n  );\r\n};\r\n\r\nconst ListActions = ({group, group_public_id, resource_name, ...props}) => {\r\n\r\n  const translate = useTranslate(); \r\n \r\n  let filterExport = {\r\n    groups_id : group,  \r\n    associations_id: localStorage.getItem('associations_id'),\r\n    filter: props.filterValues && props.filterValues.filter ? props.filterValues.filter : [],\r\n    q: props.filterValues && props.filterValues.q ? props.filterValues.q : ''\r\n  };\r\n    \r\n  const sort=props.currentSort ? props.currentSort : { field: 'id', order: 'DESC' };\r\n  \r\n      \r\n  return (\r\n    \r\n    <>\r\n      <TopToolbar>\r\n        <>\r\n          {group_public_id == 'SOCIS_PENDING' && resource_name === 'groups-tree' ? \r\n          <ShowButton \r\n              component={Link}\r\n              to={'/public/add-member?associations_id=' + localStorage.getItem('associations_id')}\r\n              label={translate('settings.add_member_view_form')}\r\n              target=\"_blank\"\r\n              align=\"right\"\r\n              className\r\n            /> \r\n          : null }\r\n          \r\n          {group_public_id == 'SOCIS_PENDING' && resource_name === 'groups-tree' ? \r\n          <Button \r\n              component={Link}\r\n              to={'/settings-add-member'}\r\n              label={translate('settings.add_member_edit_form')}\r\n              align=\"right\"\r\n              className\r\n            > \r\n            <SettingsIcon />\r\n          </Button>\r\n            \r\n          : null }\r\n          \r\n          {group_public_id !== 'SOCIS_PENDING' && resource_name === 'groups-tree' ? \r\n            <>        \r\n              <MyFilterUsers group={group} />        \r\n              <CreateCustomButton group={group} />\r\n              { subscriptionModule(modules.FEDERATION) && group_public_id === 'SOCIS' ? \r\n                <UsersAnnuarySendButton group={group} /> : null\r\n              }\r\n              { subscriptionModule(modules.RECERCAT) ? \r\n                group_public_id === 'SOCIS' || group_public_id === 'RECERCAT_PENDING_IRMU' || group_public_id === 'RECERCAT_PENDING_CENTER' ?\r\n                  <ImportButton target={targets.GROUP} items_id={group} group_public_id={group_public_id} />        \r\n                  : null \r\n                :\r\n                <ImportButton target={targets.GROUP} items_id={group} group_public_id={group_public_id} /> }\r\n            </>\r\n            : null }\r\n               \r\n          { resource_name === 'groups-tree-contacts' ? \r\n            <ExportButton maxResults=\"100000\" filterValues={filterExport} alwaysEnabled={true} exporter={subscriptionModule(modules.RECERCAT) ? exporterRecercat : (resource_name === 'groups-tree') ? exporter : exporterFAC }   sort={sort} /> \r\n          :\r\n            <DownloadXLSButton {...props} groups_id={group} /> \r\n          }\r\n          \r\n          { group_public_id !== 'SOCIS_PENDING' && resource_name === 'groups-tree' && subscriptionModule(modules.POSTAL_LABELS) ? \r\n            <UsersPostalLabelsCreateButton {...props} filterValues={filterExport} />\r\n          : null }\r\n          \r\n        </>\r\n      </TopToolbar>\r\n    </>\r\n    \r\n  );\r\n};\r\n\r\n/* \r\nEXPORTACIÓ VELLA\r\n<ExportButton maxResults=\"100000\" filterValues={filterExport} alwaysEnabled={true} exporter={subscriptionModule(modules.RECERCAT) ? exporterRecercat : (resource_name === 'groups-tree') ? exporter : exporterFAC }   sort={sort} /> \r\n*/\r\n\r\nfunction getAge(dateString) {\r\n  var today = new Date();\r\n  var birthDate = new Date(dateString);\r\n  var age = today.getFullYear() - birthDate.getFullYear();\r\n  var m = today.getMonth() - birthDate.getMonth();\r\n  if (m < 0 || (m === 0 && today.getDate() < birthDate.getDate())) {\r\n    age--;\r\n  }\r\n  return age;\r\n}\r\n    \r\nconst exporter = (items, translate, notify) => {\r\n      \r\n  const eventsForExport = items.map(user => {\r\n    var eventForExport = {\r\n      id : user.id,\r\n      first_name : user.first_name, \r\n      last_name_1 : user.last_name_1, \r\n      last_name_2 : user.last_name_2, \r\n      email: user.email,\r\n      phone: user.phone,\r\n      mobile: user.mobile,\r\n      group: user.group_name,\r\n      date_join: user.date_join ? user.date_join.substr(0,10) : '' ,\r\n      group_num_member: user.num_member,\r\n      type: translate('users.user_type_' + user.user_type ),\r\n      birthday: user.birthday ,\r\n      age: user.birthday ? getAge(user.birthday): '' ,\r\n      qr_code : user.card_hash\r\n    };\r\n    return eventForExport;\r\n  });\r\n  jsonExport(eventsForExport, {\r\n    headers: ['id', 'type', 'first_name', 'last_name_1', 'last_name_2','email','phone','mobile','birthday', 'age', 'group','group_num_member','date_join','qr_code'],\r\n    rename: [translate('common.id'), translate('users.user_type'), translate('users.first_name'), translate('users.last_name_1'), translate('users.last_name_2'), translate('users.email'),translate('users.phone'),translate('users.mobile'), translate('users.birthday'),translate('users.age'), translate('users.group'), translate('users_groups.num_member'), translate('users_groups.date_join'),translate('users_groups.qr_code')],        \r\n        \r\n  }, (err, csv) => {\r\n    const csv_new = '\\uFEFF' + csv;\r\n    downloadCSV(csv_new, translate('users.exporter_file_name') );       \r\n    notify(translate('common.download_ok'),\"success\");\r\n  });\r\n};\r\n\r\nconst exporterFAC = (items, translate, notify) => {\r\n    \r\n  const eventsForExport = items.map(user => {\r\n    var eventForExport = {\r\n      id : user.id,\r\n      first_name : user.first_name, \r\n      last_name_1 : user.last_name_1, \r\n      last_name_2 : user.last_name_2, \r\n      email: user.email,\r\n      phone: user.phone,\r\n      mobile: user.mobile,\r\n      group: user.group_name,\r\n      type: translate('users.user_type_' + user.user_type )\r\n    };\r\n    return eventForExport;\r\n  });\r\n  jsonExport(eventsForExport, {\r\n    headers: ['id', 'type', 'first_name', 'last_name_1', 'last_name_2','email', 'phone', 'mobile', 'group'],\r\n    rename: [translate('common.id'), translate('users.user_type'), translate('users.first_name'), translate('users.last_name_1'), translate('users.last_name_2'), translate('users.email'), translate('users.phone'), translate('users.mobile'), translate('users.group')],        \r\n        \r\n  }, (err, csv) => {\r\n    const csv_new = '\\uFEFF' + csv;\r\n    downloadCSV(csv_new, translate('users.exporter_file_name_csv') ); \r\n    notify(translate('common.download_ok'),\"success\");\r\n  });\r\n};\r\n\r\nconst exporterRecercat = (items, translate, notify) => {\r\n    \r\n  const eventsForExport = items.map(user => {\r\n    var eventForExport = {\r\n      id : user.id,\r\n      first_name : user.first_name, \r\n      last_name_1 : user.last_name_1, \r\n      last_name_2 : user.last_name_2, \r\n      email: user.email,\r\n      center: user.recercat_centers_public_id,\r\n      group: user.group_name,\r\n      date_join: user.date_join ? user.date_join.substr(0,10) : '' ,\r\n      group_num_member: user.num_member,\r\n      qr_code : user.card_hash\r\n    };\r\n    return eventForExport;\r\n  });\r\n  jsonExport(eventsForExport, {\r\n    headers: ['id', 'first_name', 'last_name_1', 'last_name_2','email','center','group','group_num_member','date_join','qr_code'],\r\n    rename: [translate('common.id'), translate('users.first_name'), translate('users.last_name_1'), translate('users.last_name_2'), translate('users.email'),translate('recercat_centers.column_center'), translate('users.group'), translate('users_groups.num_member'), translate('users_groups.date_join'),translate('users_groups.qr_code')],                \r\n  }, (err, csv) => {\r\n    const csv_new = '\\uFEFF' + csv;\r\n    downloadCSV(csv_new, translate('users.exporter_file_name') ); \r\n    notify(translate('common.download_ok'),\"success\");\r\n  });\r\n};\r\n\r\n\r\nconst ElementTitleUsers = ({ record }) => {\r\n  const translate = useTranslate(); \r\n  return '';\r\n};\r\n\r\n\r\nconst handleChangeUserType = event => {\r\n  console.log(event);\r\n};\r\n\r\nconst UserEditActions = ({ basePath, data, resource }) => {\r\n  let user_complete_name = data ? (<UserFullNameTxt record={data} />) : '';\r\n  return (\r\n    <TopToolbar>\r\n      <Grid container spacing={2}>\r\n        <Grid item xs={8}>                    \r\n          <Typography variant=\"h5\" className=\"grey8\">\r\n            {user_complete_name}                    \r\n          </Typography>\r\n        </Grid>\r\n        <Grid item xs={4} align=\"right\">                    \r\n          <ShowButton basePath={basePath} record={data} />\r\n        </Grid>\r\n      </Grid>            \r\n    </TopToolbar>\r\n  );\r\n};\r\n\r\n\r\nconst FormToolbar = ({ id , ...props }) => {\r\n    \r\n  let redirect = '/groups-tree/' + localStorage.getItem('members_group_id');\r\n    \r\n  return (\r\n    <Toolbar {...props} className=\"user_form_toolbar\" >\r\n      <SaveButton />\r\n      <DeleteButton redirect={redirect} mutationMode=\"pessimistic\" />\r\n    </Toolbar>\r\n  );\r\n};\r\n\r\nexport const UsersEdit  = ({ id, ...props }) => {\r\n\r\n  const notify = useNotify();\r\n  const refresh = useRefresh();\r\n  const redirect = useRedirect();\r\n    \r\n  const translate = useTranslate();        \r\n  const classes = useStyles();\r\n  const today = new Date().toISOString().slice(0, 10);\r\n        \r\n  const handleFailure = (error) => {        \r\n    notify(error.message, 'error');\r\n  };\r\n\r\n  const handleSuccess = ({ data }) => {\r\n    notify(translate('common.notification.updated'));\r\n    redirect('show', props.basePath, data.id);\r\n    refresh();\r\n  };\r\n  \r\n    \r\n  return (\r\n    \r\n    <Edit         \r\n      {...props} \r\n      title={<ElementTitle />}\r\n      id={id} \r\n      mutationMode=\"pessimistic\"   \r\n      actions={<UserEditActions />}\r\n      onFailure={handleFailure}\r\n      onSuccess={handleSuccess}        \r\n    >    \r\n    \r\n      { subscriptionModule(modules.RECERCAT) ?\r\n        <SimpleForm\r\n          toolbar={<FormToolbar />}\r\n        >\r\n          <AccordionSection className=\"accordion\" label={translate('users.tab_main_0')} fullWidth defaultExpanded={true}>\r\n            <Grid container spacing={2}>            \r\n              <Grid item xs={4}>\r\n                <TextInput fullWidth source=\"first_name\" label={translate('users.first_name')} validate={[required(),validateMaxLength(100,translate('common.validation.maxLength'))]}  />\r\n              </Grid>\r\n              <Grid item xs={4}>\r\n                <TextInput fullWidth source=\"last_name_1\" label={translate('users.last_name_1')} validate={[required(),validateMaxLength(100,translate('common.validation.maxLength'))]}  />    \r\n              </Grid>\r\n              <Grid item xs={4}>\r\n                <TextInput fullWidth source=\"last_name_2\" label={translate('users.last_name_2')} validate={[validateMaxLength(100,translate('common.validation.maxLength'))]} />  \r\n              </Grid>\r\n            </Grid>  \r\n            <Grid container spacing={2}>\r\n              <Grid item xs={12}>\r\n                <TextInput fullWidth source=\"email\" label={translate('users.email')} parse={value => value} validate={[validateMaxLength(100,translate('common.validation.maxLength')),validateEmail()]} />\r\n              </Grid>\r\n            </Grid>  \r\n            <Grid container spacing={2}>\r\n              <Grid item xs={12}>\r\n                <ReferenceInput fullWidth source=\"recercat_centers_id\" reference=\"recercat_centers\"  label={translate('recercat_centers.column_center')} link={false} sortable={false} filter={{ associations_id : localStorage.getItem('associations_id') }} perPage={10000} >\r\n                  <SelectInput optionText=\"name\" optionValue=\"id\" resettable validate={[required()]} disabled />  \r\n                </ReferenceInput>\r\n              </Grid>\r\n            </Grid>  \r\n          </AccordionSection>\r\n          <br />        \r\n        </SimpleForm>\r\n        :     \r\n        <TabbedForm        \r\n          toolbar={<FormToolbar />}\r\n        >    \r\n          <FormTab\r\n            label={translate('users.tab_main')}\r\n            contentClassName={classes.tab}\r\n            path=\"\" \r\n          > \r\n                  \r\n            <FormDataConsumer>\r\n              {({ formData, ...rest }) => <>\r\n                        \r\n                <Grid container spacing={2}>\r\n                  <Grid item xs={10}>   \r\n                    <Grid container spacing={2}>\r\n                      <Grid item xs={4}>                    \r\n                        <RadioButtonGroupInput source=\"user_type\" choices={choicesTypeUser(translate)} optionText=\"name\" optionValue=\"id\" label={translate('users.user_type')}  validate={required()} disabled />            \r\n                      </Grid>\r\n                    </Grid>\r\n                    \r\n                    { formData.user_type === 0 ? <> \r\n\r\n                      <AccordionSection className=\"accordion\" label={translate('users.tab_main_0')} fullWidth defaultExpanded={true}>\r\n                        <Grid container spacing={2}>                        \r\n                          <Grid item xs={4}>\r\n                            <TextInput fullWidth source=\"first_name\" label={translate('users.first_name')} validate={[required(),validateMaxLength(100,translate('common.validation.maxLength'))]}  />\r\n                          </Grid>\r\n                          <Grid item xs={4}>\r\n                            <TextInput fullWidth source=\"last_name_1\" label={translate('users.last_name_1')} validate={[required(),validateMaxLength(100,translate('common.validation.maxLength'))]}  />    \r\n                          </Grid>\r\n                          <Grid item xs={4}>\r\n                            <TextInput fullWidth source=\"last_name_2\" label={translate('users.last_name_2')} validate={[validateMaxLength(100,translate('common.validation.maxLength'))]} />  \r\n                          </Grid>\r\n                        </Grid>        \r\n\r\n                        <Grid container spacing={2}>\r\n                          <Grid item xs={4}>\r\n                            <TextInput fullWidth source=\"email\" label={translate('users.email')} parse={value => value} validate={[validateMaxLength(100,translate('common.validation.maxLength')),validateEmail()]} />\r\n                          </Grid>\r\n                          <Grid item xs={4}>\r\n                            <TextInput fullWidth source=\"email_secondary\" label={translate('users.email_secondary')} parse={value => value} validate={[validateMaxLength(100,translate('common.validation.maxLength')),validateEmail()]} />\r\n                          </Grid>\r\n                          <Grid item xs={4}>\r\n                            <TextInput fullWidth source=\"nif\" label={translate('users.nif')} validate={[validateMaxLength(10,translate('common.validation.maxLength'))]} />\r\n                          </Grid>\r\n                        </Grid>           \r\n\r\n                        <Grid container spacing={2}>\r\n                          { !(subscriptionModule(modules.FEDERATION) && formData.user_type === 1) ? <>\r\n                            <Grid item xs={4}>\r\n                              <TextInput fullWidth source=\"address\" label={translate('users.address')} validate={[validateMaxLength(100,translate('common.validation.maxLength'))]} />\r\n                            </Grid>\r\n                            <Grid item xs={4}>\r\n                              <TextInput fullWidth source=\"neighborhood\" label={translate('users.neighborhood')} validate={[validateMaxLength(100,translate('common.validation.maxLength'))]} />\r\n                            </Grid>\r\n                            <Grid item xs={4}>\r\n                              <TextInput fullWidth source=\"zip\" label={translate('users.zip')} validate={[validateMaxLength(5,translate('common.validation.maxLength'))]} />\r\n                            </Grid>\r\n                            <Grid item xs={4}>\r\n                              <TextInput fullWidth source=\"city\" label={translate('users.city')} validate={[validateMaxLength(100,translate('common.validation.maxLength'))]} />\r\n                            </Grid>\r\n                            <Grid item xs={4}>\r\n                              <TextInput fullWidth source=\"region\" label={translate('users.region')} validate={[validateMaxLength(100,translate('common.validation.maxLength'))]} />\r\n                            </Grid>\r\n                            <Grid item xs={4}>\r\n                              <TextInput fullWidth source=\"country\" label={translate('users.country')} validate={[validateMaxLength(50,translate('common.validation.maxLength'))]} />\r\n                            </Grid>\r\n                            \r\n                            { formData.user_type === 1 ?\r\n                            <>\r\n                            <Grid item xs={4}>\r\n                              <NumberInput fullWidth source=\"lat\" label={translate('users.lat')}  />\r\n                            </Grid>\r\n                            <Grid item xs={4}>\r\n                              <NumberInput fullWidth source=\"lng\" label={translate('users.lng')}  />\r\n                            </Grid>\r\n                            <Grid item xs={4}>                              \r\n                            </Grid>\r\n                            </> : null }\r\n                            \r\n                          </> : null }\r\n                          <Grid item xs={4}>\r\n                            <TextInput fullWidth source=\"phone\" label={translate('users.phone')} validate={[validateMaxLength(15,translate('common.validation.maxLength'))]} />\r\n                          </Grid>\r\n                          <Grid item xs={4}>\r\n                            <TextInput fullWidth source=\"mobile\" label={translate('users.mobile')} validate={[validateMaxLength(15,translate('common.validation.maxLength'))]} />\r\n                          </Grid>\r\n                          <Grid item xs={4}>\r\n                            <TextInput fullWidth source=\"phone_emergency\" label={translate('users.phone_emergency')} validate={[validateMaxLength(50,translate('common.validation.maxLength'))]} />\r\n                          </Grid>\r\n                        </Grid>\r\n\r\n                        <Grid container spacing={2}>\r\n\r\n                          <Grid item xs={4}>\r\n                            <DateInput fullWidth source=\"birthday\" label={translate('users.birthday')} />\r\n                          </Grid>\r\n                          <Grid item xs={4}>\r\n                            <TextInput fullWidth source=\"job\" label={translate('users.job')} validate={[validateMaxLength(100,translate('common.validation.maxLength'))]} />\r\n                          </Grid>\r\n                          <Grid item xs={4}>\r\n                            <SelectInput fullWidth source=\"gender\" choices={choicesGenderUser(translate)} optionText=\"name\" optionValue=\"id\" label={translate('users.gender')} />    \r\n                          </Grid>\r\n                        </Grid>    \r\n\r\n                        <Grid container spacing={2}>\r\n                          <Grid item xs={4}>\r\n                            <TextInput fullWidth source=\"web\" label={translate('users.web')} validate={[validateMaxLength(100,translate('common.validation.maxLength'))]} />\r\n                          </Grid> \r\n                          <Grid item xs={8}>\r\n                            <BooleanInput fullWidth source=\"newsletter\" label={translate('users.newsletter')} />\r\n                          </Grid> \r\n                        </Grid>\r\n\r\n                        <Grid container spacing={2}>\r\n                          <Grid item xs={12}>\r\n                            <TextInput fullWidth source=\"comment\" label={translate('users.comment')} validate={[validateMaxLength(1000,translate('common.validation.maxLength'))]} />\r\n                          </Grid>    \r\n                        </Grid>\r\n                                \r\n                        <Grid container spacing={2}>\r\n                          <Grid item xs={12}>\r\n                            <TextInput fullWidth source=\"alerts\" label={translate('users.alerts')} validate={[validateMaxLength(1000,translate('common.validation.maxLength'))]} />\r\n                          </Grid>    \r\n                        </Grid>\r\n\r\n                      </AccordionSection>\r\n\r\n                    </> : null }\r\n                            \r\n                    { formData.user_type === 1 ? <>\r\n\r\n                      <AccordionSection className=\"accordion\" label={translate('users.tab_main_1')} fullWidth defaultExpanded={true} >\r\n                    \r\n                        <Grid container spacing={2}>\r\n                          <Grid item xs={9}>\r\n                            <TextInput fullWidth source=\"first_name\" label={translate('users.name_company')} validate={[required(),validateMaxLength(100,translate('common.validation.maxLength'))]}  />\r\n                          </Grid>\r\n                          <Grid item xs={3}>\r\n                            <TextInput fullWidth source=\"nif\" label={translate('users.nif_only')} validate={[validateMaxLength(10,translate('common.validation.maxLength'))]} />\r\n                          </Grid>\r\n                        </Grid>        \r\n\r\n                        <Grid container spacing={2}>\r\n                          <Grid item xs={4}>\r\n                            <TextInput fullWidth source=\"email\" label={translate('users.email')} validate={[validateMaxLength(100,translate('common.validation.maxLength')),validateEmail()]} />\r\n                          </Grid>\r\n                          <Grid item xs={4}>\r\n                            <TextInput fullWidth source=\"email_secondary\" label={translate('users.email_secondary')} validate={[validateMaxLength(100,translate('common.validation.maxLength')),validateEmail()]} />\r\n                          </Grid>\r\n                          <Grid item xs={4}>\r\n                            <DateInput fullWidth source=\"birthday\" label={translate('users.foundation_date')} />\r\n                          </Grid>\r\n                        </Grid>           \r\n\r\n                        <Grid container spacing={2}>\r\n                          { !(subscriptionModule(modules.FEDERATION) && formData.user_type === 1 ) ? <>\r\n                            <Grid item xs={4}>\r\n                              <TextInput fullWidth source=\"address\" label={translate('users.address')} validate={[validateMaxLength(100,translate('common.validation.maxLength'))]} />\r\n                            </Grid>\r\n                            <Grid item xs={4}>\r\n                              <TextInput fullWidth source=\"neighborhood\" label={translate('users.neighborhood')} validate={[validateMaxLength(100,translate('common.validation.maxLength'))]} />\r\n                            </Grid>\r\n                            <Grid item xs={4}>\r\n                              <TextInput fullWidth source=\"zip\" label={translate('users.zip')} validate={[validateMaxLength(5,translate('common.validation.maxLength'))]} />\r\n                            </Grid>\r\n                            <Grid item xs={4}>\r\n                              <TextInput fullWidth source=\"city\" label={translate('users.city')} validate={[validateMaxLength(100,translate('common.validation.maxLength'))]} />\r\n                            </Grid>\r\n                            <Grid item xs={4}>\r\n                              <TextInput fullWidth source=\"region\" label={translate('users.region')} validate={[validateMaxLength(100,translate('common.validation.maxLength'))]} />\r\n                            </Grid>\r\n                            <Grid item xs={4}>\r\n                              <TextInput fullWidth source=\"country\" label={translate('users.country')} validate={[validateMaxLength(50,translate('common.validation.maxLength'))]} />\r\n                            </Grid>\r\n                            <Grid item xs={4}>\r\n                              <NumberInput fullWidth source=\"lat\" label={translate('users.lat')}  />\r\n                            </Grid>\r\n                            <Grid item xs={4}>\r\n                              <NumberInput fullWidth source=\"lng\" label={translate('users.lng')}  />\r\n                            </Grid>\r\n                            <Grid item xs={4}>                              \r\n                            </Grid>\r\n                          </> : null }\r\n                          <Grid item xs={4}>\r\n                            <TextInput fullWidth source=\"phone\" label={translate('users.phone')} validate={[validateMaxLength(15,translate('common.validation.maxLength'))]} />\r\n                          </Grid>\r\n                          <Grid item xs={4}>\r\n                            <TextInput fullWidth source=\"mobile\" label={translate('users.mobile')} validate={[validateMaxLength(15,translate('common.validation.maxLength'))]} />\r\n                          </Grid>\r\n                          <Grid item xs={4}>\r\n                            <TextInput fullWidth source=\"web\" label={translate('users.web')} validate={[validateMaxLength(100,translate('common.validation.maxLength'))]} />\r\n                          </Grid>\r\n                        </Grid>\r\n                            \r\n                        <Grid container spacing={2}>\r\n                          <Grid item xs={12}>                                    \r\n                            <BooleanInput fullWidth source=\"newsletter\" label={translate('users.newsletter')} />\r\n                          </Grid>\r\n                        </Grid>\r\n                                \r\n                        <Grid container spacing={2}>\r\n                          <Grid item xs={12}>\r\n                            <TextInput fullWidth source=\"comment\" label={translate('users.comment')} validate={[validateMaxLength(1000,translate('common.validation.maxLength'))]} />\r\n                          </Grid>                                \r\n                        </Grid>\r\n                            \r\n                        <Grid container spacing={2}>\r\n                          <Grid item xs={12}>\r\n                            <TextInput fullWidth source=\"alerts\" label={translate('users.alerts')} validate={[validateMaxLength(1000,translate('common.validation.maxLength'))]} />\r\n                          </Grid>    \r\n                        </Grid>               \r\n\r\n                      </AccordionSection>\r\n                            \r\n                    </> : null }\r\n                    \r\n                    <AccordionSection className=\"accordion\" label={translate('users.bank_data')} fullWidth defaultExpanded={true}>\r\n                      <Grid container spacing={2}>\r\n                        <Grid item xs={8}>       \r\n                          <TextInput fullWidth source=\"iban\" label={translate('users.bank_iban')} validate={[validateMaxLength(32,translate('common.validation.maxLength'))]} />\r\n                        </Grid> \r\n                        <Grid item xs={4}>       \r\n                          <TextInput fullWidth source=\"swift\" label={translate('users.bank_swift')} validate={[validateMaxLength(11,translate('common.validation.maxLength'))]} />\r\n                        </Grid>\r\n                      </Grid>\r\n                      <Grid container spacing={2}>\r\n                        <Grid item xs={6}>       \r\n                          <BooleanInput fullWidth source=\"payment_cash\" label={translate('users.payment_cash')} />\r\n                        </Grid> \r\n                      </Grid>\r\n                      <Grid container spacing={2}>                        \r\n                        <Grid item xs={6}>   \r\n                          <UserInput source=\"payer\" user_type={-1} disabled={false} label={translate('users.bank_payer')} allowEmpty={true} required={false} />                                \r\n                        </Grid>                             \r\n                      </Grid>\r\n                    </AccordionSection>\r\n                    \r\n                    { subscriptionModule(modules.CUSTOM_FIELDS) ?\r\n                    <CustomFieldsEdit associations_id={localStorage.getItem('associations_id')} target={targets.USER} accordion={true} />\r\n                    : null }\r\n                    \r\n                  </Grid>\r\n                  <Grid item xs={2}>                   \r\n                    <br />                    \r\n                    <BoxPhotoUser target={targets.USER_PHOTO} items_id={id} edit={true} default_img={formData.user_type} className=\"docs_photo_user\" camera={true} />\r\n                  </Grid>\r\n                </Grid>\r\n            \r\n              </> }\r\n            </FormDataConsumer>\r\n\r\n          </FormTab>\r\n            \r\n          <FormTab\r\n            label={translate('users.tab_more')}\r\n            contentClassName={classes.tab}\r\n            path=\"more\" \r\n          >     \r\n            <FormDataConsumer>\r\n              {({ formData, ...rest }) => <>\r\n                    \r\n                { formData.user_type === 0 ? <>\r\n                  <br />\r\n                  <AccordionSection className=\"accordion\" label={translate('users.tab_family')} fullWidth defaultExpanded={true}>\r\n                    <UsersFamiliesList users_id={id} fullWidth />\r\n                  </AccordionSection>\r\n\r\n                  <AccordionSection className=\"accordion\" label={translate('users.tab_contacts_rel')} fullWidth defaultExpanded={true}>\r\n                    <UsersContactsList users_id={formData.id} rel={true} />\r\n                  </AccordionSection> \r\n                </> : null }\r\n                \r\n                <br />\r\n                <AccordionSection className=\"accordion\" label={translate('users.email_secondary_list')} fullWidth defaultExpanded={true}>\r\n                  <UsersEmailsList users_id={formData.id} />\r\n                </AccordionSection>                  \r\n                  \r\n                { formData.user_type === 1 ? <>\r\n\r\n                  { subscriptionModule(modules.FEDERATION) ? \r\n                    <AccordionSection className=\"accordion\" label={translate('users_federation.tab_managers')} fullWidth defaultExpanded={true}>\r\n                      <UsersContactsList users_id={formData.id} responsabilities={true} />\r\n                    </AccordionSection>\r\n                    : null }\r\n\r\n                  <AccordionSection className=\"accordion\" label={translate('users.tab_contacts')} fullWidth defaultExpanded={true}>\r\n                    <UsersContactsList users_id={formData.id} responsabilities={false}/>\r\n                  </AccordionSection>\r\n                        \r\n                  { subscriptionModule(modules.FEDERATION) ? \r\n                    <AccordionSection className=\"accordion\" label={translate('users_federation.addresses')} fullWidth defaultExpanded={true}>   \r\n                      <UsersAddressesEdit id={id} />\r\n                    </AccordionSection>    \r\n                    : null }\r\n                                            \r\n                </> : null } \r\n                    \r\n                <AccordionSection className=\"accordion\" label={translate('users.tab_groups')} fullWidth defaultExpanded={true}>\r\n                  <UsersGroupsEdit id={id} today={today} />\r\n                </AccordionSection>    \r\n                \r\n                { subscriptionModule(modules.REMITTANCES) ? \r\n                <AccordionSection className=\"accordion\" label={translate('users.tab_quotes')} fullWidth defaultExpanded={true}>\r\n                  <UsersGroupsQuotesList users_id={id} />\r\n                </AccordionSection>    \r\n                : null }\r\n\r\n                { formData.user_type === 0 ?\r\n                  <AccordionSection className=\"accordion\" label={translate('users.tab_responsabilities')} fullWidth defaultExpanded={true}>                        \r\n                    <UsersGroupsResponsabilitiesEdit id={id} today={today} />\r\n                  </AccordionSection>      \r\n                  : null }\r\n\r\n                <AccordionSection className=\"accordion\" label={translate('users.tab_social_nets')} fullWidth defaultExpanded={true}>\r\n                  <SocialNetsList target={targets.USER} items_id={id} />\r\n                  <br />\r\n                </AccordionSection>                    \r\n                            \r\n              </>}\r\n            </FormDataConsumer>\r\n          </FormTab>            \r\n            \r\n          <FormTab\r\n            label={translate('users.tab_docs')}\r\n            contentClassName={classes.tab}\r\n            path=\"docs\" \r\n          >       \r\n            <DocsList target={targets.USER} items_id={id} />\r\n            <br />\r\n          </FormTab>\r\n            \r\n          { subscriptionModule(modules.FEDERATION) ?  \r\n            <FormTab\r\n              label={translate('users_federation.tab_classrooms')}\r\n              contentClassName={classes.tab}\r\n              path=\"classrooms\"                     \r\n            >           \r\n                \r\n              <FormDataConsumer>\r\n                {({ formData, ...rest }) => formData.user_type === 1 && \r\n                    <ClassroomsList users_id={id} user_classroom={true} />\r\n                }\r\n              </FormDataConsumer>\r\n                    \r\n            </FormTab>\r\n            : null }\r\n                \r\n            \r\n          { subscriptionModule(modules.FEDERATION) ?  \r\n            <FormTab\r\n              label={translate('users_federation.tab')}\r\n              contentClassName={classes.tab}\r\n              path=\"federation\" \r\n            >   \r\n\r\n              <FormDataConsumer>\r\n                {({ formData, ...rest }) => formData.user_type === 1 && <>\r\n                  <br />   \r\n                    \r\n                  <Grid container spacing={2}>\r\n                    <Grid item xs={3}>  \r\n                      <TextInput fullWidth source=\"name\" label={translate('users_federation.name')} validate={[validateMaxLength(255,translate('common.validation.maxLength'))]} />                    \r\n                    </Grid>\r\n                    <Grid item xs={3}>  \r\n                      <TextInput fullWidth source=\"acronym\" label={translate('users_federation.acronym')} validate={[validateMaxLength(100,translate('common.validation.maxLength'))]} />                    \r\n                    </Grid>\r\n                    <Grid item xs={3}>                    \r\n                      <TextInput fullWidth source=\"reg_name\" label={translate('users_federation.reg_name')} validate={[validateMaxLength(100,translate('common.validation.maxLength'))]} />\r\n                    </Grid>\r\n                    <Grid item xs={3}>                    \r\n                      <TextInput fullWidth source=\"reg_num\" label={translate('users_federation.reg_num')} validate={[validateMaxLength(100,translate('common.validation.maxLength'))]} />\r\n                    </Grid>                        \r\n                  </Grid>\r\n                    \r\n                  <Grid container spacing={2}>\r\n                    <Grid item xs={3}>  \r\n                      <BooleanInput fullWidth source=\"bcin\" label={translate('users_federation.bcin')}  />\r\n                    </Grid>\r\n                    <Grid item xs={3}>                    \r\n                      <BooleanInput fullWidth source=\"bcil\" label={translate('users_federation.bcil')}  />\r\n                    </Grid>\r\n                  </Grid>\r\n                    \r\n                  <Grid container spacing={2}>\r\n                    <Grid item xs={12}>  \r\n                      <TextInput fullWidth source=\"tickets\" label={translate('users_federation.tickets')} validate={[validateMaxLength(100,translate('common.validation.maxLength'))]} />\r\n                    </Grid>\r\n                  </Grid>\r\n                    \r\n                  <Grid container spacing={2}>\r\n                    <Grid item xs={2}>  \r\n                      <BooleanInput fullWidth source=\"xtac\" label={translate('users_federation.xtac')}  />\r\n                    </Grid>\r\n                    <Grid item xs={2}>  \r\n                      <BooleanInput fullWidth source=\"culture_interest\" label={translate('users_federation.culture_interest')}  />\r\n                    </Grid>\r\n                    <Grid item xs={2}>  \r\n                      <BooleanInput fullWidth source=\"public_utility\" label={translate('users_federation.public_utility')}  />\r\n                    </Grid>\r\n                    <Grid item xs={2}>  \r\n                      <BooleanInput fullWidth source=\"soft_cat\" label={translate('users_federation.soft_cat')}  />\r\n                    </Grid>\r\n                    <Grid item xs={2}>  \r\n                      <BooleanInput fullWidth source=\"rcat\" label={translate('users_federation.rcat')}  />\r\n                    </Grid>\r\n                  </Grid>\r\n                    \r\n                  <Grid container spacing={2}>\r\n                    <Grid item xs={3}>  \r\n                      <DateInput fullWidth source=\"last_managers_change\" label={translate('users_federation.last_managers_change')}  />\r\n                    </Grid>\r\n                    <Grid item xs={3}>  \r\n                      <DateInput fullWidth source=\"next_managers_change\" label={translate('users_federation.next_managers_change')}  />\r\n                    </Grid>\r\n                    <Grid item xs={6}>  \r\n                      <SelectInput fullWidth label={translate('users_federation.delegation')} source=\"delegation\" choices={choicesDelegations} resettable /> \r\n                    </Grid>\r\n                  </Grid>\r\n                    \r\n                  <Grid container spacing={2}>                        \r\n                    <Grid item xs={3}>  \r\n                      <BooleanInput fullWidth source=\"host\" label={translate('users_federation.host')}  />\r\n                    </Grid>   \r\n                    { formData.host ?                       \r\n                      <Grid item xs={9}>  \r\n                        <TextInput fullWidth multiline source=\"host_entities\" label={translate('users_federation.host_entities')} />\r\n                      </Grid>\r\n                    : null }\r\n                  </Grid>\r\n                    \r\n                  <Grid container spacing={2}>                        \r\n                    <Grid item xs={3}>  \r\n                      <BooleanInput fullWidth source=\"more_federations\" label={translate('users_federation.more_federations')}  />\r\n                    </Grid>   \r\n                    { formData.more_federations ?                       \r\n                      <Grid item xs={9}>  \r\n                        <TextInput fullWidth multiline source=\"federations\" label={translate('users_federation.federations')} />\r\n                      </Grid>\r\n                    : null }\r\n                  </Grid>\r\n                    \r\n                  <Grid container spacing={2}>\r\n                    <Grid item xs={4}>                    \r\n                      <BooleanInput fullWidth source=\"members_cards\" label={translate('users_federation.members_cards')}  />\r\n                    </Grid>\r\n                    <Grid item xs={4}>                    \r\n                      <BooleanInput fullWidth source=\"logo_federation\" label={translate('users_federation.logo_federation')}  />\r\n                    </Grid>\r\n                    <Grid item xs={4}>                    \r\n                      <BooleanInput fullWidth source=\"internal_regulation\" label={translate('users_federation.internal_regulation')}  />\r\n                    </Grid>\r\n                  </Grid>\r\n                  \r\n                  { subscriptionModule(modules.CUSTOM_FIELDS) ?\r\n                    <CustomFieldsEdit associations_id={localStorage.getItem('associations_id')} target={targets.USER_FEDERATION} title={false} accordion={false} prefix=\"federation_\"/>\r\n                  : null }\r\n                    \r\n                  <Typography variant=\"h6\" className=\"grey8 titleUserShow\">                        \r\n                    {translate('users_federation.building')}\r\n                  </Typography>\r\n                  <Divider fullWidth className=\"\" />\r\n                  <br />\r\n                    \r\n                  <Grid container spacing={2}>\r\n                    <Grid item xs={3}>                    \r\n                      <BooleanInput fullWidth source=\"federation_plate\" label={translate('users_federation.federation_plate')}  />\r\n                    </Grid>\r\n                    <Grid item xs={3}>                    \r\n                      <BooleanInput fullWidth source=\"license\" label={translate('users_federation.license')}  />\r\n                    </Grid>\r\n                  </Grid>\r\n                    \r\n                  <Grid container spacing={2}>\r\n                    <Grid item xs={3}>                    \r\n                      <BooleanInput fullWidth source=\"ownership\" label={translate('users_federation.ownership')}  />\r\n                    </Grid>\r\n                    <Grid item xs={3}>                    \r\n                      <SelectInput fullWidth label={translate('users_federation.property')} source=\"property\" choices={choicesProperty} resettable /> \r\n                    </Grid>\r\n                    <Grid item xs={3}>                    \r\n                      <SelectInput fullWidth label={translate('users_federation.rent')} source=\"rent\" choices={choicesCession} resettable /> \r\n                    </Grid>\r\n                    <Grid item xs={3}>\r\n                      <BooleanInput fullWidth source=\"expropied\" label={translate('users_federation.expropied')}  />\r\n                    </Grid>                    \r\n                  </Grid>\r\n                  \r\n                  <Typography variant=\"h6\" className=\"grey8 titleUserShow\">                        \r\n                    {translate('users_federation.history_title')}\r\n                  </Typography>\r\n                  <Divider fullWidth className=\"\" />\r\n                  <br />\r\n                  \r\n                  <Grid container spacing={2}>\r\n                    <Grid item xs={3}>  \r\n                      <BooleanInput fullWidth source=\"actived\" label={translate('users_federation.actived')}  />\r\n                    </Grid>\r\n                    <Grid item xs={9}>                        \r\n                    </Grid>\r\n                    <Grid item xs={3}>  \r\n                      <BooleanInput fullWidth source=\"missing\" label={translate('users_federation.missing')}  />\r\n                    </Grid>\r\n                    <Grid item xs={3}>  \r\n                      { formData.missing ?   \r\n                        <DateInput fullWidth source=\"missing_date\" label={translate('users_federation.missing_date')}  />\r\n                      : null }\r\n                    </Grid>\r\n                    <Grid item xs={1}>                        \r\n                    </Grid>\r\n                    <Grid item xs={5}>  \r\n                      <BooleanInput fullWidth source=\"robbed\" label={translate('users_federation.robbed')}  />\r\n                    </Grid>\r\n                    <Grid item xs={12} sm={12}>\r\n                        <RichTextInput fullWidth source=\"history\" label={translate('users_federation.history')} />\r\n                    </Grid>\r\n                    <Grid item xs={12} sm={12}>\r\n                        <RichTextInput fullWidth source=\"history_equipment\" label={translate('users_federation.history_equipment')} />\r\n                    </Grid>\r\n                    <Grid item xs={12} sm={12}>\r\n                        <RichTextInput fullWidth source=\"history_current\" label={translate('users_federation.history_current')} />\r\n                    </Grid>\r\n                  </Grid>\r\n                    \r\n                  <Typography variant=\"h6\" className=\"grey8 titleUserShow\">                        \r\n                    {translate('users_federation.regulations')}\r\n                  </Typography>\r\n                  <Divider fullWidth className=\"\" />\r\n                  <br />\r\n                    \r\n                  <Grid container spacing={2}>\r\n                    <Grid item xs={12}>\r\n                      <BooleanInput fullWidth source=\"lopd\" label={translate('users_federation.lopd')}  />\r\n                    </Grid>\r\n                  </Grid>\r\n                  <Grid container spacing={2}>\r\n                    <Grid item xs={12}>                    \r\n                      <TextInput fullWidth multiline source=\"regulations\" label={translate('users_federation.regulations')} validate={[validateMaxLength(100,translate('common.validation.maxLength'))]} />\r\n                    </Grid>\r\n                  </Grid>\r\n                  \r\n                  { subscriptionModule(modules.CUSTOM_FIELDS) ?                  \r\n                    <CustomFieldsEdit associations_id={localStorage.getItem('associations_id')} target={targets.USER_FEDERATION_SPORTS} title={true} prefix=\"federation_sports_\"/>\r\n                  : null }\r\n                                        \r\n                  <Typography variant=\"h6\" className=\"grey8 titleUserShow\">                        \r\n                    {translate('users_federation.others')}\r\n                  </Typography>\r\n                  <Divider fullWidth className=\"\" />\r\n                  <br />    \r\n                    \r\n                  <ReferenceArrayInput\r\n                    source=\"census\"\r\n                    reference=\"census\"\r\n                    perPage={1000}\r\n                    sort={{ field: 'priority', order: 'ASC' }}\r\n                  >\r\n                    <CheckboxGroupInput \r\n                      optionText=\"name\" \r\n                      optionValue=\"id\"\r\n                      label={translate('users_federation.census')}            \r\n                      row={true}\r\n                      className=\"checkboxGroupInputCompacted\"  \r\n                    />\r\n                  </ReferenceArrayInput>    \r\n                    \r\n                  <ReferenceArrayInput\r\n                    source=\"books\"\r\n                    reference=\"books\"\r\n                    perPage={1000}\r\n                    sort={{ field: 'priority', order: 'ASC' }}\r\n                  >\r\n                    <CheckboxGroupInput \r\n                      optionText=\"name\" \r\n                      optionValue=\"id\"\r\n                      label={translate('users_federation.books')}            \r\n                      row={true}\r\n                      className=\"checkboxGroupInputCompacted\"  \r\n                    />\r\n                  </ReferenceArrayInput>\r\n                    \r\n                </>\r\n                }\r\n              </FormDataConsumer>\r\n                    \r\n              <ReferenceArrayInput\r\n                source=\"mailing_lists\"\r\n                reference=\"mailing_lists\"\r\n                perPage={1000}\r\n                sort={{ field: 'priority', order: 'ASC' }}\r\n              >\r\n                <CheckboxGroupInput \r\n                  optionText=\"name\" \r\n                  optionValue=\"id\"\r\n                  label={translate('users_federation.mailing_lists')}            \r\n                  row={true}\r\n                  className=\"checkboxGroupInputCompacted\"  \r\n                />\r\n              </ReferenceArrayInput> \r\n              \r\n            </FormTab>\r\n            : null }\r\n            \r\n          { subscriptionModule(modules.FEDERATION) ?  \r\n            <FormTab\r\n              label={translate('users_federation.tab_more')}\r\n              contentClassName={classes.tab}\r\n              path=\"more_federation\"                     \r\n            >           \r\n                \r\n              <FormDataConsumer>\r\n                {({ formData, ...rest }) => formData.user_type === 1 && <>\r\n                  <br />\r\n                  <AccordionSection className=\"accordion\" label={translate('users_demografy.title')} fullWidth defaultExpanded={true}>                           \r\n                    <UsersDemografyList users_id={id} show={false} />                    \r\n                  </AccordionSection>\r\n                  \r\n                  <AccordionSection className=\"accordion\" label={translate('users.tab_economic_data')} fullWidth defaultExpanded={true}>                           \r\n                    <UsersEconomicDataList users_id={id} />\r\n                  </AccordionSection>\r\n\r\n                  <AccordionSection className=\"accordion\" label={translate('users.tab_workers_0')} fullWidth defaultExpanded={true}>                           \r\n                    <UsersWorkersList users_id={id} type={0} />\r\n                  </AccordionSection>\r\n\r\n                  <AccordionSection className=\"accordion\" label={translate('users.tab_workers_1')} fullWidth defaultExpanded={true}>                           \r\n                    <UsersWorkersList users_id={id} type={1} />\r\n                  </AccordionSection>\r\n\r\n                  <AccordionSection className=\"accordion\" label={translate('users_activities.title')} fullWidth defaultExpanded={true}>                           \r\n                    <UsersActivitiesList users_id={id} />\r\n                  </AccordionSection>\r\n\r\n                  <AccordionSection className=\"accordion\" label={translate('users_trainings.title0')} fullWidth defaultExpanded={true}>                           \r\n                    <UsersTrainingsList users_id={id} type={0} />\r\n                  </AccordionSection>\r\n\r\n                  <AccordionSection className=\"accordion\" label={translate('users_trainings.title1')} fullWidth defaultExpanded={true}>                           \r\n                    <UsersTrainingsList users_id={id} type={1} />\r\n                  </AccordionSection>\r\n\r\n                  <AccordionSection className=\"accordion\" label={translate('users_shows.title')} fullWidth defaultExpanded={true}>                           \r\n                    <UsersShowsList users_id={id} />\r\n                  </AccordionSection>\r\n\r\n                  <AccordionSection className=\"accordion\" label={translate('users_sections.title')} fullWidth defaultExpanded={true}>                           \r\n                    <UsersSectionsList users_id={id} />\r\n                  </AccordionSection>\r\n                  \r\n                  <AccordionSection className=\"accordion\" label={translate('users_social_projects.title')} fullWidth defaultExpanded={true}>                           \r\n                    <UsersSocialProjectsList users_id={id} />\r\n                  </AccordionSection>\r\n                        \r\n                  <Typography variant=\"h6\" className=\"grey8 titleUserShow\">                        \r\n                    {translate('users_federation.edited_books_title')}\r\n                  </Typography>\r\n                  <Divider fullWidth className=\"\" />\r\n                  <br />  \r\n\r\n                  <AccordionSection className=\"accordion\" label={translate('users_federation.edited_books_books')} fullWidth defaultExpanded={true}>                        \r\n                    <UsersEditedBooksEdit id={id} type={usersEditedBooksType.BOOKS} />\r\n                  </AccordionSection>    \r\n\r\n                  <AccordionSection className=\"accordion\" label={translate('users_federation.edited_books_book_entity')} fullWidth defaultExpanded={true}>                        \r\n                    <UsersEditedBooksEdit id={id} type={usersEditedBooksType.BOOK_ENTITY} />\r\n                  </AccordionSection>   \r\n\r\n                  <AccordionSection className=\"accordion\" label={translate('users_federation.edited_books_newsletter')} fullWidth defaultExpanded={true}>                        \r\n                    <UsersEditedBooksEdit id={id} type={usersEditedBooksType.NEWSLETTER} />\r\n                  </AccordionSection>   \r\n\r\n                  <AccordionSection className=\"accordion\" label={translate('users_federation.edited_books_magazine')} fullWidth defaultExpanded={true}>                        \r\n                    <UsersEditedBooksEdit id={id} type={usersEditedBooksType.MAGAZINE} />\r\n                  </AccordionSection>  \r\n                    \r\n                  <Grid container spacing={2}>\r\n                    <Grid item xs={12}>                    \r\n                      <BooleanInput fullWidth source=\"memory\" label={translate('users_federation.edited_books_memory')}  />\r\n                    </Grid>\r\n                  </Grid>\r\n                        \r\n                  <Typography variant=\"h6\" className=\"grey8 titleUserShow\">                        \r\n                    {translate('users_federation.others')}\r\n                  </Typography>\r\n                  <Divider fullWidth className=\"\" />\r\n                  <br />    \r\n\r\n                  <AccordionSection className=\"accordion\" label={translate('users_federation.recognitions')} fullWidth defaultExpanded={true}>                        \r\n                    <UsersRecognitionsEdit id={id} />\r\n                  </AccordionSection>    \r\n\r\n                  <AccordionSection className=\"accordion\" label={translate('users_federation.schedules')} fullWidth defaultExpanded={true}>                        \r\n                    <UsersSchedulesEdit id={id} />\r\n                  </AccordionSection> \r\n                  \r\n                  <AccordionSection className=\"accordion\" label={translate('users_federation.highlighted_dates')} fullWidth defaultExpanded={true}>                        \r\n                    <UsersEditedBooksEdit id={id} type={usersEditedBooksType.HIGHLIGHTED_DATES} />\r\n                  </AccordionSection> \r\n                  \r\n                  <AccordionSection className=\"accordion\" label={translate('users_federation.notable_individuals')} fullWidth defaultExpanded={true}>                        \r\n                    <UsersEditedBooksEdit id={id} type={usersEditedBooksType.NOTABLE_INDIVIDUALS} />\r\n                  </AccordionSection> \r\n                                    \r\n                  <AccordionSection className=\"accordion\" label={translate('users_federation.links')} fullWidth defaultExpanded={true}>                        \r\n                    <UsersEditedBooksEdit id={id} type={usersEditedBooksType.LINKS} />\r\n                  </AccordionSection> \r\n                        \r\n                  <AccordionSection className=\"accordion\" label={translate('users_annuary.title')} fullWidth defaultExpanded={true}>\r\n                    <UsersAnnuaryList users_id={id} />\r\n                  </AccordionSection>  \r\n                        \r\n                </> }\r\n              </FormDataConsumer>\r\n            </FormTab>\r\n            : null }  \r\n            \r\n            <FormTab\r\n            label={translate('users.tab_images')}\r\n            contentClassName={classes.tab}\r\n            path=\"images\" \r\n          >       \r\n            <DocsList target={targets.USER_MORE_PHOTOS} items_id={id} />\r\n            <br />\r\n          </FormTab>\r\n        \r\n        </TabbedForm>\r\n      }\r\n    </Edit>\r\n    \r\n  );\r\n};\r\n\r\n/* ETIQUETES: AL FINAL NO HO POSEM\r\n * <ReferenceArrayInput\r\n                        source=\"activities_users\"\r\n                        reference=\"activities_users\"\r\n                        perPage={1000}\r\n                        sort={{ field: 'priority', order: 'ASC' }}\r\n                    >\r\n                        <CheckboxGroupInput \r\n                            optionText=\"name\" \r\n                            optionValue=\"id\"\r\n                            label={translate('users_federation.activities_users')}            \r\n                            row={true}\r\n                            className=\"checkboxGroupInputCompacted\"  \r\n                        />\r\n                    </ReferenceArrayInput>  \r\n */\r\n\r\n\r\n\r\n\r\nexport const UsersCreate = props => {    \r\n  const translate = useTranslate();  \r\n  const dataProvider = useDataProvider();\r\n    \r\n  const [info, setInfo] = useState();\r\n  const [loading, setLoading] = useState(true);\r\n  const [error, setError] = useState();\r\n    \r\n  const { groups_id: groups_id_string } = parse(props.location.search);\r\n\r\n  const groups_id = groups_id_string ? parseInt(groups_id_string, 10) : '';\r\n        \r\n  useEffect(() => {\r\n    dataProvider.getOne('groups', { id: groups_id })\r\n      .then(( { data } ) => {   \r\n        setInfo(data);\r\n        setLoading(false);\r\n      })\r\n      .catch(error => {                \r\n        setLoading(false);                \r\n      });\r\n            \r\n  }, []);\r\n    \r\n  if (loading) return <MyLoading />;\r\n  if (error) return <Error />;\r\n  if (!info) return null;\r\n    \r\n  let strRedirect =  `/groups-tree/${groups_id}`;\r\n    \r\n  return (\r\n    <>\r\n      <Typography variant=\"h5\" className=\"groups_title grey8\">{translate('users.add_to_group') + ' ' + info.name}</Typography>   \r\n            \r\n      <Create {...props}\r\n      >\r\n        \r\n        <SimpleForm \r\n          redirect={subscriptionModule(modules.RECERCAT) ? 'show' : 'edit'}\r\n          initialValues={{ associations_id: localStorage.getItem('associations_id') , user_type : 0, groups_id }}>  \r\n         \r\n          {!subscriptionModule(modules.RECERCAT) ?\r\n            <RadioButtonGroupInput source=\"user_type\" choices={choicesTypeUser(translate)} optionText=\"name\" optionValue=\"id\" label={translate('users.user_type')} validate={required()}  />\r\n            : null }\r\n\r\n          <FormDataConsumer>\r\n            {({ formData, ...rest }) => formData.user_type === 0 &&\r\n                <>     \r\n                  <Grid container spacing={2}>\r\n                    <Grid item xs={3}>\r\n                      <br/>\r\n                      <TextInput fullWidth source=\"first_name\" label={translate('users.first_name')} validate={[required(),validateMaxLength(100,translate('common.validation.maxLength'))]} />\r\n                    </Grid>\r\n                    <Grid item xs={3}>\r\n                      <br/>\r\n                      <TextInput fullWidth source=\"last_name_1\" label={translate('users.last_name_1')} validate={[required(),validateMaxLength(100,translate('common.validation.maxLength'))]}  />            \r\n                    </Grid>\r\n                    <Grid item xs={3}>\r\n                      <br/>\r\n                      <TextInput fullWidth source=\"last_name_2\" label={translate('users.last_name_2')} validate={[validateMaxLength(100,translate('common.validation.maxLength'))]} />            \r\n                    </Grid>\r\n                    {(!subscriptionModule(modules.RECERCAT) ? \r\n                      <Grid item xs={3} className={'last_num_inserted' + groups_id}>\r\n                        <LastNumMemberInserted groups_id={groups_id} />\r\n                        <TextInput fullWidth source=\"num_member\" label={translate('users_groups.num_member')} validate={[validateMaxLength(25,translate('common.validation.maxLength'))]} />            \r\n                      </Grid>\r\n                      : null )}\r\n                  </Grid>    \r\n                </>\r\n            }\r\n          </FormDataConsumer>\r\n\r\n          <FormDataConsumer>\r\n            {({ formData, ...rest }) => formData.user_type === 1 &&\r\n                    <>\r\n                      <Grid container spacing={2}>\r\n                        <Grid item xs={8}>\r\n                          <span>&nbsp;</span>\r\n                          <TextInput fullWidth source=\"first_name\" label={translate('users.name_company')} validate={[required(),validateMaxLength(100,translate('common.validation.maxLength'))]}  />\r\n                        </Grid>\r\n                        <Grid item xs={4} className={'last_num_inserted' + groups_id}>\r\n                          <LastNumMemberInserted groups_id={groups_id}  />\r\n                          <TextInput fullWidth source=\"num_member\" label={translate('users_groups.num_member')} validate={[validateMaxLength(25,translate('common.validation.maxLength'))]} />            \r\n                        </Grid>\r\n                      </Grid> \r\n                    </>\r\n            }\r\n          </FormDataConsumer>\r\n            \r\n          {subscriptionModule(modules.RECERCAT) ?\r\n            <>\r\n              <Grid container spacing={2}>\r\n                <Grid item xs={12}>\r\n                  <TextInput fullWidth source=\"email\" label={translate('users.email')} parse={value => value} validate={[validateMaxLength(100,translate('common.validation.maxLength')),validateEmail(),required()]} />\r\n                </Grid>\r\n              </Grid>  \r\n              <Grid container spacing={2}>\r\n                <Grid item xs={12}>\r\n                  <ReferenceInput fullWidth source=\"recercat_centers_id\" reference=\"recercat_centers\"  label={translate('recercat_centers.column_center')} link={false} sortable={false} filter={{ associations_id : localStorage.getItem('associations_id') }} perPage={10000} >\r\n                    <SelectInput optionText=\"name\" optionValue=\"id\" resettable validate={[required()]} />  \r\n                  </ReferenceInput>\r\n                </Grid>\r\n              </Grid>  \r\n            </>\r\n            : null }\r\n            \r\n        </SimpleForm>\r\n      </Create></>\r\n  );\r\n};\r\n\r\nconst UsersFilter = (props) => {\r\n  const translate = useTranslate(); \r\n  return (\r\n    <>\r\n      <Filter {...props} >\r\n        <TextInput label={translate('common.search')} source=\"q\" alwaysOn validate={[validateMaxLength(100,translate('common.validation.maxLength'))]} />  \r\n      </Filter>\r\n    </>\r\n  );\r\n};\r\n\r\n\r\n\r\nconst ElementTitle = ({ record }) => {\r\n  const translate = useTranslate(); \r\n  return (<span>{translate('common.edit')} {record ? `\"${record.first_name}\"` : ''}</span>);\r\n};\r\n\r\n\r\n\r\n/* *************************************************************************** */\r\n/* SHOW */\r\nexport const UsersShow = (props) => {\r\n\r\n  //const notify = useNotify();\r\n  const translate = useTranslate(); \r\n  const refresh = useRefresh();\r\n  const redirect = useRedirect();\r\n    \r\n  const social_nets_reference = props.resource === 'users' ? 'social_nets' : 'social_nets_contacts';\r\n  const users_contacts_reference = props.resource === 'users' ? 'users_contacts' : 'users_contacts_contacts';\r\n  const users_emails_reference = props.resource === 'users' ? 'users_emails' : 'users_emails_contacts';\r\n  const users_contacts_row_click = props.resource === 'users' ? 'users' : 'users-fac-contacts';\r\n\r\n  return (\r\n    \r\n    subscriptionModule(modules.RECERCAT) ?\r\n      <Show actions={<UsersShowActions resource_name={props.resource} />} {...props} >\r\n        <SimpleShowLayout>  \r\n            \r\n          <Typography variant=\"h6\" className=\"grey8 titleUserShow\">                        \r\n            {translate('users.tab_main_0')}\r\n          </Typography>\r\n          <Divider className=\"\" />\r\n          <Grid container spacing={2}> \r\n            <Grid item xs={4} >\r\n              <FunctionField render={record => <TextFieldShow source={record.first_name} label={translate('users.first_name')} /> } /> \r\n            </Grid>  \r\n            <Grid item xs={4}>\r\n              <FunctionField render={record => <TextFieldShow source={record.last_name_1} label={translate('users.last_name_1')} /> } /> \r\n            </Grid>\r\n            <Grid item xs={4}>\r\n              <FunctionField render={record => <TextFieldShow source={record.last_name_2} label={translate('users.last_name_2')} /> } /> \r\n            </Grid>\r\n          </Grid>  \r\n          <Grid container spacing={2}> \r\n            <Grid item xs={12} >\r\n              <FunctionField render={record => <TextFieldShow source={record.email} label={translate('users.email')} /> } /> \r\n            </Grid>  \r\n            <Grid item xs={12}>\r\n              <span className=\"custom-field-title grey6\">{translate('recercat_centers.column_center')}</span><br/>\r\n              <ReferenceField source=\"recercat_centers_id\" reference=\"recercat_centers\"  label={translate('recercat_centers.column_center')} link={false} sortable={false} >\r\n                <TextField source=\"name\" />\r\n              </ReferenceField>\r\n            </Grid>\r\n          </Grid>\r\n          <br/>\r\n          <Typography variant=\"h6\" className=\"grey8 titleUserShow\">\r\n            {translate('users.groups')}\r\n          </Typography>\r\n          <Divider className=\"\" />\r\n          <UsersGroupsShow />                        \r\n          <br />\r\n        </SimpleShowLayout> \r\n      </Show>\r\n      :\r\n      <Show actions={<UsersShowActions resource_name={props.resource} />} {...props} >\r\n        <SimpleShowLayout>            \r\n          <Grid container spacing={2} className=\"users_show\">\r\n            <Grid item xs={2} className=\"users_show_photo_container\">                    \r\n                    \r\n              <br />\r\n              <FunctionField render={record =>                     \r\n                <BoxPhotoUser target={targets.USER_PHOTO} items_id={record.id} edit={false} default_img={record.user_type} resource_name={props.resource} className=\"docs_photo_user\" />                     \r\n              } />\r\n                    \r\n              <Grid container spacing={2}>\r\n                <Grid item xs={12} >                    \r\n                  <SocialNetsListShow target={targets.USER} items_id={props.id} reference={social_nets_reference} />\r\n                </Grid>\r\n              </Grid>\r\n\r\n            </Grid>\r\n            <Grid item xs={10} className=\"users_show_photo_container\">       \r\n                \r\n              <FunctionField render={record => record.alerts ? <div className=\"alert alert-danger\">\r\n                {record.alerts}\r\n              </div> : null\r\n              } />\r\n                    \r\n              <Typography variant=\"h5\" className=\"grey8\">\r\n                <FunctionField render={record => <UserFullNameTxt record={record}/> } />\r\n              </Typography>\r\n\r\n              <Grid container spacing={5}>\r\n                <Grid item xs={6} className=\"\">     \r\n                    \r\n                  <FunctionField render={record => record.user_type === 0 ? \r\n                    <Typography variant=\"h6\" className=\"grey8 titleUserShow\">                        \r\n                      {translate('users.tab_main_0')}\r\n                    </Typography>\r\n                    : \r\n                    <Typography variant=\"h6\" className=\"grey8 titleUserShow\">                        \r\n                      {translate('users.tab_main_1')}\r\n                    </Typography>\r\n                  } />\r\n                  <Divider className=\"\" />\r\n                        \r\n                  <FunctionField render={record => record.user_type === 0 ? (\r\n                    <>\r\n                      <Grid container spacing={2}> \r\n                        <Grid item xs={4} >\r\n                          <TextFieldShow source={record.first_name} label={translate('users.first_name')} /> \r\n                        </Grid>  \r\n                        <Grid item xs={4}>\r\n                          <TextFieldShow source={record.last_name_1} label={translate('users.last_name_1')} /> \r\n                        </Grid>\r\n                        <Grid item xs={4}>\r\n                          <TextFieldShow source={record.last_name_2} label={translate('users.last_name_2')} />\r\n                        </Grid>\r\n                      </Grid>  \r\n                      <Grid container spacing={2}> \r\n                        <Grid item xs={4} >\r\n                          <TextFieldShow source={record.email} label={translate('users.email')} /> \r\n                        </Grid> \r\n                        <Grid item xs={4} >\r\n                          <TextFieldShow source={record.email_secondary} label={translate('users.email_secondary')} /> \r\n                        </Grid> \r\n                        <Grid item xs={4}>\r\n                          <TextFieldShow source={record.nif} label={translate('users.nif')} /> \r\n                        </Grid>\r\n                      </Grid>\r\n                    </>\r\n                  ) : (\r\n                    <>\r\n                    <Grid container spacing={2}>  \r\n                      <Grid item xs={6} >\r\n                        <TextFieldShow source={record.first_name} label={translate('users.name_company')} />\r\n                      </Grid>  \r\n                      <Grid item xs={6}>\r\n                        <TextFieldShow source={record.nif} label={translate('users.nif')} />\r\n                      </Grid>                      \r\n                    </Grid>  \r\n                    <Grid container spacing={2}> \r\n                      <Grid item xs={6} >                                    \r\n                        <TextFieldShow source={record.email} label={translate('users.email')} />\r\n                      </Grid>  \r\n                      <Grid item xs={3} >                                    \r\n                        <TextFieldShow source={record.email_secondary} label={translate('users.email_secondary')} />\r\n                      </Grid> \r\n                    </Grid> \r\n                    </>\r\n                  ) } />\r\n\r\n                  <FunctionField render={record => !(subscriptionModule(modules.FEDERATION) && record.user_type === 1 && props.resource === 'users') ? \r\n                    <>\r\n                      <Grid container spacing={2}>\r\n                        <Grid item xs={4} >\r\n                          <TextFieldShow source={record.address} label={translate('users.address')} />\r\n                        </Grid>\r\n                        <Grid item xs={4} >\r\n                          <TextFieldShow source={record.neighborhood} label={translate('users.neighborhood')} />\r\n                        </Grid>\r\n                        <Grid item xs={4} >\r\n                          <TextFieldShow source={record.zip} label={translate('users.zip')} />\r\n                        </Grid>\r\n                      </Grid>\r\n\r\n                      <Grid container spacing={2}>\r\n                        <Grid item xs={4} >\r\n                          <TextFieldShow source={record.city} label={translate('users.city')} />\r\n                        </Grid>\r\n                        <Grid item xs={4} >\r\n                          <TextFieldShow source={record.region} label={translate('users.region')} />\r\n                        </Grid>\r\n                        <Grid item xs={4} >\r\n                          <TextFieldShow source={record.country} label={translate('users.country')} />\r\n                        </Grid>\r\n                      </Grid>\r\n                      \r\n                      {record.user_type === 1 ? \r\n                      <Grid container spacing={2}>\r\n                        <Grid item xs={4} >\r\n                          <TextFieldShow source={record.lat} label={translate('users.lat')} />\r\n                        </Grid>\r\n                        <Grid item xs={4} >\r\n                          <TextFieldShow source={record.lng} label={translate('users.lng')} />\r\n                        </Grid>\r\n                        <Grid item xs={4} >\r\n                        </Grid>\r\n                      </Grid>\r\n                      : null }\r\n                        \r\n                    </> : null } />\r\n\r\n                  <FunctionField render={record => record.user_type === 0 ? ( \r\n                    <Grid container spacing={2}>\r\n                      <Grid item xs={4} >\r\n                        <TextFieldShow source={record.phone} label={translate('users.phone')} />\r\n                      </Grid>\r\n                      <Grid item xs={4} >\r\n                        <TextFieldShow source={record.mobile} label={translate('users.mobile')} />\r\n                      </Grid>                        \r\n                      <Grid item xs={4} >\r\n                        <TextFieldShow source={record.phone_emergency} label={translate('users.phone_emergency')} />\r\n                      </Grid>                        \r\n                    </Grid>\r\n                  ) : \r\n                    <Grid container spacing={2}>\r\n                      <Grid item xs={4} >\r\n                        <TextFieldShow source={record.phone} label={translate('users.phone')} />\r\n                      </Grid>\r\n                      <Grid item xs={4} >\r\n                        <TextFieldShow source={record.mobile} label={translate('users.mobile')} />\r\n                      </Grid>   \r\n                      <Grid item xs={4} >\r\n                        <TextFieldShow source={<RenderDate source={record.birthday} />} label={translate('users.foundation_date')} />\r\n                      </Grid>\r\n                    </Grid>\r\n                  } />\r\n\r\n                  <FunctionField render={record => record.user_type === 0 ? (\r\n                    <Grid container spacing={2}>\r\n                      <Grid item xs={4} >\r\n                        <TextFieldShow source={<RenderDate source={record.birthday} />} label={translate('users.birthday')} />\r\n                      </Grid>\r\n                      <Grid item xs={4} >\r\n                        <TextFieldShow source={<RenderAge source={record.birthday} />} label={translate('users.age')} />\r\n                      </Grid>    \r\n                      <Grid item xs={4} >\r\n                        <TextFieldShow source={<RenderGender source={record.gender} />} label={translate('users.gender')} />\r\n                      </Grid>\r\n                    </Grid> \r\n                  ) : '' } />\r\n                        \r\n                  <FunctionField render={record => record.user_type === 0 ? ( \r\n                    <Grid container spacing={2}>                        \r\n                      <Grid item xs={4} >\r\n                        <TextFieldShow source={record.job} label={translate('users.job')} />\r\n                      </Grid>\r\n                      <Grid item xs={4} >\r\n                        <TextFieldShow source={record.web} label={translate('users.web')} link={true} />\r\n                      </Grid>\r\n                      { props.resource=='users' ? \r\n                        <Grid item xs={4} >\r\n                          <TextFieldShow source={<RenderBoolean source={record.newsletter} />} label={translate('users.newsletter')} />                       \r\n                        </Grid> : null }\r\n                    </Grid>\r\n                  ) : (\r\n                    <Grid container spacing={2}>   \r\n                      <Grid item xs={4} >\r\n                        <TextFieldShow source={record.web} label={translate('users.web')} link={true} />\r\n                      </Grid>\r\n                      { props.resource=='users' ? \r\n                        <Grid item xs={4} >\r\n                          <TextFieldShow source={<RenderBoolean source={record.newsletter} />} label={translate('users.newsletter')} />                       \r\n                        </Grid> : null }                            \r\n                      <Grid item xs={4} >\r\n                        <TextFieldShow source={<RenderAge source={record.birthday} />} label={translate('users.foundation_age')} />\r\n                      </Grid> \r\n                    </Grid>\r\n                  ) } />\r\n                \r\n                    <Typography variant=\"h6\" className=\"grey8 titleUserShow\">\r\n                      {translate('users.email_secondary_list')}\r\n                    </Typography>\r\n                    <Divider className=\"\" />\r\n                    <UsersEmailsShow reference={users_emails_reference} />\r\n                    <br />\r\n                        \r\n                </Grid>\r\n\r\n                <Grid item xs={6} className=\"\">                                            \r\n\r\n                  { props.resource=='users' ? \r\n                    <FunctionField render={record => record.user_type === 0 ? ( <>\r\n                      <Typography variant=\"h6\" className=\"grey8 titleUserShow\">\r\n                        {translate('users.tab_family')}\r\n                      </Typography>\r\n                      <Divider className=\"\" />\r\n                            \r\n                      <UsersFamiliesShow />                            \r\n\r\n                      <br />\r\n\r\n                    < /> ) : '' } />\r\n                    : null }\r\n                                                \r\n                  <Typography variant=\"h6\" className=\"grey8 titleUserShow\">\r\n                    {translate('users.comment')}\r\n                  </Typography>\r\n                  <Divider className=\"\" />        \r\n                        \r\n                  <FunctionField render={record => <TextFieldShow source={record.comment} label=\"\" /> } />\r\n                    \r\n                </Grid>\r\n              </Grid>\r\n\r\n              <FunctionField render={record => subscriptionModule(modules.FEDERATION) && record.user_type === 1 && props.resource === 'users' ? <>\r\n                <br />\r\n                <Typography variant=\"h6\" className=\"grey8 titleUserShow\">\r\n                  {translate('users_federation.addresses')}\r\n                </Typography>\r\n                <Divider className=\"\" />\r\n                <UsersAddressesShow />  \r\n                <br />\r\n              < />\r\n                : null } />\r\n                    \r\n              { props.resource=='users' ? \r\n                <>\r\n                  <Typography variant=\"h6\" className=\"grey8 titleUserShow\">\r\n                    {translate('users.groups')}\r\n                  </Typography>\r\n                  <Divider className=\"\" />\r\n                  <UsersGroupsShow />                        \r\n                  <br />\r\n                </> : null }\r\n                \r\n              { subscriptionModule(modules.CUSTOM_FIELDS) ?\r\n              <CustomFieldsShow associations_id={localStorage.getItem('associations_id')} target={targets.USER} title={true} />\r\n              : null }\r\n              \r\n              { props.resource=='users' ? \r\n                <FunctionField render={record => record.user_type === 0 ? ( <>\r\n                  <Typography variant=\"h6\" className=\"grey8 titleUserShow\">\r\n                    { subscriptionModule(modules.FEDERATION) ? translate('users.tab_responsabilities_fac') : translate('users.tab_responsabilities')}\r\n                  </Typography>\r\n                  <Divider className=\"\" />\r\n\r\n                  <UsersGroupsResponsabilitiesShow />\r\n                        \r\n                  <br />\r\n                < /> ) : '' } />\r\n                : null }\r\n\r\n              <FunctionField render={record => record.user_type === 1 && subscriptionModule(modules.FEDERATION) && props.resource=='users' ? ( <>\r\n                <Typography variant=\"h6\" className=\"grey8 titleUserShow\">\r\n                  {translate('users_federation.tab_managers_1')}\r\n                </Typography>\r\n                <Divider className=\"\" />\r\n                <UsersContactsShow reference={users_contacts_reference} rowClick={users_contacts_row_click} rel={false} responsabilities={true} only_valid_contacts={1} />\r\n                <br />\r\n              < /> ) : '' } />\r\n                    \r\n              <FunctionField render={record => record.user_type === 1 && subscriptionModule(modules.FEDERATION) && props.resource=='users' ? ( <>\r\n                <Typography variant=\"h6\" className=\"grey8 titleUserShow\">\r\n                  {translate('users_federation.tab_managers_2')}\r\n                </Typography>\r\n                <Divider className=\"\" />\r\n                <UsersContactsShow reference={users_contacts_reference} rowClick={users_contacts_row_click} rel={false} responsabilities={true} only_valid_contacts={2} />\r\n                <br />\r\n              < /> ) : '' } />\r\n                    \r\n              <FunctionField render={record => record.user_type === 1 ? ( <>\r\n                <Typography variant=\"h6\" className=\"grey8 titleUserShow\">\r\n                  {translate('users.tab_contacts')}\r\n                </Typography>\r\n                <Divider className=\"\" />\r\n                <UsersContactsShow reference={users_contacts_reference} rowClick={users_contacts_row_click} rel={false} only_valid_contacts={0} />\r\n                <br />\r\n              < /> ) : '' } />\r\n                    \r\n              <FunctionField render={record => record.user_type === 0 && subscriptionModule(modules.FEDERATION) && props.resource=='users' ? ( <>\r\n                <Typography variant=\"h6\" className=\"grey8 titleUserShow\">\r\n                  {translate('users_federation.tab_managers_other')}\r\n                </Typography>\r\n                <Divider className=\"\" />\r\n                <UsersContactsShow reference={users_contacts_reference} rowClick={users_contacts_row_click} rel={true} responsabilities={true} only_valid_contacts={0} />\r\n                <br />\r\n              < /> ) : '' } />\r\n                    \r\n              <FunctionField render={record => record.user_type === 0 ? ( <>\r\n                <Typography variant=\"h6\" className=\"grey8 titleUserShow\">\r\n                  {translate('users.tab_contacts_rel')}\r\n                </Typography>\r\n                <Divider className=\"\" />\r\n                <UsersContactsShow reference={users_contacts_reference} rowClick={users_contacts_row_click} rel={true} only_valid_contacts={0} />\r\n                <br />\r\n              < /> ) : '' } />\r\n\r\n              { props.resource=='users' ? \r\n                <>\r\n                  <Typography variant=\"h6\" className=\"grey8 titleUserShow\">\r\n                    {translate('users.bank_data')}\r\n                  </Typography>\r\n                  <Divider className=\"\" />\r\n                  <FunctionField render={record => (<RenderBankData source={record} />)} />                     \r\n                  <br />\r\n                </>\r\n                : null }\r\n\r\n              { props.resource=='users' && subscriptionModule(modules.REMITTANCES) ? \r\n                <>\r\n                  <Typography variant=\"h6\" className=\"grey8 titleUserShow\">\r\n                    {translate('users.tab_quotes')}\r\n                  </Typography>\r\n                  <Divider className=\"\" />\r\n                  <UsersGroupsQuotesShowList /> \r\n                  <br />\r\n                </>\r\n                : null }\r\n\r\n              { subscriptionModule(modules.REMITTANCES) && props.resource=='users' ?\r\n                <>\r\n                  <Typography variant=\"h6\" className=\"grey8 titleUserShow\">\r\n                    {translate('remittances.last_receips')}\r\n                  </Typography>\r\n                  <Divider className=\"\" />\r\n\r\n                  <ResourceContextProvider value=\"remittances_users\" >\r\n                    <List \r\n                      syncWithLocation \r\n                      basePath=\"/remittances_users\" \r\n                      filter={{ users_id : props.id }}  \r\n                      title=\"\"\r\n                      bulkActionButtons={false}                                \r\n                      perPage={1000}\r\n                      pagination={false}\r\n                      actions={false}\r\n                      empty={<></>}\r\n                      className=\"users_remittances_list\"\r\n                    >                            \r\n                      <Datagrid\r\n                        expand={<RemittancesUsersItemsDetails edit={false} />} \r\n                        className=\"header_grey6\"\r\n                      >   \r\n                        <DateField source=\"date_creation\" label={translate('remittances.date_creation')} sortable={false} />\r\n                        <TextField source=\"name\" label={translate('remittances.name')} sortable={false}  />\r\n                        <NumberField source=\"id\" label={translate('remittances.ref')} sortable={false}  />\r\n                        <NumberField source=\"quantity\" label={translate('remittances.quantity')} sortable={false} locales=\"es-ES\" options={{ style: 'currency', currency: 'EUR' }} />\r\n                        <FunctionField label={translate('remittances.status')} render={RenderStatus} sortable={false}  />                                \r\n                      </Datagrid>\r\n\r\n                    </List> \r\n                  </ResourceContextProvider>                    \r\n                  <br />\r\n                </>\r\n                : null }\r\n\r\n                { subscriptionModule(modules.REAL_STATE) ?      \r\n                <>\r\n                  <Typography variant=\"h6\" className=\"grey8 titleUserShow\">\r\n                    {translate('real_state.activities_in_real_state')}\r\n                  </Typography>\r\n                  <Divider className=\"\" />\r\n                  <RealStateActivitiesList users_id={props.id} show={true} />\r\n                  <br />              \r\n                </>\r\n                : null }\r\n                \r\n                { subscriptionModule(modules.AGREEMENTS) ?   \r\n                <>\r\n                  <Typography variant=\"h6\" className=\"grey8 titleUserShow\">\r\n                    {translate('real_state.agreements')}\r\n                  </Typography>\r\n                  <Divider className=\"\" />\r\n                  <AgreementsList users_id={props.id} show={true} />\r\n                  <br />  \r\n                </>\r\n                : null }\r\n                \r\n              <Typography variant=\"h6\" className=\"grey8 titleUserShow\">\r\n                {translate('users.tab_docs')}\r\n              </Typography>\r\n              <Divider className=\"\" />\r\n              <DocsListShow target={targets.USER} items_id={props.id} resource_name={props.resource} />\r\n              <br />\r\n              \r\n              <Typography variant=\"h6\" className=\"grey8 titleUserShow\">\r\n                {translate('users.tab_images')}\r\n              </Typography>\r\n              <Divider className=\"\" />\r\n              <DocsListShow target={targets.USER_MORE_PHOTOS} items_id={props.id} resource_name={props.resource} />\r\n              <br />\r\n                                        \r\n              <FunctionField render={record => record.user_type === 1 ? (<>\r\n                    \r\n                { subscriptionModule(modules.FEDERATION) && props.resource=='users' ? \r\n                  <>  \r\n                    <br />\r\n                    <Typography variant=\"h6\" className=\"grey8 titleUserShow\">\r\n                      {translate('users_federation.tab')}\r\n                    </Typography>\r\n                    <Divider className=\"\" />\r\n                            \r\n                    <Grid container spacing={2}>\r\n                      <Grid item xs={3}>  \r\n                        <FunctionField render={record => <TextFieldShow source={record.name} label={translate('users_federation.name')} /> } />\r\n                      </Grid>\r\n                      <Grid item xs={3}>  \r\n                        <FunctionField render={record => <TextFieldShow source={record.acronym} label={translate('users_federation.acronym')} /> } />\r\n                      </Grid>\r\n                      <Grid item xs={3}>                    \r\n                        <FunctionField render={record => <TextFieldShow source={record.reg_name} label={translate('users_federation.reg_name')} /> } />\r\n                      </Grid>\r\n                      <Grid item xs={3}>                    \r\n                        <FunctionField render={record => <TextFieldShow source={record.reg_num} label={translate('users_federation.reg_num')} /> } />\r\n                      </Grid>                        \r\n                    </Grid>\r\n\r\n                    <Grid container spacing={2}>\r\n                      <Grid item xs={3}>  \r\n                        <FunctionField render={record => <TextFieldShow source={<RenderBoolean source={record.bcin} />} label={translate('users_federation.bcin')} /> } />                        \r\n                      </Grid>\r\n                      <Grid item xs={3}>                    \r\n                        <FunctionField render={record => <TextFieldShow source={<RenderBoolean source={record.bcil} />} label={translate('users_federation.bcil')} /> } />                        \r\n                      </Grid>\r\n                      <Grid item xs={6}>  \r\n                        <FunctionField render={record => <TextFieldShow source={record.tickets} label={translate('users_federation.tickets')} /> } />\r\n                      </Grid>\r\n                    </Grid>\r\n\r\n                    <Grid container spacing={2}>\r\n                      <Grid item xs={2}>  \r\n                        <FunctionField render={record => <TextFieldShow source={<RenderBoolean source={record.xtac} />} label={translate('users_federation.xtac')} /> } />                        \r\n                      </Grid>\r\n                      <Grid item xs={2}>  \r\n                        <FunctionField render={record => <TextFieldShow source={<RenderBoolean source={record.culture_interest} />} label={translate('users_federation.culture_interest')} /> } />                        \r\n                      </Grid>\r\n                      <Grid item xs={2}>  \r\n                        <FunctionField render={record => <TextFieldShow source={<RenderBoolean source={record.public_utility} />} label={translate('users_federation.public_utility')} /> } />                        \r\n                      </Grid>\r\n                      <Grid item xs={2}>  \r\n                        <FunctionField render={record => <TextFieldShow source={<RenderBoolean source={record.soft_cat} />} label={translate('users_federation.soft_cat')} /> } />                        \r\n                      </Grid>\r\n                      <Grid item xs={2}>  \r\n                        <FunctionField render={record => <TextFieldShow source={<RenderBoolean source={record.rcat} />} label={translate('users_federation.rcat')} /> } />                        \r\n                      </Grid>\r\n                    </Grid>\r\n\r\n                    <Grid container spacing={2}>\r\n                      <Grid item xs={3}>  \r\n                        <FunctionField render={record => <TextFieldShow source={<RenderDate source={record.last_managers_change} />} label={translate('users_federation.last_managers_change')} /> } />\r\n                      </Grid>\r\n                      <Grid item xs={3}>  \r\n                        <FunctionField render={record => <TextFieldShow source={<RenderDate source={record.next_managers_change} />} label={translate('users_federation.next_managers_change')} /> } />\r\n                      </Grid>\r\n                      <Grid item xs={6}>  \r\n                        <FunctionField render={record => <TextFieldShow source={<SelectField source=\"delegation\" choices={choicesDelegations} /> } label={translate('users_federation.delegation')} /> } />\r\n                      </Grid>\r\n                    </Grid>\r\n\r\n                    <Grid container spacing={2}>                        \r\n                      <Grid item xs={3}>  \r\n                        <FunctionField render={record => <TextFieldShow source={<RenderBoolean source={record.host} />} label={translate('users_federation.host')} /> } />                        \r\n                      </Grid>                                 \r\n                      <Grid item xs={9}>  \r\n                        <FunctionField render={record => <TextFieldShow source={record.host_entities} label={translate('users_federation.host_entities')} /> } />                      \r\n                      </Grid>\r\n                    </Grid>\r\n                    \r\n                    <Grid container spacing={2}>                        \r\n                      <Grid item xs={3}>  \r\n                        <FunctionField render={record => <TextFieldShow source={<RenderBoolean source={record.more_federations} />} label={translate('users_federation.more_federations')} /> } />                        \r\n                      </Grid>                                 \r\n                      <Grid item xs={9}>  \r\n                        <FunctionField render={record => <TextFieldShow source={record.federations} label={translate('users_federation.federations')} /> } />                      \r\n                      </Grid>\r\n                    </Grid>\r\n        \r\n                    <Grid container spacing={2}>\r\n                      <Grid item xs={3}>                    \r\n                        <FunctionField render={record => <TextFieldShow source={<RenderBoolean source={record.members_cards} />} label={translate('users_federation.members_cards')} /> } />                        \r\n                      </Grid>\r\n                      <Grid item xs={3}>                    \r\n                        <FunctionField render={record => <TextFieldShow source={<RenderBoolean source={record.logo_federation} />} label={translate('users_federation.logo_federation')} /> } />                        \r\n                      </Grid>\r\n                      <Grid item xs={3}>                    \r\n                        <FunctionField render={record => <TextFieldShow source={<RenderBoolean source={record.internal_regulation} />} label={translate('users_federation.internal_regulation')} /> } />                        \r\n                      </Grid>\r\n                    </Grid>\r\n                    \r\n                    { subscriptionModule(modules.CUSTOM_FIELDS) ?\r\n                        <CustomFieldsShow associations_id={localStorage.getItem('associations_id')} target={targets.USER_FEDERATION} title={false} prefix=\"federation_\"/>\r\n                    : null }\r\n                            \r\n                    <Typography variant=\"h6\" className=\"grey8 titleUserShow\">                        \r\n                      {translate('users_federation.building')}\r\n                    </Typography>\r\n                    <Divider fullWidth className=\"\" />\r\n\r\n                    <Grid container spacing={2}>\r\n                      <Grid item xs={3}>                    \r\n                        <FunctionField render={record => <TextFieldShow source={<RenderBoolean source={record.federation_plate} />} label={translate('users_federation.federation_plate')} /> } />                        \r\n                      </Grid>\r\n                      <Grid item xs={3}>                    \r\n                        <FunctionField render={record => <TextFieldShow source={<RenderBoolean source={record.license} />} label={translate('users_federation.license')} /> } />                        \r\n                      </Grid>                                \r\n                      <Grid item xs={3}>                    \r\n                        <FunctionField render={record => <TextFieldShow source={record.total_m2} label={translate('users_federation.total_m2')} /> } />   \r\n                      </Grid>\r\n                    </Grid>\r\n\r\n                    <Grid container spacing={2}>\r\n                      <Grid item xs={3}>                    \r\n                        <FunctionField render={record => <TextFieldShow source={<RenderBoolean source={record.ownership} />} label={translate('users_federation.ownership')} /> } />                        \r\n                      </Grid>\r\n                      <Grid item xs={3}>   \r\n                        <FunctionField render={record => <TextFieldShow source={<SelectField source=\"property\" choices={choicesProperty} /> } label={translate('users_federation.property')} /> } />\r\n                      </Grid>\r\n                      <Grid item xs={3}>   \r\n                        <FunctionField render={record => <TextFieldShow source={<SelectField source=\"rent\" choices={choicesCession} /> } label={translate('users_federation.rent')} /> } />\r\n                      </Grid>\r\n                      <Grid item xs={3}>\r\n                        <FunctionField render={record => <TextFieldShow source={<RenderBoolean source={record.expropied} />} label={translate('users_federation.expropied')} /> } />                        \r\n                      </Grid>\r\n                    </Grid>\r\n                    \r\n                    <Typography variant=\"h6\" className=\"grey8 titleUserShow\">                        \r\n                      {translate('users_federation.history_title')}\r\n                    </Typography>\r\n                    <Divider fullWidth className=\"\" />\r\n                    \r\n                    <Grid container spacing={2}>\r\n                      <Grid item xs={3}>                    \r\n                        <FunctionField render={record => <TextFieldShow source={<RenderBoolean source={record.actived} />} label={translate('users_federation.actived')} /> } />                        \r\n                      </Grid>\r\n                      <Grid item xs={3}>                    \r\n                        <FunctionField render={record => <TextFieldShow source={<RenderBoolean source={record.missing} />} label={translate('users_federation.missing')} /> } />                        \r\n                      </Grid>\r\n                      <Grid item xs={3}>                    \r\n                        <FunctionField render={record => <TextFieldShow source={<RenderDate source={record.missing_date} />} label={translate('users_federation.missing_date')} /> } />  \r\n                      </Grid>\r\n                      <Grid item xs={3}>                    \r\n                        <FunctionField render={record => <TextFieldShow source={<RenderBoolean source={record.robbed} />} label={translate('users_federation.robbed')} /> } />  \r\n                      </Grid>\r\n                      <Grid item xs={12}>                    \r\n                        <FunctionField render={record => <TextFieldShow source={<div dangerouslySetInnerHTML={{ __html: record.history }} />} label={translate('users_federation.history')} /> } />  \r\n                      </Grid>\r\n                      <Grid item xs={12}>                    \r\n                        <FunctionField render={record => <TextFieldShow source={<div dangerouslySetInnerHTML={{ __html: record.history_equipment }} />} label={translate('users_federation.history_equipment')} /> } />  \r\n                      </Grid>\r\n                      <Grid item xs={12}>                    \r\n                        <FunctionField render={record => <TextFieldShow source={<div dangerouslySetInnerHTML={{ __html: record.history_current }} />} label={translate('users_federation.history_current')} /> } />  \r\n                      </Grid>\r\n                    </Grid>\r\n                         \r\n                    <br />\r\n                    <Typography variant=\"h6\" className=\"grey8 titleUserShow\">\r\n                      {translate('users_demografy.title')}\r\n                    </Typography>\r\n                    <Divider className=\"\" /> \r\n                    <br />\r\n                    <UsersDemografyList users_id={props.id} show={true} />\r\n                    \r\n                    <br />\r\n                    <Typography variant=\"h6\" className=\"grey8 titleUserShow\">\r\n                      {translate('users.tab_economic_data')}\r\n                    </Typography>\r\n                    <Divider className=\"\" />           \r\n                    <UsersEconomicDataShow users_id={props.id} />\r\n                            \r\n                    <br />\r\n                    <Typography variant=\"h6\" className=\"grey8 titleUserShow\">\r\n                      {translate('users.tab_workers_0')}\r\n                    </Typography>\r\n                    <Divider className=\"\" />           \r\n                    <UsersWorkersShow users_id={props.id} type={0} />\r\n                            \r\n                    <br />\r\n                    <Typography variant=\"h6\" className=\"grey8 titleUserShow\">\r\n                      {translate('users.tab_workers_1')}\r\n                    </Typography>\r\n                    <Divider className=\"\" />           \r\n                    <UsersWorkersShow users_id={props.id} type={1} />\r\n                            \r\n                    <br />\r\n                    <Typography variant=\"h6\" className=\"grey8 titleUserShow\">\r\n                      {translate('users_activities.title')}\r\n                    </Typography>\r\n                    <Divider className=\"\" />           \r\n                    <UsersActivitiesShow users_id={props.id} />\r\n                    <br />\r\n                            \r\n                    <br />\r\n                    <Typography variant=\"h6\" className=\"grey8 titleUserShow\">\r\n                      {translate('users_trainings.title0')}\r\n                    </Typography>\r\n                    <Divider className=\"\" />           \r\n                    <UsersTrainingsShow users_id={props.id} type={0} />\r\n                    <br />\r\n                            \r\n                    <br />\r\n                    <Typography variant=\"h6\" className=\"grey8 titleUserShow\">\r\n                      {translate('users_trainings.title1')}\r\n                    </Typography>\r\n                    <Divider className=\"\" />           \r\n                    <UsersTrainingsShow users_id={props.id} type={1} />\r\n                    <br />\r\n                            \r\n                    <br />\r\n                    <Typography variant=\"h6\" className=\"grey8 titleUserShow\">\r\n                      {translate('users_shows.title')}\r\n                    </Typography>\r\n                    <Divider className=\"\" />           \r\n                    <UsersShowsShow users_id={props.id} />\r\n                    <br />\r\n                            \r\n                    <br />\r\n                    <Typography variant=\"h6\" className=\"grey8 titleUserShow\">\r\n                      {translate('users_sections.title')}\r\n                    </Typography>\r\n                    <Divider className=\"\" />           \r\n                    <UsersSectionsShow users_id={props.id} />\r\n                    <br />\r\n                    \r\n                    <br />\r\n                    <Typography variant=\"h6\" className=\"grey8 titleUserShow\">\r\n                      {translate('users_social_projects.title')}\r\n                    </Typography>\r\n                    <Divider className=\"\" />           \r\n                    <UsersSocialProjectsShow users_id={props.id} />\r\n                    <br />\r\n                    \r\n                    <Typography variant=\"h6\" className=\"grey8 titleUserShow\">                        \r\n                      {translate('users_federation.classrooms')}\r\n                    </Typography>\r\n                    <Divider fullWidth className=\"\" />\r\n                            \r\n                    <UsersClassroomsShow users_id={props.id} /> \r\n                            \r\n                    <Typography variant=\"h6\" className=\"grey8 titleUserShow\">                        \r\n                      {translate('users_federation.regulations')}\r\n                    </Typography>\r\n                    <Divider fullWidth className=\"\" />\r\n\r\n                    <Grid container spacing={2}>\r\n                      <Grid item xs={12}>\r\n                        <FunctionField render={record => <TextFieldShow source={<RenderBoolean source={record.lopd} />} label={translate('users_federation.lopd')} /> } />                        \r\n                      </Grid>\r\n                    </Grid>\r\n                    <Grid container spacing={2}>\r\n                      <Grid item xs={12}>                                                        \r\n                        <FunctionField render={record => <TextFieldShow source={record.regulations} label={translate('users_federation.regulations')} /> } />                        \r\n                      </Grid>\r\n                    </Grid>\r\n                    \r\n                    { subscriptionModule(modules.CUSTOM_FIELDS) ?\r\n                        <CustomFieldsShow associations_id={localStorage.getItem('associations_id')} target={targets.USER_FEDERATION_SPORTS} title={true} prefix=\"federation_sports_\"/>\r\n                    : null }\r\n                            \r\n                    <br />\r\n                    <Typography variant=\"h6\" className=\"grey8 titleUserShow\">\r\n                      {translate('users_federation.edited_books_title')}\r\n                    </Typography>\r\n                    <Divider className=\"\" />\r\n                    <br /><span className=\"grey6\">{translate('users_federation.edited_books_books')}</span>\r\n                    <UsersEditedBooksShow type={usersEditedBooksType.BOOKS} />   \r\n                    <br /><span className=\"grey6\">{translate('users_federation.edited_books_book_entity')}</span>\r\n                    <UsersEditedBooksShow type={usersEditedBooksType.BOOK_ENTITY} />   \r\n                    <br /><span className=\"grey6\">{translate('users_federation.edited_books_newsletter')}</span>\r\n                    <UsersEditedBooksShow type={usersEditedBooksType.NEWSLETTER} />   \r\n                    <br /><span className=\"grey6\">{translate('users_federation.edited_books_magazine')}</span>\r\n                    <UsersEditedBooksShow type={usersEditedBooksType.MAGAZINE} />  \r\n                            \r\n                    <br />\r\n                    <Grid container spacing={2}>\r\n                      <Grid item xs={3}> \r\n                        <FunctionField render={record => <TextFieldShow source={<RenderBoolean source={record.memory} />} label={translate('users_federation.edited_books_memory')} /> } /> \r\n                      </Grid>\r\n                    </Grid>\r\n                            \r\n                    <br />\r\n                    <Typography variant=\"h6\" className=\"grey8 titleUserShow\">\r\n                      {translate('users_federation.recognitions')}\r\n                    </Typography>\r\n                    <Divider className=\"\" />\r\n                    <UsersRecognitionsShow />  \r\n                            \r\n                    <br />\r\n                    <Typography variant=\"h6\" className=\"grey8 titleUserShow\">\r\n                      {translate('users_federation.schedules')}\r\n                    </Typography>\r\n                    <Divider className=\"\" />\r\n                    <UsersSchedulesShow />  \r\n                    \r\n                    <br />\r\n                    <Typography variant=\"h6\" className=\"grey8 titleUserShow\">\r\n                      {translate('users_federation.highlighted_dates')}\r\n                    </Typography>\r\n                    <Divider className=\"\" />\r\n                    <UsersEditedBooksShow type={usersEditedBooksType.HIGHLIGHTED_DATES} />   \r\n                    \r\n                    <br />\r\n                    <Typography variant=\"h6\" className=\"grey8 titleUserShow\">\r\n                      {translate('users_federation.notable_individuals')}\r\n                    </Typography>\r\n                    <Divider className=\"\" />\r\n                    <UsersEditedBooksShow type={usersEditedBooksType.NOTABLE_INDIVIDUALS} />   \r\n                    \r\n                    <br />\r\n                    <Typography variant=\"h6\" className=\"grey8 titleUserShow\">\r\n                      {translate('users_federation.links')}\r\n                    </Typography>\r\n                    <Divider className=\"\" />\r\n                    <UsersEditedBooksShow type={usersEditedBooksType.LINKS} /> \r\n                                                \r\n                    <br />\r\n                    <Typography variant=\"h6\" className=\"grey8 titleUserShow\">\r\n                      {translate('users_federation.census')}\r\n                    </Typography>\r\n                    <Divider className=\"divider-mb\" />\r\n                    <ReferenceArrayField label=\"\" reference=\"census\" source=\"census\" sort={{ field: 'priority', order: 'ASC' }}>\r\n                      <SingleFieldList linkType={false}>\r\n                        <ChipField source=\"name\" />\r\n                      </SingleFieldList>\r\n                    </ReferenceArrayField>  \r\n                                                        \r\n                    <br />\r\n                    <Typography variant=\"h6\" className=\"grey8 titleUserShow\">\r\n                      {translate('users_federation.books')}\r\n                    </Typography>\r\n                    <Divider className=\"divider-mb\" />\r\n                    <ReferenceArrayField label=\"\" reference=\"books\" source=\"books\" sort={{ field: 'priority', order: 'ASC' }}>\r\n                      <SingleFieldList linkType={false}>\r\n                        <ChipField source=\"name\" />\r\n                      </SingleFieldList>\r\n                    </ReferenceArrayField>     \r\n                            \r\n                  < />\r\n                  : null }\r\n              </>) : '' } />\r\n                    \r\n              <FunctionField render={record => true ? (<>\r\n                    \r\n                { subscriptionModule(modules.FEDERATION) && props.resource=='users' ? \r\n                  <>  \r\n                    <br />\r\n                    <Typography variant=\"h6\" className=\"grey8 titleUserShow\">\r\n                      {translate('users_federation.mailing_lists')}\r\n                    </Typography>\r\n                    <Divider className=\"divider-mb\" />\r\n                    <ReferenceArrayField label=\"\" reference=\"mailing_lists\" source=\"mailing_lists\" sort={{ field: 'priority', order: 'ASC' }} >\r\n                      <SingleFieldList linkType={false}>\r\n                        <ChipField source=\"name\" />\r\n                      </SingleFieldList>\r\n                    </ReferenceArrayField>   \r\n                  </>\r\n                  : null }                    \r\n                    \r\n              </>) : '' } />\r\n                    \r\n              <FunctionField render={record => record.user_type === 1 ? (<>                    \r\n                { subscriptionModule(modules.FEDERATION) && props.resource=='users' ? \r\n                  <>\r\n                    <br />\r\n                    <Typography variant=\"h6\" className=\"grey8 titleUserShow\">\r\n                      {translate('users_annuary.title')}\r\n                    </Typography>\r\n                    <Divider className=\"\" />\r\n                    <UsersAnnuaryShow />                        \r\n                    <br />\r\n                  </>\r\n                  : null }   \r\n              </>) : '' } />\r\n                \r\n                { props.resource === 'users' ?\r\n                <>\r\n                <Typography variant=\"h6\" className=\"grey8 titleUserShow\">\r\n                  {translate('settings.emails_logs')}\r\n                </Typography>\r\n                <Divider className=\"\" />\r\n\r\n                <EmailsHistoryList users_id={props.id} show={true}/>\r\n                </> : null }\r\n                \r\n                <br />\r\n                                   \r\n            </Grid>\r\n          </Grid>\r\n\r\n            \r\n            \r\n\r\n        </SimpleShowLayout>\r\n      </Show>\r\n  );\r\n};\r\n\r\n/*\r\n<br />\r\n<Typography variant=\"h6\" className=\"grey8 titleUserShow\">\r\n{translate('users_federation.activities_users')}\r\n</Typography>\r\n<Divider className=\"\" />\r\n<br />\r\n<ReferenceArrayField label=\"\" reference=\"activities_users\" source=\"activities_users\">\r\n    <SingleFieldList linkType={false}>\r\n        <ChipField source=\"name\" />\r\n    </SingleFieldList>\r\n</ReferenceArrayField>   \r\n*/\r\n\r\nconst RenderBankData = function (props) {\r\n    \r\n  const translate = useTranslate();  \r\n\r\n  if (props.source.payer && props.source.payer > 0)\r\n  {\r\n    return (\r\n      <>\r\n        <br />\r\n        <span className=\"grey6\">{translate('users.bank_payer')}&nbsp;&nbsp;&nbsp;</span> \r\n        <ReferenceField label=\"\" source=\"payer\" reference=\"users\" link=\"show\" > \r\n          <ChipFieldUserName className=\"users_show_bank_payer\" />                               \r\n        </ReferenceField>\r\n      < />\r\n    );        \r\n  }\r\n  else if(props.source.payment_cash && props.source.payment_cash==true)\r\n  {\r\n    return (<TextFieldShow source={<RenderBoolean source={props.source.payment_cash} />} label={translate('users.payment_cash')} />);          \r\n  }\r\n  else\r\n  {\r\n    return(\r\n      <Grid container spacing={2}>\r\n        <Grid item xs={6} >\r\n          <TextFieldShow source={props.source.iban} label={translate('users.bank_iban')} /> \r\n        </Grid>\r\n        <Grid item xs={6} >\r\n          <TextFieldShow source={props.source.swift} label={translate('users.bank_swift')} /> \r\n        </Grid>\r\n      </Grid>\r\n    );\r\n  }\r\n\r\n};\r\n\r\n\r\nconst UsersShowActions = ({ basePath, data, resource_name, ...props }) => {\r\n  const translate = useTranslate();  \r\n    \r\n  const dataProvider = useDataProvider();\r\n  const refresh = useRefresh();\r\n    \r\n  const [info, setInfo] = useState();\r\n  const [loading, setLoading] = useState(true);\r\n  const [error, setError] = useState();\r\n  const notify = useNotify();\r\n        \r\n  return (\r\n    <>\r\n      { resource_name === 'users' ? \r\n        <TopToolbar> \r\n          { data && data.status && data.status === 1 ? \r\n            <ValidateUserButton users_id={data.id} /> : null }     \r\n          <EditButton basePath={basePath} record={data} />        \r\n        </TopToolbar>\r\n        : null }\r\n    </>\r\n    \r\n  );\r\n};\r\n\r\nconst Aside = () => (\r\n  <div style={{ width: 300, margin: '1em' }}>\r\n    <Typography variant=\"h6\">Post details</Typography>\r\n    <Typography variant=\"body2\">\r\n            Posts will only be published once an editor approves them\r\n    </Typography>\r\n  </div>\r\n);\r\n\r\n\r\nexport const ValidateUserButton = ({ users_id, ...props }) => {\r\n\r\n  const [showDialog, setShowDialog] = useState(false);\r\n  const [create, { loading }] = useCreate('users/validate');\r\n  const notify = useNotify();\r\n  const refresh = useRefresh();    \r\n  const translate = useTranslate();  \r\n  const dataProvider = useDataProvider();\r\n    \r\n    \r\n  const today = new Date().toISOString().slice(0, 10);\r\n\r\n\r\n  const handleClick = () => {\r\n        \r\n    dataProvider.getOne('users/pre-validate', { id: users_id })\r\n      .then(( { data } ) => {   \r\n        setShowDialog(true);\r\n      })\r\n      .catch(error => {   \r\n        notify(error.message, 'error');    \r\n      });\r\n        \r\n  };\r\n\r\n  const handleCloseClick = () => {\r\n    setShowDialog(false);\r\n  };\r\n\r\n  const handleSubmit = async values => {\r\n    create(            \r\n      { payload: { data: values } },\r\n      {\r\n        onSuccess: ({ data }) => {\r\n          setShowDialog(false);\r\n          refresh();\r\n        },\r\n        onFailure: ( error ) => {\r\n          notify( error.message , 'error');\r\n        }\r\n      }\r\n    );\r\n  };\r\n    \r\n  return (\r\n    <>            \r\n      <Button onClick={handleClick} label={translate('users.validate')} className=\"\">\r\n        <DoneIcon />\r\n      </Button>\r\n\r\n      <Dialog\r\n        fullWidth\r\n        open={showDialog}\r\n        onClose={handleCloseClick}\r\n        aria-label={translate('users.validate_title')}\r\n      >\r\n        <DialogTitle>{translate('users.validate_title')}</DialogTitle>\r\n\r\n        <FormWithRedirect\r\n          save={handleSubmit}\r\n          initialValues={{ users_id : users_id, groups_id: localStorage.getItem('members_group_id'), date_join: today, validate_send_email: true  }}\r\n          render={({\r\n            handleSubmitWithRedirect,\r\n            pristine,\r\n            saving\r\n          }) => (\r\n            <>\r\n              <DialogContent>\r\n                <Grid container spacing={2}>\r\n                  <Grid item xs={6}>     \r\n                    <br />\r\n                    <DateInput fullWidth source=\"date_join\" label={translate('users_groups.date_join')} />\r\n                  </Grid> \r\n                  <Grid item xs={6}>     \r\n                    <NumMemberInput />\r\n                  </Grid> \r\n                  <Grid item xs={12}>     \r\n                    <TextInput fullWidth multiline source=\"comment\" label={translate('common.comment')} validate={[validateMaxLength(255,translate('common.validation.maxLength'))]} />   \r\n                  </Grid> \r\n                  <Grid item xs={12}>     \r\n                    <BooleanInput fullWidth source=\"validate_send_email\" label={translate('users.validate_send_email')} />\r\n                  </Grid> \r\n                </Grid>\r\n              </DialogContent>\r\n              <DialogActions>\r\n                <Button label=\"ra.action.cancel\" onClick={handleCloseClick} disabled={loading} >\r\n                  <IconCancel />\r\n                </Button>\r\n                <SaveButton\r\n                  handleSubmitWithRedirect={\r\n                    handleSubmitWithRedirect\r\n                  }\r\n                  pristine={pristine}\r\n                  saving={saving}\r\n                  disabled={loading}\r\n                />\r\n              </DialogActions>\r\n            </>\r\n          )}\r\n        />\r\n      </Dialog>\r\n    </>\r\n  );\r\n};","import React from 'react';\r\nimport { makeStyles } from '@material-ui/core/styles';\r\n\r\nimport {\r\n  Search,\r\n  SearchResultsPanel,\r\n  SearchResultItem\r\n} from '@react-admin/ra-search';\r\n\r\n\r\n\r\nimport ListItem from '@material-ui/core/ListItem';\r\nimport ListItemText from '@material-ui/core/ListItemText';\r\nimport ListItemAvatar from '@material-ui/core/ListItemAvatar';\r\n\r\n\r\nimport { UserAvatarIcon, GroupsAvatarIcon, EventsAvatarIcon,RealStateAvatarIcon,AgreementsAvatarIcon,InsurancesAvatarIcon } from './../components/User';\r\n\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n  root: {\r\n    width: '100%',\r\n    maxWidth: '36ch',\r\n    backgroundColor: theme.palette.background.paper,\r\n  },\r\n  inline: {\r\n    display: 'inline',\r\n  },\r\n}));\r\n\r\nexport const MySearch = ({targets}) => {\r\n\r\n  const classes = useStyles();\r\n\r\n  return ( \r\n    <Search options={{historySize:5, targets: targets }} >\r\n      <SearchResultsPanel >\r\n        <SearchResultItem\r\n          label={(record) => (\r\n            <ListItem>\r\n              <ListItemAvatar>\r\n                { record.type === 'users' ? \r\n                  <UserAvatarIcon record={record} />\r\n                  : record.type === 'groups' ?\r\n                    <GroupsAvatarIcon />\r\n                    : record.type === 'events' ?\r\n                      <EventsAvatarIcon />\r\n                      : record.type === 'real_state' ?\r\n                        <RealStateAvatarIcon />\r\n                        : record.type === 'agreements' ?\r\n                          <AgreementsAvatarIcon />\r\n                          : record.type === 'insurances' ?\r\n                            <InsurancesAvatarIcon />\r\n                            : null\r\n                }\r\n              </ListItemAvatar>\r\n              <ListItemText\r\n                primary={record.primary_text}\r\n                secondary={record.secondary_text}\r\n              />          \r\n            </ListItem>\r\n          )}\r\n        />\r\n      </SearchResultsPanel>\r\n    </Search>\r\n  );\r\n\r\n};\r\n\r\nexport const MySearchOld = ({targets}) => {\r\n\r\n  const classes = useStyles();\r\n\r\n  return ( \r\n    <Search options={{historySize:5, targets: targets }} >\r\n      <SearchResultsPanel >\r\n        <SearchResultItem\r\n          label={(record) => (\r\n            <ListItem>\r\n              <ListItemAvatar>\r\n                <UserAvatarIcon record={record} />\r\n              </ListItemAvatar>\r\n              <ListItemText\r\n                primary={record.content.label}\r\n                secondary={record.email}\r\n              />          \r\n            </ListItem>\r\n          )}\r\n        />\r\n      </SearchResultsPanel>\r\n    </Search>\r\n  );\r\n\r\n};\r\n\r\n\r\n","// in src/posts.js\r\nimport * as React from \"react\";\r\nimport { cloneElement , Confirm , useForm, useNotify, doStuff,  forwardRef, createRef } from 'react';\r\n\r\nimport {\r\n    List, SimpleList, \r\n    Datagrid,\r\n    TextField,\r\n    ReferenceField,\r\n    EditButton,\r\n    DeleteButton,\r\n    Edit,\r\n    Create,    \r\n    ReferenceInput,\r\n    SelectInput,\r\n    TextInput,\r\n    Button ,\r\n    CreateButton ,\r\n    ExportButton,\r\n    TopToolbar,\r\n    Toolbar,\r\n    Pagination,\r\n    FormTab,\r\n    TabbedForm,\r\n    ReferenceManyField,\r\n    Title,\r\n    FormDataConsumer,\r\n    useListContext, SaveButton,\r\n    Filter, required, ChipField,ReferenceArrayField, SingleFieldList, ArrayField, DateField, DateInput, ResourceContextProvider, NumberInput, Show, SimpleShowLayout, TabbedShowLayout, Tab,\r\n    linkToRecord,useRefresh,useRedirect, ShowController, ShowView, BooleanInput\r\n} from 'react-admin';\r\n\r\nimport Typography from '@mui/material/Typography';\r\n\r\nimport MenuItem from '@mui/material/MenuItem';\r\n\r\nimport { ListProps } from 'react-admin';\r\n\r\nimport { TreeWithDetails, NodeActions,  DeleteMenuItem , DeleteMenuItemWithConfirmation, SimpleForm} from '@react-admin/ra-tree';\r\n\r\nimport Grid from '@mui/material/Grid';\r\n\r\nimport { AccordionForm, AccordionSection ,AccordionFormPanel } from \"@react-admin/ra-form-layout\";\r\n\r\nimport { DualListInput } from '@react-admin/ra-relationships';\r\nimport { EditableDatagrid, RowForm } from '@react-admin/ra-editable-datagrid';\r\n\r\nimport { Card, CardContent, CardHeader,useMediaQuery } from '@material-ui/core';\r\nimport IconEvent from '@material-ui/icons/Event';\r\nimport ChevronLeft from '@material-ui/icons/ChevronLeft';\r\nimport ChevronRight from '@material-ui/icons/ChevronRight';\r\nimport SaveIcon from '@material-ui/icons/GetApp';\r\nimport Chip from '@material-ui/core/Chip';\r\nimport { makeStyles } from '@material-ui/core/styles';\r\n\r\nimport { useFormState } from 'react-final-form';\r\nimport { useRecordContext } from 'ra-core';\r\n\r\nimport { UserAvatarIcon, UserFullNameTxt } from '../components/User';\r\n\r\nimport { GroupsQuotesList,GroupsQuotesEdit,GroupsQuotesCreate  } from './groups_quotes';\r\nimport { GroupsCardsList,DownloadDemoCard, GroupsCardsSendButton } from './groups_cards';\r\n\r\nimport { DocsList } from './docs';\r\n\r\nimport { subscriptionModule  } from '../common/utils';\r\nimport { i18nProvider, useTranslate  } from '../common/language';\r\nimport { useStyles  } from '../common/styles';\r\n\r\nimport { UsersList  } from './../resources/users';\r\nimport { UsersGroupsResponsabilitiesList } from './../resources/users_groups_responsabilities';\r\n\r\nimport { NoPagination } from './../components/NoPagination';\r\n\r\nimport { SocialNetsList  } from './social_nets';\r\n\r\nimport { deepOrange, deepPurple } from '@mui/material/colors';\r\n\r\nimport { useLocation, Switch, Route } from 'react-router-dom';\r\n\r\nimport { alpha } from '@material-ui/core/styles';\r\n\r\nimport { FunctionField } from 'react-admin';\r\n\r\n\r\nimport { targets , modules, apiUrl, apiOrigin, apiDefaultLanguage } from './../common/constants';\r\n\r\n\r\nimport { MySearch  } from '../components/MySearch';\r\n\r\n\r\n\r\nimport { validateMaxLength, validateInteger, validateDouble  } from './../components/Validator';\r\n\r\n\r\nexport const GroupsList = (props: ListProps) => {\r\n    const translate = useTranslate();    \r\n    const isSmall = useMediaQuery(theme => theme.breakpoints.down('sm'));\r\n    \r\n    const onSelect = () => {\r\n      \r\n    };\r\n\r\n    return (\r\n        \r\n        <div>\r\n        {props.resource === \"groups-tree-contacts\" ? <ContactsHeader /> : null }\r\n        <TreeWithDetails                \r\n                title={translate('groups.title')}\r\n                create={GroupsCreate}\r\n                edit={GroupsEdit}\r\n                nodeActions={props.resource === \"groups-tree-contacts\" ? <span> </span> : <MyActions {...props} />}\r\n                titleField=\"name\"\r\n                allowMultipleRoots\r\n                onSelect={onSelect}\r\n                draggable \r\n                linkTo=\"edit\"\r\n                {...props}\r\n            />\r\n        </div>\r\n        \r\n    );\r\n}\r\n\r\nconst MyActions = (props) => (\r\n  <NodeActions {...props} >\r\n    <DeleteMenuItemWithConfirmation />\r\n  </NodeActions>\r\n);\r\n\r\nconst ContactsHeader = props => {\r\n    const translate = useTranslate();        \r\n    return (\r\n            <>\r\n            \r\n            <Card fullWidth className=\"contacts_fac_header\">\r\n                <CardHeader title={translate('contacts.title')} />\r\n                <CardContent>\r\n                    <Grid container spacing={12}>\r\n                        <Grid item xs={9} align=\"justify\">\r\n                            <div className=\"\" dangerouslySetInnerHTML={{ __html: translate('contacts.description') }} /> \r\n                        </Grid>\r\n                        <Grid item xs={3} align=\"right\">\r\n                            <MySearch targets={[\"contacts_fac\"]} />                  \r\n                        </Grid>\r\n                    </Grid>\r\n                </CardContent>                \r\n            </Card>            \r\n            </>\r\n    );\r\n}\r\n\r\nexport const GroupsEdit = props => {\r\n\r\n    const translate = useTranslate();        \r\n    const classes = useStyles();\r\n    const record = useRecordContext();\r\n    const today = new Date().toISOString().slice(0, 10);\r\n    \r\n    \r\n    let redirect = \"/\" + props.resource + \"/\" + props.id;\r\n    let redirectCard = \"/\" + props.resource + \"/\" + props.id + '/card';\r\n    let resource = props.resource;\r\n            \r\n    return (\r\n    \r\n    <ShowController {...props}>\r\n        {controllerProps => \r\n    \r\n    <Show {...props} {...controllerProps} >\r\n    {controllerProps.record && \r\n    <>\r\n    \r\n    <Typography variant=\"h5\" className=\"groups_title grey8\"><TextField source=\"name\" textAlign=\"center\"/></Typography>      \r\n                \r\n    <TabbedShowLayout>\r\n           \r\n            <Tab\r\n                label={translate('groups.tab_users')}\r\n                contentClassName={classes.tab}\r\n                fullWidth\r\n                path=\"\"\r\n            >                 \r\n                \r\n                <UsersList group={controllerProps.record.id} group_public_id={controllerProps.record.public_id} resource_name={resource} group_name={controllerProps.record.name} />\r\n\r\n                <br />\r\n                \r\n            </Tab>\r\n            \r\n            { resource=='groups-tree' && controllerProps.record.has_more_config && !subscriptionModule(modules.RECERCAT) &&\r\n            <Tab\r\n                label={translate('groups.tab_responsabilities')}\r\n                contentClassName={classes.tab}\r\n                path=\"responsabilities\"     \r\n            >   \r\n                <UsersGroupsResponsabilitiesList groups_id={controllerProps.record.id} />\r\n                <br/>\r\n                \r\n            </Tab>  \r\n            }\r\n\r\n            { resource=='groups-tree' && controllerProps.record.has_more_config && subscriptionModule(modules.REMITTANCES) && \r\n            <Tab\r\n                label={translate('groups.tab_quotes')}\r\n                contentClassName={classes.tab}\r\n                path=\"quotes\"\r\n            >        \r\n                <GroupsQuotesList group_id={controllerProps.record.id} />\r\n                <br /><br/>\r\n            </Tab>\r\n            }\r\n            \r\n            { resource=='groups-tree' && controllerProps.record.has_more_config && !subscriptionModule(modules.RECERCAT) &&\r\n            <Tab\r\n                label={translate('groups.tab_docs')}\r\n                contentClassName={classes.tab}\r\n                path=\"docs\"\r\n            >             \r\n                \r\n                <DocsList target={targets.GROUP} items_id={controllerProps.record.id} />\r\n                \r\n                <br />\r\n                \r\n            </Tab>\r\n            }\r\n          \r\n            { resource=='groups-tree' && !subscriptionModule(modules.RECERCAT) && controllerProps.record.public_id != 'SOCIS_PENDING' && \r\n            <Tab\r\n                label={translate('groups.group')}\r\n                contentClassName={classes.tab}\r\n                path=\"edit\"\r\n            >           \r\n                <Edit title=\"\" id={controllerProps.record.id} mutationMode=\"pessimistic\"  >\r\n                    <SimpleForm {...props} toolbar={<CustomToolbar />} redirect={redirect} defaultValues={{ card_digital: true , card_digital_wallets: true}}>\r\n                        \r\n                        <Grid container spacing={2}>\r\n                            <Grid item xs={12}>          \r\n                                { controllerProps.record.is_editable ? \r\n                                <TextInput fullWidth source=\"name\" label={translate('groups.name')} validate={[required(),validateMaxLength(255,translate('common.validation.maxLength'))]} />                                          \r\n                                :\r\n                                <TextInput fullWidth source=\"name\" label={translate('groups.name')} validate={[required(),validateMaxLength(255,translate('common.validation.maxLength'))]} disabled />                                          \r\n                                }    \r\n                            </Grid>\r\n                        </Grid>  \r\n                        \r\n                        <AccordionSection className=\"accordion\" label={translate('groups.card')} fullWidth defaultExpanded={true}>\r\n                        { subscriptionModule(modules.DIGITAL_CARDS) ?\r\n                        <Grid container spacing={2}>\r\n                            <Grid item xs={12}>          \r\n                                <BooleanInput fullWidth source=\"card_digital\" label={translate('groups.card_digital')} />  \r\n                            </Grid>\r\n                        </Grid>    \r\n                        : null }\r\n                        \r\n                        { subscriptionModule(modules.WALLETS) ?\r\n                        <Grid container spacing={2}>\r\n                            <Grid item xs={12}>          \r\n                                <BooleanInput fullWidth source=\"card_digital_wallets\" label={translate('groups.card_digital_wallets')} />  \r\n                            </Grid>\r\n                        </Grid>    \r\n                        : null }\r\n                        </AccordionSection>\r\n                                                                        \r\n                        { controllerProps.record.has_more_config ?\r\n                        <AccordionSection className=\"accordion\" label={translate('users.tab_social_nets')} fullWidth defaultExpanded={true}>\r\n                            <SocialNetsList target={targets.GROUP} items_id={controllerProps.record.id} />\r\n                            <br />\r\n                        </AccordionSection>\r\n                        : null }\r\n                    </SimpleForm>\r\n                </Edit>\r\n                <br />\r\n            </Tab>\r\n            }\r\n            \r\n            { resource=='groups-tree' && (subscriptionModule(modules.DIGITAL_CARDS) && controllerProps.record.card_digital || subscriptionModule(modules.WALLETS) && controllerProps.record.card_digital_wallets ) && \r\n            <Tab\r\n                label={translate('groups.card')}\r\n                contentClassName={classes.tab}\r\n                path=\"card\"\r\n            >   \r\n                <GroupsCardsList groups_id={controllerProps.record.id} card_digital={controllerProps.record.card_digital} card_digital_wallets={controllerProps.record.card_digital_wallets} />\r\n            </Tab>\r\n            }\r\n\r\n    </TabbedShowLayout >\r\n    \r\n    </>\r\n    }\r\n    </Show>\r\n    }\r\n    </ShowController>\r\n\r\n);\r\n};\r\n\r\n\r\n/*\r\n{controllerProps.record && controllerProps.record.has_more_config && alert(controllerProps.record.has_more_config) && \r\n{controllerProps.record && controllerProps.record.is_editable && \r\n*/\r\n\r\nconst customToolbarStyles = makeStyles({\r\n    toolbar: {\r\n        display: 'flex',\r\n        justifyContent: 'space-between',\r\n    },\r\n});\r\n\r\nconst CustomToolbar = props => (\r\n    <Toolbar {...props} classes={customToolbarStyles()}>\r\n        <SaveButton />\r\n        <DeleteButton undoable={false} />\r\n    </Toolbar>\r\n);\r\n\r\nexport const GroupsCreate = props => {    \r\n    const translate = useTranslate();   \r\n    const redirect = useRedirect();\r\n    \r\n    const refresh = useRefresh();\r\n    const onSuccess = ({ data }) => {\r\n        refresh();\r\n        redirect('list', '/groups-tree');\r\n    };\r\n\r\n    return (\r\n    <Create {...props} onSuccess={onSuccess}>\r\n        <SimpleForm \r\n            redirect=\"edit\" \r\n            initialValues={{ associations_id: localStorage.getItem('associations_id') }}\r\n        >\r\n            \r\n            <TextInput fullWidth source=\"name\" label={translate('groups.name')} validate={[required(),validateMaxLength(255,translate('common.validation.maxLength'))]} />\r\n\r\n        </SimpleForm>\r\n    </Create>\r\n);\r\n};\r\n\r\n/*const GroupsFilter = (props) => {\r\n    const translate = useTranslate(); \r\n    return (\r\n    <Filter {...props}>\r\n        <TextInput label={translate('common.search')} source=\"q\" alwaysOn   validate={[validateMaxLength(100,translate('common.validation.maxLength'))]} />        \r\n    </Filter>\r\n);\r\n};*/\r\n\r\n\r\n/*const ListActions = (props) => (\r\n    <TopToolbar>\r\n        {cloneElement(props.filters, { context: 'button' })}\r\n        <CreateButton/>\r\n        <ExportButton />        \r\n    </TopToolbar>\r\n);*/\r\n\r\n/*\r\nconst ElementTitle = ({ record }) => {\r\n    const translate = useTranslate(); \r\n    return <span>{translate('groups.group')} {record ? `\"${record.name}\"` : ''}</span>;\r\n};*/\r\n\r\n\r\n\r\n\r\n\r\n","// in src/posts.js\r\nimport * as React from 'react';\r\n\r\nimport { useState, useEffect } from 'react';\r\n\r\nimport {\r\n  BooleanInput,\r\n  List,\r\n  Datagrid,\r\n  TextField,\r\n  EditButton,\r\n  DeleteButton,\r\n  Edit,\r\n  Create,\r\n  SimpleForm,\r\n  TextInput,\r\n  BooleanField ,\r\n  ReferenceManyField,\r\n  TabbedForm,\r\n  FormTab,NumberInput, RichTextField , Toolbar, SaveButton,\r\n  useDataProvider, required\r\n\r\n} from 'react-admin';\r\n\r\nimport { EditableDatagrid, RowForm } from '@react-admin/ra-editable-datagrid';\r\nimport RichTextInput from 'ra-input-rich-text';\r\n\r\nimport Typography from '@mui/material/Typography';\r\nimport { useMediaQuery } from '@material-ui/core';\r\nimport { makeStyles } from '@material-ui/core/styles';\r\n\r\nimport { useTranslate  } from '../common/language';\r\n\r\nimport { useStyles  } from '../common/styles';\r\nimport { DocsList  } from './docs';\r\n\r\nimport Grid from '@mui/material/Grid';\r\n\r\n\r\n\r\n\r\nimport { targets } from './../common/constants';\r\n\r\nimport { validateMaxLength, validateInteger  } from './../components/Validator';\r\n\r\n\r\nexport const ModulesList = (props) => {\r\n  const translate = useTranslate(); \r\n  const isSmall = useMediaQuery(theme => theme.breakpoints.down('sm'));\r\n  return (\r\n\r\n    <List {...props}\r\n      bulkActionButtons={false}\r\n    >\r\n      <Datagrid>                   \r\n        <TextField source=\"name\" label={translate('common.name')} sortable={false}/>\r\n        <BooleanField source=\"actived\" label={translate('common.actived')} sortable={false}/>\r\n        <BooleanField source=\"visible\" label={translate('common.visible')} sortable={false}/>\r\n        <TextField source=\"priority\" label={translate('common.priority')} sortable={false}/>\r\n        <EditButton />\r\n      </Datagrid>\r\n    </List>\r\n  );\r\n};\r\n\r\nconst ElementTitle = ({ record }) => {\r\n  const translate = useTranslate(); \r\n  return <span>{translate('common.edit')} {record ? `\"${record.name}\"` : ''}</span>;\r\n};\r\n\r\nconst customToolbarStyles = makeStyles({\r\n  toolbar: {\r\n    display: 'flex',\r\n    justifyContent: 'space-between',\r\n  },\r\n});\r\n\r\nconst CustomToolbar = props => (\r\n  <Toolbar {...props} classes={customToolbarStyles()}>\r\n    <SaveButton />\r\n    <DeleteButton undoable={false} />\r\n  </Toolbar>\r\n);\r\n\r\n\r\n\r\n\r\nexport const ModulesEdit  = ({ id, ...props }) => {\r\n\r\n  const translate = useTranslate(); \r\n  const classes = useStyles();\r\n\r\n  const dataProvider = useDataProvider();\r\n  const [info, setInfo] = useState();\r\n    \r\n  useEffect(() => {\r\n        \r\n    dataProvider.getOne('modules', { id: id })\r\n      .then(({ data }) => {     \r\n        setInfo(data);\r\n      })\r\n      .catch(error => {           \r\n      });\r\n       \r\n  }, []);\r\n\r\n  return (\r\n\r\n    <>\r\n      <br />\r\n      <Typography variant=\"h5\" className=\"grey8\" >\r\n        {info ? info.name : null }              \r\n      </Typography>\r\n\r\n      <Edit \r\n        title=\"\" \r\n        {...props}  \r\n        id={id}\r\n        mutationMode=\"pessimistic\" > \r\n\r\n        <TabbedForm>\r\n\r\n          <FormTab\r\n            label={translate('subscriptions.module')}\r\n            contentClassName={classes.tab}\r\n            fullWidth\r\n            path=\"\"\r\n          >     \r\n            <br />  \r\n            <Grid container spacing={2}>\r\n              <Grid item xs={3}>\r\n                <BooleanInput fullWidth source=\"actived\" label={translate('common.actived')}/>\r\n              </Grid>\r\n              <Grid item xs={3}>\r\n                <BooleanInput fullWidth source=\"visible\" label={translate('common.visible')}/>\r\n              </Grid>\r\n            </Grid>\r\n            <Grid container spacing={2}>\r\n              <Grid item xs={7}>  \r\n                <TextInput fullWidth source=\"name\" label={translate('common.name')} validate={[required(),validateMaxLength(255,translate('common.validation.maxLength'))]} />                     \r\n              </Grid>\r\n              <Grid item xs={3}>  \r\n                <TextInput fullWidth source=\"public_id\" label={translate('common.name_internal')} validate={[required(),validateMaxLength(30,translate('common.validation.maxLength'))]} />\r\n              </Grid>\r\n              <Grid item xs={2}>  \r\n                <NumberInput source=\"priority\" step={1} label={translate('common.priority')} parse={value => value ? value : 0 } validate={[validateInteger(translate('common.validation.number'))]}  />\r\n              </Grid>\r\n            </Grid>\r\n                                    \r\n            <RichTextInput source=\"description\" label={translate('common.description')} />\r\n          </FormTab>\r\n\r\n          <FormTab\r\n            label={translate('subscriptions.options')}\r\n            contentClassName={classes.tab}\r\n            fullWidth\r\n            path=\"options\"\r\n          >\r\n\r\n            <ReferenceManyField {...props}\r\n              fullWidth\r\n              label=\"\"\r\n              reference=\"modules_options\"\r\n              target=\"modules_id\"\r\n              hasCreate\r\n              perPage={1000}\r\n              sort={{ field: 'priority', order: 'ASC' }}\r\n            >\r\n                \r\n              <EditableDatagrid                                        \r\n                createForm={<OptionForm initialValues={{ modules_id: id }} />}\r\n                editForm={<OptionForm />}\r\n              >\r\n                <TextField source=\"public_id\" label={translate('common.name_internal')} sortable={false} />\r\n                <TextField source=\"name\" label={translate('common.name')} sortable={false} />\r\n                <RichTextField multiline source=\"description\" label={translate('common.description')} sortable={false} />\r\n                <TextField source=\"priority\" label={translate('common.priority')} sortable={false} />\r\n                     \r\n              </EditableDatagrid>\r\n                    \r\n            </ReferenceManyField>   \r\n\r\n          </FormTab>\r\n\r\n          <FormTab\r\n            label={translate('subscriptions.docs')}\r\n            contentClassName={classes.tab}\r\n            fullWidth\r\n            path=\"docs\"\r\n          >  \r\n            <DocsList target={targets.MODULE} items_id={id} />\r\n            <br />\r\n          </FormTab>\r\n\r\n        </TabbedForm>\r\n\r\n\r\n\r\n      </Edit>\r\n\r\n    </>\r\n  );\r\n};\r\n\r\nconst OptionForm= props => {\r\n  const translate = useTranslate(); \r\n  return (\r\n    <RowForm {...props}>\r\n      <TextInput fullWidth source=\"public_id\" label={translate('common.name_internal')} validate={[required(),validateMaxLength(10,translate('common.validation.maxLength'))]} />\r\n      <TextInput fullWidth source=\"name\" label={translate('common.name')} validate={[required(),validateMaxLength(255,translate('common.validation.maxLength'))]} />     \r\n      <RichTextInput source=\"description\" label={translate('common.description')} />   \r\n      <NumberInput fullWidth source=\"priority\" label={translate('common.priority')} parse={value => value ? value : 0 } validate={[validateInteger(translate('common.validation.number'))]} /> \r\n    </RowForm>\r\n  );\r\n};\r\n\r\nexport const ModulesCreate = props => {\r\n  const translate = useTranslate(); \r\n  return (\r\n    <Create {...props}>\r\n      <SimpleForm>\r\n        <Grid container spacing={2}>\r\n          <Grid item xs={3}>\r\n            <BooleanInput fullWidth source=\"actived\" label={translate('common.actived')}/>\r\n          </Grid>\r\n          <Grid item xs={3}>\r\n            <BooleanInput fullWidth source=\"visible\" label={translate('common.visible')}/>\r\n          </Grid>\r\n        </Grid>\r\n        <Grid container spacing={2}>\r\n          <Grid item xs={7}>  \r\n            <TextInput fullWidth source=\"name\" label={translate('common.name')} validate={[required(),validateMaxLength(255,translate('common.validation.maxLength'))]} />                     \r\n          </Grid>\r\n          <Grid item xs={3}>  \r\n            <TextInput fullWidth source=\"public_id\" label={translate('common.name_internal')} validate={[validateMaxLength(10,translate('common.validation.maxLength'))]} />\r\n          </Grid>\r\n          <Grid item xs={2}>  \r\n            <NumberInput source=\"priority\" step={1} label={translate('common.priority')} parse={value => value ? value : 0 } validate={[validateInteger(translate('common.validation.number'))]}  />\r\n          </Grid>\r\n        </Grid>\r\n                        \r\n        <RichTextInput source=\"description\" label={translate('common.description')} />\r\n            \r\n      </SimpleForm>\r\n    </Create>\r\n  );\r\n};\r\n\r\n","// in src/posts.js\r\nimport React, { useState } from 'react';\r\n\r\nimport {\r\n  List, \r\n  Datagrid,\r\n  TextField,\r\n  DeleteButton,\r\n  Edit,\r\n  Create,\r\n  SimpleForm,\r\n  TextInput, \r\n  CreateButton ,\r\n  TopToolbar,\r\n  FormDataConsumer,\r\n  Filter, required,BooleanInput,  FunctionField, useRefresh, Toolbar, SaveButton, useDataProvider,\r\n  BooleanField,\r\n  useRedirect,\r\n  useNotify\r\n    \r\n} from 'react-admin';\r\n\r\nimport { useEffect } from 'react';\r\n\r\n\r\nimport {useMediaQuery } from '@material-ui/core';\r\n\r\n\r\nimport { useTranslate  } from '../common/language';\r\n\r\nimport Typography from '@mui/material/Typography';\r\n\r\n\r\n\r\nimport Grid from '@mui/material/Grid';\r\n\r\n\r\nimport CorporateFareIcon from '@mui/icons-material/CorporateFare';\r\n\r\n\r\n\r\nimport { Empty } from './../components/Empty';\r\nimport { SendEmailIconStatus } from './../components/Emails';\r\nimport { targetsEmails } from './../common/constants';\r\n\r\n\r\n\r\nimport { validateMaxLength, validateEmail  } from './../components/Validator';\r\n\r\n        \r\nexport const RecercatCentersList = (props) => {\r\n  const translate = useTranslate();    \r\n  const isSmall = useMediaQuery(theme => theme.breakpoints.down('sm'));\r\n  return (\r\n    <><br />\r\n      <List \r\n        {...props} \r\n        filter={{ associations_id : localStorage.getItem('associations_id') }} \r\n        actions={<ListActionsRecercatCentersList />}   \r\n        bulkActionButtons={false}      \r\n        sort={{ field: 'name', order: 'ASC' }} \r\n        empty={<Empty title={translate('recercat_centers.no_centers_title')} icon={CorporateFareIcon} />} \r\n        filters={<RecercatCentersFilter />} \r\n        filterDefaultValues={ { q: '' }}\r\n      >        \r\n        <Datagrid \r\n          rowClick=\"edit\"\r\n        >  \r\n          <TextField source=\"public_id\" label={translate('recercat_centers.public_id')} sortable={false} />\r\n          <TextField source=\"name\" label={translate('recercat_centers.name')} sortable={false} />\r\n          <TextField source=\"city\" label={translate('recercat_centers.city')} sortable={false} />\r\n          <TextField source=\"email\" label={translate('recercat_centers.email')} sortable={false} />\r\n          <BooleanField source=\"actived\" label={translate('recercat_centers.actived')} sortable={false} />   \r\n          <FunctionField label={translate('recercat_centers.resume_send')} render={record => \r\n            <SendEmailIconStatus record={record} target={targetsEmails.RECERCAT_CENTER_RESUME}  />\r\n          } sortable={false}  />\r\n        </Datagrid>        \r\n      </List>\r\n    </>\r\n  );\r\n};\r\n\r\nconst RecercatCentersFilter = (props) => {\r\n  const translate = useTranslate(); \r\n  return (\r\n    <Filter {...props}>    \r\n      <TextInput label={translate('common.search')} source=\"q\" alwaysOn validate={[validateMaxLength(50,translate('common.validation.maxLength'))]} resettable />    \r\n    </Filter>\r\n  );\r\n};\r\n\r\nconst ListActionsRecercatCentersList = (props) => {\r\n  const translate = useTranslate(); \r\n  return (\r\n    <TopToolbar>     \r\n      <CreateButton label={translate('recercat_centers.create')} />      \r\n    </TopToolbar>\r\n  );\r\n};\r\n\r\nconst FormToolbar = ({ id , ...props }) => {\r\n    \r\n  const translate = useTranslate();   \r\n  let redirect = '/recercat_centers';\r\n    \r\n  return (\r\n    <Toolbar {...props} className=\"user_form_toolbar\" >\r\n      <SaveButton />\r\n      <DeleteButton \r\n        redirect={redirect} \r\n        mutationMode=\"pessimistic\" \r\n        confirmTitle={translate('recercat_centers.delete_center_title')}\r\n        confirmContent={translate('recercat_centers.delete_center_ask')} />\r\n    </Toolbar>\r\n  );\r\n};\r\n\r\nexport const RecercatCentersEdit  = ({ id, ...props }) => {\r\n\r\n  const translate = useTranslate();   \r\n  const notify = useNotify();\r\n  const refresh = useRefresh();\r\n  const redirect = useRedirect();\r\n    \r\n  const onFailure = (error) => {\r\n    notify(error.message,'error');\r\n  };\r\n    \r\n  return (\r\n\r\n    <Edit \r\n      title={<ElementTitle />} \r\n      {...props} \r\n      id={id}\r\n      mutationMode=\"pessimistic\"\r\n      onFailure={onFailure}\r\n    > \r\n      <SimpleForm redirect=\"list\" toolbar={<FormToolbar />} >\r\n            \r\n        <>  \r\n            \r\n          <FormDataConsumer>\r\n            {({ formData, ...rest }) => \r\n                \r\n              <>\r\n                \r\n                <Grid container spacing={2}>\r\n                  <Grid item xs={12}>                    \r\n                    <Typography variant=\"h5\" className=\"grey\">{formData.name}</Typography>\r\n                  </Grid>  \r\n                  <Grid item xs={1}>                    \r\n                    <TextInput fullWidth source=\"public_id\" label={translate('recercat_centers.public_id')} validate={[required(),validateMaxLength(3,translate('common.validation.maxLength'))]} disabled />\r\n                  </Grid>\r\n                  <Grid item xs={11}>                    \r\n                    <TextInput fullWidth source=\"name\" label={translate('common.name')} validate={[required(),validateMaxLength(255,translate('common.validation.maxLength'))]} />\r\n                  </Grid>\r\n                  <Grid item xs={6}>                    \r\n                    <TextInput fullWidth source=\"city\" label={translate('recercat_centers.city')} validate={[required(),validateMaxLength(255,translate('common.validation.maxLength'))]} />\r\n                  </Grid>\r\n                  <Grid item xs={6}>                    \r\n                    <TextInput fullWidth source=\"email\" label={translate('recercat_centers.email')} validate={[required(),validateMaxLength(255,translate('common.validation.maxLength')),validateEmail()]} />\r\n                  </Grid>\r\n                  <Grid item xs={3}>\r\n                    <BooleanInput fullWidth source=\"actived\" label={translate('recercat_centers.actived')} />\r\n                  </Grid>                \r\n                </Grid>   \r\n\r\n              </>\r\n\r\n            }\r\n          </FormDataConsumer>\r\n\r\n        </>\r\n\r\n      </SimpleForm> \r\n    </Edit>\r\n  );\r\n};\r\n\r\n\r\nexport const RecercatCentersCreate  = ({ id, ...props }) => {\r\n\r\n  const translate = useTranslate();   \r\n  const dataProvider = useDataProvider();\r\n  const [info, setInfo] = useState();\r\n\r\n  useEffect(() => {\r\n    dataProvider.getOne('recercat_centers/next_public_id', { id: localStorage.getItem('associations_id') })\r\n      .then(( { data } ) => {   \r\n        setInfo(data);\r\n      })\r\n      .catch(error => {         \r\n      });\r\n  }, []);\r\n    \r\n  return (\r\n\r\n    <Create {...props} >\r\n      <SimpleForm \r\n        initialValues={{ associations_id: localStorage.getItem('associations_id'), public_id: info ? info.next_public_id : '' }}\r\n        redirect=\"list\"\r\n      >                \r\n        <Grid container spacing={2}>\r\n          <Grid item xs={12}>                    \r\n            <Typography variant=\"h5\" className=\"grey\">{translate('recercat_centers.create')}</Typography>\r\n          </Grid>  \r\n          <Grid item xs={1}>                    \r\n            <TextInput fullWidth source=\"public_id\" label={translate('recercat_centers.public_id')} validate={[required(),validateMaxLength(3,translate('common.validation.maxLength'))]} />\r\n          </Grid>\r\n          <Grid item xs={11}>                    \r\n            <TextInput fullWidth source=\"name\" label={translate('common.name')} validate={[required(),validateMaxLength(255,translate('common.validation.maxLength'))]} />\r\n          </Grid>\r\n          <Grid item xs={6}>                    \r\n            <TextInput fullWidth source=\"city\" label={translate('recercat_centers.city')} validate={[required(),validateMaxLength(255,translate('common.validation.maxLength'))]} />\r\n          </Grid>\r\n          <Grid item xs={6}>                    \r\n            <TextInput fullWidth source=\"email\" label={translate('recercat_centers.email')} validate={[required(),validateMaxLength(255,translate('common.validation.maxLength')),validateEmail()]} />\r\n          </Grid>\r\n          <Grid item xs={3}>\r\n            <BooleanInput fullWidth source=\"actived\" label={translate('recercat_centers.actived')} />\r\n          </Grid>                \r\n        </Grid>   \r\n\r\n      </SimpleForm> \r\n    </Create>\r\n  );\r\n};\r\n\r\n\r\nconst ElementTitle = ({ record }) => {\r\n  const translate = useTranslate(); \r\n  return <span>{translate('common.edit')} {record ? `\"${record.name}\"` : ''}</span>;\r\n};\r\n\r\n\r\n\r\n","// in src/posts.js\r\nimport React from 'react';\r\n\r\n\r\n\r\n\r\n\r\n\r\nimport { Card, CardContent, CardHeader } from '@material-ui/core';\r\n\r\n\r\nimport { useTranslate  } from '../common/language';\r\n\r\n\r\n\r\n\r\nimport Grid from '@mui/material/Grid';\r\n\r\n\r\n\r\n\r\n\r\nimport { targets, modules, modulesOptions } from './../common/constants';\r\n\r\n\r\n\r\n\r\nimport { DocsList, DocsListShow  } from './docs';\r\nimport { subscriptionModule  } from '../common/utils';\r\n\r\n        \r\nexport const DocsFacList = (props) => {\r\n  const translate = useTranslate();    \r\n  return (\r\n    <>\r\n      <DcoumentsFACHeader />\r\n      <br/>\r\n      {subscriptionModule(modules.DOCUMENTS_FAC,modulesOptions.DOCUMENTS_FAC_W) ?\r\n        <DocsList target={targets.DOCUMENT_FAC} items_id={0} />\r\n        : null }\r\n      {subscriptionModule(modules.DOCUMENTS_FAC,modulesOptions.DOCUMENTS_FAC_R) ?\r\n        <DocsListShow target={targets.DOCUMENT_FAC} items_id={0} />\r\n        : null }\r\n    </>\r\n  );\r\n};\r\n\r\n\r\n\r\nconst DcoumentsFACHeader = props => {\r\n  const translate = useTranslate();        \r\n  return (\r\n    <>\r\n            \r\n      <Card fullWidth className=\"contacts_fac_header\">\r\n        <CardHeader title={translate('documents_fac.title')} />\r\n        <CardContent>\r\n          <Grid container spacing={12}>\r\n            <Grid item xs={12} align=\"justify\">\r\n              <div className=\"\" dangerouslySetInnerHTML={{ __html: translate('documents_fac.description') }} /> \r\n            </Grid>\r\n          </Grid>\r\n        </CardContent>                \r\n      </Card>            \r\n    </>\r\n  );\r\n};","// in src/posts.js\r\nimport React, { useState } from 'react';\r\n\r\nimport {\r\n  List, \r\n  Datagrid,\r\n  TextField,\r\n  DeleteButton,\r\n  Edit,\r\n  SelectInput,\r\n  TextInput,\r\n  Button ,  \r\n  Create,\r\n  SimpleForm,\r\n  CreateButton ,\r\n  TopToolbar,\r\n  FormTab,\r\n  TabbedForm,\r\n  ReferenceManyField,\r\n  FormDataConsumer,\r\n  useListContext, required,NumberInput,BooleanInput,SelectField,  FunctionField, ResourceContextProvider, useCreate, useRefresh, FormWithRedirect, Toolbar, SaveButton,\r\n  useNotify,\r\n  useRedirect,\r\n  BooleanField,\r\n  DateInput,\r\n  Filter\r\n} from 'react-admin';\r\n\r\nimport { useEffect } from 'react';\r\n\r\nimport { makeStyles } from '@material-ui/core/styles';\r\n\r\nimport Divider from '@mui/material/Divider';\r\n\r\n\r\nimport { dateOnlyToCatalan  } from '../common/utils';\r\nimport { useTranslate  } from '../common/language';\r\n\r\nimport Typography from '@mui/material/Typography';\r\n\r\n\r\nimport RichTextInput from 'ra-input-rich-text';\r\n\r\n\r\nimport { TextFieldShow } from '../components/TextFieldShow';\r\n\r\nimport Grid from '@mui/material/Grid';\r\nimport Avatar from '@mui/material/Avatar';\r\nimport IconContentAdd from '@material-ui/icons/Add';\r\nimport IconCancel from '@material-ui/icons/Cancel';\r\nimport NotificationsActiveIcon from '@material-ui/icons/NotificationsActive';\r\n\r\nimport Dialog from '@material-ui/core/Dialog';\r\nimport DialogTitle from '@material-ui/core/DialogTitle';\r\nimport DialogContent from '@material-ui/core/DialogContent';\r\nimport DialogActions from '@material-ui/core/DialogActions';\r\n\r\nimport { ColorInput } from 'react-admin-color-input';\r\n\r\nimport { DocsList, DocsListShow } from './docs';\r\nimport { targets, choicesAlertsType , choicesMonths, choicesDays } from './../common/constants';\r\n\r\nimport { CityInput } from './../components/Inputs';\r\nimport { BackLink } from './../components/BackLink';\r\n\r\nimport { RenderBoolean } from '../components/User';\r\n\r\nimport Box from '@material-ui/core/Box';\r\n\r\nimport { Link } from 'react-router-dom';\r\n\r\nimport { validateMaxLength, validateInteger  } from './../components/Validator';\r\n\r\nexport const AlertsList = (props) => {\r\n  const translate = useTranslate();  \r\n    \r\n  let basePath='/alerts'; \r\n  let resource = 'alerts';\r\n  let strRedirect = 'alerts';\r\n    \r\n  return (\r\n    <ResourceContextProvider value={resource}>\r\n      <br/>\r\n      <Typography variant=\"h5\" className=\"grey8\" align=\"center\">\r\n        {translate('settings.alerts_desc')}              \r\n      </Typography>  \r\n      <List \r\n        basePath={basePath}   \r\n        filter={{ associations_id : localStorage.getItem('associations_id') }}  \r\n        actions={<ListActions />}    \r\n        empty={<ListActions />}        \r\n        bulkActionButtons={false}          \r\n        perPage={1000}   \r\n        pagination={false}\r\n        sort={{ field: 'id', order: 'ASC' }} \r\n        label=\"\"  \r\n        title=\"\"  \r\n        resource={resource}\r\n        filters={ <MyFilter />} \r\n        filterDefaultValues={ { only_current : true, q: \"\" }}\r\n      >        \r\n        <Datagrid \r\n          rowClick=\"edit\"\r\n          expand={<AlertsDetails />} >  \r\n          <Avatar><NotificationsActiveIcon/></Avatar>                                  \r\n          <TextField source=\"name\" label={translate('common.name')} sortable={false} />    \r\n          <FunctionField render={record => <span>{translate('alerts.type_' + record.type)}</span> } label={translate('alerts.type')} sortable={false}  />\r\n          <TextField source=\"message\" label={translate('alerts.message')} sortable={false} />    \r\n          <BooleanField source=\"actived\" label={translate('alerts.actived')} sortable={false}/>\r\n        </Datagrid>        \r\n      </List>\r\n    </ResourceContextProvider>\r\n  );\r\n};\r\n\r\nconst MyFilter = (props) => {\r\n    const translate = useTranslate(); \r\n    return (\r\n    <Filter {...props}>         \r\n        <TextInput label={translate('common.search')} source=\"q\" alwaysOn validate={[validateMaxLength(50,translate('common.validation.maxLength'))]} resettable />    \r\n        <BooleanInput label={translate('alerts.filter_only_current')} source=\"only_current\" alwaysOn />        \r\n    </Filter>\r\n);\r\n};\r\n\r\nexport const AlertsDetails = ({ id, record, resource, ...props }) => {\r\n  const translate = useTranslate(); \r\n          \r\n  return (\r\n    <div className=\"usersClassroomsExpand\">        \r\n      <Grid container spacing={2}>\r\n        <Grid item xs={10}>                    \r\n          <TextFieldShow source={record.name} label={translate('common.name')} />                       \r\n        </Grid>\r\n        <Grid item xs={2}>  \r\n          <TextFieldShow source={<RenderBoolean source={record.actived} />} label={translate('alerts.actived')} />     \r\n        </Grid>\r\n      </Grid>\r\n        \r\n      <Grid container spacing={2}>        \r\n        <Grid item xs={4}>                    \r\n          <FunctionField render={record => <TextFieldShow source={<SelectField source=\"type\" choices={choicesAlertsType(translate)} /> } label={translate('alerts.type')} /> } />                        \r\n        </Grid>\r\n        { record.type == 1 ? \r\n        <Grid item xs={2}>                    \r\n          <TextFieldShow source={dateOnlyToCatalan(record.date_alert, translate)} label={translate('alerts.date_alert')} />                   \r\n        </Grid> : null }\r\n        { record.type == 2 ? \r\n        <Grid item xs={2}>                    \r\n          <FunctionField render={record => <TextFieldShow source={<SelectField source=\"date_month\" choices={choicesMonths(translate)} /> } label={translate('alerts.date_month')} /> } />                        \r\n        </Grid> : null }\r\n        { record.type == 2 || record.type == 3  ? \r\n        <Grid item xs={2}>                    \r\n          <FunctionField render={record => <TextFieldShow source={<SelectField source=\"date_day\" choices={choicesDays(translate)} /> } label={translate('alerts.date_day')} /> } />                        \r\n        </Grid> : null }\r\n        <Grid item xs={2}>                              \r\n        </Grid>\r\n        { record.type == 1 || record.type == 2 || record.type == 3 ? \r\n        <Grid item xs={12}>                    \r\n          <TextFieldShow source={record.message} label={translate('alerts.message')} />                   \r\n        </Grid> : null }\r\n      </Grid>\r\n      \r\n      <Typography variant=\"h6\" className=\"grey8 titleUserShow\">                        \r\n        {translate('alerts.actions')}\r\n      </Typography>\r\n      <Divider fullWidth className=\"\" />\r\n      <br/>\r\n      \r\n      <Grid container spacing={2}>\r\n        <Grid item xs={2}>                    \r\n          <TextFieldShow source={<RenderBoolean source={record.action_send_email} />} label={translate('alerts.action_send_email')} />                   \r\n        </Grid>\r\n        <Grid item xs={2}>                    \r\n          <TextFieldShow source={<RenderBoolean source={record.action_popup} />} label={translate('alerts.action_popup')} />                        \r\n        </Grid>\r\n      </Grid>                \r\n        \r\n    </div>\r\n  );\r\n};\r\n\r\n\r\nconst ListActions = (props) => {\r\n    const translate = useTranslate(); \r\n    return (\r\n    <TopToolbar>     \r\n        <MyCreateButton {...props} />      \r\n    </TopToolbar>\r\n    );\r\n};\r\n\r\n\r\nexport const MyCreateButton = ({ ...props }) => {\r\n\r\n  const [showDialog, setShowDialog] = useState(false);\r\n  const [create, { loading }] = useCreate('alerts');\r\n  const notify = useNotify();\r\n  const refresh = useRefresh();    \r\n  const translate = useTranslate();  \r\n  const redirect = useRedirect();\r\n        \r\n  const handleClick = () => {\r\n    setShowDialog(true);\r\n  };\r\n\r\n  const handleCloseClick = () => {\r\n    setShowDialog(false);\r\n  };\r\n\r\n  const handleSubmit = async values => {\r\n    create(            \r\n      { payload: { data: values } },\r\n      {\r\n        onSuccess: ({ data }) => {                    \r\n          redirect('/alerts/' + data.id);\r\n        \r\n        },\r\n        onFailure: ( error ) => {\r\n          notify( error.message , 'error');\r\n        }\r\n      }\r\n    );\r\n  };\r\n    \r\n  return (\r\n    <>            \r\n      <Button onClick={handleClick} label={translate('alerts.create')}>\r\n        <IconContentAdd />                \r\n      </Button>\r\n\r\n      <Dialog\r\n        fullWidth\r\n        open={showDialog}\r\n        onClose={handleCloseClick}\r\n        aria-label={translate('alerts.create')}\r\n      >\r\n        <DialogTitle>{translate('alerts.create')}</DialogTitle>\r\n\r\n        <FormWithRedirect\r\n          save={handleSubmit}\r\n          initialValues={{ associations_id: localStorage.getItem('associations_id') }}\r\n          render={({\r\n            handleSubmitWithRedirect,\r\n            pristine,\r\n            saving\r\n          }) => (\r\n            <>\r\n              <DialogContent>\r\n                <Grid container spacing={1}>                                     \r\n                  <Grid item xs={12}>                                               \r\n                    <TextInput fullWidth source=\"name\" label={translate('common.name')} validate={[required(),validateMaxLength(255,translate('common.validation.maxLength'))]} />\r\n                  </Grid>\r\n                </Grid> \r\n              </DialogContent>\r\n              <DialogActions>\r\n                <Button label=\"ra.action.cancel\" onClick={handleCloseClick} disabled={loading} >\r\n                  <IconCancel />\r\n                </Button>\r\n                <SaveButton\r\n                  handleSubmitWithRedirect={\r\n                    handleSubmitWithRedirect\r\n                  }\r\n                  pristine={pristine}\r\n                  saving={saving}\r\n                  disabled={loading}\r\n                />\r\n              </DialogActions>\r\n            </>\r\n          )}\r\n        />\r\n      </Dialog>\r\n    </>\r\n  );\r\n};\r\n\r\nconst MyActions = ({ basePath, data, resource }) => {\r\n  \r\n  let backLink = '/alerts';\r\n  return <BackLink link={backLink} title={ data && data.name ? data.name : null } />;\r\n  \r\n};\r\n\r\n\r\nexport const AlertsEdit  = ({ id, ...props }) => {\r\n\r\n  const translate = useTranslate();        \r\n  const classes = useStyles();\r\n  const notify = useNotify();\r\n  const refresh = useRefresh();\r\n  const redirect = useRedirect();\r\n\r\n  let strRedirect =  `/alerts/${id}`;    \r\n    \r\n  const onSuccess = ({ data }) => {\r\n    notify(translate('common.notification.updated'));        \r\n    redirect('/alerts');        \r\n  };\r\n        \r\n  return (\r\n\r\n    <Edit \r\n      title={<ElementTitle {...props}  />} \r\n      {...props} \r\n      id={id}\r\n      mutationMode=\"pessimistic\"\r\n      actions={<MyActions {...props} />}\r\n      onSuccess={onSuccess}   \r\n    >\r\n      <SimpleForm {...props} redirect=\"edit\" >  \r\n                     \r\n          <FormDataConsumer>\r\n            {({ formData, ...rest }) => \r\n              <>                              \r\n                <br/>\r\n                <Grid container spacing={2}>                  \r\n                  <Grid item xs={9}>   \r\n                    <TextInput fullWidth autoFocus source=\"name\" label={translate('common.name')} validate={[required(),validateMaxLength(255,translate('common.validation.maxLength'))]}  />\r\n                  </Grid>  \r\n                  <Grid item xs={1}>                                 \r\n                  </Grid>\r\n                  <Grid item xs={2}>\r\n                    <BooleanInput fullWidth source=\"actived\" label={translate('alerts.actived')} />                             \r\n                  </Grid>\r\n                </Grid>      \r\n                                \r\n                <Grid container spacing={2}> \r\n                  <Grid item xs={4}> \r\n                    <SelectInput fullWidth label={translate('alerts.type')} source=\"type\" choices={choicesAlertsType(translate)} validate={[required()]} />\r\n                  </Grid>  \r\n                  {formData.type == 1 ?\r\n                  <Grid item xs={2}>                    \r\n                    <DateInput fullWidth source=\"date_alert\" label={translate('alerts.date_alert')} validate={[required()]} />\r\n                  </Grid> : null }\r\n                  {formData.type == 2 ?\r\n                  <Grid item xs={2}>          \r\n                    <SelectInput fullWidth label={translate('alerts.date_month')} source=\"date_month\" choices={choicesMonths(translate)} validate={[required()]} />\r\n                  </Grid> : null }     \r\n                  {formData.type == 2 || formData.type == 3 ?\r\n                  <Grid item xs={2}>           \r\n                    <SelectInput fullWidth label={translate('alerts.date_day')} source=\"date_day\" choices={choicesDays(translate)} validate={[required()]} />\r\n                  </Grid> : null }                               \r\n                </Grid>\r\n                \r\n                {formData.type == 1 || formData.type == 2 || formData.type == 3 ?\r\n                <Grid container spacing={2}>     \r\n                  <Grid item xs={12}>                    \r\n                    <TextInput fullWidth source=\"message\" label={translate('alerts.message')} validate={[required()]} />\r\n                  </Grid> \r\n                </Grid> : null }                \r\n                \r\n                <Typography variant=\"h6\" className=\"grey8 titleUserShow\">                        \r\n                    {translate('alerts.actions')}\r\n                </Typography>\r\n                <Divider fullWidth className=\"\" />\r\n                <br />\r\n                  \r\n                <Grid container spacing={0}>                   \r\n                  <Grid item xs={12}>\r\n                    <BooleanInput source=\"action_send_email\" label={translate('alerts.action_send_email')} />         \r\n                  </Grid> \r\n                  <Grid item xs={12}>\r\n                    <BooleanInput source=\"action_popup\" label={translate('alerts.action_popup')} />         \r\n                  </Grid>\r\n                </Grid>\r\n\r\n              </>\r\n            }\r\n          </FormDataConsumer>\r\n\r\n        </SimpleForm>\r\n    </Edit>\r\n  );\r\n};\r\n\r\nconst ElementTitle = ({ record, ...props }) => {    \r\n  const translate = useTranslate(); \r\n  return (<span>{translate('common.edit')} {record ? `\"${record.name}\"` : ''}</span>);\r\n};\r\n\r\n\r\nconst useStyles = makeStyles({\r\n  comment: {\r\n    maxWidth: '100%',\r\n    overflow: 'hidden',\r\n    textOverflow: 'ellipsis',\r\n    whiteSpace: 'nowrap',\r\n  },\r\n  tab: {\r\n    maxWidth: '100%',\r\n    display: 'block',\r\n  },\r\n});\r\n\r\n\r\nexport const AlertsCreate  = ({ id, ...props }) => {\r\n\r\n  const translate = useTranslate();   \r\n  const [info, setInfo] = useState();\r\n    \r\n  return (\r\n\r\n    <Create {...props} >\r\n      <SimpleForm \r\n        initialValues={{ associations_id: localStorage.getItem('associations_id') }}\r\n        redirect=\"list\"\r\n      >                \r\n        <Grid container spacing={2}>\r\n          <Grid item xs={12}>                    \r\n            <Typography variant=\"h5\" className=\"grey\">{translate('alerts.create')}</Typography>\r\n          </Grid>  \r\n          <Grid item xs={11}>                    \r\n            <TextInput fullWidth source=\"name\" label={translate('common.name')} validate={[required(),validateMaxLength(255,translate('common.validation.maxLength'))]} />\r\n          </Grid>          \r\n        </Grid>   \r\n\r\n      </SimpleForm> \r\n    </Create>\r\n  );\r\n};\r\n","import React, { useState } from 'react';\r\nimport {\r\n  required,\r\n  Button,\r\n  SaveButton,\r\n  useCreate,\r\n  useUpdate,\r\n  useNotify,\r\n  FormWithRedirect,\r\n  useRefresh, TopToolbar, useTranslate, ReferenceInput, SelectInput, Confirm, RadioButtonGroupInput, ResourceContextProvider, FunctionField, List, Datagrid, TextField, DeleteButton, RefreshButton, downloadCSV\r\n} from 'react-admin';\r\n\r\nimport jsonExport from 'jsonexport/dist';\r\nimport IconContentAdd from '@material-ui/icons/Add';\r\nimport IconCancel from '@material-ui/icons/Cancel';\r\n\r\nimport Dialog from '@material-ui/core/Dialog';\r\nimport DialogTitle from '@material-ui/core/DialogTitle';\r\nimport DialogContent from '@material-ui/core/DialogContent';\r\nimport DialogActions from '@material-ui/core/DialogActions';\r\nimport DeleteIcon from '@mui/icons-material/Delete';\r\n\r\n\r\n\r\n\r\nimport MailOutlineIcon from '@mui/icons-material/MailOutline';\r\n\r\n\r\nimport Grid from '@mui/material/Grid';\r\n\r\n\r\n\r\nimport { UserAvatarField, UserFullNameTxt, UserInput } from '../components/User';\r\n\r\n\r\nimport { SendEmailIconStatus } from './../components/Emails';\r\nimport { ExportButton } from './../components/ExportButton';\r\nimport { targetsEmails,emailsStatus } from './../common/constants';\r\n\r\n\r\n\r\nexport const BookingsList = ({ events_id , ...props }) => {\r\n    \r\n  const translate = useTranslate();\r\n    \r\n  return ( \r\n            \r\n    <ResourceContextProvider value=\"bookings\" >\r\n      <List  \r\n        basePath=\"bookings\"\r\n        filter={{ events_id : events_id }}  \r\n        title=\"\" \r\n        bulkActionButtons={false}                \r\n        sort={{ field: 'id', order: 'DESC' }} \r\n        perPage={20}\r\n        actions={<BookingsToolbar events_id={props.record.id} empty={false} /> } \r\n        empty={<BookingsToolbar events_id={props.record.id} empty={true} /> }\r\n        bulkActionButtons={false}\r\n      >\r\n        <Datagrid>  \r\n          <UserAvatarField />\r\n          <FunctionField render={record => <UserFullNameTxt record={record}/> } label={translate('common.name')} sortable={false} />\r\n          <TextField source=\"email\" label={translate('common.email')} sortable={false} />\r\n          <FunctionField label={translate('bookings.status_0')} render={record => \r\n            <SendEmailIconStatus record={record} target={targetsEmails.EVENT_INVITE}  />\r\n          } sortable={false}  />\r\n          <FunctionField label={translate('bookings.status_1')} render={record => \r\n            <SendEmailIconStatus record={record} target={targetsEmails.EVENT_REMINDER}  />\r\n          } sortable={false}  />\r\n          <DeleteButton undoable={false} label=\"\" />\r\n        </Datagrid>                             \r\n      </List>\r\n    </ResourceContextProvider>\r\n  );\r\n};\r\n\r\n                \r\nconst BookingsToolbar = ({ events_id , ...props }) => {\r\n\r\n  const translate = useTranslate();\r\n    \r\n  let filterExport = {\r\n    events_id : events_id        \r\n  };\r\n    \r\n  return (        \r\n    <TopToolbar>            \r\n      <BookingsCreateButton events_id={events_id} label_button={translate('bookings.create_user_button')} label_title={translate('bookings.create_user_title')} type={1} />\r\n      <BookingsCreateButton events_id={events_id} label_button={translate('bookings.create_group_button')} label_title={translate('bookings.create_group_title')} type={2} />\r\n      { !props.empty ? <BookingsSendAllButton events_id={events_id} action={0} /> : null } \r\n      { !props.empty ? <BookingsSendAllButton events_id={events_id} action={1} /> : null } \r\n      { !props.empty ? <ExportButton maxResults=\"100000\" filterValues={filterExport} alwaysEnabled={true} exporter={exporter} sort={{ field: 'id', order: 'DESC' }} />  : null }             \r\n      { !props.empty ? <BookingsDeleteAllButton events_id={events_id} label_button={translate('bookings.delete_all_button')} label_title={translate('bookings.delete_all_button_title')}  /> : null }             \r\n      <RefreshButton label=\"\"/>\r\n    </TopToolbar>        \r\n  );\r\n};\r\n\r\n\r\nconst exporter = (items, translate, notify) => {\r\n        \r\n  const eventsForExport = items.map(booking => {\r\n    var eventForExport = {\r\n      id : booking.id,\r\n      first_name : booking.first_name, \r\n      last_name_1 : booking.last_name_1, \r\n      last_name_2 : booking.last_name_2, \r\n      email: booking.email,\r\n      invite: booking.invite_status === emailsStatus.SENT_TO_SMTP_OK ? translate('common.yes') : translate('common.no'),\r\n      reminder: booking.reminder_status === emailsStatus.SENT_TO_SMTP_OK ? translate('common.yes') : translate('common.no'),\r\n    };\r\n    return eventForExport;\r\n  });\r\n  jsonExport(eventsForExport, {\r\n    headers: ['id', 'first_name', 'last_name_1', 'last_name_2','email','invite','reminder'],\r\n    rename: [translate('bookings.exporter_header_id'), translate('users.first_name'), translate('users.last_name_1'), translate('users.last_name_2'), translate('users.email'), translate('bookings.status_0'), translate('bookings.status_1')],        \r\n        \r\n  }, (err, csv) => {\r\n    const csv_new = '\\uFEFF' + csv;\r\n    downloadCSV(csv_new, translate('bookings.exporter_file_name') ); \r\n    notify(translate('common.download_ok'),\"success\");\r\n  });\r\n};\r\n\r\nexport const BookingsCreateButton = ({ events_id ,  ...props }) => {\r\n\r\n  const [showDialog, setShowDialog] = useState(false);\r\n  const [create, { loading }] = useCreate('bookings');\r\n  const notify = useNotify();\r\n  const refresh = useRefresh();    \r\n  const translate = useTranslate();  \r\n\r\n\r\n  const handleClick = () => {\r\n    setShowDialog(true);\r\n  };\r\n\r\n  const handleCloseClick = () => {\r\n    setShowDialog(false);\r\n  };\r\n\r\n  const handleSubmit = async values => {\r\n    create(            \r\n      { payload: { data: values } },\r\n      {\r\n        onSuccess: ({ data }) => {\r\n          setShowDialog(false);\r\n          refresh();\r\n        },\r\n        onFailure: ( error ) => {\r\n          notify( error.message , 'error');\r\n        }\r\n      }\r\n    );\r\n  };\r\n    \r\n  return (\r\n    <>            \r\n      <Button onClick={handleClick} label={props.label_button} >\r\n        <IconContentAdd />                \r\n      </Button>\r\n\r\n      <Dialog\r\n        fullWidth\r\n        open={showDialog}\r\n        onClose={handleCloseClick}\r\n        aria-label={props.label_title}\r\n      >\r\n        <DialogTitle>{props.label_title}</DialogTitle>\r\n\r\n        <FormWithRedirect\r\n          save={handleSubmit}\r\n          initialValues={{ events_id : events_id, type: props.type }}\r\n          render={({\r\n            handleSubmitWithRedirect,\r\n            pristine,\r\n            saving\r\n          }) => (\r\n            <>\r\n              <DialogContent>\r\n                <Grid container spacing={2}>\r\n                  <Grid item xs={12}> \r\n                    {props.type== 1 ? \r\n                      <UserInput source=\"users_id\" user_type={-1} disabled={false} label={translate('common.name')} allowEmpty={false} required={true} />\r\n                      : \r\n                      <ReferenceInput label={translate('users.group')} source=\"groups_id\" reference=\"groups\" filter={{ associations_id : localStorage.getItem('associations_id') }}>\r\n                        <SelectInput fullWidth optionText=\"path\" optionValue=\"id\" validate={required()} />\r\n                      </ReferenceInput>        \r\n                    }\r\n                  </Grid> \r\n                </Grid>\r\n              </DialogContent>\r\n              <DialogActions>\r\n                <Button label=\"ra.action.cancel\" onClick={handleCloseClick} disabled={loading} >\r\n                  <IconCancel />\r\n                </Button>\r\n                <SaveButton\r\n                  handleSubmitWithRedirect={\r\n                    handleSubmitWithRedirect\r\n                  }\r\n                  pristine={pristine}\r\n                  saving={saving}\r\n                  disabled={loading}\r\n                />\r\n              </DialogActions>\r\n            </>\r\n          )}\r\n        />\r\n      </Dialog>\r\n    </>\r\n  );\r\n};\r\n\r\n\r\nexport const BookingsDeleteAllButton = ({ events_id ,  ...props }) => {\r\n\r\n  const [open, setOpen] = useState(false);\r\n  const [update, { loading, error }] = useUpdate();\r\n  const notify = useNotify();\r\n  const refresh = useRefresh();    \r\n  const translate = useTranslate();  \r\n\r\n  const handleClick = () => {\r\n    setOpen(true);\r\n  };\r\n\r\n  const handleDialogClose = () => {\r\n    setOpen(false);\r\n  };\r\n\r\n  const handleConfirm = async values => {\r\n        \r\n    update(\r\n      { \r\n        type: 'update', \r\n        resource: 'bookings/delete_all', \r\n        payload : { id: events_id }\r\n      },\r\n      {\r\n        onSuccess: ({ data }) => {\r\n          setOpen(false);\r\n          refresh();\r\n        },\r\n        onFailure: ( error ) => {                                        \r\n          notify(error.message, 'error');\r\n        }\r\n      }\r\n    );\r\n\r\n  };\r\n    \r\n  return (\r\n    <>            \r\n      <Button onClick={handleClick} label={props.label_button} >\r\n        <DeleteIcon />                \r\n      </Button>\r\n\r\n      <Confirm\r\n        isOpen={open}\r\n        loading={loading}\r\n        title={translate('bookings.delete_all_button_title')}\r\n        content={translate('bookings.delete_all_ask')}\r\n        onConfirm={handleConfirm}\r\n        onClose={handleDialogClose}\r\n      />\r\n            \r\n    </>\r\n  );\r\n};\r\n\r\n\r\nexport const BookingsSendAllButton = ({ events_id ,  ...props }) => {\r\n\r\n  const [showDialog, setShowDialog] = useState(false);\r\n  const [update, { loading, error }] = useUpdate();\r\n  const notify = useNotify();\r\n  const refresh = useRefresh();    \r\n  const translate = useTranslate();  \r\n\r\n\r\n  const handleClick = () => {\r\n    setShowDialog(true);\r\n  };\r\n\r\n  const handleCloseClick = () => {\r\n    setShowDialog(false);\r\n  };\r\n\r\n  const handleSubmit = async values => {\r\n    update(\r\n      { \r\n        type: 'update', \r\n        resource: 'bookings/send_email_all/' + values.type + '/' + props.action , \r\n        payload : { id: events_id, data : values }\r\n      },\r\n      {\r\n        onSuccess: ({ data }) => {\r\n          notify(translate('bookings.email_sent_ok'));\r\n          refresh();\r\n        },\r\n        onFailure: ( error ) => {                                        \r\n          notify(error.message, 'error');\r\n        }\r\n      }\r\n    );\r\n  };\r\n    \r\n  return (\r\n    <>            \r\n      <Button onClick={handleClick} label={translate('bookings.email_send_all_button_' + props.action)}  >\r\n        <MailOutlineIcon />                \r\n      </Button>\r\n\r\n      <Dialog\r\n        fullWidth\r\n        open={showDialog}\r\n        onClose={handleCloseClick}\r\n        aria-label={translate('bookings.email_send_all_button_title_' + props.action)}\r\n      >\r\n        <DialogTitle>{translate('bookings.email_send_all_button_title_' + props.action)}</DialogTitle>\r\n\r\n        <FormWithRedirect\r\n          save={handleSubmit}\r\n          initialValues={{ events_id : events_id, type: 0, action: props.action }}\r\n          render={({\r\n            handleSubmitWithRedirect,\r\n            pristine,\r\n            saving\r\n          }) => (\r\n            <>\r\n              <DialogContent>\r\n                <Grid container spacing={2}>\r\n                  <Grid item xs={12}> \r\n                    <RadioButtonGroupInput label=\"\" row={false} source=\"type\" choices={[\r\n                      { id: 0, name: translate('bookings.email_only_pending') },\r\n                      { id: 1, name: translate('bookings.email_all') }\r\n                    ]} />\r\n                  </Grid> \r\n                  <Grid item xs={12}> \r\n                    {translate('bookings.email_send_all_advise')}\r\n                    <br /><br />\r\n                  </Grid> \r\n                </Grid>\r\n              </DialogContent>\r\n              <DialogActions>\r\n                <Button label=\"ra.action.cancel\" onClick={handleCloseClick} disabled={loading} >\r\n                  <IconCancel />\r\n                </Button>\r\n                <SaveButton\r\n                  handleSubmitWithRedirect={\r\n                    handleSubmitWithRedirect\r\n                  }\r\n                  pristine={pristine}\r\n                  saving={saving}\r\n                  disabled={loading}\r\n                  icon={<MailOutlineIcon />}\r\n                  label={translate('bookings.email_send_button')}\r\n                />\r\n              </DialogActions>\r\n            </>\r\n          )}\r\n        />\r\n      </Dialog>\r\n    </>\r\n  );\r\n};\r\n","// in src/posts.js\r\nimport React, { Fragment, useState, useCallback , useEffect, createRef} from 'react';\r\n\r\nimport {\r\n  Admin,\r\n  Resource,\r\n  List,\r\n  ListProps,\r\n  SimpleForm,\r\n  TextInput,\r\n  DateTimeInput, required, ReferenceInput, SelectInput, useRefresh, useCreate,\r\n    useNotify,\r\n    useUpdate,\r\n    useRedirect, BooleanInput , TopToolbar, CreateButton, CheckboxGroupInput , ReferenceArrayInput, Button, TextField, SimpleShowLayout, DeleteButton, FormDataConsumer, DateInput,\r\n    useDataProvider, FormWithRedirect, useRecordContext, ReferenceField, FormTab,\r\n    TabbedForm,ArrayField, Datagrid, ChipField, SingleFieldList, downloadCSV , RefreshButton, ShowButton, linkToRecord, AutocompleteInput, useSelectedValues, Edit, NumberInput\r\n} from \"react-admin\";\r\n\r\nimport jsonExport from 'jsonexport/dist';\r\n\r\nimport RichTextInput from 'ra-input-rich-text';\r\n\r\nimport { UserAvatarField , UserFullNameTxt , RenderAge, RenderDate, RenderGender, RenderBoolean, ChipFieldUserName, UserInput } from '../components/User';\r\n\r\nimport { apiUrl, apiOrigin, apiDefaultLanguage, targetsResources, targets, timeZone } from './../common/constants';\r\nimport { BookingsList } from './../components/Bookings';\r\nimport { Empty } from './../components/Empty';\r\n\r\nimport DownloadIcon from '@material-ui/icons/GetApp';\r\nimport PictureAsPdfIcon from '@mui/icons-material/PictureAsPdf';\r\nimport { ExportButton } from './../components/ExportButton';\r\n\r\nimport { CityInput } from './../components/Inputs';\r\n\r\nimport { parse } from \"query-string\";\r\nimport { useLocation } from 'react-router-dom';\r\nimport { Link } from 'react-router-dom';\r\n\r\nimport { Create, SaveButton, Toolbar } from 'react-admin';\r\nimport CustomConfirm from 'ra-custom-confirm';\r\nimport { useForm, useFormState } from \"react-final-form\";\r\nimport Save from '@material-ui/icons/Save';\r\nimport ErrorOutline from '@material-ui/icons/ErrorOutline';\r\nimport { RadioButtonGroupInput } from 'react-admin';\r\nimport PropTypes from 'prop-types';\r\nimport Box from '@mui/material/Box';\r\nimport ListItem from '@mui/material/ListItem';\r\nimport ListItemText from '@mui/material/ListItemText';\r\nimport RadioGroup from '@mui/material/RadioGroup';\r\nimport Radio from '@mui/material/Radio';\r\nimport FormControlLabel from '@mui/material/FormControlLabel';\r\nimport { styled } from '@mui/material/styles';\r\nimport Dialog from '@mui/material/Dialog';\r\nimport DialogTitle from '@mui/material/DialogTitle';\r\nimport DialogContent from '@mui/material/DialogContent';\r\nimport DialogActions from '@mui/material/DialogActions';\r\nimport IconButton from '@mui/material/IconButton';\r\nimport CloseIcon from '@mui/icons-material/Close';\r\nimport Typography from '@mui/material/Typography';\r\nimport IconCancel from '@material-ui/icons/Cancel';\r\nimport DeleteIcon from '@material-ui/icons/Delete';\r\nimport VisibilityIcon from '@mui/icons-material/Visibility';\r\nimport { CompleteCalendar } from \"@react-admin/ra-calendar\";\r\nimport Grid from '@mui/material/Grid';\r\nimport { Chip } from '@mui/material';\r\nimport FileDownloadIcon from '@mui/icons-material/FileDownload';\r\nimport { makeStyles } from '@material-ui/core/styles';\r\nimport { DocsList, DocsListShow } from './docs';\r\n\r\nimport { useHistory } from 'react-router-dom';\r\n\r\nimport { i18nProvider, useTranslate  } from '../common/language';\r\nimport { validateMaxLength, validateInteger, validateDouble, validateEmail  } from './../components/Validator';\r\nimport { modules, modulesOptions  } from '../common/constants';\r\nimport { subscriptionModule, dateParser, toIsoString  } from '../common/utils';\r\n\r\n\r\nimport { userLocale, locales } from '../common/constants';\r\n\r\nconst ActivitiesFilter = props => {\r\n    const translate = useTranslate();\r\n    return (<ReferenceInput                          \r\n        label={translate('events.activity')}\r\n        source=\"activities_id\" \r\n        reference=\"activities\" \r\n        filter={{ target: subscriptionModule(modules.FACM) ? 1 : 0 }} \r\n        perPage={1000}\r\n        sort={{ field: 'priority', order: 'ASC' }}\r\n        alwaysOn\r\n        className=\"filterCalendar\"\r\n    >\r\n       <SelectInput optionText=\"name\" optionValue=\"id\" resettable />\r\n    </ReferenceInput>);\r\n};\r\n\r\nconst ClassroomsFilter = props => {\r\n    const translate = useTranslate();\r\n    return (<ReferenceInput                          \r\n        label={translate('events.classroom')}\r\n        source=\"classrooms_id\" \r\n        reference=\"classrooms\" \r\n        filter={{ associations_id: localStorage.getItem('associations_id'), onlyForEvents: true }}\r\n        perPage={1000}\r\n        sort={{ field: 'priority', order: 'ASC' }}\r\n        alwaysOn\r\n        className=\"filterCalendar\"\r\n        \r\n    >\r\n        <SelectInput optionText=\"name\" optionValue=\"id\" resettable />\r\n    </ReferenceInput>);\r\n};\r\n\r\nconst PublicFilter = props => {\r\n    const translate = useTranslate();\r\n    return (<SelectInput className=\"calendar-filter-select\" label={translate('events.is_public_filter')} source=\"is_public\" choices={[{id:1,name:translate('common.yes')},{id:0,name:translate('common.no')}]} resettable />);\r\n};\r\n\r\nconst ShowFacFilter = props => {\r\n    const translate = useTranslate();\r\n    if (subscriptionModule(modules.CALENDAR,modulesOptions.CALENDAR_FAC))\r\n        return (<SelectInput className=\"calendar-filter-select\" label={translate('events.show_fac_filter')} source=\"show_fac\" choices={[{id:1,name:translate('common.yes')},{id:0,name:translate('common.no')}]} resettable />);\r\n    else\r\n        return null;\r\n};\r\n\r\nconst IsInternalFilter = props => {\r\n    const translate = useTranslate();\r\n    if (subscriptionModule(modules.FACM))\r\n        return (<SelectInput className=\"calendar-filter-select\" label={translate('events.is_internal_filter')} source=\"is_internal\" choices={[{id:1,name:translate('common.yes')},{id:0,name:translate('common.no')}]} resettable />);\r\n    else\r\n        return null;\r\n};\r\n\r\nconst CalendarFilters = subscriptionModule(modules.CLASSROOMS) ? \r\n[<ActivitiesFilter alwaysOn />,<ClassroomsFilter alwaysOn />,<PublicFilter alwaysOn />,<ShowFacFilter alwaysOn />,<IsInternalFilter alwaysOn />]:\r\n[<ActivitiesFilter alwaysOn />,<PublicFilter alwaysOn />,<ShowFacFilter alwaysOn />,<IsInternalFilter alwaysOn />];        \r\n\r\nconst EventsActions = (props) => {\r\n    \r\n    const link = createRef();\r\n    const translate = useTranslate();\r\n    const dataProvider = useDataProvider();    \r\n    const notify = useNotify();\r\n    const [showDialog, setShowDialog] = useState(false);\r\n        \r\n    const exportClick = () => {\r\n        setShowDialog(true);\r\n    }\r\n    const handleCloseClick = () => {\r\n        setShowDialog(false);\r\n    }; \r\n        \r\n    const handleSubmit = async values => {\r\n        \r\n        let headers = new Headers({ Accept: 'application/json' });\r\n        headers.set('Access-Control-Allow-Origin', apiOrigin );\r\n        headers.set('Authorization', localStorage.getItem('auth'));\r\n        headers.set('Accept-Language', apiDefaultLanguage);\r\n        headers.set('Role', localStorage.getItem('active_permission'));\r\n\r\n        values.page=0;\r\n        values.size=100000;\r\n        values.sort='dateStart,ASC';\r\n\r\n        const endPoint = subscriptionModule(modules.FACM) ? '/events/export/xls' : '/events/export/pdf';\r\n\r\n        const url = new URL(apiUrl + endPoint);\r\n        url.search = new URLSearchParams(values);\r\n\r\n        const result = await fetch(url , { \r\n          headers: headers\r\n        });\r\n\r\n        const blob = await result.blob();\r\n        const href = window.URL.createObjectURL(blob);\r\n        link.current.download = translate('events.pdf_filename');\r\n        link.current.href = href;\r\n        link.current.click();\r\n        notify(translate('common.download_ok'), 'success');\r\n        setShowDialog(false);\r\n    };  \r\n                \r\n    let filterExport = {\r\n        associations_id : localStorage.getItem('associations_id'),        \r\n    }\r\n    \r\n    var now = new Date();      \r\n    var daysLater = new Date();   \r\n    daysLater.setMinutes(daysLater.getMinutes()+6*24*60);\r\n\r\n    filterExport.start_gte = now.toISOString(now);\r\n    filterExport.start_lte = daysLater.toISOString(daysLater);        \r\n            \r\n    if ( props.filterValues.activities_id ) filterExport.activities_id = props.filterValues.activities_id;\r\n    if ( props.filterValues.classrooms_id ) filterExport.classrooms_id = props.filterValues.classrooms_id;\r\n    if ( props.filterValues.is_public !=null ) filterExport.is_public = props.filterValues.is_public;\r\n    if ( props.filterValues.show_fac !=null ) filterExport.show_fac = props.filterValues.show_fac;\r\n    if ( props.filterValues.is_internal !=null ) filterExport.is_internal = props.filterValues.is_internal;\r\n                \r\n    /* Per exportació en CSV (client) */\r\n    // <ExportButton maxResults=\"100000\" filterValues={filterExport} alwaysEnabled={true} exporter={exporter} sort={{ field: 'dateStart', order: 'DESC' }} />  \r\n    \r\n    return (\r\n    <>\r\n    <TopToolbar>        \r\n        <CreateButton/>   \r\n        <Button onClick={exportClick} label={translate('ra.action.export')} ><DownloadIcon /></Button>     \r\n        <ShowButton \r\n            component={Link}\r\n            to={{\r\n                pathname: `/public/events/list?associations_id=${localStorage.getItem('associations_id')}`\r\n            }} \r\n            label={translate('public_events.view_web')}\r\n            target=\"_blank\"\r\n        />\r\n        <RefreshButton label=\"\"/>\r\n    </TopToolbar>\r\n    <Dialog\r\n            fullWidth\r\n            open={showDialog}\r\n            onClose={handleCloseClick}\r\n            disableEnforceFocus\r\n        >\r\n            <DialogTitle>{translate('events.export_title')}</DialogTitle>\r\n\r\n            <FormWithRedirect\r\n                resource=\"events\"                \r\n                initialValues={ filterExport }\r\n                save={handleSubmit}\r\n                render={({\r\n                    handleSubmitWithRedirect,\r\n                    pristine,\r\n                    saving\r\n                }) => (\r\n                    <>\r\n                        <DialogContent>\r\n                            <br />\r\n                            {translate('events.export_form_text')}\r\n                            <Grid container spacing={2}>\r\n                                <Grid item xs={6}>     \r\n                                    <DateInput fullWidth source=\"start_gte\" validate={required()} label={translate('events.export_form_from')} />\r\n                                </Grid> \r\n                                <Grid item xs={6}>     \r\n                                    <DateInput fullWidth source=\"start_lte\" validate={required()} label={translate('events.export_form_to')} />\r\n                                </Grid> \r\n                            </Grid>                                                     \r\n                        </DialogContent>\r\n                        <DialogActions>\r\n                            <Button label=\"ra.action.cancel\" onClick={handleCloseClick}>\r\n                                <IconCancel />\r\n                            </Button>\r\n                            <a role='button' ref={link} style={{ textDecoration: 'none', display: 'none' }} target=\"_blank\"></a>\r\n                            <SaveButton\r\n                                handleSubmitWithRedirect={\r\n                                    handleSubmitWithRedirect\r\n                                }\r\n                                pristine={pristine}\r\n                                saving={saving}\r\n                                icon={subscriptionModule(modules.FACM) ? <FileDownloadIcon/> : <PictureAsPdfIcon/>}\r\n                                label={subscriptionModule(modules.FACM) ? translate('common.excel') : translate('common.pdf')}\r\n                            />                  \r\n                        </DialogActions>\r\n                    </>\r\n                )}\r\n            />\r\n        </Dialog>\r\n    </>\r\n    )\r\n};\r\n\r\n/*\r\nSISTEMA VELL EXPORTACIÓ DES DE CLIENT (al final ho fem des de servidor, en un PDF)\r\nconst exporter = (items, translate, notify) => {\r\n        \r\n    const eventsForExport = items.map(event => {\r\n        var eventForExport = {\r\n            id : event.id,\r\n            title : event.title, \r\n            date_start : event.start.substr(0,10) + ' ' + event.start.substr(11,5), \r\n            date_finish : event.end.substr(0,10) + ' ' + event.end.substr(11,5), \r\n            classrooms_name: event.classrooms_name,\r\n            activities_name: event.activities_name,\r\n            is_public: event.is_public ? translate('common.yes') : translate('common.no'),\r\n            show_fac: event.show_fac ? translate('common.yes') : translate('common.no'),\r\n            is_internal: event.is_internal ? translate('common.yes') : translate('common.no') \r\n        }\r\n        return eventForExport;\r\n    });\r\n    jsonExport(eventsForExport, {\r\n        headers: ['id', 'title', 'date_start', 'date_finish', 'classrooms_name', 'activities_name','is_public','show_fac','is_internal'],\r\n        rename: [translate('events.exporter_header_id'), translate('events.exporter_header_title'), translate('events.exporter_header_date_start'), translate('events.exporter_header_date_finish'), translate('events.exporter_header_classrooms_name'), translate('events.exporter_header_activities_name'), translate('events.exporter_header_is_public')],        \r\n        \r\n    }, (err, csv) => {\r\n        const csv_new = '\\uFEFF' + csv;\r\n        downloadCSV(csv_new, translate('events.exporter_file_name') ); \r\n        notify(translate('common.download_ok'),\"success\");\r\n    });\r\n};\r\n*/\r\n\r\n\r\nconst converter = (event: any): EventInput => ({\r\n  id: String(event.id),\r\n  title: event.title,\r\n  start: event.start,\r\n  end: event.end,\r\n  backgroundColor: event.color,  \r\n  borderColor: event.color,\r\n  editable: true,\r\n  groupId: event.is_public ? '/#/public/events?events_id='+event.id : ''\r\n});\r\n\r\n\r\nexport const EventsList = (props: ListProps) => {    \r\n    \r\n    const translate = useTranslate(); \r\n    const [createDialog, setCreateDialog] = useState(false);\r\n    const [editDialog, setEditDialog] = useState(false);\r\n    const notify = useNotify();\r\n    var history = useHistory();\r\n    \r\n    const handleFailure = (error) => {   \r\n        notify(error.message, 'error');\r\n    };\r\n    \r\n    var handleEventClick = function (clickInfo) {                        \r\n        if (clickInfo.jsEvent.target.tagName === 'svg' || clickInfo.jsEvent.target.tagName === 'path')\r\n        {\r\n            // Si cliquem sobre la icona de l'esdeveniment, entenem que volem veure l'event (cal buscar una millor solució)\r\n            window.open(clickInfo.event.groupId, '_blank');\r\n        }\r\n        else\r\n        {\r\n            // Sinó, entenem que volem editar l'event        \r\n            history.push(linkToRecord(\"events\", clickInfo.event.id));\r\n        }\r\n    };\r\n    \r\n    return (\r\n    <CompleteCalendar \r\n      {...props}\r\n      ListProps={{\r\n        perPage: 1000,\r\n        filter: {associations_id : localStorage.getItem('associations_id') } , \r\n        filters : CalendarFilters,\r\n        actions: <EventsActions/> ,\r\n        basePath: \"events\" \r\n      }}\r\n      CalendarProps={{\r\n        locale: locales[userLocale],\r\n        timeZone: timeZone,\r\n        mutationMode:\"pessimistic\",\r\n        scrollTime: \"08:00:00\",\r\n        slotDuration: '00:30:00',\r\n        slotLabelInterval: \"01:00\",\r\n        allDaySlot: false,\r\n        nowIndicator: true,\r\n        height: 700, \r\n        displayEventTime: false,\r\n        editable:true,\r\n        basePath: \"events\",\r\n        convertToEvent: converter,\r\n        eventClick: handleEventClick,\r\n        eventContent : (eventContent) => {\r\n            return(\r\n                <Box display=\"flex\" alignItems=\"center\" justifyContent=\"space-between\" className=\"events-calendar-icon\">\r\n                        <div>{eventContent.event.title}</div>\r\n                        {eventContent.event.groupId && eventContent.event.groupId.length > 0 ? <VisibilityIcon /> : null }                \r\n                </Box>\r\n                );}            \r\n        ,\r\n        /*\r\n        Usem el camp groupId per passar la URL per consultar a la web l'esdeveniment.\r\n        */\r\n       \r\n        /*select: handleDateClick,*/\r\n        /*eventDrop: function(info) {\r\n            alert('eventDrop');            \r\n        },\r\n        eventDragStop: function(info) {\r\n            alert('eventDragStop');\r\n        },\r\n        eventResize: function(info) {\r\n            alert('eventResize');\r\n        },\r\n        eventResizeStop: function(info) {\r\n            alert('eventResizeStop');\r\n        },*/\r\n      \r\n      }}\r\n      CreateDialogProps={{\r\n        title: translate('events.create'),\r\n        mutationMode:\"pessimistic\",\r\n        fullWidth: true,\r\n        maxWidth: 'lg',\r\n      }}\r\n      EditDialogProps={{\r\n        title: translate('events.edit'),\r\n        edit: true,\r\n        mutationMode:\"pessimistic\",\r\n        fullWidth: true,\r\n        maxWidth: 'lg',\r\n      }}\r\n      CreateDialogForm={<FormEvent />}      \r\n      EditDialogForm={<FormEvent />}\r\n      onFailure={handleFailure}     \r\n    >        \r\n    </CompleteCalendar> ); \r\n}\r\n\r\n\r\nconst EventToolbar = (props) => {\r\n    const redirect = useRedirect();\r\n    const notify = useNotify();\r\n    const translate = useTranslate(); \r\n    const dataProvider = useDataProvider();\r\n    \r\n    return (\r\n        <Toolbar {...props}>\r\n            \r\n            {props.record && props.record.repetitive_id && props.record.repetitive_id > 0 ?\r\n                <SaveButtonWithEditionMode />\r\n                :\r\n                <SaveButton {...props} transform={ (data) => {\r\n                    const data1 = data;\r\n                    if (data1.classrooms_id > 0)\r\n                    {\r\n                        /* \"Nyapa\" per a recuperar el color de la classroom. Es necessita per a actualitzar el calendari amb el nou esdeveniment */\r\n                        let color = localStorage.getItem('classrooms_color') ? localStorage.getItem('classrooms_color') : null;\r\n                        return ( {...data1 , color: color });            \r\n                    }\r\n                    else\r\n                        return ( {...data1 , color: null });\r\n                }} />\r\n            } \r\n            {props.record && props.record.repetitive_id && props.record.repetitive_id > 0 ?\r\n                <DeleteButtonWithEditionMode />\r\n                :\r\n                <DeleteButton undoable={false} className=\"event_button_delete\" />\r\n            } \r\n            \r\n        </Toolbar>\r\n    );\r\n};\r\n\r\n\r\n               \r\nexport const SaveButtonWithEditionMode = ({ ...props }) => {\r\n\r\n    const [showDialog, setShowDialog] = useState(false);\r\n    const notify = useNotify();\r\n    const refresh = useRefresh();    \r\n    const translate = useTranslate();  \r\n    const dataProvider = useDataProvider();\r\n    const redirect = useRedirect();\r\n    const formState = useFormState();\r\n\r\n    const [update, { loading, error }] = useUpdate();\r\n\r\n    const handleClick = () => {\r\n        setShowDialog(true);\r\n    };\r\n\r\n    const handleCloseClick = () => {\r\n        setShowDialog(false);\r\n    };\r\n\r\n    const handleSubmit = async values => {\r\n            \r\n        update(\r\n            { \r\n                type: 'update', \r\n                resource: 'events', \r\n                payload : { id: values.id, data : values }\r\n            },\r\n            {\r\n                onSuccess: ({ data }) => {\r\n                    setShowDialog(false);\r\n                    redirect('/events');\r\n                    refresh();\r\n                },\r\n                onFailure: ( error ) => {\r\n                    notify(error.message, 'error');\r\n                    setShowDialog(false);\r\n                }\r\n            }\r\n        );\r\n    };    \r\n    \r\n    return (\r\n        <>\r\n            <Button size=\"medium\" variant=\"contained\" onClick={handleClick} label={translate('events.repetitive_mode_edition_save')} startIcon={<Save />} />\r\n\r\n            <Dialog\r\n                fullWidth\r\n                open={showDialog}\r\n                onClose={handleCloseClick}\r\n                aria-label={translate('remittances.status_form')}\r\n                disableEnforceFocus\r\n            >\r\n                <DialogTitle>{translate('events.repetitive_mode_edition_title_save')}</DialogTitle>\r\n\r\n                <FormWithRedirect\r\n                    resource=\"remittances_users_items\"\r\n                    save={handleSubmit}\r\n                    initialValues={{ edition_mode : 0 , ...formState.values }}\r\n                    render={({\r\n                        handleSubmitWithRedirect,\r\n                        pristine,\r\n                        saving\r\n                    }) => (\r\n                        <>\r\n                            <DialogContent>\r\n                                <Grid container spacing={2}>\r\n                                    <Grid item xs={12}>     \r\n                                        <RadioButtonGroupInput label=\"\" row={false} source=\"edition_mode\" choices={[\r\n                                            { id: 0, name: translate('events.repetitive_mode_edition_only_one') },\r\n                                            { id: 1, name: translate('events.repetitive_mode_edition_only_future') },\r\n                                            { id: 2, name: translate('events.repetitive_mode_edition_all') },\r\n                                        ]} />\r\n                                    </Grid> \r\n                                </Grid>                                                     \r\n                            </DialogContent>\r\n                            <DialogActions>\r\n                                <Button label=\"ra.action.cancel\" onClick={handleCloseClick} disabled={loading} >\r\n                                    <IconCancel />\r\n                                </Button>\r\n                                <SaveButton\r\n                                    handleSubmitWithRedirect={\r\n                                        handleSubmitWithRedirect\r\n                                    }\r\n                                    pristine={pristine}\r\n                                    saving={saving}\r\n                                    disabled={loading}\r\n                                />\r\n                            </DialogActions>\r\n                        </>\r\n                    )}\r\n                />\r\n            </Dialog>\r\n        </>\r\n    );\r\n}\r\n\r\n\r\nexport const DeleteButtonWithEditionMode = ({ ...props }) => {\r\n\r\n    const [showDialog, setShowDialog] = useState(false);\r\n    const notify = useNotify();\r\n    const refresh = useRefresh();    \r\n    const translate = useTranslate();  \r\n    const dataProvider = useDataProvider();\r\n    const redirect = useRedirect();\r\n\r\n    const [update, { loading, error }] = useUpdate();\r\n\r\n    const handleClick = () => {\r\n        setShowDialog(true);\r\n    };\r\n\r\n    const handleCloseClick = () => {\r\n        setShowDialog(false);\r\n    };\r\n\r\n    const handleSubmit = async values => {\r\n        \r\n        if (window.confirm(translate('events.repetitive_mode_edition_delete_confirmation')))\r\n            if (window.confirm(translate('events.repetitive_mode_edition_delete_confirmation_2')))\r\n                dataProvider.delete('events/' + values.edition_mode , { id: values.id })\r\n                    .then(( { data } ) => {   \r\n                        setShowDialog(false);\r\n                        redirect('/events');\r\n                        refresh();\r\n                    })\r\n                    .catch(error => {     \r\n                        notify(error.message, 'error');\r\n                        setShowDialog(false);\r\n                    });\r\n            else\r\n                setShowDialog(false);\r\n        else\r\n            setShowDialog(false);\r\n            \r\n    };    \r\n    \r\n\r\n    return (\r\n        <>\r\n            <Button size=\"medium\" variant=\"text\" onClick={handleClick} label={translate('events.repetitive_mode_edition_delete')} startIcon={<DeleteIcon />} className=\"event_button_delete\" />\r\n\r\n            <Dialog\r\n                fullWidth\r\n                open={showDialog}\r\n                onClose={handleCloseClick}\r\n                aria-label={translate('remittances.status_form')}\r\n                disableEnforceFocus\r\n            >\r\n                <DialogTitle>{translate('events.repetitive_mode_edition_title_delete')}</DialogTitle>\r\n\r\n                <FormWithRedirect\r\n                    resource=\"remittances_users_items\"\r\n                    save={handleSubmit}\r\n                    initialValues={{ edition_mode : 0 , id: props.record.id }}\r\n                    render={({\r\n                        handleSubmitWithRedirect,\r\n                        pristine,\r\n                        saving\r\n                    }) => (\r\n                        <>\r\n                            <DialogContent>\r\n                                <Grid container spacing={2}>\r\n                                    <Grid item xs={12}>     \r\n                                        <RadioButtonGroupInput label=\"\" row={false} source=\"edition_mode\" choices={[\r\n                                            { id: 0, name: translate('events.repetitive_mode_edition_only_one') },\r\n                                            { id: 1, name: translate('events.repetitive_mode_edition_only_future') },\r\n                                            { id: 2, name: translate('events.repetitive_mode_edition_all') },\r\n                                        ]} />\r\n                                    </Grid> \r\n                                </Grid>                                                     \r\n                            </DialogContent>\r\n                            <DialogActions>\r\n                                <Button label=\"ra.action.cancel\" onClick={handleCloseClick} disabled={loading} >\r\n                                    <IconCancel />\r\n                                </Button>\r\n                                <SaveButton \r\n                                    handleSubmitWithRedirect={\r\n                                        handleSubmitWithRedirect\r\n                                    }\r\n                                    pristine={pristine}\r\n                                    saving={saving}\r\n                                    disabled={loading}\r\n                                    label={translate('events.repetitive_mode_edition_delete')}\r\n                                    icon={<DeleteIcon />}\r\n                                />   \r\n                                \r\n                            </DialogActions>\r\n                        </>\r\n                    )}\r\n                />\r\n            </Dialog>\r\n        </>\r\n    );\r\n}\r\n\r\n\r\nconst FormEvent = props => {\r\n    \r\n    const translate = useTranslate(); \r\n    const [editDialog, setEditDialog] = useState(false);\r\n    const [createDialog, setCreateDialog] = useState(false);\r\n    const [create, { loading }] = useCreate('events');\r\n    const notify = useNotify();\r\n    const refresh = useRefresh();  \r\n    var redirect = useRedirect();\r\n    const location = useLocation();\r\n    const dataProvider = useDataProvider();\r\n    const classes = useStyles();\r\n    const [cities, setCities] = useState();\r\n                        \r\n    const params = parse(location.search);\r\n    \r\n    \r\n    \r\n    if (params.start && params.end)\r\n    {\r\n        var dt_start = params.start;\r\n        var dt_end = params.end;\r\n    }\r\n    else\r\n    {        \r\n        var now = new Date();      \r\n        var hoursLater = new Date();   \r\n        hoursLater.setMinutes(hoursLater.getMinutes()+2*60);\r\n    \r\n        var dt_start = toIsoString(now);\r\n        var dt_end = toIsoString(hoursLater);\r\n    }\r\n    \r\n    //const today = new Date().toISOString().slice(0, 10);\r\n    const today = dt_start;\r\n                                    \r\n    return (\r\n        <TabbedForm\r\n            {...props}            \r\n            initialValues={{ associations_id: localStorage.getItem('associations_id'), start: dt_start, end: dt_end, repetitive_limit: today , repetitive_days: [], reminder: 0, alert_days: -1 }}\r\n            mutationMode=\"pessimistic\"\r\n            toolbar={<EventToolbar {...props}  />} \r\n            title=\"\"   \r\n        >        \r\n            <FormTab\r\n                label={translate('events.data')}\r\n                contentClassName={classes.tab}\r\n                path=\"\"   \r\n            > \r\n            \r\n            <Grid container spacing={1} >\r\n                <Grid item xs={12} sm={7}>\r\n                        \r\n                        \r\n                    <Grid container spacing={1} >\r\n                        <Grid item xs={12} sm={subscriptionModule(modules.CLASSROOMS) ? 6 : 12}>\r\n\r\n                            <ReferenceInput \r\n                                fullWidth \r\n                                label={translate('events.activity')} \r\n                                source=\"activities_id\" \r\n                                reference=\"activities\" \r\n                                filter={{ target: subscriptionModule(modules.FACM) ? 1 : 0 }} \r\n                                perPage={1000}\r\n                                sort={{ field: 'priority', order: 'ASC' }}\r\n                            >\r\n                               <SelectInput optionText=\"name\" optionValue=\"id\" validate={[required()]} />\r\n                            </ReferenceInput>                    \r\n                        </Grid>\r\n                        \r\n                        { subscriptionModule(modules.CLASSROOMS) ?\r\n                        <Grid item xs={12} sm={6}>\r\n                            <ClassroomInput />                                \r\n                        </Grid>\r\n                        : null }\r\n\r\n                        <ColorInputHidden />\r\n\r\n                        <Grid item xs={12} sm={12}>\r\n                            <TextInput fullWidth source=\"title\" autoFocus label={translate('events.name')} validate={[required(),validateMaxLength(100,translate('common.validation.maxLength'))]} />                             \r\n                        </Grid>\r\n                                                \r\n                        <Grid item xs={12} sm={12}>\r\n                            <RichTextInput fullWidth source=\"description\" label={translate('common.description')} />\r\n                        </Grid>\r\n                        <Grid item xs={12} sm={6}>\r\n                            <DateTimeInput fullWidth source=\"start\" label={translate('events.start')} validate={[required()]} parse={dateParser} />\r\n                        </Grid>\r\n                        <Grid item xs={12} sm={6}>\r\n                            <DateTimeInput fullWidth source=\"end\" label={translate('events.end')} validate={[required()]} parse={dateParser} />\r\n                        </Grid>\r\n                        \r\n                        <Grid item xs={12} sm={6}>      \r\n                            <SelectInput fullWidth label={translate('bookings.reminder')} source=\"reminder\" choices={[\r\n                                { id: 0, name: translate('bookings.reminder_0') },\r\n                                { id: 1, name: translate('bookings.reminder_1') },\r\n                                { id: 2, name: translate('bookings.reminder_2') },\r\n                                { id: 3, name: translate('bookings.reminder_3') },\r\n                                { id: 4, name: translate('bookings.reminder_4') },\r\n                                { id: 5, name: translate('bookings.reminder_5') },\r\n                                { id: 6, name: translate('bookings.reminder_6') },\r\n                                { id: 7, name: translate('bookings.reminder_7') },\r\n                                { id: 8, name: translate('bookings.reminder_8') }\r\n                            ]}  />\r\n                        </Grid> \r\n                        \r\n                        { subscriptionModule(modules.ALERTS)?\r\n                        <Grid item xs={12} sm={6}>      \r\n                            <SelectInput fullWidth label={translate('events.alert_days')} source=\"alert_days\" choices={[\r\n                                { id: -1, name: translate('events.alert_days_none') },\r\n                                { id: 0, name: translate('events.alert_days_0') },\r\n                                { id: 1, name: translate('events.alert_days_1') },\r\n                                { id: 2, name: translate('events.alert_days_2') },\r\n                                { id: 3, name: translate('events.alert_days_3') },\r\n                                { id: 4, name: translate('events.alert_days_4') },\r\n                                { id: 5, name: translate('events.alert_days_5') },\r\n                                { id: 6, name: translate('events.alert_days_6') },\r\n                                { id: 7, name: translate('events.alert_days_7') },\r\n                                { id: 8, name: translate('events.alert_days_8') },\r\n                                { id: 9, name: translate('events.alert_days_9') },\r\n                                { id: 10, name: translate('events.alert_days_10') },\r\n                                { id: 11, name: translate('events.alert_days_11') },\r\n                                { id: 12, name: translate('events.alert_days_12') },\r\n                                { id: 13, name: translate('events.alert_days_13') },\r\n                                { id: 14, name: translate('events.alert_days_14') }\r\n                            ]}  />\r\n                        </Grid> : null }   \r\n                        \r\n                        <Grid item xs={12} sm={12}>\r\n                            <TextInput fullWidth source=\"tickets_url\" autoFocus label={translate('events.tickets_url')} validate={[validateMaxLength(255,translate('common.validation.maxLength'))]} />                             \r\n                        </Grid>\r\n\r\n                    </Grid>\r\n                                        \r\n                </Grid>\r\n                <Grid item xs={12} sm={1}>\r\n                </Grid>\r\n                <Grid item xs={12} sm={4}>\r\n                \r\n                    <Grid container spacing={1} >\r\n                        \r\n                        <Grid item xs={12} sm={12}>\r\n                            <BooleanInput source=\"is_public\" label={translate('events.is_public')} />\r\n                        </Grid>\r\n                        \r\n                        { subscriptionModule(modules.CALENDAR,modulesOptions.CALENDAR_FAC) || subscriptionModule(modules.CALENDAR,modulesOptions.CALENDAR_FAC_PUBLISHERS) ?\r\n                        <Grid item xs={12} sm={12}>\r\n                            <BooleanInput source=\"show_fac\" label={translate('events.show_fac')} />                            \r\n                        </Grid>\r\n                        : null }\r\n                        \r\n                        { subscriptionModule(modules.CALENDAR,modulesOptions.CALENDAR_FAC_PUBLISHERS) ?                        \r\n                        <Grid item xs={12} sm={12}>\r\n                            <ReferenceInput \r\n                                fullWidth \r\n                                label={translate('events.organizer')} \r\n                                source=\"organizers_id\" \r\n                                reference=\"organizers\" \r\n                                filter={{ associations_id: localStorage.getItem('associations_id') }}\r\n                                perPage={1000}\r\n                                sort={{ field: 'name', order: 'ASC' }}\r\n                            >\r\n                                <SelectInput optionText=\"name\" optionValue=\"id\" resettable />                        \r\n                            </ReferenceInput>              \r\n                        </Grid>\r\n                        : null }\r\n                        \r\n                        { subscriptionModule(modules.FACM) ? \r\n                        <Grid item xs={12} sm={12}>\r\n                            <BooleanInput fullWidth source=\"is_internal\" label={translate('events.is_internal')} />\r\n                        </Grid>\r\n                        : null }\r\n                        \r\n                        { subscriptionModule(modules.FACM) ?                        \r\n                        <Grid item xs={12} sm={12}>\r\n                            <UserInput source=\"users_id\" user_type={-1} disabled={false} label={translate('events.organizer')} allowEmpty={false} required={false} />\r\n                        </Grid>\r\n                        : null }\r\n                        \r\n                        <Grid item xs={12} sm={12}>\r\n                            <TextInput fullWidth source=\"address\" label={translate('events.address')} validate={[validateMaxLength(255,translate('common.validation.maxLength'))]} />                             \r\n                        </Grid>\r\n                        \r\n                        <Grid item xs={12} sm={12}>\r\n                            <CityInput />\r\n                        </Grid>\r\n                        \r\n                        { subscriptionModule(modules.FACM) ? \r\n                        <Grid item xs={12} sm={12}>\r\n                            <NumberInput fullWidth source=\"max_assistants\" label={translate('events.max_assistants')} />\r\n                        </Grid>\r\n                        : null }\r\n                        \r\n                        { !subscriptionModule(modules.FACM) ? \r\n                        <Grid item xs={12} sm={12} className=\"events_labels\">\r\n\r\n                            <ReferenceArrayInput\r\n                                source=\"labels\"\r\n                                reference=\"labels\"\r\n                                filter={{ type: 1 }}\r\n                                perPage={1000}\r\n                                sort={{ field: 'priority', order: 'ASC' }}\r\n                            >\r\n                                <CheckboxGroupInput \r\n                                    optionText=\"name\" \r\n                                    optionValue=\"id\"\r\n                                    label={translate('common.labels')}            \r\n                                    row={true}\r\n                                    className=\"checkboxGroupInputCompacted\"  \r\n                                />\r\n                            </ReferenceArrayInput>        \r\n\r\n                        </Grid>   \r\n                        : null }\r\n\r\n                        <Grid item xs={12} sm={12} className=\"generate_repetitive mt10\" >                        \r\n                            <BooleanInput source=\"repetitive\" label={translate('events.repetitive')} />\r\n                        </Grid>  \r\n\r\n                        <FormDataConsumer>  \r\n                            {({ formData, ...rest }) => formData.repetitive == true &&   \r\n\r\n                            <>\r\n                            <Grid item xs={12} sm={12} className=\"generate_repetitive\" >             \r\n\r\n                            <CheckboxGroupInput label=\"\" source=\"repetitivedays\" choices={[\r\n                                { id: 1, name: translate('common.day_week_1') },\r\n                                { id: 2, name: translate('common.day_week_2') },\r\n                                { id: 3, name: translate('common.day_week_3') },\r\n                                { id: 4, name: translate('common.day_week_4') },\r\n                                { id: 5, name: translate('common.day_week_5') },\r\n                                { id: 6, name: translate('common.day_week_6') },\r\n                                { id: 7, name: translate('common.day_week_7') },\r\n                            ]}  />\r\n\r\n                            </Grid> \r\n                            <Grid item xs={12} sm={12} className=\"generate_repetitive\" > \r\n                            <DateInput fullWidth source=\"repetitive_limit\" label={translate('events.repetitive_limit')} />\r\n                            </Grid> \r\n                            </>\r\n\r\n                            }                    \r\n                        </FormDataConsumer>  \r\n                    \r\n                    </Grid>  \r\n                                \r\n                </Grid>\r\n                \r\n            </Grid>\r\n                \r\n            </FormTab>  \r\n            \r\n            {props.record && props.record.id ? \r\n            <FormTab\r\n                label={translate('events.images')}\r\n                contentClassName={classes.tab}\r\n                path=\"images\"                 \r\n            > \r\n                <DocsList target={targets.EVENT_IMAGE} items_id={props.record.id} mark={true} mark_title={translate('events.docs_mark')} />\r\n                <br /><span>{translate('events.images_desc')}</span>\r\n            </FormTab>\r\n            : null }\r\n        \r\n            {props.record && props.record.id ? \r\n            <FormTab\r\n                label={translate('events.docs')}\r\n                contentClassName={classes.tab}\r\n                path=\"docs\"                 \r\n            > \r\n                <DocsList target={targets.EVENT} items_id={props.record.id} mark={true} mark_title={translate('events.docs_mark')} />\r\n                <br /><span>{translate('events.docs_desc')}</span>\r\n            </FormTab>\r\n            : null }\r\n        \r\n            {props.record && props.record.id ? \r\n            <FormTab\r\n                label={translate('events.bookings')}\r\n                contentClassName={classes.tab}\r\n                path=\"bookings\"                 \r\n            > \r\n                <BookingsList events_id={props.record.id} />\r\n                \r\n            </FormTab>\r\n            : null }\r\n        \r\n        </TabbedForm>\r\n    )\r\n}\r\n\r\nconst ClassroomInput = ({ valor, ...props }) => {\r\n\r\n    const translate = useTranslate(); \r\n    const dataProvider = useDataProvider();\r\n    const { change } = useForm();\r\n  \r\n    const handleChangeClassroom = (event) => {\r\n        \r\n        if (event.target && event.target.value && event.target.value > 0)\r\n        {\r\n            const classrooms_id = event.target.value;\r\n\r\n            dataProvider.getOne('classrooms', { id: classrooms_id })\r\n            .then(( { data } ) => {   \r\n                change('address', data.address);\r\n                change('cities_id', data.cities_id);\r\n            })\r\n            .catch(error => {                \r\n\r\n            });\r\n        }        \r\n    };\r\n  \r\n    return (\r\n      <ReferenceInput \r\n          fullWidth \r\n          label={translate('events.classroom')} \r\n          source=\"classrooms_id\" \r\n          reference=\"classrooms\" \r\n          filter={{ associations_id: localStorage.getItem('associations_id'), onlyForEvents: true }}\r\n          perPage={1000}\r\n          sort={{ field: 'priority', order: 'ASC' }}\r\n          onChange={handleChangeClassroom}\r\n      >\r\n          <SelectInput optionText=\"name\" optionValue=\"id\" resettable  />                        \r\n      </ReferenceInput>  \r\n      );\r\n};\r\n\r\nexport const ColorInputHidden = ({ ...props }) => {\r\n    \r\n    const dataProvider = useDataProvider();\r\n    const { values } = useFormState();\r\n    const [color, setColor] = React.useState(false);      \r\n    \r\n    useEffect(() => {\r\n        \r\n        if (values.classrooms_id)\r\n            dataProvider.getOne('classrooms', { id: values.classrooms_id })\r\n            .then(( { data } ) => {   \r\n                setColor(data.color);\r\n            })\r\n            .catch(error => {                \r\n                setColor(null);\r\n            });\r\n        else\r\n            setColor(null);\r\n        \r\n      }, [values.classrooms_id]);\r\n    \r\n    if (!color) {\r\n        localStorage.removeItem('classrooms_color');        \r\n    }\r\n    else{\r\n        localStorage.setItem('classrooms_color', color );\r\n    }\r\n    return null;\r\n  \r\n}\r\n\r\nconst useStyles = makeStyles({\r\n    comment: {\r\n        maxWidth: '100%',\r\n        overflow: 'hidden',\r\n        textOverflow: 'ellipsis',\r\n        whiteSpace: 'nowrap',\r\n    },\r\n    tab: {\r\n        maxWidth: '100%',\r\n        display: 'block',\r\n    },\r\n});\r\n\r\n\r\n","import React, { useState } from 'react';\r\n\r\nimport {\r\n  List, \r\n  Datagrid,\r\n  TextField,\r\n  DeleteButton,\r\n  Edit,\r\n  SelectInput,\r\n  TextInput,\r\n  Button ,\r\n  Create,\r\n  SimpleForm,\r\n  CreateButton ,\r\n  TopToolbar,\r\n  FormTab,\r\n  TabbedForm,\r\n  ReferenceManyField,\r\n  FormDataConsumer,\r\n  useListContext, required,NumberInput,BooleanInput,SelectField,  FunctionField, ResourceContextProvider, useCreate, useRefresh, FormWithRedirect, Toolbar, SaveButton,\r\n  useNotify,\r\n  useRedirect,\r\n  DateField  , \r\n  Filter, \r\n  downloadCSV,\r\n  DateInput,\r\n  SimpleFormIterator,\r\n  ArrayInput,BooleanField, useUpdate\r\n} from 'react-admin';\r\n\r\nimport { useEffect } from 'react';\r\nimport {useHistory} from 'react-router-dom';\r\n\r\nimport jsonExport from 'jsonexport/dist';\r\n\r\nimport ArrowBackIosNewIcon from '@mui/icons-material/ArrowBackIosNew';\r\n\r\nimport { AccordionSection  } from '@react-admin/ra-form-layout';\r\n\r\n\r\nimport { makeStyles } from '@material-ui/core/styles';\r\n\r\nimport Divider from '@mui/material/Divider';\r\n\r\n\r\nimport { useTranslate  } from '../common/language';\r\n\r\nimport Typography from '@mui/material/Typography';\r\n\r\n\r\nimport RichTextInput from 'ra-input-rich-text';\r\n\r\n\r\nimport { TextFieldShow } from '../components/TextFieldShow';\r\n\r\nimport Grid from '@mui/material/Grid';\r\nimport Avatar from '@mui/material/Avatar';\r\nimport IconContentAdd from '@material-ui/icons/Add';\r\nimport IconCancel from '@material-ui/icons/Cancel';\r\nimport GavelIcon from '@material-ui/icons/Gavel';\r\nimport EditIcon from '@material-ui/icons/Edit';\r\n\r\nimport Dialog from '@material-ui/core/Dialog';\r\nimport DialogTitle from '@material-ui/core/DialogTitle';\r\nimport DialogContent from '@material-ui/core/DialogContent';\r\nimport DialogActions from '@material-ui/core/DialogActions';\r\nimport Chip from '@material-ui/core/Chip';\r\n\r\nimport { EditableDatagrid, RowForm } from '@react-admin/ra-editable-datagrid';\r\n\r\nimport { ColorInput } from 'react-admin-color-input';\r\n\r\nimport { DocsList, DocsListShow } from './docs';\r\nimport { targets, modules, choicesClassroomsType  } from './../common/constants';\r\nimport { dateOnlyToCatalan, subscriptionModule, setActivePermissionData, structArrayToIdList } from './../common/utils';  \r\n\r\nimport { CityInput } from './../components/Inputs';\r\nimport { ExportButton } from './../components/ExportButton';\r\n\r\nimport { RenderBoolean } from '../components/User';\r\n\r\nimport Box from '@material-ui/core/Box';\r\n\r\nimport { Link } from 'react-router-dom';\r\n\r\nimport { validateMaxLength, validateInteger  } from './../components/Validator';\r\n\r\nexport const CustomFieldsOptionsList = (props) => {\r\n  const translate = useTranslate();  \r\n    \r\n  let basePath='/custom_fields_options'; \r\n  let resource = 'custom_fields_options';\r\n  let strRedirect = '/custom_fields/' + props.custom_fields_id + '/options';\r\n    \r\n  return (\r\n    <ResourceContextProvider value={resource}>\r\n      <List \r\n        basePath={basePath}   \r\n        filter={{ associations_id : localStorage.getItem('associations_id'), custom_fields_id: props.custom_fields_id }}  \r\n        actions={props.show ?  <span/> : <ListActions custom_fields_id={props.custom_fields_id} />}    \r\n        empty={props.show ?  <span/> : <ListActions custom_fields_id={props.custom_fields_id} />}        \r\n        bulkActionButtons={false}          \r\n        perPage={1000}   \r\n        pagination={false}\r\n        sort={{ field: 'priority', order: 'ASC' }} \r\n        label=\"\"  \r\n        title=\"\"  \r\n        resource={resource}        \r\n      >        \r\n        <Datagrid className=\"header-marked\">                                  \r\n          <TextField source=\"name\" label={translate('custom_fields_options.name')} sortable={false} /> \r\n          { !props.show ? <TextField source=\"priority\" label={translate('custom_fields_options.priority')} sortable={false} /> : null }\r\n          { !props.show ? <CustomFieldsOptionsEditButton label=\"\"/> : null }\r\n          { !props.show ? <DeleteButton undoable={false} redirect={strRedirect} label=\"\" confirmTitle={translate('custom_fields_options.delete_title')}\r\n        confirmContent={translate('custom_fields_options.delete_ask')} /> : null }\r\n        </Datagrid>        \r\n      </List>\r\n    </ResourceContextProvider>\r\n  );\r\n};\r\n\r\nconst ListActions = (props) => {            \r\n    return (\r\n    <TopToolbar>     \r\n        <MyCreateButton {...props} />            \r\n    </TopToolbar>\r\n    );\r\n};\r\n\r\nconst CustomFieldsOptionsEditButton = ({ ...props }) => {\r\n\r\n  const [showDialog, setShowDialog] = useState(false);\r\n    \r\n  const notify = useNotify();\r\n  const refresh = useRefresh();    \r\n  const translate = useTranslate();  \r\n\r\n  const [update, { loading, error }] = useUpdate();\r\n\r\n  const handleClick = () => {\r\n    setShowDialog(true);\r\n  };\r\n\r\n  const handleCloseClick = () => {\r\n    setShowDialog(false);\r\n  };\r\n\r\n  const handleSubmit = async values => {\r\n    update(\r\n      { \r\n        type: 'update', \r\n        resource: 'custom_fields_options', \r\n        payload : { id: values.id, data : values }\r\n      },\r\n      {\r\n        onSuccess: ({ data }) => {\r\n          setShowDialog(false);\r\n          refresh();\r\n        },\r\n        onFailure: ( error ) => {\r\n          notify(error.message, 'error');\r\n        }\r\n      }\r\n    );\r\n  };    \r\n\r\n  return (\r\n    <>\r\n      <Button onClick={handleClick} label=\"\" startIcon={<EditIcon />} />\r\n\r\n      <Dialog\r\n        fullWidth\r\n        open={showDialog}\r\n        onClose={handleCloseClick}\r\n        aria-label={translate('custom_fields_options.edit')}\r\n      >\r\n        <DialogTitle>{translate('custom_fields_options.edit')}</DialogTitle>\r\n\r\n        <FormWithRedirect\r\n          resource=\"custom_fields_options\"\r\n          save={handleSubmit}\r\n          initialValues={ props.record }\r\n          render={({\r\n            handleSubmitWithRedirect,\r\n            pristine,\r\n            saving\r\n          }) => (\r\n            <>\r\n              <FormContent />\r\n              <DialogActions>\r\n                <Button label=\"ra.action.cancel\" onClick={handleCloseClick} disabled={loading} >\r\n                  <IconCancel />\r\n                </Button>\r\n                <SaveButton\r\n                  handleSubmitWithRedirect={\r\n                    handleSubmitWithRedirect\r\n                  }\r\n                  pristine={pristine}\r\n                  saving={saving}\r\n                  disabled={loading}\r\n                />\r\n              </DialogActions>\r\n            </>\r\n          )}\r\n        />\r\n      </Dialog>\r\n    </>\r\n  );\r\n};\r\n\r\nexport const CustomFieldsOptionsShow = (props) => {\r\n  const translate = useTranslate();  \r\n    \r\n  let basePath='/custom_fields_options'; \r\n  let resource = 'custom_fields_options';\r\n  let strRedirect = 'custom_fields_options';\r\n    \r\n  return (\r\n    <ResourceContextProvider value={resource}>\r\n      <List \r\n        basePath={basePath}   \r\n        filter={{ associations_id : localStorage.getItem('associations_id'), custom_fields_id: props.custom_fields_id  }}  \r\n        actions={props.show ? <span/> : <ListActions custom_fields_id={props.custom_fields_id} />}    \r\n        empty={props.show ? <span/> : <ListActions custom_fields_id={props.custom_fields_id} />}        \r\n        bulkActionButtons={false}          \r\n        perPage={1000}   \r\n        pagination={false}\r\n        sort={{ field: 'priority', order: 'ASC' }} \r\n        label=\"\"  \r\n        title=\"\"  \r\n        resource={resource}        \r\n      >        \r\n        <Datagrid>                                  \r\n          <TextField source=\"name\" label={translate('custom_fields_options.name')} sortable={false} /> \r\n          <TextField source=\"priority\" label={translate('custom_fields_options.priority')} sortable={false} /> \r\n        </Datagrid>        \r\n      </List>\r\n    </ResourceContextProvider>\r\n  );\r\n};\r\n\r\nconst MyFilter = (props) => {\r\n    const translate = useTranslate(); \r\n    return (\r\n    <Filter {...props}>         \r\n        <TextInput label={translate('common.search')} source=\"q\" alwaysOn validate={[validateMaxLength(50,translate('common.validation.maxLength'))]} resettable />    \r\n    </Filter>\r\n);\r\n};\r\n\r\n\r\nconst ListActionsOptions = (props) => {\r\n    const translate = useTranslate(); \r\n        \r\n    return (\r\n    <TopToolbar>     \r\n        <MyCreateButton {...props} />            \r\n    </TopToolbar>\r\n    );\r\n};\r\n\r\nexport const MyCreateButton = ({ ...props }) => {\r\n\r\n  const [showDialog, setShowDialog] = useState(false);\r\n  const [create, { loading }] = useCreate('custom_fields_options');\r\n  const notify = useNotify();\r\n  const refresh = useRefresh();    \r\n  const translate = useTranslate();  \r\n  const redirect = useRedirect();\r\n  const history = useHistory();\r\n        \r\n  const handleClick = () => {\r\n    setShowDialog(true);\r\n  };\r\n\r\n  const handleCloseClick = () => {\r\n    setShowDialog(false);\r\n  };\r\n\r\n  const handleSubmit = async values => {\r\n    create(            \r\n      { payload: { data: values } },\r\n      {\r\n        onSuccess: ({ data }) => {                      \r\n          refresh();        \r\n        },\r\n        onFailure: ( error ) => {\r\n          notify( error.message , 'error');\r\n        }\r\n      }\r\n    );\r\n  };\r\n    \r\n  return (\r\n    <>            \r\n      <Button onClick={handleClick} label={translate('custom_fields_options.create')}>\r\n        <IconContentAdd />                \r\n      </Button>\r\n\r\n      <Dialog\r\n        fullWidth\r\n        open={showDialog}\r\n        onClose={handleCloseClick}\r\n        aria-label={translate('custom_fields_options.create')}\r\n      >\r\n        <DialogTitle>{translate('custom_fields_options.create')}</DialogTitle>\r\n\r\n        <FormWithRedirect\r\n          save={handleSubmit}\r\n          initialValues={{ associations_id: localStorage.getItem('associations_id'), custom_fields_id: props.custom_fields_id, priority: 0 }}\r\n          render={({\r\n            handleSubmitWithRedirect,\r\n            pristine,\r\n            saving\r\n          }) => (\r\n            <>\r\n              <FormContent />              \r\n              <DialogActions>\r\n                <Button label=\"ra.action.cancel\" onClick={handleCloseClick} disabled={loading} >\r\n                  <IconCancel />\r\n                </Button>\r\n                <SaveButton\r\n                  handleSubmitWithRedirect={\r\n                    handleSubmitWithRedirect\r\n                  }\r\n                  pristine={pristine}\r\n                  saving={saving}\r\n                  disabled={loading}\r\n                />\r\n              </DialogActions>\r\n            </>\r\n          )}\r\n        />\r\n      </Dialog>\r\n    </>\r\n  );\r\n};\r\n\r\n\r\nconst FormContent = (props) => {\r\n\r\n  const translate = useTranslate(); \r\n  return (\r\n      <DialogContent>\r\n        <Grid container spacing={1}>                                     \r\n          <Grid item xs={8}>                                               \r\n            <TextInput fullWidth source=\"name\" label={translate('common.name')} validate={[required(),validateMaxLength(255,translate('common.validation.maxLength'))]} />\r\n          </Grid>\r\n          <Grid item xs={4}>                                               \r\n            <NumberInput fullWidth source=\"priority\" label={translate('custom_fields_options.priority')} validate={[]} />\r\n          </Grid>\r\n        </Grid> \r\n      </DialogContent>\r\n  );\r\n};\r\n\r\n\r\nconst MyActions = ({ basePath, data, resource }) => {\r\n\r\n  const translate = useTranslate();   \r\n    \r\n  let linkBack = '/custom_fields_options';\r\n        \r\n  return (\r\n    <>\r\n      <TopToolbar>\r\n        <Grid container spacing={2}>\r\n          <Grid item xs={12}>   \r\n            <div style={{\r\n              display: 'flex',\r\n              alignItems: 'center',\r\n              flexWrap: 'wrap',\r\n            }}>\r\n              <Link\r\n                to={linkBack}\r\n                className=\"\"\r\n              >\r\n                <ArrowBackIosNewIcon className=\"mr-2\" />                        \r\n              </Link>\r\n              <Typography variant=\"h5\" className=\"grey8\">\r\n                {data && data.name ? data.name : null}                    \r\n              </Typography>\r\n            </div>  \r\n                \r\n          </Grid>\r\n        </Grid> \r\n      </TopToolbar>\r\n    </>\r\n  );\r\n};\r\n\r\n\r\nexport const CustomFieldsOptionsEdit  = ({ id, ...props }) => {\r\n\r\n  const translate = useTranslate();        \r\n  const classes = useStyles();\r\n  const notify = useNotify();\r\n  const refresh = useRefresh();\r\n  const redirect = useRedirect();\r\n\r\n  let strRedirect =  `/custom_fields/${id}/options`;    \r\n    \r\n  const onSuccess = ({ data }) => {\r\n    notify(translate('common.notification.updated'));        \r\n    redirect(strRedirect);        \r\n  };\r\n        \r\n  return (\r\n\r\n    <Edit \r\n      title={<ElementTitle {...props}  />} \r\n      {...props} \r\n      id={id}\r\n      mutationMode=\"pessimistic\"\r\n      actions={<MyActions {...props} />}\r\n      onSuccess={onSuccess}   \r\n    >\r\n        \r\n      <TabbedForm        \r\n        toolbar={<FormToolbar />}\r\n      >    \r\n        <FormTab\r\n          label={translate('classrooms.data')}\r\n          contentClassName={classes.tab}\r\n          path=\"\" \r\n                \r\n        > \r\n               \r\n          <FormDataConsumer>\r\n            {({ formData, ...rest }) => \r\n              <>                              \r\n                <br/>\r\n                <Grid container spacing={2}>\r\n                  <Grid item xs={3}>   \r\n            <TextInput fullWidth source=\"custom_fields_id\" label={translate('custom_fields_options.custom_fields_id')} validate={[validateMaxLength(255,translate('common.validation.maxLength'))]} />\r\n                  </Grid> \r\n                  <Grid item xs={3}>   \r\n            <TextInput fullWidth source=\"name\" label={translate('custom_fields_options.name')} validate={[validateMaxLength(255,translate('common.validation.maxLength'))]} />\r\n                  </Grid> \r\n                  <Grid item xs={3}>   \r\n            <TextInput fullWidth source=\"priority\" label={translate('custom_fields_options.priority')} validate={[validateMaxLength(255,translate('common.validation.maxLength'))]} />\r\n                  </Grid> \r\n                  <Grid item xs={12}>   \r\n                  </Grid> \r\n                </Grid>                                \r\n\r\n              </>\r\n            }\r\n          </FormDataConsumer>\r\n\r\n        </FormTab> \r\n        \r\n    \r\n      </TabbedForm>\r\n    </Edit>\r\n  );\r\n};\r\n\r\nconst ElementTitle = ({ record, ...props }) => {    \r\n  const translate = useTranslate(); \r\n  return (<span>{translate('common.edit')} {record ? `\"${record.name}\"` : ''}</span>);\r\n};\r\n\r\nconst FormToolbar = ({ id , ...props }) => {\r\n    \r\n  let redirect = '/custom_fields_options';\r\n  const translate = useTranslate();   \r\n    \r\n  return (\r\n    <Toolbar {...props} className=\"user_form_toolbar\" >\r\n      <SaveButton />\r\n      <DeleteButton \r\n        redirect={redirect} \r\n        mutationMode=\"pessimistic\" \r\n        confirmTitle={translate('custom_fields_options.delete_title')}\r\n        confirmContent={translate('custom_fields_options.delete_ask')} \r\n      />\r\n    </Toolbar>\r\n  );\r\n};\r\n\r\nconst useStyles = makeStyles({\r\n  comment: {\r\n    maxWidth: '100%',\r\n    overflow: 'hidden',\r\n    textOverflow: 'ellipsis',\r\n    whiteSpace: 'nowrap',\r\n  },\r\n  tab: {\r\n    maxWidth: '100%',\r\n    display: 'block',\r\n  },\r\n});\r\n\r\n\r\n\r\n\r\n\r\n\r\nexport const CustomFieldsOptionsCreate  = ({ id, ...props }) => {\r\n\r\n  const translate = useTranslate();   \r\n  const [info, setInfo] = useState();\r\n    \r\n  return (\r\n\r\n    <Create {...props} >\r\n      <SimpleForm \r\n        initialValues={{ associations_id: localStorage.getItem('associations_id') }}\r\n        redirect=\"list\"\r\n      >                \r\n        <Grid container spacing={2}>\r\n          <Grid item xs={12}>                    \r\n            <Typography variant=\"h5\" className=\"grey\">{translate('custom_fields_options.create')}</Typography>\r\n          </Grid>  \r\n          <Grid item xs={11}>                    \r\n            <TextInput fullWidth source=\"name\" label={translate('common.name')} validate={[required(),validateMaxLength(255,translate('common.validation.maxLength'))]} />\r\n          </Grid>          \r\n        </Grid>   \r\n\r\n      </SimpleForm> \r\n    </Create>\r\n  );\r\n};\r\n","import React, { useState , useMemo } from 'react';\r\n\r\nimport {\r\n  List, \r\n  Datagrid,\r\n  TextField,\r\n  DeleteButton,\r\n  Edit,\r\n  SelectInput,\r\n  TextInput,\r\n  Button ,\r\n  Create,\r\n  SimpleForm,\r\n  CreateButton ,\r\n  TopToolbar,\r\n  FormTab,\r\n  TabbedForm,\r\n  ReferenceManyField,\r\n  FormDataConsumer,\r\n  useListContext, required,NumberInput,BooleanInput,SelectField,  FunctionField, ResourceContextProvider, useCreate, useRefresh, FormWithRedirect, Toolbar, SaveButton,\r\n  useNotify,\r\n  useRedirect,\r\n  DateField  , \r\n  Filter, \r\n  downloadCSV,\r\n  DateInput,\r\n  SimpleFormIterator,\r\n  ArrayInput,BooleanField, TabbedShowLayout, Tab, ShowController, Show\r\n} from 'react-admin';\r\n\r\nimport { useEffect } from 'react';\r\n\r\nimport jsonExport from 'jsonexport/dist';\r\n\r\nimport ArrowBackIosNewIcon from '@mui/icons-material/ArrowBackIosNew';\r\n\r\nimport { AccordionSection  } from '@react-admin/ra-form-layout';\r\n\r\n\r\nimport { makeStyles } from '@material-ui/core/styles';\r\n\r\nimport Divider from '@mui/material/Divider';\r\n\r\n\r\nimport { useTranslate  } from '../common/language';\r\n\r\nimport Typography from '@mui/material/Typography';\r\n\r\n\r\nimport RichTextInput from 'ra-input-rich-text';\r\n\r\n\r\nimport { TextFieldShow } from '../components/TextFieldShow';\r\n\r\nimport Grid from '@mui/material/Grid';\r\nimport Avatar from '@mui/material/Avatar';\r\nimport IconContentAdd from '@material-ui/icons/Add';\r\nimport IconCancel from '@material-ui/icons/Cancel';\r\nimport GavelIcon from '@material-ui/icons/Gavel';\r\n\r\nimport Dialog from '@material-ui/core/Dialog';\r\nimport DialogTitle from '@material-ui/core/DialogTitle';\r\nimport DialogContent from '@material-ui/core/DialogContent';\r\nimport DialogActions from '@material-ui/core/DialogActions';\r\nimport Chip from '@material-ui/core/Chip';\r\n\r\nimport { ColorInput } from 'react-admin-color-input';\r\n\r\nimport { DocsList, DocsListShow } from './docs';\r\nimport { targets, modules, choicesClassroomsType, choicesCustomFieldsType  } from './../common/constants';\r\nimport { dateOnlyToCatalan, setActivePermissionData, structArrayToIdList, subscriptionModule } from './../common/utils';  \r\nimport { CustomFieldsOptionsShow, CustomFieldsOptionsList,CustomFieldsOptionsEdit, CustomFieldsOptionsCreate  } from './../resources/custom_fields_options';\r\n\r\nimport { CityInput } from './../components/Inputs';\r\nimport { ExportButton } from './../components/ExportButton';\r\n\r\nimport { RenderBoolean } from '../components/User';\r\n\r\nimport Box from '@material-ui/core/Box';\r\n\r\nimport { Link } from 'react-router-dom';\r\n\r\nimport { validateMaxLength, validateInteger, validateIntegerLowerOrEqualThan  } from './../components/Validator';\r\n\r\n\r\nexport const CustomFieldsList = (props) => {\r\n  const translate = useTranslate();  \r\n    \r\n  return (\r\n    \r\n    <>\r\n    <br/>\r\n    <Typography variant=\"h5\" className=\"grey8\" align=\"center\">\r\n      {translate('custom_fields.main_menu_title')}              \r\n    </Typography> \r\n    <Box sx={{ width: '100%', maxWidth: '90%', bgcolor: 'background.paper', padding: '25px' }} className=\"settings_box\" >\r\n    <TabbedShowLayout syncWithLocation={false}>\r\n        <Tab label={translate('custom_fields.target_' + targets.USER)} fullWidth>\r\n            <CustomFieldsListTarget target={targets.USER} />\r\n        </Tab>\r\n        { subscriptionModule(modules.FEDERATION) ?\r\n            <Tab label={translate('custom_fields.target_' + targets.USER_FEDERATION)} fullWidth>\r\n                <CustomFieldsListTarget target={targets.USER_FEDERATION} />\r\n            </Tab>\r\n        : null }\r\n        { subscriptionModule(modules.FEDERATION) ?\r\n            <Tab label={translate('custom_fields.target_' + targets.USER_FEDERATION_SPORTS)} fullWidth>\r\n                <CustomFieldsListTarget target={targets.USER_FEDERATION_SPORTS} />\r\n            </Tab>\r\n        : null }\r\n    }\r\n    </TabbedShowLayout>\r\n    </Box>\r\n    </>\r\n            \r\n  );\r\n};\r\n\r\n\r\nexport const CustomFieldsListTarget = (props) => {\r\n  const translate = useTranslate();  \r\n  \r\n  let basePath='/custom_fields'; \r\n  let resource = 'custom_fields';\r\n  let strRedirect = 'custom_fields';\r\n  \r\n  return (\r\n  <ResourceContextProvider value={resource}>\r\n      <List \r\n        basePath={basePath}   \r\n        filter={{ associations_id : localStorage.getItem('associations_id'), target: props.target }}  \r\n        actions={props.show ?  <span/> : <ListActions target={props.target} />}    \r\n        empty={props.show ?  <span/> : <ListActions target={props.target} />}        \r\n        bulkActionButtons={false}          \r\n        perPage={1000}   \r\n        pagination={false}\r\n        sort={{ field: 'priority', order: 'ASC' }} \r\n        label=\"\"  \r\n        title=\"\"  \r\n        resource={resource}\r\n      >        \r\n        <Datagrid \r\n          rowClick={props.show ? null : 'edit'}\r\n          expand={<CustomFieldsDetails />} \r\n          className=\"expand-without-padding\"\r\n          >                                \r\n          <TextField source=\"name\" label={translate('custom_fields.name')} sortable={false} />  \r\n          <FunctionField render={record => <span>{translate('custom_fields.type_' + record.type)}</span> } label={translate('custom_fields.type')} sortable={false}  />\r\n          <BooleanField source=\"actived\" label={translate('custom_fields.actived')} sortable={false} />  \r\n        </Datagrid>        \r\n      </List>\r\n    </ResourceContextProvider>);\r\n}\r\n    \r\n\r\nconst MyFilter = (props) => {\r\n    const translate = useTranslate(); \r\n    return (\r\n    <Filter {...props}>         \r\n        <TextInput label={translate('common.search')} source=\"q\" alwaysOn validate={[validateMaxLength(50,translate('common.validation.maxLength'))]} resettable />    \r\n    </Filter>\r\n);\r\n};\r\n\r\nexport const CustomFieldsDetails = ({ id, record, resource, ...props }) => {\r\n  const translate = useTranslate(); \r\n        \r\n  return (\r\n    <div className=\"usersClassroomsExpand\">        \r\n      <Grid container spacing={2}>        \r\n        <Grid item xs={4}>   \r\n          <TextFieldShow source={record.name} label={translate('custom_fields.name')} />\r\n        </Grid> \r\n        <Grid item xs={4}>   \r\n          <TextFieldShow source={translate('custom_fields.type_'+record.type)} label={translate('custom_fields.type')} />\r\n        </Grid>         \r\n        <Grid item xs={4}>   \r\n          { record.type == 1 || record.type == 2 || record.type == 3  ?\r\n          <TextFieldShow source={record.max_length} label={translate('custom_fields.max_length')} />\r\n          : null }\r\n        </Grid> \r\n        <Grid item xs={4}>   \r\n          <TextFieldShow source={<RenderBoolean source={record.required} />} label={translate('custom_fields.required')} />\r\n        </Grid> \r\n        <Grid item xs={4}>   \r\n          <TextFieldShow source={<RenderBoolean source={record.actived} />} label={translate('custom_fields.actived')} />\r\n        </Grid> \r\n        <Grid item xs={4}>   \r\n          <TextFieldShow source={record.priority} label={translate('custom_fields.priority')} />\r\n        </Grid> \r\n      </Grid>\r\n      \r\n      { record.type == 7 || record.type == 8 ?\r\n      <CustomFieldsOptionsList custom_fields_id={id} show={true} />\r\n      : null }\r\n      \r\n    </div>\r\n  );\r\n};\r\n\r\nconst ListActions = (props) => {            \r\n    return (\r\n    <TopToolbar>     \r\n        <MyCreateButton {...props} />            \r\n    </TopToolbar>\r\n    );\r\n};\r\n\r\nexport const MyCreateButton = ({ ...props }) => {\r\n\r\n  const [showDialog, setShowDialog] = useState(false);\r\n  const [create, { loading }] = useCreate('custom_fields');\r\n  const notify = useNotify();\r\n  const refresh = useRefresh();    \r\n  const translate = useTranslate();  \r\n  const redirect = useRedirect();\r\n        \r\n  const handleClick = () => {\r\n    setShowDialog(true);\r\n  };\r\n\r\n  const handleCloseClick = () => {\r\n    setShowDialog(false);\r\n  };\r\n\r\n  const handleSubmit = async values => {\r\n    create(            \r\n      { payload: { data: values } },\r\n      {\r\n        onSuccess: ({ data }) => {                    \r\n          redirect('/custom_fields/' + data.id);\r\n        \r\n        },\r\n        onFailure: ( error ) => {\r\n          notify( error.message , 'error');\r\n        }\r\n      }\r\n    );\r\n  };\r\n    \r\n  return (\r\n    <>            \r\n      <Button onClick={handleClick} label={translate('custom_fields.create')}>\r\n        <IconContentAdd />                \r\n      </Button>\r\n\r\n      <Dialog\r\n        fullWidth\r\n        open={showDialog}\r\n        onClose={handleCloseClick}\r\n        aria-label={translate('custom_fields.create')}\r\n      >\r\n        <DialogTitle>{translate('custom_fields.create')}</DialogTitle>\r\n\r\n        <FormWithRedirect\r\n          save={handleSubmit}\r\n          initialValues={{ associations_id: localStorage.getItem('associations_id'), target: props.target, type: 1 }}\r\n          render={({\r\n            handleSubmitWithRedirect,\r\n            pristine,\r\n            saving\r\n          }) => (\r\n            <>\r\n              <DialogContent>\r\n                <Grid container spacing={1}>                       \r\n                  <Grid item xs={7}>                                               \r\n                    <TextInput fullWidth source=\"name\" label={translate('custom_fields.name')} validate={[required(),validateMaxLength(255,translate('common.validation.maxLength'))]} />\r\n                  </Grid>\r\n                  <Grid item xs={5}>                                               \r\n                    <SelectInput fullWidth source=\"type\" label={translate('custom_fields.type')} validate={[required()]} choices={choicesCustomFieldsType(translate)} />\r\n                  </Grid>\r\n                </Grid> \r\n              </DialogContent>\r\n              <DialogActions>\r\n                <Button label=\"ra.action.cancel\" onClick={handleCloseClick} disabled={loading} >\r\n                  <IconCancel />\r\n                </Button>\r\n                <SaveButton\r\n                  handleSubmitWithRedirect={\r\n                    handleSubmitWithRedirect\r\n                  }\r\n                  pristine={pristine}\r\n                  saving={saving}\r\n                  disabled={loading}\r\n                />\r\n              </DialogActions>\r\n            </>\r\n          )}\r\n        />\r\n      </Dialog>\r\n    </>\r\n  );\r\n};\r\n\r\nconst MyActions = ({ basePath, data, resource }) => {\r\n\r\n  const translate = useTranslate();   \r\n    \r\n  let linkBack = '/custom_fields';\r\n        \r\n  return (\r\n    <>\r\n      <TopToolbar>\r\n        <Grid container spacing={2}>\r\n          <Grid item xs={12}>   \r\n            <div style={{\r\n              display: 'flex',\r\n              alignItems: 'center',\r\n              flexWrap: 'wrap',\r\n            }}>\r\n              <Link\r\n                to={linkBack}\r\n                className=\"\"\r\n              >\r\n                <ArrowBackIosNewIcon className=\"mr-2\" />                        \r\n              </Link>\r\n              <Typography variant=\"h5\" className=\"grey8\">\r\n                {data && data.name ? data.name : null}                    \r\n              </Typography>\r\n            </div>  \r\n                \r\n          </Grid>\r\n        </Grid> \r\n      </TopToolbar>\r\n    </>\r\n  );\r\n};\r\n\r\n\r\nexport const CustomFieldsEdit  = ({ id, ...props }) => {\r\n\r\n  const translate = useTranslate();        \r\n  const classes = useStyles();\r\n  const notify = useNotify();\r\n  const refresh = useRefresh();\r\n  const redirect = useRedirect();\r\n  \r\n  let strRedirect =  `/custom_fields/${id}`;    \r\n    \r\n  const onSuccess = ({ data }) => {\r\n    notify(translate('common.notification.updated'));        \r\n    redirect('/custom_fields');        \r\n  };\r\n        \r\n  return (\r\n\r\n    <Edit \r\n      title={<ElementTitle {...props}  />} \r\n      {...props} \r\n      id={id}\r\n      mutationMode=\"pessimistic\"\r\n      actions={<MyActions {...props} />}\r\n      onSuccess={onSuccess}   \r\n    >\r\n        \r\n      <TabbedForm        \r\n        toolbar={<FormToolbar />}\r\n      >    \r\n        <FormTab\r\n          label={translate('classrooms.data')}\r\n          contentClassName={classes.tab}\r\n          path=\"\"                 \r\n        > \r\n               \r\n          <FormDataConsumer>\r\n            {({ formData, ...rest }) => \r\n              <>                              \r\n                <br/>\r\n                <Grid container spacing={2}>\r\n                  <Grid item xs={3}>   \r\n                    <TextInput fullWidth source=\"name\" label={translate('custom_fields.name')} validate={[validateMaxLength(255,translate('common.validation.maxLength'))]} />\r\n                  </Grid> \r\n                  <Grid item xs={3}>   \r\n                    <SelectInput fullWidth source=\"type\" label={translate('custom_fields.type')} validate={[required()]} choices={choicesCustomFieldsType(translate)} disabled={true} />\r\n                  </Grid> \r\n                  <Grid item xs={3}>   \r\n                    { formData.type == 1 ? \r\n                        <NumberInput fullWidth source=\"max_length\" label={translate('custom_fields.max_length')} validate={[validateInteger(),validateIntegerLowerOrEqualThan(100,translate('common.validation.maxValue'))]} />\r\n                    : formData.type == 2 || formData.type == 3 ?\r\n                        <NumberInput fullWidth source=\"max_length\" label={translate('custom_fields.max_length')} validate={[validateInteger(),validateIntegerLowerOrEqualThan(1000,translate('common.validation.maxValue'))]} />\r\n                    : null }\r\n                  </Grid> \r\n                  <Grid item xs={3}>   \r\n                    <NumberInput fullWidth source=\"priority\" label={translate('custom_fields.priority')} validate={[]} />\r\n                  </Grid> \r\n                  \r\n                  <Grid item xs={3}>   \r\n                    <BooleanInput fullWidth source=\"actived\" label={translate('custom_fields.actived')}  />\r\n                  </Grid> \r\n                  <Grid item xs={3}>   \r\n                    <BooleanInput fullWidth source=\"required\" label={translate('custom_fields.required')}  />\r\n                  </Grid> \r\n                  \r\n                  { formData.target == targets.USER ? \r\n                  <Grid item xs={6}>   \r\n                    <BooleanInput fullWidth source=\"form_web\" label={translate('custom_fields.form_web')}  />\r\n                  </Grid> \r\n                  : null }          \r\n                  \r\n                  { formData.target == targets.USER_FEDERATION || formData.target == targets.USER_FEDERATION_SPORTS ? \r\n                  <Grid item xs={6}>   \r\n                    <BooleanInput fullWidth source=\"form_annuary\" label={translate('custom_fields.form_annuary')}  />\r\n                  </Grid> \r\n                  : null }  \r\n                  \r\n                </Grid>                                \r\n\r\n              </>\r\n            }\r\n          </FormDataConsumer>\r\n\r\n        </FormTab> \r\n        \r\n        <FormTab\r\n          label={translate('custom_fields.options')}\r\n          contentClassName={classes.tab}\r\n          path=\"options\"                 \r\n        > \r\n        \r\n            <FormDataConsumer>\r\n                {({ formData, ...rest }) => \r\n                <>     \r\n                    { formData.type == 7 || formData.type == 8 ?\r\n                    <CustomFieldsOptionsList custom_fields_id={id} />\r\n                    : null }\r\n                </>\r\n                }\r\n            </FormDataConsumer>\r\n        \r\n        </FormTab>\r\n        \r\n    \r\n      </TabbedForm>\r\n    </Edit>\r\n  );\r\n};\r\n\r\nconst ElementTitle = ({ record, ...props }) => {    \r\n  const translate = useTranslate(); \r\n  return (<span>{translate('common.edit')} {record ? `\"${record.name}\"` : ''}</span>);\r\n};\r\n\r\nconst FormToolbar = ({ id , ...props }) => {\r\n    \r\n  let redirect = '/custom_fields';\r\n  const translate = useTranslate(); \r\n    \r\n    \r\n  return (\r\n    <Toolbar {...props} className=\"user_form_toolbar\" >\r\n      <SaveButton />\r\n      <DeleteButton \r\n        redirect={redirect} \r\n        mutationMode=\"pessimistic\"\r\n        confirmTitle={translate('custom_fields.delete_title')}\r\n        confirmContent={translate('custom_fields.delete_ask')} />\r\n    </Toolbar>\r\n  );\r\n};\r\n\r\nconst useStyles = makeStyles({\r\n  comment: {\r\n    maxWidth: '100%',\r\n    overflow: 'hidden',\r\n    textOverflow: 'ellipsis',\r\n    whiteSpace: 'nowrap',\r\n  },\r\n  tab: {\r\n    maxWidth: '100%',\r\n    display: 'block',\r\n  },\r\n});\r\n\r\n\r\n\r\n\r\n\r\n\r\nexport const CustomFieldsCreate  = ({ id, ...props }) => {\r\n\r\n  const translate = useTranslate();   \r\n  const [info, setInfo] = useState();\r\n    \r\n  return (\r\n\r\n    <Create {...props} >\r\n      <SimpleForm \r\n        initialValues={{ associations_id: localStorage.getItem('associations_id') }}\r\n        redirect=\"list\"\r\n      >                \r\n        <Grid container spacing={2}>\r\n          <Grid item xs={12}>                    \r\n            <Typography variant=\"h5\" className=\"grey\">{translate('custom_fields.create')}</Typography>\r\n          </Grid>  \r\n          <Grid item xs={11}>                    \r\n            <TextInput fullWidth source=\"name\" label={translate('common.name')} validate={[required(),validateMaxLength(255,translate('common.validation.maxLength'))]} />\r\n          </Grid>          \r\n        </Grid>   \r\n\r\n      </SimpleForm> \r\n    </Create>\r\n  );\r\n};\r\n\r\n\r\n","\r\nimport {\r\n  fetchUtils,\r\n  GET_LIST,\r\n  GET_ONE,\r\n  GET_MANY,\r\n  GET_MANY_REFERENCE,\r\n  CREATE,\r\n  UPDATE,\r\n  UPDATE_MANY,\r\n  DELETE,\r\n  DELETE_MANY\r\n} from 'react-admin';\r\n\r\nimport { apiUrl, apiDefaultLanguage, apiOrigin } from './../common/constants';\r\n\r\nconst simpleRestProvider = (apiUrl, httpClient = fetchUtils.fetchJson) => {\r\n  /**\r\n     * @param {String} type One of the constants appearing at the top if this file, e.g. 'UPDATE'\r\n     * @param {String} resource Name of the resource to fetch, e.g. 'posts'\r\n     * @param {Object} params The data request params, depending on the type\r\n     * @returns {Object} { url, options } The HTTP request parameters\r\n     */\r\n  const convertDataRequestToHTTP = (type, resource, params) => {\r\n    let url = '';\r\n    const options = {};\r\n    var queryString = '';\r\n    switch (type) {\r\n    case 'search': {\r\n      //console.log('search');  \r\n      //console.log(params);  \r\n      const page = 1;\r\n      const perPage = 1000000;\r\n      const field = 'first_name';\r\n      const order = 'ASC';\r\n      let targets_str = params.targets.length > 0 ? params.targets[0] : '';\r\n      queryString = 'associations_id=' + localStorage.getItem('associations_id') + '&q=' + resource + '&targets=' + targets_str;\r\n      url = `${apiUrl}/search?page=${page-1}&size=${perPage}&sort=${field},${order}&${queryString}`;\r\n      break;\r\n    }\r\n    case 'getTree': {\r\n      //console.log('getTree' + resource);  \r\n      const page = 1;\r\n      const perPage = 1000000;\r\n      const field = 'priority';\r\n      const order = 'ASC';        \r\n      queryString = 'associations_id=' + localStorage.getItem('associations_id');\r\n      url = `${apiUrl}/${resource}?page=${page-1}&size=${perPage}&sort=${field},${order}&${queryString}`;\r\n      break;\r\n    }\r\n    case 'moveAsNthChildOf': {\r\n      //console.log('moveAsNthChildOf'); \r\n      //console.log(params); \r\n      const source = params.source.id;  \r\n      const destination = params.destination.id;\r\n      const position = params.position;\r\n      url = `${apiUrl}/${resource}/re-parent?source=${source}&destination=${destination}&position=${position}`;\r\n      break;\r\n    }\r\n    case 'moveAsNthSiblingOf': {\r\n      //console.log('moveAsNthSiblingOf'); \r\n      //console.log(params);   \r\n      const source = params.source.id;  \r\n      const destination = params.destination.id;\r\n      const position = params.position;\r\n      url = `${apiUrl}/${resource}/re-order?source=${source}&destination=${destination}&position=${position}`;\r\n      break;\r\n    }\r\n    case GET_LIST: {\r\n      //console.log('GET_LIST ' + resource);             \r\n      const { page, perPage } = params.pagination;\r\n      const { field, order } = params.sort;        \r\n      queryString = Object.keys(params.filter).map(key => key !== 'filter' ? key + '=' + params.filter[key] : '').join('&');\r\n      var queryStringFilter = '';\r\n      if (params.filter && params.filter.filter )\r\n      {\r\n        queryStringFilter = '&filter=' + encodeURIComponent(JSON.stringify(params.filter.filter));\r\n      }\r\n      url = `${apiUrl}/${resource}?page=${page-1}&size=${perPage}&sort=${field},${order}&${queryString}${queryStringFilter}`;\r\n      break;\r\n    }\r\n    case GET_ONE:\r\n      //console.log('GET_ONE ' + resource);\r\n      queryString = Object.keys(params).map(key => key !== 'id' ? key + '=' + params[key] : '').join('&');\r\n      if(queryString.length > 0) queryString='?'+queryString.substring(1);\r\n      url = `${apiUrl}/${resource}/${params.id}${queryString}`;\r\n      break;\r\n    case GET_MANY: {\r\n      //console.log('GET_MANY ' + resource);\r\n      if (params.ids.length === 1)\r\n        url = `${apiUrl}/${resource}/${params.ids[0]}`;\r\n      else\r\n        url = `${apiUrl}/${resource}/many/${params.ids}`;\r\n      break;\r\n    }\r\n    case GET_MANY_REFERENCE: {\r\n      //console.log('GET_MANY_REFERENCE ' + resource);   \r\n      const { page, perPage } = params.pagination;\r\n      const { field, order } = params.sort;\r\n      queryString = Object.keys(params.filter).map(key => key + '=' + params.filter[key]).join('&');\r\n\r\n      url = `${apiUrl}/${resource}?page=${page-1}&size=${perPage}&sort=${field},${order}&${params.target}=${params.id}&${queryString}`;\r\n      break;\r\n    }\r\n    case UPDATE:\r\n      //console.log('UPDATE ' + resource);   \r\n      url = `${apiUrl}/${resource}/${params.id}`;\r\n      options.method = 'PUT';\r\n      options.body = JSON.stringify(params.data);\r\n      break;\r\n    case CREATE:\r\n      //console.log('CREATE');   \r\n        \r\n      options.method = 'POST';\r\n      //console.log('CREATE ' + resource);\r\n\r\n      if (params.data.image && params.data.image.rawFile)\r\n      {\r\n        // MULTIPART FORM (FITXER + JSON DADES)\r\n        url = `${apiUrl}/${resource}`;\r\n        let formData = new FormData();        \r\n        //formData.append('postDto', JSON.stringify(params.data) );\r\n        formData.append('associations_id', params.data.associations_id);\r\n        formData.append('target', params.data.target);\r\n        formData.append('items_id', params.data.items_id);\r\n        formData.append('file', params.data.image.rawFile);\r\n        options.body = formData;\r\n      }\r\n      else\r\n      {\r\n        // SENSE MULTIPART FORM\r\n        url = `${apiUrl}/${resource}`;\r\n        options.body = JSON.stringify(params.data);\r\n      }\r\n        \r\n      break;\r\n    case 'deleteBranch':\r\n    {\r\n      //console.log('deleteBranch ' + resource);   \r\n      url = `${apiUrl}/${resource}/${params.id}`;\r\n      options.method = 'DELETE';\r\n      break;\r\n    }\r\n    case DELETE:\r\n      //console.log('DELETE ' + resource);   \r\n      url = `${apiUrl}/${resource}/${params.id}`;\r\n      options.method = 'DELETE';\r\n      break;\r\n    default:\r\n      throw new Error(`Unsupported fetch action type ${type}`);\r\n    }\r\n    return { url, options };\r\n  };\r\n\r\n  /**\r\n     * @param {Object} response HTTP response from fetch()\r\n     * @param {String} type One of the constants appearing at the top if this file, e.g. 'UPDATE'\r\n     * @param {String} resource Name of the resource to fetch, e.g. 'posts'\r\n     * @param {Object} params The data request params, depending on the type\r\n     * @returns {Object} Data response\r\n     */\r\n  const convertHTTPResponse = (response, type, resource, params) => {\r\n    const { json } = response;\r\n    \r\n    //alert(\"Passa per aqui?\");\r\n    if(response.status === 200 || response.status === 201 || response.status === 204 ){\r\n        \r\n      switch (type) {\r\n      case GET_LIST:      \r\n      case GET_MANY_REFERENCE:\r\n        if (!json.hasOwnProperty('totalElements')) {\r\n          throw new Error(\r\n            'The numberOfElements property must be must be present in the Json response'\r\n          );\r\n        }         \r\n        return {\r\n          data: json.content ,\r\n          total: parseInt(json.totalElements, 10)\r\n        };\r\n      case CREATE:\r\n        //return { data: { ...params.data, id: json.id } };\r\n        return { data: json };\r\n      case GET_MANY:\r\n        if (Array.isArray(json))\r\n          return {\r\n            data: json ,\r\n            total: parseInt(json.totalElements, 10)\r\n          };\r\n        else\r\n          return {\r\n            data: [json] ,\r\n            total: 1\r\n          };\r\n      case 'search':\r\n        return {\r\n          data: json.content ,\r\n          total: parseInt(json.totalElements, 10)\r\n        };\r\n\r\n      case DELETE:\r\n        //TODO: Revisar aquest retorn...\r\n        return { data: { ...params.data, id: 0 } };\r\n\r\n      default:            \r\n        // GetTree, GET_ONE\r\n        //alert(\"Default dataProvider\" + type);\r\n        return { data: json };\r\n      }\r\n    \r\n    }else{\r\n      //alert(\"Error dataProvider\");\r\n      if (json.message)\r\n        throw new Error(json.message);\r\n      else\r\n        throw new Error('Error connectant amb la API...');\r\n        //throw new Error('Errooooooor');\r\n    }\r\n    \r\n  };\r\n\r\n  /**\r\n     * @param {string} type Request type, e.g GET_LIST\r\n     * @param {string} resource Resource name, e.g. \"posts\"\r\n     * @param {Object} payload Request parameters. Depends on the request type\r\n     * @returns {Promise} the Promise for a data response\r\n     */\r\n  return (type, resource, params) => {\r\n    // simple-rest doesn't handle filters on UPDATE route, so we fallback to calling UPDATE n times instead\r\n\r\n    if (type === UPDATE_MANY) {\r\n      return Promise.all(\r\n        params.ids.map(id =>\r\n          httpClient(`${apiUrl}/${resource}/${id}`, {\r\n            method: 'PUT',\r\n            body: JSON.stringify(params.data)\r\n          })\r\n        )\r\n      ).then(responses => ({\r\n        data: responses.map(response => response.json)\r\n      }));\r\n    }\r\n    // simple-rest doesn't handle filters on DELETE route, so we fallback to calling DELETE n times instead\r\n    if (type === DELETE_MANY) {\r\n      return Promise.all(\r\n        params.ids.map(id =>\r\n          httpClient(`${apiUrl}/${resource}/${id}`, {\r\n            method: 'DELETE'\r\n          })\r\n        )\r\n      ).then(responses => ({\r\n        data: responses.map(response => response.json)\r\n      }));\r\n    }\r\n\r\n    const { url, options } = convertDataRequestToHTTP(type, resource, params);\r\n    return httpClient(url, options).then(response => { \r\n      return (        \r\n      convertHTTPResponse(response, type, resource, params)); }\r\n    );\r\n  };\r\n};\r\n\r\n\r\n\r\n\r\n\r\nconst fetchJson = (url, options = {}) => {\r\n\r\n  if (!options.headers) {\r\n    options.headers = new Headers({ Accept: 'application/json' });\r\n  }\r\n  options.headers.set('Access-Control-Allow-Origin', apiOrigin );\r\n  options.headers.set('Authorization', localStorage.getItem('auth'));\r\n  options.headers.set('Accept-Language', apiDefaultLanguage);\r\n  options.headers.set('Role', localStorage.getItem('active_permission'));\r\n\r\n  return fetchUtils.fetchJson(url, options);\r\n};\r\n\r\n\r\nconst dataProvider = simpleRestProvider(apiUrl, fetchJson);\r\n\r\n/*\r\nconst dataProviderWithTree = addTreeMethodsBasedOnParentAndPosition(\r\n    dataProvider,\r\n    'parent_id',\r\n    'position',\r\n    false\r\n);\r\n\r\n\r\n\r\n\r\nvar __assign = (this && this.__assign) || function () {\r\n    __assign = Object.assign || function(t) {\r\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n            s = arguments[i];\r\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\r\n                t[p] = s[p];\r\n        }\r\n        return t;\r\n    };\r\n    return __assign.apply(this, arguments);\r\n};\r\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\r\n    function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n    return new (P || (P = Promise))(function (resolve, reject) {\r\n        function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n        function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n        function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n        step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n    });\r\n};\r\nvar __generator = (this && this.__generator) || function (thisArg, body) {\r\n    var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n    return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n    function verb(n) { return function (v) { return step([n, v]); }; }\r\n    function step(op) {\r\n        if (f) throw new TypeError(\"Generator is already executing.\");\r\n        while (_) try {\r\n            if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n            if (y = 0, t) op = [op[0] & 2, t.value];\r\n            switch (op[0]) {\r\n                case 0: case 1: t = op; break;\r\n                case 4: _.label++; return { value: op[1], done: false };\r\n                case 5: _.label++; y = op[1]; op = [0]; continue;\r\n                case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n                default:\r\n                    if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n                    if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n                    if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n                    if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n                    if (t[2]) _.ops.pop();\r\n                    _.trys.pop(); continue;\r\n            }\r\n            op = body.call(thisArg, _);\r\n        } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n        if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n    }\r\n};\r\n*/\r\n\r\n//console.log(dataProvider);\r\n//const aaa = dataProvider.getList('groups-tree');\r\n/*\r\nvar treeDataProvider = addTreeMethodsBasedOnParentAndPosition(dataProvider);\r\n// We have to overwrite the getRootNodes because FakeRest does not support\r\n// filtering by null values and returns all records\r\ntreeDataProvider.getRootNodes = function (resource) { return __awaiter(void 0, void 0, void 0, function () {\r\n    var data;\r\n    return __generator(this, function (_a) {\r\n        switch (_a.label) {\r\n            case 0: return [4 , dataProvider.getList(resource, {\r\n                    filter: { parent_id: null },\r\n                    sort: { field: 'position', order: 'ASC' },\r\n                    pagination: { page: 1, perPage: 1000 },\r\n                })];\r\n            case 1:\r\n                data = (_a.sent()).data;\r\n                return [2 , {\r\n                        data: data\r\n                            // We filter ourselves by excluding nodes which have a parent\r\n                            .filter(function (record) { return record.parent_id === null; })\r\n                            .map(function (record) { return (__assign(__assign({}, record), { children: [] })); }),\r\n                    }];\r\n        }\r\n    });\r\n}); };*/\r\n\r\n\r\nexport { dataProvider };\r\n","import React from 'react';\r\nimport { useState,useCallback, useEffect } from 'react';\r\n\r\nimport { Button, MenuItemLink, useDataProvider, UserMenu, useRefresh, useCreate, useUpdate, useNotify, FormWithRedirect, DateInput, SaveButton  } from 'react-admin';\r\n\r\nimport { makeStyles } from '@material-ui/core/styles';\r\nimport ListItem from '@material-ui/core/ListItem';\r\nimport ListItemText from '@material-ui/core/ListItemText';\r\nimport ListItemAvatar from '@material-ui/core/ListItemAvatar';\r\nimport { IconButton, Toolbar } from '@material-ui/core';\r\nimport Badge from '@mui/material/Badge';\r\nimport NotificationsIcon from '@mui/icons-material/Notifications';\r\nimport MoreTimeIcon from '@mui/icons-material/MoreTime';\r\nimport Tooltip from '@mui/material/Tooltip';\r\nimport Menu from '@mui/material/Menu';\r\nimport MenuItem from '@mui/material/MenuItem';\r\nimport Fade from '@mui/material/Fade';\r\nimport {useHistory} from 'react-router-dom';\r\nimport { useTranslate  } from '../common/language';\r\n\r\nimport Dialog from '@material-ui/core/Dialog';\r\nimport DialogTitle from '@material-ui/core/DialogTitle';\r\nimport DialogContent from '@material-ui/core/DialogContent';\r\nimport DialogActions from '@material-ui/core/DialogActions';\r\n\r\nimport IconCancel from '@material-ui/icons/Cancel';\r\n\r\nimport Grid from '@mui/material/Grid';\r\n\r\nimport HighlightOffIcon from '@mui/icons-material/HighlightOff';\r\nimport { UserAvatarIcon, GroupsAvatarIcon, EventsAvatarIcon,RealStateAvatarIcon,AgreementsAvatarIcon,InsurancesAvatarIcon,AlertsAvatarIcon } from './../components/User';\r\n\r\nexport const Alerts = props => {\r\n\r\n  var translate = useTranslate();\r\n  \r\n  const [showDialog, setShowDialog] = useState(false);\r\n  const [postponeId, setPostponeId] = useState(0);\r\n  \r\n  const refresh = useRefresh();    \r\n  const notify = useNotify();\r\n  const history = useHistory();\r\n  const dataProvider = useDataProvider();\r\n  const [update, { loading, error1 }] = useUpdate();\r\n  const [info, setInfo] = useState([]);\r\n  const [numAlerts, setNumAlerts] = useState(0);\r\n  const [error, setError] = useState(false);\r\n  const [anchorEl, setAnchorEl] = React.useState(null);\r\n  const open = Boolean(anchorEl);\r\n  \r\n  const today = new Date();\r\n  const tomorrow = new Date(today);\r\n  tomorrow.setDate(today.getDate() + 1);\r\n  const tomorrowISO = tomorrow.toISOString().slice(0, 10);\r\n  \r\n  const handleClick = (event: React.MouseEvent<HTMLElement>) => {\r\n    \r\n    setAnchorEl(event.currentTarget);\r\n    \r\n    if (numAlerts>0)\r\n    {\r\n        setNumAlerts(0);\r\n\r\n        update(\r\n          { \r\n            type: 'update', \r\n            resource: 'alerts_users_permissions/readed' ,\r\n            payload : { id: localStorage.getItem('active_permission'), data : { } }\r\n          },\r\n          {\r\n            onSuccess: ({ data }) => {          \r\n            },\r\n            onFailure: ( error ) => {\r\n            }\r\n          }\r\n        );\r\n    }\r\n    \r\n  };\r\n  \r\n  \r\n  const handleCloseClick = () => {\r\n    setShowDialog(false);\r\n  };\r\n  \r\n  const handleSubmit = async values => {\r\n    update(\r\n      { \r\n        type: 'update', \r\n        resource: 'alerts_users_permissions', \r\n        payload : { id: values.id, data : values }\r\n      },\r\n      {\r\n        onSuccess: ({ data }) => {\r\n          setShowDialog(false);\r\n          notify(translate('alerts.postpone_ok'), 'success');    \r\n        },\r\n        onFailure: ( error ) => {\r\n          notify(error.message, 'error');\r\n        }\r\n      }\r\n    );\r\n  };    \r\n  \r\n  const handleClickItem = (link) => {\r\n      setAnchorEl(null);\r\n      history.push(link);  \r\n  }\r\n    \r\n  const handleClickDelete = (id) => {\r\n        \r\n    update(\r\n        { \r\n          type: 'update', \r\n          resource: 'alerts_users_permissions/delete' ,\r\n          payload : { id: id, data : { } }\r\n        },\r\n        {\r\n          onSuccess: ({ data }) => {   \r\n              notify(translate('alerts.delete_ok'), 'success');\r\n              fetchData();   \r\n          },\r\n          onFailure: ( error ) => {\r\n          }\r\n        }\r\n      );\r\n\r\n  }\r\n  \r\n  const handleClickDeleteAll = () => {\r\n    setAnchorEl(null);\r\n    \r\n    update(\r\n        { \r\n          type: 'update', \r\n          resource: 'alerts_users_permissions/delete_all' ,\r\n          payload : { id: localStorage.getItem('active_permission'), data : { } }\r\n        },\r\n        {\r\n          onSuccess: ({ data }) => {    \r\n              notify(translate('alerts.delete_all_ok'), 'success');\r\n              fetchData();  \r\n          },\r\n          onFailure: ( error ) => {\r\n          }\r\n        }\r\n      );\r\n\r\n  }\r\n  \r\n  const handleClickPostpone = (id) => {    \r\n      setShowDialog(true);\r\n      setPostponeId(id);          \r\n  }\r\n  \r\n  const handleClose = () => {\r\n    setAnchorEl(null);\r\n  };\r\n  \r\n  const fetchData = () => {\r\n      dataProvider\r\n        .getList('alerts_users_permissions', {\r\n          pagination: { page: 1, perPage: 1000 },\r\n          sort: { field: 'id', order: 'DESC' },\r\n          filter: { users_permissions_id: localStorage.getItem('active_permission') },\r\n        })\r\n        .then(response => {\r\n          const infoData = response.data;\r\n          let num_alerts = 0;\r\n          infoData.forEach(element => {\r\n            if (element.status === 0) num_alerts++;\r\n          });\r\n          setInfo(infoData);\r\n          setNumAlerts(num_alerts);\r\n          setError(false); \r\n        })\r\n        .catch(error => {\r\n          setError(true);\r\n        });\r\n    };\r\n    \r\n  useEffect(() => {\r\n            \r\n    fetchData();\r\n    \r\n    // Setup interval to fetch data every 10 minutes\r\n    const intervalId = setInterval(fetchData, 10 * 60 * 1000);\r\n\r\n    // Cleanup interval on component unmount\r\n    return () => clearInterval(intervalId);\r\n    \r\n  }, []);\r\n        \r\n  if ( !info ) return null;\r\n  if ( error) return null;\r\n      \r\n    \r\n  return (\r\n    <>\r\n    <IconButton \r\n        aria-label=\"more\"\r\n        id=\"long-button\"\r\n        aria-controls={open ? 'long-menu' : undefined}\r\n        aria-expanded={open ? 'true' : undefined}\r\n        aria-haspopup=\"true\"\r\n        onClick={handleClick}> \r\n    <Badge color=\"primary\" badgeContent={numAlerts} max={99} className=\"alert_bagde\">\r\n    <NotificationsIcon />\r\n    </Badge>\r\n    </IconButton>\r\n        <Menu\r\n        id=\"long-menu\"\r\n        MenuListProps={{\r\n          'aria-labelledby': 'long-button',\r\n        }}\r\n        anchorEl={anchorEl}\r\n        open={open}\r\n        onClose={handleClose}\r\n        PaperProps={{\r\n          style: {\r\n            maxHeight: '85%',\r\n            width: '30%',\r\n          },\r\n        }}\r\n        TransitionComponent={Fade}\r\n      >\r\n        {info.length > 0 ?\r\n        <div className=\"alerts_delete_all\" ><span className=\"cursor\" onClick={handleClickDeleteAll}>{translate('alerts.delete_all')}</span></div>\r\n        :\r\n        <div className=\"alerts_no_results\" >{translate('alerts.no_results')}</div>\r\n        }\r\n        {info.map((option) => (\r\n        <Grid container spacing={0} className={\r\n            option.status === 0 ? \r\n                (option.type>3 ? 'alerts_item new alerts_item_link' : 'alerts_item new' ) \r\n            : \r\n                (option.type>3 ? 'alerts_item alerts_item_link' : 'alerts_item' )\r\n            } \r\n        onClick={()=>{ if (option.type>3) handleClickItem(option.link)} }>\r\n            <Grid item xs={10}>\r\n              <ListItem >\r\n                    <ListItemAvatar>\r\n                        {option.type === 1 || option.type === 2 || option.type === 3 ?\r\n                            <AlertsAvatarIcon/>\r\n                        : option.type === 4 ?\r\n                            <RealStateAvatarIcon/>\r\n                        : option.type === 5 || option.type === 6 || option.type === 7 ?\r\n                            <AgreementsAvatarIcon/>\r\n                        : option.type === 8 ?\r\n                            <InsurancesAvatarIcon/>\r\n                        :\r\n                            <EventsAvatarIcon />\r\n                        }\r\n                    </ListItemAvatar>\r\n                    <ListItemText\r\n                      primary={option.name}\r\n                      secondary={option.message}\r\n                    />          \r\n              </ListItem>\r\n            </Grid>\r\n            <Grid item xs={1} className=\"align-items-center\">   \r\n                <Tooltip title={translate('alerts.postpone')}>        \r\n                    <MoreTimeIcon onClick={(e)=>{ e.stopPropagation(); handleClickPostpone(option.id); }} className=\"cursor\" />\r\n                </Tooltip>\r\n            </Grid>\r\n            <Grid item xs={1} className=\"align-items-center\">\r\n                <Tooltip title={translate('alerts.delete')}>    \r\n                    <HighlightOffIcon onClick={(e)=>{ e.stopPropagation(); handleClickDelete(option.id); }} className=\"cursor\" />\r\n                </Tooltip>                \r\n            </Grid>\r\n          </Grid>  \r\n        \r\n        ))}\r\n      </Menu>\r\n      \r\n      <Dialog\r\n        fullWidth\r\n        open={showDialog}\r\n        onClose={handleCloseClick}\r\n        aria-label={translate('alerts.postpone')}\r\n      >\r\n        <DialogTitle>{translate('alerts.postpone')}</DialogTitle>\r\n\r\n        <FormWithRedirect\r\n          resource=\"alerts\"\r\n          save={handleSubmit}\r\n          initialValues={{ id: postponeId, date_apply : tomorrowISO }}\r\n          render={({\r\n            handleSubmitWithRedirect,\r\n            pristine,\r\n            saving\r\n          }) => (\r\n            <>\r\n              <DialogContent>\r\n              \r\n                <Grid container spacing={2}>\r\n                  <Grid item xs={12}>  \r\n                    <DateInput label={translate('alerts.date_apply')} source=\"date_apply\" resettable />\r\n                  </Grid> \r\n                </Grid>                     \r\n                \r\n              </DialogContent>\r\n              <DialogActions>\r\n                <Button label=\"ra.action.cancel\" onClick={handleCloseClick} disabled={loading} >\r\n                  <IconCancel />\r\n                </Button>\r\n                <SaveButton\r\n                  handleSubmitWithRedirect={\r\n                    handleSubmitWithRedirect\r\n                  }\r\n                  pristine={pristine}\r\n                  saving={saving}\r\n                  disabled={loading}\r\n                />\r\n              </DialogActions>\r\n            </>\r\n          )}\r\n        />\r\n      </Dialog>\r\n      \r\n    </>\r\n  );\r\n};\r\n\r\n","\r\nimport * as React from 'react';\r\n\r\nimport { useState,useCallback, useEffect } from 'react';\r\n\r\n\r\nimport { Layout, AppBar, MenuItemLink, useDataProvider, UserMenu, useRefresh, useCreate, useUpdate  } from 'react-admin';\r\n\r\nimport { Link } from 'react-router-dom';\r\nimport {useHistory} from 'react-router-dom';\r\n\r\n\r\n\r\n\r\n\r\n\r\nimport { Typography } from '@material-ui/core';\r\n\r\nimport Grid from '@mui/material/Grid';\r\n\r\n\r\nimport PersonIcon from '@mui/icons-material/Person';\r\nimport CheckIcon from '@mui/icons-material/Check';\r\n\r\nimport { IconButton, Toolbar } from '@material-ui/core';\r\n\r\n\r\nimport { subscriptionModule, setActivePermissionData  } from '../common/utils';\r\nimport { MySearch  } from '../components/MySearch';\r\nimport { Alerts  } from '../components/Alerts';\r\n\r\n\r\nimport { useTranslate  } from '../common/language';\r\n\r\nimport Menu from '@mui/material/Menu';\r\nimport MenuItem from '@mui/material/MenuItem';\r\n\r\nimport SettingsIcon from '@mui/icons-material/Settings';\r\n\r\nimport ListItemIcon from '@mui/material/ListItemIcon';\r\nimport ListItemText from '@mui/material/ListItemText';\r\n\r\nimport Divider from '@mui/material/Divider';\r\n\r\nimport { ImageViewer } from './../resources/docs';\r\nimport { modules  } from './../common/constants';\r\n\r\nconst ConfigurationMenu = React.forwardRef((props, ref) => {\r\n    \r\n  var translate = useTranslate();\r\n    \r\n  return (\r\n    <MenuItem\r\n      ref={ref}\r\n      component={Link}\r\n      {...props}\r\n      to=\"/settings-profile\"\r\n    >\r\n      <ListItemIcon>\r\n        <PersonIcon />\r\n      </ListItemIcon>\r\n      <ListItemText primary={translate('settings.profile')} secondary={localStorage.getItem('email')} />\r\n    </MenuItem>\r\n  );\r\n});\r\n\r\nconst PermissionsMenu = React.forwardRef((props, ref) => {\r\n    \r\n  const refresh = useRefresh(); \r\n  var translate = useTranslate();\r\n  const [create] = useCreate('auth/set-active-permission');\r\n  \r\n  var permissions = JSON.parse(localStorage.permissions);\r\n    \r\n  const handleClick = ( permission_id) => {\r\n      \r\n    create(            \r\n      { payload: { data: permission_id } },\r\n      {\r\n        onSuccess: ({ data }) => {     \r\n        },\r\n        onFailure: ( error ) => {                          \r\n        }\r\n      }\r\n    );\r\n    \r\n    setActivePermissionData(permission_id);\r\n    \r\n    // Refresca pàgina, anant a la pàgina inici\r\n    if (window.location.href.includes('dashboard'))\r\n        window.location.reload(false); \r\n    else\r\n        window.location.href = '/#/dashboard';\r\n    \r\n  };\r\n  return (\r\n    <>\r\n    {permissions.map((menuItem, index) => (\r\n    <MenuItem \r\n      onClick={ (e) => { \r\n          e.stopPropagation();\r\n          if (menuItem.id != localStorage.active_permission) handleClick(menuItem.id); \r\n      } }\r\n      className={menuItem.id == localStorage.active_permission ? 'menu-permissions-selected' : ''} \r\n      key={menuItem.id}\r\n    >\r\n      <ListItemIcon>\r\n      { menuItem.id == localStorage.active_permission ? <CheckIcon /> : null }\r\n      </ListItemIcon>\r\n      <ListItemText primary={menuItem.associations_name} secondary={translate('users_permissions.role_' + menuItem.permissions_groups)} />\r\n    </MenuItem> )) }\r\n    </>\r\n  );\r\n});\r\n\r\nconst MyUserMenu = props => (\r\n  <UserMenu {...props}>\r\n    <ConfigurationMenu />\r\n    <Divider />\r\n    <PermissionsMenu />\r\n    <Divider />\r\n  </UserMenu>\r\n);\r\n\r\nconst MyAppBar = props => {\r\n\r\n  var translate = useTranslate();\r\n  const dataProvider = useDataProvider();\r\n  const [info, setInfo] = useState();\r\n    \r\n  const [value, setValue] = React.useState(0);\r\n  const associations_name = localStorage.getItem('associations_name');\r\n    \r\n  const handleChange = (event, newValue) => {\r\n    setValue(newValue);\r\n  };\r\n\r\n  let members_group_link = '/groups-tree';\r\n  if (localStorage.getItem('members_group_id') > 0)\r\n    members_group_link = '/groups-tree/' + localStorage.getItem('members_group_id');\r\n    \r\n  const history = useHistory();\r\n  const handleClickSettings = useCallback(() => history.push('/settings'), [history]);\r\n        \r\n  let current_path = history && history.location && history.location.pathname ? history.location.pathname : '';\r\n        \r\n  useEffect(() => {\r\n        \r\n  }, []);\r\n    \r\n  return (\r\n    <>\r\n            \r\n      <AppBar {...props} className=\"appBar\" userMenu={<MyUserMenu />}>\r\n            \r\n        <Grid container wrap=\"nowrap\" className=\"appTitle\">\r\n          <Grid className=\"imgLogoContainer\">\r\n                \r\n            { localStorage.getItem('associations_logo_doc') > 0 ? \r\n              <ImageViewer docs_id={localStorage.getItem('associations_logo_doc')} className=\"imgLogo\" is_public={false} />\r\n              : \r\n              window.location.hostname.replaceAll('.','')=='admingestioentitatscat' || window.location.hostname.replaceAll('.','')=='localhost' || subscriptionModule(modules.RECERCAT) ?\r\n                <img className=\"imgLogo\" src=\"/img/gestioentitatscat.png\" />\r\n                :\r\n                <img className=\"imgLogo\" src=\"/img/sifac.png\" /> \r\n                            \r\n            }\r\n                \r\n          </Grid>\r\n          <Grid className=\"appTitleContainer\">\r\n            <Typography variant=\"h6\" >{associations_name}</Typography>\r\n          </Grid>\r\n        </Grid>\r\n            \r\n        { localStorage.getItem('permissions_groups') === 'ADMIN' || localStorage.getItem('permissions_groups') === 'ADMIN_CONTACTS' || localStorage.getItem('permissions_groups') === 'ADMIN_READER' ? ( \r\n                \r\n          <>\r\n            <MySearch targets={[]} />\r\n            { subscriptionModule(modules.ALERTS) ? \r\n            <Alerts /> \r\n            : null }   \r\n            { subscriptionModule(modules.GESTIO) ?  \r\n              <IconButton \r\n                onClick={handleClickSettings} >                \r\n                <SettingsIcon />                \r\n              </IconButton>\r\n              : null }\r\n          </>\r\n            \r\n        ) : \r\n                \r\n          <>\r\n            { subscriptionModule(modules.ALERTS) ? \r\n            <Alerts /> \r\n            : null }\r\n            <IconButton \r\n              onClick={handleClickSettings} >                \r\n              <SettingsIcon />                \r\n            </IconButton>\r\n          </>\r\n    \r\n        }\r\n            \r\n\r\n      </AppBar>\r\n      <Toolbar className=\"appMenu\">\r\n        { localStorage.getItem('permissions_groups') === 'ADMIN' || localStorage.getItem('permissions_groups') === 'ADMIN_CONTACTS' || localStorage.getItem('permissions_groups') === 'ADMIN_READER' ? ( \r\n          <MenuItemLink className={'appMenuNew ' + (current_path=='/dashboard' ? 'selected' : '')} to=\"/dashboard\" key=\"dashboard\" primaryText={translate('main_menu.home') } exact {...props} />       \r\n        ) : <span /> }\r\n\r\n        { (localStorage.getItem('permissions_groups') === 'ADMIN' || localStorage.getItem('permissions_groups') === 'ADMIN_CONTACTS' || localStorage.getItem('permissions_groups') === 'ADMIN_READER' ) && subscriptionModule(modules.GESTIO) ? ( \r\n          <MenuItemLink className={'appMenuNew ' + ((current_path.includes('/users/') || current_path.includes('/groups-tree/')) ? 'selected' : '')} key=\"users\" to={members_group_link} primaryText={subscriptionModule(modules.RECERCAT) ? translate('main_menu.recercat_users') : translate('main_menu.users')} exact {...props}  />\r\n        ) : <span /> }\r\n    \r\n        { (localStorage.getItem('permissions_groups') === 'ADMIN' || localStorage.getItem('permissions_groups') === 'ADMIN_CONTACTS' || localStorage.getItem('permissions_groups') === 'ADMIN_READER' ) && subscriptionModule(modules.RECERCAT) ? ( \r\n          <MenuItemLink className={'appMenuNew ' + (current_path.includes('/recercat_centers') ? 'selected' : '')} key=\"recercat_centers\" to=\"/recercat_centers\" primaryText={translate('main_menu.recercat_centers')} exact {...props} />\r\n        ) : <span /> }\r\n    \r\n        { (localStorage.getItem('permissions_groups') === 'ADMIN' || localStorage.getItem('permissions_groups') === 'ADMIN_CONTACTS' || localStorage.getItem('permissions_groups') === 'ADMIN_READER' ) && subscriptionModule(modules.CONTACTS_FAC) ? ( \r\n          <MenuItemLink className={'appMenuNew ' + ((current_path.includes('/groups-tree-contacts') || current_path.includes('/users-fac-contacts')) ? 'selected' : '')} key=\"contacts\" to=\"/groups-tree-contacts\" primaryText={translate('main_menu.contacts')} exact {...props} />\r\n        ) : <span /> }\r\n\r\n        { (localStorage.getItem('permissions_groups') === 'ADMIN' || localStorage.getItem('permissions_groups') === 'ADMIN_CONTACTS' || localStorage.getItem('permissions_groups') === 'ADMIN_READER' ) && subscriptionModule(modules.REMITTANCES) ? ( \r\n          <MenuItemLink className={'appMenuNew ' + (current_path.includes('/remittances') ? 'selected' : '')} key=\"remittances\" to=\"/remittances\" primaryText={translate('main_menu.remittances')} exact {...props} />\r\n        ) : <span /> }\r\n    \r\n        { (localStorage.getItem('permissions_groups') === 'ADMIN' || localStorage.getItem('permissions_groups') === 'ADMIN_CONTACTS' || localStorage.getItem('permissions_groups') === 'ADMIN_READER' ) && subscriptionModule(modules.CLASSROOMS) ? ( \r\n          <MenuItemLink className={'appMenuNew ' + (current_path.includes('/classrooms') ? 'selected' : '')} key=\"classrooms\" to=\"/classrooms\" primaryText={translate('main_menu.classrooms')} exact {...props} />\r\n        ) : <span /> }\r\n\r\n        { (localStorage.getItem('permissions_groups') === 'ADMIN' || localStorage.getItem('permissions_groups') === 'ADMIN_CONTACTS' || localStorage.getItem('permissions_groups') === 'ADMIN_READER' ) && subscriptionModule(modules.REAL_STATE) ? ( \r\n          <MenuItemLink className={'appMenuNew ' + (current_path.includes('/real_state') ? 'selected' : '')} key=\"real_state\" to=\"/real_state\" primaryText={translate('main_menu.real_state')} exact {...props} />\r\n        ) : <span /> }\r\n\r\n        { (localStorage.getItem('permissions_groups') === 'ADMIN' || localStorage.getItem('permissions_groups') === 'ADMIN_CONTACTS' || localStorage.getItem('permissions_groups') === 'ADMIN_READER' ) && subscriptionModule(modules.AGREEMENTS) ? ( \r\n          <MenuItemLink className={'appMenuNew ' + (current_path.includes('/agreements') ? 'selected' : '')} key=\"agreements\" to=\"/agreements\" primaryText={translate('main_menu.agreements')} exact {...props} />\r\n        ) : <span /> }\r\n\r\n        { (localStorage.getItem('permissions_groups') === 'ADMIN' || localStorage.getItem('permissions_groups') === 'ADMIN_CONTACTS' || localStorage.getItem('permissions_groups') === 'ADMIN_READER' ) && subscriptionModule(modules.INSURANCES) ? ( \r\n          <MenuItemLink className={'appMenuNew ' + (current_path.includes('/insurances') ? 'selected' : '')} key=\"insurances\" to=\"/insurances\" primaryText={translate('main_menu.insurances')} exact {...props} />\r\n        ) : <span /> }\r\n    \r\n        { (localStorage.getItem('permissions_groups') === 'ADMIN' || localStorage.getItem('permissions_groups') === 'ADMIN_CONTACTS' || localStorage.getItem('permissions_groups') === 'ADMIN_READER' ) && subscriptionModule(modules.CALENDAR) ? ( \r\n          <MenuItemLink className={'appMenuNew ' + (current_path.includes('/events') ? 'selected' : '')} key=\"events\" to=\"/events\" primaryText={translate('main_menu.events')} exact {...props} />\r\n        ) : <span /> }\r\n    \r\n        { (localStorage.getItem('permissions_groups') === 'ADMIN' || localStorage.getItem('permissions_groups') === 'ADMIN_CONTACTS' || localStorage.getItem('permissions_groups') === 'ADMIN_READER' ) && (subscriptionModule(modules.FEDERATION) || subscriptionModule(modules.DONATIONS,modules.DONATIONS_OWN) || subscriptionModule(modules.REMITTANCES) ) ? ( \r\n          <MenuItemLink className={'appMenuNew ' + (current_path.includes('/reports') ? 'selected' : '')} key=\"reports\" to=\"/reports\" primaryText={translate('main_menu.reports')} exact {...props} />\r\n        ) : <span /> }\r\n        \r\n        { (localStorage.getItem('permissions_groups') === 'ADMIN' || localStorage.getItem('permissions_groups') === 'ADMIN_CONTACTS' || localStorage.getItem('permissions_groups') === 'ADMIN_READER' ) && subscriptionModule(modules.DOCUMENTS_FAC) ? ( \r\n          <MenuItemLink className={'appMenuNew ' + (current_path.includes('/docs_fac') ? 'selected' : '')} key=\"docs_fac\" to=\"/docs_fac\" primaryText={translate('main_menu.docs_fac')} exact {...props} />\r\n        ) : <span /> }\r\n    \r\n        { localStorage.getItem('permissions_groups') === 'SIFAC' ? ( \r\n          <MenuItemLink className={'appMenuNew ' + (current_path=='/dashboard' ? 'selected' : '')} key=\"\" to=\"/dashboard\" primaryText={translate('main_menu.associations')} exact {...props} />       \r\n        ) : <span /> }\r\n\r\n        { localStorage.getItem('permissions_groups') === 'SIFAC' ? ( \r\n          <MenuItemLink className={'appMenuNew ' + (current_path.includes('/modules') ? 'selected' : '')} key=\"modules\" to=\"/modules\" primaryText={translate('main_menu.modules')} exact {...props}  />\r\n        ) : <span /> }\r\n        \r\n        { (localStorage.getItem('permissions_groups') === 'ADMIN' || localStorage.getItem('permissions_groups') === 'ADMIN_READER' ) && subscriptionModule(modules.DONATIONS) ? ( \r\n        <MenuItemLink className={'appMenuNew ' + (current_path.includes('/donations_projects') && !current_path.includes('/reports') ? 'selected' : '')} key=\"donations_projects\" to=\"/donations_projects\" primaryText={translate('donations_projects.main_menu_title')} exact {...props} />        \r\n        ) : <span /> }\r\n\r\n      </Toolbar>\r\n    </>\r\n  );\r\n};\r\n\r\n\r\nexport const MyLayout = props => {\r\n  return (\r\n    <>\r\n    <Layout \r\n      {...props} \r\n      menu={''}\r\n      className={window.location.hostname.replaceAll('.','') + ' ' + (subscriptionModule(modules.RECERCAT) ? 'recercat' : '')}\r\n      appBar={MyAppBar} />\r\n      <div id=\"mainLoading\" className=\"loading\"><div></div></div>\r\n    </>\r\n  );\r\n};\r\n\r\n","\r\nimport { apiUrl, apiDefaultLanguage, apiOrigin } from './../common/constants';\r\nimport { setActivePermissionData } from './../common/utils';\r\nimport { Login, LoginForm, useTranslate } from 'react-admin';\r\n\r\n\r\nfunction removeStorage()  {\r\n    \r\n  localStorage.removeItem('auth');\r\n  localStorage.removeItem('email');\r\n  localStorage.removeItem('users_login_id');\r\n  localStorage.removeItem('permissions');\r\n  localStorage.removeItem('active_permission');  \r\n  \r\n  localStorage.removeItem('associations_id');\r\n  localStorage.removeItem('associations_name');    \r\n  localStorage.removeItem('permissions_groups');\r\n  localStorage.removeItem('members_group_id');\r\n  localStorage.removeItem('members_pending_group_id');\r\n  localStorage.removeItem('associations_logo_doc');\r\n  localStorage.removeItem('subscriptions');\r\n  localStorage.removeItem('language');\r\n  localStorage.removeItem('members_pending_group_id');\r\n  \r\n  \r\n}\r\n\r\n// in src/authProvider.js\r\nconst authProvider = {\r\n    \r\n  // called when the user attempts to log in\r\n  login: ({ username, password }, translate) =>  {\r\n            \r\n    let headers = new Headers({ Accept: 'application/json' });\r\n    headers.set('Content-Type', 'application/json' );\r\n    headers.set('Access-Control-Allow-Origin', apiOrigin );\r\n    headers.set('Accept-Language', apiDefaultLanguage);\r\n\r\n    const request = new Request(apiUrl + '/auth/login', {\r\n      method: 'PUT',\r\n      body: JSON.stringify({ email: username, pswd: password }),\r\n      headers: headers,\r\n    });\r\n\r\n    return fetch(request)\r\n      .then(response => {\r\n        if (response.status === 406)\r\n        {\r\n          throw new Error('El compte està bloquejat. Espera uns minuts i torna a provar-ho');     \r\n        }\r\n        else if (response.status === 405)\r\n        {\r\n          throw new Error('S\\'han fet massa intents d\\'inici de sessió. Per seguretat el compte ha quedat bloquejat durant 5 minuts.'); \r\n        }\r\n        else if (response.status === 404) {\r\n          throw new Error('Usuari o contrasenya incorrecta');\r\n        }\r\n        else if (response.status < 200 || response.status >= 300) {\r\n          throw new Error('Usuari o contrasenya incorrecta');\r\n        }                \r\n        return response.json();\r\n      })\r\n      .then(auth => {\r\n          \r\n        localStorage.setItem('auth', auth.token );\r\n        localStorage.setItem('email', auth.email );\r\n        localStorage.setItem('users_login_id', auth.users_login_id );                    \r\n        localStorage.setItem('permissions', JSON.stringify(auth.permissions) );        \r\n        localStorage.setItem('language', auth.language);\r\n        \r\n        setActivePermissionData(auth.active_permission);\r\n        \r\n      })\r\n      .catch((e) => {      \r\n        throw new Error(e);               \r\n      });\r\n  },\r\n  // called when the user clicks on the logout button\r\n  logout: () => {\r\n        \r\n    let authHeaders = new Headers({ Accept: 'application/json' });\r\n    authHeaders.set('Access-Control-Allow-Origin', apiOrigin );\r\n    authHeaders.set('Authorization', localStorage.getItem('auth'));\r\n    authHeaders.set('Accept-Language', apiDefaultLanguage);\r\n    authHeaders.set('Role', localStorage.getItem('active_permission'));\r\n\r\n    const request = new Request(apiUrl + '/auth/logout', {\r\n      method: 'DELETE',\r\n      headers: authHeaders             \r\n    });\r\n\r\n    return fetch(request)\r\n      .then(response => {\r\n        removeStorage();\r\n      })\r\n      .catch(() => {\r\n        removeStorage();\r\n      });\r\n\r\n  },\r\n    \r\n  // called when the API returns an error\r\n  checkError: ({ status }) => {        \r\n    if (status === 401 || status === 403) {\r\n      localStorage.removeItem('auth');\r\n      return Promise.reject();\r\n    }\r\n    return Promise.resolve();\r\n  },\r\n  // called when the user navigates to a new location, to check for authentication\r\n  checkAuth: () => {\r\n    return localStorage.getItem('auth')\r\n      ? Promise.resolve()\r\n      : Promise.reject();\r\n  },\r\n  // called when the user navigates to a new location, to check for permissions / roles\r\n  getPermissions: () => Promise.resolve(),\r\n};\r\n\r\n\r\nexport default authProvider;\r\n\r\n","\r\nimport * as React from 'react';\r\nimport { Component } from 'react';\r\nimport customRoutes from './customRoutes';\r\nimport { Admin, Resource, LoginPage, Login, LoginForm } from 'react-admin';\r\n\r\nimport { Redirect } from 'react-router-dom';\r\n\r\nimport usersIcon from '@material-ui/icons/Group';\r\nimport modulesIcon from '@material-ui/icons/Apps';\r\nimport AssociationsIcon from '@material-ui/icons/Business';\r\n\r\n/* RESOURCES */\r\nimport { AssociationsList,AssociationsEdit,AssociationsCreate  } from './resources/associations';\r\nimport { GroupsList, GroupsEdit  } from './resources/groups';\r\nimport { UsersList,UsersEdit,UsersCreate,UsersShow  } from './resources/users';\r\nimport { ModulesList,ModulesEdit,ModulesCreate  } from './resources/modules';\r\nimport { ModulesViewList } from './components/ModulesView';\r\nimport { GroupsQuotesEdit,GroupsQuotesCreate  } from './resources/groups_quotes';\r\nimport { RemittancesList,RemittancesEdit,RemittancesCreate  } from './resources/remittances';\r\nimport { RecercatCentersList, RecercatCentersCreate, RecercatCentersEdit } from './resources/recercat_centers';\r\nimport { DocsFacList } from './resources/docs_fac';\r\nimport { ClassroomsList,ClassroomsEdit  } from './resources/classrooms';\r\nimport { RealStateList,RealStateEdit, RealStateCreate, RealStateShow  } from './resources/real_state';\r\nimport { RealStateActivitiesList,RealStateActivitiesEdit, RealStateActivitiesCreate  } from './resources/real_state_activities';\r\nimport { RealStatePaymentsList,RealStatePaymentsEdit, RealStatePaymentsCreate  } from './resources/real_state_payments';\r\nimport { AgreementsList,AgreementsEdit, AgreementsCreate  } from './resources/agreements';\r\nimport { InsurancesList,InsurancesEdit, InsurancesCreate  } from './resources/insurances';\r\nimport { AlertsList, AlertsEdit, AlertsCreate  } from './resources/alerts';\r\nimport { EventsList  } from './resources/events';\r\nimport { DonationsProjectsList,DonationsProjectsEdit } from './resources/donations_projects';\r\nimport { DonationsUsersList } from './resources/donations_users';\r\nimport { EmailsHistoryList } from './resources/emails';\r\nimport { CustomFieldsList,CustomFieldsEdit, CustomFieldsCreate  } from './resources/custom_fields';\r\nimport { CustomFieldsOptionsList,CustomFieldsOptionsEdit, CustomFieldsOptionsCreate  } from './resources/custom_fields_options';\r\n\r\nimport { i18nProvider, useTranslate  } from './common/language';\r\nimport { dataProvider } from './common/dataProvider';\r\n\r\nimport { MyLayout } from './components/MyLayout';\r\nimport Dashboard from './components/Dashboard';\r\n\r\nimport { reducer as tree } from '@react-admin/ra-tree';\r\n\r\nimport authProvider from './common/authProvider';\r\n\r\n\r\nimport { connect } from 'react-redux';\r\nimport { userLogin } from 'react-admin';\r\nimport { MuiThemeProvider } from '@material-ui/core/styles';\r\n\r\nconst CustomLoginForm = (props) => {\r\n    const translate = useTranslate();\r\n    var domain = window.location.hostname.replaceAll('.','');\r\n    return (\r\n    <Login {...props}>\r\n        <LoginForm/>\r\n        { domain !== 'admingestioentitatscat' && domain !== 'localhost' ? null : \r\n        <div className=\"text-center\">{translate('signup.link_or')} <a href=\"/#/sign-up\">{translate('signup.link')}</a></div> }\r\n    </Login>\r\n)};\r\n\r\nconst NotFound = () => {\r\n  return (<Redirect to=\"/not-found\" />);\r\n};\r\n\r\nconst App = () => {\r\n  const translate = useTranslate();\r\n  return (\r\n    <Admin \r\n      title=\"Associacions\" \r\n      i18nProvider={i18nProvider} \r\n      dashboard={Dashboard} \r\n      dataProvider={dataProvider} \r\n      disableTelemetry \r\n      customRoutes={customRoutes} \r\n      layout={MyLayout}    \r\n      customReducers={{ tree }} \r\n      authProvider={authProvider}\r\n      menu={false} \r\n      catchAll={NotFound}\r\n      loginPage={CustomLoginForm}\r\n    >   \r\n      <Resource name=\"groups-tree\" options={{ label: translate('main_menu.groups') }} list={GroupsList} show={GroupsEdit} />\r\n      <Resource name=\"groups-tree-contacts\" options={{ label: translate('main_menu.contacts') }} list={GroupsList} show={GroupsEdit} />\r\n      <Resource name=\"users\" options={{ label: translate('main_menu.users') }} list={UsersList} edit={UsersEdit} create={UsersCreate} icon={usersIcon} show={UsersShow} />\r\n      <Resource name=\"users-fac-contacts\" options={{ label: translate('main_menu.users') }} list={UsersList} edit={UsersEdit} create={UsersCreate} icon={usersIcon} show={UsersShow} />\r\n      <Resource name=\"remittances\" options={{ label: translate('main_menu.remittances') }} list={RemittancesList} edit={RemittancesEdit} create={RemittancesCreate} icon={usersIcon} /> \r\n      <Resource name=\"modules_view\" />       \r\n      <Resource name=\"associations\" options={{ label: translate('main_menu.associations') }} list={AssociationsList} edit={AssociationsEdit} create={AssociationsCreate} icon={AssociationsIcon} />\r\n      <Resource name=\"modules\" options={{ label: translate('main_menu.modules') }} list={ModulesList} edit={ModulesEdit} create={ModulesCreate} icon={modulesIcon} />              \r\n      <Resource name=\"subscriptions\" options={{ label: translate('main_menu.subscriptions') }} />\r\n      <Resource name=\"users_groups\" options={{ label: translate('main_menu.users_groups') }} />  \r\n      <Resource name=\"modules_options\"  options={{ label: translate('main_menu.options') }} />  \r\n      <Resource name=\"users_permissions\"  options={{ label: translate('main_menu.permissions') }} />    \r\n      <Resource name=\"responsabilities\" />     \r\n      <Resource name=\"users_groups_responsabilities\" options={{ label: translate('users_groups.responsability'), name : 'càrrec' }} />  \r\n      <Resource name=\"users_groups_history\" />    \r\n      <Resource name=\"users_groups_quotes\" />   \r\n      <Resource name=\"groups_quotes\" edit={GroupsQuotesEdit} create={GroupsQuotesCreate} /> \r\n      <Resource name=\"groups_quotes_periods\" options={{ label: translate('groups_quotes.title') }} />           \r\n      <Resource name=\"remittances_users\" />   \r\n      <Resource name=\"remittances_users_items\" />\r\n      <Resource name=\"groups\" />\r\n      <Resource name=\"groups_with_quotes\" />\r\n      <Resource name=\"docs\" />\r\n      <Resource name=\"docs-contacts\" />\r\n      <Resource name=\"social_nets\" options={{ label: translate('social_nets.title'),  name: translate('social_nets.title') } } />\r\n      <Resource name=\"social_nets_contacts\" options={{ label: translate('social_nets.title'),  name: translate('social_nets.title') } } />\r\n      <Resource name=\"nets\" />\r\n      <Resource name=\"users_families\" />\r\n      <Resource name=\"remittances_users_returns\" />\r\n      <Resource name=\"users_contacts\" />\r\n      <Resource name=\"users_contacts_contacts\" />\r\n      <Resource name=\"users_economic_data\" />\r\n      <Resource name=\"users_demografy\" />\r\n      <Resource name=\"templates\" />\r\n      <Resource name=\"users_emails\" />\r\n      <Resource name=\"users_emails_contacts\" />\r\n      <Resource name=\"classrooms\" options={{ label: translate('main_menu.classrooms') }} list={ClassroomsList} edit={ClassroomsEdit} icon={usersIcon} />        \r\n      <Resource name=\"users_classrooms\" options={{ label: translate('main_menu.classrooms') }} edit={ClassroomsEdit} icon={usersIcon} />        \r\n      <Resource name=\"events\" options={{ label: translate('main_menu.events') }} list={EventsList}  /> \r\n      <Resource name=\"activities\" />\r\n      <Resource name=\"labels\" />\r\n      <Resource name=\"bookings\" />\r\n      <Resource name=\"users_searcher\" />\r\n      <Resource name=\"census\" />\r\n      <Resource name=\"payers\" />\r\n      <Resource name=\"mailing_lists\" />\r\n      <Resource name=\"activities_users\" />\r\n      <Resource name=\"sections_users\" />\r\n      <Resource name=\"books\" />\r\n      <Resource name=\"users_addresses\" />\r\n      <Resource name=\"users_edited_books\" />\r\n      <Resource name=\"users_recognitions\" />\r\n      <Resource name=\"users_schedules\" />\r\n      <Resource name=\"users_sections\" />\r\n      <Resource name=\"users_shows\" />\r\n      <Resource name=\"users_activities\" />\r\n      <Resource name=\"users_login\" />\r\n      <Resource name=\"users_workers\" />\r\n      <Resource name=\"users_annuary\" />\r\n      <Resource name=\"users_trainings\" />\r\n      <Resource name=\"users_social_projects\" />\r\n      <Resource name=\"reports/annuary\" />\r\n      <Resource name=\"reports/responsabilities\" />\r\n      <Resource name=\"groups_cards\" />\r\n      <Resource name=\"real_state\" options={{ label: translate('main_menu.real_state') }} list={RealStateList} edit={RealStateEdit} create={RealStateCreate} show={RealStateShow} icon={usersIcon} />\r\n      <Resource name=\"real_state_activities\" list={RealStateActivitiesList} edit={RealStateActivitiesEdit} create={RealStateActivitiesCreate} icon={usersIcon}/>\r\n      <Resource name=\"real_state_payments\" list={RealStatePaymentsList} edit={RealStatePaymentsEdit} create={RealStatePaymentsCreate} icon={usersIcon}/>\r\n      <Resource name=\"agreements\" options={{ label: translate('main_menu.agreements') }} list={AgreementsList} edit={AgreementsEdit} create={AgreementsCreate} icon={usersIcon} />\r\n      <Resource name=\"alerts\" list={AlertsList} edit={AlertsEdit} create={AlertsCreate} icon={usersIcon} />\r\n      <Resource name=\"alerts_users_login\" />      \r\n      <Resource name=\"insurances\" list={InsurancesList} edit={InsurancesEdit} create={InsurancesCreate} icon={usersIcon} />      \r\n      <Resource name=\"ibans\" />\r\n      <Resource name=\"payment_systems\" />  \r\n      <Resource name=\"donations_projects\" list={DonationsProjectsList} edit={DonationsProjectsEdit} icon={usersIcon} /> \r\n      <Resource name=\"donations_users\" /> \r\n      <Resource name=\"donations_certificates\" /> \r\n      <Resource name=\"donations_projects/payments\" /> \r\n      <Resource name=\"postal_labels\" />\r\n      <Resource name=\"organizers\" />\r\n      <Resource name=\"recercat_centers\" options={{ label: translate('main_menu.recercat_centers') }} list={RecercatCentersList} edit={RecercatCentersEdit} create={RecercatCentersCreate} icon={usersIcon}  />       \r\n      <Resource name=\"recercat_centers/public/cities\" />\r\n      <Resource name=\"recercat_centers/public\" />\r\n      <Resource name=\"docs_fac\" options={{ label: translate('main_menu.docs_fac') }} list={DocsFacList} icon={usersIcon}  /> \r\n      <Resource name=\"provinces\" />\r\n      <Resource name=\"regions\" />\r\n      <Resource name=\"cities\" />\r\n      <Resource name=\"emails\" list={EmailsHistoryList} icon={usersIcon} /> \r\n      <Resource name=\"custom_fields\" list={CustomFieldsList} edit={CustomFieldsEdit} create={CustomFieldsCreate} icon={usersIcon} /> \r\n      <Resource name=\"custom_fields_options\" list={CustomFieldsOptionsList} edit={CustomFieldsOptionsEdit} create={CustomFieldsOptionsCreate} icon={usersIcon} />\r\n    </Admin>);\r\n};\r\n\r\nexport default App;\r\n","const reportWebVitals = onPerfEntry => {\r\n  if (onPerfEntry && onPerfEntry instanceof Function) {\r\n    import('web-vitals').then(({ getCLS, getFID, getFCP, getLCP, getTTFB }) => {\r\n      getCLS(onPerfEntry);\r\n      getFID(onPerfEntry);\r\n      getFCP(onPerfEntry);\r\n      getLCP(onPerfEntry);\r\n      getTTFB(onPerfEntry);\r\n    });\r\n  }\r\n};\r\n\r\nexport default reportWebVitals;\r\n","import React from 'react';\r\nimport ReactDOM from 'react-dom';\r\nimport './index.css';\r\nimport App from './App';\r\nimport reportWebVitals from './reportWebVitals';\r\n\r\nvar generalClassName = window.location.hostname.replaceAll('.','');\r\n\r\nReactDOM.render(\r\n  <React.StrictMode>\r\n    <App />\r\n  </React.StrictMode>,\r\n  document.getElementById('root')\r\n);\r\n\r\ndocument.getElementById('root').classList.add(generalClassName);\r\n\r\n// If you want to start measuring performance in your app, pass a function\r\n// to log results (for example: reportWebVitals(console.log))\r\n// or send to an analytics endpoint. Learn more: https://bit.ly/CRA-vitals\r\nreportWebVitals();\r\n"],"sourceRoot":""}