Пример #1
0
 public List<IncomeSMS> GetNotSendIncomeSMS(GsmModem modem, SMSContext context)
 {
     try
     {
         List<IncomeSMS> list = context.IncomeSMS.Where(x => (x.Status == IncomeSMS.IncomeSMSStatus.Checked) && (x.RecipientNumber == modem.ServicePhone.PhoneNumber)).ToList();
         return list;
     }
     catch (Exception e)
     {
         logger.Error("Ошибка чтения из базы данных. Не удалось получить список не отправленных входящих сообщений.\r\nТекст ошибки:", e);
         return null;
     }
 }
Пример #2
0
        public List<IncomeClientSMS> GetIncomeSMSClient(GsmModem modem, IncomeClientSMS.IncomeClientSMSStatus Status, SMSContext context)
        {
            try
            {

                List<IncomeClientSMS> list = context.IncomeClientSMS.Where(x => (x.Status == Status) && x.RecipientNumber.Equals(modem.ServicePhone.PhoneNumber)).ToList();
                return list;
            }
            catch (Exception e)
            {
                logger.Error("Ошибка чтения из базы данных. Не удалось получить список не отправленных сообщений клиента.\r\nТекст ошибки:", e);
                return null;
            }
        }
Пример #3
0
        private IncomeSMS SaveIncomeSms(IncomeSMS incomeSMS, SMSContext context)
        {
            try
            {
                if (incomeSMS.MessageId == 0)
                    context.IncomeSMS.Add(incomeSMS);
                else
                    context.Entry(incomeSMS).State = System.Data.Entity.EntityState.Modified;

                context.SaveChanges();

            }
            catch (Exception e)
            {
                logger.Error("Ошибка чтения  из базы данных.Не удалось сохранить  входящее сообщения.\r\nТекст ошибки:", e);
            }

            return incomeSMS;
        }
Пример #4
0
        private string GetSecretKey(Client client)
        {
            string secretKey = CreateSecretKey();
            try
            {
                using (SMSContext context = new SMSContext())
                {
                    while (context.IncomeSMS.Where(x => x.Client.ClientId == client.ClientId && x.SecretKey == secretKey).Count() > 0)
                    {
                        secretKey = CreateSecretKey();
                    }
                }
            }
            catch (Exception e)
            {
                logger.Error("Ошибка чтения из базы данных.Не удалось проверить секретный ключ на уникальность.", e);
            }

            return secretKey;
        }
Пример #5
0
 private List<IncomeClientEmail> GetNotSendIncomeClientEmail(GsmModem modem, SMSContext context)
 {
     try
     {
         List<IncomeClientEmail> result = context.IncomeClientEmail.Where(x => x.Client.ClientPhone.Select(y => y.ServicePhone.ServicePhoneId).Contains(modem.ServicePhone.ServicePhoneId) && x.IsSent != true).ToList();
         return result;
     }
     catch (Exception e)
     {
         logger.Error("Ошибка чтения не отправленных сообщений из базы данных.\r\nТекст ошибки:", e);
         return null;
     }
 }
Пример #6
0
 private IncomeSMS GetIncomeSMS(int MessageId, SMSContext context)
 {
     try
     {
         IncomeSMS queryResult = context.IncomeSMS.FirstOrDefault(x => x.MessageId == MessageId);
         return queryResult;
     }
     catch (Exception e)
     {
         logger.Error("Ошибка чтения из базы данных.Не удалось загрузить входящее сообщение.", e);
         return null;
     }
 }
Пример #7
0
 private Client GetClientByShortKey(string ShortKey, SMSContext context)
 {
     try
     {
         Client queryResult;
         queryResult = context.Client.FirstOrDefault(x => x.ShortKey.ToLower().Replace(" ", "").Equals(ShortKey.ToLower()));
         return queryResult;
     }
     catch (Exception e)
     {
         logger.Error("Ошибка чтения из базы данных. Не удалось получить клиента по ключу.\r\nТекст ошибки:", e);
         return null;
     }
 }
Пример #8
0
        private Client GetClientByServicePhone(ServicePhone phone, SMSContext context)
        {
            try
            {
                Client queryResult;
                queryResult = context.ClientPhone.FirstOrDefault(x => x.ServicePhone.PhoneNumber.Equals(phone.PhoneNumber)).Client;

                return queryResult;
            }
            catch (Exception e)
            {
                logger.Error("Ошибка чтения из базы данных. Не удалось получить клиента по приватному  сервисному телефону.\r\nТекст ошибки:", e);
                return null;
            }
        }
Пример #9
0
        private Client GetClientByEmail(string email)
        {
            try
            {
                Client queryResult;
                using (SMSContext context = new SMSContext())
                {
                    queryResult = context.Client.FirstOrDefault(x => x.Email.Equals(email));

                }

                return queryResult;
            }
            catch (Exception e)
            {
                logger.Error("Ошибка чтения из базы данных. Не удалось получить клиента по E-mail.\r\nТекст ошибки:", e);
                return null;
            }
        }
Пример #10
0
 public void SendEmailSetResult(object Token, AsyncCompletedEventArgs e)
 {
     IncomeSMSSaveMutex.WaitOne();
     using (SMSContext context = new SMSContext())
     {
         IncomeSMS incomeSMS = (IncomeSMS)e.UserState;
         incomeSMS.EmailIsSend = true;
         incomeSMS = ChangeIncomeSMS(incomeSMS, context);
         if (incomeSMS.SMSIsSend == true)
             ChangeIncomeSMSStatus((IncomeSMS)e.UserState, IncomeSMS.IncomeSMSStatus.Sent, context);
     }
     IncomeSMSSaveMutex.ReleaseMutex();
 }
Пример #11
0
 public void ProcessingNotSentIncomeClientEmail(GsmModem modem)
 {
     using (SMSContext context = new SMSContext())
     {
         List<IncomeClientEmail> messages = GetNotSendIncomeClientEmail(modem, context);
         foreach (IncomeClientEmail message in messages)
         {
             if (message.Client != null && ClientIsNotBlocked(message.Client))
             {
                 IncomeSMS incomeSMS = GetIncomeSMS(message.SecretKey, message.Client.ClientId, context);
                 if (incomeSMS != null)
                 {
                     message.IsSent = modem.SendSMS(incomeSMS.SenderNumber, message.Text);
                     SaveIncomeClientEmail(message, context);
                 }
             }
         }
     }
 }
Пример #12
0
        public ShortMessageCollection ProcessingNewIncomeSMSMessages(ShortMessageCollection messages, GsmModem modem)
        {
            IncomeSMSSaveMutex.WaitOne();
            ShortMessageCollection notSend = new ShortMessageCollection();
            try
            {
                using (SMSContext context = new SMSContext())
                {

                    ServicePhone ServicePhone = GetServicePhoneById(modem.ServicePhone.ServicePhoneId, context);
                    foreach (ShortMessage message in messages)
                    {
                        bool NotSaved = true;
                        bool isGarbage = true;
                        try
                        {
                            int firstWordLength = message.Text.Contains(" ") ? message.Text.Substring(0, message.Text.IndexOf(" ")).Length : 0;
                            string firstWord = message.Text.Contains(" ") ? message.Text.Substring(0, message.Text.IndexOf(" ")).Replace("\n", "").Replace("\r", "") : null;
                            Client client = GetClientByPhone(message.Sender, context);
                            bool haveFirstWord = !String.IsNullOrEmpty(firstWord);
                            bool ClientSMSAndNotAnswer = false;

                            if (client != null && haveFirstWord)
                            {
                                isGarbage = false;
                                IncomeSMS incomeSMS = GetIncomeSMS(firstWord, client.ClientId, context);
                                if (incomeSMS == null)
                                    ClientSMSAndNotAnswer = true;
                                else
                                {

                                    message.Recipient = incomeSMS.SenderNumber;
                                    message.Sender = ServicePhone.PhoneNumber;
                                    message.Text = message.Text.Substring(firstWordLength + 1);
                                    message.IsRead = true;
                                    if (ClientIsNotBlocked(client))
                                    {
                                        IncomeClientSMS incomeClientSMS = SaveIncomeClientSMS(message, ServicePhone, incomeSMS, client, context);
                                        if (incomeClientSMS != null) NotSaved = false;
                                        int answerId = AddAnswer(incomeSMS.MessageId, incomeClientSMS.IncomeClientSMSId, Answer.AnswerSource.SMS);
                                    }
                                }
                            }
                            if ((client == null || ClientSMSAndNotAnswer) && message.Sender != null && message.Sender.Length > 10)
                            {
                                isGarbage = false;
                                client = haveFirstWord ? GetClientByShortKey(firstWord, ServicePhone, context) : null;
                                string text;
                                if (ServicePhone.Type == ServicePhone.PhoneType.Private)
                                {
                                    client = GetClientByServicePhone(ServicePhone, context);
                                    text = message.Text;
                                }
                                else
                                {
                                    text = message.Text.Substring(firstWord.Length + 1);
                                }

                                IncomeSMS incomeSMS = null;

                                incomeSMS = context.IncomeSMS.FirstOrDefault(x => x.SenderNumber.Equals(message.Sender) && x.RecipientNumber.Equals(ServicePhone.PhoneNumber) && DbFunctions.DiffSeconds(x.DateTime, message.SentDate) <= 30 && x.Status != IncomeSMS.IncomeSMSStatus.Sent);

                                if (incomeSMS != null)
                                {
                                    incomeSMS.Text += message.Text;
                                    context.SaveChanges();
                                    NotSaved = false;
                                    message.IsRead = true;
                                }
                                else if (incomeSMS == null && client != null)
                                {
                                    if (ClientIsNotBlocked(client))
                                    {
                                        incomeSMS = SaveIncomeSMS(client, text, message.Sender, ServicePhone.PhoneNumber, message.SentDate, firstWord, context);
                                        if (incomeSMS != null) NotSaved = false;
                                    }
                                    message.IsRead = true;
                                }

                            }

                            if (NotSaved & !isGarbage)
                            {
                                notSend.Add(message);
                                message.IsRead = true;
                            }
                        }
                        catch
                        {
                            if (NotSaved & !isGarbage)
                            {
                                notSend.Add(message);
                                message.IsRead = true;
                            }
                        }

                    }

                    foreach (ShortMessage message in messages.Where(x => x.IsRead == false))
                    {
                        bool Saved = false;
                        try
                        {
                            Client client = GetClientByPhone(message.Sender, context);
                            if (client != null)
                            {
                                IncomeClientSMS incomeClientSMS = null;

                                incomeClientSMS = context.IncomeClientSMS.FirstOrDefault(x => x.Client.ClientId == client.ClientId && DbFunctions.DiffSeconds(x.DateTime, message.SentDate) <= 15 && x.Status != IncomeClientSMS.IncomeClientSMSStatus.Sent);

                                if (incomeClientSMS != null)
                                {

                                    incomeClientSMS.Text += message.Text;
                                    context.Entry(incomeClientSMS).State = System.Data.Entity.EntityState.Modified;
                                    context.SaveChanges();
                                    Saved = true;
                                }

                            }
                            else
                            {
                                IncomeSMS incomeSMS = null;

                                incomeSMS = context.IncomeSMS.FirstOrDefault(x => x.SenderNumber.Equals(message.Sender) && x.RecipientNumber.Equals(ServicePhone.PhoneNumber) && DbFunctions.DiffSeconds(x.DateTime, message.SentDate) <= 30 && x.Status != IncomeSMS.IncomeSMSStatus.Sent);

                                if (incomeSMS != null)
                                {
                                    incomeSMS.Text += message.Text;
                                    context.Entry(incomeSMS).State = System.Data.Entity.EntityState.Modified;
                                    context.SaveChanges();
                                    Saved = true;
                                }

                            }

                        }
                        catch
                        {
                            if (!Saved) notSend.Add(message);
                        }

                    }

                }
                return notSend;
            }
            catch (Exception e)
            {
                notSend = messages;
                return notSend;
            }
            finally
            {
                IncomeSMSSaveMutex.ReleaseMutex();
            }
        }
Пример #13
0
        public void ProcessingNewIncomeClientWebMessages(GsmModem modem)
        {
            List<IncomeClientWeb> webMessages;

            using (SMSContext context = new SMSContext())
            {
                webMessages = context.IncomeClientWeb.Where(x => x.Client.ClientPhone.Select(y => y.ServicePhone.ServicePhoneId).Contains(modem.ServicePhone.ServicePhoneId) && x.IsSent != true && x.Client.IsBlocked != true).ToList();

            }

            foreach (IncomeClientWeb incomeClientWeb in webMessages)
            {
                IncomeSMS incomeSMS;

                using (SMSContext context = new SMSContext())
                {
                    incomeSMS = context.IncomeSMS.FirstOrDefault(x => x.MessageId == incomeClientWeb.MessageId);

                    if (incomeSMS != null)
                    {
                        if (incomeSMS.MessageType == IncomeSMS.Type.Email)
                        {
                            if (!String.IsNullOrEmpty(incomeSMS.SenderAddress))
                                emailBox.SendEmail(incomeClientWeb.Text, "Re:" + incomeSMS.ShortKey, incomeSMS.SenderAddress, SendIncomeClientWebAnswerSetResult, incomeClientWeb);

                        }
                        else
                            if (!String.IsNullOrEmpty(incomeSMS.SenderNumber))
                                if (modem.SendSMS(incomeSMS.SenderNumber, incomeClientWeb.Text))
                                    SaveIncomeClientWebSendResult(incomeClientWeb, context);
                    }
                }
            }
        }
Пример #14
0
        public void ProcessingCheckedMessages(GsmModem modem)
        {
            IncomeSMSSaveMutex.WaitOne();
            try
            {
                using (SMSContext context = new SMSContext())
                {
                    IList<IncomeSMS> IncomeSmsList = GetNotSendIncomeSMS(modem, context);

                    foreach (IncomeSMS incomeSMS in IncomeSmsList)
                    {
                        bool SMSresult = false;
                        if (incomeSMS.Client != null && incomeSMS.SMSIsSend != true)
                        {
                            SMSresult = modem.SendSMS(incomeSMS.Client.PhoneNumber, incomeSMS.SecretKey + " " + incomeSMS.Text);
                            incomeSMS.SMSIsSend = SMSresult;
                        }
                        else
                        {
                            incomeSMS.SMSIsSend = true;
                        }

                        if (incomeSMS.EmailIsSend != true) emailBox.SendEmail(incomeSMS.Text, "Сообщение №" + incomeSMS.SecretKey, incomeSMS.Client.Email, SendEmailSetResult, incomeSMS);

                        if (SMSresult && incomeSMS.EmailIsSend == true)

                            ChangeIncomeSMSStatus(incomeSMS, IncomeSMS.IncomeSMSStatus.Sent, context);
                        else
                            ChangeIncomeSMS(incomeSMS, context);
                    }

                    List<IncomeClientSMS> IncomeClientSmsList = GetIncomeSMSClient(modem, IncomeClientSMS.IncomeClientSMSStatus.Checked, context);

                    foreach (IncomeClientSMS IncomeClientSms in IncomeClientSmsList)
                    {
                        bool result;
                        if (IncomeClientSms.IncomeSMS.MessageType == IncomeSMS.Type.Email)
                            emailBox.SendEmail(IncomeClientSms.Text, "Re: " + IncomeClientSms.IncomeSMS.ShortKey, IncomeClientSms.IncomeSMS.SenderAddress, SendIncomeClientSMSSetResult, IncomeClientSms);
                        else
                        {
                            result = modem.SendSMS(IncomeClientSms.IncomeSMS.SenderNumber, IncomeClientSms.Text);
                            if (result)
                                ChangeIncomeClientSMSStatus(IncomeClientSms, IncomeClientSMS.IncomeClientSMSStatus.Sent, context);
                        }
                    }
                }
            }
            catch (Exception e)
            {
                throw e;
            }
            finally
            {
                IncomeSMSSaveMutex.ReleaseMutex();
            }
        }
Пример #15
0
        public void ProcesingNewIncomeClientEmail(ImapX.Message[] emailMessages, List<Client> clients)
        {
            bool IsClientButNotAnswerFlag;

            using (SMSContext context = new SMSContext())
            {
                List<ImapX.Message> localUids = new List<ImapX.Message>();
                foreach (ImapX.Message message in emailMessages)
                {

                    IsClientButNotAnswerFlag = false;
                    if (message != null && message.From != null && !String.IsNullOrEmpty(message.From.Address))
                    {
                        Client client = clients.FirstOrDefault(x => x.Email.ToLower().Equals(message.From.Address.ToLower()));
                        if (client != null && ClientIsNotBlocked(client))
                        {
                            string SecretKey = message.Subject.Substring(message.Subject.IndexOf('№') + 1).Replace(" ", "").Replace("\u2192", "");
                            if (!String.IsNullOrEmpty(SecretKey) && message.Body != null)
                            {
                                IncomeSMS incomeSMS = GetIncomeSMS(SecretKey, client.ClientId, context);
                                if (incomeSMS != null)
                                {
                                    string text;

                                    string messageText = null;

                                    try
                                    {
                                        messageText = message.Body.Text;
                                    }
                                    catch
                                    {
                                        messageText = emailBox.GetTrubleMessageText(message.From.Address, message.Subject, (DateTime)message.Date);
                                    }

                                    if (messageText != null)
                                    {
                                        if (messageText.Contains("\r\n)\r\nIMAPX"))
                                            text = messageText.Substring(0, messageText.IndexOf("\r\n)\r\nIMAPX"));
                                        else
                                            text = messageText;
                                        if (text.Contains("\r\n"))
                                            text = text.Substring(0, text.IndexOf("\r\n"));

                                        IncomeClientEmail incomeClientEmail = new IncomeClientEmail()
                                        {

                                            ClientId = client.ClientId,
                                            DateTime = DateTime.Now,
                                            MessageId = incomeSMS.MessageId,
                                            IsSent = false,
                                            SenderEmail = client.Email,
                                            SecretKey = SecretKey,
                                            RecipientEmail = emailBox.Email,
                                            Text = text
                                        };
                                        incomeClientEmail = SaveIncomeClientEmail(incomeClientEmail, context);

                                        AddAnswer(incomeSMS.MessageId, incomeClientEmail.IncomeClientEmailId, Answer.AnswerSource.Email);

                                        if (incomeSMS.MessageType == IncomeSMS.Type.Email)
                                            emailBox.SendEmail(text, "Re:" + incomeSMS.ShortKey, incomeSMS.SenderAddress, SendIncomeClientEmailAnswerSetResult, incomeClientEmail);
                                        else
                                        {
                                            incomeClientEmail.IsSent = gsmModemList[incomeSMS.RecipientNumber].SendSMS(incomeSMS.SenderNumber, text);
                                            SaveIncomeClientEmail(incomeClientEmail, context);
                                        }

                                        localUids.Add(message);
                                    }
                                }
                                else
                                {
                                    IsClientButNotAnswerFlag = true;
                                }
                            }
                        }

                        if (client == null || IsClientButNotAnswerFlag)
                        {
                            string ShortKey = message.Subject.Replace(" ", "");
                            client = GetClientByShortKey(ShortKey, context);
                            if (client != null && ClientIsNotBlocked(client))
                            {
                                ServicePhone servicePhone = GetPhoneByClient(client, context);
                                if (servicePhone != null)
                                {
                                    string text;
                                    string messageText = null;

                                    try
                                    {
                                        messageText = message.Body.Text;
                                    }
                                    catch
                                    {
                                        messageText = emailBox.GetTrubleMessageText(message.From.Address, message.Subject, (DateTime)message.Date);
                                    }

                                    if (messageText != null)
                                    {

                                        if (messageText.Contains("\r\n)\r\nIMAPX"))
                                            text = messageText.Substring(0, messageText.IndexOf("\r\n)\r\nIMAPX"));
                                        else
                                            text = messageText;
                                        if (text.Contains("\r\n"))
                                            text = text.Substring(0, text.IndexOf("\r\n"));

                                        IncomeSMS incomeSMS = new IncomeSMS()
                                          {
                                              SenderAddress = message.From.Address.ToLower().Replace(" ", ""),
                                              RecipientNumber = servicePhone.PhoneNumber,
                                              Client = client,
                                              Text = text,
                                              DateTime = DateTime.Now,
                                              SecretKey = GetSecretKey(client),
                                              Status = IncomeSMS.IncomeSMSStatus.Checked,
                                              Category = "new",
                                              IsReaded = false,
                                              IsAnswered = false,
                                              SMSIsSend = false,
                                              ShortKey = ShortKey,
                                              MessageType = IncomeSMS.Type.Email
                                          };
                                        SaveIncomeSms(incomeSMS, context);
                                        localUids.Add(message);
                                    }

                                }
                            }
                        }

                    }
                }
                if (localUids.Count > 0) emailBox.SetSeen(localUids);
            }
        }
Пример #16
0
        private IncomeSMS ChangeIncomeSMSStatus(IncomeSMS incomeSMS, IncomeSMS.IncomeSMSStatus Status, SMSContext context)
        {
            try
            {
                incomeSMS.Status = Status;
                context.Entry(incomeSMS).State = System.Data.Entity.EntityState.Modified;
                context.SaveChanges();
            }
            catch (Exception e)
            {
                logger.Error("Ошибка записи  в базу данных. Не удалось сохранить изменение статуса входящего сообщения.\r\nТекст ошибки:", e);
            }

            return incomeSMS;
        }
Пример #17
0
        private bool ClientIsNotBlocked(Client client)
        {
            try
            {
                using (SMSContext context = new SMSContext())
                {
                    List<ClientPhone> phones = context.ClientPhone.Where(x => x.ClientId == client.ClientId && x.ServicePhoneId == 1).ToList();
                    List<IncomeSMS> messages = context.IncomeSMS.Where(y => y.Client.ClientId == client.ClientId).ToList();

                    return client.IsBlocked != true && !(phones != null && messages.Count > 10);

                }
            }
            catch (Exception e)
            {
                logger.Error("Ошибка чтения из базы данных.Не удалось проверить доступ клиента.\r\nТекст ошибки:+" + geExceptionsMessage(e) ?? "" + "\r\n" + e.StackTrace);
                return true;
            }
        }
Пример #18
0
 public void SendIncomeClientEmailAnswerSetResult(object Token, AsyncCompletedEventArgs e)
 {
     using (SMSContext context = new SMSContext())
     {
         IncomeClientEmail incomeClientEmail = context.IncomeClientEmail.FirstOrDefault(x => x.IncomeClientEmailId == ((IncomeClientEmail)e.UserState).IncomeClientEmailId);
         incomeClientEmail.IsSent = true;
         SaveIncomeClientEmail(incomeClientEmail, context);
     }
 }
Пример #19
0
 private Client GetClientByPhone(string phoneNumber, SMSContext context)
 {
     Client queryResult;
     try
     {
         queryResult = context.Client.FirstOrDefault(x => x.PhoneNumber.Equals(phoneNumber));
     }
     catch (Exception e)
     {
         logger.Error("Ошибка чтения из базы данных. Не удалось получить клиента по номеру телефона.\r\nТекст ошибки:", e);
         queryResult = null;
     }
     return queryResult;
 }
Пример #20
0
 public void SendIncomeClientSMSSetResult(object Token, AsyncCompletedEventArgs e)
 {
     using (SMSContext context = new SMSContext())
     {
         IncomeClientSMS incomeClientSMS = context.IncomeClientSMS.FirstOrDefault(x => x.IncomeClientSMSId == ((IncomeClientSMS)e.UserState).IncomeClientSMSId);
         ChangeIncomeClientSMSStatus(incomeClientSMS, IncomeClientSMS.IncomeClientSMSStatus.Sent, context);
     }
 }
Пример #21
0
        private Client GetClientByShortKey(string ShortKey, ServicePhone Phone, SMSContext context)
        {
            try
            {
                Client queryResult;
                queryResult = context.Client.FirstOrDefault(x => x.ShortKey.ToLower().Trim().Equals(ShortKey.ToLower().Trim()) && x.ClientPhone.Select(y => y.ServicePhone.ServicePhoneId).Contains(Phone.ServicePhoneId));

                return queryResult;
            }
            catch (Exception e)
            {
                logger.Error("Ошибка чтения из базы данных. Не удалось получить клиента по ключу и сервисному телефону.\r\nТекст ошибки:", e);
                return null;
            }
        }
Пример #22
0
 public void SendIncomeClientWebAnswerSetResult(object Token, AsyncCompletedEventArgs e)
 {
     using (SMSContext context = new SMSContext())
     {
         IncomeClientWeb incomeClientWeb = context.IncomeClientWeb.FirstOrDefault(x => x.IncomeClientWebId == ((IncomeClientWeb)e.UserState).IncomeClientWebId);
         incomeClientWeb.IsSent = true;
         SaveIncomeClientWebSendResult(incomeClientWeb, context);
     }
 }
Пример #23
0
 private IncomeSMS GetIncomeSMS(string SecretKey, int ClientId, SMSContext context)
 {
     try
     {
         IncomeSMS queryResult = context.IncomeSMS.FirstOrDefault(x => x.SecretKey.Equals(SecretKey) && !((bool)(x.IsAnswered ?? false)) && x.Client.ClientId == ClientId);
         return queryResult;
     }
     catch (Exception e)
     {
         logger.Error("Ошибка чтения из базы данных.Не удалось загрузить входящее сообщение." + "\r\nТекст ошибки:", e);
         return null;
     }
 }
Пример #24
0
        public void SetChekedMessages(GsmModem modem)
        {
            try
            {
                IList<IncomeSMS> incomeSMSs = null;
                IList<IncomeClientSMS> IncomeClientSMSs = null;
                using (SMSContext context = new SMSContext())
                {
                    incomeSMSs = context.IncomeSMS.Where(x => x.Status == IncomeSMS.IncomeSMSStatus.Received && x.RecipientNumber.Equals(modem.ServicePhone.PhoneNumber)).ToList();
                    IncomeClientSMSs = context.IncomeClientSMS.Where(x => x.Status == IncomeClientSMS.IncomeClientSMSStatus.Received && x.RecipientNumber.Equals(modem.ServicePhone.PhoneNumber)).ToList();
                }

                if (incomeSMSs != null)
                {
                    using (SMSContext context = new SMSContext())
                    {
                        foreach (IncomeSMS incomeSMS in incomeSMSs)
                        {
                            incomeSMS.Status = IncomeSMS.IncomeSMSStatus.Checked;
                            context.Entry(incomeSMS).State = System.Data.Entity.EntityState.Modified;
                        }
                        context.SaveChanges();
                    }

                }

                using (SMSContext context = new SMSContext())
                {
                    foreach (IncomeClientSMS incomeClientSMS in IncomeClientSMSs)
                    {

                        incomeClientSMS.Status = IncomeClientSMS.IncomeClientSMSStatus.Checked;
                        context.Entry(incomeClientSMS).State = System.Data.Entity.EntityState.Modified;

                    }
                    context.SaveChanges();
                }
            }
            catch (Exception e)
            {
                logger.Error("Ошибка обработки базы данных. Не удалось обновить статусы сообщений.\r\nТекст ошибки:", e);

            }
        }
Пример #25
0
        private List<Client> GetLocalClients()
        {
            List<Client> clients = new List<Client>();

            try
            {
                List<int> ServicePhones = gsmModemList.Values.Select(y => y.ServicePhone.ServicePhoneId).ToList();

                foreach (var i in ServicePhones)
                {
                    using (SMSContext oContext = new SMSContext())
                    {
                        var clientPhone = oContext.ClientPhone.Where(c => c.ServicePhoneId == i).ToList();

                        var clientsAtPhone = clientPhone.Select(c => c.Client).ToList();

                        if (clientsAtPhone.Count() > 0)
                            clients.AddRange(clientsAtPhone);
                    }
                }
            }
            catch (Exception e)
            {
                logger.Error("Ошибка чтения  из базы данных.Не удалось загрузить клиентов привязанных к подключенным модемам." + "\r\nТекст ошибки:", e);
            }

            return clients;
        }
Пример #26
0
        private int AddAnswer(int MessageId, int AnswerMessageId, Answer.AnswerSource Source)
        {
            Answer answer = new Answer();
            try
            {
                using (SMSContext context = new SMSContext())
                {
                    IncomeSMS queryResult = context.IncomeSMS.FirstOrDefault(x => x.MessageId == MessageId);
                    if (queryResult == null)
                        throw new Exception("Не найдено сообщения с номером" + MessageId);

                    queryResult.IsAnswered = true;
                    answer.IncomeSMS = queryResult;
                    answer.AnswerMessageId = AnswerMessageId;
                    answer.Source = Source;
                    context.Answer.Add(answer);

                    context.SaveChanges();

                    queryResult.AnswerId = answer.AnswerId;
                    context.Entry(queryResult).State = System.Data.Entity.EntityState.Modified;
                    context.SaveChanges();
                }
            }
            catch (Exception e)
            {
                logger.Error("Ошибка записи в базу данных.Не удалось сохранить ответ на сообщение." + "\r\nТекст ошибки:", e);
            }

            return answer.AnswerId;
        }
Пример #27
0
        private ServicePhone GetPhoneByClient(Client client, SMSContext context)
        {
            ServicePhone queryResult;
            try
            {
                queryResult = context.ClientPhone.FirstOrDefault(x => x.ClientId == client.ClientId && !x.ServicePhone.IsDeleted).ServicePhone;

            }
            catch (Exception e)
            {
                logger.Error("Ошибка чтения из базы данных. Не удалось получить сервисный телефон по клиенту.\r\nТекст ошибки:", e);
                queryResult = null;
            }
            return queryResult;
        }
Пример #28
0
        private void ChangeIncomeClientSMS(IncomeClientSMS incomeClientSMS, SMSContext context)
        {
            try
            {
                context.Entry(incomeClientSMS).State = System.Data.Entity.EntityState.Modified;
                context.SaveChanges();
            }
            catch (Exception e)
            {
                logger.Error("Ошибка записи в базу данных.Не удалось сохранить изменения сообщения.\r\nТекст ошибки:", e);

            }
        }
Пример #29
0
 private ServicePhone GetServicePhoneById(int ServicePhoneId, SMSContext context)
 {
     try
     {
         ServicePhone queryResult = context.ServicePhone.FirstOrDefault(x => x.ServicePhoneId == ServicePhoneId);
         return queryResult;
     }
     catch (Exception e)
     {
         logger.Error("Ошибка загрузки из базы данных.Не удалось получить сервисный телефон по идентификатору." + "\r\nТекст ошибки:", e);
         return null;
     }
 }
Пример #30
0
 private IncomeSMS SaveIncomeSMS(Client client, string text, string senderNumber, string recipienNumber, DateTime date, string ShortKey, SMSContext context)
 {
     try
     {
         IncomeSMS incomeSMS = new IncomeSMS()
         {
             SenderNumber = senderNumber,
             RecipientNumber = recipienNumber,
             Client = client,
             Text = text,
             DateTime = date,
             SecretKey = GetSecretKey(client),
             Status = IncomeSMS.IncomeSMSStatus.Received,
             Category = "new",
             IsReaded = false,
             IsAnswered = false,
             SMSIsSend = false,
             ShortKey = ShortKey,
             MessageType = IncomeSMS.Type.SMS
         };
         context.IncomeSMS.Add(incomeSMS);
         context.SaveChanges();
         return incomeSMS;
     }
     catch (Exception e)
     {
         logger.Error("Ошибка записи  в базу данных. Не удалось добавить  входящее сообщения.\r\nТекст ошибки:", e);
         return null;
     }
 }