Beispiel #1
0
        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());
        }
Beispiel #2
0
        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);
        }
Beispiel #3
0
        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);
        }
Beispiel #4
0
        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);
        }