public async Task <ActionResult> OfferDetail(int id) { var swapLogic = LogicContext.Create <SwapLogic>(); //DIBZ.Common.Model.ApplicationUser appUser = new DIBZ.Common.Model.ApplicationUser(); var authLogic = LogicContext.Create <AuthLogic>(); var swapStatusOfferer = await swapLogic.GetSwapById(id, "Offerer"); var swapStatusSwapper = await swapLogic.GetSwapById(id, "Swapper"); ViewBag.SwapStatusOfferer = swapStatusOfferer.SwapStatus == SwapStatus.Accepted ? "Awaiting Payment" : swapStatusOfferer.SwapStatus.ToString().Replace("_", " "); ViewBag.SwapStatusSwapper = swapStatusSwapper.SwapStatus == SwapStatus.Accepted ? "Awaiting Payment" : swapStatusSwapper.SwapStatus.ToString().Replace("_", " "); var swapStatus = (swapStatusOfferer.Offer.Transactions.Count == 2 && (swapStatusOfferer.SwapStatus == SwapStatus.Payment_Done_By_Offerer || swapStatusOfferer.SwapStatus == SwapStatus.Payment_Done_By_Swapper)) ? SwapStatus.Payment_Successful : swapStatusOfferer.SwapStatus; ViewBag.SwapStatus = swapStatus.ToString().Replace("_", " "); ViewBag.Login = CurrentLoginSession.ApplicationUserId.GetValueOrDefault() == swapStatusOfferer.GameSwapPsersonId ? "Swapper" : "Offerer"; DIBZ.Common.Model.Offer offer = new DIBZ.Common.Model.Offer(); var offerLogic = LogicContext.Create <OfferLogic>(); if (id > 0) { offer = await offerLogic.GetOfferById(id); var appUser = authLogic.GetUserById(swapStatusOfferer.GameSwapPsersonId); ViewBag.SwapWith = appUser.NickName.ToString(); return(View(offer)); } return(RedirectToAction("Index", "Myprofile")); }
private async Task HandlingOfferedImpact(DIBZ.Common.Model.CounterOffer counterOffer) { //Creating new offer for counter person's game DIBZ.Common.Model.Offer impactOffer = new DIBZ.Common.Model.Offer { OfferStatus = OfferStatus.Accept, GameCatalogId = counterOffer.GameCounterOfferWithId, ApplicationUserId = counterOffer.CounterOfferPersonId, ReturnGameCatalogId = counterOffer.Offer.GameCatalogId, IsActive = true, }; Db.Add(impactOffer); //Creating new Swap for Counter Person's game DIBZ.Common.Model.Swap impactSwap = new DIBZ.Common.Model.Swap { OfferId = impactOffer.Id, IsActive = true, IsDeleted = false, GameSwapPsersonId = counterOffer.Offer.ApplicationUserId, GameSwapWithId = impactOffer.ReturnGameCatalogId.Value, SwapStatus = SwapStatus.Accepted }; await Db.SaveAsync(); await MarkOtherOffersNotAvailable(impactOffer); }
public DIBZ.Common.Model.Offer EditOffer(int id, int gameId, int returnGameId) { DIBZ.Common.Model.Offer offer = GetOfferByOfferId(id); offer.GameCatalogId = gameId; offer.ReturnGameCatalogId = returnGameId; Db.Save(); return(offer); }
public async Task <ActionResult> ViewOfferDetail(int id) { DIBZ.Common.Model.Offer offer = new DIBZ.Common.Model.Offer(); var offerLogic = LogicContext.Create <OfferLogic>(); offer = await offerLogic.GetOfferById(id); return(Json(new { IsSuccess = true, OfferedGame = offer.GameCatalog.Name, OfferedGameImageId = offer.GameCatalog.GameImageId, Status = offer.OfferStatus.ToString(), OfferCreateDate = offer.CreatedTime.ToString("dd/MM/yyyy"), SwapWithGame = (offer.ReturnGameCatalogId.HasValue) ? offer.ReturnGameCatalog.Name : string.Empty }, JsonRequestBehavior.AllowGet)); }
private async Task MarkOtherOffersNotAvailable(DIBZ.Common.Model.Offer offer) { var notAvailableOffers = await Db.Query <DIBZ.Common.Model.Offer>(o => o.GameCatalogId == offer.GameCatalogId && o.OfferStatus == OfferStatus.Pending && o.ApplicationUserId == offer.ApplicationUserId).QueryAsync(); foreach (var item in notAvailableOffers) { item.OfferStatus = OfferStatus.NotAvailable; } await Db.SaveAsync(); }
public async Task <ActionResult> AddUpdate(int Id) { DIBZ.Common.Model.Offer offer = new DIBZ.Common.Model.Offer(); if (Id > 0) { var offerLogic = LogicContext.Create <OfferLogic>(); offer = await offerLogic.GetOfferById(Id); return(RedirectToAction("Edit", offer)); } return(View("Edit", offer)); }
public DIBZ.Common.Model.Offer AddUpdateOffer(OfferModel request) { DIBZ.Common.Model.Offer offer = new DIBZ.Common.Model.Offer { OfferStatus = OfferStatus.Pending, GameCatalogId = request.GameCatalogId, ApplicationUserId = request.ApplicationUserId, ReturnGameCatalogId = request.AgaintsGameCatalogId, Description = "Testing 02", //request.Description, IsActive = true, }; Db.Add(offer); Db.Save(); return(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> 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())); } }