Exemple #1
0
        public async Task Create(SMSSendLogCreateDto model)
        {
            //Map and create log
            var log = _mapper.Map <SMSSendLog>(model);

            log.CreatedAt = DateTime.Now;
            log.CreatedBy = "42cde713-2368-41fa-b158-a452fc2cfda6";
            _dbContext.SMSSendLogs.Add(log);

            await _dbContext.SaveChangesAsync();
        }
        public async Task <bool> SendMessage(string phoneNumber, string message)
        {
            // Получаем конфигурацию СМС шлюза.
            var settings = await _smsSettingService.GetFirstActive();

            if (settings == null)
            {
                return(false);
            }

            // Подготавливаем СМС шлюз.
            SmsService sender = new OsonSmsService(new Uri(settings.BaseUrl), settings.Sender, settings.Login, settings.PassHash);

            // Отправляем сообщение через СМС шлюз.
            var response = await sender.SendMessage(phoneNumber, message);

            // Просто получаем код ответа запроса.
            // TODO: Что если выдала ошибку?
            var statusCode = 0;

            if (response != null)
            {
                statusCode = 200;
                if (response["error"]?["code"] != null)
                {
                    statusCode = int.Parse(response["error"]["code"].ToString());
                    _logger.Error($"SmsService : Service returned exception code {statusCode} for {phoneNumber}");
                }
                else
                {
                    _logger.Information($"SmsService : Message for {phoneNumber} accepted by service");
                }
            }

            // Записываем данные в лог с указанием статуса отправки.
            var log = new SMSSendLogCreateDto
            {
                Message      = message,
                PhoneNumber  = phoneNumber,
                SMSSettingId = settings.Id,
                Status       = statusCode,
                HandlerId    = (int)SMSHandlers.HermesDevlieryAPI_Undefined,
                SenderIp     = HttpContext.Current.Request.UserHostAddress
            };
            await _smsSendLogService.Create(log);

            return(true);
        }