/// <summary> /// 添加默认的需求订阅信息当新用户关注时 /// </summary> /// <param name="userId"></param> /// <returns></returns> public DemandSubscription AddDefautlSubcription(int userId) { DemandSubscription subscription = null; var conn = DBHelper.GetSqlConnection(); try { var demandCatogoryRepository = new DemandCategoryRepository(); var catogroies = demandCatogoryRepository.FindAll(); using (TransactionScope scope = new TransactionScope()) { conn.Open(); var currentTime = DateTime.Now; subscription = new DemandSubscription() { InsertedTimestamp = currentTime, IsSubscribed = true, LastPushTimestamp = currentTime, LastUpdatedTimestamp = currentTime, WeChatUserId = userId, IsEnableEmailSubscription = false, EmailAddress = string.Empty }; subscription = subscriptionDao.InsertOrUpdateSubscription(conn, subscription); if (subscription.IsNotNull() && catogroies.HasItem()) { foreach (var item in catogroies) { var subscriptionDetail = new DemandSubscriptionDetail() { InsertedTimestamp = currentTime, SubscriptionId = subscription.SubscriptionId, SubscriptionType = DemandSubscriptionType.Category.ToString(), SubscriptionValue = item.Id.ToString() }; subscriptionDao.InsertSubscriptionDetail(conn, subscriptionDetail); } } scope.Complete(); } } catch (Exception ex) { LogService.LogWexin("添加默认的需求订阅信息当新用户关注时", ex.ToString()); } finally { conn.Close(); } return subscription; }
public ActionResult Update(bool enable, string subscriedTypes, string subscribedAreas, string subscribedKeywords, bool emailEnabled, string emailAddress) { DemandSubscription subscription = subscriptionService.GetSubscription(CurrentWeChatUser.Id); var errorMessage = string.Empty; var isValid = true; try { subscriedTypes = subscriedTypes ?? string.Empty; subscribedAreas = subscribedAreas ?? string.Empty; subscribedKeywords = subscribedKeywords ?? string.Empty; emailAddress = emailAddress ?? string.Empty; // Clear old subscription details from cache. subscription.SubscriptionDetails.Clear(); subscription.WeChatUserId = CurrentWeChatUser.Id; #region Handle subscribed types var types = subscriedTypes.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries); if (types.Length > 0) { foreach (var value in types) { var detail = new DemandSubscriptionDetail() { SubscriptionId = subscription.SubscriptionId, SubscriptionType = DemandSubscriptionType.Category.ToString(), InsertedTimestamp = DateTime.Now, SubscriptionValue = value }; subscription.SubscriptionDetails.Add(detail); } } else { if (enable) { errorMessage = "请选择需要订阅的需求类别与类型!"; isValid = false; } } #endregion #region Handle subscribed location areas var areas = subscribedAreas.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries); if (isValid && areas.Length > 0) { foreach (var value in areas) { var detail = new DemandSubscriptionDetail() { SubscriptionId = subscription.SubscriptionId, SubscriptionType = DemandSubscriptionType.Area.ToString(), InsertedTimestamp = DateTime.Now, SubscriptionValue = value }; subscription.SubscriptionDetails.Add(detail); } } else { if (enable) { errorMessage = "请选择需求类型所属的区域位置!"; isValid = false; } } #endregion #region Handle subscribed spcified keywords var keywords = subscribedKeywords.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries); if (isValid && keywords.Length > 0) { foreach (var value in keywords) { var detail = new DemandSubscriptionDetail() { SubscriptionId = subscription.SubscriptionId, SubscriptionType = DemandSubscriptionType.Keywords.ToString(), InsertedTimestamp = DateTime.Now, SubscriptionValue = value }; subscription.SubscriptionDetails.Add(detail); } } #endregion if (isValid) { subscription.IsSubscribed = enable; subscription.IsEnableEmailSubscription = emailEnabled && !string.IsNullOrWhiteSpace(emailAddress); subscription.EmailAddress = emailAddress; isValid = subscriptionService.UpdateSubscription(subscription); } if (isValid) { errorMessage = "success"; } else { if (string.IsNullOrEmpty(errorMessage)) { errorMessage = "更新订阅设置失败!"; } } } catch (Exception ex) { LogService.LogWexin("更新订阅设置失败", ex.ToString()); errorMessage = "更新订阅设置失败!"; } ViewData["UpdateSubscriptionResult"] = errorMessage; return View("Index", subscription); }
/// <summary> /// Inserts subscription details. /// </summary> /// <param name="conn"></param> /// <param name="subscriptionDetail"></param> /// <returns></returns> public bool InsertSubscriptionDetail(SqlConnection conn, DemandSubscriptionDetail subscriptionDetail) { SqlParameter[] parameters = new SqlParameter[] { new SqlParameter(Parameter_SubscriptionId, subscriptionDetail.SubscriptionId), new SqlParameter(Parameter_SubscriptionType, subscriptionDetail.SubscriptionType), new SqlParameter(Parameter_SubscriptionValue, subscriptionDetail.SubscriptionValue), new SqlParameter(Parameter_InsertedTimestamp, subscriptionDetail.InsertedTimestamp) }; return DBHelper.RunNonQueryProcedure(conn, SP_InsertDemandSubscriptionDetail, parameters) > 0; }