Example #1
0
        /// <summary>
        /// Функция получения информации о сотруднике
        /// </summary>
        /// <param name="WorkerId">Идентификатор сотрудника</param>
        /// <returns>Информация о сотруднике</returns>
        /// <exception cref="Exception">Ошибка запроса</exception>
        public static Data.Response.WorkerInfo GetWorker(string WorkerId)
        {
            var data = DB.MakeQuery($"SELECT `Name`, `Surname`, `Patronymic`, `Position`, `Department` FROM `workers` WHERE `Id` = '{WorkerId}'");

            if (data.Rows.Count != 1)
            {
                throw new Exception("Работник не найден");
            }

            var worker = new Data.Response.WorkerInfo()
            {
                Name       = data.Rows[0]["Name"].ToString(),
                Surname    = data.Rows[0]["Surname"].ToString(),
                Patronymic = data.Rows[0]["Patronymic"].ToString(),
                Position   = data.Rows[0]["Position"].ToString(),
                Department = data.Rows[0]["Department"].ToString()
            };

            data = DB.MakeQuery($"SELECT `Name` FROM `department` WHERE `Id` = '{worker.Department}'");

            if (data.Rows.Count == 1)
            {
                worker.Department = data.Rows[0][0].ToString();
            }

            return(worker);
        }
Example #2
0
        /// <summary>
        /// Контроллер получения информации о сотруднике
        /// <br>POST: api/Worker</br>
        /// </summary>
        /// <param name="request">Соообщение-запрос</param>
        /// <returns>Информация о сотруднике</returns>
        public async Task <HttpResponseMessage> Post(HttpRequestMessage request)
        {
            string ClientInfo = request.Headers.UserAgent.ToString();

            Logger.WorkerLog.Info($"POST Получено сообщение от {ClientInfo}");
            HttpResponseMessage response = new HttpResponseMessage();

            var    req      = new Data.Request.WorkerInfoRequest();
            string WorkerId = string.Empty;

            try
            {
                var a = await request.Content.ReadAsStringAsync();

                Logger.WorkerLog.Debug($"POST Содержимое сообщения {a}");
                req = JsonConvert.DeserializeObject <Data.Request.WorkerInfoRequest>(a);
            }
            catch (Exception exc)
            {
                Logger.WorkerLog.Error(exc, "POST Ошибка сериализации");
                return(MessageTemplate.SerializationError);
            }

            if (string.IsNullOrEmpty(req.Session))
            {
                Logger.WorkerLog.Warn("POST Пустой номер сессии");
            }

            Logger.StatusLog.Trace($"POST Авторизация сессии {req.Session}");

            switch (Authentication.Authenticate(req.Session, ClientInfo))
            {
            case AuthenticationResult.Ok:
                Logger.WorkerLog.Debug($"POST Авторизация пройдена");
                break;

            case AuthenticationResult.SessionNotFound:
                Logger.WorkerLog.Info("POST Сессия не найдена");
                return(MessageTemplate.SessionNotFound);

            case AuthenticationResult.ClientNotFound:
                Logger.WorkerLog.Info("POST Клиент не найден");
                return(MessageTemplate.ClientNotFound);
            }

            Logger.WorkerLog.Trace($"POST Поиск работника по сессии");

            try
            {
                WorkerId = DBClient.GetWorkerId(req.Session);
                Logger.WorkerLog.Debug($"POST Найден #{WorkerId}");
            }
            catch (Exception exc)
            {
                Logger.WorkerLog.Fatal(exc, "POST Ошибка поиска сотрудника");
                return(MessageTemplate.InternalError);
            }

            Logger.WorkerLog.Trace("Получение инфомрации о работнике");
            var worker = new Data.Response.WorkerInfo();

            try
            {
                worker = DBClient.GetWorker(WorkerId);
            }
            catch (Exception exc)
            {
                Logger.WorkerLog.Fatal(exc, $"POST Ошибка поиска информации о работнике #{WorkerId}");
                return(MessageTemplate.WorkerNotFound);
            }

            response.Content = new StringContent(JsonConvert.SerializeObject(worker));

            Logger.WorkerLog.Info($"POST Отправка ответа {ClientInfo}");
            return(response);
        }