public ActionResult Create(ViewModels.Tasks.CreateTaskViewModel viewModel)
        {
            Common.Models.Account.Users currentUser;
            Common.Models.Tasks.Task    model;
            Guid matterid = Guid.Empty;

            using (Data.Transaction trans = Data.Transaction.Create(true))
            {
                try
                {
                    currentUser = Data.Account.Users.Get(trans, User.Identity.Name);

                    model             = Mapper.Map <Common.Models.Tasks.Task>(viewModel.Task);
                    model.Description = new Ganss.XSS.HtmlSanitizer().Sanitize(model.Description);

                    matterid = Guid.Parse(Request["MatterId"]);

                    model = Data.Tasks.Task.Create(trans, model, currentUser);

                    Data.Tasks.Task.RelateMatter(trans, model, matterid, currentUser);
                    Data.Tasks.TaskAssignedContact.Create(trans, new Common.Models.Tasks.TaskAssignedContact()
                    {
                        Task    = model,
                        Contact = new Common.Models.Contacts.Contact()
                        {
                            Id = viewModel.TaskContact.Contact.Id
                        },
                        AssignmentType = (Common.Models.Tasks.AssignmentType)(int) viewModel.TaskContact.AssignmentType
                    }, currentUser);

                    trans.Commit();
                }
                catch
                {
                    trans.Rollback();
                    return(Create());
                }
            }

            return(RedirectToAction("Details", new { Id = model.Id }));
        }
        public ActionResult Create(ViewModels.Tasks.CreateTaskViewModel viewModel)
        {
            Common.Models.Account.Users currentUser;
            Common.Models.Tasks.Task    model;
            Guid matterid = Guid.Empty;

            currentUser = Data.Account.Users.Get(User.Identity.Name);

            model             = Mapper.Map <Common.Models.Tasks.Task>(viewModel.Task);
            model.Description = new Ganss.XSS.HtmlSanitizer().Sanitize(model.Description);
            model             = Data.Tasks.Task.Create(model, currentUser);

            matterid = Guid.Parse(Request["MatterId"]);

            Data.Tasks.Task.RelateMatter(model, matterid, currentUser);
            Data.Tasks.TaskResponsibleUser.Create(new Common.Models.Tasks.TaskResponsibleUser()
            {
                Task = model,
                User = new Common.Models.Account.Users()
                {
                    PId = viewModel.ResponsibleUser.User.PId
                },
                Responsibility = viewModel.ResponsibleUser.Responsibility
            }, currentUser);
            Data.Tasks.TaskAssignedContact.Create(new Common.Models.Tasks.TaskAssignedContact()
            {
                Task    = model,
                Contact = new Common.Models.Contacts.Contact()
                {
                    Id = viewModel.TaskContact.Contact.Id
                },
                AssignmentType = (Common.Models.Tasks.AssignmentType)(int) viewModel.TaskContact.AssignmentType
            }, currentUser);

            return(RedirectToAction("Details", new { Id = model.Id }));
        }
        public ActionResult Create()
        {
            int contactId = -1;

            ViewModels.Tasks.CreateTaskViewModel        viewModel;
            Common.Models.Matters.Matter                matter;
            List <ViewModels.Account.UsersViewModel>    userList;
            List <ViewModels.Contacts.ContactViewModel> employeeContactList;

            Newtonsoft.Json.Linq.JArray taskTemplates;

            userList            = new List <ViewModels.Account.UsersViewModel>();
            employeeContactList = new List <ViewModels.Contacts.ContactViewModel>();

            dynamic profile = ProfileBase.Create(Membership.GetUser().UserName);

            if (profile.ContactId != null && !string.IsNullOrEmpty(profile.ContactId))
            {
                contactId = int.Parse(profile.ContactId);
            }

            using (IDbConnection conn = Data.Database.Instance.GetConnection())
            {
                Data.Account.Users.List(conn, false).ForEach(x =>
                {
                    userList.Add(Mapper.Map <ViewModels.Account.UsersViewModel>(x));
                });

                Data.Contacts.Contact.ListEmployeesOnly(conn, false).ForEach(x =>
                {
                    employeeContactList.Add(Mapper.Map <ViewModels.Contacts.ContactViewModel>(x));
                });

                viewModel = new ViewModels.Tasks.CreateTaskViewModel();
                viewModel.TaskTemplates = new List <ViewModels.Tasks.TaskTemplateViewModel>();
                taskTemplates           = new Newtonsoft.Json.Linq.JArray();
                Data.Tasks.TaskTemplate.List(conn, false).ForEach(x =>
                {
                    viewModel.TaskTemplates.Add(Mapper.Map <ViewModels.Tasks.TaskTemplateViewModel>(x));
                    Newtonsoft.Json.Linq.JObject template = new Newtonsoft.Json.Linq.JObject();
                    template.Add(new Newtonsoft.Json.Linq.JProperty("Id", x.Id.Value));
                    template.Add(new Newtonsoft.Json.Linq.JProperty("TaskTemplateTitle", x.TaskTemplateTitle));
                    template.Add(new Newtonsoft.Json.Linq.JProperty("Title", x.Title));
                    template.Add(new Newtonsoft.Json.Linq.JProperty("Description", x.Description));
                    template.Add(new Newtonsoft.Json.Linq.JProperty("ProjectedStart", DTProp(x.ProjectedStart)));
                    template.Add(new Newtonsoft.Json.Linq.JProperty("DueDate", DTProp(x.DueDate)));
                    template.Add(new Newtonsoft.Json.Linq.JProperty("ProjectedEnd", DTProp(x.ProjectedEnd)));
                    template.Add(new Newtonsoft.Json.Linq.JProperty("ActualEnd", DTProp(x.ActualEnd)));
                    template.Add(new Newtonsoft.Json.Linq.JProperty("Active", x.Active));
                    taskTemplates.Add(template);
                });

                if (contactId > 0)
                {
                    viewModel.TaskContact = new ViewModels.Tasks.TaskAssignedContactViewModel()
                    {
                        Contact = new ViewModels.Contacts.ContactViewModel()
                        {
                            Id = contactId
                        }
                    };
                }

                matter = Data.Matters.Matter.Get(Guid.Parse(Request["MatterId"]), conn, false);
            }

            ViewBag.Matter              = matter;
            ViewBag.UserList            = userList;
            ViewBag.EmployeeContactList = employeeContactList;
            ViewBag.TemplateJson        = taskTemplates.ToString();

            return(View(new ViewModels.Tasks.CreateTaskViewModel()
            {
                TaskTemplates = viewModel.TaskTemplates,
                Task = new ViewModels.Tasks.TaskViewModel()
                {
                    DueDate = DateTime.Today.AddHours(17),
                    Active = true
                },
                TaskContact = new ViewModels.Tasks.TaskAssignedContactViewModel()
                {
                    AssignmentType = ViewModels.AssignmentTypeViewModel.Direct,
                    Contact = viewModel.TaskContact.Contact
                }
            }));
        }
        public ActionResult Create()
        {
            int contactId = -1;
            ViewModels.Tasks.CreateTaskViewModel viewModel;
            Common.Models.Matters.Matter matter;
            List<ViewModels.Account.UsersViewModel> userList;
            List<ViewModels.Contacts.ContactViewModel> employeeContactList;
            Newtonsoft.Json.Linq.JArray taskTemplates;

            userList = new List<ViewModels.Account.UsersViewModel>();
            employeeContactList = new List<ViewModels.Contacts.ContactViewModel>();
            
            dynamic profile = ProfileBase.Create(Membership.GetUser().UserName);
            if (profile.ContactId != null && !string.IsNullOrEmpty(profile.ContactId))
                contactId = int.Parse(profile.ContactId);

            using (IDbConnection conn = Data.Database.Instance.GetConnection())
            {
                Data.Account.Users.List(conn, false).ForEach(x =>
                {
                    userList.Add(Mapper.Map<ViewModels.Account.UsersViewModel>(x));
                });

                Data.Contacts.Contact.ListEmployeesOnly(conn, false).ForEach(x =>
                {
                    employeeContactList.Add(Mapper.Map<ViewModels.Contacts.ContactViewModel>(x));
                });

                viewModel = new ViewModels.Tasks.CreateTaskViewModel();
                viewModel.TaskTemplates = new List<ViewModels.Tasks.TaskTemplateViewModel>();
                taskTemplates = new Newtonsoft.Json.Linq.JArray();
                Data.Tasks.TaskTemplate.List(conn, false).ForEach(x =>
                {
                    viewModel.TaskTemplates.Add(Mapper.Map<ViewModels.Tasks.TaskTemplateViewModel>(x));
                    Newtonsoft.Json.Linq.JObject template = new Newtonsoft.Json.Linq.JObject();
                    template.Add(new Newtonsoft.Json.Linq.JProperty("Id", x.Id.Value));
                    template.Add(new Newtonsoft.Json.Linq.JProperty("TaskTemplateTitle", x.TaskTemplateTitle));
                    template.Add(new Newtonsoft.Json.Linq.JProperty("Title", x.Title));
                    template.Add(new Newtonsoft.Json.Linq.JProperty("Description", x.Description));
                    template.Add(new Newtonsoft.Json.Linq.JProperty("ProjectedStart", DTProp(x.ProjectedStart)));
                    template.Add(new Newtonsoft.Json.Linq.JProperty("DueDate", DTProp(x.DueDate)));
                    template.Add(new Newtonsoft.Json.Linq.JProperty("ProjectedEnd", DTProp(x.ProjectedEnd)));
                    template.Add(new Newtonsoft.Json.Linq.JProperty("ActualEnd", DTProp(x.ActualEnd)));
                    template.Add(new Newtonsoft.Json.Linq.JProperty("Active", x.Active));
                    taskTemplates.Add(template);
                });

                if (contactId > 0)
                {
                    viewModel.TaskContact = new ViewModels.Tasks.TaskAssignedContactViewModel()
                    {
                        Contact = new ViewModels.Contacts.ContactViewModel()
                        {
                            Id = contactId
                        }
                    };
                }

                matter = Data.Matters.Matter.Get(Guid.Parse(Request["MatterId"]), conn, false);
            }

            ViewBag.Matter = matter;
            ViewBag.UserList = userList;
            ViewBag.EmployeeContactList = employeeContactList;
            ViewBag.TemplateJson = taskTemplates.ToString();

            return View(new ViewModels.Tasks.CreateTaskViewModel()
            {
                TaskTemplates = viewModel.TaskTemplates,               
                TaskContact = new ViewModels.Tasks.TaskAssignedContactViewModel()
                {
                    AssignmentType = ViewModels.AssignmentTypeViewModel.Direct,
                    Contact = viewModel.TaskContact.Contact
                }
            });
        }
        public ActionResult Create()
        {
            int contactId = -1;

            ViewModels.Tasks.CreateTaskViewModel        viewModel;
            Common.Models.Matters.Matter                matter;
            List <ViewModels.Account.UsersViewModel>    userList;
            List <ViewModels.Contacts.ContactViewModel> employeeContactList;

            Newtonsoft.Json.Linq.JArray taskTemplates;

            userList            = new List <ViewModels.Account.UsersViewModel>();
            employeeContactList = new List <ViewModels.Contacts.ContactViewModel>();

            dynamic profile = ProfileBase.Create(Membership.GetUser().UserName);

            if (profile.ContactId != null && !string.IsNullOrEmpty(profile.ContactId))
            {
                contactId = int.Parse(profile.ContactId);
            }

            Data.Account.Users.List().ForEach(x =>
            {
                userList.Add(Mapper.Map <ViewModels.Account.UsersViewModel>(x));
            });

            Data.Contacts.Contact.ListEmployeesOnly().ForEach(x =>
            {
                employeeContactList.Add(Mapper.Map <ViewModels.Contacts.ContactViewModel>(x));
            });

            viewModel = new ViewModels.Tasks.CreateTaskViewModel();
            viewModel.TaskTemplates = new List <ViewModels.Tasks.TaskTemplateViewModel>();
            taskTemplates           = new Newtonsoft.Json.Linq.JArray();
            Data.Tasks.TaskTemplate.List().ForEach(x =>
            {
                viewModel.TaskTemplates.Add(Mapper.Map <ViewModels.Tasks.TaskTemplateViewModel>(x));
                Newtonsoft.Json.Linq.JObject template = new Newtonsoft.Json.Linq.JObject();
                template.Add(new Newtonsoft.Json.Linq.JProperty("Id", x.Id.Value));
                template.Add(new Newtonsoft.Json.Linq.JProperty("TaskTemplateTitle", x.TaskTemplateTitle));
                template.Add(new Newtonsoft.Json.Linq.JProperty("Title", x.Title));
                template.Add(new Newtonsoft.Json.Linq.JProperty("Description", x.Description));
                template.Add(new Newtonsoft.Json.Linq.JProperty("ProjectedStart", DTProp(x.ProjectedStart)));
                template.Add(new Newtonsoft.Json.Linq.JProperty("DueDate", DTProp(x.DueDate)));
                template.Add(new Newtonsoft.Json.Linq.JProperty("ProjectedEnd", DTProp(x.ProjectedEnd)));
                template.Add(new Newtonsoft.Json.Linq.JProperty("ActualEnd", DTProp(x.ActualEnd)));
                template.Add(new Newtonsoft.Json.Linq.JProperty("Active", x.Active));
                taskTemplates.Add(template);
            });

            viewModel.ResponsibleUser = new ViewModels.Tasks.TaskResponsibleUserViewModel()
            {
                User = new ViewModels.Account.UsersViewModel()
                {
                    PId = Data.Account.Users.Get(Membership.GetUser().UserName).PId
                },
            };
            if (contactId > 0)
            {
                viewModel.TaskContact = new ViewModels.Tasks.TaskAssignedContactViewModel()
                {
                    Contact = new ViewModels.Contacts.ContactViewModel()
                    {
                        Id = contactId
                    }
                };
            }


            matter = Data.Matters.Matter.Get(Guid.Parse(Request["MatterId"]));
            ViewData["MatterId"]            = matter.Id.Value;
            ViewData["Matter"]              = matter.Title;
            ViewData["UserList"]            = userList;
            ViewData["EmployeeContactList"] = employeeContactList;
            ViewData["TemplateJson"]        = taskTemplates.ToString();

            return(View(new ViewModels.Tasks.CreateTaskViewModel()
            {
                TaskTemplates = viewModel.TaskTemplates,
                ResponsibleUser = viewModel.ResponsibleUser,
                TaskContact = new ViewModels.Tasks.TaskAssignedContactViewModel()
                {
                    AssignmentType = ViewModels.AssignmentTypeViewModel.Direct,
                    Contact = viewModel.TaskContact.Contact
                }
            }));
        }