Esempio n. 1
0
 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());
 }
Esempio n. 2
0
 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());
 }
Esempio n. 3
0
        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);
        }
Esempio n. 4
0
        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);
        }