Esempio n. 1
0
        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)));
        }
Esempio n. 2
0
        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($"Неправильное значение периода!"));
            }
        }
Esempio n. 3
0
        //创建任务
        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;
     }
 }
Esempio n. 5
0
 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();
 }
Esempio n. 6
0
 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;
             }
         }
     });
 }
Esempio n. 7
0
        //取消指定的任务
        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);
        }
Esempio n. 8
0
 public void Put(AllTask allTask)
 {
     this.allTaskService.AddUpdateAllTask(allTask);
 }
Esempio n. 9
0
        /// <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());
            }
        }