Hi, and apologies for the delay.
There are several tools you could combine to create the desired result:
1. You can define your own color of a background time cell using BeforeCellRender event handler (just change e.BackColor)
2. You can hide lunch time using BeforeTimeHeaderRender (set e.Visible = false for the second header row - i.e. when e.IsColGroup == false). Hiding the non business hours must be enabled by setting ShowNonBusiness=false.
3. You can apply your own server-side rules in the methods that handle EventMove, EventResize, etc. and deny operations that don't meet the rules. An additional message explaining the result can be displayed on the client using Update(msg) call.
4. You can hook the events on the client side using JavaScript. Set the *Handling property (e.g. TimeRangeSelectedHandling) to "JavaScript" and define *JavaScript handler (e.g. TimeRangeSelectedJavaScript). You could apply some rules here and call the server side event handler using *CallBack() method (e.g. timeRangeSelectedCallBack()).
It is not possible to make the lunch time visible but non-clickable. However, you can provide a visual hint and an immediate feedback once the action is performed. You can also automatically shorten/divide the event in the server-side event handler before changing to the database.
Please let me know if you need more details...