public ActionResult Generate(List <AppointDTO> model) { int task_id = 0; if (model.Count != 0) { task_id = int.Parse(model.First().task_id); foreach (var appointment in model) { /* * 1. поищем в бд такую запись, который имеет предоставленный таск айди и ресурс айди * 2. если поиск дал результат, и флажок отмечен (status==true): то обновляем даты аппойнтментов найденной записи * 3. если поиск дал результат, но флажок не отмечен: то удаляем найденную запись в бд * 4. если поиск не дал результатов, но флажок отмечен : добавляем новую запись в бд * 5. если поиск не дал результатов, и флажок не отмечен : ничего не делаем * 6. коммитим все изменения в базу */ var resource_id = int.Parse(appointment.resource_id); //1 var found = unitOfWork.ResInTasksRepository.Get(x => x.resource_id == resource_id && x.task_id == task_id).SingleOrDefault(); if (appointment.status.ToLower().Equals("false")) { if (found != null) //3 { unitOfWork.ResInTasksRepository.Delete(found); } } else { if (found != null) //2 { found.date_from = DateTime.ParseExact(appointment.start_date, "yyyy-MM-dd", CultureInfo.InvariantCulture); found.date_to = DateTime.ParseExact(appointment.end_date, "yyyy-MM-dd", CultureInfo.InvariantCulture); unitOfWork.ResInTasksRepository.Update(found); } else //4 { unitOfWork.ResInTasksRepository.Insert(AppointMapper.MapViewModelToItem(appointment)); } } } unitOfWork.Save(); //6 } return(Json(Url.Action("Generated", "Tasks", new { id = task_id }))); //@"TODO: return url.action('Generated', 'Tasks', task_id) | and use this url in 'window.href.location' part of the ajax.success in the view"); }
public ActionResult Appoint(int id) { AppointViewModel model = new AppointViewModel(); model.Task = TaskMapper.MapItemToViewModel(unitOfWork.TasksRepository.GetByID(id)); var rits = unitOfWork.ResInTasksRepository.Get(x => x.task_id == id, includeProperties: "Resource,Task"); if (rits != null) { model.Resources = AppointMapper.MapItemsToViewModel(rits); } else { model.Resources = new List <ResourceInTaskVM>(); } model.AllResources = ResourceMapper.MapItemToViewModel(unitOfWork.ResourcesRepository.Get() .Where(r => !model.Resources.Any(vm => vm.Resource.Id == r.resource_id))); return(PartialView("_Appoint", model)); }
public ActionResult Appointments() { //var model = AppointMapper.MapAllItemsToViewModel( // unitOfWork.ResInTasksRepository.Get(includeProperties: "Resource,Task"), // unitOfWork.ResourcesRepository.Get()); var model = new List <AppointViewModel>(); var rits = unitOfWork.ResInTasksRepository.Get(includeProperties: "Resource,Task"); foreach (var item in rits.GroupBy(rit => rit.task_id).Select(g => g.First())) { IEnumerable <ResourceInTaskVM> resources = rits.Where(rit => rit.task_id == item.task_id).Select(x => AppointMapper.MapItemToViewModel(x)).ToList(); model.Add(new AppointViewModel { Task = TaskMapper.MapItemToViewModel(item.Task), Resources = resources.ToList(), AllResources = ResourceMapper.MapItemToViewModel(unitOfWork.ResourcesRepository.Get().Where(r => !resources.Any(vm => vm.Resource.Id == r.resource_id))) }); } return(View(model)); }