public void ChangeAchievement(Account account, Achievement achievement) { if (account == null) throw new ArgumentNullException("account"); if (achievement == null) throw new ArgumentNullException("achievement"); if (achievement.Year.Year < DateTime.Now.Year) { // throw custermized exception throw new AchievementException(Resource.ResourceMessage.ex_AchievementYearLessThanCurrentYear); return; } var achievements = account.Achievements.ToList<Achievement>(); if (achievements != null && achievements.Count > 0) { var accountAchievement = account.Achievements.Single<Achievement>(a => { if (a.Year == achievement.Year && a.AccountId == achievement.AccountId) return true; return false; }); if (accountAchievement != null) { achievement.Id = accountAchievement.Id; accountAchievement = Mapper.Map<Achievement>(achievement); } } else { var accountAchievement = Mapper.Map<Achievement>(achievement); accountAchievement.Id = Guid.NewGuid(); account.Achievements.Add(accountAchievement); } var history = new AchievementHistory(achievement); account.AchievementHistories.Add(history); if (account.AchievementHistories.Count<AchievementHistory>(ah => ah.Year == achievement.Year) > 3) account.LockAccount(); }
public void ChangeAchievement(AccountDTO account_dto) { if (account_dto == null) throw new ArgumentNullException("account_dto"); var account = Mapper.Map<Account>(account_dto); var achievement = new Achievement(account); if (achievement.Year.Year < DateTime.Now.Year) { // TODO: throw custermized exception return; } IUnityContainer container = new UnityContainer(); IRepository<Account> accountRepository = container.Resolve<IRepository<Account>>(); if (accountRepository.Get(achievement.AccountId) != null) { using (TransactionScope scope = new TransactionScope()) { IRepository<Achievement> achievementRepository = container.Resolve<IRepository<Achievement>>(); achievementRepository.TrackEntity(achievement); achievementRepository.Commit(); var history = new AchievementHistory(achievement); IRepository<AchievementHistory> archievementHistoryRepository = container.Resolve<IRepository<AchievementHistory>>(); archievementHistoryRepository.Add(history); archievementHistoryRepository.Commit(); var changeTimes = archievementHistoryRepository.GetFiltered(a => a.AccountId == achievement.Id).Count<AchievementHistory>(); if (changeTimes > 2) { var accountLock = Mapper.Map<Account>(account_dto); accountRepository.TrackEntity(accountLock); accountLock.LockAccount(); accountRepository.Commit(); } scope.Complete(); } } }
/// <summary> /// Deprecated Method for adding a new object to the AchievementHistories EntitySet. Consider using the .Add method of the associated ObjectSet<T> property instead. /// </summary> public void AddToAchievementHistories(AchievementHistory achievementHistory) { base.AddObject("AchievementHistories", achievementHistory); }