public Claim(int id, AdUser user, bool loadObject = true) : this(id, loadObject) { bool access = false; if (user.Is(AdGroup.ServiceControler)) { access = true; } else if (user.Is(AdGroup.SuperAdmin) || user.Is(AdGroup.ServiceManager)) { access = true; } else if (user.Is(AdGroup.ServiceEngeneer) && (CurEngeneerSid == user.Sid || SpecialistSid == user.Sid)) { access = true; } else if (user.Is(AdGroup.ServiceManager) && (CurManagerSid == user.Sid || SpecialistSid == user.Sid)) { access = true; } else if (user.Is(AdGroup.ServiceAdmin) && (CurAdminSid == user.Sid || SpecialistSid == user.Sid)) { access = true; } else if (user.Is(AdGroup.ServiceTech) && (CurTechSid == user.Sid || SpecialistSid == user.Sid)) { access = true; } if (!access) throw new AccessDenyException("У вас нет доступа к заявке №{id}"); //if (!UserCanViewClaimNow(user)) //{ // throw new AccessDenyException($"В настоящий момент у вас нет доступа к заявке №{id}."); //} }
public static IEnumerable<Question> GetList(AdUser curUser, int? id = null, string managerSid = null, string queStates = null, int? top = null, string prodSid = null) { if (!top.HasValue) top = 30; SqlParameter pId = new SqlParameter() { ParameterName = "id", SqlValue = id, SqlDbType = SqlDbType.Int }; SqlParameter pManagerSid = new SqlParameter() { ParameterName = "manager_sid", SqlValue = managerSid, SqlDbType = SqlDbType.VarChar }; SqlParameter pQueStates = new SqlParameter() { ParameterName = "lst_que_states", SqlValue = queStates, SqlDbType = SqlDbType.NVarChar }; SqlParameter pTop = new SqlParameter() { ParameterName = "top", SqlValue = top, SqlDbType = SqlDbType.Int }; SqlParameter pProdSid = new SqlParameter() { ParameterName = "prod_sid", SqlValue = prodSid, SqlDbType = SqlDbType.VarChar }; if (!AdHelper.UserInGroup(curUser.User, AdGroup.SuperAdmin, AdGroup.SpeCalcKontroler)) { if (AdHelper.UserInGroup(curUser.User, AdGroup.SpeCalcManager)) { pManagerSid.SqlValue = curUser.Sid; } if (AdHelper.UserInGroup(curUser.User, AdGroup.SpeCalcProduct)) { pProdSid.SqlValue = curUser.Sid; } } var dt = Db.SpeCalc.ExecuteQueryStoredProcedure("get_question", pId, pManagerSid, pQueStates, pTop, pProdSid); var lst = new List<Question>(); foreach (DataRow row in dt.Rows) { var model = new Question(row); lst.Add(model); } return lst; }
/// <summary> /// Проверка есть ли у пользователя доступ к заявке /// </summary> /// <param name="id"></param> /// <param name="userSid"></param> /// <returns></returns> private bool UserCanViewClaimNow(AdUser user) { bool result = false; if (State == null) State = new ClaimState(); SqlParameter pIdClaimState = new SqlParameter() { ParameterName = "id_claim_state", SqlValue = State.Id, SqlDbType = SqlDbType.Int }; var dt = Db.Service.ExecuteQueryStoredProcedure("get_claim_state_user_group_list", pIdClaimState); var grpList = new List<AdGroup>(); foreach (DataRow dr in dt.Rows) { string groupSid = Db.DbHelper.GetValueString(dr, "user_group_sid"); var grp = AdUserGroup.GetAdGroupBySid(groupSid); grpList.Add(grp); } grpList.Add(AdGroup.ServiceControler); result = AdHelper.UserInGroup(user.User, grpList.ToArray()); return result; }
public static async Task<ListResult<Claim>> GetListAsync(AdUser user, string adminSid = null, string engeneerSid = null, DateTime? dateStart = null, DateTime? dateEnd = null, int? topRows = null, string managerSid = null, string techSid = null, string serialNum = null, int? idDevice = null, bool? activeClaimsOnly = false, int? idClaimState = null, int? clientId = null, string clientSdNum = null, int? claimId = null, string deviceName = null, int? pageNum = null, string groupStates = null, string address = null) { if (user.Is(AdGroup.ServiceAdmin)) { adminSid = user.Sid; } if (user.Is(AdGroup.ServiceEngeneer)) engeneerSid = user.Sid; if (user.Is(AdGroup.ServiceManager)) managerSid = user.Sid; if (user.Is(AdGroup.ServiceTech)) techSid = user.Sid; //!!!!ЕСЛИ МЕНЯЕШЬ ЭТУ ФУНКЦИЮ ПОМИ ЧТО ЕЩЕ НАДО ПОПРАВИТЬ ФУНКЦИЮ ЧУТЬ НИЖЕ if (!topRows.HasValue) topRows = 30; if (!pageNum.HasValue)pageNum = 1; SqlParameter pServAdminSid = new SqlParameter() { ParameterName = "admin_sid", SqlValue = adminSid, SqlDbType = SqlDbType.VarChar }; SqlParameter pServEngeneerSid = new SqlParameter() { ParameterName = "engeneer_sid", SqlValue = engeneerSid, SqlDbType = SqlDbType.VarChar }; SqlParameter pDateStart = new SqlParameter() { ParameterName = "date_start", SqlValue = dateStart, SqlDbType = SqlDbType.Date }; SqlParameter pDateEnd = new SqlParameter() { ParameterName = "date_end", SqlValue = dateEnd, SqlDbType = SqlDbType.Date }; SqlParameter pTopRows = new SqlParameter() { ParameterName = "top_rows", SqlValue = topRows, SqlDbType = SqlDbType.Int }; SqlParameter pManagerSid = new SqlParameter() { ParameterName = "manager_sid", SqlValue = managerSid, SqlDbType = SqlDbType.VarChar }; SqlParameter pTechSid = new SqlParameter() { ParameterName = "tech_sid", SqlValue = techSid, SqlDbType = SqlDbType.VarChar }; SqlParameter pSerialNum = new SqlParameter() { ParameterName = "serial_num", SqlValue = serialNum, SqlDbType = SqlDbType.NVarChar }; SqlParameter pIdDevice = new SqlParameter() { ParameterName = "id_device", SqlValue = idDevice, SqlDbType = SqlDbType.Int }; SqlParameter pActiveClaimsOnly = new SqlParameter() { ParameterName = "active_claims_only", SqlValue = activeClaimsOnly, SqlDbType = SqlDbType.Bit }; SqlParameter pIdClaimState = new SqlParameter() { ParameterName = "id_claim_state", SqlValue = idClaimState, SqlDbType = SqlDbType.Int }; SqlParameter pClientId = new SqlParameter() { ParameterName = "id_client", SqlValue = clientId, SqlDbType = SqlDbType.Int }; SqlParameter pClientSdNum = new SqlParameter() { ParameterName = "client_sd_num", SqlValue = clientSdNum, SqlDbType = SqlDbType.Int }; SqlParameter pclaimId = new SqlParameter() { ParameterName = "claim_id", SqlValue = claimId, SqlDbType = SqlDbType.Int }; SqlParameter pDeviceName = new SqlParameter() { ParameterName = "device_name", SqlValue = deviceName, SqlDbType = SqlDbType.NVarChar }; SqlParameter pPageNum = new SqlParameter() { ParameterName = "page_num", SqlValue = pageNum, SqlDbType = SqlDbType.Int }; SqlParameter pGroupStates = new SqlParameter() { ParameterName = "group_state_list", SqlValue = groupStates, SqlDbType = SqlDbType.NVarChar }; SqlParameter pAddress = new SqlParameter() { ParameterName = "address", SqlValue = address, SqlDbType = SqlDbType.NVarChar }; var dt = Db.Service.ExecuteQueryStoredProcedure("get_claim_list", pServAdminSid, pServEngeneerSid, pDateStart, pDateEnd, pTopRows, pManagerSid, pTechSid, pSerialNum, pIdDevice, pActiveClaimsOnly, pIdClaimState, pClientId, pClientSdNum, pclaimId, pDeviceName, pPageNum, pGroupStates, pAddress); int cnt = 0; var lst = new List<Claim>(); if (dt.Rows.Count > 0) { foreach (DataRow row in dt.Rows) { var model = new Claim(row, false, false); lst.Add(model); } cnt = Db.DbHelper.GetValueIntOrDefault(dt.Rows[0], "total_count"); } // Общее количество // var dtCnt = Db.Service.ExecuteQueryStoredProcedure("get_claim_list_count", pServAdminSid, pServEngeneerSid, pDateStart, pDateEnd, pManagerSid, pTechSid, pSerialNum, pIdDevice, pActiveClaimsOnly, pIdClaimState, pClientId); //int cnt = 0; // if (dtCnt.Rows.Count > 0) // { // cnt = Db.DbHelper.GetValueIntOrDefault(dtCnt.Rows[0], "cnt"); // } var result = new ListResult<Claim>(lst, cnt); return result; }
public static IEnumerable<Claim> GetList(AdUser user, out int cnt, string adminSid = null, string engeneerSid = null, DateTime? dateStart = null, DateTime? dateEnd = null, int? topRows = null, string managerSid = null, string techSid = null, string serialNum=null, int? idDevice = null, bool? activeClaimsOnly = false, int? idClaimState = null, int? clientId = null, string clientSdNum = null) { if (user.Is(AdGroup.ServiceAdmin)) { adminSid = user.Sid; } if (user.Is(AdGroup.ServiceEngeneer)) engeneerSid = user.Sid; if (user.Is(AdGroup.ServiceManager)) managerSid = user.Sid; if (user.Is(AdGroup.ServiceTech)) techSid = user.Sid; //!!!!ЕСЛИ МЕНЯЕШЬ ЭТУ ФУНКЦИЮ ПОМИ ЧТО НАДО ПОПРАВИТЬ ФУНКЦИЮ ЧУТЬ НИЖЕ if (!topRows.HasValue) topRows = 30; SqlParameter pServAdminSid = new SqlParameter() { ParameterName = "admin_sid", SqlValue = adminSid, SqlDbType = SqlDbType.VarChar }; SqlParameter pServEngeneerSid = new SqlParameter() { ParameterName = "engeneer_sid", SqlValue = engeneerSid, SqlDbType = SqlDbType.VarChar }; SqlParameter pDateStart = new SqlParameter() { ParameterName = "date_start", SqlValue = dateStart, SqlDbType = SqlDbType.Date }; SqlParameter pDateEnd = new SqlParameter() { ParameterName = "date_end", SqlValue = dateEnd, SqlDbType = SqlDbType.Date }; SqlParameter pTopRows = new SqlParameter() { ParameterName = "top_rows", SqlValue = topRows, SqlDbType = SqlDbType.Int }; SqlParameter pManagerSid = new SqlParameter() { ParameterName = "manager_sid", SqlValue = managerSid, SqlDbType = SqlDbType.VarChar }; SqlParameter pTechSid = new SqlParameter() { ParameterName = "tech_sid", SqlValue = techSid, SqlDbType = SqlDbType.VarChar }; SqlParameter pSerialNum = new SqlParameter() { ParameterName = "serial_num", SqlValue = serialNum, SqlDbType = SqlDbType.NVarChar }; SqlParameter pIdDevice = new SqlParameter() { ParameterName = "id_device", SqlValue = idDevice, SqlDbType = SqlDbType.Int }; SqlParameter pActiveClaimsOnly = new SqlParameter() { ParameterName = "active_claims_only", SqlValue = activeClaimsOnly, SqlDbType = SqlDbType.Bit }; SqlParameter pIdClaimState = new SqlParameter() { ParameterName = "id_claim_state", SqlValue = idClaimState, SqlDbType = SqlDbType.Int }; SqlParameter pClientId = new SqlParameter() { ParameterName = "id_client", SqlValue = clientId, SqlDbType = SqlDbType.Int }; SqlParameter pClientSdNum = new SqlParameter() { ParameterName = "client_sd_num", SqlValue = clientSdNum, SqlDbType = SqlDbType.Int }; var dt = Db.Service.ExecuteQueryStoredProcedure("get_claim_list", pServAdminSid, pServEngeneerSid, pDateStart, pDateEnd, pTopRows, pManagerSid, pTechSid, pSerialNum, pIdDevice, pActiveClaimsOnly, pIdClaimState, pClientId, pClientSdNum); var lst = new List<Claim>(); foreach (DataRow row in dt.Rows) { var model = new Claim(row, true); lst.Add(model); } //Общее количество var dtCnt = Db.Service.ExecuteQueryStoredProcedure("get_claim_list_count", pServAdminSid, pServEngeneerSid, pDateStart, pDateEnd, pManagerSid, pTechSid, pSerialNum, pIdDevice, pActiveClaimsOnly, pIdClaimState, pClientId); cnt = 0; if (dtCnt.Rows.Count > 0) { cnt = Db.DbHelper.GetValueIntOrDefault(dtCnt.Rows[0], "cnt"); } return lst; }