Exemple #1
0
        public void SSubscribeWordInM_CompanySubscribeWordsEqualToNull_Nothing()
        {
            mockUnitOfWork.Setup(m => m.SubscribeWords.GetAll())
            .Returns(listSubscribeWords);

            mockUnitOfWork.Setup(m => m.Phones.Get(It.IsAny <Expression <Func <Phone, bool> > >(), null, ""))
            .Returns(listPhones);

            mockUnitOfWork.Setup(m => m.Phones.GetAll())
            .Returns(listPhones);

            mockUnitOfWork.Setup(m => m.Companies.Get(It.IsAny <Expression <Func <Company, bool> > >(), null, ""))
            .Returns(new List <Company>()
            {
                testCompany
            });
            mockUnitOfWork.Setup(m =>
                                 m.CompanySubscribeWords.Get(It.IsAny <Expression <Func <CompanySubscribeWord, bool> > >(), null, ""))
            .Returns(new List <CompanySubscribeWord>());
            mockUnitOfWork.Setup(m => m.Recipients.GetAll()).Returns(new List <Recipient>());

            mockUnitOfWork.Setup(m => m.Recipients.Insert(new Recipient()));


            var recivedMessDto = new RecievedMessageDTO()
            {
                SenderPhone    = viewMessage.RecipientPhone,
                RecipientPhone = viewMessage.RecipientPhone,
                MessageText    = viewMessage.MessageText
            };

            Assert.That(() => { recievedMessageManager.SearchSubscribeWordInMessages(recivedMessDto); }, Throws.Nothing);
        }
        /// <summary>
        /// check who is in the reported stopword
        /// if there is something
        /// look for the recipient and block the mailing in this group or start
        /// </summary>
        /// <param name="Originator">recipient PhoneNumber</param>
        /// <param name="Destination">company PhoneNumber</param>
        /// <param name="Content">message that came back</param>
        /// <param name="message">message.Originator/Destination/Content</param>
        public void SearchStopWordInMessages(RecievedMessageDTO message)
        {
            StopWord words = unitOfWork.StopWords.GetAll().FirstOrDefault(c =>
                                                                          c.Word == message.MessageText);

            if (words == null)
            {
                return;
            }

            Phone   orignator;
            Phone   destination;
            Company company;

            try
            {
                orignator = unitOfWork.Phones.GetAll()
                            .FirstOrDefault(item => item.PhoneNumber == message.SenderPhone);

                destination = unitOfWork.Phones.GetAll()
                              .FirstOrDefault(item => item.PhoneNumber == message.RecipientPhone);

                company = unitOfWork.Companies.Get(item => item.PhoneId == destination.Id).FirstOrDefault();
            }
            catch
            {
                return;
            }
            if ((words.Word == "START") && (orignator != null) && (company != null))
            {
                PhoneGroupUnsubscribe phoneGroup = unitOfWork.PhoneGroupUnsubscribes.GetAll().FirstOrDefault(w =>
                                                                                                             ((w.GroupId == company.ApplicationGroupId) && (w.PhoneId == orignator.Id)));
                if (phoneGroup != null)
                {
                    unitOfWork.PhoneGroupUnsubscribes.Delete(phoneGroup);
                    unitOfWork.Save();
                    //return true;
                }
            }
            else
            {
                if ((orignator == null) || (company == null))
                {
                    return;
                }


                PhoneGroupUnsubscribe phoneGroup = new PhoneGroupUnsubscribe()
                {
                    GroupId = company.ApplicationGroupId, PhoneId = orignator.Id
                };

                unitOfWork.PhoneGroupUnsubscribes.Insert(phoneGroup);
                unitOfWork.Save();
            }
        }
        /// <summary>
        /// check who is in the reported subscribeword
        /// if there is something
        /// look for the recipient and block the mailing in this group or start
        /// </summary>
        /// <param name="Originator">recipient PhoneNumber</param>
        /// <param name="Destination">company PhoneNumber</param>
        /// <param name="Content">message that came back</param>
        /// <param name="message">message.Originator/Destination/Content</param>

        public void SearchSubscribeWordInMessages(RecievedMessageDTO message)
        {
            SubscribeWord subscribeWord = unitOfWork.SubscribeWords.GetAll().FirstOrDefault(c => c.Word == message.MessageText);

            if (subscribeWord == null)
            {
                return;
            }

            Phone orignator = unitOfWork.Phones.GetAll()
                              .FirstOrDefault(item => item.PhoneNumber == message.SenderPhone);

            if (orignator == null)
            {
                orignator = new Phone()
                {
                    PhoneNumber = message.SenderPhone
                };
                unitOfWork.Phones.Insert(orignator);
                unitOfWork.Save();
            }

            Phone destination = unitOfWork.Phones.GetAll()
                                .FirstOrDefault(item => item.PhoneNumber == message.RecipientPhone);

            if (destination == null)
            {
                return;
            }

            var companies = unitOfWork.Companies.Get(item => item.PhoneId == destination.Id);

            foreach (var company in companies)
            {
                var companySubscribeWords = unitOfWork.CompanySubscribeWords.Get(m => m.CompanyId == company.Id);


                if (companySubscribeWords.Any(n => n.SubscribeWordId == subscribeWord.Id))
                {
                    var rec = unitOfWork.Recipients.Get(r => r.CompanyId == company.Id && r.PhoneId == orignator.Id);
                    if (!rec.Any())
                    {
                        unitOfWork.Recipients.Insert(new Recipient()
                        {
                            CompanyId = companySubscribeWords.FirstOrDefault().CompanyId,
                            PhoneId   = orignator.Id,
                            KeyWords  = "Subscribed himself",
                        });
                    }
                }
            }

            unitOfWork.Save();
        }
Exemple #4
0
        /// <summary>
        /// Add information about incoming messages to file
        /// </summary>
        /// <param name="sender">sender</param>
        /// <param name="e">event object</param>
        private void SMSCclientSMPP_OnSmppMessageReceived(object sender, smppMessageReceivedEventArgs e)
        {
            string report = $"Message From: {e.Originator}, To: {e.Destination}, Text: {e.Content}";

            using (StreamWriter sw = new StreamWriter(@"Received messages.txt", true, Encoding.UTF8))
            {
                sw.WriteLine(report);
            }

            RecievedMessageDTO recievedMessage = new RecievedMessageDTO();

            recievedMessage.SenderPhone    = e.Originator;
            recievedMessage.RecipientPhone = e.Destination;
            recievedMessage.MessageText    = e.Content;
            recievedMessage.TimeOfRecieve  = DateTime.UtcNow;
            using (var scope = serviceScopeFactory.CreateScope())
            {
                scope.ServiceProvider.GetService <IRecievedMessageManager>().Insert(recievedMessage);
                scope.ServiceProvider.GetService <IRecievedMessageManager>().SearchStopWordInMessages(recievedMessage);
                scope.ServiceProvider.GetService <IRecievedMessageManager>().SearchSubscribeWordInMessages(recievedMessage);
            }
        }
        /// <summary>
        /// insert new Recieved Message in bd
        /// </summary>
        /// <param name="item">RecievedMessageDTO for inserting</param>
        public void Insert(RecievedMessageDTO item)
        {
            RecievedMessage recievedMessage = mapper.Map <RecievedMessageDTO, RecievedMessage>(item);

            unitOfWork.Phones.Get(filter: p => p.PhoneNumber == item.SenderPhone);
            List <Phone> phone = unitOfWork.Phones.Get(filter: p => p.PhoneNumber == item.SenderPhone).ToList();

            if (phone.Count == 0)
            {
                Phone newPhone = new Phone();
                newPhone.PhoneNumber = item.SenderPhone;
                unitOfWork.Phones.Insert(newPhone);
                unitOfWork.Save();
                recievedMessage.Phone = newPhone;
            }
            else
            {
                recievedMessage.Phone = phone[0];
            }
            phone = unitOfWork.Phones.Get(filter: p => p.PhoneNumber == item.RecipientPhone).ToList();
            if (phone.Count == 0)
            {
                return;
            }
            else
            {
                List <Company> company = unitOfWork.Companies.Get(filter: c => c.PhoneId == phone[0].Id).ToList();
                if (company.Count == 0)
                {
                    return;
                }
                else
                {
                    recievedMessage.Company = company[0];
                }
            }
            unitOfWork.RecievedMessages.Insert(recievedMessage);
            unitOfWork.Save();
        }
Exemple #6
0
        public async Task ReceiveMessage(TwiMLResult e)
        {
            //string report = $"Message From: {e.Data.}, To: {e.Destination}, Text: {e.Content}";

            //using (StreamWriter sw = new StreamWriter(@"Received messages.txt", true, Encoding.UTF8))
            //{
            //	sw.WriteLine(report);
            //}

            RecievedMessageDTO recievedMessage = new RecievedMessageDTO();

            //recievedMessage.SenderPhone = e.Originator;
            //recievedMessage.RecipientPhone = e.Destination;
            //recievedMessage.MessageText = e.Content;
            recievedMessage.TimeOfRecieve = DateTime.UtcNow;
            using (var scope = serviceScopeFactory.CreateScope())
            {
                scope.ServiceProvider.GetService <IRecievedMessageManager>().Insert(recievedMessage);
                scope.ServiceProvider.GetService <IRecievedMessageManager>().SearchStopWordInMessages(recievedMessage);
                scope.ServiceProvider.GetService <IRecievedMessageManager>().SearchSubscribeWordInMessages(recievedMessage);
            }
        }
Exemple #7
0
        public void SetUp()
        {
            recievedMessageManager = new RecievedMessageManager(mockUnitOfWork.Object, mockMapper.Object);
            TestContext.WriteLine("Overrided");
            phoneSender = new Phone()
            {
                Id = 9, PhoneNumber = "+380999999999"
            };
            phoneRecipient = new Phone()
            {
                Id = 10, PhoneNumber = "+380111111111"
            };
            listPhones = new List <Phone>()
            {
                phoneSender,
                phoneRecipient,
                new Phone()
                {
                    Id = 7, PhoneNumber = "+380501465619"
                }
            };

            testCompany = new Company()
            {
                Id                 = 1,
                PhoneId            = 10,
                Name               = "Test",
                ApplicationGroupId = 5
            };
            listCompanies = new List <Company>()
            {
                testCompany
            };
            subscribeWord = new SubscribeWord()
            {
                Id = 21, Word = "sWord"
            };

            listSubscribeWords = new List <SubscribeWord>()
            {
                subscribeWord,
                new SubscribeWord()
                {
                    Id = 2, Word = "test2"
                }
            };
            message = new RecievedMessage()
            {
                Id = 3, CompanyId = testCompany.Id, PhoneId = phoneRecipient.Id, Message = "test"
            };
            viewMessage = new RecievedMessageViewModel()
            {
                SenderPhone    = "+380999999999",
                RecipientPhone = "+380111111111",
                MessageText    = "sWord"
            };
            recievedMessageInsert = new RecievedMessageDTO()
            {
                SenderPhone    = viewMessage.SenderPhone,
                RecipientPhone = viewMessage.RecipientPhone,
                MessageText    = "test1"
            };
            recievedMessageDto = new RecievedMessageDTO()
            {
                SenderPhone    = viewMessage.SenderPhone,
                RecipientPhone = viewMessage.RecipientPhone,
                MessageText    = viewMessage.MessageText
            };
            stopWord = new StopWord()
            {
                Id = 1, Word = "sWord"
            };
            listStopWords = new List <StopWord>()
            {
                stopWord,
                new StopWord()
                {
                    Id = 2, Word = "START"
                }
            };
        }