Well here's a little to get you started:
#define WAITING 0
#define DRAINING 1
#define FILLING 2
int cycles_to_go = 10 ;
int state = WAITING ;
void loop ()
{
if (cycles_to_go > 0)
handle_tank () ;
}
void handle_tank ()
{
if (digitalRead (full_pin))
{
digitalWrite (drain_solenoid. HIGH) ;
digitalWrite (fill_solenoid, LOW) ;
state = FILLING ;
}
else if (!digitalRead (empty_pin))
{
digitalWrite (drain_solenoid, LOW) ;
digitalWrite (fill_solenoid, HIGH) ;
state = DRAINING ;
}
...
}