/source/app/NOS.Registration/AutoRegistrationPresenter.cs

http://github.com/agross/netopenspace · C# · 76 lines · 67 code · 9 blank · 0 comment · 5 complexity · abfe02b345d5f3ac30a357dc84a26cac MD5 · raw file

  1. using System;
  2. using System.Web.UI.WebControls;
  3. namespace NOS.Registration
  4. {
  5. public class AutoRegistrationPresenter
  6. {
  7. readonly ILogger _logger;
  8. readonly IRegistrationRepository _repository;
  9. readonly IAutoRegistrationView _view;
  10. public AutoRegistrationPresenter(IAutoRegistrationView view)
  11. : this(view, new RegistrationRepository(), new DefaultLogger())
  12. {
  13. }
  14. public AutoRegistrationPresenter(IAutoRegistrationView view, IRegistrationRepository repository, ILogger logger)
  15. {
  16. _view = view;
  17. _repository = repository;
  18. _logger = logger;
  19. view.UserCreated += View_UserCreated;
  20. view.ValidateInvoiceAddress += ValidateInvoiceAddress;
  21. }
  22. void View_UserCreated(object sender, EventArgs e)
  23. {
  24. if (!_view.AutoRegisterUser)
  25. {
  26. _logger.Info("User opted-out of auto registration", _view.UserName);
  27. return;
  28. }
  29. try
  30. {
  31. var user = new User(_view.UserName)
  32. {
  33. Data =
  34. {
  35. Xing = _view.Xing,
  36. Twitter = _view.Twitter,
  37. Name = _view.Name,
  38. Blog = _view.Blog,
  39. Email = _view.Email,
  40. Picture = _view.Picture,
  41. Sponsoring = _view.Sponsoring,
  42. InvoiceAddress = _view.InvoiceAddress,
  43. RegisteredAt = DateTime.Now
  44. }
  45. };
  46. _repository.Save(user);
  47. _logger.Info("Saved registration data", _view.UserName);
  48. }
  49. catch (Exception ex)
  50. {
  51. _logger.Error(String.Format("Saving registration data failed: {0}", ex), _view.UserName);
  52. }
  53. }
  54. void ValidateInvoiceAddress(object sender, ServerValidateEventArgs e)
  55. {
  56. if (!_view.AutoRegisterUser)
  57. {
  58. e.IsValid = true;
  59. return;
  60. }
  61. if (_view.Sponsoring > 0)
  62. {
  63. e.IsValid = _view.InvoiceAddress != null && _view.InvoiceAddress.Length > 0;
  64. }
  65. }
  66. }
  67. }