Example #1
0
        public OperationResultVo EnterGiveaway(Guid currentUserId, GiveawayEnterViewModel vm, string urlReferralBase)
        {
            try
            {
                string myCode = Guid.NewGuid().NoHyphen();

                DomainOperationVo <GiveawayParticipant> domainActionPerformed = giveawayDomainService.AddParticipant(vm.GiveawayId, vm.Email, vm.GdprConsent, vm.WantNotifications, myCode, vm.ReferralCode, vm.EntryType);

                unitOfWork.Commit();

                if (domainActionPerformed.Action == DomainActionPerformed.Create)
                {
                    string urlReferral = string.Format("{0}?referralCode={1}", urlReferralBase, myCode);

                    string shortUrl = shortUrlDomainService.Add(urlReferral, ShortUrlDestinationType.Giveaway);

                    if (!string.IsNullOrWhiteSpace(shortUrl))
                    {
                        giveawayDomainService.UpdateParticipantShortUrl(vm.GiveawayId, vm.Email, shortUrl);

                        unitOfWork.Commit();
                    }

                    return(new OperationResultVo <string>(myCode, 0, "You are in!"));
                }

                return(new OperationResultVo <string>(string.Empty, 0, "You are in!"));
            }
            catch (Exception ex)
            {
                return(new OperationResultVo(ex.Message));
            }
        }
Example #2
0
        public async Task <IActionResult> Enter(GiveawayEnterViewModel enter)
        {
            try
            {
                string urlReferalBase = Url.Action("details", "giveaway", new { area = "tools", id = enter.GiveawayId });

                OperationResultVo result = giveawayAppService.EnterGiveaway(CurrentUserId, enter, urlReferalBase);

                if (result.Success)
                {
                    OperationResultVo <string> castRestult = result as OperationResultVo <string>;

                    SetSessionValue(SessionValues.Email, enter.Email);

                    OperationResultVo resultGiveawayInfo = giveawayAppService.GetForEdit(CurrentUserId, enter.GiveawayId);

                    if (resultGiveawayInfo.Success)
                    {
                        OperationResultVo <GiveawayViewModel> castRestultGiveawayInfo = resultGiveawayInfo as OperationResultVo <GiveawayViewModel>;

                        if (!string.IsNullOrWhiteSpace(castRestult.Value))
                        {
                            string emailConfirmationUrl = Url.GiveawayEmailConfirmationLink(Request.Scheme, enter.GiveawayId.ToString(), castRestult.Value);

                            await NotificationSender.SendGiveawayEmailConfirmationAsync(enter.Email, emailConfirmationUrl, castRestultGiveawayInfo.Value.Name);

                            if (EnvName.Equals(ConstantHelper.ProductionEnvironmentName))
                            {
                                await NotificationSender.SendTeamNotificationAsync(String.Format("{0} joined the giveaway {1}", enter.Email, castRestultGiveawayInfo.Value.Name));
                            }
                        }
                    }

                    string url = Url.Action("youarein", "giveaway", new { area = "tools", id = enter.GiveawayId });

                    return(Json(new OperationResultRedirectVo(result, url)));
                }

                return(Json(result));
            }
            catch (Exception ex)
            {
                return(Json(new OperationResultVo(ex.Message)));
            }
        }