// api/lookups/getsettingbyname?name=System_CRM_ForgetPasswordLink public IHttpActionResult GetSettingByName(string name) { AuthenticationHelper.ApiAuthorizationCheck(Request); try { var lang = Request?.Headers?.AcceptLanguage?.FirstOrDefault()?.Value ?? "ar"; var languageId = lang == "ar" ? (int)GeneralEnums.LanguageEnum.Arabic : (int)GeneralEnums.LanguageEnum.English; var result = new SettingViewModel(); switch (name) { case Constants.SystemSettings.ForgetPasswordLink: result = SettingHelper.GetOrCreate(name, "http://crm.smsm-it.com/Account/ForgotPassword", languageId); break; case Constants.SystemSettings.RegistrationLink: result = SettingHelper.GetOrCreate(name, "http://crm.smsm-it.com/Account/Register", languageId); break; } return(Ok(result)); } catch (Exception ex) { LogHelper.LogException(Constants.Users.Mobile, ex, Constants.Errors.Apis.ErrorGettingCustomSetting); return(Content(HttpStatusCode.InternalServerError, new BaseApiResponse() { StatusCode = HttpStatusCode.InternalServerError, Message = Constants.Errors.Apis.ErrorGettingCustomSetting })); } }
public IHttpActionResult GetUserProfile(string username) { AuthenticationHelper.ApiAuthorizationCheck(Request); try { var lang = Request?.Headers?.AcceptLanguage?.FirstOrDefault()?.Value ?? "ar"; var langId = lang == "ar" ? (int)GeneralEnums.LanguageEnum.Arabic : (int)GeneralEnums.LanguageEnum.English; var profile = _db.UserProfileTranslations.FirstOrDefault(r => r.UserProfile.Username == username && r.LanguageId == langId); if (profile == null) { profile = _db.UserProfileTranslations.FirstOrDefault(r => r.UserProfile.Username == username && r.IsDefault); } var result = new ProfileViewModel { Id = profile.UserProfileId, LanguageId = profile.LanguageId, IdNumber = profile.UserProfile.IdNumber ?? string.Empty, PhoneNumber = profile.UserProfile.PhoneNumber ?? string.Empty, GenderLookupId = profile.UserProfile.GenderLookupId, ProvinceId = profile.UserProfile.ProvinceId, CityId = profile.UserProfile.CityId, RegionId = profile.UserProfile.RegionId, MartialStatusLookupId = profile.UserProfile.MartialStatusLookupId, PrefferdLanguage = profile.UserProfile.PreferedLanguageId, Department = profile.UserProfile.DepartmentId, ManagerId = profile.UserProfile.ManagerId, FullName = profile.FullName, Mobile = profile.UserProfile.Mobile ?? string.Empty, Address = profile.Address ?? string.Empty, Email = profile.UserProfile.Email, Username = profile.UserProfile.Username, CustomerId = profile.UserProfile.Username, Fax = profile.UserProfile.Fax ?? string.Empty, BirthDay = profile.UserProfile.Birthday, ProfilePath = profile.UserProfile.ProfilePhoto }; return(Ok(result)); } catch (Exception ex) { LogHelper.LogException(Core.Constants.Users.Mobile, ex, Core.Constants.Errors.Apis.ErrorGetProfileInfo); return(Content(HttpStatusCode.InternalServerError, new BaseApiResponse() { StatusCode = HttpStatusCode.InternalServerError, Message = Core.Constants.Errors.Apis.ErrorGetProfileInfo })); } }
// api/lookups/[email protected] public IHttpActionResult GetDepartments(string username) { AuthenticationHelper.ApiAuthorizationCheck(Request); try { var lang = Request?.Headers?.AcceptLanguage?.FirstOrDefault()?.Value ?? "ar"; var languageId = lang == "ar" ? (int)GeneralEnums.LanguageEnum.Arabic : (int)GeneralEnums.LanguageEnum.English; var departments = _db.Departments.Where(r => r.DepartmentTranslations.Any(x => x.LanguageId == languageId) && r.Status == (int)GeneralEnums.StatusEnum.Active) .SelectMany(r => r.DepartmentTranslations.Where(x => x.LanguageId == languageId)).Select(x => new DepartmentViewModel() { Id = x.DepartmentId, Name = x.Name, Description = x.Description, LanguageId = x.LanguageId, CreatedBy = x.Department.CreatedBy, CreatedOn = x.Department.CreatedOn }).ToList(); if (!departments.Any()) { departments = LanguageFallbackHelper.GetDefaultDepartments(); } return(Ok(departments)); } catch (Exception ex) { LogHelper.LogException(Constants.Users.Mobile, ex, Constants.Errors.Apis.ErrorGetDepatments); return(Content(HttpStatusCode.InternalServerError, new BaseApiResponse() { StatusCode = HttpStatusCode.InternalServerError, Message = Constants.Errors.Apis.ErrorGetDepatments })); } }
public IHttpActionResult IsAccessAllowed(string page, string username) { AuthenticationHelper.ApiAuthorizationCheck(Request); try { var result = new AccountPermissionResponse { HasAccess = false, Message = Core.Constants.ApiMessages.UnSupported, StatusCode = HttpStatusCode.NotFound }; var userId = _db.AspNetUsers.FirstOrDefault(r => r.UserName == username)?.Id; var userRoles = _db.AspNetUserRoles.Where(r => r.UserId == userId) .ToList().Select(r => r.RoleId).ToList(); var accountPermission = _db.RolePermissions.Where(r => userRoles.Contains(r.RoleId) && r.Permission.PageName == page); if (accountPermission.Any()) { result = new AccountPermissionResponse { HasAccess = true, AllowedPermissonsList = accountPermission.Select(r => r.Permission.PermissionKey).ToList(), StatusCode = HttpStatusCode.OK }; } return(Ok(result)); } catch (Exception ex) { LogHelper.LogException(Core.Constants.Users.Mobile, ex, "Error while getting account permission"); return(Content(HttpStatusCode.InternalServerError, new BaseApiResponse() { StatusCode = HttpStatusCode.InternalServerError, Message = Core.Constants.ApiMessages.GeneralError })); } }
// api/lookups/getlookupsbymasterid? username = salam - [email protected]&lookupId=2 public IHttpActionResult GetLookupsByMasterId(string username, int lookupId) { AuthenticationHelper.ApiAuthorizationCheck(Request); try { var httpRequest = HttpContext.Current.Request; var lang = Request?.Headers?.AcceptLanguage?.FirstOrDefault()?.Value ?? "ar"; var languageId = lang == "ar" ? (int)GeneralEnums.LanguageEnum.Arabic : (int)GeneralEnums.LanguageEnum.English; var lookups = _db.DetailsLookups.Where(r => r.DetailsLookupTranslations.Any(x => x.LanguageId == languageId) && r.MasterId == lookupId && r.Status == (int)GeneralEnums.StatusEnum.Active) .SelectMany(r => r.DetailsLookupTranslations.Where(x => x.LanguageId == languageId)).Select( x => new DetailsLookupViewModel() { Id = x.DetailsLookupId, Name = x.Value }).ToList(); if (!lookups.Any()) { lookups = LanguageFallbackHelper.GetDefaultLookupDetailsByMasterId(lookupId); } return(Ok(lookups)); } catch (Exception ex) { LogHelper.LogException(Constants.Users.Mobile, ex, Constants.Errors.Apis.ErrorGetLookups); return(Content(HttpStatusCode.InternalServerError, new BaseApiResponse() { StatusCode = HttpStatusCode.InternalServerError, Message = Constants.Errors.Apis.ErrorGetLookups })); } }
public IHttpActionResult Login(string username, string password) { AuthenticationHelper.ApiAuthorizationCheck(Request); try { var lang = Request?.Headers?.AcceptLanguage?.FirstOrDefault()?.Value ?? "ar"; var langId = lang == "ar" ? (int)GeneralEnums.LanguageEnum.Arabic : (int)GeneralEnums.LanguageEnum.English; var user = UserManager.FindByName(username); var isAllowed = SignInManager.UserManager.CheckPassword(user, password); var roles = _db.AspNetUserRoles.Where(r => r.UserId == user.Id).ToList().Select(r => new RoleViewModel() { Name = r.AspNetRole.Name, RoleId = r.RoleId }).ToList(); var allowedRoles = SettingHelper.GetOrCreate(Core.Constants.SystemSettings.AllowedRolesForMobile, "Administrator,citizen,User").Value.Split(','); var hasValidRole = roles.Any(r => allowedRoles.Contains(r.Name)); if (isAllowed && hasValidRole) { var profile = _db.UserProfileTranslations.FirstOrDefault(r => r.UserProfile.Username == username && r.LanguageId == langId); if (profile == null) { profile = _db.UserProfileTranslations.FirstOrDefault(r => r.UserProfile.Username == username && r.IsDefault); } var result = new ProfileViewModel() { Id = profile.UserProfileId, LanguageId = profile.LanguageId, IdNumber = profile.UserProfile.IdNumber ?? string.Empty, PhoneNumber = profile.UserProfile.PhoneNumber ?? string.Empty, GenderLookupId = profile.UserProfile.GenderLookupId, ProvinceId = profile.UserProfile.ProvinceId, CityId = profile.UserProfile.CityId, RegionId = profile.UserProfile.RegionId, MartialStatusLookupId = profile.UserProfile.MartialStatusLookupId, PrefferdLanguage = profile.UserProfile.PreferedLanguageId, Department = profile.UserProfile.DepartmentId, ManagerId = profile.UserProfile.ManagerId, FullName = profile.FullName, Mobile = profile.UserProfile.Mobile ?? string.Empty, Address = profile.Address ?? string.Empty, Email = profile.UserProfile.Email, Username = profile.UserProfile.Username, Fax = profile.UserProfile.Fax ?? string.Empty, BirthDay = profile.UserProfile.Birthday, ProfilePath = profile.UserProfile.ProfilePhoto, Roles = roles }; return(Ok(result)); } else { return(Content(HttpStatusCode.Forbidden, new BaseApiResponse() { StatusCode = HttpStatusCode.Forbidden, Message = Core.Constants.Errors.Apis.ErrorLoginNoAccess })); } } catch (Exception ex) { LogHelper.LogException(Core.Constants.Users.Mobile, ex, Core.Constants.Errors.Apis.ErrorLogin); return(Content(HttpStatusCode.InternalServerError, new BaseApiResponse() { StatusCode = HttpStatusCode.InternalServerError, Message = Core.Constants.Errors.Apis.ErrorLogin })); } }
public IHttpActionResult UpdateProfile(ProfileViewModel registerModel) { AuthenticationHelper.ApiAuthorizationCheck(Request); try { var lang = Request?.Headers?.AcceptLanguage?.FirstOrDefault()?.Value ?? "ar"; var languageId = lang == "ar" ? (int)GeneralEnums.LanguageEnum.Arabic : (int)GeneralEnums.LanguageEnum.English; var city = LookupHelper.GetLookupDetailsByCode(registerModel.CityCode)?.Id; var gender = LookupHelper.GetLookupDetailsByCode(registerModel.GenderCode)?.Id; var martialStatus = LookupHelper.GetLookupDetailsByCode(registerModel.MartialStatusCode)?.Id; var province = LookupHelper.GetLookupDetailsByCode(registerModel.ProvinceCode)?.Id; var userProfile = _db.UserProfiles.FirstOrDefault(r => r.Username == registerModel.Username); if (userProfile != null) { userProfile.Email = registerModel.Email.IsNullOrWhiteSpace() ? userProfile.Email : registerModel.Email; userProfile.Fax = registerModel.Fax.IsNullOrWhiteSpace() ? userProfile.Fax : registerModel.Fax; userProfile.IdNumber = registerModel.IdNumber.IsNullOrWhiteSpace() ? userProfile.IdNumber : registerModel.IdNumber; userProfile.Mobile = registerModel.Mobile.IsNullOrWhiteSpace() ? userProfile.Mobile : registerModel.Mobile; userProfile.PreferedLanguageId = registerModel.PrefferdLanguage ?? userProfile.PreferedLanguageId; userProfile.CityId = city ?? userProfile.CityId; userProfile.DepartmentId = registerModel.Department ?? userProfile.DepartmentId; userProfile.GenderLookupId = gender ?? userProfile.GenderLookupId; userProfile.MartialStatusLookupId = martialStatus ?? userProfile.MartialStatusLookupId; userProfile.ProvinceId = province ?? userProfile.ProvinceId; userProfile.RegionId = registerModel.RegionId ?? userProfile.RegionId; userProfile.Birthday = registerModel.BirthDay ?? userProfile.Birthday; userProfile.PhoneNumber = registerModel.PhoneNumber.IsNullOrWhiteSpace() ? userProfile.PhoneNumber : registerModel.PhoneNumber; userProfile.ProfilePhoto = registerModel.ProfilePath.IsNullOrWhiteSpace() ? userProfile.ProfilePhoto : registerModel.ProfilePath; var userProfileTrans = _db.UserProfileTranslations.FirstOrDefault(r => r.UserProfileId == userProfile.Id && r.LanguageId == languageId) ?? _db.UserProfileTranslations.FirstOrDefault(r => r.UserProfileId == userProfile.Id); if (userProfileTrans != null) { userProfileTrans.FullName = registerModel.FullName.IsNullOrWhiteSpace() ? userProfileTrans.FullName : registerModel.FullName; userProfileTrans.Address = registerModel.Address.IsNullOrWhiteSpace() ? userProfileTrans.Address : registerModel.Address; _db.Entry(userProfileTrans).State = EntityState.Modified; } _db.Entry(userProfile).State = EntityState.Modified; _db.SaveChanges(); if (!registerModel.Password.IsNullOrWhiteSpace()) { var user = _db.AspNetUsers.FirstOrDefault(r => r.UserName == registerModel.Username); if (user != null) { UserManager.RemovePassword(user.Id); var updateResult = UserManager.AddPassword(user.Id, registerModel.Password); if (updateResult.Succeeded) { return(Ok(registerModel)); } } } else { return(Ok(registerModel)); } return(Content(HttpStatusCode.Forbidden, new BaseApiResponse() { StatusCode = HttpStatusCode.Forbidden, Message = "General Error" })); } else { var user = new ApplicationUser { UserName = registerModel.Username, Email = registerModel.Email }; var result = UserManager.CreateAsync(user, registerModel.Password); if (result.Result.Succeeded) { var profil = new UserProfile { Fax = registerModel.Fax ?? string.Empty, Birthday = registerModel.BirthDay, CreatedOn = DateTime.Now, GenderLookupId = gender, ProvinceId = province, CityId = city, RegionId = registerModel.RegionId, IdNumber = registerModel.IdNumber ?? string.Empty, PhoneNumber = registerModel.PhoneNumber ?? string.Empty, Mobile = registerModel.Mobile ?? string.Empty, MartialStatusLookupId = martialStatus, ManagerId = registerModel.ManagerId, DepartmentId = registerModel.Department, PreferedLanguageId = registerModel.PrefferdLanguage, Status = (int)GeneralEnums.StatusEnum.Active, Username = registerModel.Username, Email = registerModel.Email }; _db.UserProfiles.Add(profil); _db.SaveChanges(); var profTrans = new UserProfileTranslation() { Address = registerModel.Address ?? string.Empty, FullName = registerModel.FullName, IsDefault = languageId == CultureHelper.GetDefaultLanguageId(), LanguageId = languageId, UserProfileId = profil.Id }; _db.UserProfileTranslations.Add(profTrans); if (!profTrans.IsDefault) { var profTrans1 = new UserProfileTranslation() { Address = registerModel.Address ?? string.Empty, FullName = registerModel.FullName, IsDefault = true, LanguageId = CultureHelper.GetDefaultLanguageId(), UserProfileId = profil.Id }; _db.UserProfileTranslations.Add(profTrans1); } _db.SaveChanges(); registerModel.Id = profil.Id; return(Ok(registerModel)); } else { return(Content(HttpStatusCode.Forbidden, new BaseApiResponse() { StatusCode = HttpStatusCode.Forbidden, Message = result.Result.Errors.FirstOrDefault() })); } } } catch (Exception ex) { LogHelper.LogException(Core.Constants.Users.System, ex, Core.Constants.Errors.Apis.ErrorRegister); return(Content(HttpStatusCode.InternalServerError, new BaseApiResponse() { StatusCode = HttpStatusCode.InternalServerError, Message = Core.Constants.Errors.Apis.ErrorRegister })); } }
public IHttpActionResult Register(ProfileViewModel registerModel) { AuthenticationHelper.ApiAuthorizationCheck(Request); try { var lang = Request?.Headers?.AcceptLanguage?.FirstOrDefault()?.Value ?? "ar"; var languageId = lang == "ar" ? (int)GeneralEnums.LanguageEnum.Arabic : (int)GeneralEnums.LanguageEnum.English; var user = new ApplicationUser { UserName = registerModel.Username, Email = registerModel.Email }; var result = UserManager.CreateAsync(user, registerModel.Password); if (result.Result.Succeeded) { var roleId = _db.AspNetRoles.FirstOrDefault(r => r.Name == Core.Constants.Roles.Citizen)?.Id; if (roleId != null) { _db.AspNetUserRoles.Add(new AspNetUserRole() { RoleId = roleId, UserId = user.Id }); _db.SaveChanges(); } var city = LookupHelper.GetLookupDetailsByCode(registerModel.CityCode)?.Id; var gender = LookupHelper.GetLookupDetailsByCode(registerModel.GenderCode)?.Id; var martialStatus = LookupHelper.GetLookupDetailsByCode(registerModel.MartialStatusCode)?.Id; var province = LookupHelper.GetLookupDetailsByCode(registerModel.ProvinceCode)?.Id; var profil = new UserProfile { Fax = registerModel.Fax ?? string.Empty, Birthday = registerModel.BirthDay, CreatedOn = DateTime.Now, GenderLookupId = gender, ProvinceId = province, CityId = city, RegionId = registerModel.RegionId, IdNumber = registerModel.IdNumber ?? string.Empty, PhoneNumber = registerModel.PhoneNumber ?? string.Empty, Mobile = registerModel.Mobile ?? string.Empty, MartialStatusLookupId = martialStatus, ManagerId = registerModel.ManagerId, DepartmentId = registerModel.Department, PreferedLanguageId = registerModel.PrefferdLanguage, Status = (int)GeneralEnums.StatusEnum.Active, Username = registerModel.Username, Email = registerModel.Email }; _db.UserProfiles.Add(profil); _db.SaveChanges(); var profTrans = new UserProfileTranslation() { Address = registerModel.Address ?? string.Empty, FullName = registerModel.FullName, IsDefault = languageId == CultureHelper.GetDefaultLanguageId(), LanguageId = languageId, UserProfileId = profil.Id }; _db.UserProfileTranslations.Add(profTrans); if (!profTrans.IsDefault) { var profTrans1 = new UserProfileTranslation() { Address = registerModel.Address ?? string.Empty, FullName = registerModel.FullName, IsDefault = true, LanguageId = CultureHelper.GetDefaultLanguageId(), UserProfileId = profil.Id }; _db.UserProfileTranslations.Add(profTrans1); } _db.SaveChanges(); registerModel.Id = profil.Id; return(Ok(registerModel)); } else { return(Content(HttpStatusCode.Forbidden, new BaseApiResponse() { StatusCode = HttpStatusCode.Forbidden, Message = result.Result.Errors.FirstOrDefault() })); } } catch (Exception ex) { LogHelper.LogException(Core.Constants.Users.System, ex, Core.Constants.Errors.Apis.ErrorRegister); return(Content(HttpStatusCode.InternalServerError, new BaseApiResponse() { StatusCode = HttpStatusCode.InternalServerError, Message = Core.Constants.Errors.Apis.ErrorRegister })); } }