Exemplo n.º 1
0
        public ActionResult EnableDisableAccount(AccountManagementModel accountManagementModel)
        {
            if (ModelState.IsValid)
            {
                if (accountManagementModel.IsEnabled)
                {
                    AddNote(accountManagementModel, NoteType.DeactivateAccount, accountManagementModel.DisableAccountNotePopupContent);
                    _commandBus.Send(new DisableAccountByAdmin {
                        AccountId = accountManagementModel.Id
                    });
                    accountManagementModel.IsEnabled = false;
                }
                else
                {
                    _commandBus.Send(new EnableAccountByAdmin {
                        AccountId = accountManagementModel.Id
                    });
                    accountManagementModel.IsEnabled = true;
                }

                ModelState.Clear();
                TempData["UserMessage"] = "Operation done successfully";
            }
            else
            {
                TempData["UserMessage"] = "Model state is not valid";
            }

            // needed to feed orders list
            accountManagementModel.OrdersPaged = GetOrders(accountManagementModel.Id, accountManagementModel.OrdersPageIndex, accountManagementModel.OrdersPageSize);

            return(View("Index", accountManagementModel));
        }
Exemplo n.º 2
0
        public async Task <ActionResult> SendConfirmationCodeSMS(AccountManagementModel accountManagementModel)
        {
            if (accountManagementModel.Email.HasValueTrimmed() &&
                accountManagementModel.CountryCode != null &&
                accountManagementModel.CountryCode.Code.HasValueTrimmed() &&
                accountManagementModel.PhoneNumber.HasValueTrimmed())
            {
                try
                {
                    _confirmAccountService.Get(new ConfirmationCodeRequest
                    {
                        CountryCode = accountManagementModel.CountryCode.Code,
                        Email       = accountManagementModel.Email,
                        PhoneNumber = accountManagementModel.PhoneNumber
                    });
                    TempData["UserMessage"] = "Operation done successfully";
                }
                catch (Exception e)
                {
                    TempData["UserMessage"] = e.Message;
                }
            }
            else
            {
                TempData["UserMessage"] = "Please provide correct country code, email and phone number";
            }

            // needed to feed orders list
            accountManagementModel.OrdersPaged = GetOrders(accountManagementModel.Id, accountManagementModel.OrdersPageIndex, accountManagementModel.OrdersPageSize);

            return(View("Index", accountManagementModel));
        }
Exemplo n.º 3
0
        public async Task <ActionResult> ExportOrders(AccountManagementModel accountManagementModel)
        {
            var csv = (List <Dictionary <string, string> >)_exportDataService.Post(new ExportDataRequest {
                AccountId = accountManagementModel.Id, Target = DataType.Orders
            });

            if (csv.IsEmpty())
            {
                return(View("Index", accountManagementModel));
            }

            var csvFlattened = new StringBuilder();

            foreach (var item in csv.ElementAt(0))
            {
                csvFlattened.Append(item.Key).Append(",");
            }

            csvFlattened.Append("\n");

            foreach (var line in csv)
            {
                foreach (var item in line)
                {
                    csvFlattened.Append(item.Value).Append(",");
                }
                csvFlattened.Append("\n");
            }

            // needed to feed orders list
            accountManagementModel.OrdersPaged = GetOrders(accountManagementModel.Id, accountManagementModel.OrdersPageIndex, accountManagementModel.OrdersPageSize);

            return(File(new ASCIIEncoding().GetBytes(csvFlattened.ToString()), "text/csv", "Export.csv"));
        }
Exemplo n.º 4
0
        public void Create(AccountManagementModel item)
        {
            var account = new AccountEF(item.Id, item.Name, item.ProfileId, null);

            _db.Accounts.Add(account);
            _db.SaveChanges();
        }
Exemplo n.º 5
0
        public void Update(AccountManagementModel item)
        {
            var account = new AccountEF(item.Id, item.Name, item.ProfileId, null);

            _db.Entry(account).State = EntityState.Modified;
            _db.SaveChanges();
        }
        public async Task <IActionResult> Login(AccountManagementModel model)
        {
            if (ModelState.IsValid)
            {
                await Authenticate(model.Name); // аутентификация

                return(RedirectToAction("Index", "Home"));
            }
            return(View(model));
        }
Exemplo n.º 7
0
        public ActionResult Index(Guid id, int page = 1)
        {
            AccountManagementModel accountManagementModel = InitializeModel(id);

            // needed to feed orders list
            accountManagementModel.OrdersPaged     = GetOrders(id, page, accountManagementModel.OrdersPageSize);
            accountManagementModel.OrdersPageIndex = page;

            return(View(accountManagementModel));
        }
Exemplo n.º 8
0
        public ActionResult UnlinkIBSAccount(AccountManagementModel accountManagementModel)
        {
            _commandBus.Send(new UnlinkAccountFromIbs {
                AccountId = accountManagementModel.Id
            });
            TempData["UserMessage"] = "Operation done successfully";

            // needed to feed orders list
            accountManagementModel.OrdersPaged = GetOrders(accountManagementModel.Id, accountManagementModel.OrdersPageIndex, accountManagementModel.OrdersPageSize);

            return(View("Index", accountManagementModel));
        }
Exemplo n.º 9
0
        public ActionResult Save(AccountManagementModel accountManagementModel)
        {
            if (ModelState.IsValid)
            {
                var accountDetail = _accountDao.FindById(accountManagementModel.Id);

                var accountUpdateRequest = new AccountUpdateRequest
                {
                    AccountId = accountManagementModel.Id,
                    BookingSettingsRequest = new BookingSettingsRequest
                    {
                        AccountNumber     = accountDetail.Settings.AccountNumber,
                        ChargeTypeId      = accountDetail.Settings.ChargeTypeId,
                        Country           = accountManagementModel.CountryCode,
                        CustomerNumber    = accountDetail.Settings.CustomerNumber,
                        DefaultTipPercent = accountManagementModel.DefaultTipPercent,
                        Email             = accountManagementModel.Email,
                        FirstName         = accountDetail.Name,
                        LastName          = accountDetail.Name,
                        Name          = accountManagementModel.Name,
                        NumberOfTaxi  = accountDetail.Settings.NumberOfTaxi,
                        Passengers    = accountDetail.Settings.Passengers,
                        PayBack       = accountDetail.Settings.PayBack,
                        Phone         = accountManagementModel.PhoneNumber,
                        ProviderId    = accountDetail.Settings.ProviderId,
                        VehicleTypeId = accountDetail.Settings.VehicleTypeId
                    }
                };

                try
                {
                    _bookingSettingsService.Put(accountUpdateRequest);
                    TempData["UserMessage"] = "Operation done successfully";
                }
                catch (Exception e)
                {
                    TempData["UserMessage"] = e.Message;
                }
            }
            else
            {
                TempData["UserMessage"] = "Model state is not valid";
            }

            // needed to feed orders list
            accountManagementModel.OrdersPaged = GetOrders(accountManagementModel.Id, accountManagementModel.OrdersPageIndex, accountManagementModel.OrdersPageSize);

            return(View("Index", accountManagementModel));
        }
Exemplo n.º 10
0
        private AccountManagementModel InitializeModel(Guid accountId)
        {
            var accountDetail = _accountDao.FindById(accountId);

            var orders             = GetOrderDetails(accountId) ?? new List <OrderDetail>();
            var ordersCount        = orders.Count();
            var accountAgeInDays   = (DateTime.UtcNow - accountDetail.CreationDate).TotalDays;
            var averageTripsPerDay = decimal.Round((decimal)(ordersCount / accountAgeInDays), 1);
            var totalCanceled      = GetOrderStatusDetails(accountId).Count(x => x.IBSStatusId == VehicleStatuses.Common.Cancelled || x.IBSStatusId == VehicleStatuses.Common.CancelledDone);
            var totalCompleted     = orders.Count(order => order.Status == (int)OrderStatus.Completed);
            var totalNoShow        = GetOrderStatusDetails(accountId).Count(x => x.IBSStatusId == VehicleStatuses.Common.NoShow);

            var model = new AccountManagementModel
            {
                Id                    = accountId,
                Name                  = accountDetail.Name,
                Email                 = accountDetail.Email,
                CustomerNumber        = accountDetail.Settings.CustomerNumber,
                CreationDate          = accountDetail.CreationDate,
                FacebookAccount       = accountDetail.FacebookId,
                IBSAccountId          = accountDetail.IBSAccountId,
                IsConfirmed           = accountDetail.IsConfirmed,
                IsEnabled             = !accountDetail.DisabledByAdmin,
                CountryCode           = accountDetail.Settings.Country,
                PhoneNumber           = accountDetail.Settings.Phone,
                ChargeType            = accountDetail.Settings.ChargeType,
                DefaultTipPercent     = accountDetail.DefaultTipPercent,
                IsPayPalAccountLinked = accountDetail.IsPayPalAccountLinked,
                TotalCanceled         = totalCanceled,
                TotalCompleted        = totalCompleted,
                AverageTripsPerDay    = averageTripsPerDay,
                TotalNoShows          = totalNoShow
            };

            if (accountDetail.DefaultCreditCard != null)
            {
                var defaultCreditCard = _creditCardDao.FindById(accountDetail.DefaultCreditCard.Value);
                model.CreditCardLast4Digits = defaultCreditCard.Last4Digits;
            }

            model.Notes = _accountNoteService.FindByAccountId(accountId)
                          .OrderByDescending(c => c.CreationDate)
                          .Select(x => new NoteModel(x))
                          .ToList();

            return(model);
        }
Exemplo n.º 11
0
        public IActionResult EditAccount(AccountManagementModel account)
        {
            try
            {
                // TODO: Add update logic here
                if (ModelState.IsValid)
                {
                    _profileManagementService.UpdateAccount(account);
                }

                return(RedirectToAction(nameof(IndexAccount)));
            }
            catch
            {
                return(RedirectToAction(nameof(EditAccount)));
            }
        }
Exemplo n.º 12
0
        public ActionResult AddStandardNote(AccountManagementModel accountManagementModel)
        {
            if (ModelState.IsValid)
            {
                AddNote(accountManagementModel, NoteType.Standard, accountManagementModel.NotePopupContent);
                TempData["UserMessage"] = "Note added";
                ModelState.Clear();
            }
            else
            {
                TempData["UserMessage"] = "Model state is not valid";
            }

            // needed to feed orders list
            accountManagementModel.OrdersPaged = GetOrders(accountManagementModel.Id, accountManagementModel.OrdersPageIndex, accountManagementModel.OrdersPageSize);

            return(View("Index", accountManagementModel));
        }
Exemplo n.º 13
0
        public ActionResult ResetPassword(AccountManagementModel accountManagementModel)
        {
            var accountDetail = _accountDao.FindById(accountManagementModel.Id);

            var newPassword  = new PasswordService().GeneratePassword();
            var resetCommand = new ResetAccountPassword
            {
                AccountId = accountManagementModel.Id,
                Password  = newPassword
            };

            _commandBus.Send(resetCommand);

            if (_serverSettings.ServerData.SendPasswordResetAsSMSEnabled)
            {
                var smsCommand = new SendPasswordResetSMS
                {
                    ClientLanguageCode = accountDetail.Language,
                    CountryCode        = accountDetail.Settings.Country,
                    PhoneNumber        = accountDetail.Settings.Phone,
                    Password           = newPassword
                };

                _commandBus.Send(smsCommand);
            }
            else
            {
                var emailCommand = new SendPasswordResetEmail
                {
                    ClientLanguageCode = accountDetail.Language,
                    EmailAddress       = accountDetail.Email,
                    Password           = newPassword,
                };

                _commandBus.Send(emailCommand);
            }

            TempData["UserMessage"] = "Operation done successfully, new password: "******"Index", accountManagementModel));
        }
Exemplo n.º 14
0
        private void AddNote(AccountManagementModel accountManagementModel, NoteType noteType, string noteContent)
        {
            var accountNoteEntry = new AccountNoteEntry
            {
                AccountId          = accountManagementModel.Id,
                WriterAccountId    = new Guid(AuthSession.UserAuthId),
                WriterAccountEmail = AuthSession.UserAuthName,
                Type         = noteType,
                CreationDate = DateTime.Now,
                Note         = noteContent
            };

            _accountNoteService.Add(accountNoteEntry);
            if (accountManagementModel.Notes == null)
            {
                accountManagementModel.Notes = new List <NoteModel>();
            }
            accountManagementModel.Notes.Insert(0, new NoteModel(accountNoteEntry));
        }
Exemplo n.º 15
0
        public ActionResult DeleteCreditCardsInfo(AccountManagementModel accountManagementModel)
        {
            var paymentSettings = _serverSettings.GetPaymentSettings();

            var forceUserDisconnect = paymentSettings.CreditCardIsMandatory &&
                                      (paymentSettings.IsPaymentOutOfAppDisabled != OutOfAppPaymentDisabled.None);

            _commandBus.Send(new DeleteCreditCardsFromAccounts
            {
                AccountIds          = new[] { accountManagementModel.Id },
                ForceUserDisconnect = forceUserDisconnect
            });

            TempData["UserMessage"] = "Operation done successfully";

            // needed to feed orders list
            accountManagementModel.OrdersPaged = GetOrders(accountManagementModel.Id, accountManagementModel.OrdersPageIndex, accountManagementModel.OrdersPageSize);

            return(View("Index", accountManagementModel));
        }
Exemplo n.º 16
0
        public ActionResult RefundOrder(AccountManagementModel accountManagementModel)
        {
            if (ModelState.IsValid)
            {
                var refundPaymentResponse = _paymentService.RefundPayment(null, accountManagementModel.RefundOrderId);

                if (refundPaymentResponse.IsSuccessful)
                {
                    var order      = _orderDao.FindByAccountId(accountManagementModel.Id).FirstOrDefault(o => o.Id == accountManagementModel.RefundOrderId);
                    var orderModel = new OrderModel(order);

                    _notificationService.SendOrderRefundEmail(
                        DateTime.Now,
                        refundPaymentResponse.Last4Digits,
                        orderModel.TotalAmount(),
                        accountManagementModel.Email,
                        AuthSession.UserAuthName,
                        order.ClientLanguageCode);

                    AddNote(accountManagementModel, NoteType.Refunded, accountManagementModel.RefundOrderNotePopupContent);
                    TempData["UserMessage"] = "order refunded, note added, email sent";
                }
                else
                {
                    TempData["UserMessage"] = "an error occured: " + refundPaymentResponse.Message;
                }

                ModelState.Clear();
            }
            else
            {
                TempData["UserMessage"] = "Model state is not valid";
            }

            // needed to feed orders list
            accountManagementModel.OrdersPaged = GetOrders(accountManagementModel.Id, accountManagementModel.OrdersPageIndex, accountManagementModel.OrdersPageSize);

            return(View("Index", accountManagementModel));
        }
Exemplo n.º 17
0
        private TableEditorModel GetAccountTableModel(IEnumerable <AccountManagementModel> accounts, AccountManagementModel account)
        {
            var entityType = typeof(AccountManagementModel);

            var tableModel = new TableEditorModel("Accounts", entityType, "Id", accounts, account);
            var profiles   = _profileManagementService.GetProfiles().OrderBy(p => p.Name);

            _tableEditorService.AddColumn(tableModel, "Id", null);
            _tableEditorService.AddColumn(tableModel, "Name", null, ControlType.Input, null);
            _tableEditorService.AddColumn(tableModel, "ProfileId", null, ControlType.Select, new SelectList(profiles, "Id", "Name"));

            return(tableModel);
        }
 public void UpdateAccount(AccountManagementModel account)
 {
     _accountRepository.Update(account);
 }