/*
 * Author       : zchelp
 * Generated on : 23-Nov-2009 02:11:17
 * Version      : 3.0
 */
application "Feedback Application"
{
    type = public
    date format = "dd-MMM-yyyy"
    time zone = "America/Los_Angeles"
    section Modules
    {
        form  Modules
        {
            
            Module_Name
            (
                displayname  =  "Module 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  Modules_View
        {
            displayname = "Modules View"
            show  all  rows  from  Modules 
            (
                Module_Name as "Module Name"
            )
            options
            (
                display rows = 100
            )
        }

    }

    section Team_Members
    {
        displayname = "Team Members"
        form  Team_Member
        {
            displayname  =  "Team Member"
            
            Name
            (
                type  =  text
            )

            Module
            (
                type  =  picklist
                values  =  Modules.Module_Name
            )

            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  Team_Member_View
        {
            displayname = "Team Member View"
            show  all  rows  from  Team_Member 
            (
                Name
                Module
            )
            filters 
            (
                Module
            )
            options
            (
                display rows = 100
            )
        }

    }

    section Submit_Feedback
    {
        displayname = "Submit Feedback"
        form  Submit_Feedback
        {
            displayname  =  "Submit Feedback"
            
            column
            {
                Your_emailid
                (
                    displayname  =  "Your emailid"
                    type  =  email
                )

                Category
                (
                    type  =  radiobuttons
                    values  =  {"Feature request",   "Bug report",   "Usability",   "General"}
                )

                Your_Comments
                (
                    displayname  =  "Your Comments"
                    type  =  textarea
                )

                Submitted_On
                (
                    displayname  =  "Submitted On"
                    type  =  date
                    private  =  true
                )

            }
            column
            {
                Module
                (
                    displayname  =  "Module Name"
                    type  =  picklist
                    values  =  Modules.Module_Name
                    on user input
                    {
                        if (count(Team_Member[Module == input.Module])  ==  0)
                        {
                            clear Assign_To;
                        }
                        else
                        {
                            for each r in Team_Member  [Module == input.Module]
                            {
                                Assign_To:ui.add(r.Name);
                            }
                        }
                    }
                )

                Assign_To
                (
                    displayname  =  "Assign To"
                    type  =  picklist
                    values  =  Team_Member.Name
                )

                Status
                (
                    type  =  picklist
                    values  =  {"Open",   "Closed"}
                    defaultvalue  =  "Open"
                    on update
                    {
                        if (input.Status  ==  "Closed")
                        {
                            sendmail
                            (
                                To       :  zoho.loginuserid 
                                From     :  zoho.adminuserid 
                                Subject  :  "Status of issue with subject " + input.Your_Comments 
                                Message  :  "The issue is " + input.Status 
                            )
                        }
                    }
                )

            }
            actions
            {
                on add
                {
                    Submit
                    (
                        type  =  submit
                        displayname  =  "Submit"
                        on success
                        {
                            input.Submitted_On = zoho.currentdate;
                            sendmail
                            (
                                To       :  zoho.adminuserid, "yourname@domain.com" 
                                From     :  zoho.adminuserid 
                                Subject  :  "Issue reported on " + input.Submitted_On + "By " + input.Your_emailid 
                                Message  :  input.Your_Comments 
                            )
                        }
                    )
                    Reset
                    (
                        type  =  reset
                        displayname  =  "Reset"
                    )
                }
                on edit
                {
                    Update
                    (
                        type  =  submit
                        displayname  =  "Update"
                    )
                    Cancel
                    (
                        type  =  cancel
                        displayname  =  "Cancel"
                    )
                }
            }
        }

        list  Submit_Feedback_View
        {
            displayname = "Submit Feedback View"
            show  all  rows  from  Submit_Feedback 
            (
                Module as "Module Name"
                Your_Comments as "Issue"
                Submitted_On as "Submitted On"
                Assign_To as "Assign To"
                Status
            )
            filters 
            (
                Module
                Assign_To
                Category
                Status
                Submitted_On
            )
        }

    }

    section Home1
    {
        displayname = "Reports"
        list  Unassigned_Issues
        {
            displayname = "Unassigned Issues"
            show  all  rows  from  Submit_Feedback [(Assign_To is null)]
            (
                Your_emailid as "Your emailid"
                Category
                Your_Comments as "Your Comments"
                Submitted_On as "Submitted On"
                Status
            )
            filters 
            (
                Module
                Assign_To
                Category
                Status
                Submitted_On
            )
            options
            (
                display rows = 100
            )
        }

        list  Assigned_Issues
        {
            displayname = "Assigned Issues"
            show  all  rows  from  Submit_Feedback [((Assign_To is not null) && Status == "Open")]
            (
                Your_Comments as "Issue"
                Submitted_On as "Submitted On"
                Module as "Module Name"
                Assign_To as "Assign To"
                Status
            )
            filters 
            (
                Module
                Assign_To
                Category
                Status
                Submitted_On
            )
            options
            (
                display rows = 100
            )
        }

        htmlpage Summary_View()
displayname = "Summary View"
content
        <%{%>

<table class=zc-viewtable width="50%" border="1" valign="top">
<caption class="zc-viewtitle">Summary of Assigned Issues</caption>
<tbody>
<tr>
<td valign="top">

<table class=zc-viewtable width=100% >
<caption class="zc-viewtitle">Total issues assigned to each module</caption>
<tbody>
<tr class="zc-row-header">
<td class="zc-viewrowheader">Module Name</td>
<td class="zc-viewrowheader">Total Issues</td>
</tr>

<%for each r in Modules
            {
                ModuleName = r.Module_Name;
                ModuleTotal = count(Submit_Feedback[Module == ModuleName]);%>



<tr class=zc-viewrow>
<td><%=ModuleName%></td>
<td><%=ModuleTotal%></td></tr>            <%}%>

</tbody>
</table>
</td>

 

<td valign="top">
<table class=table zc-viewtable width=100% >
<caption class="zc-viewtitle">Total issues assigned to each team member</caption>
<tbody>

<tr class="zc-row-header">
<td class="zc-viewrowheader">Team Members</td>
<td class="zc-viewrowheader">Total Issues Assigned</td>
</tr>


<%for each x in Team_Member
            {
                MemberName = x.Name;
                MemberTotal = count(Submit_Feedback[Assign_To == MemberName]);%>



<tr class=zc-viewrow>
<td><%=MemberName%></td>
<td><%=MemberTotal%></td></tr>
            <%}%>
</tbody>
</table>

</td>
</tr>
</table>
        <%}%>

    }

}
