public virtual JsonResult Create([DataSourceRequest] DataSourceRequest request, ContactTaskViewModel task)
        {
            if (ModelState.IsValid)
            {
                task.TaskType     = "VIRTUAL TOUR";
                task.ContactId    = SessionControl.SessionManager.GetContactId(Session);
                task.ClientID     = SessionControl.SessionManager.GetClientId(HttpContext.Session);
                task.LeadID       = SessionControl.SessionManager.GetProgramParameterByKey("LeadID", HttpContext.Session);
                task.CreatedDate  = DateTime.Now;
                task.ModifiedDate = DateTime.Now;

                string EndTimeMinute = SessionControl.SessionManager.GetScriptParameterByKey("EndTimeMinute", HttpContext.Session);

                if (!string.IsNullOrEmpty(EndTimeMinute))
                {
                    task.End = task.Start.AddMinutes(Convert.ToDouble(EndTimeMinute));
                }

                if (taskService.IsExist(task.UserID, task.ClientID, task.Start, task.End))
                {
                    ModelState.AddModelError("errors", "This user is not available in this time period.");
                }
                else
                {
                    taskService.Insert(task, ModelState);

                    LeadRecord lead = taskService.GetLead(SessionControl.SessionManager.GetProgramParameterByKey("LeadID", HttpContext.Session));
                    lead.LeadOwner    = task.UserID;
                    lead.ModifiedDate = DateTime.Now;
                    taskService.UpdateLead(lead);
                }
            }

            return(Json(new[] { task }.ToDataSourceResult(request, ModelState)));
        }
        public virtual JsonResult Update([DataSourceRequest] DataSourceRequest request, ContactTaskViewModel task)
        {
            if (ModelState.IsValid)
            {
                task.ModifiedDate = DateTime.Now;
                taskService.Update(task, ModelState);
            }

            return(Json(new[] { task }.ToDataSourceResult(request, ModelState)));
        }
        public virtual JsonResult Destroy([DataSourceRequest] DataSourceRequest request, ContactTaskViewModel task)
        {
            if (ModelState.IsValid)
            {
                taskService.Delete(task, ModelState);
            }

            return(Json(new[] { task }.ToDataSourceResult(request, ModelState)));
        }