public void CreateLeaveApplication(LeaveApplication leaveApplication) { if (IsScheduleConflict(leaveApplication)) { throw new InvalidOperationException("当前请假时间和已存在的请假申请冲突"); } AnnualLeaveStatistic annualLeaveStatistic = GetAnnualLeaveStatistic(leaveApplication.Initiator); if (leaveApplication.TotalDays > annualLeaveStatistic.RemainingDays) { throw new InvalidOperationException("剩余假期不足,请重新选择请假时间"); } annualLeaveStatistic.RemainingDays = annualLeaveStatistic.RemainingDays - leaveApplication.TotalDays; leaveApplication.TaskState = TaskState.Applying; using (DbContextTransaction transaction = _context.Database.BeginTransaction()) { try { _context.LeaveApplications.Add(leaveApplication); _context.AnnualLeaveStatistics.Attach(annualLeaveStatistic); _context.Entry(annualLeaveStatistic).State = EntityState.Modified; _context.SaveChanges(); transaction.Commit(); } catch (Exception e) { transaction.Rollback(); _logger.Error(e.Message, e); throw; } } }
private void CreateEditions() { var defaultEdition = _context.Editions.IgnoreQueryFilters().FirstOrDefault(e => e.Name == EditionManager.DefaultEditionName); if (defaultEdition == null) { defaultEdition = new Edition { Name = EditionManager.DefaultEditionName, DisplayName = EditionManager.DefaultEditionName }; _context.Editions.Add(defaultEdition); _context.SaveChanges(); /* Add desired features to the standard edition, if wanted... */ } }
public void Create() { new DefaultEditionCreator(_context).Create(); new DefaultLanguagesCreator(_context).Create(); new HostRoleAndUserCreator(_context).Create(); new DefaultSettingsCreator(_context).Create(); _context.SaveChanges(); }
public ReturnResult CreatingMeeting(Meeting meeting) { ReturnResult returnResult = new ReturnResult(); if (meeting.BeginningTime >= meeting.EndTime) { returnResult.Result = false; returnResult.Message = "会议开始时间不能大于等于结束时间"; return(returnResult); } if (!IsScheduleConflict(meeting)) { lock (_locker) { using (DbContextTransaction transaction = _context.Database.BeginTransaction()) { try { _context.Attendees.Add(meeting.Attendee); _context.Meetings.Add(meeting); _context.SaveChanges(); transaction.Commit(); } catch (Exception e) { transaction.Rollback(); returnResult.Result = false; returnResult.Message = e.Message; _logger.Error("Faild to save a new Meeting", e); return(returnResult); } } } } else { returnResult.Result = false; returnResult.Message = "会议预定时间冲突"; return(returnResult); } returnResult.Result = true; return(returnResult); }
private void AddSettingIfNotExists(string name, string value, int?tenantId = null) { if (_context.Settings.IgnoreQueryFilters().Any(s => s.Name == name && s.TenantId == tenantId && s.UserId == null)) { return; } _context.Settings.Add(new Setting(tenantId, null, name, value)); _context.SaveChanges(); }
private void AddLanguageIfNotExists(ApplicationLanguage language) { if (_context.Languages.IgnoreQueryFilters().Any(l => l.TenantId == language.TenantId && l.Name == language.Name)) { return; } _context.Languages.Add(language); _context.SaveChanges(); }
private void LogLogin(User user) { string ipAddress = Request.ServerVariables["HTTP_X_FORWARDED_FOR"]; if (string.IsNullOrEmpty(ipAddress)) { ipAddress = Request.ServerVariables["REMOTE_ADDR"]; } UserLoginLog userLoginLog = new UserLoginLog(); userLoginLog.Id = Guid.NewGuid().ToString(); userLoginLog.UserId = user.Id; userLoginLog.UserName = user.UserName; userLoginLog.RemoteIP = ipAddress; userLoginLog.LoginDateTime = DateTime.Now; _context.UserLoginLogs.Add(userLoginLog); _context.SaveChanges(); }
private void CreateDefaultTenant() { // Default tenant var defaultTenant = _context.Tenants.IgnoreQueryFilters().FirstOrDefault(t => t.TenancyName == AbpTenantBase.DefaultTenantName); if (defaultTenant == null) { defaultTenant = new Tenant(AbpTenantBase.DefaultTenantName, AbpTenantBase.DefaultTenantName); var defaultEdition = _context.Editions.IgnoreQueryFilters().FirstOrDefault(e => e.Name == EditionManager.DefaultEditionName); if (defaultEdition != null) { defaultTenant.EditionId = defaultEdition.Id; } _context.Tenants.Add(defaultTenant); _context.SaveChanges(); } }
public AnnualLeaveStatistic CreateAndSave(User user) { AnnualLeaveStatistic annualLeaveStatistic = new AnnualLeaveStatistic(); CompanyVacationPolicy vacationPolicy = context.CompanmyVacationPolicies.First(); int totalDays = 0; totalDays = AnnualLeaveStatisticHelper.CaculateTotalDays(user.HireDate, vacationPolicy.AnnualLeaveInitialDays, vacationPolicy.AnnualLeaveMaxDays); annualLeaveStatistic.Id = Guid.NewGuid(); annualLeaveStatistic.RemainingDays = totalDays; annualLeaveStatistic.TotalDays = totalDays; annualLeaveStatistic.TransferringDays = 0; annualLeaveStatistic.UsedDays = 0; annualLeaveStatistic.DefaultDays = 0; annualLeaveStatistic.User = user; context.AnnualLeaveStatistics.Add(annualLeaveStatistic); context.SaveChanges(); return(annualLeaveStatistic); }
private void CreateRolesAndUsers() { // Admin role var adminRole = _context.Roles.IgnoreQueryFilters().FirstOrDefault(r => r.TenantId == _tenantId && r.Name == StaticRoleNames.Tenants.Admin); if (adminRole == null) { adminRole = _context.Roles.Add(new Role(_tenantId, StaticRoleNames.Tenants.Admin, StaticRoleNames.Tenants.Admin) { IsStatic = true }).Entity; _context.SaveChanges(); } // Grant all permissions to admin role var grantedPermissions = _context.Permissions.IgnoreQueryFilters() .OfType <RolePermissionSetting>() .Where(p => p.TenantId == _tenantId && p.RoleId == adminRole.Id) .Select(p => p.Name) .ToList(); var permissions = PermissionFinder .GetAllPermissions(new WebProjectAuthorizationProvider()) .Where(p => p.MultiTenancySides.HasFlag(MultiTenancySides.Tenant) && !grantedPermissions.Contains(p.Name)) .ToList(); if (permissions.Any()) { _context.Permissions.AddRange( permissions.Select(permission => new RolePermissionSetting { TenantId = _tenantId, Name = permission.Name, IsGranted = true, RoleId = adminRole.Id }) ); _context.SaveChanges(); } // Admin user var adminUser = _context.Users.IgnoreQueryFilters().FirstOrDefault(u => u.TenantId == _tenantId && u.UserName == AbpUserBase.AdminUserName); if (adminUser == null) { adminUser = User.CreateTenantAdminUser(_tenantId, "*****@*****.**"); adminUser.Password = new PasswordHasher <User>(new OptionsWrapper <PasswordHasherOptions>(new PasswordHasherOptions())).HashPassword(adminUser, "123qwe"); adminUser.IsEmailConfirmed = true; adminUser.IsActive = true; _context.Users.Add(adminUser); _context.SaveChanges(); // Assign Admin role to admin user _context.UserRoles.Add(new UserRole(_tenantId, adminUser.Id, adminRole.Id)); _context.SaveChanges(); } }
private void CreateHostRoleAndUsers() { // Admin role for host var adminRoleForHost = _context.Roles.IgnoreQueryFilters().FirstOrDefault(r => r.TenantId == null && r.Name == StaticRoleNames.Host.Admin); if (adminRoleForHost == null) { adminRoleForHost = _context.Roles.Add(new Role(null, StaticRoleNames.Host.Admin, StaticRoleNames.Host.Admin) { IsStatic = true, IsDefault = true }).Entity; _context.SaveChanges(); } // Grant all permissions to admin role for host var grantedPermissions = _context.Permissions.IgnoreQueryFilters() .OfType <RolePermissionSetting>() .Where(p => p.TenantId == null && p.RoleId == adminRoleForHost.Id) .Select(p => p.Name) .ToList(); var permissions = PermissionFinder .GetAllPermissions(new WebProjectAuthorizationProvider()) .Where(p => p.MultiTenancySides.HasFlag(MultiTenancySides.Host) && !grantedPermissions.Contains(p.Name)) .ToList(); if (permissions.Any()) { _context.Permissions.AddRange( permissions.Select(permission => new RolePermissionSetting { TenantId = null, Name = permission.Name, IsGranted = true, RoleId = adminRoleForHost.Id }) ); _context.SaveChanges(); } // Admin user for host var adminUserForHost = _context.Users.IgnoreQueryFilters().FirstOrDefault(u => u.TenantId == null && u.UserName == AbpUserBase.AdminUserName); if (adminUserForHost == null) { var user = new User { TenantId = null, UserName = AbpUserBase.AdminUserName, Name = "admin", Surname = "admin", EmailAddress = "*****@*****.**", IsEmailConfirmed = true, IsActive = true }; user.Password = new PasswordHasher <User>(new OptionsWrapper <PasswordHasherOptions>(new PasswordHasherOptions())).HashPassword(user, "123qwe"); user.SetNormalizedNames(); adminUserForHost = _context.Users.Add(user).Entity; _context.SaveChanges(); // Assign Admin role to admin user _context.UserRoles.Add(new UserRole(null, adminUserForHost.Id, adminRoleForHost.Id)); _context.SaveChanges(); _context.SaveChanges(); } }