Exemplo n.º 1
0
        public static ResponseDTO IsProfileFill(IApartmenthostContext context, string userId, bool checkPhone = false)
        {
            var user    = context.Users.SingleOrDefault(x => x.Id == userId);
            var profile = context.Profile.SingleOrDefault(x => x.Id == userId);

            if (user == null || profile == null)
            {
                return(RespH.Create(RespH.SRV_USER_NOTFOUND));
            }
            if (user.Blocked)
            {
                return(RespH.Create(RespH.SRV_USER_BLOCKED));
            }
            if (!user.EmailConfirmed)
            {
                return(RespH.Create(RespH.SRV_USER_NOT_CONFIRMED));
            }
            if (string.IsNullOrWhiteSpace(profile.FirstName))
            {
                return(RespH.Create(RespH.SRV_USER_NO_NAME));
            }
            if (checkPhone)
            {
                if (user.PhoneStatus != ConstVals.PConf)
                {
                    return(RespH.Create(RespH.SRV_CARD_PHONE_UNCONF));
                }
            }
            return(null);
        }
 public static void Create(IApartmenthostContext context, string userId, string type, string code,
                           string favoriteId = null, string reservationId = null, string reviewId = null)
 {
     try
     {
         var notif = new Notification
         {
             Id     = Guid.NewGuid().ToString(),
             UserId = userId,
             Type   = type,
             Code   = code,
             Readed = false
         };
         if (!string.IsNullOrEmpty(favoriteId))
         {
             notif.FavoriteId = favoriteId;
         }
         if (!string.IsNullOrEmpty(reservationId))
         {
             notif.ReservationId = reservationId;
         }
         if (!string.IsNullOrEmpty(reviewId))
         {
             notif.ReviewId = reviewId;
         }
         context.Notifications.Add(notif);
         context.SaveChanges();
     }
     catch (Exception e)
     {
         Debug.WriteLine("!!!!!CREATING NOTIFICATION EXCEPTION!!!!!!");
         Debug.WriteLine(e);
     }
 }
Exemplo n.º 3
0
        public static ResponseDTO IsCardNameExist(IApartmenthostContext context, string name, string errType)
        {
            var currentAdvertCount = context.Cards.Count(a => a.Name == name);

            if (currentAdvertCount > 0)
            {
                var respList = new List <string>();
                respList.Add(name);
                return(RespH.Create(RespH.SRV_CARD_EXISTS, respList));
            }
            return(null);
        }
 public FavoriteApiController(IApartmenthostContext context)
 {
     _context = context;
 }
Exemplo n.º 5
0
 public FeedbackApiController(IApartmenthostContext context)
 {
     _context = context;
 }
 public PictureApiController(IApartmenthostContext context)
 {
     _context = context;
 }
 public ApartmentApiController(IApartmenthostContext context)
 {
     _context = context;
 }
 public NotificationApiController(IApartmenthostContext context)
 {
     _context = context;
 }
Exemplo n.º 9
0
        public static void CreateAccount(IApartmenthostContext context, string providerName, string providerId,
                                         string accountId, string email = null,
                                         string name = null)
        {
            var account =
                context.Accounts.SingleOrDefault(
                    a =>
                    a.Provider == providerName && a.ProviderId == providerId &&
                    a.AccountId == accountId);

            if (account == null)
            {
                User user = null;
                if (!string.IsNullOrEmpty(email))
                {
                    user = context.Users.SingleOrDefault(u => u.Email == email);
                }
                if (providerName != StandartLoginProvider.ProviderName)
                {
                    if (user == null)
                    {
                        user = new User
                        {
                            Id             = SequentialGuid.NewGuid().ToString(),
                            Email          = email,
                            EmailConfirmed = email != null,
                            PhoneStatus    = ConstVals.PUnconf,
                            Salt           = GenerateSalt()
                        };
                        context.Users.Add(user);
                    }
                    else
                    {
                        user.EmailConfirmed = email != null;
                    }
                    context.SaveChanges();
                }
                account = new Account
                {
                    Id         = SequentialGuid.NewGuid().ToString(),
                    UserId     = user.Id,
                    AccountId  = accountId,
                    Provider   = providerName,
                    ProviderId = providerId
                };
                context.Accounts.Add(account);
                context.SaveChanges();


                var profile = context.Profile.SingleOrDefault(p => p.Id == user.Id);
                if (profile == null)
                {
                    profile = new Profile {
                        Id = user.Id
                    };
                    if (name != null)
                    {
                        string[] names = name.Split(' ');
                        if (names.Length == 1)
                        {
                            profile.FirstName = name;
                        }
                        if (names.Length > 1)
                        {
                            profile.FirstName = names[0];
                            profile.LastName  = names[1];
                        }
                    }
                    context.Profile.Add(profile);
                }
                context.SaveChanges();
            }
        }
Exemplo n.º 10
0
 public static Account GetUserAccount(IApartmenthostContext context, ServiceUser user)
 {
     return(context.Accounts.SingleOrDefault(a => a.AccountId == user.Id));
 }
 public StandartLoginController(IApartmenthostContext context)
 {
     _context = context;
 }
Exemplo n.º 12
0
        /// <summary>
        /// </summary>
        /// <param name="context"></param>
        /// <param name="basemessage"></param>
        public async void Create(IApartmenthostContext context, BaseEmailMessage basemessage)
        {
            try
            {
                // Сообщение SendGrid
                SendGridMessage message = new SendGridMessage();
                // Шаблонизатор
                var emailFactory = new MergedEmailFactory(new TemplateParser());


                // Считываем глобальные настройки
                var fromAddress = Environment.GetEnvironmentVariable("EMAIL_FROM_ADDRESS");
                var from        = Environment.GetEnvironmentVariable("EMAIL_FROM");
                var webDomain   = Environment.GetEnvironmentVariable("WEB_DOMAIN");

                // Отправитель
                message.From = new MailAddress(fromAddress, from);

                // Получатель
                message.AddTo(basemessage.ToUserEmail);

                // Глобальный HTML шаблон письма
                StringBuilder htmlTemplate = new StringBuilder();
                var           templArt     =
                    context.Article.SingleOrDefault(x => x.Name == ConstVals.EmailTemplate && x.Type == ConstVals.Email);
                htmlTemplate.Append(templArt.Text);

                // Приветстиве пользователя
                var greetArt =
                    context.Article.SingleOrDefault(x => x.Name == ConstVals.Greet && x.Type == ConstVals.Email);
                var greetTv = new Dictionary <string, string>
                {
                    { "username", basemessage.ToUserName }
                };
                MailMessage greetMsg = emailFactory
                                       .WithTokenValues(greetTv)
                                       .WithHtmlBody(greetArt.Text).Create();

                // HTML шаблон основного тела письма
                StringBuilder bodyTemplate    = new StringBuilder();
                var           bodyTemplateTv  = new Dictionary <string, string>();
                var           bodyTokenValues = new Dictionary <string, string>();

                // Считывание шаблона
                if (!string.IsNullOrEmpty(basemessage.Code))
                {
                    var article =
                        context.Article.SingleOrDefault(x => x.Name == basemessage.Code && x.Type == ConstVals.Email);
                    if (article != null)
                    {
                        message.Subject = article.Title;
                        bodyTemplate.Append(article.Text);
                    }
                }
                var dateformat = "dd.MM.yyyy";
                switch (basemessage.Code)
                {
                case RespH.SRV_NOTIF_CARD_FAVORITED:
                    bodyTokenValues.Add("username", basemessage.FromUserName);
                    bodyTokenValues.Add("url", webDomain + "#/posts/" + basemessage.CardId);
                    bodyTokenValues.Add("unsubUrl", webDomain + "#/unsubscr?type=notifications&code=" + basemessage.UnsubscrCode);
                    break;

                case RespH.SRV_NOTIF_RESERV_NEW:
                    bodyTokenValues.Add("username", basemessage.FromUserName);
                    bodyTokenValues.Add("cardname", basemessage.CardName);
                    bodyTokenValues.Add("cardtype", basemessage.CardType);
                    bodyTokenValues.Add("carddesc", basemessage.CardDescription);
                    bodyTokenValues.Add("datefrom", basemessage.DateFrom.ToString(dateformat));
                    bodyTokenValues.Add("dateto", basemessage.DateTo.ToString(dateformat));
                    bodyTokenValues.Add("url", webDomain + "#/posts/" + basemessage.CardId);
                    bodyTokenValues.Add("unsubUrl", webDomain + "#/unsubscr?type=notifications&code=" + basemessage.UnsubscrCode);
                    break;

                case RespH.SRV_NOTIF_RESERV_PENDING:
                    bodyTokenValues.Add("ownername", basemessage.FromUserName);
                    bodyTokenValues.Add("cardname", basemessage.CardName);
                    bodyTokenValues.Add("cardtype", basemessage.CardType);
                    bodyTokenValues.Add("carddesc", basemessage.CardDescription);
                    bodyTokenValues.Add("datefrom", basemessage.DateFrom.ToString(dateformat));
                    bodyTokenValues.Add("dateto", basemessage.DateTo.ToString(dateformat));
                    bodyTokenValues.Add("url", webDomain + "#/posts/" + basemessage.CardId);
                    bodyTokenValues.Add("unsubUrl", webDomain + "#/unsubscr?type=notifications&code=" + basemessage.UnsubscrCode);
                    break;

                case RespH.SRV_NOTIF_RESERV_ACCEPTED:
                    bodyTokenValues.Add("ownername", basemessage.FromUserName);
                    bodyTokenValues.Add("cardname", basemessage.CardName);
                    bodyTokenValues.Add("cardtype", basemessage.CardType);
                    bodyTokenValues.Add("carddesc", basemessage.CardDescription);
                    bodyTokenValues.Add("datefrom", basemessage.DateFrom.ToString(dateformat));
                    bodyTokenValues.Add("dateto", basemessage.DateTo.ToString(dateformat));
                    bodyTokenValues.Add("url", webDomain + "#/posts/" + basemessage.CardId);
                    bodyTokenValues.Add("unsubUrl", webDomain + "#/unsubscr?type=notifications&code=" + basemessage.UnsubscrCode);
                    break;

                case RespH.SRV_NOTIF_RESERV_DECLINED:
                    bodyTokenValues.Add("ownername", basemessage.FromUserName);
                    bodyTokenValues.Add("cardname", basemessage.CardName);
                    bodyTokenValues.Add("cardtype", basemessage.CardType);
                    bodyTokenValues.Add("carddesc", basemessage.CardDescription);
                    bodyTokenValues.Add("datefrom", basemessage.DateFrom.ToString(dateformat));
                    bodyTokenValues.Add("dateto", basemessage.DateTo.ToString(dateformat));
                    bodyTokenValues.Add("url", webDomain + "#/posts/" + basemessage.CardId);
                    bodyTokenValues.Add("unsubUrl", webDomain + "#/unsubscr?type=notifications&code=" + basemessage.UnsubscrCode);
                    break;

                case RespH.SRV_NOTIF_REVIEW_ADDED:
                    bodyTokenValues.Add("username", basemessage.FromUserName);
                    bodyTokenValues.Add("reviewtext", basemessage.ReviewText);
                    bodyTokenValues.Add("unsubUrl", webDomain + "#/unsubscr?type=notifications&code=" + basemessage.UnsubscrCode);
                    break;

                case RespH.SRV_NOTIF_REVIEW_RATING_ADDED:
                    bodyTokenValues.Add("username", basemessage.FromUserName);
                    bodyTokenValues.Add("reviewtext", basemessage.ReviewText);
                    bodyTokenValues.Add("reviewrating",
                                        basemessage.ReviewRating.ToString(CultureInfo.InvariantCulture));
                    bodyTokenValues.Add("unsubUrl", webDomain + "#/unsubscr?type=notifications&code=" + basemessage.UnsubscrCode);
                    break;

                case RespH.SRV_NOTIF_REVIEW_AVAILABLE:
                    bodyTokenValues.Add("cardname", basemessage.CardName);
                    bodyTokenValues.Add("carddesc", basemessage.CardDescription);
                    bodyTokenValues.Add("datefrom", basemessage.DateFrom.ToString(dateformat));
                    bodyTokenValues.Add("dateto", basemessage.DateTo.ToString(dateformat));
                    break;

                case ConstVals.Reg:
                    bodyTokenValues.Add("code", basemessage.ConfirmCode);
                    bodyTokenValues.Add("url", webDomain + "#/confirm?userId=" + basemessage.ToUserId + "&code=" +
                                        basemessage.ConfirmCode);
                    break;

                case ConstVals.Restore:
                    bodyTokenValues.Add("code", basemessage.ConfirmCode);
                    bodyTokenValues.Add("url", webDomain + "#/reset?userId=" + basemessage.ToUserId + "&code=" +
                                        basemessage.ConfirmCode);
                    break;

                case ConstVals.Feedback:
                case ConstVals.Abuse:
                    bodyTokenValues.Add("username", basemessage.FromUserName);
                    bodyTokenValues.Add("text", basemessage.Text);

                    if (!string.IsNullOrWhiteSpace(basemessage.FromUserEmail) && basemessage.AnswerByEmail)
                    {
                        bodyTokenValues.Add("email", basemessage.FromUserEmail);
                    }
                    else
                    {
                        bodyTokenValues.Add("email", "не указан");
                    }
                    break;
                }
                // Формируем основное тело
                emailFactory = new MergedEmailFactory(new TemplateParser());
                var bodyMsg = emailFactory
                              .WithTokenValues(bodyTokenValues)
                              .WithHtmlBody(bodyTemplate.ToString())
                              .Create();
                // Соединяем все вместе
                StringBuilder fullEmail = new StringBuilder();
                fullEmail.Append(greetMsg.Body);
                fullEmail.Append("<br><br>");
                fullEmail.Append(bodyMsg.Body);
                bodyTemplateTv.Add("content", fullEmail.ToString());
                emailFactory = new MergedEmailFactory(new TemplateParser());
                MailMessage fullMailMessage = emailFactory.WithTokenValues(bodyTemplateTv)
                                              .WithHtmlBody(htmlTemplate.ToString())
                                              .Create();
                message.Html = fullMailMessage.Body;

                // Отслеживание переходов из письма
                message.EnableClickTracking(true);

                await Send(message);
            }
            catch (InvalidApiRequestException e)
            {
                Debug.WriteLine("!!!!!Invalid Api Request Exception!!!!!!");
                foreach (var err in e.Errors)
                {
                    Debug.WriteLine(err);
                }
            }
            catch (Exception e)
            {
                Debug.WriteLine("!!!!!SEND EMAIL EXCEPTION!!!!!!");
                Debug.WriteLine(e);
            }
        }
 public UserApiController()
 {
     _context = new ApartmenthostContext();
 }
 public TestArticleController()
 {
     _testContext = new TestContext();
     _testDb      = new TestDbPopulator(_testContext);
 }
 public StandartRegistrationController(IApartmenthostContext context)
 {
     _context = context;
 }
 public ReservationApiController(IApartmenthostContext context)
 {
     _context = context;
 }
 public ProfileApiController(IApartmenthostContext context)
 {
     _context = context;
 }