private static List <EventMedia> AddNewEventMedias(AddOrUpdateEventModel model, int eventCd) { return(model.ListEventMedia .Where(p => !p.IsDelete && p.MediaCd > 0).GroupBy(p => p.MediaCd) .Select(x => new EventMedia { EventCd = eventCd, MediaCd = x.Key, }) .ToList()); }
private static List <EventSalesAssigment> AddNewEventSalesmanEssigment(AddOrUpdateEventModel model, int eventCd) { return(model.ListSaleManEvent .Where(p => !p.IsDelete && p.SalemanCd > 0).GroupBy(p => p.SalemanCd) .Select(g => g.FirstOrDefault()) .Select(x => new EventSalesAssigment { EventCd = eventCd, SalesmanCd = x.SalemanCd, NewTargetAmount = x.NewTargetAmount, NewTargetRevenue = x.NewTargetRevenue, EffortTargetAmount = x.EffortTargetAmount, EffortTargetRevenue = x.EffortTargetRevenue }) .ToList()); }
public async Task <ErrorModel> UpdateEvent(AddOrUpdateEventModel model, string userLoginId) { var errorModel = new ErrorModel(); var strategy = _context.Database.CreateExecutionStrategy(); await strategy.ExecuteAsync(async() => { using (var dbTran = _context.Database.BeginTransaction()) { try { if (!CheckDuplicate(model.EventCode, model.Cd)) { errorModel.Message = "この催事コードが既に存在しています。もう一度お試しください。"; errorModel.Status = false; return; } // User sale var user = _context.Users.Where(u => u.Event.Cd == model.Cd).FirstOrDefault(); user.UserName = model.EventCode; user.NormalizedUserName = model.EventCode; user.LastName = model.Name; if (!model.Password.Equals(Constants.FakePass)) { var token = await _userManager.GeneratePasswordResetTokenAsync(user); await _userManager.ResetPasswordAsync(user, token, model.Password); } // User survey var userSurvey = _context.Users.Where(u => u.UserName == $"{model.EventCodeOld}{Constants.SurveyUserName}").FirstOrDefault(); if (userSurvey != null) { userSurvey.UserName = $"{model.EventCode}{Constants.SurveyUserName}"; userSurvey.NormalizedUserName = $"{model.EventCode}{Constants.SurveyUserName}"; userSurvey.LastName = model.Name; if (!model.PasswordSurvey.Equals(Constants.FakePass)) { var token = await _userManager.GeneratePasswordResetTokenAsync(userSurvey); await _userManager.ResetPasswordAsync(userSurvey, token, model.PasswordSurvey); } } else { //アンケート userSurvey = new ApplicationUser { UserName = $"{model.EventCode}{Constants.SurveyUserName}", FirstName = "アンケート", LastName = model.Name, EmailConfirmed = false, PhoneNumberConfirmed = false, TwoFactorEnabled = false }; var createAccountSurvey = await _userManager.CreateAsync(userSurvey, model.PasswordSurvey); await _userManager.AddToRoleAsync(userSurvey, Role.Survey.ToString()); } var eventEntity = _context.MstEvents.Include(x => x.EventSalesAssigments) .Include(x => x.EventMedias) .FirstOrDefault(e => e.Cd == model.Cd); if (eventEntity != null) { if (eventEntity.Code != model.EventCode) { var contract = _context.Contracts.Where(c => c.EventCd == model.Cd && !c.IsDeleted && c.IsCompleted).ToList(); foreach (var contractItem in contract) { var lastCharOfId = contractItem.Id.Substring(contractItem.Id.Length - 3); contractItem.Id = model.EventCode + lastCharOfId; contractItem.UpdateDate = DateTime.Now; contractItem.UpdateUserId = userLoginId; _context.Contracts.Update(contractItem); } } eventEntity.Code = model.EventCode; eventEntity.Name = model.Name; eventEntity.NameAbbr = model.EventNameAbbr; eventEntity.NameKana = model.EventNameKana; eventEntity.StartDate = model.StartDate; eventEntity.EndDate = model.EndDate; eventEntity.StartTime = model.StartTime; eventEntity.EndTime = model.EndTime; eventEntity.Place = model.Place; eventEntity.Address = model.Address; eventEntity.SalesmanCd = model.SalesmanCd; eventEntity.Remark = model.Remark; eventEntity.Decorate = model.Decorate; eventEntity.UpdateDate = DateTime.Now; eventEntity.UpdateUserId = userLoginId; Update(eventEntity); // update EventSaleman if (eventEntity.EventSalesAssigments != null) { // remove saleman of event _context.EventSalesAssigments.RemoveRange(eventEntity.EventSalesAssigments); // add saleman for event List <EventSalesAssigment> listEventSalemans = AddNewEventSalesmanEssigment(model, eventEntity.Cd); _context.EventSalesAssigments.AddRange(listEventSalemans); } //update media if (eventEntity.EventMedias != null) { //remove media of event _context.EventMedias.RemoveRange(eventEntity.EventMedias); // add media for event List <EventMedia> listEventMedias = AddNewEventMedias(model, model.Cd); _context.EventMedias.AddRange(listEventMedias); } _context.SaveChanges(); dbTran.Commit(); errorModel.Message = "催事の編集に成功しました。"; errorModel.Status = true; return; } errorModel.Message = "催事の編集に失敗しました。もう一度お試しください。"; errorModel.Status = false; } catch (Exception) { dbTran.Rollback(); errorModel.Message = "催事の編集に失敗しました。もう一度お試しください。"; errorModel.Status = false; } } }); return(errorModel); }
public async Task <ErrorModel> Create(AddOrUpdateEventModel model, string userId) { var errorModel = new ErrorModel(); var strategy = _context.Database.CreateExecutionStrategy(); await strategy.ExecuteAsync(async() => { using (var dbTran = _context.Database.BeginTransaction()) { try { if (!CheckDuplicate(model.EventCode)) { errorModel.Message = "この催事コードが既に存在しています。もう一度お試しください。"; errorModel.Status = false; return; } var userEvent = new ApplicationUser { UserName = model.EventCode, FirstName = "催事", LastName = model.Name, EmailConfirmed = false, PhoneNumberConfirmed = false, TwoFactorEnabled = false }; var createAccountEvent = await _userManager.CreateAsync(userEvent, model.Password); //アンケート var userSurvey = new ApplicationUser { UserName = $"{model.EventCode}{Constants.SurveyUserName}", FirstName = "アンケート", LastName = model.Name, EmailConfirmed = false, PhoneNumberConfirmed = false, TwoFactorEnabled = false }; var createAccountSurvey = await _userManager.CreateAsync(userSurvey, model.PasswordSurvey); if (createAccountEvent.Succeeded && createAccountSurvey.Succeeded) { await _userManager.AddToRoleAsync(userEvent, Role.User.ToString()); await _userManager.AddToRoleAsync(userSurvey, Role.Survey.ToString()); var eventEntity = new MstEvent { Code = model.EventCode, ApplicationUserId = userEvent.Id, Name = model.Name, NameAbbr = model.EventNameAbbr, NameKana = model.EventNameKana, Place = model.Place, Address = model.Address, StartDate = model.StartDate.Value.Date, EndDate = model.EndDate.Value.Date, StartTime = model.StartTime, EndTime = model.EndTime, Remark = model.Remark, Decorate = model.Decorate, SalesmanCd = model.SalesmanCd, InsertUserId = userId, InsertDate = DateTime.Now, UpdateDate = DateTime.Now, UpdateUserId = userId }; Add(eventEntity); _context.SaveChanges(); // add Saleman for event List <EventSalesAssigment> listEventsalemans = AddNewEventSalesmanEssigment(model, eventEntity.Cd); _context.EventSalesAssigments.AddRange(listEventsalemans); // add Media for event List <EventMedia> listEventMedia = AddNewEventMedias(model, eventEntity.Cd); _context.EventMedias.AddRange(listEventMedia); _context.SaveChanges(); dbTran.Commit(); errorModel.Status = true; errorModel.Message = "催事の新規作成に成功しました。"; return; } errorModel.Message = "催事の新規作成に失敗しました。もう一度お試しください。"; errorModel.Status = false; } catch (Exception) { dbTran.Rollback(); errorModel.Status = false; errorModel.Message = "催事の新規作成に失敗しました。もう一度お試しください。"; } } }); return(errorModel); }