private string[] GetRemainSeatsID(RemainSeatData data) { List <string> result = new List <string>(); SoldoutSeats soldouts = GetSoldoutSeats(data.blockId); result.AddRange(soldouts.data.Where(x => x.Value == false).Select(x => x.Key)); return(result.ToArray()); }
private PreOccupancy SetPreOccupancyInfo(int count, RemainSeatData data) { string[] remainSeatIds = data.remainSeatsID.Split(new string[] { ", " }, StringSplitOptions.RemoveEmptyEntries); if (remainSeatIds.Length < count) { return(null); } AllSeatData allSeatData = GetAllSeatData(data.blockId); List <AllSeatData.Data.Seat> remainSeatsInfo = new List <AllSeatData.Data.Seat>(); for (int i = 0; i < remainSeatIds.Length; i++) { foreach (AllSeatData.Data.Seat[] seats in allSeatData.data.able.Values) { var seat = seats.Where(x => string.Equals(x.logicalSeatid, remainSeatIds[i])); if (seat.Count() > 0) { remainSeatsInfo.Add(seat.First()); } } } remainSeatsInfo.Sort((x, y) => { return(int.Parse(x.logicalSeatid) - int.Parse(y.logicalSeatid)); }); PreOccupancy.Seat[] selectedSeats = new PreOccupancy.Seat[count]; for (int i = 0; i < count; i++) { int offset = i; selectedSeats[i] = new PreOccupancy.Seat(); selectedSeats[i].allotmentCode = remainSeatsInfo[offset].allotmentCode; selectedSeats[i].area = remainSeatsInfo[offset].area; selectedSeats[i].blockId = remainSeatsInfo[offset].blockId != null?int.Parse(remainSeatsInfo[offset].blockId) : 0; selectedSeats[i].logicalSeatId = uint.Parse(remainSeatsInfo[offset].logicalSeatid); selectedSeats[i].orderNum = int.Parse(remainSeatsInfo[offset].orderNum); selectedSeats[i].productGradeId = int.Parse(remainSeatsInfo[offset].gradeId); selectedSeats[i].productGradeName = data.gradeName; selectedSeats[i].seatAttribute = remainSeatsInfo[offset].mapInfo; selectedSeats[i].sortSeatAttribute = remainSeatsInfo[offset].sortMapInfo; } PreOccupancy result = new PreOccupancy(); result.code = remainSeatsInfo.First().allotmentCode; result.memberNo = 0; result.scheduleId = uint.Parse(ScheduleID); result.seats = selectedSeats; result.totalCnt = selectedSeats.Length; result.zones = new string[0]; return(result); }
private void AddRemainSeatData(Blocks blocks) { CurrentRemainSeats.Clear(); if (blocks == null || blocks.data == null) { IsInProgress = false; return; } var remainBlocks = blocks.data.Where(block => block.remainCnt > 0); remainBlocks = TargetBlock == "0" ? remainBlocks : remainBlocks.Where(x => x.blockId.ToString() == TargetBlock); remainBlocks = TargetGrade == "0" ? remainBlocks : remainBlocks.Where(x => x.gradeId.ToString() == TargetGrade); foreach (Block item in remainBlocks) { RemainSeatData data = new RemainSeatData(TicketBuyExecute); data.blockId = item.blockId; data.gradeId = item.gradeId; data.blockName = _meta.draw.blockInfo.Where(x => x.blockId == item.blockId).Select(x => x.blockName).First(); data.gradeName = _grades.Where(x => x.gradeId == item.gradeId)?.Select(x => x.name).FirstOrDefault(); data.remainCnt = item.remainCnt; data.registerTime = DateTime.Now; string[] remainSeats = GetRemainSeatsID(data); data.remainSeatsID = remainSeats.Length > 0 ? remainSeats[0] : null; for (int i = 1; i < remainSeats.Length; i++) { data.remainSeatsID += $", {remainSeats[i]}"; } RemainSeats.Add(data); CurrentRemainSeats.Add(data); if (AutoPopup && item.remainCnt >= int.Parse(Qty)) { TicketBuyExecute(data); StopExecute(null); return; } } Console.WriteLine(blocks.result.errorMessage); }
private void AddRemainSeatData(Grades grades) { CurrentRemainSeats.Clear(); if (grades == null || grades.data == null) { IsInProgress = false; return; } var remainGrades = grades.data.Where(grade => grade.remainCnt > 0); remainGrades = TargetGrade == "0" ? remainGrades : remainGrades.Where(x => x.gradeId.ToString() == TargetGrade); foreach (Grade item in remainGrades) { RemainSeatData data = new RemainSeatData(TicketBuyExecute); data.gradeId = item.gradeId; data.remainCnt = item.remainCnt; data.gradeName = item.name; data.registerTime = DateTime.Now; string[] remainSeats = GetRemainSeatsID(data); data.remainSeatsID = remainSeats[0]; for (int i = 1; i < remainSeats.Length; i++) { data.remainSeatsID += $", {remainSeats[i]}"; } RemainSeats.Add(data); CurrentRemainSeats.Add(data); if (AutoPopup && item.remainCnt >= int.Parse(Qty)) { TicketBuyExecute(data); StopExecute(null); return; } } Console.WriteLine(grades.result.errorMessage); }