public Worker44(ILogger <Worker44> logger,
                 WorkerModel _Worker44Model)
 {
     this._Worker44Model = _Worker44Model;
     _logger             = logger;
 }
 public Worker47(ILogger <Worker47> logger,
                 WorkerModel _Worker47Model)
 {
     this._Worker47Model = _Worker47Model;
     _logger             = logger;
 }
 public static bool TryGetGroupByUnsafeSlot(this Client client, short slot, out GroupEntity group, out WorkerModel worker)
 {
     group  = null;
     worker = null;
     if (slot > 0 || slot <= 3)
     {
         AccountEntity accountEntity = client.GetAccountEntity();
         slot--; // slot-- żeby numerowanie dla graczy było od 1 do 3
         List <GroupEntity> groups = EntityHelper.GetPlayerGroups(accountEntity).ToList();
         group  = slot < groups.Count ? groups[slot] : null;
         worker = accountEntity.CharacterEntity.DbModel.Workers.SingleOrDefault(g => g.Id == groups[slot].Id);
     }
     return(group != null && worker != null);
 }
 public Worker35(ILogger <Worker35> logger,
                 WorkerModel _Worker35Model)
 {
     this._Worker35Model = _Worker35Model;
     _logger             = logger;
 }
示例#5
0
 public Worker38(ILogger <Worker38> logger,
                 WorkerModel _Worker38Model)
 {
     this._Worker38Model = _Worker38Model;
     _logger             = logger;
 }
示例#6
0
 public void SetupTest()
 {
     wm = new WorkerModel();
 }
示例#7
0
 public Worker50(ILogger <Worker50> logger,
                 WorkerModel _Worker50Model)
 {
     this._Worker50Model = _Worker50Model;
     _logger             = logger;
 }
示例#8
0
    public static SuppressWindow CreateNullCreatureSuppressWindow(CreatureModel nullCreature, WorkerModel model)
    {
        Debug.Log("NullCreature Suppress");
        if (currentWindow.gameObject.activeSelf)
        {
            if (currentWindow.target == model)
            {
                return(currentWindow);
            }
        }
        else
        {
            currentWindow.gameObject.SetActive(true);
            currentWindow.line.gameObject.SetActive(true);
            currentWindow.Activate();
        }

        SuppressWindow inst = currentWindow;

        inst.target = model;
        if (model is AgentModel)
        {
            inst.targetType = TargetType.AGENT;
        }
        else if (model is OfficerModel)
        {
            inst.targetType = TargetType.OFFICER;
        }
        Sefira modelSefira = nullCreature.sefira;

        if (inst.currentSefira != modelSefira)
        {
            inst.currentSefira = modelSefira;
            inst.agentList.Clear();
            inst.SetSprites(modelSefira);
        }
        inst.InitAgentList();
        inst.ShowAgentList();

        CreatureUnit unit = CreatureLayer.currentLayer.GetCreature(nullCreature.instanceId);

        if (model is AgentModel)
        {
            AgentUnit agentUnit = AgentLayer.currentLayer.GetAgent(model.instanceId);
            inst.attachedPos = agentUnit.transform;
            inst.ui.Init(nullCreature, TargetType.CREATURE);
        }
        else if (model is OfficerModel)
        {
            OfficerUnit officerUnit = OfficerLayer.currentLayer.GetOfficer(model.instanceId);
            inst.attachedPos = officerUnit.transform;
            inst.ui.Init(nullCreature, TargetType.CREATURE);
        }


        if (inst.activatableObjectInitiated == false)
        {
            inst.UIActivateInit();
        }

        Canvas canvas = inst.transform.GetChild(0).GetComponent <Canvas>();

        canvas.worldCamera = UIActivateManager.instance.GetCam();
        currentWindow      = inst;
        Debug.Log("Null Creature's Window Opened");
        return(inst);
    }
示例#9
0
        private BindingList <WorkerModel> LoadWorkersFromDB()
        {
            if (npgSqlConnection.State == System.Data.ConnectionState.Closed || npgSqlConnection.State == System.Data.ConnectionState.Connecting)
            {
                throw new Exception("БД не подключилась");
            }
            NpgsqlCommand             npgsqlCommand = new NpgsqlCommand("SELECT * FROM employees;", npgSqlConnection);
            BindingList <WorkerModel> workers       = new BindingList <WorkerModel>();

            using (NpgsqlDataReader reader = npgsqlCommand.ExecuteReader())
            {
                if (reader.HasRows)
                {
                    while (reader.Read())
                    {
                        WorkerModel worker = new WorkerModel()
                        {
                            Id       = Convert.ToInt32(reader["employees_id"].ToString()),
                            Name     = reader["name"].ToString(),
                            Position = reader["position"].ToString(),
                            Salary   = Convert.ToInt32(reader["salary"].ToString()),
                            Login    = reader["login"].ToString()
                        };
                        workers.Add(worker);
                    }
                }
            }
            Thread.Sleep(50);

            string log;

            foreach (WorkerModel worker in workers)
            {
                var roles = new List <string>();
                log = worker.Login;
                NpgsqlCommand command = new NpgsqlCommand($"select rolname from pg_roles where pg_has_role('{log}', oid, 'member');", npgSqlConnection);
                using (NpgsqlDataReader reader = command.ExecuteReader())
                {
                    if (reader.HasRows)
                    {
                        while (reader.Read())
                        {
                            roles.Add(reader.GetString(0));
                        }
                    }
                }
                if (roles.Contains("admin"))
                {
                    worker.Role = "Администратор";
                }
                else if (roles.Contains("worker"))
                {
                    worker.Role = "Работник";
                }
                else if (roles.Contains("manager"))
                {
                    worker.Role = "Менеджер";
                }
            }
            return(workers);
        }
示例#10
0
 public ActionResult Worker(WorkerModel work)
 {
     return(RedirectToAction("JobDescription", "Home", work));
 }
示例#11
0
 public Worker23(ILogger <Worker23> logger,
                 WorkerModel _Worker23Model)
 {
     this._Worker23Model = _Worker23Model;
     _logger             = logger;
 }
示例#12
0
        public ActionResult Worker()
        {
            WorkerModel workerModel = new WorkerModel();

            return(View(workerModel));
        }
        public async Task HandleAsync(ManagementModel message)
        {
            //TODO: This could be a helper class as it is shared between BeginProcess and SaveDetails messagehandlers
            var apiUrl  = Environment.GetEnvironmentVariable("ApiBaseUrl");
            var apiKey  = Environment.GetEnvironmentVariable("ApiKey");
            var request = message.IsGardenSearch
                ? $"{apiUrl}{apiKey}{AppConst.SearchQuery}/tuin/&page={message.ObjectNumber}&pagesize=25"
                : $"{apiUrl}{apiKey}{AppConst.SearchQuery}&page={message.ObjectNumber}&pagesize=25";
            var workDetails = new WorkerModel();

            try
            {
                var result = await _restService.GetAsync(request);

                workDetails = JsonConvert.DeserializeObject <WorkerModel>(result);
                await LogStartProgressAsync(message.ProcessId, workDetails, message.IsGardenSearch, false);

                for (int countToEnd = 1; countToEnd <= workDetails.Paging.AantalPaginas; countToEnd++)
                {
                    await SendBasicSearchMessageAsync(message.ProcessId, countToEnd, workDetails, message.IsGardenSearch);
                }

                //If at end restart process with search criteria for garden.
                if (!message.IsGardenSearch)
                {
                    await SendSearchCriteriaMessage(message.ProcessId);
                }
            }
            catch (Exception)
            {
                await LogStartProgressAsync(message.ProcessId, workDetails, message.IsGardenSearch, true);

                //Would preferably log exceptions into Application Insights. This will allow us to query AI and
                //see what went wrong on any given day. As AI cost a bit of money, I did not create this resource in Azure

                //Example Query for AI for exceptions
                //exceptions | where timestamp < ago(7d)


                //If this is seen as warning or fatal level (at minimum I see this as a warning that process didn't start),
                //one can also create an Alert in Azure that when AI has a severity level of 2 or 3 someone will get an email or sms

                //Code recently done for logging these types of warnings that could be implemented for exceptions
                //AI Query = traces | where (severityLevel == 3 or severityLevel == 2 ) and (message startswith 'FATAL' or message startswith 'WARNING')
                //private bool IsValidSasToken(OperationalSettings connectionSettings)
                //{
                //    var productionConnection = connectionSettings.ProductionConnection;

                //    var indexOfExpirationDate = productionConnection.IndexOf("se=");

                //    if (indexOfExpirationDate < 0)
                //    {
                //        //severitylevel 3 in AI
                //        _logger.Fatal("FATAL: no valid signed expiry date found");
                //        return false;
                //    }
                //    var expiryDate = productionConnection.Substring((indexOfExpirationDate + 3), 10);

                //    var expirationDate = DateTime.ParseExact(
                //        expiryDate,
                //        "yyyy-MM-dd",
                //        CultureInfo.InvariantCulture);

                //    var today = DateTime.UtcNow.Date;

                //    var expirationWarning = DateTime.Compare(expirationDate.AddDays(-10), today);
                //    var expirationError = DateTime.Compare(expirationDate, today);

                //    if (expirationError == 0)
                //    {
                //        _logger.Fatal("FATAL: sas connection is expiring today {Today}", today);
                //        return false;
                //    }

                //    if (expirationError < 0)
                //    {
                //        _logger.Fatal("FATAL: sas token has expired on {ExpirationDate}", expirationDate);
                //        return false;
                //    }

                //    if (expirationWarning <= 0)
                //    {
                //        //severitylevel 2 in AI
                //        _logger.Warning("WARNING: sas token will expire in a few days");
                //    }

                //    return true;
                //}
            }
        }
示例#14
0
 public Creator(WorkerModel _worker, StatusModel _status)
 {
     worker = _worker;
     status = _status;
 }
示例#15
0
 public async Task <OperationResult> Update([FromBody] WorkerModel workerModel)
 {
     return(await _workersService.Update(workerModel));
 }
示例#16
0
        private async void AddTask_Button_Click(object sender, RoutedEventArgs e)
        {
            if (AddTaskDescription_TextBox.Text.Length == 0 || AddTaskSerial_TextBox.Text.Length == 0 ||
                AddTaskDaysToComplete_TextBox.Text.Length == 0 || AddTaskClient_ComboBox.SelectedItem == null ||
                AddTaskPriority_ComboBox.SelectedItem == null || AddTaskSlave_ComboBox.SelectedItem == null)
            {
                return;
            }
            int serial;
            int days;

            if (!Int32.TryParse(AddTaskSerial_TextBox.Text, out serial))
            {
                MessageBox.Show("Cерийный номер должен содержать только цифры", "Ошибка формата данных", MessageBoxButton.OK, MessageBoxImage.Error);
                return;
            }
            if (!Int32.TryParse(AddTaskDaysToComplete_TextBox.Text, out days))
            {
                MessageBox.Show("Укажите колличество дней цифрами", "Ошибка формата данных", MessageBoxButton.OK, MessageBoxImage.Error);
                return;
            }
            if (Convert.ToInt32(AddTaskDaysToComplete_TextBox.Text) < 1)
            {
                MessageBox.Show("Укажите колличество дней больше 0", "Ошибка формата данных", MessageBoxButton.OK, MessageBoxImage.Error);
                return;
            }
            LoadGif.Visibility  = Visibility.Visible;
            WorkSheet.IsEnabled = false;
            ComboBoxItem boxItem      = AddTaskPriority_ComboBox.SelectedItem as ComboBoxItem;
            string       priority     = boxItem.Tag as string;
            string       description  = AddTaskDescription_TextBox.Text;
            ClientModel  chosenClient = AddTaskClient_ComboBox.SelectedItem as ClientModel;
            WorkerModel  chosenSlave  = AddTaskSlave_ComboBox.SelectedItem as WorkerModel;

            if (currentUser.Role == "Работник")
            {
                if (currentUser.Id != chosenSlave.Id)
                {
                    WorkSheet.IsEnabled = true;
                    LoadGif.Visibility  = Visibility.Collapsed;
                    MessageBox.Show("Вы не можете назначать исполнителем не себя", "Ошибка доступа", MessageBoxButton.OK, MessageBoxImage.Error);
                    return;
                }
            }
            else if (currentUser.Role == "Менеджер")
            {
                if (currentUser.Id != chosenSlave.Id && chosenSlave.Role == "manager")
                {
                    WorkSheet.IsEnabled = true;
                    LoadGif.Visibility  = Visibility.Collapsed;
                    MessageBox.Show("Вы не можете назначать исполнителем начальников отделов", "Ошибка доступа", MessageBoxButton.OK, MessageBoxImage.Error);
                    return;
                }
            }
            await Task.Run(() =>
            {
                NpgsqlCommand npgsqlCommand = new NpgsqlCommand($"INSERT INTO \"tasks\" (description, client_id, serial_number, creation_date, days_to_complete, master_id, priority, slave_id) VALUES('{description}', {chosenClient.Id}, {serial}, :date, :days, {currentUser.Id}, '{priority}', {chosenSlave.Id});", npgSqlConnection);
                NpgsqlParameter param1      = new NpgsqlParameter("date", NpgsqlDbType.Date);
                param1.Value            = NpgsqlDate.Now;
                NpgsqlTimeSpan timeSpan = NpgsqlTimeSpan.FromDays(days);
                NpgsqlParameter param3  = new NpgsqlParameter("days", NpgsqlDbType.Interval);
                param3.Value            = timeSpan;
                npgsqlCommand.Parameters.Add(param1);
                npgsqlCommand.Parameters.Add(param3);
                npgsqlCommand.ExecuteNonQuery();
            });

            tasksList = LoadTasksFromDB();
            tasksList = currentUser.Role == "Работник" ? new BindingList <TaskModel>(tasksList.Where(t => t.Slave.Id == currentUser.Id).ToList()) : tasksList;
            Tasks_DataGrid.ItemsSource = tasksList;
            WorkSheet.IsEnabled        = true;
            LoadGif.Visibility         = Visibility.Collapsed;
            ClearForm_Button_Click(1, new RoutedEventArgs());
        }
 public Worker12(ILogger <Worker12> logger,
                 WorkerModel _workerModel)
 {
     this._workerModel = _workerModel;
     _logger           = logger;
 }
示例#18
0
 public PendingChecker(WorkerModel _worker, StatusModel _status)
 {
     worker = _worker;
     status = _status;
 }