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(); }
/// <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(); }
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); } }
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" } }; }