profilationSelect.js 6.63 KB
import * as ProfilationSelectActionTypes from '../actiontypes/profilationSelect';
import flessibile from '../../img/icon_flessibile.svg'
import semplice from '../../img/icon_semplice.svg'
import personale from '../../img/icon_personale.svg'
import sostenibile from '../../img/icon_sostenibile.svg'

const initialState = {
	
	activeStep: 0,
  steps: [
			{
				isComplete: false,
				job: '',
				service: ''
			}, {
				isComplete: false,
				expend: 'consumo',
				period: 'anno',
				light: '',
				gas: ''
			}, {
				isComplete: false,
				environment: ''
			}, {
				isComplete: false,
				flexibility: ''
			}, {
				isComplete: false,
				customizable: ''
			}
		],

	solutions:[

	{
		isActive:false,
		isSelected:false,
		icon: semplice,
		name:'Semplice',
		description:'Prezzo garantito, gestione facile e 100% online.',
		price: 310,
		service:'Elettricità e gas'
	},
	{
		isActive:true,
		isSelected:true,
		icon: flessibile,
		name:'Flessibile',
		description:'Scegli quando pagare, puoi dilazionare i pagamenti senza costi aggiuntivi.',
		price: 445,
		service:'Gas'
	},
	{
		isActive:false,
		isSelected:false,
		icon: sostenibile,
		name:'Sostenibile',
		description:'Soluzione eco-friendly, solo energia 100% verde da fonti rinnovabili.',
		price: 510
	},
	{
		isActive:false,
		isSelected:false,
		icon: personale,
		name:'Personale',
		description:'Soluzione con assistenza telefonica evoluta con operatore dedicato.',
		price: 610
	},
	
	],
	/*oggetto file caricato = 
		{
			file:'',
			fileExt:'',
			preview:'',
			filename:'',
		}
	*/
	activationSteps:[
	{
		
		idCard_front:'',
		idCard_front_loading:false,
		idCard_back:'',
		idCard_back_loading:false,
		
		cfCard_front:'',
		cfCard_front_loading:false,
		cfCard_back:'',
		cfCard_back_loading:false,		
		
		isActive:true,
		isComplete:false
	},
	{
		lightBill:'',
		lightBill_loading:false,
		gasBill:'',
		gasBill_loading:false,
		
		lightVal:'',
		gasVal:'',

		isActive:false,
		isComplete:false,
		editing:false
	},
	{
		iban:{
			value:'',
			valid:false,
			ignore:false
		},
		codiceFiscaleIntestatario:{
			value:'',
			valid:false,
			ignore:true,
		},
		nomeIntestatario:{
			value:'',
			valid:false,
			ignore:true,
		},
		cognomeIntestatario:{
			value:'',
			valid:false,
			ignore:true,
		},
		emailIntestatario:{
			value:'',
			valid:false,
			ignore:false
		},
		iva:{
			value:'ordinario',
			valid:true,
			ignore:false
		},
		ivaService:{
			value:'both',
			valid:true,
			ignore:false
		},
		activityType:{
			value:'',
			valid:false,
			ignore:true,
		},
		activityAteco:{
			value:'',
			valid:false,
			ignore:true,
		},

		accise:{
			value:'piene',
			valid:true,
			ignore:false
		},

		volumiAccise:{
			value:'',
			valid:false,
			ignore:true,
		},
		isActive:false,
		isComplete:false
	},
	{
		referentMail:{
			value:'',
			valid:false,
			required:true
		},
		referentPhone:{
			value:'',
			valid:false,
			required:true
		},

		referentIsHolder:{
			value:true,
			valid:true,
			required:false
		},

		holderName:{
			value:'',
			valid:false,
			required:false
		},
		holderSurname:{
			value:'',
			valid:false,
			required:false
		},
		holderMail:{
			value:'',
			valid:false,
			required:false
		},
		holderPhone:{
			value:'',
			valid:false,
			required:false
		},
		checkLightConditions:{
			value:false,
			valid:false,
			required:true
		},
		checkGasConditions:{
			value:false,
			valid:false,
			required:true
		},
		checkAttoNotorieta:{
			value:false,
			valid:false,
			required:true
		},
		checkIvaAgevolata:{
			value:false,
			valid:false,
			required:true
		},
		checkAcciseRidotte:{
			value:false,
			valid:false,
			required:false
		},
		isActive:false,
		isComplete:false	
	},{
		activationCode:{
			value:'',
			valid:false,
			required:false
		},
		sendAgainNumber:{
			value:'',
			valid:false,
			required:false
		}
	}
	],
	lightVal_tmp:'',
	gasVal_tmp:'',
	modalOpen:[],
	camModalDocId:'',
	camModalMaxPhotos:1,
	camModalStep:0,
	solutionInModal:0,
	activationTooltip:false,
	valuesAccepted:true,
	idSamefile:false,
	cfSamefile:false,
	activationActiveStep:0,
	mobileUploadComplete:false,
	profilationStepTwoError:false
}

export default function ProfilationSelectReducer (state=initialState, action){
	//console.log('reducer',action)
	switch(action.type){
		case ProfilationSelectActionTypes.CHANGE_VALUE:
		 return {...state, steps: action.steps, activeStep: action.activeStep};
		/*return {
			...state,
			steps: state.steps.map((step,index) => {
				if(index===action.index){
					return {
						...state.steps[action.index],
						[action.prop]: action.value,
						isComplete: action.complete,
						isActive: !action.complete
					}
				}
				else if(index===action.index+1&&action.complete)
				{
					return{
						...state.steps[action.index+1],
						isActive:true,
					}
				}
				else{
					return step
				}
			})
			
		};*/
		case ProfilationSelectActionTypes.CHANGE_PROP:
		return {
			
				...state,
				[action.prop]:action.value
			
		};
		case ProfilationSelectActionTypes.SHOW_MODAL:
		return {
			
				...state,
				modalOpen:[...state.modalOpen,action.modalName]
			
		};
		case ProfilationSelectActionTypes.SHOW_CAM_MODAL:
		return {
			
				...state,
				modalOpen:[...state.modalOpen,action.modalName],
				camModalDocId:action.docId,
				camModalMaxPhotos:action.maxPhotos,
				camModalStep:action.step
			
		};
		case ProfilationSelectActionTypes.HIDE_MODAL:
		return {
			
				...state,
				modalOpen:state.modalOpen.filter((_, i) => i !== (state.modalOpen.length-1))
			
		};
		case ProfilationSelectActionTypes.CHANGE_SOLUTION:
		return {
			
				...state,

					solutions: state.solutions.map((solution,index) => {

						if(index===action.index){
							
							return {
								...state.solutions[action.index],
								[action.prop]: action.value,
								
							}
						}
						
						else{
							return {
								...state.solutions[index],
								isSelected: false,
							}
						}
					})	
				
			
		};
		case ProfilationSelectActionTypes.UPDATE_ACTIVATION:
		return {
			
				...state,
				
					activationSteps: state.activationSteps.map((step,index) => {
						if(index===action.index){
							return {
								...state.activationSteps[action.index],
								[action.prop]: action.value,
								
							}
						}
						
						else{
							return step
						}
					})	
			
		};

		default:{
			return state;
		}
		
	}
	
}