Пример #1
0
        protected override void HandleActivity(ActivityModel activity, GameViewModel state)
        {
            ActivityType activityType = (ActivityType)Enum.Parse(typeof(ActivityType), activity.Type);

            switch (activityType)
            {
                case ActivityType.PlayActions:
                case ActivityType.DoBuys:
                    _client.AcceptMessage(DoTurn(state));
                    break;
                case ActivityType.SelectFixedNumberOfCards:
                    {
                        int cardsToDiscard = int.Parse(activity.Properties["NumberOfCardsToSelect"].ToString());
                        DiscardCards(cardsToDiscard, state);
                        break;
                    }
                case ActivityType.SelectFromRevealed:
                    {
                        SelectFromRevealed(activity, state);
                        break;
                    }
                case ActivityType.MakeChoice:
                    {
                        MakeChoice(activity, state);
                        break;
                    }
            }
        }
 protected override IEnumerable<CardViewModel> PrioritiseCards(GameViewModel state, ActivityModel activity)
 {
     return state.Hand
         .OrderByDescending(c => c.Is(CardType.Treasure) == false)
         .ThenByDescending(c => c.Is(CardType.Action) == false)
         .ThenBy(c => c.Cost);
 }
 protected override IEnumerable<CardViewModel> PrioritiseCards(GameViewModel state, ActivityModel activity)
 {
     return state.Hand
         .OrderByDescending(c => c.Is(CardType.Curse))
         .ThenByDescending(c => c.Is<Estate>())
         .ThenBy(c => c.Cost);
 }
Пример #4
0
 public override bool CanRespond(ActivityModel activity, GameViewModel state)
 {
     var potionPile = state.Bank.SingleOrDefault(p => p.Is<Potion>());
     return base.CanRespond(activity, state)
            && potionPile != null
            && potionPile.CanBuy
            && state.Status.AvailableSpend.Money == potionPile.Cost;
 }
        public void Respond(IGameClient client, ActivityModel activity, GameViewModel state)
        {            
            if(!_enumerator.Current.CanRespond(activity, state))
                _enumerator.MoveNext();

            _enumerator.Current.Respond(client, activity, state);
            _enumerator.MoveNext();
        }
Пример #6
0
        public void Respond(IGameClient client, ActivityModel activity, GameViewModel state)
        {
            var pile = SelectPile(state);

            TalkSmack(pile, client);
            var message = new BuyCardMessage(client.PlayerId, pile.Id);            
            client.AcceptMessage(message);
        }
Пример #7
0
        public async Task <bool> UpdateProfileAsync(IFormCollection formData)
        {
            var loggedInUserId = GetLoggedInUserId();
            var user           = await _userManager.FindByIdAsync(loggedInUserId);

            if (user == null)
            {
                return(false);
            }

            if (user.UserName != _cookieSvc.Get("username") ||
                user.UserName != formData["username"].ToString() ||
                user.Email != formData["email"].ToString())
            {
                return(false);
            }

            try
            {
                ActivityModel activityModel = new ActivityModel {
                    UserId = user.Id
                };
                await UpdateProfilePicAsync(formData, user);

                user.Firstname        = formData["firstname"];
                user.Birthday         = formData["birthdate"];
                user.Lastname         = formData["lastname"];
                user.Middlename       = formData["middlename"];
                user.DisplayName      = formData["displayname"];
                user.PhoneNumber      = formData["phone"];
                user.Gender           = formData["gender"];
                user.TwoFactorEnabled = Convert.ToBoolean(formData["IsTwoFactorOn"]);

                /* If Addresses exist we update them => If Addresses do not exist we add them */
                await InsertOrUpdateAddress(user.Id, "Shipping", formData["saddress1"], formData["saddress2"], formData["scountry"], formData["sstate"], formData["scity"], formData["spostalcode"], formData["sunit"]);
                await InsertOrUpdateAddress(user.Id, "Billing", formData["address1"], formData["address2"], formData["country"], formData["state"], formData["city"], formData["postalcode"], formData["unit"]);

                await _userManager.UpdateAsync(user);

                activityModel.Date            = DateTime.UtcNow;
                activityModel.IpAddress       = _cookieSvc.GetUserIP();
                activityModel.Location        = _cookieSvc.GetUserCountry();
                activityModel.OperatingSystem = _cookieSvc.GetUserOS();
                activityModel.Type            = "Profile update successful";
                activityModel.Icon            = "fas fa-thumbs-up";
                activityModel.Color           = "success";
                await _activitySvc.AddUserActivity(activityModel);

                return(true);
            }
            catch (Exception ex)
            {
                Log.Error("An error occurred while updating profile {Error} {StackTrace} {InnerException} {Source}",
                          ex.Message, ex.StackTrace, ex.InnerException, ex.Source);
            }
            return(false);
        }
Пример #8
0
        public IActionResult Create()
        {
            var activity = new ActivityModel
            {
                ActivityID = _context.Activity.Count() + 1
            };

            return(View(activity));
        }
Пример #9
0
        public void Respond(IGameClient client, ActivityModel activity, GameViewModel state)
        {
            var idsToTrash = state.Hand.Where(c => c.Is <Curse>() || c.Is <Copper>() || c.Is <Estate>())
                             .Select(c => c.Id)
                             .Take(activity.ParseNumberOfCardsToSelect())
                             .ToArray();

            client.AcceptMessage(new SelectCardsMessage(client.PlayerId, idsToTrash));
        }
        public async Task AddActivityCountToUser(ActivityModel activity)
        {
            var user = await GetCurrentUser();

            if (CrossConnectivity.Current.IsConnected)
            {
                await _firebaseClient.Child(UserChild).Child(user.Key).Child("Coffee consumption").PostAsync(activity);
            }
        }
Пример #11
0
        protected virtual void MakeChoice(ActivityModel activity, GameViewModel state)
        {
            IEnumerable<string> options = (IEnumerable<string>)activity.Properties["AllowedOptions"];

            var choice = options.FirstOrDefault(x => x == "Yes") ??
                         options.First();

            _client.AcceptMessage(new ChoiceMessage(_client.PlayerId, choice));
        }
        public ActionResult Index()
        {
            ActivityModel vm = new ActivityModel();

            vm.ActList   = db.tActivityList.ToList();
            ViewBag.city = db.tCityCountry.Where(c => c.fCC_Dad == 1).ToList();

            return(View(vm));
        }
Пример #13
0
        public async void SendMessageToCrmQueue(ActivityModel messageBody)
        {
            queueClient = new QueueClient(ServiceBusConnectionString, QueueName);
            //messageBody = $"Message test";
            var message = new Message(Encoding.UTF8.GetBytes(messageBody.Firstname + " " + messageBody.Lastname));

            // Send the message to the queue
            await queueClient.SendAsync(message);
        }
Пример #14
0
 public async void ShowActivityView(ActivityModel activity)
 {
     var view = new ActivityView();
     var viewModel = ViewModelLocator.ActivityViewModel;
     await viewModel.LoadData(activity.ID);
     view.DataContext = viewModel;
     view.LoadMap();
     ContentFrame = view;
 }
Пример #15
0
 public ActivityPlanningBusiness(string name, DateTime plannedDate, List <int> attendees, int homeId)
 {
     activityModel                 = new ActivityModel();
     activityModel.Name            = name;
     activityModel.PlannedDate     = plannedDate;
     activityModel.Attendees       = attendees;
     activityModel.AttendeesString = activityModel.GetAttendeesListAsString();
     activityModel.HomeId          = homeId;
 }
Пример #16
0
 public ActivityModel GetActivityByKey(string key)
 {
     if (!string.IsNullOrEmpty(key))
     {
         ActivityModel model = ActivityDal.GetActivityByKey(key);
         return(model);
     }
     return(null);
 }
Пример #17
0
        public Clue Create(ActivityModel value)
        {
            if (value == null)
            {
                throw new ArgumentNullException(nameof(value));
            }

            return(this.Create(EntityType.Activity, value.Object.Id.UniqueId));
        }
        protected override IEnumerable<CardViewModel> PrioritiseCards(GameViewModel state, ActivityModel activity)
        {

            return state.Hand
                .Where(c => !activity.HasTypeRestriction() || c.Types.Contains(activity.ParseTypeRestriction()))                
                .OrderByDescending(c => c.Is(CardType.Treasure) == false)
                .ThenByDescending(c => c.Is(CardType.Action) == false)
                .ThenBy(c => c.Cost);
        }
        public void Respond(IGameClient client, ActivityModel activity, GameViewModel state)
        {
            var idsToTrash = state.Hand.Where(c => c.Is<Curse>() || c.Is<Copper>() || c.Is<Estate>())
                .Select(c => c.Id)
                .Take(activity.ParseNumberOfCardsToSelect())
                .ToArray();

            client.AcceptMessage(new SelectCardsMessage(client.PlayerId, idsToTrash));
        }
Пример #20
0
        internal CustomActivity(ActivityModel model) : base(model)
        {
            Text = model.State;

            if (model.Emoji != null)
            {
                Emoji = model.Emoji.ToEmoji();
            }
        }
Пример #21
0
        public string SelectActivity(ActivityModel am)
        {
            base.DataAccess();
            base.Connect();
            string Query = "select Metabolism from Activities where Id = '" + am.Id + "'";
            string b     = base.ExecuteSelect(Query);

            base.DisConnect();
            return(b);
        }
        public void Respond(IGameClient client, ActivityModel activity, GameViewModel state)
        {
            while (!_enumerator.Current.CanRespond(activity, state))
            {
                _enumerator.MoveNext();
            }

            _enumerator.Current.Respond(client, activity, state);
            _enumerator.MoveNext();
        }
        public IActionResult Put(int id, [FromBody] ActivityModel updatedActivity)
        {
            var activity = _activityService.Update(updatedActivity.ToDomainModel());

            if (activity == null)
            {
                return(NotFound());
            }
            return(Ok(activity.ToApiModel()));
        }
        private void button1_Click(object sender, EventArgs e)
        {
            var absenceActivity = new ActivityModel(
                TitleBoxSelector.Text, ReasonComboBoxSelector.Text,
                StartDateSelector.Value,
                EndDateSelector.Value);
            var sEvent = new SubmitEvent(absenceActivity);

            OnSaveClicked?.Invoke(this, sEvent);
        }
        protected override IEnumerable<CardViewModel> PrioritiseCards(GameViewModel state, ActivityModel activity)
        {
            var actions = state.Hand
              .Where(c => c.Is(CardType.Action))
              .Where(c => AISupportedActions.All.Contains(c.Name))
              .OrderByDescending(c => c.Cost)
              .Take(activity.ParseNumberOfCardsToSelect());

            return actions;
        }       
Пример #26
0
        private JsonObject ConvertDueOnRule(ActivityModel formerModel)
        {
            var json = new JsonObject();

            json.Add("term", formerModel.DueOnTerm);
            json.Add("termUnit", formerModel.DueOnTermUnit);
            json.Add("condition", formerModel.DueOnCondition);

            return(json);
        }
Пример #27
0
        public async Task <IActionResult> AddActivity(Guid workoutId, [FromBody] ActivityModel model)
        {
            var userId = _userManager.GetUserId(User);

            model.ActivityId = Guid.Empty; // force new activity
            model.WorkoutId  = workoutId;
            var response = await _workoutsOrchestrator.CompleteActivity(model, userId);

            return(Ok(response));
        }
 public ActionResult Edit([Bind(Include = "Activity_Key,Name,Description,NameDesc,DescName,Perform_Standard,Work_Unit,WorkComp_Key,UOM_Key,Work_Methods,Inspection,Authorize,Active,User1,User2,User3,User4,User5,User6,User7,User8,User9,User10,CreateDate,DateStamp,SecurityUser_Key")] ActivityModel activityModel)
 {
     if (ModelState.IsValid)
     {
         db.Entry(activityModel).State = EntityState.Modified;
         db.SaveChanges();
         return(RedirectToAction("Index"));
     }
     return(View(activityModel));
 }
Пример #29
0
 public ActionResult Index(int? userid, int? peopleid, int? orgid)
 {
     var m = new ActivityModel
     {
         UserId = userid, 
         PeopleId = peopleid,
         OrgId = orgid,
     };
     return View(m);
 }
Пример #30
0
 private void InitializeActivityModel()
 {
     activityModel = Platforms.PSN.GetUserActivity(Program.AccessToken, true); //Initialize Activity.
     activityModel.OnGameChangedEvent                += OnGameChangedEvent;    //Initialize Events
     activityModel.OnGameCloseEvent                  += OnGameCloseEvent;
     activityModel.OnOnlineStatusChangedEvent        += OnOnlineStatusChangedEvent;
     activityModel.OnPrimaryOnlineStatusChangedEvent += OnPrimaryOnlineStatusChangedEvent;
     activityModel.OnPlatformChangedEvent            += OnPlatformChangedEvent;
     activityModel.OnGameStatusChangedEvent          += OnGameStatusChangedEvent;
 }
Пример #31
0
        public void CreateActivity(ActivityModel model)
        {
            Log.InfoFormat("SalesForce CreateActivity\n {0}", model.ToStringExtension());
            ApiResponse response = new ApiResponse();

            if (!response.IsSuccess)
            {
                Log.ErrorFormat("SalesForce CreateActivity failed for customer {0}, error: {1}", model.Email, response.Error);
            }
        }
Пример #32
0
        private ActivityModel GetActivityWithoutEnquiry()
        {
            var activityModel = new ActivityModel(new Data.Model.Activity()
            {
                ID   = Guid.NewGuid(),
                Date = DateTime.Now,
            });

            return(activityModel);
        }
Пример #33
0
 public bool Update(ActivityModel activityModel)
 {
     return(LogIfOperationFailed(() =>
     {
         Activity activity = ActivityMapper.ConvertModelToEntity(activityModel);
         _unitOfWork.ActivityRepository.InsertOrUpdate(activity);
         _unitOfWork.Commit();
         return true;
     }, Resources.ExceptionUpdateActivity, activityModel.Name));
 }
Пример #34
0
        private ActivityModel GetActivity()
        {
            var activityModel = new ActivityModel(new Data.Model.Activity()
            {
                ID        = Guid.NewGuid(),
                EnquiryID = _enquiry.Enquiry.ID,
                Date      = DateTime.Now,
            });

            return(activityModel);
        }
Пример #35
0
        //获取符合活动规则的券
        public ResultObj <List <PrivilegeModel> > GetActivityPrivilegeList(string clientId = "", string activityType = "")
        {
            ActivityModel activityInfo = new ActivityModel();

            activityInfo.ClientId     = clientId;
            activityInfo.ActivityType = activityType;

            IWechat iwechat = new WechatService();

            return(Content(iwechat.GetActivityPrivilegeList(activityInfo)));
        }
Пример #36
0
        public void Process(ActivityModel activity, Approval approval, string processor, IWorkflowAuthority auth)
        {
            //已经处理过就不能再处理
            if (activity.Value.Status == (int)ActivityProcessStatus.Processed) return;
            //MonitorCache.GetInstance().PushMessage(new CacheMessage { Message = "activityid:" + activity.Value.ID + " next activity status:" + activity.Value.Status.ToString() }, CacheEnum.FormMonitor);
            ISqlMapper mapper = MapperHelper.GetMapper();
            ActivityDao activitydao = new ActivityDao(mapper);
            TaskDao taskdao = new TaskDao(mapper);
            //设置当前活动点状态
            activity.Value.Status = (int)ActivityProcessStatus.Processed;
            activity.Value.ProcessTime = DateTime.Now;
            activity.Value.LastUpdator = processor;
            activitydao.Update(new ActivityUpdateForm
            {
                Entity = new Activity { Status = activity.Value.Status, ProcessTime = activity.Value.ProcessTime, LastUpdator = activity.Value.LastUpdator },
                ActivityQueryForm = new ActivityQueryForm { ID = activity.Value.ID }
            });
            var task = activity.GetUserProcessingTask(processor);
            if (task == null) throw new Exception("环节中没有你的任务,无法进行审批操作");
            task.Status = (int)TaskProcessStatus.Processed;
            task.ProcessTime = DateTime.Now;
            task.LastUpdator = processor;
            //处理任务
            taskdao.Update(new TaskUpdateForm
            {
                Entity = new Task { ProcessTime = task.ProcessTime, Status = task.Status, LastUpdator = task.LastUpdator },
                TaskQueryForm = new TaskQueryForm { ID = task.ID },
            });
            //设置下个活动点的状态
            if (activity.Children.Count > 0)
            {
                foreach (var next in activity.Children)
                {
                    string nextactivityid = next.Value.ID;
                    var nextActivityModel = next as ActivityModel;
                    nextActivityModel.Value.Status = (int)ActivityProcessStatus.Processing;
                    nextActivityModel.Value.LastUpdator = processor;
                    activitydao.Update(new ActivityUpdateForm
                    {
                        Entity = new Activity { Status = nextActivityModel.Value.Status, LastUpdator = nextActivityModel.Value.LastUpdator },
                        ActivityQueryForm = new ActivityQueryForm { ID = nextactivityid },
                    });

                    List<string> useridList = auth.GetUserIDList(nextActivityModel.Auth);
                    //新增下个活动点的任务
                    var tasklist = nextActivityModel.GetTask(processor, useridList);
                    foreach (var t in tasklist)
                    {
                        nextActivityModel.Tasks.Add(t);
                        taskdao.Add(t);
                    }
                }
            }
        }
Пример #37
0
        public AddActivityView(EnquiryModel enquiryModel, ActivityModel activity = null)
        {
            InitializeComponent();
            DataContext = ViewModel = new AddActivityViewModel(enquiryModel, activity);

            ViewModel.PropertyChanged += ViewModelOnPropertyChanged;

            Owner = Application.Current.MainWindow;

            Loaded += OnAddActivityViewLoaded;
        }
Пример #38
0
        /// <summary>
        /// Opens up a new page with all the details
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void ListView_ItemSelected(object sender, SelectedItemChangedEventArgs e)
        {
            ActivityModel item = (ActivityModel)e.SelectedItem;

            if (item == null)
            {
                return;
            }

            Navigation.PushAsync(new CpdViewEventPage(item.Id));
        }
Пример #39
0
        public IActionResult Put(int id, [FromBody] ActivityModel updatedActivity)
        {
            // TODO: convert updatedAuthor to a domain model
            var activity = _activityRepository.Update(updatedActivity.ToDomainModel());

            if (activity == null)
            {
                return(NotFound());
            }
            return(Ok(activity));
        }
Пример #40
0
        public static ActivityModel ConvertEntityToModel(Activity activity)
        {
            ActivityModel activityModel = new ActivityModel();

            activityModel.Name         = activity.Title;
            activityModel.Id           = activity.Id;
            activityModel.DeskReview   = activity.DeskReview;
            activityModel.OnsiteReview = activity.OnsiteReview;

            return(activityModel);
        }
Пример #41
0
        public static Activity ConvertModelToEntity(ActivityModel activityModel)
        {
            Activity activity = new Activity();

            activity.Title        = activityModel.Name;
            activity.Id           = activityModel.Id;
            activity.DeskReview   = activityModel.DeskReview;
            activity.OnsiteReview = activityModel.OnsiteReview;

            return(activity);
        }
Пример #42
0
 internal void SetActivity(LocalActivity activity)
 {
     _activity = activity == null
         ? null
         : new ActivityModel
     {
         Name = activity.Name,
         Url  = activity.Url,
         Type = activity.Type
     };
 }
        public void Respond(IGameClient client, ActivityModel activity, GameViewModel state)
        {
            var options = activity.ParseOptions();

            Choice choice = options.First();

            if (options.Contains(Choice.Yes))
                choice = Choice.Yes;

            client.AcceptMessage(new ChoiceMessage(client.PlayerId, choice.ToString()));
        }
Пример #44
0
 public ActionResult Edit([Bind(Include = "ActivityID,ProductTitle,Price,StartTime,EndTime,MinBuyers,CurrentBuyers,CategoryID")] ActivityModel activityModel)
 {
     if (ModelState.IsValid)
     {
         db.Entry(activityModel).State = EntityState.Modified;
         db.SaveChanges();
         return(RedirectToAction("Index"));
     }
     ViewBag.CategoryID = new SelectList(db.Categories, "CategoryID", "CategoryName", activityModel.CategoryID);
     return(View(activityModel));
 }
        public void Respond(IGameClient client, ActivityModel activity, GameViewModel state)
        {
            int count = activity.ParseNumberOfCardsToSelect();

            var ids = PrioritiseCards(state, activity)
                .Take(count)
                .Select(c => c.Id)
                .ToArray();
            
            var message = new SelectCardsMessage(client.PlayerId, ids);
            client.AcceptMessage(message);
        }
        public void Respond(IGameClient client, ActivityModel activity, GameViewModel state)
        {
            var action = state.Hand
                .Where(c => c.Is(CardType.Action))
                .Where(c => AISupportedActions.All.Contains(c.Name))
                .OrderByDescending(c => AISupportedActions.PlusActions.Contains(c.Name))
                .ThenByDescending(c => c.Cost)
                .First();

            var message = new PlayCardMessage(client.PlayerId, action.Id);
            client.AcceptMessage(message);
        }
Пример #47
0
        protected override void HandleActivity(ActivityModel activity, GameViewModel state)
        {
            if (activity.ParseType() == ActivityType.WaitingForOtherPlayers)
                return;

            var behaviour = Behaviours.FirstOrDefault(b => b.CanRespond(activity, state));

            if(behaviour == null)
                throw new NoBehaviourException(activity);

            behaviour.Respond(_client, activity, state);
        }
Пример #48
0
            public void Respond(IGameClient client, ActivityModel activity, GameViewModel state)
            {
                var decklist = client.GetDecklist();

                if (state.Results.Winner == client.PlayerName)
                {
                    foreach (var card in decklist.Where(c => _distribution.Contains(c.Name)))
                    {
                        _distribution.IncreaseLikelihood(card.Name);
                    }
                }
            }
Пример #49
0
 protected virtual void HandleActivity(ActivityModel activity, GameViewModel state)
 {
     switch (activity.Type)
     {
         case "SelectFixedNumberOfCards":
         {
             int cardsToDiscard = int.Parse(activity.Properties["NumberOfCardsToSelect"].ToString());
             DiscardCards(cardsToDiscard, state);
             break;
         }
         case "SelectFromRevealed":
         {
             SelectFromRevealed(activity, state);
             break;
         }
     }
 }
Пример #50
0
        public void Respond(IGameClient client, ActivityModel activity, GameViewModel state)
        {
            var pile = SelectPile(state, client);

            TalkSmack(pile, client);

            IGameActionMessage message = null;

            if (activity.ParseType() == ActivityType.DoBuys)
            {
                message = new BuyCardMessage(client.PlayerId, pile.Id);
            }
            else if (activity.ParseType() == ActivityType.SelectPile)
            {
                message = new ChooseAPileMessage(client.PlayerId, pile == null ? Guid.Empty : pile.Id);
            }

            client.AcceptMessage(message);
        }
Пример #51
0
 public override bool CanRespond(ActivityModel activity, GameViewModel state)
 {
     return base.CanRespond(activity, state) &&             
         GetValidBuys(state)                
             .Any(pile => Treasure.Basic.Contains(pile.Name));
 }
Пример #52
0
 public virtual bool CanRespond(ActivityModel activity, GameViewModel state)
  {
      return state.Status.GameIsComplete;
  }
Пример #53
0
 public override bool CanRespond(ActivityModel activity, GameViewModel state)
 {
     return base.CanRespond(activity, state) && 
         GetValidBuys(state).Any(c => _distribution.Contains(c.Name));
 }
 public virtual bool CanRespond(ActivityModel activity, GameViewModel state)
 {
     return activity.ParseType() == ActivityType.MakeChoice;
 }
 public void Respond(IGameClient client, ActivityModel activity, GameViewModel state)
 {
     var selected = state.Revealed.First();
     client.AcceptMessage(new SelectCardsMessage(client.PlayerId, new[] { selected.Id }));
 }
 public bool CanRespond(ActivityModel activity, GameViewModel state)
 {
     return activity.ParseType() == ActivityType.SelectFromRevealed;
 }
Пример #57
0
 public override bool CanRespond(ActivityModel activity, GameViewModel state)
 {
     return base.CanRespond(activity, state)
            && (GetValidBuys(state).Any(pile => AISupportedActions.All.Contains(pile.Name))
                     || (activity.ParseType() == ActivityType.SelectPile && (bool)activity.Properties["IsOptional"]));
 }
Пример #58
0
 public ActionResult Results(ActivityModel m)
 {
     return View(m);
 }
        public void Process(ActivityModel activity, Approval approval, string processor, IWorkflowAuthority auth)
        {
            if (approval == null) throw new Exception("审批意见不能为null");
            if (string.IsNullOrEmpty(approval.Remark)) throw new Exception("审批意见不能为空");
            //已经处理过就不能再处理
            if (activity.Value.Status == (int)ActivityProcessStatus.Processed) return;
            ISqlMapper mapper = MapperHelper.GetMapper();
            ActivityDao activitydao = new ActivityDao(mapper);
            TaskDao taskdao = new TaskDao(mapper);
            activity.Value.Status = (int)ActivityProcessStatus.Started;
            activity.Value.ProcessTime = DateTime.Now;
            activity.Value.LastUpdator = processor;

            //设置当前活动点状态
            activitydao.Update(new ActivityUpdateForm
            {
                Entity = new Activity { Status = activity.Value.Status, ProcessTime = activity.Value.ProcessTime, LastUpdator = activity.Value.LastUpdator },
                ActivityQueryForm = new ActivityQueryForm { ID = activity.Value.ID }
            });
            //新增审批意见
            if (approval != null)
            {
                ApprovalDao ad = new ApprovalDao(mapper);
                approval.Creator = processor;
                approval.ActivityID = activity.Value.ID;
                approval.WorkflowID = activity.Value.WorkflowID;
                ad.Add(approval);
                activity.OwnerWorkflow.Approval.Add(approval);
            }
            //处理当前流程所有任务,设置为已处理
            var task = activity.GetUserProcessingTask(processor);
            if (task == null) throw new Exception("环节中没有你的任务,无法进行审批操作");
            task.ProcessTime = DateTime.Now;
            task.Status = (int)TaskProcessStatus.Processed;
            task.LastUpdator = processor;
            taskdao.Update(new TaskUpdateForm
            {
                Entity = new Task { ProcessTime = task.ProcessTime, Status = task.Status, LastUpdator = task.LastUpdator },
                TaskQueryForm = new TaskQueryForm { ActivityID = task.ActivityID },
            });
            //把所有活动点的状态清空
            activity.OwnerWorkflow.Root.GetList().ForEach(t => t.Value.Status = activity.Value.Status);
            activitydao.Update(new ActivityUpdateForm
            {
                Entity = new Activity { Status = activity.Value.Status },
                ActivityQueryForm = new ActivityQueryForm { WorkflowID = activity.Value.WorkflowID }
            });
            activity.OwnerWorkflow.Root.Value.Status = (int)ActivityProcessStatus.Processing;
            var root = activity.OwnerWorkflow.Root;
            activitydao.Update(new ActivityUpdateForm
            {
                Entity = new Activity { Status = root.Value.Status },
                ActivityQueryForm = new ActivityQueryForm { ID = root.Value.ID },
            });
            //生成退回任务
            Task roottask = new Task
            {
                ActivityID = root.Value.ID,
                Name = root.Value.Name,
                Title = root.Value.Title + "(退回)",
                UserID = activity.OwnerWorkflow.Value.Creator,
                WorkflowID = activity.OwnerWorkflow.Value.ID,
                Status = (int)TaskProcessStatus.Started,
                Creator = processor,
            };
            root.Tasks.Add(roottask);
            taskdao.Add(roottask);
        }
 public override bool CanRespond(ActivityModel activity, GameViewModel state)
 {
     return base.CanRespond(activity, state) && BuyingPointsIsWorthIt(state);
 }