Hello everyone,
I have one page this is showing various error in several cases one of them is Invalid JSON primitive error while enabling the RadAjaxManager and other is while changing the tab of RadTabStrip second tab shows blank data.
Here is my code of aspx and cs:
<%@ Page Title="" Language="C#" MasterPageFile="~/Main.Master" AutoEventWireup="true"
Trace="true" CodeBehind="TaskList.aspx.cs" Inherits="xx.Web.TaskList"
MaintainScrollPositionOnPostback="true" %>
<%@ MasterType VirtualPath="~/Main.Master" %>
<asp:Content ID="Content1" ContentPlaceHolderID="head" runat="server">
<link href="../css/Tooltip.css" rel="stylesheet" type="text/css" />
<%--<script src="Scripts/jquery-1.5.1.min.js" type="text/javascript"></script>
<script src="Scripts/jquery.jgrowl_minimized.js" type="text/javascript"></script>--%>
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" runat="server">
<div class="right_top">
<table border="0" cellpadding="0" cellspacing="0" style="float: left; padding: 10px 0 0 10px;
width: 100%;">
<tr>
<td>
<asp:Label ID="lblFeedback" Text="" ForeColor="Green" Font-Bold="true" runat="server" />
<span id="lblAjaxFeedback"></span>
</td>
</tr>
<tr>
<td>
<telerik:RadTabStrip ID="TaskViewRadTabStrip" SelectedIndex="0" runat="server" Skin="Windows7"
MultiPageID="TaskMultiPage" AutoPostBack="true">
<Tabs>
<telerik:RadTab Text="Calendar View">
</telerik:RadTab>
<telerik:RadTab Text="List View">
</telerik:RadTab>
</Tabs>
</telerik:RadTabStrip>
</td>
</tr>
</table>
<div class="clear">
</div>
</div>
<div class="right_middle">
<div class="right_middle_inner">
<telerik:RadMultiPage ID="TaskMultiPage" runat="server" SelectedIndex="0">
<telerik:RadPageView ID="CalendarPageView" runat="server">
<%--<telerik:RadButton ID="btnScheduler" ButtonType="LinkButton" Text="List View" runat="server"
OnClick="btnScheduler_Click" Font-Bold="True" Font-Underline="True">
</telerik:RadButton>--%>
<table>
<tr>
<td style="width: 170px;">
<telerik:RadComboBox ID="rcbUser" runat="server" DataTextField="Value" DataValueField="Id"
CheckBoxes="true" EnableCheckAllItemsCheckBox="true" EmptyMessage="Choose User(s)"
Width="150px" OnDataBound="rcbUser_DataBound" AutoPostBack="true" OnSelectedIndexChanged="Filter_SelectedIndexChanged">
</telerik:RadComboBox>
</td>
<td style="width: 225px;">
<telerik:RadComboBox ID="rcbTimeFrame" runat="server" Width="100px" AutoPostBack="true"
OnSelectedIndexChanged="Filter_SelectedIndexChanged">
</telerik:RadComboBox>
<asp:CheckBox ID="chkWeekend" Text="Hide Weekend" runat="server" AutoPostBack="true"
Style="padding: 3px 0;" />
</td>
<td style="width: 240px;">
<telerik:RadComboBox ID="rcbJob" runat="server" DataTextField="Value" EmptyMessage="Choose Job(s)"
DataValueField="Id" CheckBoxes="true" EnableCheckAllItemsCheckBox="true" Width="220px"
AutoPostBack="true" OnSelectedIndexChanged="Filter_SelectedIndexChanged">
</telerik:RadComboBox>
</td>
<td>
<telerik:RadComboBox ID="rcbJobStatus" runat="server" DataTextField="Value" EmptyMessage="Choose Status(s)"
DataValueField="Id" CheckBoxes="true" EnableCheckAllItemsCheckBox="true" Width="110px"
AutoPostBack="true" OnSelectedIndexChanged="Filter_SelectedIndexChanged">
</telerik:RadComboBox>
</td>
</tr>
</table>
<div class="tasks_main">
<div class="tasks_bg">
<div class="task_title">
Calendar
</div>
<div class="task_right" style="margin: 3px 4px 0 0; width: auto;">
<div class="newtask">
<telerik:RadButton ID="btnCAdd" ButtonType="LinkButton" Text="Add New Task" OnClientClicked="openEditTaskWin"
AutoPostBack="false" runat="server">
</telerik:RadButton>
</div>
</div>
<div class="clear">
</div>
</div>
<div class="task_bot_inner">
<telerik:RadScheduler ID="TaskRadScheduler" runat="server" Height="500px" CustomAttributeNames="JobId,
PName, Title, UserId, UName, IsComplete" DataKeyField="TaskContactId" DataSubjectField="Title"
DataStartField="StartDate" DataEndField="DueDate" OnAppointmentCreated="TaskRadScheduler_AppointmentCreated"
RowHeight="55px" OnDataBound="TaskRadScheduler_DataBound" Skin="Windows7" SelectedView="DayView"
AllowInsert="false" AllowDelete="false" AllowEdit="false" OnClientAppointmentClick="OnClientAppointmentClick"
OnClientAppointmentDoubleClick="OnClientAppointmentDoubleClick" OnNavigationComplete="TaskRadScheduler_NavigationComplete"
OnAppointmentDataBound="TaskRadScheduler_AppointmentDataBound" ShowNavigationPane="false"
Width="100%" UserSelectable="false" ShowHoursColumn="false" ShowAllDayRow="true"
ShowFooter="false">
<MonthView AdaptiveRowHeight="true" VisibleAppointmentsPerDay="50" />
<AppointmentTemplate>
<div style="height: 50px;">
<div style="float: left;">
#<asp:Literal ID="taskJobId" runat="server" Text='<%# Bind("JobId") %>'></asp:Literal>
-
</div>
<div style="float: left;">
<asp:Literal ID="taskPropOwner" runat="server" Text='<%# Eval("PName") %>'></asp:Literal>
</div>
<div style="clear: both; height: 5px;">
</div>
<asp:Literal ID="taskTitle" runat="server" Text='<%# Eval("Title") %>'></asp:Literal>
<div style="border-top: 1px solid #000; border-collapse: collapse;">
<div>
<asp:Literal ID="taskContact" runat="server" Text='<%# Eval("UName") %>'></asp:Literal>
</div>
</div>
</div>
</AppointmentTemplate>
<TimeSlotContextMenuSettings EnableDefault="false" />
<AppointmentContextMenuSettings EnableDefault="false" />
</telerik:RadScheduler>
</div>
<div style="padding: 5px 0;" align="right">
<telerik:RadComboBox ID="rcbViews" runat="server" DataTextField="Value" EmptyMessage="Choose a Saved View"
DataValueField="Id" Width="200px" OnSelectedIndexChanged="rcbViews_SelectedIndexChanged"
MarkFirstMatch="True" AutoPostBack="true">
</telerik:RadComboBox>
<telerik:RadButton ID="btnSaveView" ButtonType="StandardButton" Text="Save View"
runat="server" CssClass="saveButton">
</telerik:RadButton>
</div>
<telerik:RadToolTip ID="rttSchedulerAppointment" runat="server" RelativeTo="Element"
Position="BottomCenter" AutoCloseDelay="0" ShowEvent="FromCode" Width="410px">
<div id="tootipContainer">
<div style="width: 400px;">
<div id="ttHeader">
<div class="tooltipLeftCorner">
<a href="#"><span id="ttTaskTitle">Install Drywall</span></a>
</div>
<div class="tooltipRightCorner">
<span id="ttTaskID">Task #72</span>
</div>
<div class="clear" />
</div>
<div id="ttDetail">
<div class="tooltipDescription">
<span id="ttDescription">The drywall needs to be installed before due date. The drywall
needs to be installed before due date. The drywall needs to be installed before
due date. </span>
</div>
<div class="ttTaskScheduleDetail">
<ul class="ttScheduleList">
<li>
<div>
<span class="ttScheduleListTitle">Assigned To: </span><span id="ttAName" class="Right"></span>
</div>
</li>
<li>
<div>
<span class="ttScheduleListTitle">Start Date: </span><span id="ttSDate" class="Right"></span>
</div>
</li>
<li>
<div>
<span class="ttScheduleListTitle">Due Date: </span><span id="ttDDate" class="Right"></span>
</div>
</li>
<li>
<div>
<span class="ttScheduleListTitle">Reminder: </span><span id="ttRDate" class="Right"></span>
</div>
</li>
</ul>
</div>
<div class="ttTaskJobDetail" id="ttTaskJobDetail">
<div class="ttTaskJobLeftPan">
<div>
<a href="#"><span id="ttPropOwner">John Dongerfield</span></a>
</div>
<div class="Clear">
</div>
<div>
<span id="ttJobAddress">fdsfd fdf ds</span>
</div>
</div>
<div class="ttTaskJobRightPan">
<ul class="ttScheduleList">
<li><span id="ttJobId">#71</span></li>
<li><span id="ttJobType">Lead</span></li>
<li><span id="ttJobStatus">Active</span></li>
</ul>
</div>
<div class="clear">
</div>
</div>
</div>
<div class="ttTools" align="right" id="ttTools">
</div>
</div>
</div>
</telerik:RadToolTip>
</div>
</telerik:RadPageView>
<telerik:RadPageView ID="ListPageView" runat="server">
<div class="rcbTaskFilter" style="float: left; padding: 5px 5px 0 0;">
<%--<telerik:RadButton ID="btnCalendar" ButtonType="LinkButton" Text="Calendar View"
runat="server" OnClick="btnCalendar_Click" Font-Bold="True" Font-Underline="True">
</telerik:RadButton>--%>
</div>
<div class="rcbTaskFilter" style="float: right;">
<telerik:RadComboBox ID="rcbTaskFilter" runat="server" AutoPostBack="true" AllowCustomText="false"
IsCaseSensitive="false" MarkFirstMatch="true" OnSelectedIndexChanged="rcbTaskFilter_SelectedIndexChanged">
<Items>
<telerik:RadComboBoxItem Text="Incomplete" Value="0" Selected="true" />
<telerik:RadComboBoxItem Text="Complete" Value="1" />
<telerik:RadComboBoxItem Text="Both" Value="2" />
</Items>
</telerik:RadComboBox>
</div>
<div style="float: right; padding: 5px 5px 0 5px;">
Filter
</div>
<div class="clear">
</div>
<telerik:RadGrid ID="TasksRadGrid" runat="server" OnNeedDataSource="TasksRadGrid_NeedDataSource"
GridLines="None" AllowPaging="True" AllowSorting="True" CellSpacing="0" AllowAutomaticUpdates="false"
AllowAutomaticInserts="false" AllowAutomaticDeletes="false" AllowFilteringByColumn="true"
Skin="Windows7" AutoGenerateColumns="False" OnItemCreated="TasksRadGrid_ItemCreated"
OnItemCommand="TasksRadGrid_ItemCommand" OnItemDataBound="TasksRadGrid_ItemDataBound"
OnDeleteCommand="TasksRadGrid_DeleteCommand" OnInsertCommand="TasksRadGrid_InsertCommand"
OnUpdateCommand="TasksRadGrid_UpdateCommand" ShowHeader="true">
<PagerStyle Mode="NextPrevAndNumeric" AlwaysVisible="true" />
<MasterTableView AutoGenerateColumns="False" EditMode="PopUp" DataKeyNames="Id" AllowAutomaticDeletes="true"
CommandItemDisplay="Top">
<CommandItemSettings ExportToPdfText="Export to PDF"></CommandItemSettings>
<CommandItemTemplate>
<table width="100%">
<tr>
<td width="30%">
<h2>
Tasks</h2>
</td>
<td width="40%">
</td>
<td width="15%" align="right">
<telerik:RadButton ID="btnFilter" ButtonType="ToggleButton" AutoPostBack="false"
ToggleType="CustomToggle" OnClientToggleStateChanged="toggleFilter" runat="server">
<Icon PrimaryIconUrl="~/images/Filter.gif" />
<ToggleStates>
<telerik:RadButtonToggleState Selected="true" />
<telerik:RadButtonToggleState />
</ToggleStates>
</telerik:RadButton>
</td>
<td width="15%" align="left">
<div class="newtask">
<telerik:RadButton ID="btnAdd" ButtonType="LinkButton" Text="Add New Task" OnClientClicked="openEditTaskWin"
AutoPostBack="false" runat="server">
</telerik:RadButton>
</div>
</td>
</tr>
</table>
</CommandItemTemplate>
<RowIndicatorColumn FilterControlAltText="Filter RowIndicator column">
<HeaderStyle Width="20px"></HeaderStyle>
</RowIndicatorColumn>
<ExpandCollapseColumn FilterControlAltText="Filter ExpandColumn column">
<HeaderStyle Width="20px"></HeaderStyle>
</ExpandCollapseColumn>
<Columns>
<telerik:GridBoundColumn DataField="Id" UniqueName="Id" DataType="System.Int32" ReadOnly="True"
Visible="false" />
<telerik:GridTemplateColumn DataField="IsComplete" HeaderText="Complete" UniqueName="IsComplete"
DataType="System.Boolean" Visible="true" DefaultInsertValue="false" HeaderStyle-Width="30">
<ItemTemplate>
<telerik:RadButton ID="btnToggle2" runat="server" Checked='<%# Eval("IsComplete") %>'
CommandName="CompleteCommand" CommandArgument='<%# Eval("IsComplete") %>' ToggleType="CheckBox"
ButtonType="ToggleButton" AutoPostBack="true">
</telerik:RadButton>
</ItemTemplate>
</telerik:GridTemplateColumn>
<telerik:GridBoundColumn DataField="LFCustomerFk" UniqueName="LFCustomerFk" DataType="System.Int32"
Visible="false" Display="false" />
<telerik:GridBoundColumn DataField="JobFk" UniqueName="JobFk" DataType="System.Int32"
Visible="false" Display="false" />
<telerik:GridTemplateColumn DataField="Title" HeaderText="Title" SortExpression="Title"
UniqueName="Title" DataType="System.String">
<ItemTemplate>
<asp:HyperLink ID="btnTaskTitle" runat="server" NavigateUrl="#" Text='<%# Eval("Title") %>'
onclick='<%# Eval("Id","openEditTaskWin({0})") %>' />
<%# (Eval("JobFk") != null) ? " <a class=\"sublink\" href='/jobs/default.aspx?jobid=" + Eval("Job.Id") + "'>Job #" + Eval("Job.Id") + " - " + Eval("Job.Contact.FirstName") + " " + Eval("Job.Contact.LastName") + "</a>" : ""%>
</ItemTemplate>
</telerik:GridTemplateColumn>
<telerik:GridBoundColumn DataField="Account.Name" SortExpression="Account.Name" HeaderText="Assigned To"
Display="false" />
<telerik:GridBoundColumn DataField="DueDate" DataFormatString="{0:MM/dd/yyyy}" HeaderText="Due"
SortExpression="DueDate" UniqueName="DueDate" DataType="System.DateTime" MaxLength="100"
HeaderStyle-Width="60" />
<telerik:GridBoundColumn DataField="Description" HeaderText="Description" SortExpression="Description"
UniqueName="Description" DataType="System.String" MaxLength="500" />
<telerik:GridBoundColumn DataField="ReminderType" UniqueName="ReminderType" DataType="System.Int16"
Display="false" />
<telerik:GridBoundColumn DataField="ReminderDate" DataFormatString="{0:MM/dd/yyyy}"
UniqueName="ReminderDate" DataType="System.DateTime" Display="false" />
<telerik:GridBoundColumn DataField="ReminderSent" UniqueName="ReminderSent" DataType="System.Boolean"
Display="false" />
<telerik:GridTemplateColumn AllowFiltering="false" HeaderStyle-Width="110px" HeaderText="Manage">
<ItemTemplate>
<asp:HyperLink ID="btnEditTask" runat="server" NavigateUrl="#" Text="Edit" onclick='<%# Eval("Id","openEditTaskWin({0})") %>' /> |
<asp:LinkButton ID="btnDeleteTask" runat="server" ButtonType="LinkButton" Text="Delete"
CommandName="Delete" UniqueName="DeleteColumn" OnClientClick="return confirm('Are you sure you want to delete this task?');" />
</ItemTemplate>
</telerik:GridTemplateColumn>
</Columns>
</MasterTableView>
<ClientSettings>
<ClientEvents OnGridCreated="OnGridCreated" />
</ClientSettings>
<FilterMenu EnableImageSprites="False">
</FilterMenu>
<HeaderContextMenu CssClass="GridContextMenu GridContextMenu_Default">
</HeaderContextMenu>
</telerik:RadGrid>
</telerik:RadPageView>
</telerik:RadMultiPage>
</div>
<telerik:RadCodeBlock ID="s" runat="server">
<script type="text/javascript" language="javascript">
function callNow() {
$('.radTemplateDay_Default').mouseover(function () {
//showToolTip(this);
});
}
function OnClientAppointmentClick(sender, args) {
var apt = args.get_appointment();
showTooltip(apt);
}
function AjaxError(result) {
var err = eval("(" + result.responseText + ")");
if (err.Message == "Thread was being aborted.") {
$.jGrowl("Session expired. Redirecting to login page.", { header: 'Error', sticky: true });
window.setTimeout(function () {
var curpage = document.location.href.replace(document.location.protocol + "//" + document.location.host, "");
top.location = document.location.protocol + "//" + document.location.host + "/login.aspx?refer=" + curpage;
}, 2000);
}
else {
$.jGrowl(err.Message, { header: 'Error', sticky: true });
}
}
function AjaxFailure(result) {
var err = eval("(" + result.responseText + ")");
$.jGrowl("Failure: " + result.status + " - " + result.statusText, { header: 'Error', sticky: true });
}
function showTooltip(apt) {
$.ajax({
type: "POST",
url: "/TaskList.aspx/GetTooltipTaskDetails",
data: "{'taskContactId': " + apt.get_id() + "}",
contentType: "application/json; charset=utf-8",
dataType: "json",
error: AjaxError,
failure: AjaxFailure,
beforeSend: function () {
//alert("send");
},
success: function (jsData) {
var data = eval(jsData.d);
if (data) {
$("#ttTaskTitle").text(data.Title);
$("#ttTaskID").text(data.Id);
$("#ttDescription").text(data.Description);
$("#ttAName").text(data.aName);
$("#ttSDate").text(data.sDate);
$("#ttDDate").text(data.dDate);
$("#ttRDate").text(data.eDate);
$("#ttPropOwner").text(data.pName);
$("#ttJobAddress").text(data.pAddress);
$("#ttJobId").text(data.jId);
$("#ttJobType").text(data.jType);
$("#ttJobStatus").text(data.jStatus);
$("#ttTools").html("");
$("#ttTools").append("<a href='#' onclick='openEditTaskWin(" + data.TaskId + ")' >Edit </a>");
$("#ttTools").append(" <a href='#' onclick='completeTaskWithCheck(" + data.TaskId + ")' >Complete</a>");
$("#ttTools").append(" <a href='#' onclick='deleteTaskWithCheck(" + data.TaskId + ")' >Delete</a>");
if (data.pName == "") {
$("#ttTaskJobDetail").css("display", "none");
}
else {
//$("#ttTaskJobDetail").css("background-color", apt.getAttribute("color"));
}
var tooltip = $find('<%=rttSchedulerAppointment.ClientID %>');
tooltip.set_targetControl(apt.get_element());
tooltip.set_text($get("tootipContainer").innerHTML);
//tooltip.set_text("<span>Error occured while retrieving data from server.</span>");
//setTimeout(function () {
tooltip.show();
//}, 20);
}
},
complete: function () {
}
});
}
function hideToolTip() {
var tooltip = $find('<%=rttSchedulerAppointment.ClientID %>');
if (tooltip)
tooltip.hide();
//var scheduler = $find('<%=TaskRadScheduler.ClientID %>');
//scheduler.rebind();
}
function OnClientAppointmentDoubleClick(sender, args) {
return false;
//args.set_cancel(true);
}
function deleteTaskWithCheck(taskId) {
var answer = confirm("Are you sure you want to delete this task?");
if (answer) {
$.ajax({
type: "POST",
url: "/TaskList.aspx/DeleteTask",
data: "{'id': " + taskId + "}",
contentType: "application/json; charset=utf-8",
dataType: "json",
error: AjaxError,
failure: AjaxFailure,
success: function (jsData) {
var data = jsData.d;
hideToolTip();
$("#lblAjaxFeedback").text(data.message);
$("#lblAjaxFeedback").css("color", data.color);
$("#lblAjaxFeedback").fadeOut(2500);
},
beforeSend: function () { },
complete: function () {
}
});
}
return false;
}
function completeTaskWithCheck(taskId) {
var answer = confirm("Are you sure you want to mark this task complete?");
if (answer) {
$.ajax({
type: "POST",
url: "/TaskList.aspx/CompleteTask",
data: "{'id': " + taskId + "}",
contentType: "application/json; charset=utf-8",
dataType: "json",
error: AjaxError,
failure: AjaxFailure,
success: function (jsData) {
var data = jsData.d;
hideToolTip();
$("#lblAjaxFeedback").text(data.message);
$("#lblAjaxFeedback").css("color", data.color);
$("#lblAjaxFeedback").fadeOut(2500);
},
beforeSend: function () { },
complete: function () {
}
});
}
return false;
}
</script>
</telerik:RadCodeBlock>
<telerik:RadCodeBlock ID="DefaultCodeBlock" runat="server">
<script type="text/javascript">
function refreshTaskList() {
// This is to rebind the task list
}
</script>
</telerik:RadCodeBlock>
<telerik:RadWindowManager ID="RadWindowManager1" KeepInScreenBounds="true" ShowContentDuringLoad="false"
VisibleStatusbar="false" ReloadOnShow="true" runat="server" Skin="Windows7" EnableShadow="true"
AutoSize="true" BorderStyle="None" VisibleOnPageLoad="false" Behaviors="Move,Close"
Modal="true">
<Windows>
<telerik:RadWindow ID="EditTasktDialog" runat="server" Title="Add Task" NavigateUrl="/AddTask.aspx" />
<telerik:RadWindow ID="TaskViewDialog" runat="server" Title="Save View">
<ContentTemplate>
<div style="padding: 20px;">
<div style="text-align: center; width: 400px; height: 50px;">
<telerik:RadComboBox ID="rcbSaveView" runat="server" DataTextField="Value" DataValueField="Id"
Width="300px" MarkFirstMatch="true" AllowCustomText="true" AppendDataBoundItems="true"
EmptyMessage="Enter a new view or select an exisitng view to update">
</telerik:RadComboBox>
<asp:RequiredFieldValidator ID="rfView" runat="server" ErrorMessage="View is required"
ControlToValidate="rcbSaveView" ForeColor="Red" Display="Dynamic" ValidationGroup="lf">
</asp:RequiredFieldValidator>
</div>
<div align="center">
<telerik:RadButton ID="btnSave" ButtonType="StandardButton" Text="Save" runat="server"
CssClass="saveButton" OnClick="btnSave_Click" UseSubmitBehavior="false">
</telerik:RadButton>
<telerik:RadButton ID="btnCancel" ButtonType="StandardButton" Text="Close" runat="server"
CausesValidation="false" OnClientClicked="CloseCurrentWindow" CssClass="cancelButton">
</telerik:RadButton>
</div>
</div>
</ContentTemplate>
</telerik:RadWindow>
</Windows>
</telerik:RadWindowManager>
<telerik:RadCodeBlock ID="RadCodeBlock1" runat="server">
<script src="/Scripts/RadGridSupport.js" type="text/javascript"></script>
<script type="text/javascript">
function ShowFilter() {
var masterTable = $find("<%= TasksRadGrid.ClientID %>").get_masterTableView();
masterTable.showFilterItem();
createCookie("ShowGridFilter", 1, 30);
}
function HideFilter() {
var masterTable = $find("<%= TasksRadGrid.ClientID %>").get_masterTableView();
masterTable.hideFilterItem();
createCookie("ShowGridFilter", 0, 30);
}
function openEditTaskWin(id) {
hideToolTip();
if (id != 0) {
var oWnd = radopen("/AddTask.aspx?taskid=" + id, "EditTasktDialog");
}
else {
var oWnd = radopen("/AddTask.aspx", "EditTasktDialog");
}
return false;
}
function CloseCurrentWindow(button, args) {
CloseTaskViewDialog();
button.set_autoPostBack(false);
}
function CloseTaskViewDialog() {
oWnd = $find("<%=TaskViewDialog.ClientID%>");
oWnd.Close();
}
</script>
</telerik:RadCodeBlock>
</div>
<%--<telerik:RadAjaxManager ID="RadAjaxManagerTask" runat="server">
<AjaxSettings>
<telerik:AjaxSetting AjaxControlID="rcbTaskFilter">
<UpdatedControls>
<telerik:AjaxUpdatedControl ControlID="rcbTaskFilter" />
<telerik:AjaxUpdatedControl ControlID="TasksRadGrid" LoadingPanelID="RadAjaxTaskLoading" />
<telerik:AjaxUpdatedControl ControlID="lblFeedback" />
</UpdatedControls>
</telerik:AjaxSetting>
<telerik:AjaxSetting AjaxControlID="TasksRadGrid">
<UpdatedControls>
<telerik:AjaxUpdatedControl ControlID="TasksRadGrid" LoadingPanelID="RadAjaxTaskLoading" />
<telerik:AjaxUpdatedControl ControlID="lblFeedback" />
</UpdatedControls>
</telerik:AjaxSetting>
<telerik:AjaxSetting AjaxControlID="TaskRadScheduler">
<UpdatedControls>
<telerik:AjaxUpdatedControl ControlID="TaskRadScheduler" LoadingPanelID="RadAjaxTaskLoading" />
</UpdatedControls>
</telerik:AjaxSetting>
<telerik:AjaxSetting AjaxControlID="rcbUser">
<UpdatedControls>
<telerik:AjaxUpdatedControl ControlID="rcbJob" />
<telerik:AjaxUpdatedControl ControlID="TaskRadScheduler" LoadingPanelID="RadAjaxTaskLoading" />
</UpdatedControls>
</telerik:AjaxSetting>
<telerik:AjaxSetting AjaxControlID="rcbTimeFrame">
<UpdatedControls>
<telerik:AjaxUpdatedControl ControlID="TaskRadScheduler" LoadingPanelID="RadAjaxTaskLoading" />
</UpdatedControls>
</telerik:AjaxSetting>
<telerik:AjaxSetting AjaxControlID="chkWeekend">
<UpdatedControls>
<telerik:AjaxUpdatedControl ControlID="TaskRadScheduler" LoadingPanelID="RadAjaxTaskLoading" />
</UpdatedControls>
</telerik:AjaxSetting>
<telerik:AjaxSetting AjaxControlID="rcbJob">
<UpdatedControls>
<telerik:AjaxUpdatedControl ControlID="TaskRadScheduler" LoadingPanelID="RadAjaxTaskLoading" />
</UpdatedControls>
</telerik:AjaxSetting>
<telerik:AjaxSetting AjaxControlID="rcbJobStatus">
<UpdatedControls>
<telerik:AjaxUpdatedControl ControlID="TaskRadScheduler" LoadingPanelID="RadAjaxTaskLoading" />
</UpdatedControls>
</telerik:AjaxSetting>
<telerik:AjaxSetting AjaxControlID="rcbViews">
<UpdatedControls>
<telerik:AjaxUpdatedControl ControlID="TaskRadScheduler" LoadingPanelID="RadAjaxTaskLoading" />
</UpdatedControls>
</telerik:AjaxSetting>
<telerik:AjaxSetting AjaxControlID="btnSave">
<UpdatedControls>
<telerik:AjaxUpdatedControl ControlID="TaskRadScheduler" LoadingPanelID="RadAjaxTaskLoading" />
</UpdatedControls>
</telerik:AjaxSetting>
<telerik:AjaxSetting AjaxControlID="TaskViewRadTabStrip">
<UpdatedControls>
<telerik:AjaxUpdatedControl ControlID="TaskMultiPage" LoadingPanelID="RadAjaxTaskLoading" />
</UpdatedControls>
</telerik:AjaxSetting>
</AjaxSettings>
</telerik:RadAjaxManager>--%>
<telerik:RadAjaxLoadingPanel ID="RadAjaxTaskLoading" runat="server" />
</asp:Content>
================================================================================================
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using Telerik.Web.UI;
using System.Web.UI.HtmlControls;
using Telerik.Web.UI.Calendar.View;
using System.Data.SqlClient;
using System.Data;
using System.Web.Services;
using System.Web.Script.Serialization;
using System.Globalization;
using System.Drawing;
namespace xx.Web
{
public partial class TaskList : System.Web.UI.Page
{
Data.xxModelContainer context = new Data.xxModelContainer();
Dictionary<DateTime, string> listDate = new Dictionary<DateTime, string>();
Core.AuthManager _authManager;
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
FillSchedulerControls();
}
Session["JOBID"] = null;
lblFeedback.Text = "";
int lfCust = Convert.ToInt32(Session["LFCUSTOMERID"]);
if (!IsPostBack) TasksRadGrid.MasterTableView.IsFilterItemExpanded = false;
if (Session["ADD_TASK"] != null)
{
if (Session["ADD_TASK"].ToString() == "1")
lblFeedback.Text = "Task has been successfully added.";
else
lblFeedback.Text = "Task has been successfully saved.";
lblFeedback.ForeColor = System.Drawing.Color.Green;
Session.Remove("ADD_TASK");
}
var rsTask = (from q in context.TaskContacts where q.Task.IsDeleted == false && q.ContactFk == lfCust select q.Task);
foreach (var task in rsTask)
{
DateTime day = Convert.ToDateTime(task.DueDate).Date;
if (listDate.ContainsKey(day))
{
listDate[day] = listDate[day] + Convert.ToDateTime(task.DueDate).ToString("hh:mm tt") + ", " + task.Title + "<br/>";
}
else
{
listDate.Add(day, Convert.ToDateTime(task.DueDate).ToString("hh:mm tt") + ", " + task.Title + "<br/>");
}
}
if (Request.QueryString["taskid"] != null)
{
WebTools.Authentication.AuthManager authManager = new WebTools.Authentication.AuthManager();
int loggedin = authManager.GetUserId(Page);
Data.UserAccount ua = Master.DbContext.UserAccounts.Where(q => q.Id == loggedin).FirstOrDefault();
Int32 id = Int32.Parse(Request.QueryString["taskid"].ToString());
if (id > 0)
{
var taskContact = Master.DbContext.TaskContacts.Where(q => q.TaskFk == id && q.Task.IsDeleted == false && q.ContactFk ==
(Master.DbContext.UserAccounts.Where
(d => d.Id == loggedin).FirstOrDefault().ContactFk
)).FirstOrDefault();
if (taskContact != null)
{
Session["nopermission"] = "nopermission";
Response.Redirect("~/Default.aspx");
}
}
}
if (!IsPostBack)
{
int id = -1;
try
{
id = Int32.Parse(Session["LFCUSTOMERID"].ToString());
}
catch
{
id = -1;
}
if (id == -1)
{
Response.Redirect("Default.aspx");
}
/*
var data = (from q in Master.DbContext.UserAccounts where q.LFCustomerFk == id select q);
foreach (var user in data.Distinct())
{
RadComboBoxItem item = new RadComboBoxItem();
item.Text = user.Contact != null ? user.Contact.FirstName : "";
item.Value = user.Id.ToString();
rcbUserFilter.Items.Add(item);
item.DataBind();
}
*/
if (Session["PageView"] != null && Session["ADD_TASK"] != null)
{
AddPageView(Session["PageView"].ToString());
}
}
TaskViewDialog.OpenerElementID = btnSaveView.ClientID;
ScriptManager.RegisterStartupScript(this, typeof(Page), "Panel", "callNow();", true);
}
int randomColorCount = 0;
protected void rcbUser_DataBound(object sender, EventArgs e)
{
foreach (RadComboBoxItem item in rcbUser.Items)
{
item.BackColor = Color.FromName(((xx.Core.RandomColor)(randomColorCount)).ToString());
randomColorCount++;
if (randomColorCount == 90)
randomColorCount = 0;
}
}
protected void Filter_SelectedIndexChanged(object sender, EventArgs e)
{
GetTasks();
}
protected void TaskRadScheduler_DataBound(object sender, EventArgs e)
{
foreach (ResourceType resType in TaskRadScheduler.ResourceTypes)
{
resType.AllowMultipleValues = true;
}
}
protected void TaskRadScheduler_AppointmentCreated(object sender, AppointmentCreatedEventArgs e)
{
if (e.Appointment.RecurrenceState == RecurrenceState.Master || e.Appointment.RecurrenceState == RecurrenceState.Occurrence)
{
Panel recurrenceStateDiv = new Panel();
recurrenceStateDiv.CssClass = "rsAptRecurrence";
e.Container.Controls.AddAt(0, recurrenceStateDiv);
}
if (e.Appointment.RecurrenceState == RecurrenceState.Exception)
{
Panel recurrenceStateDiv = new Panel();
recurrenceStateDiv.CssClass = "rsAptRecurrenceException";
e.Container.Controls.AddAt(0, recurrenceStateDiv);
}
}
private void GetTasks()
{
try
{
_authManager = new Core.AuthManager();
if (Request.QueryString["taskid"] != null)
{
int id = int.Parse(Request.QueryString["taskid"].ToString());
var tasks = from q in Master.DbContext.TaskContacts
where q.Task.IsDeleted == false
&& q.TaskFk == id
orderby q.Task.StartDate descending
select new
{
TaskContactId = q.Id,
JobId = q.Task.JobFk == null ? 0 : q.Task.JobFk,
PName = (String.IsNullOrEmpty(q.Task.Job.Contact.FirstName) ? "" : q.Task.Job.Contact.FirstName + " ")
+ (String.IsNullOrEmpty(q.Task.Job.Contact.LastName) ? "" : q.Task.Job.Contact.LastName),
Title = q.Task.Title,
UserId = q.ContactFk,
UName = (String.IsNullOrEmpty(q.Contact.FirstName) ? "" : q.Contact.FirstName + " ")
+ (String.IsNullOrEmpty(q.Contact.LastName) ? "" : q.Contact.LastName),
StartDate = q.Task.StartDate,
DueDate = q.Task.DueDate,
IsComplete = q.Task.IsComplete
};
TaskRadScheduler.DataSource = tasks;
TaskRadScheduler.DataBind();
}
else
{
List<int?> users = new List<int?>();
foreach (var item in rcbUser.CheckedItems)
{
users.Add(Convert.ToInt32(String.IsNullOrEmpty(item.Value) ? "0" : item.Value));
}
string[] dates = rcbTimeFrame.SelectedValue.Split('-');
DateTime startDate = Convert.ToDateTime(dates[0]);
DateTime dueDate = Convert.ToDateTime(dates[1]);
if (chkWeekend.Checked)
{
TaskRadScheduler.FirstDayOfWeek = DayOfWeek.Monday;
TaskRadScheduler.LastDayOfWeek = DayOfWeek.Friday;
}
else
{
TaskRadScheduler.FirstDayOfWeek = DayOfWeek.Monday;
TaskRadScheduler.LastDayOfWeek = DayOfWeek.Sunday;
}
List<int?> jobs = new List<int?>();
foreach (var item in rcbJob.CheckedItems)
{
jobs.Add(Convert.ToInt32(String.IsNullOrEmpty(item.Value) ? "0" : item.Value));
}
List<int?> jobstatuses = new List<int?>();
foreach (var item in rcbJob.CheckedItems)
{
jobstatuses.Add(Convert.ToInt32(String.IsNullOrEmpty(item.Value) ? "0" : item.Value));
}
var test = from q in Master.DbContext.TaskContacts
where q.Task.IsDeleted == false
&& (q.Task.StartDate < q.Task.DueDate)
//&& (q.Contact.LFCustomerFk == Master.LFCustomerFk)
select q;
var tasks = from q in Master.DbContext.TaskContacts
where q.Task.IsDeleted == false
&& (q.Task.StartDate < q.Task.DueDate)
&& (q.Contact.LFCustomerFk == _authManager.CustomerFk)
//&& users.Contains(q.ContactFk)
//&& (q.Task.Job
//&& q.Task
orderby q.Task.StartDate descending
select new
{
TaskContactId = q.Id,
JobId = q.Task.JobFk == null ? 0 : q.Task.JobFk,
PName = (String.IsNullOrEmpty(q.Task.Job.Contact.FirstName) ? "" : q.Task.Job.Contact.FirstName + " ")
+ (String.IsNullOrEmpty(q.Task.Job.Contact.LastName) ? "" : q.Task.Job.Contact.LastName),
Title = q.Task.Title,
UserId = q.ContactFk,
UName = (String.IsNullOrEmpty(q.Contact.FirstName) ? "" : q.Contact.FirstName + " ")
+ (String.IsNullOrEmpty(q.Contact.LastName) ? "" : q.Contact.LastName),
StartDate = q.Task.StartDate,
DueDate = q.Task.DueDate,
IsComplete = q.Task.IsComplete
};
TaskRadScheduler.DataSource = tasks;
TaskRadScheduler.DataBind();
}
}
catch
{
lblFeedback.ForeColor = Color.Red;
lblFeedback.Text = "Error in loading Task Calendar.";
}
}
protected void SaveTaskCalendarView()
{
try
{
_authManager = new Core.AuthManager();
Data.TaskCalendarSavedView cView = new Data.TaskCalendarSavedView();
cView.UserAccountFk = _authManager.UserFk;
cView.ViewName = rcbSaveView.Text;
cView.UserSettings = String.Join(",", rcbUser.CheckedItems.Select(d => d.Value).ToList().ToArray());
cView.TimeframeSettings = rcbTimeFrame.SelectedIndex.ToString();
cView.JobSettings = String.Join(",", rcbJob.CheckedItems.Select(d => d.Value).ToList().ToArray());
cView.JobStatusSettings = String.Join(",", rcbJobStatus.CheckedItems.Select(d => d.Value).ToList().ToArray());
cView.DateUpdated = DateTime.Now;
int iTaskCalendarView = Core.AppManager.SaveTaskCalendarView(cView);
if (iTaskCalendarView > 0)
{
lblFeedback.Text = "View successfully saved.";
lblFeedback.ForeColor = System.Drawing.Color.Green;
}
else
{
lblFeedback.Text = "Unable to save View.";
lblFeedback.ForeColor = System.Drawing.Color.Red;
}
}
catch (Exception exc)
{
Core.AppManager.NotifyAdmin("Unable to save Task Calnedar View.", exc);
lblFeedback.Text = "Unable to save View. xx has been notified and will fix this asap.";
lblFeedback.ForeColor = System.Drawing.Color.Red;
}
}
protected void TasksRadGrid_NeedDataSource(object source, Telerik.Web.UI.GridNeedDataSourceEventArgs e)
{
if (Request.QueryString["taskid"] != null)
{
int id = int.Parse(Request.QueryString["taskid"].ToString());
var data = from q in Master.DbContext.TaskContacts
where q.Task.IsDeleted == false && q.TaskFk == id
&& (rcbTaskFilter.SelectedValue == "2" || q.Task.IsComplete == (rcbTaskFilter.SelectedValue == "1" ? true : false))
orderby q.Task.DueDate descending
select q.Task;
TasksRadGrid.DataSource = data;
}
else
{
//var data = (from q in Master.DbContext.Tasks.Include("UserAccount").Include("Contact")
// where (from u in Master.DbContext.UserAccounts where u.LFCustomerFk == Master.LFCustomerFk select u.Id).Contains(q.UserAccountFk)
// && (rcbTaskFilter.SelectedValue == "2" || q.IsComplete == (rcbTaskFilter.SelectedValue == "1" ? true : false))
// select q);
//TasksRadGrid.DataSource = data;
// Don't need to write too much code. [Ankit | 08 Feb, 2012].
/*
int[] ids = (from u in Master.DbContext.UserAccounts where u.LFCustomerFk == Master.LFCustomerFk select u.Id).ToArray();
var Fdata = (from q in Master.DbContext.Tasks.Include("UserAccount").Include("Contact").Include("Job")
where (rcbTaskFilter.SelectedValue == "2" || q.IsComplete == (rcbTaskFilter.SelectedValue == "1" ? true : false) && ids.Contains((int)q.UserAccountFk))
select q).ToList();
*/
var data = (from q in Master.DbContext.TaskContacts
where q.Task.IsDeleted == false && (q.Contact.LFCustomerFk == Master.LFCustomerFk
&& ((rcbTaskFilter.SelectedValue == "2" || q.Task.IsComplete == (rcbTaskFilter.SelectedValue == "1" ? true : false))))
orderby q.Task.DueDate descending
select q.Task).ToList();
data = data.Where(param => param != null).OrderByDescending(q => q.DueDate).ToList();
TasksRadGrid.DataSource = data;
}
}
private void AddPageView(string pageViewID)
{
try
{
if (Session["PageView"].ToString() == "PageView1")
{
CalendarPageView.Selected = true;
}
else
{
ListPageView.Selected = true;
}
}
catch (Exception exc)
{
Core.AppManager.NotifyAdmin("Unable to AddPageView.", exc);
}
}
void cb_CheckedChanged(object sender, System.EventArgs e)
{
RadWindowManager1.RadAlert("checked changed", 200, 200, "", "");
}
/*
protected void rcbUserFilter_SelectedIndexChanged(object sender, RadComboBoxSelectedIndexChangedEventArgs e)
{
if (rcbUserFilter.SelectedValue == "All")
{
int lfCust = Convert.ToInt32(Session["LFCUSTOMERID"]);
var rsTaskContacts = from q in context.TaskContacts
where q.Task.IsDeleted == false
&& q.Contact.LFCustomerFk == lfCust
select q;
listDate.Clear();
listTask.Clear();
foreach (var tc in rsTaskContacts)
{
DateTime day = Convert.ToDateTime(tc.Task.DueDate).Date;
if (listDate.ContainsKey(day))
{
listDate[day] = listDate[day] + Convert.ToDateTime(tc.Task.DueDate).ToString("hh:mm tt") + ", " + tc.Task.Title + "<br/>";
}
else
{
listDate.Add(day, Convert.ToDateTime(tc.Task.DueDate).ToString("hh:mm tt") + ", " + tc.Task.Title + "<br/>");
}
}
}
else
{
int selUser = Convert.ToInt32(rcbUserFilter.SelectedValue);
int lfCust = Convert.ToInt32(Session["LFCUSTOMERID"]);
var rsTaskContacts = from q in context.TaskContacts
where q.Task.IsDeleted == false
&& q.Contact.LFCustomerFk == lfCust && q.ContactFk == (
from d in context.UserAccounts
where d.Id == selUser
select d.ContactFk
).FirstOrDefault()
select q;
listDate.Clear();
listTask.Clear();
foreach (var tc in rsTaskContacts)
{
DateTime day = Convert.ToDateTime(tc.Task.DueDate).Date;
if (listDate.ContainsKey(day))
{
listDate[day] = listDate[day] + Convert.ToDateTime(tc.Task.DueDate).ToString("hh:mm tt") + ", " + tc.Task.Title + "<br/>";
}
else
{
listDate.Add(day, Convert.ToDateTime(tc.Task.DueDate).ToString("hh:mm tt") + ", " + tc.Task.Title + "<br/>");
}
}
}
}
*/
protected void TasksRadGrid_ItemDataBound(object sender, GridItemEventArgs e)
{
if (e.Item is GridDataItem)
{
GridDataItem item = e.Item as GridDataItem;
bool IsComplete = (bool)DataBinder.Eval(item.DataItem, "IsComplete");
if (IsComplete)
item["Title"].Style.Add("text-decoration", "line-through");
}
}
protected void TasksRadGrid_ItemCreated(object sender, Telerik.Web.UI.GridItemEventArgs e)
{
/*if (e.Item is GridDataItem )
{
GridDataItem item = e.Item as GridDataItem;
CheckBox cb = (CheckBox)item.FindControl("chkIsComplete");
cb.AutoPostBack = true;
cb.CheckedChanged += new System.EventHandler(cb_CheckedChanged);
}*/
if (e.Item is GridCommandItem)
{
// ShowOrHide Filter Row
GridCommandItem commandItem = e.Item as GridCommandItem;
RadButton button = commandItem.FindControl("btnFilter") as RadButton;
button.SelectedToggleStateIndex = (xx.Core.AppManager.ReadCookie("ShowGridFilter") == "1" ? 1 : 0);
}
}
protected void TasksRadGrid_ItemCommand(object source, GridCommandEventArgs e)
{
if (e.CommandName == "CompleteCommand")
{
GridDataItem dataItem = (GridDataItem)e.Item;
int id = int.Parse(dataItem["Id"].Text.ToString());
Boolean IsComplete = Convert.ToBoolean(e.CommandArgument.ToString());
try
{
var ob = (from q in context.Tasks
where q.Id == id
select q).FirstOrDefault();
ob.IsComplete = !IsComplete;
context.Tasks.ApplyCurrentValues(ob);
context.SaveChanges();
TasksRadGrid.Rebind();
}
catch (Exception ex)
{
throw ex;
}
}
}
protected void rcbTaskFilter_SelectedIndexChanged(object sender, RadComboBoxSelectedIndexChangedEventArgs e)
{
TasksRadGrid.Rebind();
}
protected void TaskRadScheduler_AppointmentDataBound(object sender, SchedulerEventArgs e)
{
string userId = Convert.ToString(e.Appointment.Attributes["UserId"]);
RadComboBoxItem item = rcbUser.Items.FindItemByValue(userId);
if (item != null)
{
e.Appointment.CssClass = "CustomAptContent";
if (Convert.ToBoolean(e.Appointment.Attributes["IsComplete"]))
{
e.Appointment.Attributes.Add("background-color", Color.LightGray.ToString());
}
else
{
e.Appointment.BackColor = item.BackColor;
}
}
}
protected void TasksRadGrid_InsertCommand(object sender, GridCommandEventArgs e)
{
SaveTask(e);
}
protected void TasksRadGrid_UpdateCommand(object sender, GridCommandEventArgs e)
{
SaveTask(e);
}
protected void TasksRadGrid_DeleteCommand(object sender, GridCommandEventArgs e)
{
var editableItem = ((GridEditableItem)e.Item);
int iId = (int)editableItem.GetDataKeyValue("Id");
try
{
Core.AppManager.DeleteTask(iId);
lblFeedback.Text = "Task has been successfully deleted.";
lblFeedback.ForeColor = System.Drawing.Color.Green;
//RadAjaxManager1.Alert0("Task was deleted with success!");
}
catch (Exception exc)
{
Core.AppManager.NotifyAdmin("Unable to delete task.", exc);
RadWindowManager1.RadAlert("Unable to delete task. xx has been notified and will fix this asap.", 350, 200, "Task", "");
lblFeedback.Text = "Unable to delete task. xx has been notified and will fix this asap.";
lblFeedback.ForeColor = System.Drawing.Color.Red; ;
}
}
private void SaveTask(GridCommandEventArgs e)
{
var editableItem = ((GridEditableItem)e.Item);
UserControl editformControl = (UserControl)e.Item.FindControl(GridEditFormItem.EditFormUserControlID);
HiddenField hdId = editformControl.FindControl("hdId") as HiddenField;
Task ucTask = hdId.Parent as Task;
Data.Task task = ucTask.DataObject;
try
{
Core.AppManager.SaveTask(task, Master.LoggedInUserAccountFk, Master.LFCustomerFk);
Core.AppManager.SaveTaskContacts(task.Id, ucTask.ContactIds, Master.LoggedInUserAccountFk);
if (e.CommandName == "PerformInsert")
lblFeedback.Text = "Task has been successfully added.";
else
lblFeedback.Text = "Task has been successfully saved.";
lblFeedback.ForeColor = System.Drawing.Color.Green;
//RadAjaxManager1.Alert0("Task was saved with success!");
}
catch (Exception exc)
{
Core.AppManager.NotifyAdmin("Unable to add task.", exc);
RadWindowManager1.RadAlert("Unable to add task. xx has been notified and will fix this asap.", 350, 200, "Task", "");
lblFeedback.Text = "Unable to add task. xx has been notified and will fix this asap.";
lblFeedback.ForeColor = System.Drawing.Color.Red;
}
}
protected void btnScheduler_Click(object sender, EventArgs e)
{
Session["PageView"] = "PageView1";
ScriptManager.RegisterStartupScript(this, typeof(Page), "Panel", "callNow();", true);
AddPageView("0");
}
protected void btnCalendar_Click(object sender, EventArgs e)
{
Session["PageView"] = "PageView2";
ScriptManager.RegisterStartupScript(this, typeof(Page), "Panel", "callNow();", true);
AddPageView("0");
}
public void bindresentactivities()
{
var activities = (from q in context.RecentActivities
where q.UserAccountFk == Master.LoggedInUserAccountFk
orderby q.DateCreated descending
select q).Take(5);
Repeater repRecentActivities = (Repeater)Page.Master.FindControl("repRecentActivities");
repRecentActivities.DataSource = activities;
repRecentActivities.DataBind();
}
// Allows us to rebind the recent activity list from a radwindow.
protected void TaskRadScheduler_NavigationComplete(object sender, SchedulerNavigationCompleteEventArgs e)
{
if (e.Command == SchedulerNavigationCommand.SwitchToMonthView)
{
TaskRadScheduler.AppointmentTemplate = new AppTemplate();
}
}
protected void FillSchedulerControls()
{
FillSchedulerContacts();
UpdateTimeFrameList();
FillSchedulerJobs();
FillSchedulerJobStatus();
FillSchedulerViews();
GetTasks();
}
protected void FillSchedulerContacts()
{
_authManager = new Core.AuthManager();
var contacts = from q in context.Contacts
where q.IsUser == true || q.ContactType.TypeName == "Sub Contractor"
&& q.LFCustomerFk == _authManager.CustomerFk
select new
{
q.Id,
Value = q.FirstName + " " + q.LastName
};
rcbUser.DataSource = contacts;
rcbUser.DataBind();
}
protected void FillSchedulerJobs()
{
var job = from q in context.Jobs
select new
{
q.Id,
Value = q.Contact.FirstName + " " + q.Contact.LastName
};
List<object> lJob = new List<object>();
foreach (var j in job)
{
lJob.Add(new { j.Id, Value = string.Format("{0} #{1}", j.Value, j.Id) });
}
rcbJob.DataSource = lJob;
rcbJob.DataBind();
}
protected void FillSchedulerJobStatus()
{
var jStatus = from q in context.JobStatus
select new
{
q.Id,
Value = q.JobStatusName
};
rcbJobStatus.DataSource = jStatus;
rcbJobStatus.DataBind();
}
protected void FillSchedulerViews()
{
var view = from q in context.TaskCalendarSavedViews
where q.UserAccountFk == _authManager.UserFk
select new
{
q.Id,
Value = q.ViewName
};
rcbViews.DataSource = view;
rcbViews.DataBind();
rcbSaveView.DataSource = view;
rcbSaveView.DataBind();
}
protected void UpdateTimeFrameList()
{
rcbTimeFrame.Items.Add(new RadComboBoxItem("Today", DateTime.Now.ToString("dd/MMM/yyyy") + "-" + DateTime.Now.ToString("dd/MMM/yyyy")));
rcbTimeFrame.Items.Add(new RadComboBoxItem("This Week", Core.AppManager.GetFirstDateOfWeek(DateTime.Now).ToString("dd/MMM/yyyy") + "-" + Core.AppManager.GetLastDateOfWeek(DateTime.Now).ToString("dd/MMM/yyyy")));
rcbTimeFrame.Items.Add(new RadComboBoxItem("This Month", Core.AppManager.GetFirstDateOfMonth(DateTime.Now).ToString("dd/MMM/yyyy") + "-" + Core.AppManager.GetLastDateOfMonth(DateTime.Now).ToString("dd/MMM/yyyy")));
rcbTimeFrame.Items.Add(new RadComboBoxItem("Yesterday", DateTime.Now.AddDays(-1).ToString("dd/MMM/yyyy") + "-" + DateTime.Now.AddDays(-1).ToString("dd/MMM/yyyy")));
rcbTimeFrame.Items.Add(new RadComboBoxItem("Last Week", Core.AppManager.GetFirstDateOfWeek(DateTime.Now.AddDays(-7)).ToString("dd/MMM/yyyy") + "-" + Core.AppManager.GetLastDateOfWeek(DateTime.Now.AddDays(-7)).ToString("dd/MMM/yyyy")));
rcbTimeFrame.Items.Add(new RadComboBoxItem("Last Month", Core.AppManager.GetFirstDateOfMonth(DateTime.Now.AddMonths(-1)).ToString("dd/MMM/yyyy") + "-" + Core.AppManager.GetLastDateOfMonth(DateTime.Now.AddMonths(-1)).ToString("dd/MMM/yyyy")));
rcbTimeFrame.Items.Add(new RadComboBoxItem("Tomorrow", DateTime.Now.AddDays(1).ToString("dd/MMM/yyyy") + "-" + DateTime.Now.AddDays(1).ToString("dd/MMM/yyyy")));
rcbTimeFrame.Items.Add(new RadComboBoxItem("Next Week", Core.AppManager.GetFirstDateOfWeek(DateTime.Now.AddDays(7)).ToString("dd/MMM/yyyy") + "-" + Core.AppManager.GetLastDateOfWeek(DateTime.Now.AddDays(7)).ToString("dd/MMM/yyyy")));
rcbTimeFrame.Items.Add(new RadComboBoxItem("Next Month", Core.AppManager.GetFirstDateOfMonth(DateTime.Now.AddMonths(1)).ToString("dd/MMM/yyyy") + "-" + Core.AppManager.GetLastDateOfMonth(DateTime.Now.AddMonths(1)).ToString("dd/MMM/yyyy")));
}
protected void rcbViews_SelectedIndexChanged(object sender, RadComboBoxSelectedIndexChangedEventArgs e)
{
if (rcbViews.SelectedValue != null && rcbViews.SelectedValue != "")
{
LoadTaskByView(Convert.ToInt32(rcbViews.SelectedValue));
}
}
protected void LoadTaskByView(int viewId)
{
var view = context.TaskCalendarSavedViews.Where(d => d.Id == viewId).FirstOrDefault();
if (view != null)
{
// Set User checked item(s)
List<string> users = view.UserSettings.Split(',').ToList();
rcbUser.ClearCheckedItems();
foreach (var user in users)
{
var item = rcbUser.Items.FindItemByValue(user);
if (item != null)
rcbUser.CheckedItems.Add(item);
}
// Set TimeFrame selected index
rcbTimeFrame.SelectedIndex = Convert.ToInt32(view.TimeframeSettings);
// Set Job checked item(s)
List<string> jobs = view.JobSettings.Split(',').ToList();
rcbJob.ClearCheckedItems();
foreach (var job in jobs)
{
var item = rcbJob.Items.FindItemByValue(job);
if (item != null)
rcbJob.CheckedItems.Add(item);
}
// Set JobStatus checked item(s)
List<string> jobStatuses = view.JobStatusSettings.Split(',').ToList();
rcbJobStatus.ClearCheckedItems();
foreach (var jobStatus in users)
{
var item = rcbJobStatus.Items.FindItemByValue(jobStatus);
if (item != null)
rcbJobStatus.CheckedItems.Add(item);
}
GetTasks();
}
}
protected void btnSave_Click(object sender, EventArgs e)
{
SaveTaskCalendarView();
string script = "<script>CloseTaskViewDialog();</" + "script>";
if (ScriptManager.GetCurrent(base.Page).IsInAsyncPostBack)
ScriptManager.RegisterStartupScript(this, this.GetType(), "CloseTaskViewDialog", script.ToString(), false);
else
this.Page.ClientScript.RegisterStartupScript(this.GetType(), "CloseTaskViewDialog", script);
}
[WebMethod]
public static object GetTooltipTaskDetails(int taskContactId)
{
try
{
Data.xxModelContainer _context = new Data.xxModelContainer();
var data = (from q in _context.TaskContacts
where q.Id == taskContactId
select q).AsEnumerable();
var task = from q in data
select new
{
q.Id,
TaskId = q.TaskFk,
q.Task.Title,
q.Task.Description,
aName = (String.IsNullOrEmpty(q.Contact.FirstName) ? "" : q.Contact.FirstName + " ")
+ (String.IsNullOrEmpty(q.Contact.LastName) ? "" : q.Contact.LastName),
sDate = String.Format("{0:MM/dd/yyyy}", q.Task.DateCreated),
dDate = String.Format("{0:MM/dd/yyyy}", q.Task.DueDate),
rDate = String.Format("{0:MM/dd/yyyy}", q.Task.ReminderDate),
pName = ((q.Task.Job != null) ?
(String.IsNullOrEmpty(q.Task.Job.Contact.FirstName) ? "" : q.Task.Job.Contact.FirstName + " ")
+ (String.IsNullOrEmpty(q.Task.Job.Contact.LastName) ? "" : q.Task.Job.Contact.LastName)
: ""),
pAddress = ((q.Task.Job != null) ?
(String.IsNullOrEmpty(q.Contact.AddressLine1) ? "" : q.Contact.AddressLine1 + " ")
+ (String.IsNullOrEmpty(q.Contact.AddressLine2) ? "" : q.Contact.AddressLine2 + " ")
+ (String.IsNullOrEmpty(q.Contact.City) ? "" : q.Contact.City + " ")
+ (String.IsNullOrEmpty(q.Contact.State) ? "" : q.Contact.State + " ")
+ (String.IsNullOrEmpty(q.Contact.Zip) ? "" : q.Contact.Zip + " ")
: ""),
jId = q.Task.JobFk != null ? Convert.ToString(q.Task.JobFk) : "",
jType = q.Task.Job != null ? q.Task.Job.JobType.TypeName : "",
jStatus = q.Task.Job != null ? q.Task.Job.JobStatu.JobStatusName : ""
};
return task.FirstOrDefault();
}
catch (Exception ex)
{
throw ex;
}
}
[WebMethod]
public static object CompleteTask(int id)
{
object result;
try
{
Core.AppManager.CompleteTask(id);
result = new { color = "green", message = "Task marked completed successfully." };
}
catch
{
result = new { color = "red", message = "There are some error while marking Task." };
}
return result;
}
[WebMethod]
public static object DeleteTask(int id)
{
object result;
try
{
Core.AppManager.DeleteTask(id);
result = new { color = "green", message = "Task has been successfully deleted." };
}
catch
{
result = new { color = "red", message = "There are some error while deleting Task." };
}
return result;
}
}
}
Please help me, I am looking for a solution.
I have one page this is showing various error in several cases one of them is Invalid JSON primitive error while enabling the RadAjaxManager and other is while changing the tab of RadTabStrip second tab shows blank data.
Here is my code of aspx and cs:
<%@ Page Title="" Language="C#" MasterPageFile="~/Main.Master" AutoEventWireup="true"
Trace="true" CodeBehind="TaskList.aspx.cs" Inherits="xx.Web.TaskList"
MaintainScrollPositionOnPostback="true" %>
<%@ MasterType VirtualPath="~/Main.Master" %>
<asp:Content ID="Content1" ContentPlaceHolderID="head" runat="server">
<link href="../css/Tooltip.css" rel="stylesheet" type="text/css" />
<%--<script src="Scripts/jquery-1.5.1.min.js" type="text/javascript"></script>
<script src="Scripts/jquery.jgrowl_minimized.js" type="text/javascript"></script>--%>
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" runat="server">
<div class="right_top">
<table border="0" cellpadding="0" cellspacing="0" style="float: left; padding: 10px 0 0 10px;
width: 100%;">
<tr>
<td>
<asp:Label ID="lblFeedback" Text="" ForeColor="Green" Font-Bold="true" runat="server" />
<span id="lblAjaxFeedback"></span>
</td>
</tr>
<tr>
<td>
<telerik:RadTabStrip ID="TaskViewRadTabStrip" SelectedIndex="0" runat="server" Skin="Windows7"
MultiPageID="TaskMultiPage" AutoPostBack="true">
<Tabs>
<telerik:RadTab Text="Calendar View">
</telerik:RadTab>
<telerik:RadTab Text="List View">
</telerik:RadTab>
</Tabs>
</telerik:RadTabStrip>
</td>
</tr>
</table>
<div class="clear">
</div>
</div>
<div class="right_middle">
<div class="right_middle_inner">
<telerik:RadMultiPage ID="TaskMultiPage" runat="server" SelectedIndex="0">
<telerik:RadPageView ID="CalendarPageView" runat="server">
<%--<telerik:RadButton ID="btnScheduler" ButtonType="LinkButton" Text="List View" runat="server"
OnClick="btnScheduler_Click" Font-Bold="True" Font-Underline="True">
</telerik:RadButton>--%>
<table>
<tr>
<td style="width: 170px;">
<telerik:RadComboBox ID="rcbUser" runat="server" DataTextField="Value" DataValueField="Id"
CheckBoxes="true" EnableCheckAllItemsCheckBox="true" EmptyMessage="Choose User(s)"
Width="150px" OnDataBound="rcbUser_DataBound" AutoPostBack="true" OnSelectedIndexChanged="Filter_SelectedIndexChanged">
</telerik:RadComboBox>
</td>
<td style="width: 225px;">
<telerik:RadComboBox ID="rcbTimeFrame" runat="server" Width="100px" AutoPostBack="true"
OnSelectedIndexChanged="Filter_SelectedIndexChanged">
</telerik:RadComboBox>
<asp:CheckBox ID="chkWeekend" Text="Hide Weekend" runat="server" AutoPostBack="true"
Style="padding: 3px 0;" />
</td>
<td style="width: 240px;">
<telerik:RadComboBox ID="rcbJob" runat="server" DataTextField="Value" EmptyMessage="Choose Job(s)"
DataValueField="Id" CheckBoxes="true" EnableCheckAllItemsCheckBox="true" Width="220px"
AutoPostBack="true" OnSelectedIndexChanged="Filter_SelectedIndexChanged">
</telerik:RadComboBox>
</td>
<td>
<telerik:RadComboBox ID="rcbJobStatus" runat="server" DataTextField="Value" EmptyMessage="Choose Status(s)"
DataValueField="Id" CheckBoxes="true" EnableCheckAllItemsCheckBox="true" Width="110px"
AutoPostBack="true" OnSelectedIndexChanged="Filter_SelectedIndexChanged">
</telerik:RadComboBox>
</td>
</tr>
</table>
<div class="tasks_main">
<div class="tasks_bg">
<div class="task_title">
Calendar
</div>
<div class="task_right" style="margin: 3px 4px 0 0; width: auto;">
<div class="newtask">
<telerik:RadButton ID="btnCAdd" ButtonType="LinkButton" Text="Add New Task" OnClientClicked="openEditTaskWin"
AutoPostBack="false" runat="server">
</telerik:RadButton>
</div>
</div>
<div class="clear">
</div>
</div>
<div class="task_bot_inner">
<telerik:RadScheduler ID="TaskRadScheduler" runat="server" Height="500px" CustomAttributeNames="JobId,
PName, Title, UserId, UName, IsComplete" DataKeyField="TaskContactId" DataSubjectField="Title"
DataStartField="StartDate" DataEndField="DueDate" OnAppointmentCreated="TaskRadScheduler_AppointmentCreated"
RowHeight="55px" OnDataBound="TaskRadScheduler_DataBound" Skin="Windows7" SelectedView="DayView"
AllowInsert="false" AllowDelete="false" AllowEdit="false" OnClientAppointmentClick="OnClientAppointmentClick"
OnClientAppointmentDoubleClick="OnClientAppointmentDoubleClick" OnNavigationComplete="TaskRadScheduler_NavigationComplete"
OnAppointmentDataBound="TaskRadScheduler_AppointmentDataBound" ShowNavigationPane="false"
Width="100%" UserSelectable="false" ShowHoursColumn="false" ShowAllDayRow="true"
ShowFooter="false">
<MonthView AdaptiveRowHeight="true" VisibleAppointmentsPerDay="50" />
<AppointmentTemplate>
<div style="height: 50px;">
<div style="float: left;">
#<asp:Literal ID="taskJobId" runat="server" Text='<%# Bind("JobId") %>'></asp:Literal>
-
</div>
<div style="float: left;">
<asp:Literal ID="taskPropOwner" runat="server" Text='<%# Eval("PName") %>'></asp:Literal>
</div>
<div style="clear: both; height: 5px;">
</div>
<asp:Literal ID="taskTitle" runat="server" Text='<%# Eval("Title") %>'></asp:Literal>
<div style="border-top: 1px solid #000; border-collapse: collapse;">
<div>
<asp:Literal ID="taskContact" runat="server" Text='<%# Eval("UName") %>'></asp:Literal>
</div>
</div>
</div>
</AppointmentTemplate>
<TimeSlotContextMenuSettings EnableDefault="false" />
<AppointmentContextMenuSettings EnableDefault="false" />
</telerik:RadScheduler>
</div>
<div style="padding: 5px 0;" align="right">
<telerik:RadComboBox ID="rcbViews" runat="server" DataTextField="Value" EmptyMessage="Choose a Saved View"
DataValueField="Id" Width="200px" OnSelectedIndexChanged="rcbViews_SelectedIndexChanged"
MarkFirstMatch="True" AutoPostBack="true">
</telerik:RadComboBox>
<telerik:RadButton ID="btnSaveView" ButtonType="StandardButton" Text="Save View"
runat="server" CssClass="saveButton">
</telerik:RadButton>
</div>
<telerik:RadToolTip ID="rttSchedulerAppointment" runat="server" RelativeTo="Element"
Position="BottomCenter" AutoCloseDelay="0" ShowEvent="FromCode" Width="410px">
<div id="tootipContainer">
<div style="width: 400px;">
<div id="ttHeader">
<div class="tooltipLeftCorner">
<a href="#"><span id="ttTaskTitle">Install Drywall</span></a>
</div>
<div class="tooltipRightCorner">
<span id="ttTaskID">Task #72</span>
</div>
<div class="clear" />
</div>
<div id="ttDetail">
<div class="tooltipDescription">
<span id="ttDescription">The drywall needs to be installed before due date. The drywall
needs to be installed before due date. The drywall needs to be installed before
due date. </span>
</div>
<div class="ttTaskScheduleDetail">
<ul class="ttScheduleList">
<li>
<div>
<span class="ttScheduleListTitle">Assigned To: </span><span id="ttAName" class="Right"></span>
</div>
</li>
<li>
<div>
<span class="ttScheduleListTitle">Start Date: </span><span id="ttSDate" class="Right"></span>
</div>
</li>
<li>
<div>
<span class="ttScheduleListTitle">Due Date: </span><span id="ttDDate" class="Right"></span>
</div>
</li>
<li>
<div>
<span class="ttScheduleListTitle">Reminder: </span><span id="ttRDate" class="Right"></span>
</div>
</li>
</ul>
</div>
<div class="ttTaskJobDetail" id="ttTaskJobDetail">
<div class="ttTaskJobLeftPan">
<div>
<a href="#"><span id="ttPropOwner">John Dongerfield</span></a>
</div>
<div class="Clear">
</div>
<div>
<span id="ttJobAddress">fdsfd fdf ds</span>
</div>
</div>
<div class="ttTaskJobRightPan">
<ul class="ttScheduleList">
<li><span id="ttJobId">#71</span></li>
<li><span id="ttJobType">Lead</span></li>
<li><span id="ttJobStatus">Active</span></li>
</ul>
</div>
<div class="clear">
</div>
</div>
</div>
<div class="ttTools" align="right" id="ttTools">
</div>
</div>
</div>
</telerik:RadToolTip>
</div>
</telerik:RadPageView>
<telerik:RadPageView ID="ListPageView" runat="server">
<div class="rcbTaskFilter" style="float: left; padding: 5px 5px 0 0;">
<%--<telerik:RadButton ID="btnCalendar" ButtonType="LinkButton" Text="Calendar View"
runat="server" OnClick="btnCalendar_Click" Font-Bold="True" Font-Underline="True">
</telerik:RadButton>--%>
</div>
<div class="rcbTaskFilter" style="float: right;">
<telerik:RadComboBox ID="rcbTaskFilter" runat="server" AutoPostBack="true" AllowCustomText="false"
IsCaseSensitive="false" MarkFirstMatch="true" OnSelectedIndexChanged="rcbTaskFilter_SelectedIndexChanged">
<Items>
<telerik:RadComboBoxItem Text="Incomplete" Value="0" Selected="true" />
<telerik:RadComboBoxItem Text="Complete" Value="1" />
<telerik:RadComboBoxItem Text="Both" Value="2" />
</Items>
</telerik:RadComboBox>
</div>
<div style="float: right; padding: 5px 5px 0 5px;">
Filter
</div>
<div class="clear">
</div>
<telerik:RadGrid ID="TasksRadGrid" runat="server" OnNeedDataSource="TasksRadGrid_NeedDataSource"
GridLines="None" AllowPaging="True" AllowSorting="True" CellSpacing="0" AllowAutomaticUpdates="false"
AllowAutomaticInserts="false" AllowAutomaticDeletes="false" AllowFilteringByColumn="true"
Skin="Windows7" AutoGenerateColumns="False" OnItemCreated="TasksRadGrid_ItemCreated"
OnItemCommand="TasksRadGrid_ItemCommand" OnItemDataBound="TasksRadGrid_ItemDataBound"
OnDeleteCommand="TasksRadGrid_DeleteCommand" OnInsertCommand="TasksRadGrid_InsertCommand"
OnUpdateCommand="TasksRadGrid_UpdateCommand" ShowHeader="true">
<PagerStyle Mode="NextPrevAndNumeric" AlwaysVisible="true" />
<MasterTableView AutoGenerateColumns="False" EditMode="PopUp" DataKeyNames="Id" AllowAutomaticDeletes="true"
CommandItemDisplay="Top">
<CommandItemSettings ExportToPdfText="Export to PDF"></CommandItemSettings>
<CommandItemTemplate>
<table width="100%">
<tr>
<td width="30%">
<h2>
Tasks</h2>
</td>
<td width="40%">
</td>
<td width="15%" align="right">
<telerik:RadButton ID="btnFilter" ButtonType="ToggleButton" AutoPostBack="false"
ToggleType="CustomToggle" OnClientToggleStateChanged="toggleFilter" runat="server">
<Icon PrimaryIconUrl="~/images/Filter.gif" />
<ToggleStates>
<telerik:RadButtonToggleState Selected="true" />
<telerik:RadButtonToggleState />
</ToggleStates>
</telerik:RadButton>
</td>
<td width="15%" align="left">
<div class="newtask">
<telerik:RadButton ID="btnAdd" ButtonType="LinkButton" Text="Add New Task" OnClientClicked="openEditTaskWin"
AutoPostBack="false" runat="server">
</telerik:RadButton>
</div>
</td>
</tr>
</table>
</CommandItemTemplate>
<RowIndicatorColumn FilterControlAltText="Filter RowIndicator column">
<HeaderStyle Width="20px"></HeaderStyle>
</RowIndicatorColumn>
<ExpandCollapseColumn FilterControlAltText="Filter ExpandColumn column">
<HeaderStyle Width="20px"></HeaderStyle>
</ExpandCollapseColumn>
<Columns>
<telerik:GridBoundColumn DataField="Id" UniqueName="Id" DataType="System.Int32" ReadOnly="True"
Visible="false" />
<telerik:GridTemplateColumn DataField="IsComplete" HeaderText="Complete" UniqueName="IsComplete"
DataType="System.Boolean" Visible="true" DefaultInsertValue="false" HeaderStyle-Width="30">
<ItemTemplate>
<telerik:RadButton ID="btnToggle2" runat="server" Checked='<%# Eval("IsComplete") %>'
CommandName="CompleteCommand" CommandArgument='<%# Eval("IsComplete") %>' ToggleType="CheckBox"
ButtonType="ToggleButton" AutoPostBack="true">
</telerik:RadButton>
</ItemTemplate>
</telerik:GridTemplateColumn>
<telerik:GridBoundColumn DataField="LFCustomerFk" UniqueName="LFCustomerFk" DataType="System.Int32"
Visible="false" Display="false" />
<telerik:GridBoundColumn DataField="JobFk" UniqueName="JobFk" DataType="System.Int32"
Visible="false" Display="false" />
<telerik:GridTemplateColumn DataField="Title" HeaderText="Title" SortExpression="Title"
UniqueName="Title" DataType="System.String">
<ItemTemplate>
<asp:HyperLink ID="btnTaskTitle" runat="server" NavigateUrl="#" Text='<%# Eval("Title") %>'
onclick='<%# Eval("Id","openEditTaskWin({0})") %>' />
<%# (Eval("JobFk") != null) ? " <a class=\"sublink\" href='/jobs/default.aspx?jobid=" + Eval("Job.Id") + "'>Job #" + Eval("Job.Id") + " - " + Eval("Job.Contact.FirstName") + " " + Eval("Job.Contact.LastName") + "</a>" : ""%>
</ItemTemplate>
</telerik:GridTemplateColumn>
<telerik:GridBoundColumn DataField="Account.Name" SortExpression="Account.Name" HeaderText="Assigned To"
Display="false" />
<telerik:GridBoundColumn DataField="DueDate" DataFormatString="{0:MM/dd/yyyy}" HeaderText="Due"
SortExpression="DueDate" UniqueName="DueDate" DataType="System.DateTime" MaxLength="100"
HeaderStyle-Width="60" />
<telerik:GridBoundColumn DataField="Description" HeaderText="Description" SortExpression="Description"
UniqueName="Description" DataType="System.String" MaxLength="500" />
<telerik:GridBoundColumn DataField="ReminderType" UniqueName="ReminderType" DataType="System.Int16"
Display="false" />
<telerik:GridBoundColumn DataField="ReminderDate" DataFormatString="{0:MM/dd/yyyy}"
UniqueName="ReminderDate" DataType="System.DateTime" Display="false" />
<telerik:GridBoundColumn DataField="ReminderSent" UniqueName="ReminderSent" DataType="System.Boolean"
Display="false" />
<telerik:GridTemplateColumn AllowFiltering="false" HeaderStyle-Width="110px" HeaderText="Manage">
<ItemTemplate>
<asp:HyperLink ID="btnEditTask" runat="server" NavigateUrl="#" Text="Edit" onclick='<%# Eval("Id","openEditTaskWin({0})") %>' /> |
<asp:LinkButton ID="btnDeleteTask" runat="server" ButtonType="LinkButton" Text="Delete"
CommandName="Delete" UniqueName="DeleteColumn" OnClientClick="return confirm('Are you sure you want to delete this task?');" />
</ItemTemplate>
</telerik:GridTemplateColumn>
</Columns>
</MasterTableView>
<ClientSettings>
<ClientEvents OnGridCreated="OnGridCreated" />
</ClientSettings>
<FilterMenu EnableImageSprites="False">
</FilterMenu>
<HeaderContextMenu CssClass="GridContextMenu GridContextMenu_Default">
</HeaderContextMenu>
</telerik:RadGrid>
</telerik:RadPageView>
</telerik:RadMultiPage>
</div>
<telerik:RadCodeBlock ID="s" runat="server">
<script type="text/javascript" language="javascript">
function callNow() {
$('.radTemplateDay_Default').mouseover(function () {
//showToolTip(this);
});
}
function OnClientAppointmentClick(sender, args) {
var apt = args.get_appointment();
showTooltip(apt);
}
function AjaxError(result) {
var err = eval("(" + result.responseText + ")");
if (err.Message == "Thread was being aborted.") {
$.jGrowl("Session expired. Redirecting to login page.", { header: 'Error', sticky: true });
window.setTimeout(function () {
var curpage = document.location.href.replace(document.location.protocol + "//" + document.location.host, "");
top.location = document.location.protocol + "//" + document.location.host + "/login.aspx?refer=" + curpage;
}, 2000);
}
else {
$.jGrowl(err.Message, { header: 'Error', sticky: true });
}
}
function AjaxFailure(result) {
var err = eval("(" + result.responseText + ")");
$.jGrowl("Failure: " + result.status + " - " + result.statusText, { header: 'Error', sticky: true });
}
function showTooltip(apt) {
$.ajax({
type: "POST",
url: "/TaskList.aspx/GetTooltipTaskDetails",
data: "{'taskContactId': " + apt.get_id() + "}",
contentType: "application/json; charset=utf-8",
dataType: "json",
error: AjaxError,
failure: AjaxFailure,
beforeSend: function () {
//alert("send");
},
success: function (jsData) {
var data = eval(jsData.d);
if (data) {
$("#ttTaskTitle").text(data.Title);
$("#ttTaskID").text(data.Id);
$("#ttDescription").text(data.Description);
$("#ttAName").text(data.aName);
$("#ttSDate").text(data.sDate);
$("#ttDDate").text(data.dDate);
$("#ttRDate").text(data.eDate);
$("#ttPropOwner").text(data.pName);
$("#ttJobAddress").text(data.pAddress);
$("#ttJobId").text(data.jId);
$("#ttJobType").text(data.jType);
$("#ttJobStatus").text(data.jStatus);
$("#ttTools").html("");
$("#ttTools").append("<a href='#' onclick='openEditTaskWin(" + data.TaskId + ")' >Edit </a>");
$("#ttTools").append(" <a href='#' onclick='completeTaskWithCheck(" + data.TaskId + ")' >Complete</a>");
$("#ttTools").append(" <a href='#' onclick='deleteTaskWithCheck(" + data.TaskId + ")' >Delete</a>");
if (data.pName == "") {
$("#ttTaskJobDetail").css("display", "none");
}
else {
//$("#ttTaskJobDetail").css("background-color", apt.getAttribute("color"));
}
var tooltip = $find('<%=rttSchedulerAppointment.ClientID %>');
tooltip.set_targetControl(apt.get_element());
tooltip.set_text($get("tootipContainer").innerHTML);
//tooltip.set_text("<span>Error occured while retrieving data from server.</span>");
//setTimeout(function () {
tooltip.show();
//}, 20);
}
},
complete: function () {
}
});
}
function hideToolTip() {
var tooltip = $find('<%=rttSchedulerAppointment.ClientID %>');
if (tooltip)
tooltip.hide();
//var scheduler = $find('<%=TaskRadScheduler.ClientID %>');
//scheduler.rebind();
}
function OnClientAppointmentDoubleClick(sender, args) {
return false;
//args.set_cancel(true);
}
function deleteTaskWithCheck(taskId) {
var answer = confirm("Are you sure you want to delete this task?");
if (answer) {
$.ajax({
type: "POST",
url: "/TaskList.aspx/DeleteTask",
data: "{'id': " + taskId + "}",
contentType: "application/json; charset=utf-8",
dataType: "json",
error: AjaxError,
failure: AjaxFailure,
success: function (jsData) {
var data = jsData.d;
hideToolTip();
$("#lblAjaxFeedback").text(data.message);
$("#lblAjaxFeedback").css("color", data.color);
$("#lblAjaxFeedback").fadeOut(2500);
},
beforeSend: function () { },
complete: function () {
}
});
}
return false;
}
function completeTaskWithCheck(taskId) {
var answer = confirm("Are you sure you want to mark this task complete?");
if (answer) {
$.ajax({
type: "POST",
url: "/TaskList.aspx/CompleteTask",
data: "{'id': " + taskId + "}",
contentType: "application/json; charset=utf-8",
dataType: "json",
error: AjaxError,
failure: AjaxFailure,
success: function (jsData) {
var data = jsData.d;
hideToolTip();
$("#lblAjaxFeedback").text(data.message);
$("#lblAjaxFeedback").css("color", data.color);
$("#lblAjaxFeedback").fadeOut(2500);
},
beforeSend: function () { },
complete: function () {
}
});
}
return false;
}
</script>
</telerik:RadCodeBlock>
<telerik:RadCodeBlock ID="DefaultCodeBlock" runat="server">
<script type="text/javascript">
function refreshTaskList() {
// This is to rebind the task list
}
</script>
</telerik:RadCodeBlock>
<telerik:RadWindowManager ID="RadWindowManager1" KeepInScreenBounds="true" ShowContentDuringLoad="false"
VisibleStatusbar="false" ReloadOnShow="true" runat="server" Skin="Windows7" EnableShadow="true"
AutoSize="true" BorderStyle="None" VisibleOnPageLoad="false" Behaviors="Move,Close"
Modal="true">
<Windows>
<telerik:RadWindow ID="EditTasktDialog" runat="server" Title="Add Task" NavigateUrl="/AddTask.aspx" />
<telerik:RadWindow ID="TaskViewDialog" runat="server" Title="Save View">
<ContentTemplate>
<div style="padding: 20px;">
<div style="text-align: center; width: 400px; height: 50px;">
<telerik:RadComboBox ID="rcbSaveView" runat="server" DataTextField="Value" DataValueField="Id"
Width="300px" MarkFirstMatch="true" AllowCustomText="true" AppendDataBoundItems="true"
EmptyMessage="Enter a new view or select an exisitng view to update">
</telerik:RadComboBox>
<asp:RequiredFieldValidator ID="rfView" runat="server" ErrorMessage="View is required"
ControlToValidate="rcbSaveView" ForeColor="Red" Display="Dynamic" ValidationGroup="lf">
</asp:RequiredFieldValidator>
</div>
<div align="center">
<telerik:RadButton ID="btnSave" ButtonType="StandardButton" Text="Save" runat="server"
CssClass="saveButton" OnClick="btnSave_Click" UseSubmitBehavior="false">
</telerik:RadButton>
<telerik:RadButton ID="btnCancel" ButtonType="StandardButton" Text="Close" runat="server"
CausesValidation="false" OnClientClicked="CloseCurrentWindow" CssClass="cancelButton">
</telerik:RadButton>
</div>
</div>
</ContentTemplate>
</telerik:RadWindow>
</Windows>
</telerik:RadWindowManager>
<telerik:RadCodeBlock ID="RadCodeBlock1" runat="server">
<script src="/Scripts/RadGridSupport.js" type="text/javascript"></script>
<script type="text/javascript">
function ShowFilter() {
var masterTable = $find("<%= TasksRadGrid.ClientID %>").get_masterTableView();
masterTable.showFilterItem();
createCookie("ShowGridFilter", 1, 30);
}
function HideFilter() {
var masterTable = $find("<%= TasksRadGrid.ClientID %>").get_masterTableView();
masterTable.hideFilterItem();
createCookie("ShowGridFilter", 0, 30);
}
function openEditTaskWin(id) {
hideToolTip();
if (id != 0) {
var oWnd = radopen("/AddTask.aspx?taskid=" + id, "EditTasktDialog");
}
else {
var oWnd = radopen("/AddTask.aspx", "EditTasktDialog");
}
return false;
}
function CloseCurrentWindow(button, args) {
CloseTaskViewDialog();
button.set_autoPostBack(false);
}
function CloseTaskViewDialog() {
oWnd = $find("<%=TaskViewDialog.ClientID%>");
oWnd.Close();
}
</script>
</telerik:RadCodeBlock>
</div>
<%--<telerik:RadAjaxManager ID="RadAjaxManagerTask" runat="server">
<AjaxSettings>
<telerik:AjaxSetting AjaxControlID="rcbTaskFilter">
<UpdatedControls>
<telerik:AjaxUpdatedControl ControlID="rcbTaskFilter" />
<telerik:AjaxUpdatedControl ControlID="TasksRadGrid" LoadingPanelID="RadAjaxTaskLoading" />
<telerik:AjaxUpdatedControl ControlID="lblFeedback" />
</UpdatedControls>
</telerik:AjaxSetting>
<telerik:AjaxSetting AjaxControlID="TasksRadGrid">
<UpdatedControls>
<telerik:AjaxUpdatedControl ControlID="TasksRadGrid" LoadingPanelID="RadAjaxTaskLoading" />
<telerik:AjaxUpdatedControl ControlID="lblFeedback" />
</UpdatedControls>
</telerik:AjaxSetting>
<telerik:AjaxSetting AjaxControlID="TaskRadScheduler">
<UpdatedControls>
<telerik:AjaxUpdatedControl ControlID="TaskRadScheduler" LoadingPanelID="RadAjaxTaskLoading" />
</UpdatedControls>
</telerik:AjaxSetting>
<telerik:AjaxSetting AjaxControlID="rcbUser">
<UpdatedControls>
<telerik:AjaxUpdatedControl ControlID="rcbJob" />
<telerik:AjaxUpdatedControl ControlID="TaskRadScheduler" LoadingPanelID="RadAjaxTaskLoading" />
</UpdatedControls>
</telerik:AjaxSetting>
<telerik:AjaxSetting AjaxControlID="rcbTimeFrame">
<UpdatedControls>
<telerik:AjaxUpdatedControl ControlID="TaskRadScheduler" LoadingPanelID="RadAjaxTaskLoading" />
</UpdatedControls>
</telerik:AjaxSetting>
<telerik:AjaxSetting AjaxControlID="chkWeekend">
<UpdatedControls>
<telerik:AjaxUpdatedControl ControlID="TaskRadScheduler" LoadingPanelID="RadAjaxTaskLoading" />
</UpdatedControls>
</telerik:AjaxSetting>
<telerik:AjaxSetting AjaxControlID="rcbJob">
<UpdatedControls>
<telerik:AjaxUpdatedControl ControlID="TaskRadScheduler" LoadingPanelID="RadAjaxTaskLoading" />
</UpdatedControls>
</telerik:AjaxSetting>
<telerik:AjaxSetting AjaxControlID="rcbJobStatus">
<UpdatedControls>
<telerik:AjaxUpdatedControl ControlID="TaskRadScheduler" LoadingPanelID="RadAjaxTaskLoading" />
</UpdatedControls>
</telerik:AjaxSetting>
<telerik:AjaxSetting AjaxControlID="rcbViews">
<UpdatedControls>
<telerik:AjaxUpdatedControl ControlID="TaskRadScheduler" LoadingPanelID="RadAjaxTaskLoading" />
</UpdatedControls>
</telerik:AjaxSetting>
<telerik:AjaxSetting AjaxControlID="btnSave">
<UpdatedControls>
<telerik:AjaxUpdatedControl ControlID="TaskRadScheduler" LoadingPanelID="RadAjaxTaskLoading" />
</UpdatedControls>
</telerik:AjaxSetting>
<telerik:AjaxSetting AjaxControlID="TaskViewRadTabStrip">
<UpdatedControls>
<telerik:AjaxUpdatedControl ControlID="TaskMultiPage" LoadingPanelID="RadAjaxTaskLoading" />
</UpdatedControls>
</telerik:AjaxSetting>
</AjaxSettings>
</telerik:RadAjaxManager>--%>
<telerik:RadAjaxLoadingPanel ID="RadAjaxTaskLoading" runat="server" />
</asp:Content>
================================================================================================
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using Telerik.Web.UI;
using System.Web.UI.HtmlControls;
using Telerik.Web.UI.Calendar.View;
using System.Data.SqlClient;
using System.Data;
using System.Web.Services;
using System.Web.Script.Serialization;
using System.Globalization;
using System.Drawing;
namespace xx.Web
{
public partial class TaskList : System.Web.UI.Page
{
Data.xxModelContainer context = new Data.xxModelContainer();
Dictionary<DateTime, string> listDate = new Dictionary<DateTime, string>();
Core.AuthManager _authManager;
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
FillSchedulerControls();
}
Session["JOBID"] = null;
lblFeedback.Text = "";
int lfCust = Convert.ToInt32(Session["LFCUSTOMERID"]);
if (!IsPostBack) TasksRadGrid.MasterTableView.IsFilterItemExpanded = false;
if (Session["ADD_TASK"] != null)
{
if (Session["ADD_TASK"].ToString() == "1")
lblFeedback.Text = "Task has been successfully added.";
else
lblFeedback.Text = "Task has been successfully saved.";
lblFeedback.ForeColor = System.Drawing.Color.Green;
Session.Remove("ADD_TASK");
}
var rsTask = (from q in context.TaskContacts where q.Task.IsDeleted == false && q.ContactFk == lfCust select q.Task);
foreach (var task in rsTask)
{
DateTime day = Convert.ToDateTime(task.DueDate).Date;
if (listDate.ContainsKey(day))
{
listDate[day] = listDate[day] + Convert.ToDateTime(task.DueDate).ToString("hh:mm tt") + ", " + task.Title + "<br/>";
}
else
{
listDate.Add(day, Convert.ToDateTime(task.DueDate).ToString("hh:mm tt") + ", " + task.Title + "<br/>");
}
}
if (Request.QueryString["taskid"] != null)
{
WebTools.Authentication.AuthManager authManager = new WebTools.Authentication.AuthManager();
int loggedin = authManager.GetUserId(Page);
Data.UserAccount ua = Master.DbContext.UserAccounts.Where(q => q.Id == loggedin).FirstOrDefault();
Int32 id = Int32.Parse(Request.QueryString["taskid"].ToString());
if (id > 0)
{
var taskContact = Master.DbContext.TaskContacts.Where(q => q.TaskFk == id && q.Task.IsDeleted == false && q.ContactFk ==
(Master.DbContext.UserAccounts.Where
(d => d.Id == loggedin).FirstOrDefault().ContactFk
)).FirstOrDefault();
if (taskContact != null)
{
Session["nopermission"] = "nopermission";
Response.Redirect("~/Default.aspx");
}
}
}
if (!IsPostBack)
{
int id = -1;
try
{
id = Int32.Parse(Session["LFCUSTOMERID"].ToString());
}
catch
{
id = -1;
}
if (id == -1)
{
Response.Redirect("Default.aspx");
}
/*
var data = (from q in Master.DbContext.UserAccounts where q.LFCustomerFk == id select q);
foreach (var user in data.Distinct())
{
RadComboBoxItem item = new RadComboBoxItem();
item.Text = user.Contact != null ? user.Contact.FirstName : "";
item.Value = user.Id.ToString();
rcbUserFilter.Items.Add(item);
item.DataBind();
}
*/
if (Session["PageView"] != null && Session["ADD_TASK"] != null)
{
AddPageView(Session["PageView"].ToString());
}
}
TaskViewDialog.OpenerElementID = btnSaveView.ClientID;
ScriptManager.RegisterStartupScript(this, typeof(Page), "Panel", "callNow();", true);
}
int randomColorCount = 0;
protected void rcbUser_DataBound(object sender, EventArgs e)
{
foreach (RadComboBoxItem item in rcbUser.Items)
{
item.BackColor = Color.FromName(((xx.Core.RandomColor)(randomColorCount)).ToString());
randomColorCount++;
if (randomColorCount == 90)
randomColorCount = 0;
}
}
protected void Filter_SelectedIndexChanged(object sender, EventArgs e)
{
GetTasks();
}
protected void TaskRadScheduler_DataBound(object sender, EventArgs e)
{
foreach (ResourceType resType in TaskRadScheduler.ResourceTypes)
{
resType.AllowMultipleValues = true;
}
}
protected void TaskRadScheduler_AppointmentCreated(object sender, AppointmentCreatedEventArgs e)
{
if (e.Appointment.RecurrenceState == RecurrenceState.Master || e.Appointment.RecurrenceState == RecurrenceState.Occurrence)
{
Panel recurrenceStateDiv = new Panel();
recurrenceStateDiv.CssClass = "rsAptRecurrence";
e.Container.Controls.AddAt(0, recurrenceStateDiv);
}
if (e.Appointment.RecurrenceState == RecurrenceState.Exception)
{
Panel recurrenceStateDiv = new Panel();
recurrenceStateDiv.CssClass = "rsAptRecurrenceException";
e.Container.Controls.AddAt(0, recurrenceStateDiv);
}
}
private void GetTasks()
{
try
{
_authManager = new Core.AuthManager();
if (Request.QueryString["taskid"] != null)
{
int id = int.Parse(Request.QueryString["taskid"].ToString());
var tasks = from q in Master.DbContext.TaskContacts
where q.Task.IsDeleted == false
&& q.TaskFk == id
orderby q.Task.StartDate descending
select new
{
TaskContactId = q.Id,
JobId = q.Task.JobFk == null ? 0 : q.Task.JobFk,
PName = (String.IsNullOrEmpty(q.Task.Job.Contact.FirstName) ? "" : q.Task.Job.Contact.FirstName + " ")
+ (String.IsNullOrEmpty(q.Task.Job.Contact.LastName) ? "" : q.Task.Job.Contact.LastName),
Title = q.Task.Title,
UserId = q.ContactFk,
UName = (String.IsNullOrEmpty(q.Contact.FirstName) ? "" : q.Contact.FirstName + " ")
+ (String.IsNullOrEmpty(q.Contact.LastName) ? "" : q.Contact.LastName),
StartDate = q.Task.StartDate,
DueDate = q.Task.DueDate,
IsComplete = q.Task.IsComplete
};
TaskRadScheduler.DataSource = tasks;
TaskRadScheduler.DataBind();
}
else
{
List<int?> users = new List<int?>();
foreach (var item in rcbUser.CheckedItems)
{
users.Add(Convert.ToInt32(String.IsNullOrEmpty(item.Value) ? "0" : item.Value));
}
string[] dates = rcbTimeFrame.SelectedValue.Split('-');
DateTime startDate = Convert.ToDateTime(dates[0]);
DateTime dueDate = Convert.ToDateTime(dates[1]);
if (chkWeekend.Checked)
{
TaskRadScheduler.FirstDayOfWeek = DayOfWeek.Monday;
TaskRadScheduler.LastDayOfWeek = DayOfWeek.Friday;
}
else
{
TaskRadScheduler.FirstDayOfWeek = DayOfWeek.Monday;
TaskRadScheduler.LastDayOfWeek = DayOfWeek.Sunday;
}
List<int?> jobs = new List<int?>();
foreach (var item in rcbJob.CheckedItems)
{
jobs.Add(Convert.ToInt32(String.IsNullOrEmpty(item.Value) ? "0" : item.Value));
}
List<int?> jobstatuses = new List<int?>();
foreach (var item in rcbJob.CheckedItems)
{
jobstatuses.Add(Convert.ToInt32(String.IsNullOrEmpty(item.Value) ? "0" : item.Value));
}
var test = from q in Master.DbContext.TaskContacts
where q.Task.IsDeleted == false
&& (q.Task.StartDate < q.Task.DueDate)
//&& (q.Contact.LFCustomerFk == Master.LFCustomerFk)
select q;
var tasks = from q in Master.DbContext.TaskContacts
where q.Task.IsDeleted == false
&& (q.Task.StartDate < q.Task.DueDate)
&& (q.Contact.LFCustomerFk == _authManager.CustomerFk)
//&& users.Contains(q.ContactFk)
//&& (q.Task.Job
//&& q.Task
orderby q.Task.StartDate descending
select new
{
TaskContactId = q.Id,
JobId = q.Task.JobFk == null ? 0 : q.Task.JobFk,
PName = (String.IsNullOrEmpty(q.Task.Job.Contact.FirstName) ? "" : q.Task.Job.Contact.FirstName + " ")
+ (String.IsNullOrEmpty(q.Task.Job.Contact.LastName) ? "" : q.Task.Job.Contact.LastName),
Title = q.Task.Title,
UserId = q.ContactFk,
UName = (String.IsNullOrEmpty(q.Contact.FirstName) ? "" : q.Contact.FirstName + " ")
+ (String.IsNullOrEmpty(q.Contact.LastName) ? "" : q.Contact.LastName),
StartDate = q.Task.StartDate,
DueDate = q.Task.DueDate,
IsComplete = q.Task.IsComplete
};
TaskRadScheduler.DataSource = tasks;
TaskRadScheduler.DataBind();
}
}
catch
{
lblFeedback.ForeColor = Color.Red;
lblFeedback.Text = "Error in loading Task Calendar.";
}
}
protected void SaveTaskCalendarView()
{
try
{
_authManager = new Core.AuthManager();
Data.TaskCalendarSavedView cView = new Data.TaskCalendarSavedView();
cView.UserAccountFk = _authManager.UserFk;
cView.ViewName = rcbSaveView.Text;
cView.UserSettings = String.Join(",", rcbUser.CheckedItems.Select(d => d.Value).ToList().ToArray());
cView.TimeframeSettings = rcbTimeFrame.SelectedIndex.ToString();
cView.JobSettings = String.Join(",", rcbJob.CheckedItems.Select(d => d.Value).ToList().ToArray());
cView.JobStatusSettings = String.Join(",", rcbJobStatus.CheckedItems.Select(d => d.Value).ToList().ToArray());
cView.DateUpdated = DateTime.Now;
int iTaskCalendarView = Core.AppManager.SaveTaskCalendarView(cView);
if (iTaskCalendarView > 0)
{
lblFeedback.Text = "View successfully saved.";
lblFeedback.ForeColor = System.Drawing.Color.Green;
}
else
{
lblFeedback.Text = "Unable to save View.";
lblFeedback.ForeColor = System.Drawing.Color.Red;
}
}
catch (Exception exc)
{
Core.AppManager.NotifyAdmin("Unable to save Task Calnedar View.", exc);
lblFeedback.Text = "Unable to save View. xx has been notified and will fix this asap.";
lblFeedback.ForeColor = System.Drawing.Color.Red;
}
}
protected void TasksRadGrid_NeedDataSource(object source, Telerik.Web.UI.GridNeedDataSourceEventArgs e)
{
if (Request.QueryString["taskid"] != null)
{
int id = int.Parse(Request.QueryString["taskid"].ToString());
var data = from q in Master.DbContext.TaskContacts
where q.Task.IsDeleted == false && q.TaskFk == id
&& (rcbTaskFilter.SelectedValue == "2" || q.Task.IsComplete == (rcbTaskFilter.SelectedValue == "1" ? true : false))
orderby q.Task.DueDate descending
select q.Task;
TasksRadGrid.DataSource = data;
}
else
{
//var data = (from q in Master.DbContext.Tasks.Include("UserAccount").Include("Contact")
// where (from u in Master.DbContext.UserAccounts where u.LFCustomerFk == Master.LFCustomerFk select u.Id).Contains(q.UserAccountFk)
// && (rcbTaskFilter.SelectedValue == "2" || q.IsComplete == (rcbTaskFilter.SelectedValue == "1" ? true : false))
// select q);
//TasksRadGrid.DataSource = data;
// Don't need to write too much code. [Ankit | 08 Feb, 2012].
/*
int[] ids = (from u in Master.DbContext.UserAccounts where u.LFCustomerFk == Master.LFCustomerFk select u.Id).ToArray();
var Fdata = (from q in Master.DbContext.Tasks.Include("UserAccount").Include("Contact").Include("Job")
where (rcbTaskFilter.SelectedValue == "2" || q.IsComplete == (rcbTaskFilter.SelectedValue == "1" ? true : false) && ids.Contains((int)q.UserAccountFk))
select q).ToList();
*/
var data = (from q in Master.DbContext.TaskContacts
where q.Task.IsDeleted == false && (q.Contact.LFCustomerFk == Master.LFCustomerFk
&& ((rcbTaskFilter.SelectedValue == "2" || q.Task.IsComplete == (rcbTaskFilter.SelectedValue == "1" ? true : false))))
orderby q.Task.DueDate descending
select q.Task).ToList();
data = data.Where(param => param != null).OrderByDescending(q => q.DueDate).ToList();
TasksRadGrid.DataSource = data;
}
}
private void AddPageView(string pageViewID)
{
try
{
if (Session["PageView"].ToString() == "PageView1")
{
CalendarPageView.Selected = true;
}
else
{
ListPageView.Selected = true;
}
}
catch (Exception exc)
{
Core.AppManager.NotifyAdmin("Unable to AddPageView.", exc);
}
}
void cb_CheckedChanged(object sender, System.EventArgs e)
{
RadWindowManager1.RadAlert("checked changed", 200, 200, "", "");
}
/*
protected void rcbUserFilter_SelectedIndexChanged(object sender, RadComboBoxSelectedIndexChangedEventArgs e)
{
if (rcbUserFilter.SelectedValue == "All")
{
int lfCust = Convert.ToInt32(Session["LFCUSTOMERID"]);
var rsTaskContacts = from q in context.TaskContacts
where q.Task.IsDeleted == false
&& q.Contact.LFCustomerFk == lfCust
select q;
listDate.Clear();
listTask.Clear();
foreach (var tc in rsTaskContacts)
{
DateTime day = Convert.ToDateTime(tc.Task.DueDate).Date;
if (listDate.ContainsKey(day))
{
listDate[day] = listDate[day] + Convert.ToDateTime(tc.Task.DueDate).ToString("hh:mm tt") + ", " + tc.Task.Title + "<br/>";
}
else
{
listDate.Add(day, Convert.ToDateTime(tc.Task.DueDate).ToString("hh:mm tt") + ", " + tc.Task.Title + "<br/>");
}
}
}
else
{
int selUser = Convert.ToInt32(rcbUserFilter.SelectedValue);
int lfCust = Convert.ToInt32(Session["LFCUSTOMERID"]);
var rsTaskContacts = from q in context.TaskContacts
where q.Task.IsDeleted == false
&& q.Contact.LFCustomerFk == lfCust && q.ContactFk == (
from d in context.UserAccounts
where d.Id == selUser
select d.ContactFk
).FirstOrDefault()
select q;
listDate.Clear();
listTask.Clear();
foreach (var tc in rsTaskContacts)
{
DateTime day = Convert.ToDateTime(tc.Task.DueDate).Date;
if (listDate.ContainsKey(day))
{
listDate[day] = listDate[day] + Convert.ToDateTime(tc.Task.DueDate).ToString("hh:mm tt") + ", " + tc.Task.Title + "<br/>";
}
else
{
listDate.Add(day, Convert.ToDateTime(tc.Task.DueDate).ToString("hh:mm tt") + ", " + tc.Task.Title + "<br/>");
}
}
}
}
*/
protected void TasksRadGrid_ItemDataBound(object sender, GridItemEventArgs e)
{
if (e.Item is GridDataItem)
{
GridDataItem item = e.Item as GridDataItem;
bool IsComplete = (bool)DataBinder.Eval(item.DataItem, "IsComplete");
if (IsComplete)
item["Title"].Style.Add("text-decoration", "line-through");
}
}
protected void TasksRadGrid_ItemCreated(object sender, Telerik.Web.UI.GridItemEventArgs e)
{
/*if (e.Item is GridDataItem )
{
GridDataItem item = e.Item as GridDataItem;
CheckBox cb = (CheckBox)item.FindControl("chkIsComplete");
cb.AutoPostBack = true;
cb.CheckedChanged += new System.EventHandler(cb_CheckedChanged);
}*/
if (e.Item is GridCommandItem)
{
// ShowOrHide Filter Row
GridCommandItem commandItem = e.Item as GridCommandItem;
RadButton button = commandItem.FindControl("btnFilter") as RadButton;
button.SelectedToggleStateIndex = (xx.Core.AppManager.ReadCookie("ShowGridFilter") == "1" ? 1 : 0);
}
}
protected void TasksRadGrid_ItemCommand(object source, GridCommandEventArgs e)
{
if (e.CommandName == "CompleteCommand")
{
GridDataItem dataItem = (GridDataItem)e.Item;
int id = int.Parse(dataItem["Id"].Text.ToString());
Boolean IsComplete = Convert.ToBoolean(e.CommandArgument.ToString());
try
{
var ob = (from q in context.Tasks
where q.Id == id
select q).FirstOrDefault();
ob.IsComplete = !IsComplete;
context.Tasks.ApplyCurrentValues(ob);
context.SaveChanges();
TasksRadGrid.Rebind();
}
catch (Exception ex)
{
throw ex;
}
}
}
protected void rcbTaskFilter_SelectedIndexChanged(object sender, RadComboBoxSelectedIndexChangedEventArgs e)
{
TasksRadGrid.Rebind();
}
protected void TaskRadScheduler_AppointmentDataBound(object sender, SchedulerEventArgs e)
{
string userId = Convert.ToString(e.Appointment.Attributes["UserId"]);
RadComboBoxItem item = rcbUser.Items.FindItemByValue(userId);
if (item != null)
{
e.Appointment.CssClass = "CustomAptContent";
if (Convert.ToBoolean(e.Appointment.Attributes["IsComplete"]))
{
e.Appointment.Attributes.Add("background-color", Color.LightGray.ToString());
}
else
{
e.Appointment.BackColor = item.BackColor;
}
}
}
protected void TasksRadGrid_InsertCommand(object sender, GridCommandEventArgs e)
{
SaveTask(e);
}
protected void TasksRadGrid_UpdateCommand(object sender, GridCommandEventArgs e)
{
SaveTask(e);
}
protected void TasksRadGrid_DeleteCommand(object sender, GridCommandEventArgs e)
{
var editableItem = ((GridEditableItem)e.Item);
int iId = (int)editableItem.GetDataKeyValue("Id");
try
{
Core.AppManager.DeleteTask(iId);
lblFeedback.Text = "Task has been successfully deleted.";
lblFeedback.ForeColor = System.Drawing.Color.Green;
//RadAjaxManager1.Alert0("Task was deleted with success!");
}
catch (Exception exc)
{
Core.AppManager.NotifyAdmin("Unable to delete task.", exc);
RadWindowManager1.RadAlert("Unable to delete task. xx has been notified and will fix this asap.", 350, 200, "Task", "");
lblFeedback.Text = "Unable to delete task. xx has been notified and will fix this asap.";
lblFeedback.ForeColor = System.Drawing.Color.Red; ;
}
}
private void SaveTask(GridCommandEventArgs e)
{
var editableItem = ((GridEditableItem)e.Item);
UserControl editformControl = (UserControl)e.Item.FindControl(GridEditFormItem.EditFormUserControlID);
HiddenField hdId = editformControl.FindControl("hdId") as HiddenField;
Task ucTask = hdId.Parent as Task;
Data.Task task = ucTask.DataObject;
try
{
Core.AppManager.SaveTask(task, Master.LoggedInUserAccountFk, Master.LFCustomerFk);
Core.AppManager.SaveTaskContacts(task.Id, ucTask.ContactIds, Master.LoggedInUserAccountFk);
if (e.CommandName == "PerformInsert")
lblFeedback.Text = "Task has been successfully added.";
else
lblFeedback.Text = "Task has been successfully saved.";
lblFeedback.ForeColor = System.Drawing.Color.Green;
//RadAjaxManager1.Alert0("Task was saved with success!");
}
catch (Exception exc)
{
Core.AppManager.NotifyAdmin("Unable to add task.", exc);
RadWindowManager1.RadAlert("Unable to add task. xx has been notified and will fix this asap.", 350, 200, "Task", "");
lblFeedback.Text = "Unable to add task. xx has been notified and will fix this asap.";
lblFeedback.ForeColor = System.Drawing.Color.Red;
}
}
protected void btnScheduler_Click(object sender, EventArgs e)
{
Session["PageView"] = "PageView1";
ScriptManager.RegisterStartupScript(this, typeof(Page), "Panel", "callNow();", true);
AddPageView("0");
}
protected void btnCalendar_Click(object sender, EventArgs e)
{
Session["PageView"] = "PageView2";
ScriptManager.RegisterStartupScript(this, typeof(Page), "Panel", "callNow();", true);
AddPageView("0");
}
public void bindresentactivities()
{
var activities = (from q in context.RecentActivities
where q.UserAccountFk == Master.LoggedInUserAccountFk
orderby q.DateCreated descending
select q).Take(5);
Repeater repRecentActivities = (Repeater)Page.Master.FindControl("repRecentActivities");
repRecentActivities.DataSource = activities;
repRecentActivities.DataBind();
}
// Allows us to rebind the recent activity list from a radwindow.
protected void TaskRadScheduler_NavigationComplete(object sender, SchedulerNavigationCompleteEventArgs e)
{
if (e.Command == SchedulerNavigationCommand.SwitchToMonthView)
{
TaskRadScheduler.AppointmentTemplate = new AppTemplate();
}
}
protected void FillSchedulerControls()
{
FillSchedulerContacts();
UpdateTimeFrameList();
FillSchedulerJobs();
FillSchedulerJobStatus();
FillSchedulerViews();
GetTasks();
}
protected void FillSchedulerContacts()
{
_authManager = new Core.AuthManager();
var contacts = from q in context.Contacts
where q.IsUser == true || q.ContactType.TypeName == "Sub Contractor"
&& q.LFCustomerFk == _authManager.CustomerFk
select new
{
q.Id,
Value = q.FirstName + " " + q.LastName
};
rcbUser.DataSource = contacts;
rcbUser.DataBind();
}
protected void FillSchedulerJobs()
{
var job = from q in context.Jobs
select new
{
q.Id,
Value = q.Contact.FirstName + " " + q.Contact.LastName
};
List<object> lJob = new List<object>();
foreach (var j in job)
{
lJob.Add(new { j.Id, Value = string.Format("{0} #{1}", j.Value, j.Id) });
}
rcbJob.DataSource = lJob;
rcbJob.DataBind();
}
protected void FillSchedulerJobStatus()
{
var jStatus = from q in context.JobStatus
select new
{
q.Id,
Value = q.JobStatusName
};
rcbJobStatus.DataSource = jStatus;
rcbJobStatus.DataBind();
}
protected void FillSchedulerViews()
{
var view = from q in context.TaskCalendarSavedViews
where q.UserAccountFk == _authManager.UserFk
select new
{
q.Id,
Value = q.ViewName
};
rcbViews.DataSource = view;
rcbViews.DataBind();
rcbSaveView.DataSource = view;
rcbSaveView.DataBind();
}
protected void UpdateTimeFrameList()
{
rcbTimeFrame.Items.Add(new RadComboBoxItem("Today", DateTime.Now.ToString("dd/MMM/yyyy") + "-" + DateTime.Now.ToString("dd/MMM/yyyy")));
rcbTimeFrame.Items.Add(new RadComboBoxItem("This Week", Core.AppManager.GetFirstDateOfWeek(DateTime.Now).ToString("dd/MMM/yyyy") + "-" + Core.AppManager.GetLastDateOfWeek(DateTime.Now).ToString("dd/MMM/yyyy")));
rcbTimeFrame.Items.Add(new RadComboBoxItem("This Month", Core.AppManager.GetFirstDateOfMonth(DateTime.Now).ToString("dd/MMM/yyyy") + "-" + Core.AppManager.GetLastDateOfMonth(DateTime.Now).ToString("dd/MMM/yyyy")));
rcbTimeFrame.Items.Add(new RadComboBoxItem("Yesterday", DateTime.Now.AddDays(-1).ToString("dd/MMM/yyyy") + "-" + DateTime.Now.AddDays(-1).ToString("dd/MMM/yyyy")));
rcbTimeFrame.Items.Add(new RadComboBoxItem("Last Week", Core.AppManager.GetFirstDateOfWeek(DateTime.Now.AddDays(-7)).ToString("dd/MMM/yyyy") + "-" + Core.AppManager.GetLastDateOfWeek(DateTime.Now.AddDays(-7)).ToString("dd/MMM/yyyy")));
rcbTimeFrame.Items.Add(new RadComboBoxItem("Last Month", Core.AppManager.GetFirstDateOfMonth(DateTime.Now.AddMonths(-1)).ToString("dd/MMM/yyyy") + "-" + Core.AppManager.GetLastDateOfMonth(DateTime.Now.AddMonths(-1)).ToString("dd/MMM/yyyy")));
rcbTimeFrame.Items.Add(new RadComboBoxItem("Tomorrow", DateTime.Now.AddDays(1).ToString("dd/MMM/yyyy") + "-" + DateTime.Now.AddDays(1).ToString("dd/MMM/yyyy")));
rcbTimeFrame.Items.Add(new RadComboBoxItem("Next Week", Core.AppManager.GetFirstDateOfWeek(DateTime.Now.AddDays(7)).ToString("dd/MMM/yyyy") + "-" + Core.AppManager.GetLastDateOfWeek(DateTime.Now.AddDays(7)).ToString("dd/MMM/yyyy")));
rcbTimeFrame.Items.Add(new RadComboBoxItem("Next Month", Core.AppManager.GetFirstDateOfMonth(DateTime.Now.AddMonths(1)).ToString("dd/MMM/yyyy") + "-" + Core.AppManager.GetLastDateOfMonth(DateTime.Now.AddMonths(1)).ToString("dd/MMM/yyyy")));
}
protected void rcbViews_SelectedIndexChanged(object sender, RadComboBoxSelectedIndexChangedEventArgs e)
{
if (rcbViews.SelectedValue != null && rcbViews.SelectedValue != "")
{
LoadTaskByView(Convert.ToInt32(rcbViews.SelectedValue));
}
}
protected void LoadTaskByView(int viewId)
{
var view = context.TaskCalendarSavedViews.Where(d => d.Id == viewId).FirstOrDefault();
if (view != null)
{
// Set User checked item(s)
List<string> users = view.UserSettings.Split(',').ToList();
rcbUser.ClearCheckedItems();
foreach (var user in users)
{
var item = rcbUser.Items.FindItemByValue(user);
if (item != null)
rcbUser.CheckedItems.Add(item);
}
// Set TimeFrame selected index
rcbTimeFrame.SelectedIndex = Convert.ToInt32(view.TimeframeSettings);
// Set Job checked item(s)
List<string> jobs = view.JobSettings.Split(',').ToList();
rcbJob.ClearCheckedItems();
foreach (var job in jobs)
{
var item = rcbJob.Items.FindItemByValue(job);
if (item != null)
rcbJob.CheckedItems.Add(item);
}
// Set JobStatus checked item(s)
List<string> jobStatuses = view.JobStatusSettings.Split(',').ToList();
rcbJobStatus.ClearCheckedItems();
foreach (var jobStatus in users)
{
var item = rcbJobStatus.Items.FindItemByValue(jobStatus);
if (item != null)
rcbJobStatus.CheckedItems.Add(item);
}
GetTasks();
}
}
protected void btnSave_Click(object sender, EventArgs e)
{
SaveTaskCalendarView();
string script = "<script>CloseTaskViewDialog();</" + "script>";
if (ScriptManager.GetCurrent(base.Page).IsInAsyncPostBack)
ScriptManager.RegisterStartupScript(this, this.GetType(), "CloseTaskViewDialog", script.ToString(), false);
else
this.Page.ClientScript.RegisterStartupScript(this.GetType(), "CloseTaskViewDialog", script);
}
[WebMethod]
public static object GetTooltipTaskDetails(int taskContactId)
{
try
{
Data.xxModelContainer _context = new Data.xxModelContainer();
var data = (from q in _context.TaskContacts
where q.Id == taskContactId
select q).AsEnumerable();
var task = from q in data
select new
{
q.Id,
TaskId = q.TaskFk,
q.Task.Title,
q.Task.Description,
aName = (String.IsNullOrEmpty(q.Contact.FirstName) ? "" : q.Contact.FirstName + " ")
+ (String.IsNullOrEmpty(q.Contact.LastName) ? "" : q.Contact.LastName),
sDate = String.Format("{0:MM/dd/yyyy}", q.Task.DateCreated),
dDate = String.Format("{0:MM/dd/yyyy}", q.Task.DueDate),
rDate = String.Format("{0:MM/dd/yyyy}", q.Task.ReminderDate),
pName = ((q.Task.Job != null) ?
(String.IsNullOrEmpty(q.Task.Job.Contact.FirstName) ? "" : q.Task.Job.Contact.FirstName + " ")
+ (String.IsNullOrEmpty(q.Task.Job.Contact.LastName) ? "" : q.Task.Job.Contact.LastName)
: ""),
pAddress = ((q.Task.Job != null) ?
(String.IsNullOrEmpty(q.Contact.AddressLine1) ? "" : q.Contact.AddressLine1 + " ")
+ (String.IsNullOrEmpty(q.Contact.AddressLine2) ? "" : q.Contact.AddressLine2 + " ")
+ (String.IsNullOrEmpty(q.Contact.City) ? "" : q.Contact.City + " ")
+ (String.IsNullOrEmpty(q.Contact.State) ? "" : q.Contact.State + " ")
+ (String.IsNullOrEmpty(q.Contact.Zip) ? "" : q.Contact.Zip + " ")
: ""),
jId = q.Task.JobFk != null ? Convert.ToString(q.Task.JobFk) : "",
jType = q.Task.Job != null ? q.Task.Job.JobType.TypeName : "",
jStatus = q.Task.Job != null ? q.Task.Job.JobStatu.JobStatusName : ""
};
return task.FirstOrDefault();
}
catch (Exception ex)
{
throw ex;
}
}
[WebMethod]
public static object CompleteTask(int id)
{
object result;
try
{
Core.AppManager.CompleteTask(id);
result = new { color = "green", message = "Task marked completed successfully." };
}
catch
{
result = new { color = "red", message = "There are some error while marking Task." };
}
return result;
}
[WebMethod]
public static object DeleteTask(int id)
{
object result;
try
{
Core.AppManager.DeleteTask(id);
result = new { color = "green", message = "Task has been successfully deleted." };
}
catch
{
result = new { color = "red", message = "There are some error while deleting Task." };
}
return result;
}
}
}
Please help me, I am looking for a solution.