public ActionResult Index(OSUser osUser, string password) { try { osUser.LastUpdate = DateTime.Now; osUser.IsActive = true; osUser.ImageFile = "70x70.jpg"; ViewBag.Success = true; // اختصاص کد کاربر osUser.Id = Guid.NewGuid().ToString(); // اختصاص نقش Public به کاربر osUser.Roles.Add(new IdentityUserRole() { RoleId = StaticValues.PublicRoleID, UserId = osUser.Id }); // ایجاد کاربر var result = UserManager.Create(osUser, password); if (result.Succeeded) { UserNotifications.Send(StaticValues.AdminID, String.Format("ثبت نام کاربر '{0}'", osUser.UserName), "/Admin/OSUsers/Edit/" + osUser.Id, NotificationType.Success); if (!String.IsNullOrWhiteSpace(osUser.Mobile)) { SMSServices.Register(osUser.Firstname, osUser.Lastname, osUser.UserName, password, osUser.Mobile, osUser.Id); } EmailServices.Register(osUser.Firstname, osUser.Lastname, osUser.UserName, password, osUser.Email, osUser.Id); } else { throw new Exception(result.Errors.Aggregate((a, b) => a + ", " + b)); } } catch (Exception ex) { SetErrors(ex); } return(View(url + "Index.cshtml")); }
public void ConstructSMSMessagesTest() { var mockContext = new Mock <SMSDb>(); // create an empty history var smsHistoryList = new List <SMSHistory>(); var mockSMSHistorySet = EFHelper.GetQueryableMockDbSet(smsHistoryList); mockContext.Setup(c => c.SMSHistoryRecords).Returns(mockSMSHistorySet.Object); // Setup TemplateFields var mockTemplateFieldSet = EFHelper.GetQueryableMockDbSet(FixtureGenerator.CreateTemplateFields()); mockContext.Setup(c => c.TemplateFields).Returns(mockTemplateFieldSet.Object); mockContext.Setup(m => m.Set <TemplateField>()).Returns(mockTemplateFieldSet.Object); // Set the template var template = new Template(); template.Id = 100; template.Description = "MyTemplate"; template.Name = "MyTemplate"; template.Text = Resources.mockTemplateString; var templateList = new List <Template>() { template }; var mockTemplateSet = EFHelper.GetQueryableMockDbSet(templateList); // I have to use object[] mockTemplateSet.Setup(m => m.Find(It.IsAny <object[]>())).Returns <object[]>(ids => templateList.FirstOrDefault(d => d.Id == (int)ids[0])); //I need to set the Set<Template> Template // because the line dbSet = DbContext.Set<T>(); on the Generic repository fails mockContext.Setup(m => m.Set <Template>()).Returns(mockTemplateSet.Object); mockContext.Setup(c => c.Templates).Returns(mockTemplateSet.Object); var mockICurrentUserService = new Mock <ICurrentUserService>(); mockICurrentUserService.Setup(p => p.GetCurrentUser()).Returns("TestUser"); // Mocking up dbFactory var mockdbFactory = new Mock <DbFactory <SMSDb> >(); mockdbFactory.Setup(m => m.DBContext).Returns(mockContext.Object); IUnitOfWork <SMSDb> UoW = new UnitOfWork <SMSDb>(mockdbFactory.Object, mockICurrentUserService.Object); var target = new SMSServices(UoW); var result = target.ConstructSMSMessages(FixtureGenerator.CreateSMSRecepients(), templateList.First().Id); Assert.IsNotNull(result); }
/// <summary> /// Evia o alerta de lançamento em atraso para todos os usuários /// </summary> /// <param name="email">boolean - se vai receber por e-mail ou não</param> /// <param name="sms">boolean - se vai receber por sms ou não</param> /// <param name="telegram">boolean - se vai receber por telegram ou não</param> /// <returns></returns> public virtual void EnviarTodosOsAlertas(bool email = true, bool sms = false) { var modelo = this.GetUsuariosComAtrasoNoEnvio(); if ((modelo == null) || (modelo.Count == 0)) { throw new Exception("O usuário não foi encontrado"); } bool erro = false; string mensagens = ""; foreach (var x in modelo) { try { if (email) { MailServices.Enviar(x.Usuario.EmailPreferencial, "Faz tempo que você não lança suas atividades", string.Format("Detectamos que faz {0} dias que você não lança suas atividades. Por favor lance hoje.", x.DiasUteisSemLancar)); } } catch (Exception err) { erro = true; mensagens += "Ocorreu um erro ao enviar o alerta via e-mail para " + x.Usuario.Login + ": " + err.Message + "<br/>\r\n"; LogServices.LogarException(err); } string smsResult = ""; try { if (sms && x.Usuario.Funcionario != null && !string.IsNullOrWhiteSpace(x.Usuario.Funcionario.Celular)) { smsResult = SMSServices.Enviar(x.Usuario.Funcionario.Celular, x.Usuario.FuncionarioNomeOuLogin, "Faz tempo que você não lança suas atividades", string.Format("Detectamos que faz {0} dias que você não lança suas atividades. Por favor lance hoje.", x.DiasUteisSemLancar)); LogServices.Logar(smsResult); } } catch (Exception err) { erro = true; mensagens += "Ocorreu um erro ao enviar o alerta via sms para " + x.Usuario.Login + ": " + err.Message + "<br/>\r\n"; LogServices.LogarException(err); } } if (erro) { throw new Exception("Erros ocorridos: " + mensagens); } }
private IdentityResult registerUser(ref OSUser osUser) { if (UserManager.FindByEmail(osUser.Email) == null) { osUser.UserName = osUser.Email; osUser.LastUpdate = DateTime.Now; osUser.IsActive = true; // اختصاص کد کاربر osUser.Id = Guid.NewGuid().ToString(); // اختصاص نقش Public به کاربر osUser.Roles.Add(new IdentityUserRole() { RoleId = StaticValues.PublicRoleID, UserId = osUser.Id }); // ایجاد کاربر var password = new Random().Next(100000, 999999).ToString(); var result = UserManager.Create(osUser, password); if (!String.IsNullOrWhiteSpace(osUser.Mobile)) { SMSServices.Register(osUser.Firstname, osUser.Lastname, osUser.UserName, password, osUser.Mobile, osUser.Id); } EmailServices.Register(osUser.Firstname, osUser.Lastname, osUser.UserName, password, osUser.Email, osUser.Id); return(result); } else { osUser = UserManager.FindByEmail(osUser.Email); return(IdentityResult.Success); } }
/// <summary> /// Evia o alerta de lançamento em atraso para um usuário /// </summary> /// <param name="idUsuario">id do usuário que vai receber o alerta</param> /// <param name="email">boolean - se vai receber por e-mail ou não</param> /// <param name="sms">boolean - se vai receber por sms ou não</param> /// <param name="telegram">boolean - se vai receber por telegram ou não</param> /// <returns></returns> public virtual void EnviarAlerta(int idUsuario, bool email = true, bool sms = false) { string smsResult = ""; if (idUsuario == 0) { throw new Exception("O usuário não foi informado"); } var modelo = this.GetUltimosLancamentosById(idUsuario); if (modelo == null) { throw new Exception("O usuário não foi encontrado"); } try { if (email) { MailServices.Enviar(modelo.Usuario.EmailPreferencial, "Faz tempo que você não lança suas atividades", string.Format("Detectamos que faz {0} dias que você não lança suas atividades. Por favor lance hoje.", modelo.DiasUteisSemLancar)); } } catch (Exception err) { LogServices.LogarException(err); throw new Exception("Erro ao enviar email: " + err.Message, err); } try { if (sms && modelo.Usuario.Funcionario != null && !string.IsNullOrWhiteSpace(modelo.Usuario.Funcionario.Celular)) { smsResult = SMSServices.Enviar(modelo.Usuario.Funcionario.Celular, modelo.Usuario.FuncionarioNomeOuLogin, "Faz tempo que você não lança suas atividades", string.Format("Detectamos que faz {0} dias que você não lança suas atividades. Por favor lance hoje.", modelo.DiasUteisSemLancar)); LogServices.Logar(smsResult); } } catch (Exception err) { LogServices.LogarException(err); throw new Exception("Erro ao enviar sms: " + err.Message, err); } }
private static void SendMessageToRequests(EditProduct editProduct, int productID) { try { #region Send Message var emails = ProductRequests.GetNewEmails(productID).ToArray(); var mobiles = ProductRequests.GetNewMobiles(productID).ToArray(); EmailServices.ProductAvailable(editProduct.Title, emails); SMSServices.ProductAvailable(editProduct.Title, String.Join(",", mobiles)); #endregion Send Message ProductRequests.UpdateStatus(emails, mobiles); } catch (Exception ex) { } }
private static void sendMessage(OSUser user, string saleReferenceID, Cart cart) { if (!String.IsNullOrWhiteSpace(user.Mobile)) { SMSServices.SuccessfullPayment(user.Firstname, user.Lastname, saleReferenceID, user.Mobile, user.Id); // اطلاع رسانی به مدیر CartController.NotifyNewOrder(user, cart, saleReferenceID); } EmailServices.SuccessfullPayment(user.Firstname, user.Lastname, saleReferenceID, user.Email, user.Id); }
public void SendBulkSMSInMemoryTest() { var mockICurrentUserService = new Mock <ICurrentUserService>(); mockICurrentUserService.Setup(p => p.GetCurrentUser()).Returns("TestUser"); //http://techbrij.com/unit-testing-asp-net-mvc-controller-service var faker = new Bogus.Faker(); DbConnection memoryConnection = Effort.DbConnectionFactory.CreateTransient(); var memDB = new SMSDb(memoryConnection); // Mocking up dbFactory var mockdbFactory = new Mock <DbFactory <SMSDb> >(); mockdbFactory.Setup(m => m.DBContext).Returns(memDB); IUnitOfWork <SMSDb> UoW = new UnitOfWork <SMSDb>(mockdbFactory.Object, mockICurrentUserService.Object); // Set the template var template = new Template(); template.Id = 100; template.Description = "MyTemplate"; template.Name = "MyTemplate"; template.Text = Resources.mockTemplateString; memDB.Templates.Add(template); // Create SMS provider registration var provider = new Provider() { Name = "aurorafakeprovider", UserName = "******", PassWord = "******", Url = faker.Internet.Url() }; memDB.Providers.Add(provider); var target = new SMSServices(UoW); var smsMessages = target.ConstructSMSMessages(FixtureGenerator.CreateSMSRecepients(100), template.Id); var result = target.SendBulkSMS(smsMessages, provider.Name); Assert.IsNotNull(result); }
public ActionResult Edit(EditCart editCart, string notices) { try { var old = Carts.GetByID(editCart.ID); Cart cart = new Cart { ID = editCart.ID, CartStatus = editCart.CartStatus, SendStatus = editCart.SendStatus, SendDate = editCart.SendDate, DeliveryDate = editCart.DeliveryDate, ConfirmationStatus = editCart.ConfirmationStatus, ConfirmationDate = editCart.ConfirmationDate, BillNumber = editCart.BillNumber, Description = editCart.Description, LastUpdate = DateTime.Now, }; SaveNotes(editCart, editCart.ID, UserID); ViewBag.Success = true; Carts.UpdateByAdmin(cart); #region User Info var user = OSUsers.GetByID(old.UserID); #endregion User Info if (notices == "on") { #region Send Messages // تاییدیه مالی if (old.ConfirmationStatus != ConfirmationStatus.Approved && editCart.ConfirmationStatus == ConfirmationStatus.Approved) { SMSServices.FinancialConfirmation(user.Firstname, user.Lastname, user.Mobile, user.Id); EmailServices.FinancialConfirmation(user.Firstname, user.Lastname, user.Email, user.Id); } // بررسی شده if (old.SendStatus == SendStatus.NotChecked && cart.SendStatus == SendStatus.Checked) { SMSServices.CheckeProduct(user.Firstname, user.Lastname, user.Mobile, user.Id); EmailServices.CheckeProduct(user.Firstname, user.Lastname, user.Email, user.Id); } // ارسال کالا if (old.SendStatus == SendStatus.Checked && cart.SendStatus == SendStatus.Sent) { SMSServices.SendProduct(user.Firstname, user.Lastname, user.Mobile, user.Id, editCart.BillNumber); EmailServices.SendProduct(user.Firstname, user.Lastname, user.Email, user.Id, editCart.BillNumber); } // تحویل کالا if (old.SendStatus != SendStatus.Delivered && cart.SendStatus == SendStatus.Delivered) { SMSServices.DliverProduct(user.Firstname, user.Lastname, user.Mobile, user.Id); EmailServices.DliverProduct(user.Firstname, user.Lastname, user.Email, user.Id); } #endregion Send Messages } } catch (Exception ex) { SetErrors(ex); } return(RedirectToAction("Index")); }
public void SendBulkSMSTest() { // TODO: use in memory DB because the data validations are not applied and the test is not creditable var mockICurrentUserService = new Mock <ICurrentUserService>(); mockICurrentUserService.Setup(p => p.GetCurrentUser()).Returns("TestUser"); var smsDB = Mock.Of <SMSDb>(); var mockContext = Mock.Get(smsDB); // Mocking up dbFactory var mockdbFactory = new Mock <DbFactory <SMSDb> >(); mockdbFactory.Setup(m => m.DBContext).Returns(mockContext.Object); IUnitOfWork <SMSDb> UoW = new UnitOfWork <SMSDb>(mockdbFactory.Object, mockICurrentUserService.Object); // create an empty history var smsHistoryList = new List <SMSHistory>(); var mockSMSHistorySet = EFHelper.GetQueryableMockDbSet(smsHistoryList); mockContext.Setup(c => c.SMSHistoryRecords).Returns(mockSMSHistorySet.Object); mockContext.Setup(m => m.Set <SMSHistory>()).Returns(mockSMSHistorySet.Object); // Setup TemplateFields var mockTemplateFieldSet = EFHelper.GetQueryableMockDbSet(FixtureGenerator.CreateTemplateFields()); mockContext.Setup(c => c.TemplateFields).Returns(mockTemplateFieldSet.Object); mockContext.Setup(m => m.Set <TemplateField>()).Returns(mockTemplateFieldSet.Object); // Set the template var template = new Template(); template.Id = 100; template.Description = "MyTemplate"; template.Name = "MyTemplate"; template.Text = Resources.mockTemplateString; var templateList = new List <Template>() { template }; var mockTemplateSet = EFHelper.GetQueryableMockDbSet(templateList); // I have to use object[] mockTemplateSet.Setup(m => m.Find(It.IsAny <object[]>())).Returns <object[]>(ids => templateList.FirstOrDefault(d => d.Id == (int)ids[0])); //I need to set the Set<Template> Template // because the line dbSet = DbContext.Set<T>(); on the Generic repository fails mockContext.Setup(m => m.Set <Template>()).Returns(mockTemplateSet.Object); mockContext.Setup(c => c.Templates).Returns(mockTemplateSet.Object); // Create SMS provider registration var provider = new Provider() { Name = "aurorafakeprovider", UserName = "******", PassWord = "******" }; var providerList = new List <Provider>() { provider }; var mockproviderSet = EFHelper.GetQueryableMockDbSet(providerList); mockproviderSet.Setup(m => m.Find(It.IsAny <object[]>())).Returns <object[]>(ids => providerList.FirstOrDefault(d => d.Name == (string)ids[0])); mockContext.Setup(m => m.Set <Provider>()).Returns(mockproviderSet.Object); mockContext.Setup(c => c.Providers).Returns(mockproviderSet.Object); var target = new SMSServices(UoW); var smsMessages = target.ConstructSMSMessages(FixtureGenerator.CreateSMSRecepients(100), templateList.First().Id); var result = target.SendBulkSMS(smsMessages, provider.Name); Assert.IsNotNull(result); }
public static void NotifyNewOrder(OSUser user, Cart cart, string saleReferenceID) { var cartItems = CartItems.GetOrderDetails(cart.ID); var stateTitle = Cities.GetCityName(user.StateID.Value); var cityTitle = Cities.GetCityName(user.CityID.Value); StringBuilder smsBody = new StringBuilder(); StringBuilder emailBody = new StringBuilder(); #region SMS Body smsBody.Append("سفارش جدید: \n" + cart.ToPay.Value.ToPrice() + "\n"); foreach (var item in cartItems) { smsBody.Append(item.ProductTitle); if (item.ProductVarentID.HasValue) { smsBody.Append(" " + item.VarientTitle); } smsBody.Append("\n"); } smsBody.Append(cart.PaymentMethodType.GetEnumDisplay() + "\n" + cart.SendMethodType.GetEnumDisplay()); #endregion SMS Body #region Email Body emailBody.Append("سفارش جدید: <br/>" + cart.ToPay.Value.ToPrice() + "<br/>"); emailBody.Append("محصولات: <br/>"); foreach (var item in cartItems) { emailBody.Append(item.ProductTitle); if (item.ProductVarentID.HasValue) { emailBody.Append(" " + item.VarientTitle); } emailBody.Append("<br/>"); } emailBody.AppendFormat("نام و نام خانوادگی: {0} <br/>" + "{1}" + "شماره همراه: {2} <br/>" + "روش پرداخت: {3} <br/>" + "روش ارسال: {4} <br/>" + "استان: {5} <br/>" + "شهر: {6} <br/>" + "آدرس: {7}", user.Firstname + " " + user.Lastname, saleReferenceID != "-1" ? "کد رهگیری: " + saleReferenceID + "<br/>" : String.Empty, user.Mobile, cart.PaymentMethodType.GetEnumDisplay(), cart.SendMethodType.GetEnumDisplay(), stateTitle, cityTitle, user.HomeAddress); #endregion Email Body EmailServices.NotifyAdminsByEmail(AdminEmailType.NewOrder, emailBody.ToString(), user.Id); SMSServices.SendSMS("09120062417", smsBody.ToString(), user.Id); }