public void ProcessOnEmailQueue() { while (EmailQueue.Count() > 0) { Console.WriteLine("Processsing email queue...."); LogHelper.LogInfo("Processsing email queue...."); DIBZ.Common.Model.EmailNotification SendEmail = EmailQueue.Peek(); if (SendEmail.EmailType == EmailType.Email) { try { //var emailTemplateLogic = Context.Create<EmailTemplateLogic>(); LogicContext = new LogicContext(); var emailTemplateLogic = LogicContext.Create <EmailTemplateLogic>(); Console.WriteLine("sending queued email...."); LogHelper.LogInfo("sending queued email...."); EmailHelper.Email(SendEmail.ApplicationUserEmail, SendEmail.Tiltle, SendEmail.Body); Console.WriteLine("Marking email status to sent...."); LogHelper.LogInfo("Marking email status to sent...."); emailTemplateLogic.UpdateEmailNotificationStatusById(SendEmail.Id); EmailQueue.Dequeue(); } catch (System.Exception ex) { LogHelper.LogError(ex.Message, ex); } } } }
public async Task <ActionResult> SendForgotPasswordEmailNotification(string emailAddress) { DIBZ.Common.Model.ApplicationUser appUser = new DIBZ.Common.Model.ApplicationUser(); var authLogic = LogicContext.Create <AuthLogic>(); var result = authLogic.GetApplicationUserByEmail(emailAddress); if (result != null) { EmailTemplateHelper templates = new EmailTemplateHelper(); EmailTemplateResponse emailTemplateResponse = new EmailTemplateResponse(); DIBZ.Common.Model.EmailNotification email = new DIBZ.Common.Model.EmailNotification(); var emailTemplateLogic = LogicContext.Create <EmailTemplateLogic>(); emailTemplateResponse = await emailTemplateLogic.GetEmailTemplate(EmailType.Email, EmailContentType.ForgotPassword); templates.AddParam(DIBZ.Common.Model.Contants.AppUserNickName, result.NickName); templates.AddParam(DIBZ.Common.Model.Contants.ForgotPassword, string.Format("<a href='{0}'>Here</a>", string.Concat(Request.Url.AbsoluteUri.Substring(0, Request.Url.AbsoluteUri.LastIndexOf("/") + 1), "ChangePassword?id=" + result.Id))); templates.AddParam(DIBZ.Common.Model.Contants.UrlContactUs, string.Format("<a href='{0}'>link</a>", hostName + "/Dashboard/ContactUs")); var emailBody = templates.FillTemplate(emailTemplateResponse.Body); //save email data in table await emailTemplateLogic.SaveEmailNotification(result.Email, emailTemplateResponse.Title, emailBody, EmailType.Email, Priority.High); EmailHelper.Email(result.Email, emailTemplateResponse.Title, emailBody); return(Json(new { IsSuccess = true }, JsonRequestBehavior.AllowGet)); } else { return(Json(new { IsSuccess = false, fail = "some thing wrong" }, JsonRequestBehavior.AllowGet)); } }
public async Task <ActionResult> Register(string id, string firstName, string surname, string nickName, string email, string password, string mobileNo, string birthYear, string postalCode, string address, bool?rememberMe = true) { var authLogic = LogicContext.Create <AuthLogic>(); try { var User = authLogic.AddUpdateUser(Convert.ToInt32(id), firstName, surname, nickName, email, password, mobileNo, birthYear, postalCode, address); if (User != null) { var loginSession = authLogic.CreateLoginSession(email, password, false); Response.Cookies["AuthCookie"].Value = loginSession.Token; if (rememberMe == true) { Response.Cookies["AuthCookie"].Expires = DateTime.Now.AddYears(1); } EmailTemplateHelper templates = new EmailTemplateHelper(); EmailTemplateResponse emailTemplateResponse = new EmailTemplateResponse(); DIBZ.Common.Model.EmailNotification Email = new DIBZ.Common.Model.EmailNotification(); var emailTemplateLogic = LogicContext.Create <EmailTemplateLogic>(); emailTemplateResponse = await emailTemplateLogic.GetEmailTemplate(EmailType.Email, EmailContentType.SignUp); String[] parts = email.Split(new[] { '@' }); String username = parts[0]; // "hello" String domain = parts[1]; // "example.com" templates.AddParam(DIBZ.Common.Model.Contants.AppUserNickName, username); templates.AddParam(DIBZ.Common.Model.Contants.UrlContactUs, string.Format("<a href='{0}'>here</a>", hostName + "/Dashboard/ContactUs")); var emailBody = templates.FillTemplate(emailTemplateResponse.Body); await emailTemplateLogic.SaveEmailNotification(email, emailTemplateResponse.Title, emailBody, EmailType.Email, Priority.Low); EmailHelper.Email(email, emailTemplateResponse.Title, emailBody); //notification to admin if new user registered. EmailHelper.NotificationToAdmin(email, firstName + ' ' + surname, "Signup"); await MailChimpsSubs(email, firstName, surname, mobileNo); return(Json(new { IsSuccess = true, AppUserName = loginSession.ApplicationUser.NickName, AppUserId = loginSession.ApplicationUserId }, JsonRequestBehavior.AllowGet)); } else { return(Json(new { IsSuccess = false, fail = "Some Thing Wrong!" }, JsonRequestBehavior.AllowGet)); } } catch (Exception ex) { return(Json(new { IsSuccess = false, fail = ex.Message }, JsonRequestBehavior.AllowGet)); } }
public async Task <int> SaveEmailNotification(string ApplicationUserEmail, string title, string body, EmailType emailType, Priority priority) { DIBZ.Common.Model.EmailNotification email = new DIBZ.Common.Model.EmailNotification(); email.Tiltle = title; email.Body = body; email.ApplicationUserEmail = ApplicationUserEmail; email.EmailType = emailType; email.Priority = priority; email.IsActive = true; email.IsDeleted = false; email.IsSend = false; Db.Add(email); return(await Db.SaveAsync()); }
public async Task <bool> SaveEmailNotificationList(List <string> ApplicationUserEmail, string title, string body, EmailType emailType, Priority priority) { foreach (var emailAddress in ApplicationUserEmail) { DIBZ.Common.Model.EmailNotification email = new DIBZ.Common.Model.EmailNotification(); email.Tiltle = title; email.Body = body; email.ApplicationUserEmail = emailAddress; email.EmailType = emailType; email.Priority = priority; email.IsActive = true; email.IsDeleted = false; email.IsSend = false; Db.Add(email); await Db.SaveAsync(); } return(true); }
public async Task <ActionResult> SaveNewsLetterEmailAddress(string emailAddress) { DIBZDbContext context = new DIBZDbContext(); var notifierEmail = (from NotifierEmails in context.NotifierEmails orderby NotifierEmails.CreatedTime descending select new { EmailAddress = NotifierEmails.EmailAddress }).ToList(); if (notifierEmail.Count != 0) { // Email Sending to Specific Email address which is specified by DON. var notifierLastEmail = notifierEmail.FirstOrDefault().EmailAddress; EmailTemplateHelper templates = new EmailTemplateHelper(); EmailTemplateResponse emailTemplateResponse = new EmailTemplateResponse(); DIBZ.Common.Model.EmailNotification Email = new DIBZ.Common.Model.EmailNotification(); var emailTemplateLogic = LogicContext.Create <EmailTemplateLogic>(); emailTemplateResponse = await emailTemplateLogic.GetEmailTemplate(EmailType.Email, EmailContentType.NewsletterSubscribe); templates.AddParam(DIBZ.Common.Model.Contants.EmailAddress, emailAddress); var emailBody = templates.FillTemplate(emailTemplateResponse.Body); await emailTemplateLogic.SaveEmailNotification(notifierLastEmail, emailTemplateResponse.Title, emailBody, EmailType.Email, Priority.Low); EmailHelper.Email(notifierLastEmail, emailTemplateResponse.Title, emailBody); } DIBZ.Common.Model.NewsLetter newsLetter = new DIBZ.Common.Model.NewsLetter(); var newsLetterLogic = LogicContext.Create <NewsLetterLogic>(); var result = await newsLetterLogic.AddNewsLetter(emailAddress); if (result == true) { return(Json(new { IsSuccess = true }, JsonRequestBehavior.AllowGet)); } else { return(Json(new { IsSuccess = false, fail = "some thing wrong" }, JsonRequestBehavior.AllowGet)); } }
public async Task <ActionResult> SendContactRequest(FormCollection form) { DIBZ.Common.Model.MyQueries myQuery = new DIBZ.Common.Model.MyQueries(); DIBZ.Common.Model.EmailTemplate emailTemplate = new DIBZ.Common.Model.EmailTemplate(); EmailTemplateHelper templates = new EmailTemplateHelper(); EmailTemplateResponse EmailTemplateResponce = new EmailTemplateResponse(); DIBZ.Common.Model.EmailNotification email = new DIBZ.Common.Model.EmailNotification(); string adminEmail = string.Empty; string userEmail = form["email"]; string name = form["name"]; string phone = form["phone"]; string subject = "Contact Us Form - " + form["subject"]; string message = form["message"]; var authLogic = LogicContext.Create <AuthLogic>(); var suportQuery = LogicContext.Create <SupportQueryLogic>(); var emailTemplateLogic = LogicContext.Create <EmailTemplateLogic>(); if (userEmail == null) { suportQuery.SaveMessages(CurrentLoginSession.ApplicationUser.Email, name, phone, subject, message, CurrentLoginSession.ApplicationUser.Id); userEmail = System.Configuration.ConfigurationManager.AppSettings["AdminEmailAddress"]; await emailTemplateLogic.SaveEmailNotification(userEmail, subject, message, EmailType.Email, Priority.Low); //EmailHelper.Email(userEmail, subject, message); } else { suportQuery.SaveMessages(userEmail, name, phone, subject, message, null); adminEmail = System.Configuration.ConfigurationManager.AppSettings["AdminEmailAddress"]; await emailTemplateLogic.SaveEmailNotification(adminEmail, subject, message, EmailType.Email, Priority.Low); EmailHelper.Email(adminEmail, subject, message); return(View("ContactUs", myQuery)); } return(RedirectToAction("MyQueriesIndex", "MyQueries")); }
public async Task <ActionResult> AddPaymentTransaction(string offerId, string amount) { var transactionLogic = LogicContext.Create <TransactionLogic>(); var offerLogic = LogicContext.Create <OfferLogic>(); var emailTemplateLogic = LogicContext.Create <EmailTemplateLogic>(); DIBZ.Common.Model.EmailTemplate emailTemplate = new DIBZ.Common.Model.EmailTemplate(); EmailTemplateHelper templates = new EmailTemplateHelper(); EmailTemplateResponse emailTemplateResponse = new EmailTemplateResponse(); DIBZ.Common.Model.EmailNotification email = new DIBZ.Common.Model.EmailNotification(); try { var offer = await offerLogic.GetOfferById(ConversionHelper.SafeConvertToInt32(offerId)); var transactionData = await transactionLogic.AddTransaction(ConversionHelper.SafeConvertToInt32(offerId), Convert.ToDecimal(amount), CurrentLoginSession.ApplicationUser.Id, offer.Swaps.FirstOrDefault().Id); if (offer.OfferStatus == OfferStatus.PaymentNeeded && offer.Transactions.Count() == 2) { await offerLogic.UpdateOfferStatusToAccept(offer.Id); } if (transactionData > 0) { string QRCodeImagePath = QRHelper.GenerateAndSaveQrCodeForOffer(CurrentLoginSession.ApplicationUser.Email, offer.Id, this.Url.Action("ReadQR", "Offer", new { id = offer.Id }, this.Request.Url.Scheme)); if (CurrentLoginSession.ApplicationUserId == offer.ApplicationUserId) { emailTemplateResponse = await emailTemplateLogic.GetEmailTemplate(DIBZ.Common.Model.EmailType.Email, DIBZ.Common.Model.EmailContentType.PaymentDone); templates.AddParam(DIBZ.Common.Model.Contants.AppUserNickName, offer.ApplicationUser.NickName); templates.AddParam(DIBZ.Common.Model.Contants.AppUserNickName_Swapper, offer.Swaps.FirstOrDefault().GameSwapPserson.NickName); templates.AddParam(DIBZ.Common.Model.Contants.GameCatalog_Name, offer.GameCatalog.Name); templates.AddParam(DIBZ.Common.Model.Contants.GameCatalog_Name_Swapper, offer.ReturnGameCatalog.Name); templates.AddParam(DIBZ.Common.Model.Contants.GameFormat, offer.GameCatalog.Format.Name); templates.AddParam(DIBZ.Common.Model.Contants.GameFormatSwapper, offer.ReturnGameCatalog.Format.Name); templates.AddParam(DIBZ.Common.Model.Contants.DFOM_Code, offer.GameOffererDFOM); templates.AddParam(DIBZ.Common.Model.Contants.UrlContactUs, string.Format("<a href='{0}'>here</a>", hostName + "/Dashboard/ContactUs")); var emailBodyOfferrer = templates.FillTemplate(emailTemplateResponse.Body); //save email data in table await emailTemplateLogic.SaveEmailNotification(CurrentLoginSession.ApplicationUser.Email, emailTemplateResponse.Title, emailBodyOfferrer, EmailType.Email, Priority.Low); EmailHelper.EmailAttachement(CurrentLoginSession.ApplicationUser.Email, emailTemplateResponse.Title, emailBodyOfferrer, QRCodeImagePath); } else { EmailTemplateHelper TemplatesSwapper = new EmailTemplateHelper(); EmailTemplateResponse emailTemplateResponseSwapper = new EmailTemplateResponse(); //get email template emailTemplateResponseSwapper = await emailTemplateLogic.GetEmailTemplate(DIBZ.Common.Model.EmailType.Email, DIBZ.Common.Model.EmailContentType.PaymentDone); TemplatesSwapper.AddParam(DIBZ.Common.Model.Contants.AppUserNickName, CurrentLoginSession.ApplicationUser.NickName); TemplatesSwapper.AddParam(DIBZ.Common.Model.Contants.AppUserNickName_Swapper, offer.ApplicationUser.NickName); TemplatesSwapper.AddParam(DIBZ.Common.Model.Contants.GameCatalog_Name, offer.ReturnGameCatalog.Name); TemplatesSwapper.AddParam(DIBZ.Common.Model.Contants.GameCatalog_Name_Swapper, offer.GameCatalog.Name); TemplatesSwapper.AddParam(DIBZ.Common.Model.Contants.GameFormat, offer.ReturnGameCatalog.Format.Name); TemplatesSwapper.AddParam(DIBZ.Common.Model.Contants.GameFormatSwapper, offer.GameCatalog.Format.Name); TemplatesSwapper.AddParam(DIBZ.Common.Model.Contants.DFOM_Code, offer.GameSwapperDFOM); TemplatesSwapper.AddParam(DIBZ.Common.Model.Contants.UrlContactUs, string.Format("<a href='{0}'>here</a>", hostName + "/Dashboard/ContactUs")); var emailBody = TemplatesSwapper.FillTemplate(emailTemplateResponseSwapper.Body); //save email data in table await emailTemplateLogic.SaveEmailNotification(CurrentLoginSession.ApplicationUser.Email, emailTemplateResponseSwapper.Title, emailBody, EmailType.Email, Priority.Low); EmailHelper.EmailAttachement(CurrentLoginSession.ApplicationUser.Email, emailTemplateResponseSwapper.Title, emailBody, QRCodeImagePath); } EmailHelper.EmailAttachement(CurrentLoginSession.ApplicationUser.Email, "Transaction From PayPal Account", SendEmailAfterTransaction(amount), string.Empty); return(Json(new { IsSuccess = true }, JsonRequestBehavior.AllowGet)); } else { return(Json(new { IsSuccess = false, fail = "Some Thing Wrong!" }, JsonRequestBehavior.AllowGet)); } } catch (Exception lex) { return(Json(new { IsSuccess = false, fail = lex.Message }, JsonRequestBehavior.AllowGet)); } }
public async Task <ActionResult> AddGameIntoCollection(string gameIds, int currentPage, string searchGame, int formatId, int categoryId) { DIBZDbContext context = new DIBZDbContext(); var authLogic = LogicContext.Create <AuthLogic>(); try { var notifierEmail = (from NotifierEmails in context.NotifierEmails orderby NotifierEmails.CreatedTime descending select new { EmailAddress = NotifierEmails.EmailAddress }).ToList(); var userId = CurrentLoginSession.ApplicationUserId.GetValueOrDefault(); var usersFirstGameData = (from ApplicationUser in context.ApplicationUsers where ApplicationUser.Id == userId select new GameData { GameName = ApplicationUser.GameCatalogs.FirstOrDefault().Name }).ToList(); if (usersFirstGameData.First().GameName == null) { // Get UserId, UserName, Game and Format DIBZ.Common.Model.ApplicationUser user = authLogic.GetUserById(userId); var nickName = user.NickName; DIBZ.Common.Model.GameCatalog selectedGame = new DIBZ.Common.Model.GameCatalog(); var offerLogic = LogicContext.Create <OfferLogic>(); selectedGame = await offerLogic.GetSelectedGameById(Convert.ToInt32(gameIds)); var gameName = selectedGame.Name; var gameFormat = selectedGame.Format.Name; if (notifierEmail.Count != 0) { // Email Sending to Specific Email address which is specified by DON. var notifierLastEmail = notifierEmail.FirstOrDefault().EmailAddress; EmailTemplateHelper templates = new EmailTemplateHelper(); EmailTemplateResponse emailTemplateResponse = new EmailTemplateResponse(); DIBZ.Common.Model.EmailNotification Email = new DIBZ.Common.Model.EmailNotification(); var emailTemplateLogic = LogicContext.Create <EmailTemplateLogic>(); emailTemplateResponse = await emailTemplateLogic.GetEmailTemplate(EmailType.Email, EmailContentType.UserFirstGame); templates.AddParam(DIBZ.Common.Model.Contants.AppUserNickName, nickName); templates.AddParam(DIBZ.Common.Model.Contants.GameCatalog_Name, gameName); templates.AddParam(DIBZ.Common.Model.Contants.GameFormat, gameFormat); var emailBody = templates.FillTemplate(emailTemplateResponse.Body); await emailTemplateLogic.SaveEmailNotification(notifierLastEmail, emailTemplateResponse.Title, emailBody, EmailType.Email, Priority.Low); EmailHelper.Email(notifierLastEmail, emailTemplateResponse.Title, emailBody); } } authLogic.AddGameIntoCollection(userId, gameIds); return(RedirectToAction("MyGames", new { currentPage, searchGame, formatId, categoryId })); } catch (Exception lex) { return(Json(new { IsSuccess = false, fail = lex.Message }, JsonRequestBehavior.AllowGet)); } }
public async Task <ActionResult> CreateOffer(string gameOfferId, string gameInReturnId) { DIBZDbContext context = new DIBZDbContext(); var notificationLogic = LogicContext.Create <NotificationLogic>(); var AuthLogic = LogicContext.Create <AuthLogic>(); var GameCatalog = LogicContext.Create <GameCatalogLogic>(); var emailTemplateLogic = LogicContext.Create <EmailTemplateLogic>(); List <DIBZ.Common.DTO.NotificationModel> notifications = new List <Common.DTO.NotificationModel>(); DIBZ.Common.Model.GameCatalog gameCatalog = new DIBZ.Common.Model.GameCatalog(); IEnumerable <DIBZ.Common.Model.ApplicationUser> allApplicationUsers = new List <DIBZ.Common.Model.ApplicationUser>(); DIBZ.Common.Model.EmailTemplate emailTemplate = new DIBZ.Common.Model.EmailTemplate(); EmailTemplateHelper templates = new EmailTemplateHelper(); EmailTemplateResponse emailTemplateResponce = new EmailTemplateResponse(); DIBZ.Common.Model.EmailNotification email = new DIBZ.Common.Model.EmailNotification(); List <int> offeredGameIds = gameOfferId.Split(',').Select(int.Parse).ToList(); List <int> returnedGameIds = new List <int>(); foreach (var offeredGameId in offeredGameIds) { AuthLogic.AddGameIntoCollection(CurrentLoginSession.ApplicationUser.Id, offeredGameId.ToString()); } if (!string.IsNullOrEmpty(gameInReturnId)) { returnedGameIds = gameInReturnId.Split(',').Select(int.Parse).ToList(); } var offerLogic = LogicContext.Create <OfferLogic>(); try { List <DIBZ.Common.Model.Offer> allOffers = new List <Common.Model.Offer>(); foreach (var offeredGameId in offeredGameIds) { if (returnedGameIds.Count > 0) { foreach (var returnedGameId in returnedGameIds) { allOffers.AddRange(CreateOfferForEachSelectedGameInReturn(offeredGameIds, returnedGameId)); } } else { OfferModel offerRequest = new OfferModel(); offerRequest.ApplicationUserId = CurrentLoginSession.ApplicationUserId.GetValueOrDefault(); offerRequest.GameCatalogId = Convert.ToInt32(offeredGameIds); offerLogic.AddUpdateOffer(offerRequest); } if (returnedGameIds.Count > 0) { NotificationModel notificationModel = new NotificationModel(); foreach (var offerId in allOffers) { gameCatalog = await GameCatalog.GetGameCatalogById(offerId.ReturnGameCatalogId.Value); //get all AppUsers By GameId allApplicationUsers = await AuthLogic.GetApplicationUserByGameId(offerId.ReturnGameCatalogId.Value); if (allApplicationUsers.Count() > 0) { foreach (var applicationUser in allApplicationUsers) { // we dont want to notify that user who create this offer if (applicationUser.Id != CurrentLoginSession.ApplicationUserId) { var additionalData = new { GameCatalogId = offeredGameIds, ReturnGameCatalogId = offerId.ReturnGameCatalogId.Value, ReturnImgpath = gameCatalog.imgpath, ReturnGameImageId = gameCatalog.GameImageId, OfferId = offerId.Id }; notificationModel.AdditionalData = Helpers.GetJson(additionalData); notificationModel.AppUserId = Convert.ToInt32(applicationUser.Id); //Channel like Android,Ios,Web notificationModel.Channel = Convert.ToInt32(DIBZ.Common.Model.Channel.Web); notificationModel.Content = "An offer is created for game " + gameCatalog.Name + ""; notificationModel.CreatedTime = DateTime.Now; notificationModel.LastError = ""; notificationModel.OfferIds = allOffers.Select(o => o.Id).ToList(); notificationModel.Status = Convert.ToInt32(DIBZ.Common.Model.NotificationStatus.Unseen); notificationModel.Title = "Create Offer"; notificationModel.NotificationType = Convert.ToInt32(DIBZ.Common.Model.NotificationType.Desktop); notificationModel.NotificationBusinessType = Convert.ToInt32(DIBZ.Common.Model.NotificationBusinessType.CreateOffer); //save notification in notification table var notification = await notificationLogic.AddNotification(notificationModel); // sent notification of offer creater to all users who have that game new DIBZ.Services.ServerNotificationService().CreateOffer(applicationUser.Id, notification.Id, notificationModel.Content, notificationModel.CreatedTime, notificationModel.AdditionalData); } } } } } } } catch (Exception ex) { LogHelper.LogError(ex.Message, ex); } return(RedirectToAction("MyAllOffers", "Offer")); }
public async Task <ActionResult> ChangeSwipStatus(int swapStatus, int offerId, int gameSwipWithId, int gameSwapPersonId, int offerPersonId, string failReasonVal, string failGameVal) { //declarations int failReasonIntValue = 0; int failGameIntVal = 0; string notificationMessage = string.Empty; DIBZ.Common.Model.Swap swap = new DIBZ.Common.Model.Swap(); DIBZ.Common.Model.Offer offer = new DIBZ.Common.Model.Offer(); DIBZ.Common.Model.ApplicationUser swapPerson = new DIBZ.Common.Model.ApplicationUser(); DIBZ.Common.Model.GameCatalog gameCatalog = new DIBZ.Common.Model.GameCatalog(); DIBZ.Common.Model.Notification notification = new DIBZ.Common.Model.Notification(); DIBZ.Common.Model.EmailTemplate emailTemplate = new DIBZ.Common.Model.EmailTemplate(); EmailTemplateHelper templates = new EmailTemplateHelper(); EmailTemplateResponse emailTemplateResponse = new EmailTemplateResponse(); DIBZ.Common.Model.EmailNotification email = new DIBZ.Common.Model.EmailNotification(); var scorecardLogic = LogicContext.Create <ScorecardLogic>(); var swapLogic = LogicContext.Create <SwapLogic>(); var offerLogic = LogicContext.Create <OfferLogic>(); var gameCatalogLogic = LogicContext.Create <GameCatalogLogic>(); var AuthLogic = LogicContext.Create <AuthLogic>(); var emailTemplateLogic = LogicContext.Create <EmailTemplateLogic>(); swap.SwapStatus = (DIBZ.Common.Model.SwapStatus)swapStatus; swap.OfferId = offerId; swap.GameSwapWithId = gameSwipWithId; swap.GameSwapPsersonId = gameSwapPersonId; swap.IsActive = true; swap.UpdatedTime = Convert.ToDateTime(DateTime.Now.ToString("yyyy-MM-dd HH:mm:sss")); //get offer by Id to get Id of Offer Creater person offer = await offerLogic.GetOfferById(offerId); //add swap swap = await swapLogic.AddSwap(swap); //get applicationUserBy applicationUserID swapPerson = await AuthLogic.GetApplicationUserById(swap.GameSwapPsersonId); //get gamecatalog by gameCatalogId gameCatalog = await gameCatalogLogic.GetGameCatalogById(swap.GameSwapWithId); if (swap != null) { var status = (DIBZ.Common.Model.SwapStatus)swapStatus; if (status == DIBZ.Common.Model.SwapStatus.Game1_NoShow) { //if it is SentGame case so update status of only one party at one one await scorecardLogic.UpdateScoreCardByAppUserId(offer.ApplicationUserId, swapStatus, failReasonIntValue, false); //Save notification notificationMessage = "Your " + swap.Offer.GameCatalog.Name + " game hasn't been received with in 5 day, Thank you."; int gameImageId = swap.Offer.GameCatalog.GameImageId; notification = await SaveNotificationForSwapAction(swap, swap.Offer.ApplicationUserId, gameImageId, notificationMessage); //sent notification to user new DIBZ.Services.ServerNotificationService().SwapAction(notification.AppUserId, notification.AdditionalData); //create email template emailTemplateResponse = await emailTemplateLogic.GetEmailTemplate(EmailType.Email, EmailContentType.Game_1_NoShow); templates.AddParam(DIBZ.Common.Model.Contants.AppUserNickName, swap.Offer.ApplicationUser.NickName); templates.AddParam(DIBZ.Common.Model.Contants.GameCatalog_Name, swap.Offer.GameCatalog.Name); templates.AddParam(DIBZ.Common.Model.Contants.GameFormat, swap.Offer.GameCatalog.Format.Name); templates.AddParam(DIBZ.Common.Model.Contants.GameCatalog_Name_Swapper, gameCatalog.Name); templates.AddParam(DIBZ.Common.Model.Contants.GameFormatSwapper, gameCatalog.Format.Name); templates.AddParam(DIBZ.Common.Model.Contants.UrlContactUs, string.Format("<a href='{0}'>here</a>", hostName + "/Dashboard/ContactUs")); //templates.AddParam(DIBZ.Common.Model.Contants.GameCatalog_Name, swap.Offer.GameCatalog.Name); var emailBody = templates.FillTemplate(emailTemplateResponse.Body); //save email data in table await emailTemplateLogic.SaveEmailNotification(swap.Offer.ApplicationUser.Email, emailTemplateResponse.Title, emailBody, EmailType.Email, Priority.Low); EmailHelper.Email(swap.Offer.ApplicationUser.Email, emailTemplateResponse.Title, emailBody); } else if (status == DIBZ.Common.Model.SwapStatus.Game2_NoShow) { //if it is SentGame case so update status of only one party at one one await scorecardLogic.UpdateScoreCardByAppUserId(swap.GameSwapPsersonId, swapStatus, failReasonIntValue, false); //Save notification notificationMessage = "Your " + swap.Offer.ReturnGameCatalog.Name + " game hasn't been received with in 5 day, Thank you."; int gameImageId = swap.Offer.ReturnGameCatalog.GameImageId; notification = await SaveNotificationForSwapAction(swap, swap.GameSwapPsersonId, gameImageId, notificationMessage); //sent notification to user new DIBZ.Services.ServerNotificationService().SwapAction(notification.AppUserId, notification.AdditionalData); //create email template emailTemplateResponse = await emailTemplateLogic.GetEmailTemplate(EmailType.Email, EmailContentType.Game_2_NoShow); templates.AddParam(DIBZ.Common.Model.Contants.AppUserNickName, swap.GameSwapPserson.NickName); templates.AddParam(DIBZ.Common.Model.Contants.GameCatalog_Name, swap.Offer.GameCatalog.Name); templates.AddParam(DIBZ.Common.Model.Contants.GameFormat, swap.Offer.GameCatalog.Format.Name); templates.AddParam(DIBZ.Common.Model.Contants.GameCatalog_Name_Swapper, gameCatalog.Name); templates.AddParam(DIBZ.Common.Model.Contants.GameFormatSwapper, gameCatalog.Format.Name); templates.AddParam(DIBZ.Common.Model.Contants.UrlContactUs, string.Format("<a href='{0}'>here</a>", hostName + "/Dashboard/ContactUs")); //templates.AddParam(DIBZ.Common.Model.Contants.GameCatalog_Name, swap.Offer.ReturnGameCatalog.Name); var emailBody = templates.FillTemplate(emailTemplateResponse.Body); //save email data in table await emailTemplateLogic.SaveEmailNotification(swap.GameSwapPserson.Email, emailTemplateResponse.Title, emailBody, EmailType.Email, Priority.Low); EmailHelper.Email(swap.GameSwapPserson.Email, emailTemplateResponse.Title, emailBody); } else if (status == DIBZ.Common.Model.SwapStatus.All_NoShow) { //get email template emailTemplateResponse = await emailTemplateLogic.GetEmailTemplate(EmailType.Email, EmailContentType.All_NoShow); //Save notification notificationMessage = "Your " + swap.Offer.GameCatalog.Name + " game hasn't been received with in 5 day, Thank you."; int offerGameImageId = swap.Offer.GameCatalog.GameImageId; notification = await SaveNotificationForSwapAction(swap, swap.Offer.ApplicationUserId, offerGameImageId, notificationMessage); //sent notification to user new DIBZ.Services.ServerNotificationService().SwapAction(notification.AppUserId, notification.AdditionalData); templates.AddParam(DIBZ.Common.Model.Contants.AppUserNickName, swap.Offer.ApplicationUser.NickName); templates.AddParam(DIBZ.Common.Model.Contants.GameCatalog_Name, swap.Offer.GameCatalog.Name); templates.AddParam(DIBZ.Common.Model.Contants.GameFormat, swap.Offer.GameCatalog.Format.Name); templates.AddParam(DIBZ.Common.Model.Contants.GameCatalog_Name_Swapper, swap.Offer.ReturnGameCatalog.Name); templates.AddParam(DIBZ.Common.Model.Contants.GameFormatSwapper, swap.Offer.ReturnGameCatalog.Format.Name); templates.AddParam(DIBZ.Common.Model.Contants.UrlContactUs, string.Format("<a href='{0}'>here</a>", hostName + "/Dashboard/ContactUs")); //templates.AddParam(DIBZ.Common.Model.Contants.GameCatalog_Name, swap.Offer.GameCatalog.Name); var emailBodyOfferCreator = templates.FillTemplate(emailTemplateResponse.Body); //save email data in table await emailTemplateLogic.SaveEmailNotification(swap.Offer.ApplicationUser.Email, emailTemplateResponse.Title, emailBodyOfferCreator, EmailType.Email, Priority.Low); EmailHelper.Email(swap.Offer.ApplicationUser.Email, emailTemplateResponse.Title, emailBodyOfferCreator); //Save notification notificationMessage = "Your " + swap.Offer.ReturnGameCatalog.Name + " game hasn't been received with in 5 day, Thank you."; int gameImageId = swap.Offer.ReturnGameCatalog.GameImageId; notification = await SaveNotificationForSwapAction(swap, swap.GameSwapPsersonId, gameImageId, notificationMessage); //sent notification to user new DIBZ.Services.ServerNotificationService().SwapAction(notification.AppUserId, notification.AdditionalData); //create email template EmailTemplateHelper template2 = new EmailTemplateHelper(); EmailTemplateResponse emailTemplateResponse2 = new EmailTemplateResponse(); emailTemplateResponse2 = await emailTemplateLogic.GetEmailTemplate(EmailType.Email, EmailContentType.All_NoShow); template2.AddParam(DIBZ.Common.Model.Contants.AppUserNickName, swap.GameSwapPserson.NickName); template2.AddParam(DIBZ.Common.Model.Contants.GameCatalog_Name, swap.Offer.ReturnGameCatalog.Name); template2.AddParam(DIBZ.Common.Model.Contants.GameFormat, swap.Offer.ReturnGameCatalog.Format.Name); template2.AddParam(DIBZ.Common.Model.Contants.GameCatalog_Name_Swapper, swap.Offer.GameCatalog.Name); template2.AddParam(DIBZ.Common.Model.Contants.GameFormatSwapper, swap.Offer.GameCatalog.Format.Name); template2.AddParam(DIBZ.Common.Model.Contants.UrlContactUs, string.Format("<a href='{0}'>here</a>", hostName + "/Dashboard/ContactUs")); var emailBodyGameSwapPerson = template2.FillTemplate(emailTemplateResponse2.Body); //save email data in table await emailTemplateLogic.SaveEmailNotification(swap.GameSwapPserson.Email, emailTemplateResponse2.Title, emailBodyGameSwapPerson, EmailType.Email, Priority.Low); EmailHelper.Email(swap.GameSwapPserson.Email, emailTemplateResponse2.Title, emailBodyGameSwapPerson); } else if (status == DIBZ.Common.Model.SwapStatus.Game1_Received) { //if it is SentGame case so update status of only one party at one one await scorecardLogic.UpdateScoreCardByAppUserId(offer.ApplicationUserId, swapStatus, failReasonIntValue, true); //Save notification notificationMessage = "Your" + swap.Offer.GameCatalog.Name + "game has been received! Thank you."; int gameImageId = swap.Offer.GameCatalog.GameImageId; notification = await SaveNotificationForSwapAction(swap, swap.Offer.ApplicationUserId, gameImageId, notificationMessage); //sent notification to user new DIBZ.Services.ServerNotificationService().SwapAction(notification.AppUserId, notification.AdditionalData); //create email template emailTemplateResponse = await emailTemplateLogic.GetEmailTemplate(EmailType.Email, EmailContentType.Game_1_Recieved); templates.AddParam(DIBZ.Common.Model.Contants.AppUserNickName, swap.Offer.ApplicationUser.NickName); templates.AddParam(DIBZ.Common.Model.Contants.GameCatalog_Name, swap.Offer.GameCatalog.Name); templates.AddParam(DIBZ.Common.Model.Contants.GameFormat, swap.Offer.GameCatalog.Format.Name); templates.AddParam(DIBZ.Common.Model.Contants.GameCatalog_Name_Swapper, swap.Offer.ReturnGameCatalog.Name); templates.AddParam(DIBZ.Common.Model.Contants.GameFormatSwapper, swap.Offer.ReturnGameCatalog.Format.Name); templates.AddParam(DIBZ.Common.Model.Contants.UrlContactUs, string.Format("<a href='{0}'>here</a>", hostName + "/Dashboard/ContactUs")); var emailBody = templates.FillTemplate(emailTemplateResponse.Body); LogHelper.LogInfo("sending email..."); LogHelper.LogInfo("UrlContactUsPage: " + ConfigurationManager.AppSettings["UrlContactUsPage"]); //save email data in table await emailTemplateLogic.SaveEmailNotification(swap.Offer.ApplicationUser.Email, emailTemplateResponse.Title, emailBody, EmailType.Email, Priority.Low); EmailHelper.Email(swap.Offer.ApplicationUser.Email, emailTemplateResponse.Title, emailBody); //sent email // await EmailHelper.SendEmail(swap.Offer.ApplicationUser.Email,EmailTemplateResponce.Title, emailBody); } else if (status == DIBZ.Common.Model.SwapStatus.Game2_Received) { //if it is SentGame case so update status of only one party at one one await scorecardLogic.UpdateScoreCardByAppUserId(gameSwapPersonId, swapStatus, failReasonIntValue, true); //Save notification notificationMessage = "Your " + gameCatalog.Name + " game has been received! Thank you."; int gameImageId = gameCatalog.GameImageId; notification = await SaveNotificationForSwapAction(swap, swap.GameSwapPsersonId, gameImageId, notificationMessage); //sent notification to user new DIBZ.Services.ServerNotificationService().SwapAction(notification.AppUserId, notification.AdditionalData); //create email template emailTemplateResponse = await emailTemplateLogic.GetEmailTemplate(DIBZ.Common.Model.EmailType.Email, DIBZ.Common.Model.EmailContentType.Game_2_Recieved); templates.AddParam(DIBZ.Common.Model.Contants.AppUserNickName, swap.GameSwapPserson.NickName); templates.AddParam(DIBZ.Common.Model.Contants.GameCatalog_Name, gameCatalog.Name); templates.AddParam(DIBZ.Common.Model.Contants.GameFormat, gameCatalog.Format.Name); templates.AddParam(DIBZ.Common.Model.Contants.GameCatalog_Name_Swapper, swap.Offer.GameCatalog.Name); templates.AddParam(DIBZ.Common.Model.Contants.GameFormatSwapper, swap.Offer.GameCatalog.Format.Name); templates.AddParam(DIBZ.Common.Model.Contants.UrlContactUs, string.Format("<a href='{0}'>here</a>", hostName + "/Dashboard/ContactUs")); //templates.AddParam(DIBZ.Common.Model.Contants.GameCatalog_Name, gameCatalog.Name); var emailBody = templates.FillTemplate(emailTemplateResponse.Body); LogHelper.LogInfo("sending email..."); LogHelper.LogInfo("UrlContactUsPage: " + ConfigurationManager.AppSettings["UrlContactUsPage"]); //save email data in table await emailTemplateLogic.SaveEmailNotification(swap.GameSwapPserson.Email, emailTemplateResponse.Title, emailBody, EmailType.Email, Priority.Low); EmailHelper.Email(swap.GameSwapPserson.Email, emailTemplateResponse.Title, emailBody); } else { if (failReasonVal != "" || failReasonVal == string.Empty) { failReasonIntValue = ConversionHelper.SafeConvertToInt32(failReasonVal); } if (failGameVal != "" || failGameVal == string.Empty) { failGameIntVal = ConversionHelper.SafeConvertToInt32(failGameVal); } //if is not a SentGame case so update status of both parties if (status != DIBZ.Common.Model.SwapStatus.Test_Fail) { await scorecardLogic.UpdateScoreCardByAppUserId(offer.ApplicationUserId, swapStatus, failReasonIntValue, false); await scorecardLogic.UpdateScoreCardByAppUserId(gameSwapPersonId, swapStatus, failReasonIntValue, false); } if (status == DIBZ.Common.Model.SwapStatus.Test_Pass) { notificationMessage = "Congratulation! your swap test has been passed!"; } if (status == DIBZ.Common.Model.SwapStatus.Test_Fail) { string failGameName = string.Empty; if (failGameIntVal == (int)DIBZ.Common.Model.SwapStatus.Game1_Received) { //get OfferCreater GameName failGameName = swap.Offer.GameCatalog.Name; //update score card only offer creater await scorecardLogic.UpdateScoreCardByAppUserId(offer.ApplicationUserId, swapStatus, failReasonIntValue, false); } if (failGameIntVal == (int)DIBZ.Common.Model.SwapStatus.Game2_Received) { //get SwapPerson GameName failGameName = gameCatalog.Name; //update score card only SwapPerson await scorecardLogic.UpdateScoreCardByAppUserId(gameSwapPersonId, swapStatus, failReasonIntValue, false); } if (failReasonIntValue == (int)DIBZ.Common.Model.FailCasses.DiscScratched) { notificationMessage = "Sorry! " + failGameName + " has been failed due to discScratched!"; } else if (failReasonIntValue == (int)DIBZ.Common.Model.FailCasses.CaseOrInstructionsInPoorCondition) { notificationMessage = "Sorry! " + failGameName + " has been failed due to case/instruction in poor condition!"; } else if (failReasonIntValue == (int)DIBZ.Common.Model.FailCasses.GameFailedTesting) { notificationMessage = "Sorry! " + failGameName + " has been failed due to game failed testing!"; } } if (status == DIBZ.Common.Model.SwapStatus.Dispatched) { LogHelper.LogInfo("swaps status set to dispatach."); // removing game from offer creator's collection. await gameCatalogLogic.RemoveGameFromCollectionOnDispatch(offer.ApplicationUserId, offer.GameCatalogId); // removing game from swapper's collection. await gameCatalogLogic.RemoveGameFromCollectionOnDispatch(swap.GameSwapPsersonId, swap.GameSwapWithId); notificationMessage = "Congratulation! swap has been Successfuly dibz!"; } if (status == DIBZ.Common.Model.SwapStatus.Test_Pass || status == DIBZ.Common.Model.SwapStatus.Test_Fail || status == DIBZ.Common.Model.SwapStatus.Dispatched) { int gameImageId = swap.Offer.GameCatalog.GameImageId; int swapperGameImageId = swap.GameSwapWithId; //Save notification to one User notification = await SaveNotificationForSwapAction(swap, swap.Offer.ApplicationUserId, gameImageId, notificationMessage); //sent notification to One user new DIBZ.Services.ServerNotificationService().SwapAction(notification.AppUserId, notification.AdditionalData); //Save notification to anotherUSerr notification = await SaveNotificationForSwapAction(swap, swap.GameSwapPsersonId, swapperGameImageId, notificationMessage); // sent notification to anotherUSer new DIBZ.Services.ServerNotificationService().SwapAction(notification.AppUserId, notification.AdditionalData); //sent Bcc email List <string> emailList = new List <string>(); emailList.Add(swapPerson.Email); emailList.Add(swap.Offer.ApplicationUser.Email); if (status == SwapStatus.Test_Pass) { //create email template for offerrer emailTemplateResponse = await emailTemplateLogic.GetEmailTemplate(EmailType.Email, EmailContentType.Test_Pass); templates.AddParam(DIBZ.Common.Model.Contants.AppUserNickName, swap.Offer.ApplicationUser.NickName); templates.AddParam(DIBZ.Common.Model.Contants.GameCatalog_Name, swap.Offer.GameCatalog.Name); templates.AddParam(DIBZ.Common.Model.Contants.GameFormat, swap.Offer.GameCatalog.Format.Name); templates.AddParam(DIBZ.Common.Model.Contants.GameCatalog_Name_Swapper, swap.Offer.ReturnGameCatalog.Name); templates.AddParam(DIBZ.Common.Model.Contants.GameFormatSwapper, swap.Offer.ReturnGameCatalog.Format.Name); templates.AddParam(DIBZ.Common.Model.Contants.UrlContactUs, string.Format("<a href='{0}'>here</a>", hostName + "/Dashboard/ContactUs")); var emailBody = templates.FillTemplate(emailTemplateResponse.Body); //save email data in table await emailTemplateLogic.SaveEmailNotification(swap.Offer.ApplicationUser.Email, emailTemplateResponse.Title, emailBody, EmailType.Email, Priority.Low); EmailHelper.Email(swap.Offer.ApplicationUser.Email, emailTemplateResponse.Title, emailBody); //create template for swapper EmailTemplateResponse emailTemplateResponse2 = new EmailTemplateResponse(); EmailTemplateHelper template2 = new EmailTemplateHelper(); emailTemplateResponse2 = await emailTemplateLogic.GetEmailTemplate(EmailType.Email, EmailContentType.Test_Pass); template2.AddParam(DIBZ.Common.Model.Contants.AppUserNickName, swap.GameSwapPserson.NickName); template2.AddParam(DIBZ.Common.Model.Contants.GameCatalog_Name, swap.GameSwapWith.Name); template2.AddParam(DIBZ.Common.Model.Contants.GameFormat, swap.GameSwapWith.Format.Name); template2.AddParam(DIBZ.Common.Model.Contants.GameCatalog_Name_Swapper, swap.Offer.GameCatalog.Name); template2.AddParam(DIBZ.Common.Model.Contants.GameFormatSwapper, swap.Offer.GameCatalog.Format.Name); template2.AddParam(DIBZ.Common.Model.Contants.UrlContactUs, string.Format("<a href='{0}'>here</a>", hostName + "/Dashboard/ContactUs")); var emailBodySwapper = template2.FillTemplate(emailTemplateResponse2.Body); //save email data in table await emailTemplateLogic.SaveEmailNotification(swapPerson.Email, emailTemplateResponse2.Title, emailBodySwapper, EmailType.Email, Priority.Low); EmailHelper.Email(swapPerson.Email, emailTemplateResponse2.Title, emailBodySwapper); } else if (status == SwapStatus.Test_Fail) { if (failGameIntVal == (int)DIBZ.Common.Model.SwapStatus.Game1_Received) { //create email template game1 test failed emailTemplateResponse = await emailTemplateLogic.GetEmailTemplate(EmailType.Email, EmailContentType.Test_Fail); templates.AddParam(DIBZ.Common.Model.Contants.AppUserNickName, swap.Offer.ApplicationUser.NickName); templates.AddParam(DIBZ.Common.Model.Contants.GameCatalog_Name, swap.Offer.GameCatalog.Name); templates.AddParam(DIBZ.Common.Model.Contants.GameFormat, swap.Offer.GameCatalog.Format.Name); if (failReasonIntValue == (int)DIBZ.Common.Model.FailCasses.DiscScratched) { notificationMessage = "Sorry! " + swap.Offer.GameCatalog.Name + " has been failed due to discScratched!"; templates.AddParam(DIBZ.Common.Model.Contants.FailReason, notificationMessage); } else if (failReasonIntValue == (int)DIBZ.Common.Model.FailCasses.CaseOrInstructionsInPoorCondition) { notificationMessage = "Sorry! " + swap.Offer.GameCatalog.Name + " has been failed due to case/instruction in poor condition!"; templates.AddParam(DIBZ.Common.Model.Contants.FailReason, notificationMessage); } else if (failReasonIntValue == (int)DIBZ.Common.Model.FailCasses.GameFailedTesting) { notificationMessage = "Sorry! " + swap.Offer.GameCatalog.Name + " has been failed due to game failed testing!"; templates.AddParam(DIBZ.Common.Model.Contants.FailReason, notificationMessage); } templates.AddParam(DIBZ.Common.Model.Contants.GameCatalog_Name_Swapper, gameCatalog.Name); templates.AddParam(DIBZ.Common.Model.Contants.GameFormatSwapper, gameCatalog.Format.Name); templates.AddParam(DIBZ.Common.Model.Contants.UrlContactUs, string.Format("<a href='{0}'>here</a>", hostName + "/Dashboard/ContactUs")); var emailBody = templates.FillTemplate(emailTemplateResponse.Body); //save email data in table await emailTemplateLogic.SaveEmailNotification(offer.ApplicationUser.Email, emailTemplateResponse.Title, emailBody, EmailType.Email, Priority.Low); EmailHelper.Email(offer.ApplicationUser.Email, emailTemplateResponse.Title, emailBody); } else { //create email template game2 test failed EmailTemplateResponse emailTemplateResponse2 = new EmailTemplateResponse(); EmailTemplateHelper template2 = new EmailTemplateHelper(); emailTemplateResponse2 = await emailTemplateLogic.GetEmailTemplate(EmailType.Email, EmailContentType.Test_Fail); template2.AddParam(DIBZ.Common.Model.Contants.AppUserNickName, swap.GameSwapPserson.NickName); template2.AddParam(DIBZ.Common.Model.Contants.GameCatalog_Name_Swapper, gameCatalog.Name); template2.AddParam(DIBZ.Common.Model.Contants.GameFormatSwapper, gameCatalog.Format.Name); template2.AddParam(DIBZ.Common.Model.Contants.GameCatalog_Name, swap.Offer.GameCatalog.Name); template2.AddParam(DIBZ.Common.Model.Contants.GameFormat, swap.Offer.GameCatalog.Format.Name); template2.AddParam(DIBZ.Common.Model.Contants.UrlContactUs, string.Format("<a href='{0}'>here</a>", hostName + "/Dashboard/ContactUs")); var emailBody = template2.FillTemplate(emailTemplateResponse2.Body); //save email data in table await emailTemplateLogic.SaveEmailNotification(swap.GameSwapPserson.Email, emailTemplateResponse2.Title, emailBody, EmailType.Email, Priority.Low); EmailHelper.Email(swap.GameSwapPserson.Email, emailTemplateResponse2.Title, emailBody); } } else if (status == SwapStatus.Dispatched) { //create email template for Offerrer emailTemplateResponse = await emailTemplateLogic.GetEmailTemplate(EmailType.Email, EmailContentType.Dispatch); templates.AddParam(DIBZ.Common.Model.Contants.AppUserNickName, swap.Offer.ApplicationUser.NickName); templates.AddParam(DIBZ.Common.Model.Contants.GameCatalog_Name, swap.Offer.GameCatalog.Name); templates.AddParam(DIBZ.Common.Model.Contants.GameFormat, swap.Offer.GameCatalog.Format.Name); templates.AddParam(DIBZ.Common.Model.Contants.GameCatalog_Name_Swapper, swap.Offer.ReturnGameCatalog.Name); templates.AddParam(DIBZ.Common.Model.Contants.GameFormatSwapper, swap.Offer.ReturnGameCatalog.Format.Name); templates.AddParam(DIBZ.Common.Model.Contants.GameCatalog_Name_Dispatch, swap.Offer.ReturnGameCatalog.Name); templates.AddParam(DIBZ.Common.Model.Contants.GameFormatSwapper_Dispatch, swap.Offer.ReturnGameCatalog.Format.Name); templates.AddParam(DIBZ.Common.Model.Contants.AppUserAddress, swap.Offer.ApplicationUser.Address); templates.AddParam(DIBZ.Common.Model.Contants.UrlContactUs, string.Format("<a href='{0}'>here</a>", hostName + "/Dashboard/ContactUs")); var emailBody = templates.FillTemplate(emailTemplateResponse.Body); //save email data in table await emailTemplateLogic.SaveEmailNotification(swap.Offer.ApplicationUser.Email, emailTemplateResponse.Title, emailBody, EmailType.Email, Priority.Low); EmailHelper.Email(swap.Offer.ApplicationUser.Email, emailTemplateResponse.Title, emailBody); //create email template for Swapper EmailTemplateResponse emailTemplateResponse2 = new EmailTemplateResponse(); EmailTemplateHelper template2 = new EmailTemplateHelper(); emailTemplateResponse2 = await emailTemplateLogic.GetEmailTemplate(EmailType.Email, EmailContentType.Dispatch); template2.AddParam(DIBZ.Common.Model.Contants.AppUserNickName, swap.GameSwapPserson.NickName); template2.AddParam(DIBZ.Common.Model.Contants.GameCatalog_Name, swap.GameSwapWith.Name); template2.AddParam(DIBZ.Common.Model.Contants.GameFormat, swap.GameSwapWith.Format.Name); template2.AddParam(DIBZ.Common.Model.Contants.GameCatalog_Name_Swapper, swap.Offer.GameCatalog.Name); template2.AddParam(DIBZ.Common.Model.Contants.GameFormatSwapper, swap.Offer.GameCatalog.Format.Name); template2.AddParam(DIBZ.Common.Model.Contants.GameCatalog_Name_Dispatch, swap.Offer.GameCatalog.Name); template2.AddParam(DIBZ.Common.Model.Contants.GameFormatSwapper_Dispatch, swap.Offer.GameCatalog.Format.Name); template2.AddParam(DIBZ.Common.Model.Contants.AppUserAddress, swap.GameSwapPserson.Address); template2.AddParam(DIBZ.Common.Model.Contants.UrlContactUs, string.Format("<a href='{0}'>here</a>", hostName + "/Dashboard/ContactUs")); var emailBodySwapper = template2.FillTemplate(emailTemplateResponse2.Body); //save email data in table await emailTemplateLogic.SaveEmailNotification(swapPerson.Email, emailTemplateResponse2.Title, emailBodySwapper, EmailType.Email, Priority.Low); EmailHelper.Email(swapPerson.Email, emailTemplateResponse2.Title, emailBodySwapper); } // await EmailHelper.SendEmailBcc(emailList, "Dibz swap status update", notificationMessage); } } return(Json(new { IsSuccess = true, data = string.Empty }, JsonRequestBehavior.AllowGet)); } else { return(Json(new { IsSuccess = false, fail = "Some thing wrong!" }, JsonRequestBehavior.AllowGet)); } }
public async Task <ActionResult> DeleteCounterOffer(int id) { var counterOfferLogic = LogicContext.Create <CounterOfferLogic>(); var counterOfferDetail = await counterOfferLogic.GetCounterOfferById(id); var authLogic = LogicContext.Create <AuthLogic>(); var emailTemplateLogic = LogicContext.Create <EmailTemplateLogic>(); //DIBZ.Common.Model.ApplicationUser applicationUser = new DIBZ.Common.Model.ApplicationUser(); //get ApplicationUser detail by appUserId //applicationUser = await authLogic.GetApplicationUserById(Convert.ToInt16(CurrentLoginSession.ApplicationUserId)); DIBZ.Common.DTO.NotificationModel notificationModel = new DIBZ.Common.DTO.NotificationModel(); DIBZ.Common.Model.Notification notification = new DIBZ.Common.Model.Notification(); DIBZ.Common.Model.EmailTemplate emailTemplate = new DIBZ.Common.Model.EmailTemplate(); DIBZ.Common.Model.EmailNotification email = new DIBZ.Common.Model.EmailNotification(); EmailTemplateHelper templates = new EmailTemplateHelper(); EmailTemplateResponse emailTemplateResponse = new EmailTemplateResponse(); var notificationLogic = LogicContext.Create <NotificationLogic>(); notificationModel.AppUserId = counterOfferDetail.CounterOfferPersonId; notificationModel.Channel = Convert.ToInt32(DIBZ.Common.Model.Channel.Web); notificationModel.Content = counterOfferDetail.Offer.ApplicationUser.NickName + " has declined your offer for <b>" + counterOfferDetail.Offer.GameCatalog.Name + "</b>";//applicationUser.NickName + " has declide your offer you made for <b>" + offerDetail.GameCatalog.Name + "</b>"; notificationModel.CreatedTime = DateTime.Now; notificationModel.IsActive = true; notificationModel.IsDeleted = false; notificationModel.LastError = ""; notificationModel.NotificationBusinessType = Convert.ToInt32(DIBZ.Common.Model.NotificationBusinessType.CounterOffer); notificationModel.NotificationType = Convert.ToInt32(DIBZ.Common.Model.NotificationType.Desktop); notificationModel.OfferId = counterOfferDetail.OfferId; notificationModel.Status = Convert.ToInt32(DIBZ.Common.Model.NotificationStatus.Unseen); notificationModel.Title = "Counter Offer"; //save notification in notification table // save additional data in the form of json string in notification table var additionalData = new { GameCatalogId = counterOfferDetail.Offer.GameCatalogId, GameCatalogImageId = counterOfferDetail.Offer.GameCatalog.GameImageId, ReturnGameCatalogId = counterOfferDetail.Offer.ReturnGameCatalogId.Value, CounterOfferId = id }; notificationModel.AdditionalData = Helpers.GetJson(additionalData); notification = await notificationLogic.AddNotification(notificationModel); //sent notification to offer creater new DIBZ.Services.ServerNotificationService().CounterOffer(counterOfferDetail.CounterOfferPersonId, notification.Id, notificationModel.Content, notificationModel.CreatedTime, notificationModel.AdditionalData); //create email template emailTemplateResponse = await emailTemplateLogic.GetEmailTemplate(EmailType.Email, EmailContentType.DeclineOffer); templates.AddParam(DIBZ.Common.Model.Contants.AppUserNickName, counterOfferDetail.Offer.ApplicationUser.NickName); templates.AddParam(DIBZ.Common.Model.Contants.UrlContactUs, string.Format("<a href='{0}'>here</a>", hostName + "/Dashboard/ContactUs")); var emailBody = templates.FillTemplate(emailTemplateResponse.Body); //save email data in table await emailTemplateLogic.SaveEmailNotification(counterOfferDetail.Offer.ApplicationUser.Email, emailTemplateResponse.Title, emailBody, EmailType.Email, Priority.Low); EmailHelper.Email(counterOfferDetail.Offer.ApplicationUser.Email, emailTemplateResponse.Title, emailBody); // and as well as, email sent to him EmailTemplateHelper templateForCounterOfferPerson = new EmailTemplateHelper(); templateForCounterOfferPerson.AddParam(DIBZ.Common.Model.Contants.AppUserNickName, counterOfferDetail.CounterOfferPerson.NickName); templateForCounterOfferPerson.AddParam(DIBZ.Common.Model.Contants.UrlContactUs, string.Format("<a href='{0}'>here</a>", hostName + "/Dashboard/ContactUs")); emailBody = templateForCounterOfferPerson.FillTemplate(emailTemplateResponse.Body); await emailTemplateLogic.SaveEmailNotification(counterOfferDetail.CounterOfferPerson.Email, emailTemplateResponse.Title, emailBody, EmailType.Email, Priority.Low); EmailHelper.Email(counterOfferDetail.CounterOfferPerson.Email, emailTemplateResponse.Title, emailBody); // add game into the collection again to the counter person. var gameLogic = LogicContext.Create <GameCatalogLogic>(); await gameLogic.AddGameIntoCollection(counterOfferDetail.CounterOfferPersonId, counterOfferDetail.GameCounterOfferWithId); // Deleting counter offer. await counterOfferLogic.Delete(id); return(RedirectToAction("PossibleSwaps", "Offer")); }
public async Task <ActionResult> AcceptOfferAfterTransactionDone(int counterOfferId) { DIBZ.Common.Model.CounterOffer counterOffer = new DIBZ.Common.Model.CounterOffer(); var counterOfferLogic = LogicContext.Create <CounterOfferLogic>(); counterOffer = await counterOfferLogic.GetCounterOfferById(counterOfferId); //variable declations var offerLogic = LogicContext.Create <OfferLogic>(); var notificationLogic = LogicContext.Create <NotificationLogic>(); var emailTemplateLogic = LogicContext.Create <EmailTemplateLogic>(); DIBZ.Common.DTO.NotificationModel notificationModel = new DIBZ.Common.DTO.NotificationModel(); DIBZ.Common.Model.Swap swap = new DIBZ.Common.Model.Swap(); DIBZ.Common.Model.Notification notification = new DIBZ.Common.Model.Notification(); DIBZ.Common.Model.EmailTemplate emailTemplate = new DIBZ.Common.Model.EmailTemplate(); EmailTemplateHelper templates = new EmailTemplateHelper(); EmailTemplateResponse emailTemplateResponse = new EmailTemplateResponse(); DIBZ.Common.Model.EmailNotification email = new DIBZ.Common.Model.EmailNotification(); //create deal swap = await counterOfferLogic.CreateDeal(counterOffer.Offer.Id, counterOffer.CounterOfferPersonId, counterOffer.GameCounterOfferWithId); //Deleting all the other offers of offered game await offerLogic.GetAllOfferByGameAndApplicationUser(counterOffer.Offer.ApplicationUserId, counterOffer.Offer.GameCatalogId); //Deleting all the offers of counter offer game. await offerLogic.GetAllOfferByGameAndApplicationUser(counterOffer.CounterOfferPersonId, counterOffer.Offer.ReturnGameCatalogId.Value); //sent notification to requested person to inform that his request has been accepted notificationModel.AppUserId = swap.GameSwapPsersonId; notificationModel.Channel = Convert.ToInt32(DIBZ.Common.Model.Channel.Web); notificationModel.Content = "Swap has been committed for " + counterOffer.Offer.GameCatalog.Name + "."; notificationModel.CreatedTime = DateTime.Now; notificationModel.IsActive = true; notificationModel.IsDeleted = false; notificationModel.LastError = ""; notificationModel.NotificationBusinessType = Convert.ToInt32(DIBZ.Common.Model.NotificationBusinessType.AcceptOffer); notificationModel.NotificationType = Convert.ToInt32(DIBZ.Common.Model.NotificationType.Desktop); notificationModel.OfferId = counterOffer.OfferId; notificationModel.Status = Convert.ToInt32(DIBZ.Common.Model.NotificationStatus.Unseen); notificationModel.Title = "Accept Offer"; //save notification in notification table var additionalData = new { OfferId = counterOffer.Offer.Id, CounterOfferPersonId = counterOffer.CounterOfferPersonId, GameCounterOfferWithId = counterOffer.GameCounterOfferWithId, GameCatalogImageId = counterOffer.Offer.GameCatalog.GameImageId }; notificationModel.AdditionalData = Helpers.GetJson(additionalData); notification = await notificationLogic.AddNotification(notificationModel); //sent notification new DIBZ.Services.ServerNotificationService().AcceptOffer(counterOffer.CounterOfferPersonId, notification.Id, notificationModel.Content, notificationModel.CreatedTime, notificationModel.AdditionalData); //create email template emailTemplateResponse = await emailTemplateLogic.GetEmailTemplate(EmailType.Email, EmailContentType.AcceptOffer); templates.AddParam(DIBZ.Common.Model.Contants.AppUserNickName, counterOffer.Offer.ApplicationUser.NickName); templates.AddParam(DIBZ.Common.Model.Contants.AppUserNickName_Swapper, counterOffer.CounterOfferPerson.NickName); templates.AddParam(DIBZ.Common.Model.Contants.GameCatalog_Name, counterOffer.Offer.GameCatalog.Name); templates.AddParam(DIBZ.Common.Model.Contants.GameCatalog_Name_Swapper, counterOffer.Offer.ReturnGameCatalog.Name); templates.AddParam(DIBZ.Common.Model.Contants.GameFormat, counterOffer.Offer.GameCatalog.Format.Name); templates.AddParam(DIBZ.Common.Model.Contants.GameFormatSwapper, counterOffer.Offer.ReturnGameCatalog.Format.Name); templates.AddParam(DIBZ.Common.Model.Contants.UrlPossibleSwap, string.Format("<a href='{0}'>here</a>", hostName + "/Offer/PossibleSwaps")); templates.AddParam(DIBZ.Common.Model.Contants.UrlContactUs, string.Format("<a href='{0}'>here</a>", hostName + "/Dashboard/ContactUs")); //templates.AddParam(DIBZ.Common.Model.Contants.GameCatalog_Name, counterOffer.Offer.GameCatalog.Name); var emailBody = templates.FillTemplate(emailTemplateResponse.Body); //save email data in table await emailTemplateLogic.SaveEmailNotification(counterOffer.CounterOfferPerson.Email, emailTemplateResponse.Title, emailBody, EmailType.Email, Priority.Low); EmailHelper.Email(counterOffer.CounterOfferPerson.Email, emailTemplateResponse.Title, emailBody); // and as well as, email sent to him // EmailHelper.Email(counterOffer.CounterOfferPerson.Email, EmailTemplateResponce.Title,emailBody); return(RedirectToAction("MySwaps", "Offer")); }
public async Task <ActionResult> AddCounterOffer(DIBZ.Common.Model.Offer offer, string gameInReturn) { //Variables declarations var notificationLogic = LogicContext.Create <NotificationLogic>(); var offerLogic = LogicContext.Create <OfferLogic>(); var authLogic = LogicContext.Create <AuthLogic>(); var counterOfferLogic = LogicContext.Create <CounterOfferLogic>(); var emailTemplateLogic = LogicContext.Create <EmailTemplateLogic>(); string returnGameCatalogId; DIBZ.Common.Model.Offer offerDetail = new DIBZ.Common.Model.Offer(); DIBZ.Common.Model.ApplicationUser applicationUser = new DIBZ.Common.Model.ApplicationUser(); DIBZ.Common.DTO.NotificationModel notificationModel = new DIBZ.Common.DTO.NotificationModel(); DIBZ.Common.Model.Notification notification = new DIBZ.Common.Model.Notification(); DIBZ.Common.Model.CounterOffer counterOffer = new DIBZ.Common.Model.CounterOffer(); DIBZ.Common.Model.EmailTemplate emailTemplate = new DIBZ.Common.Model.EmailTemplate(); EmailTemplateHelper templates = new EmailTemplateHelper(); EmailTemplateResponse emailTemplateResponse = new EmailTemplateResponse(); DIBZ.Common.Model.EmailNotification email = new DIBZ.Common.Model.EmailNotification(); //get offer by offerId offerDetail = await offerLogic.GetOfferById(offer.Id); //get ApplicationUser detail by appUserId applicationUser = await authLogic.GetApplicationUserById(Convert.ToInt16(CurrentLoginSession.ApplicationUserId)); if (gameInReturn != null) { returnGameCatalogId = gameInReturn; } else { returnGameCatalogId = offer.ReturnGameCatalogId.ToString(); } notificationModel.AppUserId = offerDetail.ApplicationUserId; notificationModel.Channel = Convert.ToInt32(DIBZ.Common.Model.Channel.Web); notificationModel.Content = applicationUser.NickName + " is interested in <b>" + offer.GameCatalog.Name + "</b>"; notificationModel.CreatedTime = DateTime.Now; notificationModel.IsActive = true; notificationModel.IsDeleted = false; notificationModel.LastError = ""; notificationModel.NotificationBusinessType = Convert.ToInt32(DIBZ.Common.Model.NotificationBusinessType.CounterOffer); notificationModel.NotificationType = Convert.ToInt32(DIBZ.Common.Model.NotificationType.Desktop); notificationModel.OfferId = offer.Id; notificationModel.Status = Convert.ToInt32(DIBZ.Common.Model.NotificationStatus.Unseen); notificationModel.Title = "Counter Offer"; //save counteroffer data in counteroffer table int gameCounterOfferId = ConversionHelper.SafeConvertToInt32(returnGameCatalogId); counterOffer = await counterOfferLogic.AddCounterOffer(offer.Id, gameCounterOfferId, Convert.ToInt16(CurrentLoginSession.ApplicationUser.Id)); //save notification in notification table // save additional data in the form of json string in notification table var additionalData = new { GameCatalogId = offer.GameCatalogId, GameCatalogImageId = offerDetail.GameCatalog.GameImageId, ReturnGameCatalogId = returnGameCatalogId, CounterOfferId = counterOffer.Id }; notificationModel.AdditionalData = Helpers.GetJson(additionalData); notification = await notificationLogic.AddNotification(notificationModel); //sent notification to offer creater new DIBZ.Services.ServerNotificationService().CounterOffer(offerDetail.ApplicationUserId, notification.Id, notificationModel.Content, notificationModel.CreatedTime, notificationModel.AdditionalData); //create email template emailTemplateResponse = await emailTemplateLogic.GetEmailTemplate(EmailType.Email, EmailContentType.AddInterest); templates.AddParam(DIBZ.Common.Model.Contants.AppUserNickName, offerDetail.ApplicationUser.NickName); templates.AddParam(DIBZ.Common.Model.Contants.AppUserNickName_Swapper, applicationUser.NickName); templates.AddParam(DIBZ.Common.Model.Contants.GameCatalog_Name, offerDetail.GameCatalog.Name); templates.AddParam(DIBZ.Common.Model.Contants.GameCatalog_Name_Swapper, offerDetail.ReturnGameCatalog.Name); templates.AddParam(DIBZ.Common.Model.Contants.GameFormat, offerDetail.GameCatalog.Format.Name); templates.AddParam(DIBZ.Common.Model.Contants.GameFormatSwapper, offerDetail.ReturnGameCatalog.Format.Name); templates.AddParam(DIBZ.Common.Model.Contants.UrlPossibleSwap, string.Format("<a href='{0}'>here</a>", hostName + "/Offer/PossibleSwaps")); templates.AddParam(DIBZ.Common.Model.Contants.UrlContactUs, string.Format("<a href='{0}'>here</a>", hostName + "/Dashboard/ContactUs")); var emailBody = templates.FillTemplate(emailTemplateResponse.Body); //save email data in table await emailTemplateLogic.SaveEmailNotification(offerDetail.ApplicationUser.Email, emailTemplateResponse.Title, emailBody, EmailType.Email, Priority.Low); EmailHelper.Email(offerDetail.ApplicationUser.Email, emailTemplateResponse.Title, emailBody); // and as well as, email sent to him //EmailHelper.Email(applicationUser.Email, emailTemplateResponse.Title, emailBody); return(RedirectToAction("Index", "Dashboard")); }
/*[HttpGet] * [AuthOp(LoggedInUserOnly = true)] * [OutputCache(NoStore = true, Duration = 0, VaryByParam = "None")] * public async Task<ActionResult> AddCounterOffer(int id) * { * //this code is use when we get notificationid * * //var notificationLogic = LogicContext.Create<NotificationLogic>(); * //var OfferLogic = LogicContext.Create<OfferLogic>(); * //DIBZ.Common.Model.Notification notification = new DIBZ.Common.Model.Notification(); * //DIBZ.Common.DTO.CounterOffer counterOffer = new DIBZ.Common.DTO.CounterOffer(); * * //DIBZ.Common.DTO.NotificationAdditionalData notificationAdditionalData = new DIBZ.Common.DTO.NotificationAdditionalData(); * //notification = await notificationLogic.GetNotificationById(notificationId); * * //if (notification != null) * //{ * // notificationAdditionalData = JsonConvert.DeserializeObject<DIBZ.Common.DTO.NotificationAdditionalData>(notification.AdditionalData); * // //await OfferLogic.GetOfferById(notificationAdditionalData.OfferId); * // counterOffer.GameCatalogId = notificationAdditionalData.GameCatalogId; * // counterOffer.ReturnGameCatalogId = notificationAdditionalData.ReturnGameCatalogId; * // counterOffer.Description = notificationAdditionalData.Description; * // counterOffer.OfferId = notification.OfferId; * // return View(counterOffer); * //} * //return View("Edit", notification); * * * var offerLogic = LogicContext.Create<OfferLogic>(); * var gameCatalogLogic = LogicContext.Create<GameCatalogLogic>(); * ViewBag.MyGames = await gameCatalogLogic.GetAllGamesOfApplicationUser(CurrentLoginSession.ApplicationUserId.GetValueOrDefault()); * DIBZ.Common.Model.CounterOffer counterOffer = new DIBZ.Common.Model.CounterOffer(); * DIBZ.Common.Model.Offer offer = new DIBZ.Common.Model.Offer(); * offer = await offerLogic.GetOfferById(id); * * if (offer != null) * { * return View(offer); * } * return View(offer); * }*/ //[HttpGet] ////[AuthOp(LoggedInUserOnly = true)] //[OutputCache(NoStore = true, Duration = 0, VaryByParam = "None")] public async Task <ActionResult> AddCounterOffer(int id) { try { //Variables declarations var notificationLogic = LogicContext.Create <NotificationLogic>(); var offerLogic = LogicContext.Create <OfferLogic>(); var authLogic = LogicContext.Create <AuthLogic>(); var counterOfferLogic = LogicContext.Create <CounterOfferLogic>(); var emailTemplateLogic = LogicContext.Create <EmailTemplateLogic>(); DIBZ.Common.Model.Offer offerDetail = new DIBZ.Common.Model.Offer(); DIBZ.Common.Model.ApplicationUser applicationUser = new DIBZ.Common.Model.ApplicationUser(); DIBZ.Common.DTO.NotificationModel notificationModel = new DIBZ.Common.DTO.NotificationModel(); DIBZ.Common.Model.Notification notification = new DIBZ.Common.Model.Notification(); DIBZ.Common.Model.CounterOffer counterOffer = new DIBZ.Common.Model.CounterOffer(); DIBZ.Common.Model.EmailTemplate emailTemplate = new DIBZ.Common.Model.EmailTemplate(); EmailTemplateHelper templates = new EmailTemplateHelper(); EmailTemplateResponse emailTemplateResponse = new EmailTemplateResponse(); DIBZ.Common.Model.EmailNotification email = new DIBZ.Common.Model.EmailNotification(); //get offer by offerId offerDetail = await offerLogic.GetOfferById(id); //get ApplicationUser detail by appUserId applicationUser = await authLogic.GetApplicationUserById(Convert.ToInt16(CurrentLoginSession.ApplicationUserId)); notificationModel.AppUserId = offerDetail.ApplicationUserId; notificationModel.Channel = Convert.ToInt32(DIBZ.Common.Model.Channel.Web); notificationModel.Content = applicationUser.NickName + " is interested in <b>" + offerDetail.GameCatalog.Name + "</b>"; notificationModel.CreatedTime = DateTime.Now; notificationModel.IsActive = true; notificationModel.IsDeleted = false; notificationModel.LastError = ""; notificationModel.NotificationBusinessType = Convert.ToInt32(DIBZ.Common.Model.NotificationBusinessType.CounterOffer); notificationModel.NotificationType = Convert.ToInt32(DIBZ.Common.Model.NotificationType.Desktop); notificationModel.OfferId = offerDetail.Id; notificationModel.Status = Convert.ToInt32(DIBZ.Common.Model.NotificationStatus.Unseen); notificationModel.Title = "Counter Offer"; //save counteroffer data in counteroffer table if (offerDetail.ReturnGameCatalogId == null) { throw new Exception("Counter Offer cannot be created without game sought in return."); } int gameCounterOfferId = offerDetail.ReturnGameCatalogId.Value; //getting the list of games that counter person have var gameCatalogLogic = LogicContext.Create <GameCatalogLogic>(); var myGames = (await gameCatalogLogic.GetAllGamesOfApplicationUser(CurrentLoginSession.ApplicationUser.Id)).Where(o => o.IsValidForOffer).Select(o => o.GameId).ToList(); if (!myGames.Contains(offerDetail.ReturnGameCatalogId.Value)) { throw new Exception("You do not possess the game sought in return."); } counterOffer = await counterOfferLogic.AddCounterOffer(offerDetail.Id, gameCounterOfferId, CurrentLoginSession.ApplicationUser.Id); //save notification in notification table // save additional data in the form of json string in notification table var additionalData = new { GameCatalogId = offerDetail.GameCatalogId, GameCatalogImageId = offerDetail.GameCatalog.GameImageId, ReturnGameCatalogId = offerDetail.ReturnGameCatalogId.Value, CounterOfferId = counterOffer.Id }; notificationModel.AdditionalData = Helpers.GetJson(additionalData); notification = await notificationLogic.AddNotification(notificationModel); //sent notification to offer creater new DIBZ.Services.ServerNotificationService().CounterOffer(offerDetail.ApplicationUserId, notification.Id, notificationModel.Content, notificationModel.CreatedTime, notificationModel.AdditionalData); //Deleting all the offers of counter offer game. await offerLogic.GetAllOfferByGameAndApplicationUser(applicationUser.Id, gameCounterOfferId); // Deleting game of Counter person. var gameLogic = LogicContext.Create <GameCatalogLogic>(); await gameLogic.RemoveGameFromCollection(CurrentLoginSession.ApplicationUser.Id, gameCounterOfferId); //create email template emailTemplateResponse = await emailTemplateLogic.GetEmailTemplate(EmailType.Email, EmailContentType.AddInterest); templates.AddParam(DIBZ.Common.Model.Contants.AppUserNickName, offerDetail.ApplicationUser.NickName); templates.AddParam(DIBZ.Common.Model.Contants.AppUserNickName_Swapper, applicationUser.NickName); templates.AddParam(DIBZ.Common.Model.Contants.GameCatalog_Name, offerDetail.GameCatalog.Name); templates.AddParam(DIBZ.Common.Model.Contants.GameCatalog_Name_Swapper, offerDetail.ReturnGameCatalog.Name); templates.AddParam(DIBZ.Common.Model.Contants.GameFormat, offerDetail.GameCatalog.Format.Name); templates.AddParam(DIBZ.Common.Model.Contants.GameFormatSwapper, offerDetail.ReturnGameCatalog.Format.Name); templates.AddParam(DIBZ.Common.Model.Contants.UrlPossibleSwap, string.Format("<a href='{0}'>here</a>", hostName + "/Offer/PossibleSwaps")); templates.AddParam(DIBZ.Common.Model.Contants.UrlContactUs, string.Format("<a href='{0}'>here</a>", hostName + "/Dashboard/ContactUs")); var emailBody = templates.FillTemplate(emailTemplateResponse.Body); //save email data in table await emailTemplateLogic.SaveEmailNotification(offerDetail.ApplicationUser.Email, emailTemplateResponse.Title, emailBody, EmailType.Email, Priority.Low); EmailHelper.Email(offerDetail.ApplicationUser.Email, emailTemplateResponse.Title, emailBody); // and as well as, email sent to him //EmailHelper.Email(applicationUser.Email,emailTemplateResponse.Title, emailBody); return(RedirectToAction("PossibleSwaps", "Offer")); } catch (Exception ex) { TempData["Error"] = ex.Message;//"Counter Offer cannot be created without game sought in return. "; //return RedirectToAction("ViewAllOffers", "Dashboard"); return(Redirect(Request.UrlReferrer.ToString())); } }