/// <summary> /// 指定班互换 /// </summary> protected void SwapSpecificTermIsNeedSeat() { //在申请方上新增回复方的班 Applier.CreateTermWithSeat(Replier.Term, Applier.Term.Seat); //在回复方上新增申请方的班 Replier.CreateTermWithSeat(Applier.Term, Replier.Term.Seat); }
/// <summary> /// 离线代换班 /// </summary> public void SwapingForSubEvent(Pair <Guid> agentPair, Pair <long> assignmentPair) { _attendanceRepository.Clear(); Applier.Term = _attendanceRepository.Get <Term>(assignmentPair.Applier); Replier.Term = _attendanceRepository.Get <Term>(assignmentPair.Replier); var dateA = new DateRange(Applier.Term.Start, Applier.Term.End); var dateB = new DateRange(Replier.Term.Start, Replier.Term.End); _attendanceRepository.Clear(); //初始化班表信息 Applier.InitializeTimeBox(agentPair.Applier, dateA); Replier.InitializeTimeBox(agentPair.Replier, dateB); Applier.InitializeSwapingForSubEvent(new Pair <DateRange>(dateA, dateB), assignmentPair.Applier); Replier.InitializeSwapingForSubEvent(new Pair <DateRange>(dateB, dateA), assignmentPair.Replier); //验证 ValidateTermGapHasMatched(); //保存日志 SaveLog(); //删除班 DeleteTerm(); //交换班表 SwapSpecificTermIsNeedSeat(); //验证交换信息 VaildateSwapMessage(); }
/// <summary> /// 时段代换班 /// </summary> public void SwapingForDateRange(Pair <Guid> agentPair, Pair <DateRange> dateRange, bool isLaborRule) { ReSet(); _attendanceRepository.Clear(); Applier.SwapingDate = Replier.SwapingDate = dateRange.Applier.GetSwapingDate(dateRange.Applier, dateRange.Replier); Initialize(agentPair, isLaborRule); Applier.InitializeSwapingForDateRange(Applier.SwapingDate); Replier.InitializeSwapingForDateRange(Replier.SwapingDate); //删除请假 DeleteTerms(new Pair <IList <Term> >(Applier.AbsentEvents, Replier.AbsentEvents)); //删除班表 DeleteTerms(new Pair <IList <Term> >(Applier.TempTerms, Replier.TempTerms)); if (dateRange.Applier == dateRange.Replier) { Applier.DealWithDateRange(Replier, dateRange.Applier); Replier.DealWithDateRange(Applier, dateRange.Replier); } else { Applier.DealWithDateRange(Replier, dateRange); Replier.DealWithDateRange(Applier, new Pair <DateRange>(dateRange.Replier, dateRange.Applier)); } //验证交换信息 VaildateSwapMessage(); }
protected IReplyContext Reply(IMessageChannel channel, IUser user) { var rContext = Replier.Reply(channel, user); rContext.OnSend += OnMessageSent; return(rContext); }
/// <summary> /// 基本代换班 /// </summary> public void SwapingForTerm(Pair <Guid> agentPair, Pair <long?> assignmentPair, bool isLaborRule) { ReSet(); _attendanceRepository.Clear(); GetSwapingDate(assignmentPair); Initialize(agentPair, isLaborRule); Applier.InitializeSwapingForTerm(assignmentPair.Applier); Replier.InitializeSwapingForTerm(assignmentPair.Replier); if (Applier.Term != null) { Replier.TimeOff = Replier.TimeBox.SpecificTerm <TimeOff>().CollideTerms(Applier.Term).FirstOrDefault(); } if (Replier.Term != null) { Applier.TimeOff = Applier.TimeBox.SpecificTerm <TimeOff>().CollideTerms(Replier.Term).FirstOrDefault(); } //删除班 DeleteTerm(); //设置TimeOff SetTimeOff(); //交换班表 SwapSpecificTerm(); SwapSpecificSubEvents(); //验证交换信息 VaildateSwapMessage(); }
private void Receiver_ReceiveTextMessage(TextMessage message, Replier replier) { if (!message.Content.IsUrl()) { replier.ReplyText("不要发这些没用的,有本事发个淘宝的商品链接试试"); return; } var items = AlimamaClientFactory.Instance.SearchItems(message.Content); if (items.Count == 0) { replier.ReplyText("没有找到此商品的优惠链接"); return; } var item = items.First(); var adzones = AlimamaClientFactory.Instance.GetAdzones(item.auctionId); var adzone = adzones.webAdzones.FirstOrDefault(); var adzoneId = adzone.id; var siteId = adzone.sub.FirstOrDefault().id; var urlInfo = AlimamaClientFactory.Instance.CreatePromotUrl(items[0].auctionId, siteId, adzoneId); string msg = string.Format("{0}\r\n{1}\r\n\r\n原价:{2}元\r\n优惠券:{3}\r\n券后价:{4}\r\n\r\n{5}\r\n【长按复制本条信息,然后打开手机淘宝领券下单即可】", item.title, urlInfo.couponLinkTaoToken ?? urlInfo.taoToken, item.zkPrice, item.couponInfo, item.zkPrice - item.couponAmount, urlInfo.couponShortLinkUrl ?? urlInfo.shortLinkUrl ); replier.ReplyText(msg); }
/// <summary> /// 多日代换班 /// </summary> public void SwapingForMultiDay(Pair <Guid> agentPair, DateRange dateRange, bool isLaborRule) { ReSet(); _attendanceRepository.Clear(); Applier.SwapingDate = Replier.SwapingDate = dateRange; Initialize(agentPair, isLaborRule); Applier.InitializeSwapingForMultiDay(); Replier.InitializeSwapingForMultiDay(); //是否存在TimeOff ValidateHasTimeOff(); //是否存在AbsentEvent ValidateHasAbsentEvent(); //是否存在锁 ValidateHasLocked(); //删除班表 DeleteTerms(new Pair <IList <Term> >(Applier.CurrentTerms, Replier.CurrentTerms)); //删除DayOff DeleteTerms(new Pair <IList <Term> >(Applier.DayOffs, Replier.DayOffs)); //交换班表 SwapTerms(new Pair <IList <Term> >(Applier.CurrentTerms, Replier.CurrentTerms)); SwapTerms(new Pair <IList <Term> >(Applier.LevelOnes, Replier.LevelOnes)); SwapTerms(new Pair <IList <Term> >(Applier.LevelTwos, Replier.LevelTwos)); SwapTerms(new Pair <IList <Term> >(Applier.LevelThrees, Replier.LevelThrees)); //验证交换信息 VaildateSwapMessage(); }
protected Dictionary <Guid, Dictionary <string, bool> > SetValidates() { var results = new Dictionary <Guid, Dictionary <string, bool> > { { Applier.TimeBox.Id, Applier.SetValidate() }, { Replier.TimeBox.Id, Replier.SetValidate() } }; return(results); }
private void Do(Replier who, Action <T> action) { action(who.Item); lock (locker) { who.isAvail = true; avails.Enqueue(who.index); } }
protected void DeleteTerms(Pair <IList <Term> > terms) { foreach (var assignment in terms.Applier) { Applier.DeleteTerm(assignment); } foreach (var assignment in terms.Replier) { Replier.DeleteTerm(assignment); } }
protected void CreateTerms(Pair <IList <Term> > terms) { foreach (var item in terms.Applier) { Applier.CreateTerm(item); } foreach (var item in terms.Replier) { Replier.CreateTerm(item); } }
public RecordingsPresenter(Recordings view, Subscribe subscribe, ModelFactory modelFactory, AppStorage appStorage) { _view = view; _subscribe = subscribe; _appStorage = appStorage; recorder = new UserActionsRecorder(_subscribe, modelFactory); replier = new Replier(); Init(); }
public void SaveLogs() { foreach (var assignment in Applier.CurrentTerms) { Applier.SaveLog(assignment); } foreach (var assignment in Replier.CurrentTerms) { Replier.SaveLog(assignment); } }
public virtual bool Do(Action <T> action) { Replier who = Get(); if (who != null) { Do(who, action); return(true); } return(false); }
/// <summary> /// 获取劳动政策 /// </summary> public Pair <Attendance> GetLaborRule() { Applier.GetLaborRule(); Replier.GetLaborRule(); var results = new Pair <Attendance> { Applier = Applier.Agent.LaborRule, Replier = Replier.Agent.LaborRule }; return(results); }
protected void SwapTerms(Pair <Term> term) { if (term.Replier != null) { //在申请方上新增回复方的班 Applier.CreateTerm(term.Replier); } if (term.Applier != null) { //在回复方上新增申请方的班 Replier.CreateTerm(term.Applier); } }
public string Submit() { var session = ServiceLocator.Current.GetInstance <ISessionFactory>().GetCurrentSession(); if (Applier.Message.Length == 0 && Replier.Message.Length == 0) { Applier.Submit(); Replier.Submit(); return(LanguageReader.GetValue("Shifts_BoxPairSwap_Success")); } session.Transaction.Rollback(); return(WithMessage()); }
public virtual Task DoAsync(Action <T> action) => Task.Run(() => { Replier who = null; while (who == null) { who = Get(); if (who == null) { Thread.Sleep(10); } } Do(who, action); });
public virtual void Add(T item) { lock (locker) { var who = new Replier { index = list.Count, Item = item, isAvail = true }; list.Add(who); avails.Enqueue(who.index); } }
private Replier Get() { Replier who = null; lock (locker) { if (Avail > 0) { who = list[avails.Dequeue()]; who.isAvail = false; } } return(who); }
private void StartReplyTimer() { Task.Run(async() => { await Task.Delay(DelayMessageMs); lock (InstanceCommandLock) { if (!HasReplied) { AwaitMessage = Replier.Reply(Channel, Author) .WithMessage(DelayMessage) .SendAsync(true).Result; } } }).DontWait(); }
/// <summary> /// 离线代换班验证 /// </summary> public Dictionary <Guid, Dictionary <string, bool> > SwapingForSubEventValidate(Pair <Guid> agentPair, Pair <long> subEventPair) { _attendanceRepository.Clear(); Applier.Term = _attendanceRepository.Get <Term>(subEventPair.Applier); Replier.Term = _attendanceRepository.Get <Term>(subEventPair.Replier); var dateA = new DateRange(Applier.Term.Start, Applier.Term.End); var dateB = new DateRange(Replier.Term.Start, Replier.Term.End); _attendanceRepository.Clear(); //初始化班表信息 Applier.InitializeTimeBox(agentPair.Applier, dateA); Replier.InitializeTimeBox(agentPair.Replier, dateB); Applier.InitializeSwapingForSubEvent(new Pair <DateRange>(dateA, dateB), subEventPair.Applier); Replier.InitializeSwapingForSubEvent(new Pair <DateRange>(dateB, dateA), subEventPair.Replier); Applier.IsNeedSeat = Replier.IsNeedSeat = Applier.Term.IsNeedSeat != Replier.Term.IsNeedSeat; return(SetValidates()); }
private void Receiver_SubscribeEvent(ScanEventArgs eventArgs, Replier replier) { if (string.IsNullOrEmpty(eventArgs.EventKey)) { replier.ReplyText("终于等到你,还好我没放弃!\r\n在深圳购买演出票记得上趣票哦!!!"); } else { replier.ReplyNews(new Replier.NewsContent { Title = "“创作随你”德国红点设计大展暨万象天地创作纪念展", PicUrl = "http://imgcdn.qupiaowang.com:9007//TicketPic/20170904/20170904173449578_B64354B5918146DBB8447009A7927B7E_-591542336.jpg", Url = "wechat.qupiaowang.com/infor/show-5814.html", Description = "设计届的奥斯卡,世界三大设计奖项之首,红点跨界合作商业中心,17年获奖作品首次亮相中国" }); } }
/// <summary> /// 时段代换班验证 /// </summary> public Dictionary <Guid, Dictionary <string, bool> > SwapingForDateRangeValidate(Pair <Guid> agentPair, Pair <DateRange> dateRange) { ReSet(); _attendanceRepository.Clear(); Applier.SwapingDate = Replier.SwapingDate = dateRange.Applier.GetSwapingDate(dateRange.Applier, dateRange.Replier); Initialize(agentPair, false); Applier.InitializeSwapingForDateRange(Applier.SwapingDate); Replier.InitializeSwapingForDateRange(Replier.SwapingDate); if (dateRange.Applier == dateRange.Replier) { if (Replier.NotSubEventAndGap(dateRange.Applier)) { Applier.HasExchanged = true; } if (Applier.NotSubEventAndGap(dateRange.Replier)) { Replier.HasExchanged = true; } } else { //获取切割时间 var cutDateRange = DateRange.Cut(dateRange.Applier, dateRange.Replier); var applierRegion = cutDateRange.Where(t => t.Item2 == RegionType.Applier).Select(o => o.Item1); var replierRegion = cutDateRange.Where(t => t.Item2 == RegionType.Replier).Select(o => o.Item1); foreach (var range in applierRegion) { if (Replier.NotSubEventAndGap(range)) { Applier.HasExchanged = true; break; } } foreach (var range in replierRegion) { if (Applier.NotSubEventAndGap(range)) { Replier.HasExchanged = true; break; } } } return(SetValidates()); }
protected void SwapSpecificSubEvents() { if (Replier.Term != null) { //在回复方上面有事件的情况下,也要同时新增。 foreach (var item in Replier.SubEvents) { Applier.CreateTerm(item); } } if (Applier.Term != null) { //在申请方上面有事件的情况下,也要同时新增。 foreach (var item in Applier.SubEvents) { Replier.CreateTerm(item); } } }
private void Initialize(Pair <Guid> agentPair, bool isLaborRule) { if (isLaborRule) { Applier.InitializeAttendance(agentPair.Applier); Replier.InitializeAttendance(agentPair.Replier); } else { Applier.ScheduleDate = Applier.SwapingDate; Replier.ScheduleDate = Replier.SwapingDate; } Applier.InitializeTimeBox(agentPair.Applier); Replier.InitializeTimeBox(agentPair.Replier); if (isLaborRule) { Applier.GetQLaborRule(); Replier.GetQLaborRule(); } }
/// <summary> /// 基本代换班验证 /// </summary> public Dictionary <Guid, Dictionary <string, bool> > SwapingForTermValidate(Pair <Guid> agentPair, Pair <long?> assignmentPair, Pair <DateRange> dateRange) { _attendanceRepository.Clear(); //初始化并做单一验证 Applier.InitializeTimeBox(agentPair.Applier, dateRange.Applier); Replier.InitializeTimeBox(agentPair.Replier, dateRange.Replier); Applier.InitializeSwapingForTerm(assignmentPair.Applier); Replier.InitializeSwapingForTerm(assignmentPair.Replier); //验证是否重叠 if (assignmentPair.Applier.HasValue) { Applier.HasExchanged = Replier.TimeBox.CollideTerms(dateRange.Applier).Where(o => o.Level == 0).Where(o => assignmentPair.Replier.HasValue ? o.Id != assignmentPair.Replier:true).Any(); } if (assignmentPair.Replier.HasValue) { Replier.HasExchanged = Applier.TimeBox.CollideTerms(dateRange.Replier).Where(o => o.Level == 0).Where(o => assignmentPair.Applier.HasValue ? o.Id != assignmentPair.Applier : true).Any(); } //验证换完之后TimeOff移至后一天,验证后一天是否重复 return(SetValidates()); }
protected IModifyContext Modify(IUserMessage message, IUser user) => Replier.Modify(message, user);
private void ReSet() { Applier.ReSet(); Replier.ReSet(); }
public void SaveLog() { Applier.SaveLog(Applier.Term); Replier.SaveLog(Replier.Term); }