public void RecoverPassword(string username) { using (var db = new RAAPMasterEntities()) { var dataUser = db.Users.FirstOrDefault(u => u.Username == username); if (dataUser == null) { throw new RAAPConflictException("Invalid username!"); } dataUser.NewPasswordGuid = Guid.NewGuid(); db.SaveChanges(); var mailMessage = new MailMessage { Subject = "CRMAP - Recover your password", IsBodyHtml = false, Body = "Hi," + Environment.NewLine + Environment.NewLine + "To reset your CRMAP password, please use the following link:" + Environment.NewLine + "https://www.kamude.no/WebClient/changepassword/" + dataUser.NewPasswordGuid + Environment.NewLine + "" + Environment.NewLine + "Best regards," + Environment.NewLine + "CRMAP Team" + Environment.NewLine + "https://www.kamude.no/" }; mailMessage.To.Add(new MailAddress(dataUser.Email)); var mailClient = new SmtpClient(); mailClient.Send(mailMessage); } }
public Contracts.Soa.SoaFile GetFile(Guid guid) { using (var db = new RAAPEntities(GetConnectionString())) { var dbFile = db.SoaFiles.FirstOrDefault(f => f.Guid == guid); Contracts.Soa.SoaFile file = null; if (dbFile == null) { using (var master = new RAAPMasterEntities()) { dbFile = master.SoaFiles.FirstOrDefault(f => f.Guid == guid); if (dbFile != null) { file = dbFile.ToContract(); file.Template = true; } } } else { file = dbFile.ToContract(); } return(file); } }
public void ChangePassword(Contracts.User.ChangePassword changePassword) { using (var db = new RAAPMasterEntities()) { var dataUser = db.Users.FirstOrDefault(u => u.UserId == changePassword.UserId); if (dataUser == null) { throw new RAAPNotFoundException("Item not found."); } if (!Common.Security.Password.VerifyHash(dataUser.CreatedOn.Date.Ticks.ToString(), dataUser.PasswordHash, changePassword.Password)) { throw new RAAPConflictException("Invalid password!"); } if (changePassword.NewPassword != changePassword.NewPasswordRepeat) { throw new RAAPConflictException("Passwords it not matching!"); } if (string.IsNullOrEmpty(changePassword.Password) || changePassword.Password.Length < 8) { throw new RAAPConflictException("Password must at least be 8 characters."); } dataUser.PasswordHash = Common.Security.Password.ComputeHash(changePassword.NewPassword, dataUser.CreatedOn.Date.Ticks.ToString()); db.SaveChanges(); } }
public void Update(List <Contracts.Soa.SoaChapter> chapters) { var isoCodes = chapters.Select(c => c.IsoCode).Distinct(); if (isoCodes.Count() > 1) { throw new ArgumentException("Multiple IsoCodes", "IsoCode"); } var isoCode = isoCodes.First(); var types = chapters.Select(c => c.SoaType).Distinct(); if (types.Count() > 1) { throw new ArgumentException("Multiple SoA types", "SoaType"); } var type = types.First(); using (var db = new RAAPMasterEntities()) { //Update existing chapters //Delete chapters not in db var dbChapters = db.SoaChapters.Where(c => c.SoaType == type).ToDictionary(c => c.Id); UpdateSoaChapters(chapters, dbChapters, isoCode); db.SoaChapters.RemoveRange(dbChapters.Values); //Add new chapters to db AddNewSoaChapters(chapters, null, db, isoCode); db.SaveChanges(); } }
public List <SimpleSearchResult> Search(string query, int companyId) { using (var db = new RAAPMasterEntities()) { if (companyId != 1) { return(db.Users.Where(u => (u.FirstName.Contains(query) || u.LastName.Contains(query) || (u.FirstName + " " + u.LastName).Contains(query)) && u.CompanyId == companyId) .OrderBy(a => a.LastName).ThenBy(a => a.FirstName) .Take(20) .Select(a => new SimpleSearchResult { Id = a.UserId, Name = a.FirstName + " " + a.LastName }).ToList()); } else { return(db.Users.Where(u => u.FirstName.Contains(query) || u.LastName.Contains(query) || (u.FirstName + " " + u.LastName).Contains(query)) .OrderBy(a => a.LastName).ThenBy(a => a.FirstName) .Take(20) .Select(a => new SimpleSearchResult { Id = a.UserId, Name = a.FirstName + " " + a.LastName }).ToList()); } } }
public Contracts.Soa.SoaStatistics GetAssetSoaStatistics(int assetId, int soaType, string isoCode) { //Return list of items where deadline is in the past, deadline in the future or not implemented using (var master = new RAAPMasterEntities()) { var chapterNames = master.SoaChapters.Where(s => s.SoaType == soaType).Select(s => new { ChapterId = s.Id, Name = s.SoaChapterItems.FirstOrDefault(sci => sci.IsoCode == isoCode).Description }).ToDictionary(s => s.ChapterId); using (var db = new RAAPEntities(GetConnectionString())) { var notImplemented = db.Asset_SoaChapter.Where(a => a.AssetId == assetId && !a.Implemented && a.Soa.SoaType == soaType).Select(a => new { SoaId = a.SoaId, ChapterId = a.Soa.SoaChapterId, Deadline = a.Deadline }).ToList(); var result = new Contracts.Soa.SoaStatistics() { InProgress = notImplemented.Where(n => n.Deadline >= DateTime.Now).Select(n => new Contracts.Soa.SoaStatisticsItem() { Id = n.SoaId, Name = chapterNames[n.ChapterId].Name }).ToList(), DeadlinePassed = notImplemented.Where(n => n.Deadline < DateTime.Now).Select(n => new Contracts.Soa.SoaStatisticsItem() { Id = n.SoaId, Name = chapterNames[n.ChapterId].Name }).ToList(), NotImplemented = notImplemented.Where(n => !n.Deadline.HasValue).Select(n => new Contracts.Soa.SoaStatisticsItem() { Id = n.SoaId, Name = chapterNames[n.ChapterId].Name }).ToList() }; return(result); } } }
public static User ToDataModel(this CreateUser create, RAAPMasterEntities db) { var dataModel = new User { Email = create.Email, CompanyId = create.CompanyId, FirstName = create.FirstName, LastName = create.LastName, Username = create.Username, CreatedOn = DateTime.Now, UpdatedOn = DateTime.Now, PasswordHash = "TODO", Title = create.Title, Phone = create.Phone, Department = create.Department }; if (create.Roles != null) { foreach (var role in create.Roles) { var roleToAdd = db.Roles.FirstOrDefault(r => r.Role1 == role); dataModel.Roles.Add(roleToAdd); } } return(dataModel); }
internal void SetNewPassword(Guid newPasswordGuid, string newPassword, string newPasswordRepeat) { using (var db = new RAAPMasterEntities()) { var user = db.Users.FirstOrDefault(u => u.NewPasswordGuid == newPasswordGuid); if (user == null) { throw new RAAPConflictException("Invalid password recovery id!"); } if (string.IsNullOrEmpty(newPassword) || newPassword.Length < 8) { throw new RAAPConflictException("Password must at least be 8 characters."); } if (newPassword != newPasswordRepeat) { throw new RAAPConflictException("Passwords don't match! Please repeat your password."); } user.NewPasswordGuid = null; user.PasswordHash = Common.Security.Password.ComputeHash(newPassword, user.CreatedOn.Date.Ticks.ToString()); db.SaveChanges(); } }
public Contracts.Soa.SoaFile AddFile(int soaChapterId, string fileName, bool masterDb = false) { fileName = Path.GetFileName(fileName); var dbFile = new SoaFile() { SoaChapterId = soaChapterId, FileName = fileName, Guid = Guid.NewGuid() }; if (masterDb) { using (var db = new RAAPMasterEntities()) { db.SoaFiles.Add(dbFile); db.SaveChanges(); return(dbFile.ToContract()); } } else { using (var db = new RAAPEntities(GetConnectionString())) { db.SoaFiles.Add(dbFile); db.SaveChanges(); return(dbFile.ToContract()); } } }
public IdentityUser GetIdentityUserByLogin(string username, string password) { try { using (var db = new RAAPMasterEntities()) { var user = db.Users.Include("Roles").FirstOrDefault(u => u.Username == username); if (user == null) { return(null); } if ( !Common.Security.Password.VerifyHash(user.CreatedOn.Date.Ticks.ToString(), user.PasswordHash, password)) { return(null); } return(user.Convert()); } } catch (Exception exception) { throw; } }
public Contracts.User.User Update(Contracts.User.UpdateUser update) { using (var db = new RAAPMasterEntities()) { var user = db.Users.FirstOrDefault(u => u.UserId == update.UserId); if (user == null) { throw new RAAPNotFoundException("Item not found."); } if (db.Users.Any(a => a.Email == update.Email && a.UserId != update.UserId)) { throw new RAAPConflictException("Email is already in use!"); } if (db.Users.Any(a => a.Username == update.Username && a.UserId != update.UserId)) { throw new RAAPConflictException("Username is already in use!"); } user.ApplyUpdate(update); user.Roles.Clear(); db.SaveChanges(); foreach (var role in update.Roles) { var roleToAdd = db.Roles.FirstOrDefault(r => r.Role1 == role); roleToAdd.Users.Add(user); } db.SaveChanges(); return(user.ToContract(true)); } }
private static Dictionary <int, Contracts.Soa.SoaChapter> GetChapters(RAAPMasterEntities dbMaster, int type, string isoCode) { var chapters = dbMaster.SoaChapters.Where(c => c.SoaType == type).OrderBy(s => s.Id).AsEnumerable().Select(s => s.ToContract(isoCode)).ToDictionary(s => s.Id); chapters.Values.Where(c => c.ParentId.HasValue).ForEach(c => chapters[c.ParentId.Value].SubChapters.Add(c)); dbMaster.SoaFiles.Where(f => chapters.Keys.Contains(f.SoaChapterId)).ForEach(f => chapters[f.SoaChapterId].Files.Add(new Contracts.Soa.SoaFile(f.FileName, f.SoaChapterId, f.Guid, true))); return(chapters); }
public List <Contracts.Language.Language> GetAvailableLanguages() { using (var db = new RAAPMasterEntities()) { return(db.Languages.OrderBy(l => l.Name).Select(l => new Contracts.Language.Language { Name = l.Name, IsoCode = l.IsoCode }).ToList()); } }
public List <SimpleSearchResult> Search(string query) { using (var db = new RAAPMasterEntities()) { return(db.Companies.Where(a => a.Name.Contains(query)) .OrderBy(a => a.Name) .Take(20) .Select(a => new SimpleSearchResult { Id = a.CompanyId, Name = a.Name }).ToList()); } }
public Contracts.Help.HelpEntry Get(int helpId) { using (var db = new RAAPMasterEntities()) { var dbItem = db.Helps.FirstOrDefault(h => h.HelpId == helpId); if (dbItem == null) { return(null); } return(dbItem.ToContract()); } }
public Contracts.Company.Company GetSingle(int id) { using (var db = new RAAPMasterEntities()) { var item = db.Companies.FirstOrDefault(c => c.CompanyId == id); if (item == null) { throw new RAAPNotFoundException("Item not found."); } return(item.ToContract()); } }
public bool IsEmailAvailable(string email) { if (string.IsNullOrEmpty(email) || email.Length < 2) { return(false); } using (var db = new RAAPMasterEntities()) { var dbUser = db.Users.Any(u => u.Email == email); return(!dbUser); } }
public bool IsUsernameAvailable(string username) { if (string.IsNullOrEmpty(username) || username.Length < 2) { return(false); } using (var db = new RAAPMasterEntities()) { var dbUser = db.Users.Any(u => u.Username == username); return(!dbUser); } }
public void Delete(int id) { using (var db = new RAAPMasterEntities()) { var user = db.Users.FirstOrDefault(a => a.UserId == id); if (user == null) { throw new RAAPNotFoundException("Item not found."); } user.Roles.Clear(); db.Users.Remove(user); db.SaveChanges(); } }
public IEnumerable <Contracts.Soa.SoaChapter> Get(int type, string isoCode) { using (var db = new RAAPMasterEntities()) { try { return(GetChapters(db, type, isoCode).Values.Where(c => !c.ParentId.HasValue)); } catch (Exception exception) { throw; } } }
public void UpdateProfileImage(int userId, byte[] image, string contentType) { using (var db = new RAAPMasterEntities()) { var dbUser = db.Users.FirstOrDefault(u => u.UserId == userId); if (dbUser == null) { throw new RAAPNotFoundException("Item not found."); } dbUser.ProfileImage = image; dbUser.ProfileImageFiletype = contentType; db.SaveChanges(); } }
public Contracts.Help.HelpEntry GetBySlug(string slug, string language) { using (var db = new RAAPMasterEntities()) { var dbItem = db.Helps.FirstOrDefault(h => h.Slug == slug && h.Language == language); if (dbItem == null) { return new Contracts.Help.HelpEntry { Slug = slug, Language = language } } ; return(dbItem.ToContract()); } }
public Contracts.Help.HelpEntry Create(Contracts.Help.CreateHelpEntry create) { using (var db = new RAAPMasterEntities()) { if (db.Helps.Any(a => a.Slug == create.Slug && a.Language == create.Language)) { throw new RAAPConflictException("Slug & language combination is already in use!"); } var help = create.ToDataModel(); db.Helps.Add(help); db.SaveChanges(); return(db.Helps.FirstOrDefault(u => u.HelpId == help.HelpId).ToContract()); } }
public Contracts.User.User Create(CreateUser create) { try { using (var db = new RAAPMasterEntities()) { if (db.Users.Any(a => a.Email == create.Email)) { throw new RAAPConflictException("Email is already in use!"); } if (db.Users.Any(a => a.Username == create.Username)) { throw new RAAPConflictException("Username is already in use!"); } if (string.IsNullOrEmpty(create.Password) || create.Password.Length < 4) { throw new RAAPConflictException("Password must at least be 4 characters."); } if (create.Password != create.PasswordRepeat) { throw new RAAPConflictException("Please repeat your password correctly."); } var user = create.ToDataModel(db); user.PasswordHash = Common.Security.Password.ComputeHash(create.Password, user.CreatedOn.Date.Ticks.ToString()); db.Users.Add(user); db.SaveChanges(); // add default role to all users //var sysadminRole = db.Roles.FirstOrDefault(r => r.Role1 == "SystemAdministrator"); //sysadminRole.Users.Add(user); db.SaveChanges(); return(db.Users.Include("Company").FirstOrDefault(u => u.UserId == user.UserId).ToContract(true)); } } catch (Exception exception) { throw; } }
public ProfileImage GetProfileImage(int userId) { using (var db = new RAAPMasterEntities()) { var dbUser = db.Users.FirstOrDefault(u => u.UserId == userId); if (dbUser == null) { throw new RAAPNotFoundException("Item not found."); } return(new ProfileImage { ContentType = dbUser.ProfileImageFiletype, Image = dbUser.ProfileImage }); } }
public ProfileImage GetProfileImage(int companyId) { using (var db = new RAAPMasterEntities()) { var item = db.Companies.FirstOrDefault(u => u.CompanyId == companyId); if (item == null) { throw new RAAPNotFoundException("Item not found."); } return(new ProfileImage { ContentType = item.ProfileImageFiletype, Image = item.ProfileImage }); } }
internal List <Contracts.Asset.AssetSoaList> GetAssetSoas(int assetId, string isoCode) { using (var master = new RAAPMasterEntities()) { var chapterNames = master.SoaChapters.Where(s => s.SoaType != 2).Select(s => new { ChapterId = s.Id, Name = s.SoaChapterItems.FirstOrDefault(sci => sci.IsoCode == isoCode).Description }).ToDictionary(s => s.ChapterId); using (var db = new RAAPEntities(GetConnectionString())) { var relevantSoas = db.Soas.Where(s => s.Relevance && s.SoaType != 2).Select(s => new { SoaId = s.SoaId, SoaType = s.SoaType, ChapterId = s.SoaChapterId }).ToDictionary(s => s.SoaId); var registeredSoas = db.Asset_SoaChapter.Where(s => s.AssetId == assetId).ToDictionary(s => s.SoaId); var soas = relevantSoas.Select(r => ConvertToDataContract(registeredSoas.ContainsKey(r.Key) ? registeredSoas[r.Key] : null, r.Key, r.Value.SoaType, chapterNames[r.Value.ChapterId].Name)).ToLookup(s => s.SoaType); var result = new List <Contracts.Asset.AssetSoaList>(); soas.ForEach(i => result.Add(new Contracts.Asset.AssetSoaList() { AssetId = assetId, SoaType = i.Key, AssetSoas = i.ToList() })); return(result); } } }
public void Delete(int id) { using (var db = new RAAPMasterEntities()) { var company = db.Companies.FirstOrDefault(a => a.CompanyId == id); if (company == null) { throw new RAAPNotFoundException("Item not found."); } if (company.Users.Any()) { throw new RAAPConflictException("You must remove connected users before you delete this company"); } db.Companies.Remove(company); db.SaveChanges(); } }
public void SetPassword(SetPassword setPassword) { using (var db = new RAAPMasterEntities()) { var dataUser = db.Users.FirstOrDefault(u => u.UserId == setPassword.UserId); if (dataUser == null) { throw new RAAPNotFoundException("Item not found."); } if (string.IsNullOrEmpty(setPassword.Password) || setPassword.Password.Length < 4) { throw new RAAPConflictException("Password must at least be 4 characters."); } dataUser.PasswordHash = Common.Security.Password.ComputeHash(setPassword.Password, dataUser.CreatedOn.Date.Ticks.ToString()); db.SaveChanges(); } }
internal Contracts.Soa.SoaChapter AddTemplate(Contracts.Soa.SoaChapter soa) { var isoCode = soa.IsoCode; if (soa.SoaType == 3) { using (var db = new RAAPMasterEntities()) { var chapter = soa.ToDataModel(null, db, isoCode); db.SoaChapters.Add(chapter); db.SaveChanges(); return(chapter.ToContract(isoCode)); } } else { throw new ArgumentException("Invalid SoaType", "SoaType"); } }