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"));
        }
示例#2
0
        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);
        }
示例#3
0
        /// <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);
            }
        }
示例#4
0
        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);
            }
        }
示例#5
0
        /// <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);
            }
        }
示例#6
0
        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) { }
        }
示例#7
0
        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);
        }
示例#8
0
        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);
        }
示例#9
0
        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"));
        }
示例#10
0
        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);
        }
示例#11
0
        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);
        }