Example #1
0
        public JsonModel AddUpdateLeaveReason(LeaveReasonDTO leaveReasonDTO, TokenModel token)
        {
            JsonModel Result = new JsonModel()
            {
                data       = false,
                Message    = StatusMessage.Success,
                StatusCode = (int)HttpStatusCodes.OK
            };
            LeaveReason leaveReasonEntity = null;
            DateTime    CurrentDate       = DateTime.UtcNow;

            if (leaveReasonDTO.Id == 0 || leaveReasonDTO.Id == null)
            {
                leaveReasonEntity = _mapper.Map <LeaveReason>(leaveReasonDTO);
                leaveReasonEntity.OrganizationId = 2; // token.OrganizationID;
                leaveReasonEntity.CreatedBy      = 2; // token.UserID;
                leaveReasonEntity.CreatedDate    = CurrentDate;
                leaveReasonEntity.IsActive       = true;
                leaveReasonEntity.IsDeleted      = false;
                _leaveReasonReapository.Create(leaveReasonEntity);
                _leaveReasonReapository.SaveChanges();
            }

            else
            {
                LeaveReason leaveReason = _leaveReasonReapository.Get(l => l.Id == leaveReasonDTO.Id && l.OrganizationId == 2); // token.OrganizationID);
                leaveReason.UpdatedBy   = 2;                                                                                    // token.UserID;
                leaveReason.UpdatedDate = CurrentDate;
                leaveReason.Type        = leaveReasonDTO.Type;
                _leaveReasonReapository.Update(leaveReason);
                _leaveReasonReapository.SaveChanges();
            }

            return(Result);
        }
Example #2
0
        public async Task <bool> Handle(CreateLeaveCommand request, CancellationToken cancellationToken)
        {
            // Add/Update the Leave AggregateRoot
            // DDD patterns comment: Add child entities and value-objects through the Order Aggregate-Root
            // methods and constructor so validations, invariants and business logic
            // make sure that consistency is preserved across the whole aggregate


            // Recupera el los LeaveType para comprobar que es un ID correcto, se ha hecho solo a modo de ejemplo, se podría hacer lo mismo para el ResourceId
            LeaveReason leaveReason = new LeaveReason(request.LeaveReason.Name, request.LeaveReason.Description);
            var         leaveTypes  = await _leaveQueries.GetLeaveTypesAsync();

            var selectedType = leaveTypes.Where(x => x.Id == request.LeaveTypeId).FirstOrDefault();

            if (selectedType != null)
            {
                var leave = new Leave(request.IdUser, request.UserName, leaveReason, request.DateStart, request.DateEnd, request.Comments, request.LeaveTypeId, request.ResourceId);
                //_logger.LogInformation("----- Creating Order - Order: {@Order}", order);
                _leaveRepository.Add(leave);

                return(await _leaveRepository.UnitOfWork.SaveEntitiesAsync(cancellationToken));
            }

            return(false);
        }
Example #3
0
        public override void OnLeave(ILeaveGameCallInfo info)
        {
            base.OnLeave(info);

            var url = this.gameLeaveUrl;

            if (!string.IsNullOrEmpty(url)) // && info.ActorNr != -1 we don't restrict this anymore as in forwardplugin to see all leaves
            {
                this.PostJsonRequest(
                    url,
                    new WebhooksRequest
                {
                    Type       = LeaveReason.ToString(info.Reason),
                    GameId     = this.PluginHost.GameId,
                    AppId      = this.AppId,
                    AppVersion = this.AppVersion,
                    Region     = this.Region,
                    UserId     = info.UserId,
                    Nickname   = info.Nickname,
                    ActorNr    = info.ActorNr,
                    IsInactive = info.IsInactive,
                    Reason     = info.Reason.ToString(),
                    AuthCookie = WebFlags.ShouldSendAuthCookie(info.Request.WebFlags) ? info.AuthCookie : null,
                },
                    this.LogIfFailedCallback,
                    callAsync: true);
            }
        }
Example #4
0
        /*internal static int CountInactivePlayers() {
            lock( AddLocker ) {
                Dictionary<IPAddress, List<PlayerInfo>> playersByIP = new Dictionary<IPAddress, List<PlayerInfo>>();
                PlayerInfo[] playerInfoListCache = PlayerInfoList;
                for( int i = 0; i < playerInfoListCache.Length; i++ ) {
                    if( !playersByIP.ContainsKey( playerInfoListCache[i].LastIP ) ) {
                        playersByIP[playerInfoListCache[i].LastIP] = new List<PlayerInfo>();
                    }
                    playersByIP[playerInfoListCache[i].LastIP].Add( PlayerInfoList[i] );
                }

                int count = 0;
                for( int i = 0; i < playerInfoListCache.Length; i++ ) {
                    if( PlayerIsInactive( playersByIP, playerInfoListCache[i], true ) ) count++;
                }
                return count;
            }
        }


        internal static int RemoveInactivePlayers() {
            int count = 0;
            lock( AddLocker ) {
                Dictionary<IPAddress, List<PlayerInfo>> playersByIP = new Dictionary<IPAddress, List<PlayerInfo>>();
                PlayerInfo[] playerInfoListCache = PlayerInfoList;
                for( int i = 0; i < playerInfoListCache.Length; i++ ) {
                    if( !playersByIP.ContainsKey( playerInfoListCache[i].LastIP ) ) {
                        playersByIP[playerInfoListCache[i].LastIP] = new List<PlayerInfo>();
                    }
                    playersByIP[playerInfoListCache[i].LastIP].Add( PlayerInfoList[i] );
                }
                List<PlayerInfo> newList = new List<PlayerInfo>();
                for( int i = 0; i < playerInfoListCache.Length; i++ ) {
                    PlayerInfo p = playerInfoListCache[i];
                    if( PlayerIsInactive( playersByIP, p, true ) ) {
                        count++;
                    } else {
                        newList.Add( p );
                    }
                }

                list = newList;
                Trie.Clear();
                foreach( PlayerInfo p in list ) {
                    Trie.Add( p.Name, p );
                }

                list.TrimExcess();
                UpdateCache();
            }
            return count;
        }


        static bool PlayerIsInactive( [NotNull] IDictionary<IPAddress, List<PlayerInfo>> playersByIP, [NotNull] PlayerInfo player, bool checkIP ) {
            if( playersByIP == null ) throw new ArgumentNullException( "playersByIP" );
            if( player == null ) throw new ArgumentNullException( "player" );
            if( player.BanStatus != BanStatus.NotBanned || player.UnbanDate != DateTime.MinValue ||
                player.IsFrozen || player.IsMuted || player.TimesKicked != 0 ||
                player.Rank != RankManager.DefaultRank || player.PreviousRank != null ) {
                return false;
            }
            if( player.TotalTime.TotalMinutes > 30 || player.TimeSinceLastSeen.TotalDays < 30 ) {
                return false;
            }
            if( IPBanList.Get( player.LastIP ) != null ) {
                return false;
            }
            if( checkIP ) {
                return playersByIP[player.LastIP].All( other => (other == player) || PlayerIsInactive( playersByIP, other, false ) );
            }
            return true;
        }*/


        internal static void SwapPlayerInfo( [NotNull] PlayerInfo p1, [NotNull] PlayerInfo p2 ) {
            if( p1 == null ) throw new ArgumentNullException( "p1" );
            if( p2 == null ) throw new ArgumentNullException( "p2" );
            using( GetWriteLock() ) {
                if( p1.IsOnline || p2.IsOnline ) {
                    throw new InvalidOperationException( "Both players must be offline to swap info." );
                }

                string tempString = p1.Name;
                p1.Name = p2.Name;
                p2.Name = tempString;

                DateTime tempDate = p1.LastLoginDate;
                p1.LastLoginDate = p2.LastLoginDate;
                p2.LastLoginDate = tempDate;

                tempDate = p1.LastSeen;
                p1.LastSeen = p2.LastSeen;
                p2.LastSeen = tempDate;

                LeaveReason tempLeaveReason = p1.LeaveReason;
                p1.LeaveReason = p2.LeaveReason;
                p2.LeaveReason = tempLeaveReason;

                IPAddress tempIP = p1.LastIP;
                p1.LastIP = p2.LastIP;
                p2.LastIP = tempIP;

                bool tempBool = p1.IsHidden;
                p1.IsHidden = p2.IsHidden;
                p2.IsHidden = tempBool;
            }
        }
Example #5
0
 void disconnect(Link link, LeaveReason reason, string additional)
 {
     lock (link)
         link.Stop();
     lock (_clients)
         _clients.Remove(link);
     leaveClient?.Invoke(link.ID, reason, additional);
 }
Example #6
0
 internal static void RaiseSessionDisconnectedEvent([NotNull] Player player, LeaveReason leaveReason)
 {
     if (player == null)
     {
         throw new ArgumentNullException(nameof(player));
     }
     SessionDisconnected?.Invoke(null, new SessionDisconnectedEventArgs(player, leaveReason));
 }
Example #7
0
 internal static void RaiseSessionDisconnectedEvent( [NotNull] Player player, LeaveReason leaveReason )
 {
     if ( player == null )
         throw new ArgumentNullException( "player" );
     var h = SessionDisconnected;
     if ( h != null )
         h( null, new SessionDisconnectedEventArgs( player, leaveReason ) );
 }
Example #8
0
        /*internal static bool RaisePlayerSendingMessageEvent( ChatMessage message ) {
         *  var h = PlayerSendingMessage;
         *  if( h == null ) return false;
         *  var e = new PlayerSendingMessageEventArgs( message );
         *  h( null, e );
         *  return e.Cancel;
         * }
         *
         *
         * internal static void RaisePlayerSentMessageEvent( ChatMessage message ) {
         *  var h = PlayerSentMessage;
         *  if( h != null ) h( null, new PlayerSentMessageEventArgs( message ) );
         * }*/


        internal static void RaisePlayerDisconnectedEventArgs(Player player, LeaveReason leaveReason)
        {
            var h = PlayerDisconnected;

            if (h != null)
            {
                h(null, new PlayerDisconnectedEventArgs(player, leaveReason));
            }
        }
Example #9
0
        internal static void RaiseSessionDisconnectedEvent([NotNull] Player player, LeaveReason leaveReason)
        {
            var h = SessionDisconnected;

            if (h != null)
            {
                h(null, new SessionDisconnectedEventArgs(player, leaveReason));
            }
        }
Example #10
0
 internal PlayerKickedEventArgs(Player player, Player kicker, string reason, bool isSilent, bool recordToPlayerDB, LeaveReason context)
     : base(player)
 {
     Kicker           = kicker;
     Reason           = reason;
     IsSilent         = isSilent;
     RecordToPlayerDB = recordToPlayerDB;
     Context          = context;
 }
Example #11
0
 internal SessionDisconnectedEventArgs([NotNull] Player player, LeaveReason leaveReason)
 {
     if (player == null)
     {
         throw new ArgumentNullException("player");
     }
     Player      = player;
     LeaveReason = leaveReason;
 }
Example #12
0
        internal static void RaiseSessionDisconnectedEvent(Session session, LeaveReason leaveReason)
        {
            var h = SessionDisconnected;

            if (h != null)
            {
                h(null, new SessionDisconnectedEventArgs(session, leaveReason));
            }
        }
Example #13
0
 void _disconnect(LeaveReason reason, string additional)
 {
     Connected = false;
     lock (tcp)
         tcp.Close();
     lock (link)
         link.Stop();
     disconnected?.Invoke(reason, additional);
     debugNotice(this);
 }
Example #14
0
        private static void RaisePlayerDisconnectedEvent([NotNull] Player player, LeaveReason leaveReason)
        {
            if (player == null)
            {
                throw new ArgumentNullException(nameof(player));
            }
            var h = Disconnected;

            h?.Invoke(null, new PlayerDisconnectedEventArgs(player, leaveReason, false));
        }
Example #15
0
 internal PlayerDisconnectedEventArgs([NotNull] Player player, LeaveReason leaveReason, bool isFake)
 {
     if (player == null)
     {
         throw new ArgumentNullException("player");
     }
     Player      = player;
     LeaveReason = leaveReason;
     IsFake      = isFake;
 }
 internal PlayerKickedEventArgs([NotNull] Player player, [NotNull] Player kicker, [CanBeNull] string reason,
                                bool announce, bool recordToPlayerDb, LeaveReason context)
 {
     Player           = player ?? throw new ArgumentNullException(nameof(player));
     Kicker           = kicker ?? throw new ArgumentNullException(nameof(kicker));
     Reason           = reason;
     Announce         = announce;
     RecordToPlayerDb = recordToPlayerDb;
     Context          = context;
 }
Example #17
0
        public bool DeletLeaveReason(int Id, TokenModel token)
        {
            LeaveReason leaveReasonEntity = _leaveReasonReapository.Get(l => l.Id == Id && l.OrganizationId == 2);// token.OrganizationID);

            leaveReasonEntity.IsDeleted   = true;
            leaveReasonEntity.IsActive    = false;
            leaveReasonEntity.DeletedBy   = 2;// token.UserID;
            leaveReasonEntity.DeletedDate = DateTime.UtcNow;
            _leaveReasonReapository.SaveChanges();

            return(true);
        }
Example #18
0
 public void ProcessLogout([NotNull] Player player)
 {
     if (player == null)
     {
         throw new ArgumentNullException("player");
     }
     TotalTime   += player.LastActiveTime.Subtract(player.LoginTime);
     LastSeen     = DateTime.UtcNow;
     IsOnline     = false;
     PlayerObject = null;
     LeaveReason  = player.LeaveReason;
     LastModified = DateTime.UtcNow;
 }
Example #19
0
        internal static void RaiseSessionDisconnectedEvent([NotNull] Player player, LeaveReason leaveReason)
        {
            if (player == null)
            {
                throw new ArgumentNullException("player");
            }
            var h = SessionDisconnected;

            if (h != null)
            {
                h(null, new SessionDisconnectedEventArgs(player, leaveReason));
            }
        }
Example #20
0
        static void RaisePlayerDisconnectedEvent([NotNull] Player player, LeaveReason leaveReason)
        {
            if (player == null)
            {
                throw new ArgumentNullException("player");
            }
            var h = Disconnected;

            if (h != null)
            {
                h(null, new PlayerDisconnectedEventArgs(player, leaveReason, false));
            }
        }
Example #21
0
        public ActionResult DeleteLeaveReason(LeaveReason lr)
        {
            Employee e1 = (Employee)Session["Employee"];

            if (Session["EmpID"] != null && e1.isAdmin == true)
            {
                lr.DeleteLeaveReason();
                return(RedirectToAction("LeaveReason"));
            }
            else
            {
                return(RedirectToAction("Index", "LogIn"));
            }
        }
Example #22
0
File: Room.cs Project: stadham/LOVC
 public virtual void Leave(Player player, LeaveReason reason = LeaveReason.SwitchRoom)
 {
     info.count--;
     if (players.ContainsKey(player.id))
     {
         players.Remove(player.id);
     }
     Console.WriteLine("Player " + player.id + " leave " + info.name);
     foreach (var pl in players)
     {
         pl.Value.connection.Invoke("PlayerDestroy", player.id);
         player.connection.Invoke("PlayerDestroy", pl.Value.id);
         player = null;
     }
     // InvokeGlobal("playerDestroy", player.id);
 }
Example #23
0
        public ActionResult UpdateLeaveReason()
        {
            Employee e1 = (Employee)Session["Employee"];

            if (Session["EmpID"] != null && e1.isAdmin == true)
            {
                LeaveReason lr = new LeaveReason()
                {
                    id = int.Parse(Request.Form["id"].ToString()), _LeaveReason = Request.Form["edittxt"].ToString()
                };
                lr.UpdateLeaveReason();
                return(RedirectToAction("LeaveReason"));
            }
            else
            {
                return(RedirectToAction("Index", "LogIn"));
            }
        }
Example #24
0
 internal PlayerKickedEventArgs([NotNull] Player player, [NotNull] Player kicker, [CanBeNull] string reason,
                                bool announce, bool recordToPlayerDB, LeaveReason context)
 {
     if (player == null)
     {
         throw new ArgumentNullException("player");
     }
     if (kicker == null)
     {
         throw new ArgumentNullException("kicker");
     }
     Player           = player;
     Kicker           = kicker;
     Reason           = reason;
     Announce         = announce;
     RecordToPlayerDB = recordToPlayerDB;
     Context          = context;
 }
Example #25
0
 internal void KickSynchronously([NotNull] string message, LeaveReason reason) {
     if (message == null) throw new ArgumentNullException("message");
     lock (kickSyncLock) {
         useSyncKick = true;
         Kick(message, reason);
     }
     syncKickWaiter.WaitOne();
     Server.UnregisterPlayer(this);
 }
Example #26
0
 public SessionDisconnectedEventArgs( Session session, LeaveReason leaveReason ) {
     Session = session;
     LeaveReason = leaveReason;
 }
Example #27
0
 internal PlayerDisconnectedEventArgs(Player player, LeaveReason leaveReason)
     : base(player)
 {
     LeaveReason = leaveReason;
 }
Example #28
0
        /// <summary>
        /// Kick (synchronous). Immediately sends the kick packet.
        /// Can only be used from IoThread (this is not thread-safe).
        /// </summary>
        public void KickNow( string message, LeaveReason leaveReason ) {
            LeaveReason = leaveReason;

            CanQueue = false;
            CanReceive = false;
            CanSend = false;
            SendNow( PacketWriter.MakeDisconnect( message ) );
            writer.Flush();
        }
Example #29
0
 internal PlayerDisconnectedEventArgs( [NotNull] Player player, LeaveReason leaveReason, bool isFake ) {
     if( player == null ) throw new ArgumentNullException( "player" );
     Player = player;
     LeaveReason = leaveReason;
 }
Example #30
0
        /// <summary> Kick (asynchronous). Immediately blocks all client input, but waits
        /// until client thread has sent the kick packet. </summary>
        public void Kick( [NotNull] string message, LeaveReason leaveReason ) {
            if( message == null ) throw new ArgumentNullException( "message" );
            if( !Enum.IsDefined( typeof( LeaveReason ), leaveReason ) ) {
                throw new ArgumentOutOfRangeException( "leaveReason" );
            }
            State = SessionState.PendingDisconnect;
            LeaveReason = leaveReason;

            canReceive = false;
            canQueue = false;

            // clear all pending output to be written to client (it won't matter after the kick)
            ClearLowPriotityOutputQueue();
            ClearPriorityOutputQueue();

            // bypassing Send() because canQueue is false
            priorityOutputQueue.Enqueue( PacketWriter.MakeDisconnect( message ) );
        }
Example #31
0
 public override void Read(BenCmdServer client)
 {
     PlayerName = client.ReadString(16);
     Reason     = (LeaveReason)client.ReadByte();
 }
Example #32
0
 internal SessionDisconnectedEventArgs([NotNull] Player player, LeaveReason leaveReason)
 {
     Player      = player ?? throw new ArgumentNullException(nameof(player));
     LeaveReason = leaveReason;
 }
Example #33
0
 public PacketPlayerLeave()
     : base(3, true, false)
 {
     PlayerName = "";
     Reason     = LeaveReason.Quit;
 }
Example #34
0
        /*internal static bool RaisePlayerSendingMessageEvent( ChatMessage message ) {
            var h = PlayerSendingMessage;
            if( h == null ) return false;
            var e = new PlayerSendingMessageEventArgs( message );
            h( null, e );
            return e.Cancel;
        }


        internal static void RaisePlayerSentMessageEvent( ChatMessage message ) {
            var h = PlayerSentMessage;
            if( h != null ) h( null, new PlayerSentMessageEventArgs( message ) );
        }*/


        internal static void RaisePlayerDisconnectedEventArgs( Player player, LeaveReason leaveReason ) {
            var h = PlayerDisconnected;
            if( h != null ) h( null, new PlayerDisconnectedEventArgs( player, leaveReason ) );
        }
Example #35
0
 internal PlayerBeingKickedEventArgs([NotNull] Player player, [NotNull] Player kicker, [CanBeNull] string reason,
                                     bool announce, bool recordToPlayerDB, LeaveReason context)
     : base(player, kicker, reason, announce, recordToPlayerDB, context)
 {
 }
Example #36
0
 internal static void RaiseSessionDisconnectedEvent( Session session, LeaveReason leaveReason ) {
     var h = SessionDisconnected;
     if( h != null ) h( null, new SessionDisconnectedEventArgs( session, leaveReason ) );
 }
Example #37
0
        private void populateDatabase(LeaveManagerContext db)
        {
            Employee e1 = new Employee {
                employeeFirstName = "Pera", employeeLastName = "Peric", employeeEmail = "*****@*****.**", passwordHash = EmployeesController.getHashedPassword("pera"), CreateDate = DateTime.Now
            };
            Employee e2 = new Employee {
                employeeFirstName = "Mitar", employeeLastName = "Mitric", employeeEmail = "*****@*****.**", passwordHash = EmployeesController.getHashedPassword("mitar"), CreateDate = DateTime.Now
            };
            Employee e3 = new Employee {
                employeeFirstName = "Zika", employeeLastName = "Zikic", employeeEmail = "*****@*****.**", passwordHash = EmployeesController.getHashedPassword("zika"), CreateDate = DateTime.Now
            };
            Employee e4 = new Employee {
                employeeFirstName = "Marina", employeeLastName = "Maric", employeeEmail = "*****@*****.**", passwordHash = EmployeesController.getHashedPassword("marina"), CreateDate = DateTime.Now
            };
            Employee e5 = new Employee {
                employeeFirstName = "Maja", employeeLastName = "Majic", employeeEmail = "*****@*****.**", passwordHash = EmployeesController.getHashedPassword("maja"), CreateDate = DateTime.Now
            };
            Employee e6 = new Employee {
                employeeFirstName = "Nikola", employeeLastName = "Nikolic", employeeEmail = "*****@*****.**", passwordHash = EmployeesController.getHashedPassword("nikola"), CreateDate = DateTime.Now
            };
            Employee e7 = new Employee {
                employeeFirstName = "Marko", employeeLastName = "Markovic", employeeEmail = "*****@*****.**", passwordHash = EmployeesController.getHashedPassword("marko"), CreateDate = DateTime.Now
            };

            db.Employees.AddOrUpdate(e1, e2, e3, e4, e5, e6, e7);

            Role r1 = new Role {
                roleName = "Worker", CreateDate = DateTime.Now
            };
            Role r2 = new Role {
                roleName = "Delivery Manager", CreateDate = DateTime.Now
            };
            Role r3 = new Role {
                roleName = "Department Manager", CreateDate = DateTime.Now
            };
            Role r4 = new Role {
                roleName = "Super User", CreateDate = DateTime.Now
            };

            db.Roles.AddOrUpdate(r1, r2, r3, r4);

            EmployeeRole er1 = new EmployeeRole {
                employee = e1, employeeID = e1.employeeID, role = r1, roleID = r1.roleID, CreateDate = DateTime.Now
            };
            EmployeeRole er2 = new EmployeeRole {
                employee = e2, employeeID = e2.employeeID, role = r1, roleID = r1.roleID, CreateDate = DateTime.Now
            };
            EmployeeRole er3 = new EmployeeRole {
                employee = e2, employeeID = e2.employeeID, role = r2, roleID = r2.roleID, CreateDate = DateTime.Now
            };
            EmployeeRole er4 = new EmployeeRole {
                employee = e3, employeeID = e3.employeeID, role = r2, roleID = r2.roleID, CreateDate = DateTime.Now
            };
            EmployeeRole er5 = new EmployeeRole {
                employee = e4, employeeID = e4.employeeID, role = r1, roleID = r1.roleID, CreateDate = DateTime.Now
            };
            EmployeeRole er6 = new EmployeeRole {
                employee = e5, employeeID = e1.employeeID, role = r1, roleID = r1.roleID, CreateDate = DateTime.Now
            };
            EmployeeRole er7 = new EmployeeRole {
                employee = e6, employeeID = e6.employeeID, role = r3, roleID = r3.roleID, CreateDate = DateTime.Now
            };
            EmployeeRole er8 = new EmployeeRole {
                employee = e7, employeeID = e7.employeeID, role = r4, roleID = r4.roleID, CreateDate = DateTime.Now
            };

            db.EmployeeRoles.AddOrUpdate(er1, er2, er3, er4, er5, er6, er7, er8);

            LeaveReason lr1 = new LeaveReason()
            {
                leaveReasonName = "Holiday", CreateDate = DateTime.Now
            };
            LeaveReason lr2 = new LeaveReason()
            {
                leaveReasonName = "Sickness", CreateDate = DateTime.Now
            };
            LeaveReason lr3 = new LeaveReason()
            {
                leaveReasonName = "Other reasons", CreateDate = DateTime.Now
            };

            db.LeaveReasons.AddOrUpdate(lr1, lr2, lr3);

            RequestStatus rs1 = new RequestStatus()
            {
                requestStatusName = "Pending", CreateDate = DateTime.Now
            };
            RequestStatus rs2 = new RequestStatus()
            {
                requestStatusName = "Approved", CreateDate = DateTime.Now
            };
            RequestStatus rs3 = new RequestStatus()
            {
                requestStatusName = "Denied", CreateDate = DateTime.Now
            };


            db.RequestStatus.AddOrUpdate(rs1, rs2, rs3);

            LeaveRequest leaveRequest1 = new LeaveRequest {
                allDayEvent     = true,
                deliveryManager = e3,

                deliveryManagerComment   = "",
                departmentManager        = e6,
                deliveryManagerStatus    = rs2,
                departmentManagerStatus  = rs1,
                departmentManagerComment = "",
                Description = "My wifes birthday",
                employee    = e1,
                endTime     = new DateTime(2012, 12, 12),
                leaveReason = lr1,
                startTime   = new DateTime(2012, 12, 22),
                CreateDate  = DateTime.Now
            };

            LeaveRequest leaveRequest2 = new LeaveRequest
            {
                allDayEvent             = true,
                deliveryManager         = e3,
                deliveryManagerStatus   = rs2,
                departmentManagerStatus = rs1,
                deliveryManagerComment  = "",
                departmentManager       = e6,

                departmentManagerComment = "",
                Description = "My wifes birthday",
                employee    = e1,
                endTime     = new DateTime(2012, 12, 12),
                leaveReason = lr1,
                startTime   = new DateTime(2012, 12, 22),
                CreateDate  = DateTime.Now
            };


            //db.LeaveRequests.AddOrUpdate(leaveRequest1,leaveRequest2);
            db.SaveChanges();
        }
Example #38
0
        /// <summary>
        /// Kick (asynchronous). Immediately blocks all client input, but waits
        /// until client thread sends the kick packet.
        /// </summary>
        public void Kick( string message, LeaveReason leaveReason ) {
            LeaveReason = leaveReason;

            CanReceive = false;
            CanQueue = false;

            // clear all pending output to be written to client (it won't matter after the kick)
            ClearBlockUpdateQueue();
            ClearPriorityOutputQueue();

            // bypassing Send() because canQueue is false
            priorityOutputQueue.Enqueue( PacketWriter.MakeDisconnect( message ) );
        }
        void IoLoop()
        {
            try {
                Server.RaiseSessionConnectedEvent( this );

                // try to log the player in, otherwise die.
                if( !LoginSequence() ) return;

                BandwidthUseMode = Info.BandwidthUseMode;

                // set up some temp variables
                Packet packet = new Packet();

                int pollCounter = 0,
                    pingCounter = 0;

                // main i/o loop
                while( canSend ) {
                    int packetsSent = 0;

                    // detect player disconnect
                    if( pollCounter > SocketPollInterval ) {
                        if( !client.Connected ||
                            (client.Client.Poll( 1000, SelectMode.SelectRead ) && client.Client.Available == 0) ) {
                            if( Info != null ) {
                                Logger.Log( LogType.Debug,
                                            "Player.IoLoop: Lost connection to player {0} ({1}).", Name, IP );
                            } else {
                                Logger.Log( LogType.Debug,
                                            "Player.IoLoop: Lost connection to unidentified player at {0}.", IP );
                            }
                            LeaveReason = LeaveReason.ClientQuit;
                            return;
                        }
                        if( pingCounter > PingInterval ) {
                            writer.WritePing();
                            BytesSent++;
                            pingCounter = 0;
                            MeasureBandwidthUseRates();
                        }
                        pingCounter++;
                        pollCounter = 0;
                        if( IsUsingWoM ) {
                            MessageNowPrefixed( "", "^detail.user="******"Player.IoLoop: Player was asked to force-join a world, but it was full." );
                                    KickNow( "World is full.", LeaveReason.ServerFull );
                                }
                                forcedWorldToJoin = null;
                            }
                        }

                        if( DateTime.UtcNow.Subtract( lastMovementUpdate ) > movementUpdateInterval ) {
                            UpdateVisibleEntities();
                            lastMovementUpdate = DateTime.UtcNow;
                        }
                    }

                    // get input from player
                    while( canReceive && stream.DataAvailable ) {
                        byte opcode = reader.ReadByte();
                        switch( (OpCode)opcode ) {

                            case OpCode.Message:
                                if( !ProcessMessagePacket() ) return;
                                break;

                            case OpCode.Teleport:
                                ProcessMovementPacket();
                                break;

                            case OpCode.SetBlockClient:
                                ProcessSetBlockPacket();
                                break;

                            case OpCode.Ping:
                                BytesReceived++;
                                continue;

                            default:
                                Logger.Log( LogType.SuspiciousActivity,
                                            "Player {0} was kicked after sending an invalid opcode ({1}).",
                                            Name, opcode );
                                KickNow( "Unknown packet opcode " + opcode,
                                         LeaveReason.InvalidOpcodeKick );
                                return;
                        }

                        if( DateTime.UtcNow.Subtract( lastMovementUpdate ) > movementUpdateInterval ) {
                            UpdateVisibleEntities();
                            lastMovementUpdate = DateTime.UtcNow;
                        }
                    }

                    Thread.Sleep( SleepDelay );
                }

            } catch( IOException ) {
                LeaveReason = LeaveReason.ClientQuit;

            } catch( SocketException ) {
                LeaveReason = LeaveReason.ClientQuit;
            #if !DEBUG
            } catch( Exception ex ) {
                LeaveReason = LeaveReason.ServerError;
                Logger.LogAndReportCrash( "Error in Player.IoLoop", "fCraft", ex, false );
            #endif
            } finally {
                canQueue = false;
                canSend = false;
                Disconnect();
            }
        }
Example #40
0
 internal PlayerDisconnectedEventArgs( Player player, LeaveReason leaveReason )
     : base( player ) {
     LeaveReason = leaveReason;
 }
Example #41
0
 static void ShowPlayerDisconnectedMsg([NotNull] Player player, LeaveReason leaveReason) {
     if (player == null) throw new ArgumentNullException("player");
     string message = String.Format("{0}&S* {1}&S left the server ({2})",
                                    BoldCode,
                                    player.ClassyName,
                                    leaveReason);
     SendAction(message);
 }
Example #42
0
 static void RaisePlayerDisconnectedEvent( [NotNull] Player player, LeaveReason leaveReason ) {
     if( player == null ) throw new ArgumentNullException( "player" );
     var h = Disconnected;
     if( h != null ) h( null, new PlayerDisconnectedEventArgs( player, leaveReason, false ) );
 }
Example #43
0
        /// <summary> Kick (synchronous). Immediately sends the kick packet.
        /// Can only be used from IoThread (this is not thread-safe). </summary>
        void KickNow( [NotNull] string message, LeaveReason leaveReason ) {
            if( message == null ) throw new ArgumentNullException( "message" );
            if( !Enum.IsDefined( typeof( LeaveReason ), leaveReason ) ) {
                throw new ArgumentOutOfRangeException( "leaveReason" );
            }
            if( Thread.CurrentThread != ioThread ) {
                throw new InvalidOperationException( "KickNow may only be called from player's own thread." );
            }
            State = SessionState.PendingDisconnect;
            LeaveReason = leaveReason;

            canQueue = false;
            canReceive = false;
            canSend = false;
            SendNow( PacketWriter.MakeDisconnect( message ) );
            writer.Flush();
        }
Example #44
0
 internal PlayerKickedEventArgs( [NotNull] Player player, [NotNull] Player kicker, [CanBeNull] string reason,
                                 bool announce, bool recordToPlayerDB, LeaveReason context ) {
     if( player == null ) throw new ArgumentNullException( "player" );
     if( kicker == null ) throw new ArgumentNullException( "kicker" );
     Player = player;
     Kicker = kicker;
     Reason = reason;
     Announce = announce;
     RecordToPlayerDB = recordToPlayerDB;
     Context = context;
 }
Example #45
0
 static void ShowPlayerDisconnectedMsg([NotNull] Player player, LeaveReason leaveReason)
 {
     if (player == null) throw new ArgumentNullException("player");
     string message = String.Format("{0}&SPlayer {1}&S left the server ({2})",
                                     BoldCode,
                                     player.ClassyName,
                                     (player.usedquit ? player.quitmessage : leaveReason.ToString()));
     SendChannelMessage(message);
 }
Example #46
0
 internal PlayerBeingKickedEventArgs( [NotNull] Player player, [NotNull] Player kicker, [CanBeNull] string reason,
                                       bool announce, bool recordToPlayerDB, LeaveReason context )
     : base( player, kicker, reason, announce, recordToPlayerDB, context ) {
 }
Example #47
0
 internal PlayerBeingKickedEventArgs( Player player, Player kicker, string reason, bool isSilent, bool recordToPlayerDB, LeaveReason context )
     : base( player, kicker, reason, isSilent, recordToPlayerDB, context ) {
 }
Example #48
0
 internal PlayerKickedEventArgs( Player player, Player kicker, string reason, bool isSilent, bool recordToPlayerDB, LeaveReason context )
     : base( player ) {
     Kicker = kicker;
     Reason = reason;
     IsSilent = isSilent;
     RecordToPlayerDB = recordToPlayerDB;
     Context = context;
 }
Example #49
0
 static void ShowPlayerDisconnectedMsg( Player player, LeaveReason leaveReason ) {
     string message = String.Format( "{0}&S* {1}&S left the server ({2})",
                                     BoldCode,
                                     player.ClassyName,
                                     leaveReason );
     SendAction( message );
 }
Example #50
0
        private void populateDatabase(LeaveManagerContext db)
        {
            Employee e1 = new Employee {
                EmployeeFirstName = "Pera", EmployeeLastName = "Peric", EmployeeEmail = "*****@*****.**", PasswordHash = EmployeesController.getHashedPassword("pera"), CreateDate = DateTime.Now, UpdateDate = DateTime.Now
            };
            Employee e2 = new Employee {
                EmployeeFirstName = "Mitar", EmployeeLastName = "Mitric", EmployeeEmail = "*****@*****.**", PasswordHash = EmployeesController.getHashedPassword("mitar"), CreateDate = DateTime.Now, UpdateDate = DateTime.Now
            };
            Employee e3 = new Employee {
                EmployeeFirstName = "Zika", EmployeeLastName = "Zikic", EmployeeEmail = "*****@*****.**", PasswordHash = EmployeesController.getHashedPassword("zika"), CreateDate = DateTime.Now, UpdateDate = DateTime.Now
            };
            Employee e4 = new Employee {
                EmployeeFirstName = "Marina", EmployeeLastName = "Maric", EmployeeEmail = "*****@*****.**", PasswordHash = EmployeesController.getHashedPassword("marina"), CreateDate = DateTime.Now, UpdateDate = DateTime.Now
            };
            Employee e5 = new Employee {
                EmployeeFirstName = "Maja", EmployeeLastName = "Majic", EmployeeEmail = "*****@*****.**", PasswordHash = EmployeesController.getHashedPassword("maja"), CreateDate = DateTime.Now, UpdateDate = DateTime.Now
            };
            Employee e6 = new Employee {
                EmployeeFirstName = "Nikola", EmployeeLastName = "Nikolic", EmployeeEmail = "*****@*****.**", PasswordHash = EmployeesController.getHashedPassword("nikola"), CreateDate = DateTime.Now, UpdateDate = DateTime.Now
            };
            Employee e7 = new Employee {
                EmployeeFirstName = "Marko", EmployeeLastName = "Markovic", EmployeeEmail = "*****@*****.**", PasswordHash = EmployeesController.getHashedPassword("marko"), CreateDate = DateTime.Now, UpdateDate = DateTime.Now
            };

            db.Employees.AddOrUpdate(e1, e2, e3, e4, e5, e6, e7);

            Role r1 = new Role {
                RoleName = "Worker", CreateDate = DateTime.Now, UpdateDate = DateTime.Now
            };
            Role r2 = new Role {
                RoleName = "Delivery Manager", CreateDate = DateTime.Now, UpdateDate = DateTime.Now
            };
            Role r3 = new Role {
                RoleName = "Department Manager", CreateDate = DateTime.Now, UpdateDate = DateTime.Now
            };
            Role r4 = new Role {
                RoleName = "Super User", CreateDate = DateTime.Now, UpdateDate = DateTime.Now
            };

            db.Roles.AddOrUpdate(r1, r2, r3, r4);

            EmployeeRole er1 = new EmployeeRole {
                Employee = e1, Role = r1, CreateDate = DateTime.Now, UpdateDate = DateTime.Now
            };
            EmployeeRole er2 = new EmployeeRole {
                Employee = e2, Role = r1, CreateDate = DateTime.Now, UpdateDate = DateTime.Now
            };
            EmployeeRole er3 = new EmployeeRole {
                Employee = e2, Role = r2, CreateDate = DateTime.Now, UpdateDate = DateTime.Now
            };
            EmployeeRole er4 = new EmployeeRole {
                Employee = e3, Role = r2, CreateDate = DateTime.Now, UpdateDate = DateTime.Now
            };
            EmployeeRole er5 = new EmployeeRole {
                Employee = e4, Role = r1, CreateDate = DateTime.Now, UpdateDate = DateTime.Now
            };
            EmployeeRole er6 = new EmployeeRole {
                Employee = e5, Role = r1, CreateDate = DateTime.Now, UpdateDate = DateTime.Now
            };
            EmployeeRole er7 = new EmployeeRole {
                Employee = e6, Role = r3, CreateDate = DateTime.Now, UpdateDate = DateTime.Now
            };
            EmployeeRole er8 = new EmployeeRole {
                Employee = e7, Role = r4, CreateDate = DateTime.Now, UpdateDate = DateTime.Now
            };

            db.EmployeeRoles.AddOrUpdate(er1, er2, er3, er4, er5, er6, er7, er8);

            LeaveReason lr1 = new LeaveReason()
            {
                LeaveReasonName = "Holiday", CreateDate = DateTime.Now, UpdateDate = DateTime.Now
            };
            LeaveReason lr2 = new LeaveReason()
            {
                LeaveReasonName = "Sickness", CreateDate = DateTime.Now, UpdateDate = DateTime.Now
            };
            LeaveReason lr3 = new LeaveReason()
            {
                LeaveReasonName = "Other reasons", CreateDate = DateTime.Now, UpdateDate = DateTime.Now
            };

            db.LeaveReasons.AddOrUpdate(lr1, lr2, lr3);

            RequestStatus rs1 = new RequestStatus()
            {
                RequestStatusName = "Pending", CreateDate = DateTime.Now, UpdateDate = DateTime.Now
            };
            RequestStatus rs2 = new RequestStatus()
            {
                RequestStatusName = "Approved", CreateDate = DateTime.Now, UpdateDate = DateTime.Now
            };
            RequestStatus rs3 = new RequestStatus()
            {
                RequestStatusName = "Denied", CreateDate = DateTime.Now, UpdateDate = DateTime.Now
            };

            db.RequestStatus.AddOrUpdate(rs1, rs2, rs3);

            db.SaveChanges();
        }