public ActionResult Index(ViewModels.Home.DashboardViewModel currentDVM)
        {
            int id;
            ViewModels.Home.DashboardViewModel viewModel;
            Common.Models.Contacts.Contact employee;
            Common.Models.Account.Users currentUser;
            List<Common.Models.Settings.TagFilter> tagFilter;
            Common.Models.Matters.Matter matter;
            List<ViewModels.Contacts.ContactViewModel> employeeContactList;

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

            using (IDbConnection conn = Data.Database.Instance.GetConnection())
            {
                try
                {
                    Data.Account.Users.List(conn, false);
                }
                catch (Exception)
                {
                    return RedirectToAction("Index", "Installation");
                }
                
                if (RouteData.Values["Id"] != null)
                {
                    id = int.Parse((string)RouteData.Values["Id"]);
                }
                else if (currentDVM.Employee != null && currentDVM.Employee.Id.HasValue)
                {
                    id = currentDVM.Employee.Id.Value;
                }
                else
                {
                    dynamic profile = ProfileBase.Create(Membership.GetUser().UserName);
                    if (profile.ContactId != null && !string.IsNullOrEmpty(profile.ContactId))
                        id = int.Parse(profile.ContactId);
                    else
                        id = -1; // Happens on initial setup
                }

                if (id <= 0)
                {
                    employee = null;
                    viewModel = null;
                }
                else
                {
                    employee = Data.Contacts.Contact.Get(id, conn, false);
                    currentUser = Data.Account.Users.Get(User.Identity.Name, conn, false);

                    viewModel = new ViewModels.Home.DashboardViewModel();
                    viewModel.Employee = Mapper.Map<ViewModels.Contacts.ContactViewModel>(employee);

                    viewModel.MyTodoList = new List<Tuple<ViewModels.Matters.MatterViewModel, ViewModels.Tasks.TaskViewModel>>();
                    
                    Data.Tasks.Task.GetTodoListFor(employee, null, null, conn, false).ForEach(x =>
                    {
                        matter = Data.Tasks.Task.GetRelatedMatter(x.Id.Value, conn, false);
                        viewModel.MyTodoList.Add(
                            new Tuple<ViewModels.Matters.MatterViewModel, ViewModels.Tasks.TaskViewModel>(
                            Mapper.Map<ViewModels.Matters.MatterViewModel>(matter),
                            Mapper.Map<ViewModels.Tasks.TaskViewModel>(x)));
                    });

                    viewModel.NotificationList = new List<ViewModels.Notes.NoteNotificationViewModel>();
                    Data.Notes.NoteNotification.ListAllNoteNotificationsForContact(employee.Id.Value, conn, false).ForEach(x =>
                    {
                        ViewModels.Notes.NoteNotificationViewModel nnvm = Mapper.Map<ViewModels.Notes.NoteNotificationViewModel>(x);
                        nnvm.Note = Mapper.Map<ViewModels.Notes.NoteViewModel>(Data.Notes.Note.Get(x.Note.Id.Value, conn, false));
                        viewModel.NotificationList.Add(nnvm);
                    });

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

                    viewModel.TasklessActiveMatters = new List<ViewModels.Matters.MatterViewModel>();
                    Data.Matters.Matter.ListMattersWithoutActiveTasks(5, conn, false).ForEach(x =>
                    {
                        viewModel.TasklessActiveMatters.Add(Mapper.Map<ViewModels.Matters.MatterViewModel>(x));
                    });

                    Random rnd = new Random();
                    int activeMatters = Data.Matters.Matter.CountAllActiveMatters(conn, false);
                    int activeMattersWithoutTasks = Data.Matters.Matter.CountAllMattersWithoutActiveTasks(conn, false);

                    ViewModels.Home.DashboardGraphDataViewModel graphs = new ViewModels.Home.DashboardGraphDataViewModel();

                    graphs.TasksInActiveMatters.Add(new ViewModels.Home.DashboardGraphDataViewModel.ChartItem()
                    {
                        value = activeMattersWithoutTasks,
                        color = "#F7464A",
                        label = "Without Tasks"
                    });
                    graphs.TasksInActiveMatters.Add(new ViewModels.Home.DashboardGraphDataViewModel.ChartItem()
                    {
                        value = activeMatters - activeMattersWithoutTasks,
                        color = "#00cc66",
                        label = "With Tasks"
                    });

                    ViewBag.MatterData = Newtonsoft.Json.JsonConvert.SerializeObject(graphs);
                }
            }

            ViewBag.EmployeeContactList = employeeContactList;

            return View(viewModel);
        }
        public ActionResult Index(ViewModels.Home.DashboardViewModel currentDVM)
        {
            int id;

            ViewModels.Home.DashboardViewModel      viewModel;
            Common.Models.Contacts.Contact          employee;
            Common.Models.Account.Users             currentUser;
            List <Common.Models.Settings.TagFilter> tagFilter;

            Common.Models.Matters.Matter matter;
            List <ViewModels.Contacts.ContactViewModel> employeeContactList;

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

            try
            {
                Data.Account.Users.List();
            }
            catch (Exception)
            {
                return(RedirectToAction("Index", "Installation"));
            }


            if (RouteData.Values["Id"] != null)
            {
                id = int.Parse((string)RouteData.Values["Id"]);
            }
            else if (currentDVM.Employee != null && currentDVM.Employee.Id.HasValue)
            {
                id = currentDVM.Employee.Id.Value;
            }
            else
            {
                dynamic profile = ProfileBase.Create(Membership.GetUser().UserName);
                if (profile.ContactId != null && !string.IsNullOrEmpty(profile.ContactId))
                {
                    id = int.Parse(profile.ContactId);
                }
                else
                {
                    throw new ArgumentNullException("Must supply an Id or have a ContactId set in profile.");
                }
            }

            employee    = Data.Contacts.Contact.Get(id);
            currentUser = Data.Account.Users.Get(User.Identity.Name);

            viewModel          = new ViewModels.Home.DashboardViewModel();
            viewModel.Employee = Mapper.Map <ViewModels.Contacts.ContactViewModel>(employee);

            viewModel.MyTodoList = new List <Tuple <ViewModels.Matters.MatterViewModel, ViewModels.Tasks.TaskViewModel> >();

            tagFilter = Data.Settings.UserTaskSettings.ListTagFiltersFor(currentUser);

            Data.Tasks.Task.GetTodoListFor(employee, tagFilter).ForEach(x =>
            {
                matter = Data.Tasks.Task.GetRelatedMatter(x.Id.Value);
                viewModel.MyTodoList.Add(
                    new Tuple <ViewModels.Matters.MatterViewModel, ViewModels.Tasks.TaskViewModel>(
                        Mapper.Map <ViewModels.Matters.MatterViewModel>(matter),
                        Mapper.Map <ViewModels.Tasks.TaskViewModel>(x)));
            });

            viewModel.NotificationList = new List <ViewModels.Notes.NoteNotificationViewModel>();
            Data.Notes.NoteNotification.ListAllNoteNotificationsForContact(employee.Id.Value).ForEach(x =>
            {
                ViewModels.Notes.NoteNotificationViewModel nnvm = Mapper.Map <ViewModels.Notes.NoteNotificationViewModel>(x);
                nnvm.Note = Mapper.Map <ViewModels.Notes.NoteViewModel>(Data.Notes.Note.Get(x.Note.Id.Value));
                viewModel.NotificationList.Add(nnvm);
            });

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

            ViewData["EmployeeContactList"] = employeeContactList;

            return(View(viewModel));
        }
Esempio n. 3
0
        public ActionResult Index(ViewModels.Home.DashboardViewModel currentDVM)
        {
            int id;
            ViewModels.Home.DashboardViewModel viewModel;
            Common.Models.Contacts.Contact employee;
            Common.Models.Account.Users currentUser;
            List<Common.Models.Settings.TagFilter> tagFilter;
            Common.Models.Matters.Matter matter;
            List<ViewModels.Contacts.ContactViewModel> employeeContactList;

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

            try
            {
                Data.Account.Users.List();
            }
            catch (Exception)
            {
                return RedirectToAction("Index", "Installation");
            }


            if (RouteData.Values["Id"] != null)
            {
                id = int.Parse((string)RouteData.Values["Id"]);
            }
            else if (currentDVM.Employee != null && currentDVM.Employee.Id.HasValue)
            {
                id = currentDVM.Employee.Id.Value;
            }
            else
            {
                dynamic profile = ProfileBase.Create(Membership.GetUser().UserName);
                if (profile.ContactId != null && !string.IsNullOrEmpty(profile.ContactId))
                    id = int.Parse(profile.ContactId);
                else
                    throw new ArgumentNullException("Must supply an Id or have a ContactId set in profile.");
            }

            employee = Data.Contacts.Contact.Get(id);
            currentUser = Data.Account.Users.Get(User.Identity.Name);

            viewModel = new ViewModels.Home.DashboardViewModel();
            viewModel.Employee = Mapper.Map<ViewModels.Contacts.ContactViewModel>(employee);

            viewModel.MyTodoList = new List<Tuple<ViewModels.Matters.MatterViewModel, ViewModels.Tasks.TaskViewModel>>();

            tagFilter = Data.Settings.UserTaskSettings.ListTagFiltersFor(currentUser);

            Data.Tasks.Task.GetTodoListFor(employee, tagFilter).ForEach(x =>
            {
                matter = Data.Tasks.Task.GetRelatedMatter(x.Id.Value);
                viewModel.MyTodoList.Add(
                    new Tuple<ViewModels.Matters.MatterViewModel, ViewModels.Tasks.TaskViewModel>(
                    Mapper.Map<ViewModels.Matters.MatterViewModel>(matter),
                    Mapper.Map<ViewModels.Tasks.TaskViewModel>(x)));
            });

            viewModel.NotificationList = new List<ViewModels.Notes.NoteNotificationViewModel>();
            Data.Notes.NoteNotification.ListAllNoteNotificationsForContact(employee.Id.Value).ForEach(x =>
            {
                ViewModels.Notes.NoteNotificationViewModel nnvm = Mapper.Map<ViewModels.Notes.NoteNotificationViewModel>(x);
                nnvm.Note = Mapper.Map<ViewModels.Notes.NoteViewModel>(Data.Notes.Note.Get(x.Note.Id.Value));
                viewModel.NotificationList.Add(nnvm);
            });

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

            ViewData["EmployeeContactList"] = employeeContactList;

            return View(viewModel);
        }
        public ActionResult Index(ViewModels.Home.DashboardViewModel currentDVM)
        {
            int id;

            ViewModels.Home.DashboardViewModel      viewModel;
            Common.Models.Contacts.Contact          employee;
            Common.Models.Account.Users             currentUser;
            List <Common.Models.Settings.TagFilter> tagFilter;

            Common.Models.Matters.Matter matter;
            List <ViewModels.Contacts.ContactViewModel> employeeContactList;

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

            using (IDbConnection conn = Data.Database.Instance.GetConnection())
            {
                try
                {
                    Data.Account.Users.List(conn, false);
                }
                catch (Exception)
                {
                    return(RedirectToAction("Index", "Installation"));
                }

                if (RouteData.Values["Id"] != null)
                {
                    id = int.Parse((string)RouteData.Values["Id"]);
                }
                else if (currentDVM.Employee != null && currentDVM.Employee.Id.HasValue)
                {
                    id = currentDVM.Employee.Id.Value;
                }
                else
                {
                    dynamic profile = ProfileBase.Create(Membership.GetUser().UserName);
                    if (profile.ContactId != null && !string.IsNullOrEmpty(profile.ContactId))
                    {
                        id = int.Parse(profile.ContactId);
                    }
                    else
                    {
                        id = -1; // Happens on initial setup
                    }
                }

                if (id <= 0)
                {
                    employee  = null;
                    viewModel = null;
                }
                else
                {
                    employee    = Data.Contacts.Contact.Get(id, conn, false);
                    currentUser = Data.Account.Users.Get(User.Identity.Name, conn, false);

                    viewModel          = new ViewModels.Home.DashboardViewModel();
                    viewModel.Employee = Mapper.Map <ViewModels.Contacts.ContactViewModel>(employee);

                    viewModel.MyTodoList = new List <Tuple <ViewModels.Matters.MatterViewModel, ViewModels.Tasks.TaskViewModel> >();

                    Data.Tasks.Task.GetTodoListFor(employee, null, null, conn, false).ForEach(x =>
                    {
                        matter = Data.Tasks.Task.GetRelatedMatter(x.Id.Value, conn, false);
                        viewModel.MyTodoList.Add(
                            new Tuple <ViewModels.Matters.MatterViewModel, ViewModels.Tasks.TaskViewModel>(
                                Mapper.Map <ViewModels.Matters.MatterViewModel>(matter),
                                Mapper.Map <ViewModels.Tasks.TaskViewModel>(x)));
                    });

                    viewModel.NotificationList = new List <ViewModels.Notes.NoteNotificationViewModel>();
                    Data.Notes.NoteNotification.ListAllNoteNotificationsForContact(employee.Id.Value, conn, false).ForEach(x =>
                    {
                        ViewModels.Notes.NoteNotificationViewModel nnvm = Mapper.Map <ViewModels.Notes.NoteNotificationViewModel>(x);
                        nnvm.Note = Mapper.Map <ViewModels.Notes.NoteViewModel>(Data.Notes.Note.Get(x.Note.Id.Value, conn, false));
                        viewModel.NotificationList.Add(nnvm);
                    });

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

                    viewModel.TasklessActiveMatters = new List <ViewModels.Matters.MatterViewModel>();
                    Data.Matters.Matter.ListMattersWithoutActiveTasks(5, conn, false).ForEach(x =>
                    {
                        viewModel.TasklessActiveMatters.Add(Mapper.Map <ViewModels.Matters.MatterViewModel>(x));
                    });

                    viewModel.Activities = new List <Tuple <ViewModels.Activities.ActivityBaseViewModel, ViewModels.Activities.ActivityRegardingBaseViewModel> >();
                    Data.Activities.ActivityTask.GetGeneralActivities(employee.Id.Value, conn, false).ForEach(x =>
                    {
                        Tuple <ViewModels.Activities.ActivityBaseViewModel, ViewModels.Activities.ActivityRegardingBaseViewModel> vm = null;
                        ViewModels.Activities.ActivityBaseViewModel vm1;

                        x.Type = Data.Activities.ActivityType.Get(x.Type.Id.Value, conn, false);

                        vm1      = Mapper.Map <ViewModels.Activities.ActivityBaseViewModel>(x);
                        vm1.Type = Mapper.Map <ViewModels.Activities.ActivityTypeViewModel>(x.Type);

                        Common.Models.Activities.ActivityRegardingType regardingModel = Data.Activities.ActivityRegardingType.GetFromActivityId(x.Id.Value, conn, false);

                        if (regardingModel.Title == "Lead")
                        {
                            Common.Models.Activities.ActivityRegardingLead lm = Data.Activities.ActivityRegardingLead.GetFromActivityId(x.Id.Value, conn, false);
                            vm = new Tuple <ViewModels.Activities.ActivityBaseViewModel, ViewModels.Activities.ActivityRegardingBaseViewModel>(vm1,
                                                                                                                                               Mapper.Map <ViewModels.Activities.ActivityRegardingLeadViewModel>(lm));
                        }
                        else if (regardingModel.Title == "Opportunity")
                        {
                            Common.Models.Activities.ActivityRegardingOpportunity om = Data.Activities.ActivityRegardingOpportunity.GetFromActivityId(x.Id.Value, conn, false);
                            vm = new Tuple <ViewModels.Activities.ActivityBaseViewModel, ViewModels.Activities.ActivityRegardingBaseViewModel>(vm1,
                                                                                                                                               Mapper.Map <ViewModels.Activities.ActivityRegardingOpportunityViewModel>(om));
                        }

                        viewModel.Activities.Add(vm);
                    });

                    Random rnd                       = new Random();
                    int    activeMatters             = Data.Matters.Matter.CountAllActiveMatters(conn, false);
                    int    activeMattersWithoutTasks = Data.Matters.Matter.CountAllMattersWithoutActiveTasks(conn, false);
                    ViewBag.MattersWithActiveTasks    = activeMatters - activeMattersWithoutTasks;
                    ViewBag.MattersWithoutActiveTasks = activeMattersWithoutTasks;
                }
            }

            ViewBag.EmployeeContactList = employeeContactList;

            return(View(viewModel));
        }