public async Task <IActionResult> Create( [Bind("Id,Period,Title,Description,CreateData,CompletionDate,UserId")] AllTask allTask) { if (!ModelState.IsValid) { return(View(allTask)); } //Значение = текущий пользователь в системе. allTask.UserId = this.User.FindFirstValue(ClaimTypes.NameIdentifier); switch (allTask.Period) { //Определение даты создания и даты окончания задачи. case "Day": allTask.CreateData = DateTime.Now; allTask.CompletionDate = DateTime.Now.AddDays(1); break; case "Week": allTask.CreateData = DateTime.Now; allTask.CompletionDate = DateTime.Now.AddDays(7); break; case "Month": allTask.CreateData = DateTime.Now; allTask.CompletionDate = DateTime.Now.AddMonths(1); break; } _context.Add(allTask); await _context.SaveChangesAsync(); return(RedirectToAction(nameof(Index))); }
public IActionResult VertifyPeriod(AllTask allTask) { //Вычисляем сколько задач создано на каждый период у каждого пользователя. var userId = this.User.FindFirstValue(ClaimTypes.NameIdentifier); var userTasks = from tasks in _context.AllTask where tasks.UserId == userId select tasks; var countDayPeriod = userTasks.Count(s => s.Period.StartsWith("Day")); var countWeekPeriod = userTasks.Count(s => s.Period.StartsWith("Week")); var countMonthPeriod = userTasks.Count(s => s.Period.StartsWith("Month")); switch (allTask.Period) { case "Day": return(countDayPeriod < 3 ? Json(true) : Json($"Нельзя создать более 3 задач на день!")); case "Week": return(countWeekPeriod < 3 ? Json(true) : Json($"Нельзя создать более 3 задач на неделю!")); case "Month": return(countMonthPeriod < 3 ? Json(true) : Json($"Нельзя создать более 3 задач на месяц!")); default: return(Json($"Неправильное значение периода!")); } }
//创建任务 protected Task CreateTask(TEnum type, TTarget target) { int enumIndex = Enum <TEnum> .Int(type); if (target == null) { return(null); } if (Targets.Contains(target)) { foreach (var item in AllTask) { if (item.Target == target) { return(item); } } return(null); } if (!ConfigData[enumIndex].Valid.Invoke(target)) { return(null); } var obj = new Task(); AllTask.Add(obj); Targets.Add(target); TypedTask[enumIndex].Add(obj); obj.Init(type, target, this); return(obj); }
public void AddUpdateAllTask(AllTask allTask) { try { this.allTaskRepository.Add(allTask); this.allTaskRepository.Save(); } catch (Exception e) { throw e; } }
public void AddUpdateTask(AllTask task) { if (task != null && task.TaskId > 0) { var _task = tasksRepository.GetByID(task.TaskId); _task.TaskName = task.TaskName; _task.TaskType = task.TaskType; } else { tasksRepository.Add(task); } tasksRepository.Save(); }
public void Update() { if (SelfBaseUnit.IsSystem) { return; } //更新用户数据 OnUpdateCustomData(); //更新任务 OnUpdateTask(); //计算任务的重要程度,消除无效的任务 AllTask.ForSafe(item => { if (!item.IsValid()) { var units = CancelTask(item); ConfigData[item.EnumIndex].OnInvalid?.Invoke(item, units); } else { item.CalcImportant(); } }); //更新空闲单位 UpdateIdle(); //分配任务 Enum <TEnum> .For(e => { int enumIndex = Enum <TEnum> .Int(e); //排序任务 TypedTask[enumIndex].Sort((x, y) => { return(x.Importance > y.Importance ? -1 : 1); }); //给任务分配执行者 while ( IsHaveIdle(e) && IsHaveTask(e) && !IsInMaxAsdCount(e) ) { var objAction = NextTask(e); bool succ = AddUnitToTask(objAction); if (!succ) { break; } } }); }
//取消指定的任务 List <TUnit> CancelTask(Task objAction) { List <TUnit> tempUnits = null; AllTask.Remove(objAction); Targets.Remove(objAction.Target); Enum <TEnum> .ForIndex(x => { TypedTask[x].Remove(objAction); }); var units = GetExcuteUnits(objAction); if (units != null) { tempUnits = units.ToList(); foreach (var item in tempUnits) { RemoveUnitFromTask(item); } } return(tempUnits); }
public void Put(AllTask allTask) { this.allTaskService.AddUpdateAllTask(allTask); }
/// <summary> /// 异步获取AB包 /// </summary> /// <param name="path"></param> private IProgress LoadAssetBundleAsync(string path, Action <AssetBundle> callBack) { string abKey = Path2Key(path); if (!m_ABDic.TryGetValue(abKey, out AssetBundle ab)) { AssetBundleCreateRequest mainRequest = AssetBundle.LoadFromFileAsync(Convert2FullPath(abKey)); m_LoadingAB.Add(abKey, mainRequest); // 添加任务列表 List <AssetBundleCreateRequest> requests = new List <AssetBundleCreateRequest> { mainRequest }; //string[] dependencies = m_Mainfest.GetAllDependencies(path + ".ab"); string[] dependencies = m_DependenceInfo.GetAllDependencies(abKey + m_Variant); foreach (var name in dependencies) { string key = GetNoVariantName(name); if (m_ABDic.ContainsKey(key)) { continue; } var request = AssetBundle.LoadFromFileAsync(Convert2FullPath(name)); requests.Add(request); m_LoadingAB.Add(key, request); } ITask[] tasks = new ITask[requests.Count]; for (int i = 0; i < tasks.Length; i++) { int index = i; tasks[index] = new SingleTask(() => { return(requests[index].isDone); }); tasks[index].Then(new SingleTask(() => { string key = GetNoVariantName(requests[index].assetBundle.name); m_ABDic.Add(key, requests[index].assetBundle); m_LoadingAB.Remove(key); return(true); })); } AllTask abTask = new AllTask(tasks); abTask.Then(new SingleTask(() => { callBack.Invoke(mainRequest.assetBundle); return(true); })); abTask.Start(); return(new ResProgress(requests.ToArray())); } else { callBack(ab); return(new DefaultProgress()); } }
/// <summary> /// 异步获取AB包 /// </summary> /// <param name="path"></param> private IProgress GetAssetBundleAsync(string path, System.Action <AssetBundle> callBack) { path = Path2Key(path); path = path.Replace('\\', '/'); if (!m_ABDic.TryGetValue(path, out AssetBundle ab)) { string abName = path; //string abName = string.IsNullOrEmpty(path) ? "" : "/" + path; AssetBundleCreateRequest mainRequest = AssetBundle.LoadFromFileAsync(m_ABPath + "/" + abName + m_Variant); m_LoadingAB.Add(abName, mainRequest); // 添加任务列表 List <AssetBundleCreateRequest> requests = new List <AssetBundleCreateRequest> { mainRequest }; //string[] dependencies = m_Mainfest.GetAllDependencies(path + ".ab"); string[] dependencies = m_DependenceInfo.GetAllDependencies(path + m_Variant); foreach (var name in dependencies) { if (m_ABDic.ContainsKey(Name2Key(name))) { continue; } var request = AssetBundle.LoadFromFileAsync(m_ABPath + "/" + name); requests.Add(request); m_LoadingAB.Add(Name2Key(name), request); } ITask[] tasks = new ITask[requests.Count]; for (int i = 0; i < tasks.Length; i++) { int index = i; tasks[index] = new SingleTask(() => { return(requests[index].isDone); }); tasks[index].Then(new SingleTask(() => { string key = Name2Key(requests[index].assetBundle.name); m_ABDic.Add(key, requests[index].assetBundle); m_LoadingAB.Remove(key); return(true); })); } AllTask abTask = new AllTask(tasks); abTask.Then(new SingleTask(() => { callBack.Invoke(mainRequest.assetBundle); return(true); })); GameEntry.GetModule <TaskManager>().StartTask(abTask); return(new ResProgress(requests.ToArray())); } else { callBack(ab); return(new DefaultProgress()); } }