public ActionResult FastTime(ViewModels.Timing.TimeViewModel viewModel) { Common.Models.Account.Users currentUser; Common.Models.Timing.Time model; currentUser = Data.Account.Users.Get(User.Identity.Name); model = Mapper.Map <Common.Models.Timing.Time>(viewModel); model = Data.Timing.Time.Create(model, currentUser); return(RedirectToAction("Details", new { Id = model.Id })); }
public ActionResult Details(long id) { ViewModels.Tasks.TaskViewModel viewModel; Common.Models.Tasks.Task model; Common.Models.Matters.Matter matter; using (IDbConnection conn = Data.Database.Instance.GetConnection()) { model = Data.Tasks.Task.Get(id, conn, false); viewModel = Mapper.Map <ViewModels.Tasks.TaskViewModel>(model); viewModel.Notes = new List <ViewModels.Notes.NoteViewModel>(); Data.Notes.NoteTask.ListForTask(id, conn, false).ForEach(x => { viewModel.Notes.Add(Mapper.Map <ViewModels.Notes.NoteViewModel>(x)); }); viewModel.Times = new List <ViewModels.Timing.TimeViewModel>(); Data.Timing.Time.ListForTask(id, conn, false).ForEach(x => { x.Worker = Data.Contacts.Contact.Get(x.Worker.Id.Value, conn, false); ViewModels.Timing.TimeViewModel vm = Mapper.Map <ViewModels.Timing.TimeViewModel>(x); vm.Worker = Mapper.Map <ViewModels.Contacts.ContactViewModel>(x.Worker); viewModel.Times.Add(vm); }); PopulateCoreDetails(viewModel, conn); if (model.Parent != null && model.Parent.Id.HasValue) { model.Parent = Data.Tasks.Task.Get(model.Parent.Id.Value, conn, false); viewModel.Parent = Mapper.Map <ViewModels.Tasks.TaskViewModel>(model.Parent); } if (model.SequentialPredecessor != null && model.SequentialPredecessor.Id.HasValue) { model.SequentialPredecessor = Data.Tasks.Task.Get(model.SequentialPredecessor.Id.Value, conn, false); viewModel.SequentialPredecessor = Mapper.Map <ViewModels.Tasks.TaskViewModel>(model.SequentialPredecessor); } matter = Data.Tasks.Task.GetRelatedMatter(model.Id.Value, conn, false); } ViewBag.Matter = matter; return(View(viewModel)); }
public ActionResult Edit(Guid id, ViewModels.Timing.TimeViewModel viewModel) { Common.Models.Account.Users currentUser; Common.Models.Timing.Time model; currentUser = Data.Account.Users.Get(User.Identity.Name); model = Mapper.Map <Common.Models.Timing.Time>(viewModel); if (model.Stop.HasValue) { List <Common.Models.Timing.Time> conflicts = Data.Timing.Time.ListConflictingTimes(model.Start, model.Stop.Value, model.Worker.Id.Value); if (conflicts.Count > 1 || (conflicts.Count == 1 && conflicts[0].Id != id)) { // conflict found Common.Models.Contacts.Contact contact; Common.Models.Tasks.Task task; Common.Models.Matters.Matter matter; contact = Data.Contacts.Contact.Get(viewModel.Worker.Id.Value); viewModel.Worker = Mapper.Map <ViewModels.Contacts.ContactViewModel>(contact); task = Data.Timing.Time.GetRelatedTask(model.Id.Value); ModelState.AddModelError(String.Empty, "Time conflicts with other time entries."); 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)); } } model = Data.Timing.Time.Edit(model, currentUser); return(RedirectToAction("Details", new { Id = id })); }
public ActionResult Edit(Guid id, ViewModels.Timing.TimeViewModel viewModel) { Common.Models.Account.Users currentUser; Common.Models.Timing.Time model; List <Common.Models.Timing.TimeCategory> timeCategoryList; using (Data.Transaction trans = Data.Transaction.Create(true)) { try { currentUser = Data.Account.Users.Get(trans, User.Identity.Name); model = Mapper.Map <Common.Models.Timing.Time>(viewModel); if (model.Stop.HasValue) { List <Common.Models.Timing.Time> conflicts = Data.Timing.Time.ListConflictingTimes(trans, model.Start, model.Stop.Value, model.Worker.Id.Value); if (conflicts.Count > 1 || (conflicts.Count == 1 && conflicts[0].Id != id)) { // conflict found Common.Models.Contacts.Contact contact; Common.Models.Tasks.Task task; Common.Models.Matters.Matter matter; string errorListString = ""; List <ViewModels.Contacts.ContactViewModel> employeeContactList; contact = Data.Contacts.Contact.Get(trans, viewModel.Worker.Id.Value); viewModel.Worker = Mapper.Map <ViewModels.Contacts.ContactViewModel>(contact); task = Data.Timing.Time.GetRelatedTask(trans, model.Id.Value); 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>"; //ModelState.AddModelError(String.Empty, "Time conflicts with other time entries."); matter = Data.Tasks.Task.GetRelatedMatter(trans, task.Id.Value); timeCategoryList = Data.Timing.TimeCategory.List(trans); timeCategoryList.Insert(0, new Common.Models.Timing.TimeCategory() { Id = 0, Title = "Standard" }); employeeContactList = new List <ViewModels.Contacts.ContactViewModel>(); Data.Contacts.Contact.ListEmployeesOnly(trans).ForEach(x => { employeeContactList.Add(Mapper.Map <ViewModels.Contacts.ContactViewModel>(x)); }); ViewBag.Task = task; ViewBag.Matter = matter; ViewBag.TimeCategoryList = timeCategoryList; ViewBag.EmployeeContactList = employeeContactList; return(View(viewModel)); } } model = Data.Timing.Time.Edit(trans, model, currentUser); trans.Commit(); return(RedirectToAction("Details", new { Id = id })); } catch { trans.Rollback(); return(Edit(id)); } } }