/*
 * Author       : zchelp
 * Generated on : 22-Nov-2009 21:06:46
 * Version      : 3.0
 */
application "Exam Registration"
{
    type = public
    allow html = true
    date format = "dd-MMM-yyyy"
    time zone = "America/Los_Angeles"
    section Home
    {
        form  Country
        {
            
            must  have  unique  Country_Name
            (
                displayname  =  "Country Name"
                type  =  text
            )

            actions
            {
                on add
                {
                    Submit
                    (
                        type  =  submit
                        displayname  =  "Submit"
                    )
                    Reset
                    (
                        type  =  reset
                        displayname  =  "Reset"
                    )
                }
                on edit
                {
                    Update
                    (
                        type  =  submit
                        displayname  =  "Update"
                    )
                    Cancel
                    (
                        type  =  cancel
                        displayname  =  "Cancel"
                    )
                }
            }
        }

        list  Country_View
        {
            displayname = "Country View"
            show  all  rows  from  Country 
            (
                Country_Name as "Country Name"
            )
            options
            (
                display rows = 100
            )
        }

        form  State
        {
            
            must  have  Country_Name
            (
                displayname  =  "Country Name"
                type  =  picklist
                values  =  Country.Country_Name
                sortorder  =  ascending
            )

            must  have  State_Name
            (
                displayname  =  "State Name"
                type  =  text
            )

            actions
            {
                on add
                {
                    Submit
                    (
                        type  =  submit
                        displayname  =  "Submit"
                    )
                    Reset
                    (
                        type  =  reset
                        displayname  =  "Reset"
                    )
                }
                on edit
                {
                    Update
                    (
                        type  =  submit
                        displayname  =  "Update"
                    )
                    Cancel
                    (
                        type  =  cancel
                        displayname  =  "Cancel"
                    )
                }
            }
        }

        list  State_View
        {
            displayname = "State View"
            show  all  rows  from  State 
            (
                State_Name as "State Name"
                Country_Name as "Country Name"
            )
            options
            (
                display rows = 100
            )
        }

        form  Zipcode
        {
            
            must  have  State_Name
            (
                displayname  =  "State Name"
                type  =  picklist
                values  =  State[Country_Name == "India"].State_Name
                sortorder  =  ascending
            )

            must  have  unique  zipcode
            (
                displayname  =  "Zipcode / Pincode"
                type  =  text
                maxchar  =  10
            )

            actions
            {
                on add
                {
                    Submit
                    (
                        type  =  submit
                        displayname  =  "Submit"
                    )
                    Reset
                    (
                        type  =  reset
                        displayname  =  "Reset"
                    )
                }
                on edit
                {
                    Update
                    (
                        type  =  submit
                        displayname  =  "Update"
                    )
                    Cancel
                    (
                        type  =  cancel
                        displayname  =  "Cancel"
                    )
                }
            }
        }

        list  Zipcode_View
        {
            displayname = "Zipcode View"
            show  all  rows  from  Zipcode 
            (
                State_Name as "State Name"
                zipcode as "Zipcode / Pincode"
            )
            options
            (
                display rows = 100
            )
        }

        form  Registration
        {
            
            column
            {
                must  have  unique  Name
                (
                    type  =  text
                )

                must  have  Age
                (
                    type  =  number
                    width  =  20
                )

                must  have  Email_ID
                (
                    displayname  =  "Email ID"
                    type  =  email
                )

                GCE_Exam_Number
                (
                    displayname  =  "GCE Exam Number"
                    type  =  text
                )

                Country
                (
                    type  =  picklist
                    values  =  Country.Country_Name
                    sortorder  =  ascending
                    on user input
                    {
                        if (count(State[Country_Name == input.Country])  ==  0)
                        {
                            clear State;
                        }
                        else
                        {
                            statelist  =  State  [Country_Name == input.Country] sort by  State_Name ;
                            State:ui.add(statelist.State_Name.getall());
                        }
                    }
                )

                State
                (
                    type  =  picklist
                    values  =  State.State_Name
                    sortorder  =  ascending
                )

                Photograph
                (
                    type = upload file
                )

                User_Code
                (
                    displayname  =  "User Code"
                    type  =  text
                )

                Final_Submission
                (
                    displayname  =  "Final Submission"
                    type  =  checkbox
                    defaultvalue  =  false
                )

            }
            column
            {
                Photo
                (
                    type  =  formula
                    value  =  ("<img src='http://creator.zoho.com/DownloadFile.do?filepath=/" + Photograph + "&sharedBy=" + zoho.adminuser) + "'>"
                )

            }
            actions
            {
                on add
                {
                    on load
                    {
                        hide User_Code;
                    }
                    Submit
                    (
                        type  =  submit
                        displayname  =  "Submit"
                        on validate
                        {
                            input.User_Code = input.Name + "" + (zoho.currenttime.toLong());
                            if (count(Registration[Name == input.Name])  >  0)
                            {
                                alert "You have already registered";
                                cancel submit;
                            }
                        }
                        on success
                        {
                            sendmail
                            (
                                To       :  input.Email_ID 
                                From     :  zoho.adminuserid 
                                Subject  :  "Successfully Registered" 
                                Message  :  "Dear " + input.Name + ",<br><br>You have Successfully Registered.  Your user code is <b>" + input.User_Code + "</b><br><br>Thanks." 
                            )
                        }
                    )
                    Reset
                    (
                        type  =  reset
                        displayname  =  "Reset"
                    )
                }
                on edit
                {
                    on load
                    {
                        hide User_Code;
                        if (input.Final_Submission)
                        {
                            hide Final_Submission;
                        }
                    }
                    Update
                    (
                        type  =  submit
                        displayname  =  "Update"
                        on validate
                        {
                            isChanged = false;
                            if (input.Final_Submission)
                            {
                                alert "You can't change this record because its fully submission record.";
                                cancel submit;
                            }
                            if (old.Name  !=  input.Name)
                            {
                                isChanged = true;
                            }
                            if (isChanged  &&  (count(Registration[Name == input.Name])  >  0))
                            {
                                alert "You have already registered";
                                cancel submit;
                            }
                        }
                    )
                    Cancel
                    (
                        type  =  cancel
                        displayname  =  "Cancel"
                    )
                }
            }
        }

        list  Registration_View
        {
            displayname = "Registration View"
            show  all  rows  from  Registration 
            (
                Name
                Age
                GCE_Exam_Number as "GCE Exam Number"
                Country
                State
                Photo
                Email_ID as "Email ID"
                User_Code as "User Code"
                Modified_Time as "Last Modified Time"
                Modified_User as "Last Modified User"
                Added_Time as "Added Time"
                Added_User as "Added User"
            )
            group by
            (
                GCE_Exam_Number   ascending
                Age   ascending
            )
            options
            (
                display rows = 100
            )
        }

        form  Edit_Registration
        {
            displayname  =  "Edit Registration"
            
            must  have  user_code
            (
                displayname  =  "User Code"
                type  =  text
            )

            actions
            {
                on add
                {
                    Submit
                    (
                        type  =  submit
                        displayname  =  "Submit"
                    )
                    Reset
                    (
                        type  =  reset
                        displayname  =  "Reset"
                    )
                }
                on edit
                {
                    Update
                    (
                        type  =  submit
                        displayname  =  "Update"
                    )
                    Cancel
                    (
                        type  =  cancel
                        displayname  =  "Cancel"
                    )
                }
            }
        }

    }

}
