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); }
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); }
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); } }
/*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; } }
void disconnect(Link link, LeaveReason reason, string additional) { lock (link) link.Stop(); lock (_clients) _clients.Remove(link); leaveClient?.Invoke(link.ID, reason, additional); }
internal static void RaiseSessionDisconnectedEvent([NotNull] Player player, LeaveReason leaveReason) { if (player == null) { throw new ArgumentNullException(nameof(player)); } SessionDisconnected?.Invoke(null, new SessionDisconnectedEventArgs(player, leaveReason)); }
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 ) ); }
/*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)); } }
internal static void RaiseSessionDisconnectedEvent([NotNull] Player player, LeaveReason leaveReason) { var h = SessionDisconnected; if (h != null) { h(null, new SessionDisconnectedEventArgs(player, leaveReason)); } }
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; }
internal SessionDisconnectedEventArgs([NotNull] Player player, LeaveReason leaveReason) { if (player == null) { throw new ArgumentNullException("player"); } Player = player; LeaveReason = leaveReason; }
internal static void RaiseSessionDisconnectedEvent(Session session, LeaveReason leaveReason) { var h = SessionDisconnected; if (h != null) { h(null, new SessionDisconnectedEventArgs(session, leaveReason)); } }
void _disconnect(LeaveReason reason, string additional) { Connected = false; lock (tcp) tcp.Close(); lock (link) link.Stop(); disconnected?.Invoke(reason, additional); debugNotice(this); }
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)); }
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; }
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); }
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; }
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)); } }
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)); } }
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")); } }
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); }
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")); } }
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; }
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); }
public SessionDisconnectedEventArgs( Session session, LeaveReason leaveReason ) { Session = session; LeaveReason = leaveReason; }
internal PlayerDisconnectedEventArgs(Player player, LeaveReason leaveReason) : base(player) { LeaveReason = leaveReason; }
/// <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(); }
internal PlayerDisconnectedEventArgs( [NotNull] Player player, LeaveReason leaveReason, bool isFake ) { if( player == null ) throw new ArgumentNullException( "player" ); Player = player; LeaveReason = leaveReason; }
/// <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 ) ); }
public override void Read(BenCmdServer client) { PlayerName = client.ReadString(16); Reason = (LeaveReason)client.ReadByte(); }
internal SessionDisconnectedEventArgs([NotNull] Player player, LeaveReason leaveReason) { Player = player ?? throw new ArgumentNullException(nameof(player)); LeaveReason = leaveReason; }
public PacketPlayerLeave() : base(3, true, false) { PlayerName = ""; Reason = LeaveReason.Quit; }
/*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 ) ); }
internal PlayerBeingKickedEventArgs([NotNull] Player player, [NotNull] Player kicker, [CanBeNull] string reason, bool announce, bool recordToPlayerDB, LeaveReason context) : base(player, kicker, reason, announce, recordToPlayerDB, context) { }
internal static void RaiseSessionDisconnectedEvent( Session session, LeaveReason leaveReason ) { var h = SessionDisconnected; if( h != null ) h( null, new SessionDisconnectedEventArgs( session, leaveReason ) ); }
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(); }
/// <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(); } }
internal PlayerDisconnectedEventArgs( Player player, LeaveReason leaveReason ) : base( player ) { LeaveReason = leaveReason; }
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); }
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 ) ); }
/// <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(); }
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; }
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); }
internal PlayerBeingKickedEventArgs( [NotNull] Player player, [NotNull] Player kicker, [CanBeNull] string reason, bool announce, bool recordToPlayerDB, LeaveReason context ) : base( player, kicker, reason, announce, recordToPlayerDB, context ) { }
internal PlayerBeingKickedEventArgs( Player player, Player kicker, string reason, bool isSilent, bool recordToPlayerDB, LeaveReason context ) : base( player, kicker, reason, isSilent, recordToPlayerDB, context ) { }
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; }
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 ); }
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(); }