enum and switch cases

Your enum Color is not an array of strings, but will be a list of ints, so once it's gone through the compiler { UNDEF, RED, ORANGE, YELLOW, GREEN, BLUE, PURPLE } becomes {0,1,2,3,4,5,6}. This obviously can't be compared with a string you are receiving via the serial port.
What you need to do is use strcmp in a series of if statements (http://www.cplusplus.com/reference/cstring/strcmp/).