示例#1
0
        // 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
                }));
            }
        }
示例#2
0
        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
                }));
            }
        }
示例#3
0
        // 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
                }));
            }
        }
示例#4
0
        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
                }));
            }
        }
示例#5
0
        // 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
                }));
            }
        }
示例#6
0
        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
                }));
            }
        }
示例#7
0
        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
                }));
            }
        }
示例#8
0
        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
                }));
            }
        }