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)); } }
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))); } }