Beispiel #1
0
        private void SetSysConfig(List <SystemConfig> systemConfig)
        {
            using (VRArcadeDataAccessModel m = new VRArcadeDataAccessModel())
            {
                foreach (SystemConfig sc in systemConfig)
                {
                    VRConfiguration vc = m.VRConfigurations.Where(x => x.Type == Enum.GetName(typeof(VRGameSelectorServerDTO.Enums.SysConfigType), sc.Type)).FirstOrDefault();

                    if (vc != null)
                    {
                        // existing
                        vc.Value = sc.Value;
                    }
                    else
                    {
                        // new
                        VRConfiguration vrc = new VRConfiguration()
                        {
                            Type  = Enum.GetName(typeof(VRGameSelectorServerDTO.Enums.SysConfigType), sc.Type),
                            Value = sc.Value
                        };

                        m.Add(vrc);
                    }
                }

                m.SaveChanges();
                //m.Cache.Release(m.VRConfigurations);
            }
        }
Beispiel #2
0
        private void ModifyTileConfig(ConnectionInfo connectionInfo, VRGameSelectorServerDTO.TileConfig tileConfig)
        {
            using (VRArcadeDataAccessModel m = new VRArcadeDataAccessModel())
            {
                VRTileconfig vtc = m.VRTileconfigs.Where(x => x.ID == tileConfig.ID).FirstOrDefault();

                if (vtc != null)
                {
                    vtc.TileGUID       = tileConfig.TileGUID;
                    vtc.TileTitle      = tileConfig.TileTitle;
                    vtc.TileHeight     = tileConfig.TileHeight;
                    vtc.TileWidth      = tileConfig.TileWidth;
                    vtc.TileDesc       = tileConfig.TileDesc;
                    vtc.Command        = tileConfig.Command;
                    vtc.Arguments      = tileConfig.Arguments;
                    vtc.WorkingPath    = tileConfig.WorkingPath;
                    vtc.Order          = tileConfig.Order;
                    vtc.TileRowNumber  = tileConfig.TileRowNumber;
                    vtc.VRTileconfigID = tileConfig.TileconfigID;
                    vtc.ImageData      = tileConfig.TileImage.ImageData;
                    vtc.AgeRequire     = tileConfig.AgeRequire;
                    vtc.VideoURL       = tileConfig.VideoURL;

                    m.SaveChanges();
                    //m.Cache.Release(m.VRTileconfigs);
                }
            }

            GetTileConfigList(connectionInfo, tileConfig.TileConfigSetID);
        }
Beispiel #3
0
        private void AddTileConfig(ConnectionInfo connectionInfo, VRGameSelectorServerDTO.TileConfig tileConfig)
        {
            using (VRArcadeDataAccessModel m = new VRArcadeDataAccessModel())
            {
                VRTileconfig vtc = new VRTileconfig()
                {
                    TileGUID        = tileConfig.TileGUID,
                    TileTitle       = tileConfig.TileTitle,
                    TileHeight      = tileConfig.TileHeight,
                    TileWidth       = tileConfig.TileWidth,
                    TileDesc        = tileConfig.TileDesc,
                    Command         = tileConfig.Command,
                    Arguments       = tileConfig.Arguments,
                    WorkingPath     = tileConfig.WorkingPath,
                    Order           = tileConfig.Order,
                    TileRowNumber   = tileConfig.TileRowNumber,
                    TileConfigSetID = tileConfig.TileConfigSetID,
                    VRTileconfigID  = tileConfig.TileconfigID,
                    ImageData       = tileConfig.TileImage.ImageData,
                    AgeRequire      = tileConfig.AgeRequire,
                    VideoURL        = tileConfig.VideoURL,
                    IsDeleted       = false
                };

                m.Add(vtc);
                m.SaveChanges();
                //m.Cache.Release(m.VRTileconfigs);
            }

            GetTileConfigList(connectionInfo, tileConfig.TileConfigSetID);
        }
Beispiel #4
0
        public void MarkWaiverReceived(ConnectionInfo connectionInfo, List <WaiverInfo> listWaiverInfo)
        {
            using (VRArcadeDataAccessModel m = new VRArcadeDataAccessModel())
            {
                foreach (WaiverInfo wi in listWaiverInfo)
                {
                    VRWaiverLog vwl = m.VRWaiverLogs.Where(x => x.ID == wi.ID).FirstOrDefault();

                    if (vwl != null)
                    {
                        vwl.IsNewEntry = false;

                        if (vwl.BookingReference != null)
                        {
                            vwl.BookingReference.NumberOfBookingLeft -= (vwl.BookingReference.NumberOfBookingLeft == 0 ? 0 : 1);
                        }
                        else
                        {
                            VRBookingReference vbr = m.VRBookingReferences.Where(x => x.Reference == wi.BookingReference.Reference).FirstOrDefault();

                            if (vbr != null)
                            {
                                vwl.BookingReference = vbr;
                            }
                        }
                    }
                }

                m.SaveChanges();
                //m.Cache.Release(m.VRWaiverLogs);
                //m.Cache.Release(m.VRBookingReferences);
            }
        }
        private void ProcessPlayLog(ConnectionInfo connectionInfo, PlayLog playLog)
        {
            string ipAdd = ((IPEndPoint)connectionInfo.RemoteEndPoint).Address.MapToIPv4().ToString();

            InternalClientStatus iClientStatus = _internalClientStatus.Where(x => x.ClientIP == ipAdd).FirstOrDefault();

            if (iClientStatus != null)
            {
                int tileID = 0;

                int.TryParse(playLog.TileID, out tileID);

                using (VRArcadeDataAccessModel m = new VRArcadeDataAccessModel())
                {
                    VRTileconfig    vtc = m.VRTileconfigs.Where(x => x.ID == tileID && !x.IsDeleted).FirstOrDefault();
                    VRClienthistory vrh = new VRClienthistory();

                    vrh.VRClientID = iClientStatus.ClientID;

                    if (tileID == -1)
                    {
                        vrh.TileConfigID = -1;
                    }
                    else
                    {
                        vrh.TileConfigID = (vtc != null) ? vtc.ID : 0;
                    }

                    if (playLog.SignalType == VRGameSelectorDTO.Enums.PlayLogSignalType.Start)
                    {
                        // start game
                        if (tileID > 0)
                        {
                            string imagePath = (vtc.ImageData.Length > 0) ? vtc.ID.ToString() + ".bmp" : ""; // full path will be decided on client end
                            VRGameSelectorDTO.ImageInfo ii         = new VRGameSelectorDTO.ImageInfo(vtc.ImageData);
                            VRGameSelectorDTO.Tile      tileConfig = new Tile(vtc.TileHeight, vtc.TileWidth, vtc.TileRowNumber, vtc.ID.ToString(), vtc.TileTitle, imagePath, vtc.TileDesc, vtc.Command, vtc.Arguments, vtc.WorkingPath, ii, vtc.AgeRequire, vtc.VideoURL);

                            iClientStatus.ClientRunningModeSetup.TileConfig = tileConfig;
                        }

                        iClientStatus.ClientRunningModeSetup.CurrentRunningTileID = tileID;

                        vrh.StartTime = DateTime.Now;
                    }
                    else
                    {
                        // end game
                        iClientStatus.ClientRunningModeSetup.CurrentRunningTileID = 0;
                        iClientStatus.ClientRunningModeSetup.TileConfig           = null;

                        vrh.EndTime = DateTime.Now;
                    }

                    m.Add(vrh);
                    m.SaveChanges();
                    //m.Cache.Release(m.VRClienthistories);
                }
            }
        }
Beispiel #6
0
        private void DeleteTileConfig(ConnectionInfo connectionInfo, VRGameSelectorServerDTO.TileConfig tileConfig)
        {
            using (VRArcadeDataAccessModel m = new VRArcadeDataAccessModel())
            {
                VRTileconfig vtc = m.VRTileconfigs.Where(x => x.ID == tileConfig.ID).FirstOrDefault();

                if (vtc != null)
                {
                    vtc.IsDeleted = true;
                    m.SaveChanges();
                    //m.Cache.Release(m.VRTileconfigs);
                }
            }

            GetTileConfigList(connectionInfo, tileConfig.TileConfigSetID);
        }
Beispiel #7
0
        private void DeleteConfigSetList(ConnectionInfo connectionInfo, ConfigSet configSet)
        {
            using (VRArcadeDataAccessModel m = new VRArcadeDataAccessModel())
            {
                VRTileconfigset vcs = m.VRTileconfigsets.Where(x => x.ID == configSet.ID).FirstOrDefault();

                if (vcs != null)
                {
                    vcs.IsDeleted = true;
                    m.SaveChanges();
                    //m.Cache.Release(m.VRTileconfigsets);
                }
            }

            GetConfigSetList(connectionInfo);
        }
Beispiel #8
0
        private void AddConfigSetList(ConnectionInfo connectionInfo, ConfigSet configSet)
        {
            using (VRArcadeDataAccessModel m = new VRArcadeDataAccessModel())
            {
                VRTileconfigset vcs = new VRTileconfigset()
                {
                    Name      = configSet.Name,
                    IsDeleted = false
                };

                m.Add(vcs);
                m.SaveChanges();
                //m.Cache.Release(m.VRTileconfigsets);
            }

            GetConfigSetList(connectionInfo);
        }
Beispiel #9
0
        private void DeleteClientConfig(ConnectionInfo connectionInfo, Client client)
        {
            using (VRArcadeDataAccessModel m = new VRArcadeDataAccessModel())
            {
                VRClient vrc = m.VRClients.Where(x => x.ID == client.ClientID).FirstOrDefault();

                if (vrc != null)
                {
                    vrc.IsDeleted = true;
                    m.SaveChanges();
                    //m.Cache.Release(m.VRClients);
                }
            }

            //BuildInternalClientStatus();

            GetConfiguredClientList(connectionInfo);
        }
Beispiel #10
0
        private void DeleteKey(ConnectionInfo connectionInfo, List <KeyInfo> listKeyInfo)
        {
            using (VRArcadeDataAccessModel m = new VRArcadeDataAccessModel())
            {
                foreach (KeyInfo keyInfo in listKeyInfo)
                {
                    VRTicket vrTicket = m.VRTickets.Where(x => x.GUID == keyInfo.Key).FirstOrDefault();

                    vrTicket.IsDeleted       = true;
                    vrTicket.TimeStampDelete = DateTime.Now;
                }

                m.SaveChanges();
                //m.Cache.Release(m.VRTickets);
            }

            GetKey(connectionInfo);
        }
Beispiel #11
0
        private void DeletePendingWaiver(ConnectionInfo connectionInfo, List <WaiverInfo> listWaiverInfo)
        {
            using (VRArcadeDataAccessModel m = new VRArcadeDataAccessModel())
            {
                foreach (WaiverInfo wi in listWaiverInfo)
                {
                    VRWaiverLog vwl = m.VRWaiverLogs.Where(x => x.ID == wi.ID).FirstOrDefault();

                    if (vwl != null)
                    {
                        vwl.IsDeleted = true;
                    }
                }

                m.SaveChanges();
                //m.Cache.Release(m.VRWaiverLogs);
            }

            GetPendingWaiverList(connectionInfo);
        }
Beispiel #12
0
        private void CreateManageLog(VRGameSelectorServerDTO.Enums.SourceType sourceType, VRGameSelectorServerDTO.Enums.OperationType operationType, string sourceIdentity, int?clientID, int?tileID, string ticketGUID, string additionalInfo)
        {
            using (VRArcadeDataAccessModel m = new VRArcadeDataAccessModel())
            {
                VRManageLog vrManLog = new VRManageLog()
                {
                    Source         = sourceType.ToString(),
                    SourceIdentity = sourceIdentity,
                    Operation      = operationType.ToString(),
                    AdditonalInfo  = additionalInfo,
                    VRClientID     = clientID,
                    VRTileconfigID = tileID,
                    VRTicketGUID   = ticketGUID,
                    TimeStamp      = DateTime.Now
                };

                m.Add(vrManLog);
                m.SaveChanges();
            }
        }
Beispiel #13
0
        private void UpdateInternalClientStatus(string ipAddress, string machineName, VRGameSelectorDTO.Enums.LiveClientStatus liveClientStatus, string addInfo)
        {
            using (VRArcadeDataAccessModel m = new VRArcadeDataAccessModel())
            {
                InternalClientStatus iClientStatus = _internalClientStatus.Where(x => x.ClientIP == ipAddress).FirstOrDefault();

                if (iClientStatus != null)
                {
                    VRClient vrc = m.VRClients.Where(x => x.IPAddress == ipAddress && !x.IsDeleted).FirstOrDefault();

                    if (vrc != null && !vrc.MachineName.ToString().Equals(machineName))
                    {
                        vrc.MachineName = machineName;
                        m.SaveChanges();
                        //m.Cache.Release(m.VRClients);
                    }

                    iClientStatus.ClientName     = machineName;
                    iClientStatus.ClientStatus   = (VRGameSelectorServerDTO.Enums.LiveClientStatus)liveClientStatus;
                    iClientStatus.AdditionalInfo = addInfo;
                }
            }
        }
Beispiel #14
0
        private void ModifyClientConfig(ConnectionInfo connectionInfo, Client client)
        {
            bool isChangeConfigSetOnly = false;

            using (VRArcadeDataAccessModel m = new VRArcadeDataAccessModel())
            {
                VRClient vrc = m.VRClients.Where <VRClient>(x => x.ID == client.ClientID).FirstOrDefault();

                if (vrc != null)
                {
                    if (vrc.IPAddress == client.IPAddress && vrc.DashboardModuleIP == client.DashboardModuleIP)
                    {
                        isChangeConfigSetOnly = true;
                    }
                    else
                    {
                        vrc.IPAddress         = client.IPAddress;
                        vrc.DashboardModuleIP = client.DashboardModuleIP;
                    }

                    vrc.TileConfigSetID = client.TileConfigSetID;

                    m.SaveChanges();
                    //m.Cache.Release(m.VRClients);
                }
            }

            if (isChangeConfigSetOnly)
            {
                RefreshConfigSetForClient(client.ClientID, client.TileConfigSetID);
            }

            //BuildInternalClientStatus();

            GetConfiguredClientList(connectionInfo);
        }
Beispiel #15
0
        private void AddClientConfig(ConnectionInfo connectionInfo, Client client)
        {
            using (VRArcadeDataAccessModel m = new VRArcadeDataAccessModel())
            {
                VRClient vrc = new VRClient()
                {
                    IPAddress         = client.IPAddress,
                    DashboardModuleIP = client.DashboardModuleIP,
                    TileConfigSetID   = client.TileConfigSetID,
                    Tileconfigset     = null,
                    MachineName       = "",
                    VRClienthistories = null,
                    IsDeleted         = false
                };

                m.Add(vrc);
                m.SaveChanges();
                //m.Cache.Release(m.VRClients);
            }

            //BuildInternalClientStatus();

            GetConfiguredClientList(connectionInfo);
        }
        public void ProcessBarcode(string ipAdd, string barcode)
        {
            try
            {
                logger.Debug("BARCODE IN  " + barcode);
                logger.Debug("From dashboard: " + ipAdd);

                InternalClientStatus iClientStatus = _internalClientStatus.Where(x => x.DashboardModuleIP == ipAdd).FirstOrDefault();

                Ascii85 a85 = new Ascii85();
                //Guid guid = new Guid(Convert.FromBase64String(barcode.BarcodeReadout + "=="));

                Guid guid = new Guid(a85.Decode(barcode));

                logger.Debug(guid.ToString());

                if (iClientStatus != null && guid != null && guid != Guid.Empty)
                {
                    logger.Debug("P1");
                    using (VRArcadeDataAccessModel m = new VRArcadeDataAccessModel())
                    {
                        VRTicket vrt = m.VRTickets.Where(x => x.GUID == guid.ToString() && !x.IsDeleted).FirstOrDefault();

                        if (vrt != null && vrt.VRTicketType != null)
                        {
                            logger.Debug("P2");
                            List <ClientParm> clientParm = new List <ClientParm>();
                            IPAddress         ipa        = null;
                            if (!IPAddress.TryParse(ipAdd, out ipa))
                            {
                                ipa = IPAddress.Parse("0.0.0.0");
                            }

                            OperationInfo opInfo = new OperationInfo()
                            {
                                ConnectionInfo = new ConnectionInfo(new IPEndPoint(ipa, 0)),
                                TicketGUID     = vrt.GUID,
                                SourceType     = VRGameSelectorServerDTO.Enums.SourceType.LCD_BARCODE_MODULE,
                                ClientID       = iClientStatus.ClientID
                            };

                            if (vrt.VRTicketType.Type == "TICKET" && iClientStatus.ClientStatus == VRGameSelectorServerDTO.Enums.LiveClientStatus.CLEANING_DONE)
                            {
                                if (Math.Abs(DateTime.Now.Subtract(vrt.TimeStampCreate).TotalMinutes) <= 60)
                                {
                                    logger.Debug("P3");
                                    VRClient vrc = m.VRClients.Where(x => x.ID == iClientStatus.ClientID).FirstOrDefault();

                                    if (vrt.Minutes == 0)
                                    {
                                        // non-timing
                                        clientParm.Add(new ClientParm(iClientStatus.ClientID));
                                        SendStartNow(clientParm, opInfo);
                                        logger.Debug("NON-TIMING");
                                    }
                                    else
                                    {
                                        // timing
                                        Dictionary <string, string> dict = new Dictionary <string, string>()
                                        {
                                            { "Duration", vrt.Minutes.ToString() }
                                        };

                                        clientParm.Add(new ClientParm(iClientStatus.ClientID, dict));
                                        SendStartTiming(clientParm, opInfo);
                                        logger.Debug("TIMING:" + vrt.Minutes.ToString());
                                    }

                                    vrt.IsDeleted       = true;
                                    vrt.TimeStampDelete = DateTime.Now;
                                    vrt.VRClientID      = (vrc != null) ? (int?)vrc.ID : null;

                                    m.SaveChanges();
                                }
                                else
                                {
                                    logger.Debug("P4");
                                }
                            }
                            else if (vrt.VRTicketType.Type == "KEY-START-NON-TIMING")
                            {
                                clientParm.Add(new ClientParm(iClientStatus.ClientID));
                                SendStartNow(clientParm, opInfo);
                            }
                            else if (vrt.VRTicketType.Type == "KEY-START-TIMING")
                            {
                                Dictionary <string, string> dict = new Dictionary <string, string>()
                                {
                                    { "Duration", vrt.Minutes.ToString() }
                                };

                                clientParm.Add(new ClientParm(iClientStatus.ClientID, dict));
                                SendStartTiming(clientParm, opInfo);
                            }
                            else if (vrt.VRTicketType.Type == "KEY-END-GAME")
                            {
                                Dictionary <string, string> dict = new Dictionary <string, string>()
                                {
                                    { "EndMode", "Manual" }
                                };

                                clientParm.Add(new ClientParm(iClientStatus.ClientID, dict));
                                SendEndNow(clientParm, opInfo);
                            }
                            else if (vrt.VRTicketType.Type == "KEY-REBOOT")
                            {
                                clientParm.Add(new ClientParm(iClientStatus.ClientID));
                                SendReboot(clientParm, opInfo);
                            }
                            else if (vrt.VRTicketType.Type == "KEY-TURNOFF")
                            {
                                clientParm.Add(new ClientParm(iClientStatus.ClientID));
                                SendTurnOff(clientParm, opInfo);
                            }
                            else if (vrt.VRTicketType.Type == "KEY-KMU-ON")
                            {
                                clientParm.Add(new ClientParm(iClientStatus.ClientID));
                                SendTurnOnKMU(clientParm, opInfo);
                            }
                            else if (vrt.VRTicketType.Type == "KEY-KMU-OFF")
                            {
                                clientParm.Add(new ClientParm(iClientStatus.ClientID));
                                SendTurnOffKMU(clientParm, opInfo);
                            }
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                logger.Debug("Barcode Decoding Error: " + ex.Message);
            }
        }
Beispiel #17
0
        private void ReorderTileConfig(bool isMovingUp, VRGameSelectorServerDTO.TileConfig tileConfig)
        {
            using (VRArcadeDataAccessModel m = new VRArcadeDataAccessModel())
            {
                VRTileconfig currentVrtc = m.VRTileconfigs.Where(x => x.ID == tileConfig.ID && !x.IsDeleted).ToList().FirstOrDefault();

                List <VRTileconfig> rootLevelVrtcs;
                List <VRTileconfig> sortedRootLevelVrtcs;
                VRTileconfig        targetRootLevelVrtc;

                List <VRTileconfig> sortedSubVrtcs;
                VRTileconfig        targetSubVrtc;

                if (currentVrtc != null)
                {
                    if (tileConfig.TileconfigID == 0)
                    {
                        // root level tile

                        rootLevelVrtcs       = m.VRTileconfigs.Where(x => x.VRTileconfigID == 0 && x.TileConfigSetID == tileConfig.TileConfigSetID && !x.IsDeleted).ToList();
                        sortedRootLevelVrtcs = rootLevelVrtcs.OrderBy(x => x.Order).ToList();

                        if (sortedRootLevelVrtcs.Count > 1)
                        {
                            int posCurrentVrtc = sortedRootLevelVrtcs.IndexOf(currentVrtc);

                            if (posCurrentVrtc > 0 && isMovingUp)
                            {
                                targetRootLevelVrtc = sortedRootLevelVrtcs[posCurrentVrtc - 1];
                                targetRootLevelVrtc.Order++;
                                currentVrtc.Order--;
                            }
                            else if (posCurrentVrtc < sortedRootLevelVrtcs.Count - 1 && !isMovingUp)
                            {
                                targetRootLevelVrtc = sortedRootLevelVrtcs[posCurrentVrtc + 1];
                                targetRootLevelVrtc.Order--;
                                currentVrtc.Order++;
                            }
                        }
                    }
                    else
                    {
                        // sub level tile

                        VRTileconfig parentVrtc = m.VRTileconfigs.Where(x => x.ID == tileConfig.TileconfigID && !x.IsDeleted).ToList().FirstOrDefault();

                        if (parentVrtc != null && parentVrtc.VRTileconfigs.Count > 1)
                        {
                            sortedSubVrtcs = parentVrtc.VRTileconfigs.OrderBy(x => x.Order).ToList();

                            if (sortedSubVrtcs.Count > 1)
                            {
                                int posCurrentVrtc = sortedSubVrtcs.IndexOf(currentVrtc);

                                if (posCurrentVrtc > 0 && isMovingUp)
                                {
                                    targetSubVrtc = sortedSubVrtcs[posCurrentVrtc - 1];
                                    targetSubVrtc.Order++;
                                    currentVrtc.Order--;
                                }
                                else if (posCurrentVrtc < sortedSubVrtcs.Count - 1 && !isMovingUp)
                                {
                                    targetSubVrtc = sortedSubVrtcs[posCurrentVrtc + 1];
                                    targetSubVrtc.Order--;
                                    currentVrtc.Order++;
                                }
                            }
                        }
                    }

                    m.SaveChanges();
                    //m.Cache.Release(m.VRTileconfigs);
                }
            }
        }
Beispiel #18
0
        private void BookingReferenceClientApi_OnBookingReferenceResult(object sender, EventArgs e)
        {
            List <BookingReferenceJson> lbrj = ((BookingReferenceJsonEvent)e).ListBookingReference;

            using (VRArcadeDataAccessModel m = new VRArcadeDataAccessModel())
            {
                int sessionLength = 50;

                VRConfiguration vrc = m.VRConfigurations.Where(x => x.Type == Enum.GetName(typeof(VRGameSelectorServerDTO.Enums.SysConfigType), VRGameSelectorServerDTO.Enums.SysConfigType.DEFAULT_TIMED_SESSION_LENGTH)).FirstOrDefault();

                if (vrc != null)
                {
                    int.TryParse(vrc.Value, out sessionLength);
                }

                foreach (BookingReferenceJson brj in lbrj)
                {
                    DateTime bookingUpdateTime = DateTime.MinValue;
                    DateTime bookingDeleteTime = DateTime.MinValue;
                    DateTime bookingStartTime  = DateTime.MinValue;
                    DateTime bookingEndTime    = DateTime.MinValue;
                    int      bookingTotalNum   = 0;

                    DateTime.TryParse(brj.booking_updated, out bookingUpdateTime);
                    DateTime.TryParse(brj.booking_deleted, out bookingDeleteTime);
                    DateTime.TryParse(brj.booking_start_time, out bookingStartTime);
                    DateTime.TryParse(brj.booking_end_time, out bookingEndTime);
                    int.TryParse(brj.booking_num_total, out bookingTotalNum);

                    bookingUpdateTime = (bookingUpdateTime != DateTime.MinValue) ? DateTime.SpecifyKind(bookingUpdateTime, DateTimeKind.Utc).ToLocalTime() : bookingUpdateTime;
                    bookingDeleteTime = (bookingDeleteTime != DateTime.MinValue) ? DateTime.SpecifyKind(bookingDeleteTime, DateTimeKind.Utc).ToLocalTime() : bookingDeleteTime;
                    bookingStartTime  = (bookingStartTime != DateTime.MinValue) ? DateTime.SpecifyKind(bookingStartTime, DateTimeKind.Utc).ToLocalTime() : bookingStartTime;
                    bookingEndTime    = (bookingEndTime != DateTime.MinValue) ? DateTime.SpecifyKind(bookingEndTime, DateTimeKind.Utc).ToLocalTime() : bookingEndTime;

                    sessionLength = Math.Abs((int)bookingEndTime.Subtract(bookingStartTime).TotalMinutes);

                    VRBookingReference vrBookingRef = m.VRBookingReferences.Where(x => x.Reference == brj.booking_id).FirstOrDefault();

                    if (vrBookingRef != null)
                    {
                        // existing record
                        if (bookingUpdateTime != DateTime.MinValue && (vrBookingRef.BookingChanged ?? DateTime.MinValue) != bookingUpdateTime)
                        {
                            vrBookingRef.BookingChanged   = bookingUpdateTime;
                            vrBookingRef.BookingStartTime = bookingStartTime;
                            vrBookingRef.BookingEndTime   = bookingEndTime;

                            if (vrBookingRef.NumberOfBookingTotal < bookingTotalNum) // add people
                            {
                                vrBookingRef.NumberOfBookingLeft += (bookingTotalNum - vrBookingRef.NumberOfBookingTotal);
                            }
                            else if (vrBookingRef.NumberOfBookingTotal > bookingTotalNum) // remove people
                            {
                                vrBookingRef.NumberOfBookingLeft -= (vrBookingRef.NumberOfBookingTotal - bookingTotalNum);
                            }

                            vrBookingRef.NumberOfBookingTotal = bookingTotalNum;

                            // value guard
                            if (vrBookingRef.NumberOfBookingLeft > vrBookingRef.NumberOfBookingTotal)
                            {
                                vrBookingRef.NumberOfBookingLeft = vrBookingRef.NumberOfBookingTotal;
                            }
                            else if (vrBookingRef.NumberOfBookingLeft < 0)
                            {
                                vrBookingRef.NumberOfBookingLeft = 0;
                            }
                        }
                        if (bookingDeleteTime != DateTime.MinValue && (vrBookingRef.BookingDeleted ?? DateTime.MinValue) != bookingDeleteTime)
                        {
                            vrBookingRef.BookingDeleted = bookingDeleteTime;
                        }
                    }
                    else
                    {
                        // new record

                        //
                        VRBookingReference vrbr = new VRBookingReference()
                        {
                            BookingStartTime     = bookingStartTime,
                            BookingEndTime       = bookingEndTime,
                            Reference            = brj.booking_id,
                            IsTimedTiming        = true,
                            IsNonTimedTiming     = false,
                            Duration             = sessionLength,
                            NumberOfBookingTotal = bookingTotalNum,
                            NumberOfBookingLeft  = bookingTotalNum,
                            TimeStampCreate      = DateTime.Now
                        };

                        m.Add(vrbr);
                    }

                    m.SaveChanges();
                }
            }
        }
Beispiel #19
0
        private void GenerateBarcode(ConnectionInfo connectionInfo, BarcodeInfo barcodeInfo)
        {
            using (VRArcadeDataAccessModel m = new VRArcadeDataAccessModel())
            {
                if (barcodeInfo.BarcodeItems.Count > 0)
                {
                    foreach (BarcodeItem bi in barcodeInfo.BarcodeItems)
                    {
                        VRTicketType vrTT       = null;
                        string       ticketType = "";
                        Guid         guid       = Utility.CreateGuid();

                        bi.DateStampCreate = DateTime.Now;

                        if (bi.IsPrintingTicket)
                        {
                            ticketType = "TICKET";
                        }
                        else if (bi.IsPrintingKey)
                        {
                            ticketType = bi.KeyName;
                        }

                        vrTT = m.VRTicketTypes.Where(x => x.Type == ticketType).FirstOrDefault();


                        VRTicket vrt = new VRTicket()
                        {
                            GUID            = guid.ToString(),
                            Minutes         = bi.Minutes,
                            TimeStampCreate = bi.DateStampCreate,
                            VRTicketTypeID  = (vrTT != null) ? (int?)vrTT.ID : null,
                            WaiverLogID     = bi.WaiverLogID
                        };

                        //string t = Convert.ToBase64String(guid.ToByteArray()).Replace("=", "");

                        //byte[] b = Convert.FromBase64String(t + "==");

                        //var g = new Guid(b);

                        m.Add(vrt);
                        bi.GUID = guid;
                    }

                    m.SaveChanges();
                    //m.Cache.Release(m.VRTickets);

                    VRCommandServer vcs = new VRCommandServer(VRGameSelectorServerDTO.Enums.ControlMessage.GENERATE_BARCODE, barcodeInfo);

                    if (connectionInfo != null)
                    {
                        SendCommandToPeer(connectionInfo, vcs);
                    }
                    else
                    {
                        foreach (ConnectionInfo managingSysConn in _targetManagingSystemConnection)
                        {
                            SendCommandToPeer(managingSysConn, vcs);
                        }
                    }
                }
            }
        }