Beispiel #1
0
        public ActionResult AssignFastTime(Guid id, ViewModels.Tasks.TaskTimeViewModel viewModel)
        {
            // Id is TimeId
            long taskId;

            Common.Models.Timing.Time   model;
            Common.Models.Account.Users currentUser;

            currentUser = Data.Account.Users.Get((Guid)Membership.GetUser().ProviderUserKey);

            taskId = long.Parse(Request["TaskId"]);

            model = Data.Timing.Time.Get(id);

            Data.Timing.Time.RelateTask(model, taskId, currentUser);

            return(RedirectToAction("FastTimeList", "Timing"));
        }
Beispiel #2
0
        public ActionResult Create()
        {
            long taskId;
            int  contactId;

            ViewModels.Tasks.TaskTimeViewModel viewModel;
            Common.Models.Matters.Matter       matter;
            Common.Models.Tasks.Task           task;
            Common.Models.Contacts.Contact     contact;

            // Every TaskTime must be created from a task, so we should always know the TaskId
            taskId    = long.Parse(Request["TaskId"]);
            contactId = int.Parse(Request["ContactId"]);

            // Load task & contact
            task = Data.Tasks.Task.Get(taskId);

            contact = Data.Contacts.Contact.Get(contactId);

            viewModel = new ViewModels.Tasks.TaskTimeViewModel()
            {
                Task = Mapper.Map <ViewModels.Tasks.TaskViewModel>(task),
                Time = new ViewModels.Timing.TimeViewModel()
                {
                    Worker   = Mapper.Map <ViewModels.Contacts.ContactViewModel>(contact),
                    Start    = DateTime.Now,
                    Billable = true
                }
            };

            matter               = Data.Tasks.Task.GetRelatedMatter(task.Id.Value);
            ViewData["Task"]     = task.Title;
            ViewData["TaskId"]   = task.Id;
            ViewData["Matter"]   = matter.Title;
            ViewData["MatterId"] = matter.Id;

            return(View(viewModel));
        }
        public ActionResult Create()
        {
            long taskId;
            int contactId;
            ViewModels.Tasks.TaskTimeViewModel viewModel;
            Common.Models.Matters.Matter matter;
            Common.Models.Tasks.Task task;
            Common.Models.Contacts.Contact contact;

            // Every TaskTime must be created from a task, so we should always know the TaskId
            taskId = long.Parse(Request["TaskId"]);
            contactId = int.Parse(Request["ContactId"]);

            // Load task & contact
            task = Data.Tasks.Task.Get(taskId);

            contact = Data.Contacts.Contact.Get(contactId);

            viewModel = new ViewModels.Tasks.TaskTimeViewModel()
            {
                Task = Mapper.Map<ViewModels.Tasks.TaskViewModel>(task),
                Time = new ViewModels.Timing.TimeViewModel()
                {
                    Worker = Mapper.Map<ViewModels.Contacts.ContactViewModel>(contact),
                    Start = DateTime.Now,
                    Billable = true
                }
            };

            matter = Data.Tasks.Task.GetRelatedMatter(task.Id.Value);
            ViewData["Task"] = task.Title;
            ViewData["TaskId"] = task.Id;
            ViewData["Matter"] = matter.Title;
            ViewData["MatterId"] = matter.Id;

            return View(viewModel);
        }
        public ActionResult Create()
        {
            long taskId;
            int contactId;
            Common.Models.Account.Users currentUser;
            ViewModels.Tasks.TaskTimeViewModel viewModel;
            Common.Models.Matters.Matter matter;
            Common.Models.Tasks.Task task;
            Common.Models.Contacts.Contact contact;
            Common.Models.Timing.TimeCategory timeCategory = null;
            List<Common.Models.Timing.TimeCategory> timeCategoryList;

            // Every TaskTime must be created from a task, so we should always know the TaskId
            taskId = long.Parse(Request["TaskId"]);
            contactId = int.Parse(Request["ContactId"]);

            using (IDbConnection conn = Data.Database.Instance.GetConnection())
            {
                // Load task & contact
                currentUser = Data.Account.Users.Get(User.Identity.Name);
                task = Data.Tasks.Task.Get(taskId, conn, false);

                contact = Data.Contacts.Contact.Get(contactId, conn, false);

                timeCategory = Data.Timing.TimeCategory.Get(1, conn, false);

                if (timeCategory == null || !timeCategory.Id.HasValue)
                {
                    timeCategory = Data.Timing.TimeCategory.Create(new Common.Models.Timing.TimeCategory()
                    {
                        Title = "Standard"
                    }, currentUser);
                }

                viewModel = new ViewModels.Tasks.TaskTimeViewModel()
                {
                    Task = Mapper.Map<ViewModels.Tasks.TaskViewModel>(task),
                    Time = new ViewModels.Timing.TimeViewModel()
                    {
                        Worker = Mapper.Map<ViewModels.Contacts.ContactViewModel>(contact),
                        TimeCategory = Mapper.Map<ViewModels.Timing.TimeCategoryViewModel>(timeCategory),
                        Start = DateTime.Now,
                        Billable = true
                    }
                };

                matter = Data.Tasks.Task.GetRelatedMatter(task.Id.Value, conn, false);

                timeCategoryList = Data.Timing.TimeCategory.List(conn, false);
                timeCategoryList.Insert(0, new Common.Models.Timing.TimeCategory()
                {
                    Id = 0,
                    Title = "Standard"
                });

                viewModel.Time.TimeCategory.Id = 0;
            }

            ViewBag.Task = task;
            ViewBag.Matter = matter;
            ViewBag.TimeCategoryList = timeCategoryList;

            return View(viewModel);
        }
        public ActionResult Create()
        {
            long taskId;
            int  contactId;

            Common.Models.Account.Users              currentUser;
            ViewModels.Tasks.TaskTimeViewModel       viewModel;
            Common.Models.Matters.Matter             matter;
            Common.Models.Tasks.Task                 task;
            Common.Models.Contacts.Contact           contact;
            Common.Models.Timing.TimeCategory        timeCategory = null;
            List <Common.Models.Timing.TimeCategory> timeCategoryList;

            // Every TaskTime must be created from a task, so we should always know the TaskId
            taskId    = long.Parse(Request["TaskId"]);
            contactId = int.Parse(Request["ContactId"]);

            using (IDbConnection conn = Data.Database.Instance.GetConnection())
            {
                // Load task & contact
                currentUser = Data.Account.Users.Get(User.Identity.Name);
                task        = Data.Tasks.Task.Get(taskId, conn, false);

                contact = Data.Contacts.Contact.Get(contactId, conn, false);

                timeCategory = Data.Timing.TimeCategory.Get(1, conn, false);

                if (timeCategory == null || !timeCategory.Id.HasValue)
                {
                    timeCategory = Data.Timing.TimeCategory.Create(new Common.Models.Timing.TimeCategory()
                    {
                        Title = "Standard"
                    }, currentUser);
                }

                viewModel = new ViewModels.Tasks.TaskTimeViewModel()
                {
                    Task = Mapper.Map <ViewModels.Tasks.TaskViewModel>(task),
                    Time = new ViewModels.Timing.TimeViewModel()
                    {
                        Worker       = Mapper.Map <ViewModels.Contacts.ContactViewModel>(contact),
                        TimeCategory = Mapper.Map <ViewModels.Timing.TimeCategoryViewModel>(timeCategory),
                        Start        = DateTime.Now,
                        Billable     = true
                    }
                };

                matter = Data.Tasks.Task.GetRelatedMatter(task.Id.Value, conn, false);

                timeCategoryList = Data.Timing.TimeCategory.List(conn, false);
                timeCategoryList.Insert(0, new Common.Models.Timing.TimeCategory()
                {
                    Id    = 0,
                    Title = "Standard"
                });

                viewModel.Time.TimeCategory.Id = 0;
            }

            ViewBag.Task             = task;
            ViewBag.Matter           = matter;
            ViewBag.TimeCategoryList = timeCategoryList;

            return(View(viewModel));
        }
        public ActionResult Create(ViewModels.Tasks.TaskTimeViewModel viewModel)
        {
            Common.Models.Account.Users              currentUser;
            Common.Models.Tasks.TaskTime             taskTime;
            List <Common.Models.Timing.TimeCategory> timeCategoryList;

            using (Data.Transaction trans = Data.Transaction.Create(true))
            {
                try
                {
                    currentUser   = Data.Account.Users.Get(User.Identity.Name);
                    taskTime      = Mapper.Map <Common.Models.Tasks.TaskTime>(viewModel);
                    taskTime.Time = Mapper.Map <Common.Models.Timing.Time>(viewModel.Time);

                    if (viewModel.Time.Stop.HasValue)
                    {
                        List <Common.Models.Timing.Time> conflicts = Data.Timing.Time.ListConflictingTimes(viewModel.Time.Start,
                                                                                                           viewModel.Time.Stop.Value, viewModel.Time.Worker.Id.Value);

                        if (conflicts.Count > 0)
                        { // conflict found
                            long   taskId;
                            int    contactId;
                            string errorListString = "";
                            Common.Models.Tasks.Task       task;
                            Common.Models.Contacts.Contact contact;
                            Common.Models.Matters.Matter   matter;

                            taskId    = long.Parse(Request["TaskId"]);
                            contactId = int.Parse(Request["ContactId"]);
                            task      = Data.Tasks.Task.Get(taskId);
                            contact   = Data.Contacts.Contact.Get(contactId);
                            matter    = Data.Tasks.Task.GetRelatedMatter(taskId);

                            timeCategoryList = Data.Timing.TimeCategory.List(trans);
                            timeCategoryList.Insert(0, new Common.Models.Timing.TimeCategory()
                            {
                                Id    = 0,
                                Title = "Standard"
                            });

                            viewModel.Task        = Mapper.Map <ViewModels.Tasks.TaskViewModel>(task);
                            viewModel.Time.Worker = Mapper.Map <ViewModels.Contacts.ContactViewModel>(contact);

                            ViewBag.Task             = task;
                            ViewBag.Matter           = matter;
                            ViewBag.TimeCategoryList = timeCategoryList;

                            foreach (Common.Models.Timing.Time time in conflicts)
                            {
                                time.Worker      = Data.Contacts.Contact.Get(time.Worker.Id.Value);
                                errorListString += "<li>" + time.Worker.DisplayName +
                                                   "</a> worked from " + time.Start.ToString("M/d/yyyy h:mm tt");

                                if (time.Stop.HasValue)
                                {
                                    errorListString += " to " + time.Stop.Value.ToString("M/d/yyyy h:mm tt") +
                                                       " [<a href=\"/Timing/Edit/" + time.Id.Value.ToString() + "\">edit</a>]";
                                }
                                else
                                {
                                    errorListString += " to an unknown time " +
                                                       "[<a href=\"/Timing/Edit/" + time.Id.Value.ToString() + "\">edit</a>]";
                                }

                                errorListString += "</li>";
                            }

                            ViewBag.ErrorMessage = "Time conflicts with the following other time entries:<ul>" + errorListString + "</ul>";
                            return(View(viewModel));
                        }
                    }

                    taskTime.Time = Data.Timing.Time.Create(taskTime.Time, currentUser);
                    taskTime      = Data.Tasks.TaskTime.Create(taskTime, currentUser);

                    trans.Commit();

                    return(RedirectToAction("Time", "Tasks", new { Id = Request["TaskId"] }));
                }
                catch
                {
                    trans.Rollback();
                    return(RedirectToAction("Create", "TaskTime", new { TaskId = Request["TaskId"], ContactId = Request["ContactId"] }));
                }
            }
        }