private async Task <int> InsertEventDayRegisterAsync(EventDayRegister eventDayRegister) { try { int rowAffected = 0; using (SqlConnection con = new SqlConnection(_connectionString)) { if (con.State == ConnectionState.Closed) { await con.OpenAsync(); } DynamicParameters param = new DynamicParameters(); param.Add("@EventDayId", eventDayRegister.EventDayId); param.Add("@RegisterId", eventDayRegister.RegisterId); param.Add("@Status", eventDayRegister.Status); rowAffected = await con.ExecuteAsync("[dbo].[spspEvent_EventDayRegisterInsert]", param, commandType : CommandType.StoredProcedure); } return(rowAffected); } catch (Exception ex) { _logger.LogError(ex, "spspEvent_EventDayRegisterInsert Error."); return(-1); } }
public async Task <ActionResultResponse <string> > InsertAsync(string eventId, RegisterMeta registerMeta) { var infoEvent = await GetInfoEvent(eventId); if (infoEvent == null) { return(new ActionResultResponse <string>(-1, _websiteResourceService.GetString("Event does not exists. Please try again."))); } if (infoEvent.Status != ApproverStatus.Approved) { return(new ActionResultResponse <string>(-2, _websiteResourceService.GetString("Event not approved. Please try again."))); } var registerId = Guid.NewGuid().ToString(); var register = new Register { Id = registerId, ConcurrencyStamp = registerId, EventId = eventId, Note = registerMeta.Note, RegisterTime = DateTime.Now, IsStaff = registerMeta.IsStaff, CreatorId = string.Empty, CreatorFullName = string.Empty, CreatorAvatar = string.Empty, UserId = null, Role = registerMeta.Role, Avatar = registerMeta.Avatar, }; switch (registerMeta.Role) { case RegisterRole.Employee: if (!string.IsNullOrEmpty(registerMeta.UserId)) { register.FullName = registerMeta.FullName; register.PhoneNumber = registerMeta.PhoneNumber; register.Email = registerMeta.Email; register.Address = registerMeta.Address; register.UserId = registerMeta.UserId; } break; case RegisterRole.Customer: if (!string.IsNullOrEmpty(registerMeta.UserId)) { register.FullName = registerMeta.FullName; register.PhoneNumber = registerMeta.PhoneNumber; register.Email = registerMeta.Email; register.Address = registerMeta.Address; register.UserId = registerMeta.UserId; } break; case RegisterRole.WalkInGuest: case RegisterRole.Invitation: case RegisterRole.Professional: register.FullName = registerMeta.FullName; register.PhoneNumber = registerMeta.PhoneNumber; register.Email = registerMeta.Email; register.Address = registerMeta.Address; break; } var isExists = await CheckExistsRegister(registerId, eventId, register.FullName, register.PhoneNumber); if (isExists) { return(new ActionResultResponse <string>(-4, _websiteResourceService.GetString("Register name: \"{0}\" already exists.", register.FullName))); } var result = await InsertRegisterAsync(register); if (result <= 0) { return(new ActionResultResponse <string>(result, _websiteResourceService.GetString(ErrorMessage.SomethingWentWrong))); } #region insertEventDayRegister. if (registerMeta.EventDayRegisters != null && registerMeta.EventDayRegisters.Any()) { var resultInsertEventDayRegister = await InsertEventDayRegister(); if (resultInsertEventDayRegister.Code <= 0) { return(resultInsertEventDayRegister); } } #endregion var listEventDay = await GetListEvenDayByEventId(eventId); foreach (var eventDay in listEventDay) { await UpdateTotalEventDay(eventDay.Id); } return(new ActionResultResponse <string>(1, _websiteResourceService.GetString("Add new register successful."), string.Empty, eventId)); async Task <ActionResultResponse <string> > InsertEventDayRegister() { var eventDayRegisters = new List <EventDayRegister>(); foreach (var eventDayRegister in registerMeta.EventDayRegisters) { var infoEventDay = await GetInfoEventDay(eventDayRegister.EventDayId); var isAllowAccompanyPerson = infoEventDay.IsAllowAccompanyPerson ?? infoEvent.IsAllowAccompanyPerson; var limitedUsers = infoEventDay.LimitedUsers != null ? infoEventDay.LimitedUsers : infoEvent.LimitedUsers; var limitedAccompanyUsers = infoEventDay.LimitedAccompanyPersons ?? infoEvent.LimitedAccompanyPersons; var isAllowRegisterWhenOverload = infoEvent.IsAllowRegisterWhenOverload; // neu ko bat cho dang ky vuot qua so nguoi if (!isAllowRegisterWhenOverload) { if (limitedUsers > 0) { var userCount = infoEventDay.TotalRegisters + registerMeta.EventDayRegisters.Count; if (userCount > limitedUsers) { return(new ActionResultResponse <string>(-5, _websiteResourceService.GetString("Limited users when overload. Please contact with administrator."))); } } } var isEventDayRegisterExists = await CheckExistsEventDay(eventDayRegister.EventDayId, registerId); if (isEventDayRegisterExists) { continue; } var eventDayRegisterInsert = new EventDayRegister { RegisterId = registerId, EventDayId = eventDayRegister.EventDayId, Status = EventDayStatus.NotYet }; eventDayRegisters.Add(eventDayRegisterInsert); if (isAllowAccompanyPerson && eventDayRegister.AccompanyPersons != null && eventDayRegister.AccompanyPersons.Any()) { var accompanyPersons = new List <AccompanyPerson>(); foreach (var accompanyPerson in eventDayRegister.AccompanyPersons) { if (limitedAccompanyUsers > 0) { var accompanyUserCount = eventDayRegister.AccompanyPersons.Count; if (accompanyUserCount > limitedAccompanyUsers) { return(new ActionResultResponse <string>(-6, _websiteResourceService.GetString("Accompany persons when overload. Please contact with administrator."))); } } var accompanyPersonInsert = new AccompanyPerson { Id = Guid.NewGuid().ToString(), RegisterId = registerId, FullName = accompanyPerson.FullName, PhoneNumber = accompanyPerson.PhoneNumber, EventDayId = eventDayRegister.EventDayId, Status = EventDayStatus.NotYet }; accompanyPersons.Add(accompanyPersonInsert); } foreach (var accompanyPerson in accompanyPersons) { await InsertAccompanyPersonAsync(accompanyPerson); } } } var resulteventDayRegister = 0; foreach (var eventDayRegister in eventDayRegisters) { resulteventDayRegister = await InsertEventDayRegisterAsync(eventDayRegister); } if (resulteventDayRegister > 0) { return(new ActionResultResponse <string>(1, _websiteResourceService.GetString("Add new event day register successful."))); } await RollbackInsertEventDayRegister(); await RollbackInsertRegister(); return(new ActionResultResponse <string>(-7, _websiteResourceService.GetString("Can not insert event day register. Please contact with administrator."))); } async Task RollbackInsertRegister() { await DeleteRegister(registerId); } async Task RollbackInsertEventDayRegister() { await DeleteEventDayRegister(registerId); } }
public async Task <ActionResultResponse> Update(string eventId, string lastUpdateUserId, string lastUpdateFullName, string lastUpdateAvatar, string registerId, RegisterMeta registerMeta) { var infoEvent = await _eventRepository.GetInfo(eventId); if (infoEvent == null) { return(new ActionResultResponse(-1, _websiteEventResourceService.GetString("Event does not exists. Please try again."))); } var info = await _registerRepository.GetInfo(registerId); if (info == null) { return(new ActionResultResponse(-1, _websiteEventResourceService.GetString("Register does not exists."))); } if (info.EventId != eventId) { return(new ActionResultResponse(-2, _websiteEventResourceService.GetString(ErrorMessage.NotHavePermission))); } if (info.ConcurrencyStamp != registerMeta.ConcurrencyStamp) { return(new ActionResultResponse(-3, _websiteEventResourceService.GetString( "The register already updated by other people. you are not allowed to edit the register information."))); } var apiUrls = _configuration.GetApiUrl(); if (apiUrls == null) { return(new ActionResultResponse <string>(-4, _sharedResourceService.GetString( "Missing some configuration. Please contact with administrator."))); } switch (registerMeta.Role) { case RegisterRole.Employee: if (!string.IsNullOrEmpty(registerMeta.UserId)) { info.FullName = registerMeta.FullName; info.PhoneNumber = registerMeta.PhoneNumber; info.Email = registerMeta.Email; info.Address = registerMeta.Address; info.UserId = registerMeta.UserId; } break; case RegisterRole.Customer: if (!string.IsNullOrEmpty(registerMeta.UserId)) { var resultCustomer = await new HttpClientService() .GetAsync <CustomerViewModel>($"{apiUrls.CustomerApiUrl}/Customers/{infoEvent.TenantId}/{registerMeta.UserId}"); info.FullName = resultCustomer.FullName; info.PhoneNumber = resultCustomer.PhoneNumber; info.Email = resultCustomer.Email; info.Address = resultCustomer.Address; info.UserId = registerMeta.UserId; info.Avatar = registerMeta.Avatar; info.Role = registerMeta.Role; } else { var resultCustomer = await new HttpClientService() .GetAsync <string>($"{apiUrls.CustomerApiUrl}/Customers/GetCustomerId/{infoEvent.TenantId}/{registerMeta.FullName}/{registerMeta.PhoneNumber}/{registerMeta.Email}/{registerMeta.Address}"); info.FullName = registerMeta.FullName; info.PhoneNumber = registerMeta.PhoneNumber; info.Email = registerMeta.Email; info.Address = registerMeta.Address; info.UserId = resultCustomer; } break; case RegisterRole.WalkInGuest: case RegisterRole.Invitation: case RegisterRole.Professional: info.FullName = registerMeta.FullName; info.PhoneNumber = registerMeta.PhoneNumber; info.Email = registerMeta.Email; info.Address = registerMeta.Address; break; } info.Avatar = registerMeta.Avatar; info.Role = registerMeta.Role; info.Note = registerMeta.Note; info.IsStaff = registerMeta.IsStaff; info.ConcurrencyStamp = Guid.NewGuid().ToString(); info.LastUpdate = DateTime.Now; info.LastUpdateUserId = lastUpdateUserId; info.LastUpdateFullName = lastUpdateFullName; info.LastUpdateAvatar = lastUpdateAvatar; var isExists = await _registerRepository.CheckExists(registerId, eventId, info.FullName, info.PhoneNumber); if (isExists) { return(new ActionResultResponse <string>(-5, _websiteEventResourceService.GetString("Register name: \"{0}\" already exists.", info.FullName))); } await _registerRepository.Update(info); #region UpdateEventDayRegister. if (registerMeta.EventDayRegisters.Count > 0) { var resultUpdateEventDayRegister = await UpdateEventDayRegister(); if (resultUpdateEventDayRegister.Code <= 0) { return(resultUpdateEventDayRegister); } } #endregion var listEventDay = await _eventDayRepository.GetListEvenDayByEventId(eventId); foreach (var eventDay in listEventDay) { await UpdateTotal(eventDay.Id); } return(new ActionResultResponse(1, _websiteEventResourceService.GetString("Update register successful."))); async Task <ActionResultResponse <string> > UpdateEventDayRegister() { await _eventDayRegisterRepository.DeleteByRegisterId(registerId); await _accompanyPersonRepository.DeleteByRegisterId(registerId); var eventDayRegisters = new List <EventDayRegister>(); foreach (var eventDayRegister in registerMeta.EventDayRegisters) { var infoEventDay = await _eventDayRepository.GetInfo(eventDayRegister.EventDayId); var isAllowAccompanyPerson = infoEventDay.IsAllowAccompanyPerson ?? infoEvent.IsAllowAccompanyPerson; var limitedUsers = infoEventDay.LimitedUsers ?? infoEvent.LimitedUsers; var limitedAccompanyUsers = infoEventDay.LimitedAccompanyPersons ?? infoEvent.LimitedAccompanyPersons; var isAllowRegisterWhenOverload = infoEvent.IsAllowRegisterWhenOverload; // neu ko bat cho dang ky vuot qua so nguoi if (!isAllowRegisterWhenOverload) { if (limitedUsers > 0) { var userCount = infoEventDay.TotalRegisters + registerMeta.EventDayRegisters.Count; if (userCount > limitedUsers) { return(new ActionResultResponse <string>(-6, _websiteEventResourceService.GetString( "Limited users when overload. Please contact with administrator."))); } } } var isEventDayRegisterExists = await _eventDayRegisterRepository.CheckExists(eventDayRegister.EventDayId, registerId); if (isEventDayRegisterExists) { continue; } var eventDayRegisterInsert = new EventDayRegister { RegisterId = registerId, EventDayId = eventDayRegister.EventDayId, Status = EventDayStatus.NotYet }; eventDayRegisters.Add(eventDayRegisterInsert); if (isAllowAccompanyPerson) { var accompanyPersons = new List <AccompanyPerson>(); foreach (var accompanyPerson in eventDayRegister.AccompanyPersons) { if (limitedAccompanyUsers > 0) { var accompanyUserCount = eventDayRegister.AccompanyPersons.Count; if (accompanyUserCount > limitedAccompanyUsers) { return(new ActionResultResponse <string>(-7, _websiteEventResourceService.GetString( "Accompany persons when overload. Please contact with administrator."))); } } var accompanyPersonInsert = new AccompanyPerson { Id = Guid.NewGuid().ToString(), RegisterId = registerId, FullName = accompanyPerson.FullName, PhoneNumber = accompanyPerson.PhoneNumber, EventDayId = eventDayRegister.EventDayId, Status = EventDayStatus.NotYet }; accompanyPersons.Add(accompanyPersonInsert); } await _accompanyPersonRepository.Inserts(accompanyPersons); } } var resulteventDayRegister = await _eventDayRegisterRepository.Inserts(eventDayRegisters); if (resulteventDayRegister > 0) { return(new ActionResultResponse <string>(resulteventDayRegister, _websiteEventResourceService.GetString("Add new event day register successful."))); } return(new ActionResultResponse <string>(-8, _websiteEventResourceService.GetString( "Can not insert event day register. Please contact with administrator."))); } }
public async Task <int> Insert(EventDayRegister eventDayRegister) { _eventDayRegisterRepository.Create(eventDayRegister); return(await Context.SaveChangesAsync()); }