/// <summary> /// Controlla che il progressivo sia unico all'interno dell'atto /// </summary> /// <param name="attoUId"></param> /// <param name="encrypt_progressivo"></param> /// <param name="counter_emendamenti"></param> /// <returns></returns> public async Task <bool> CheckProgressivo(Guid attoUId, string encrypt_progressivo, CounterEmendamentiEnum counter_emendamenti) { var query = PRContext .EM .Where(e => true); switch (counter_emendamenti) { case CounterEmendamentiEnum.NONE: return(false); case CounterEmendamentiEnum.EM: return(!await query.AnyAsync(e => e.UIDAtto == attoUId && e.N_EM == encrypt_progressivo)); case CounterEmendamentiEnum.SUB_EM: return(!await query.AnyAsync(e => e.UIDAtto == attoUId && e.N_SUBEM == encrypt_progressivo)); default: throw new ArgumentOutOfRangeException(nameof(counter_emendamenti), counter_emendamenti, null); } }
/// <summary> /// Conteggio emendamenti nell'atto /// </summary> /// <param name="attoUId"></param> /// <param name="persona"></param> /// <returns></returns> public async Task <int> Count(Guid attoUId, PersonaDto persona, CounterEmendamentiEnum counter_emendamenti, int CLIENT_MODE, Filter <EM> filtro = null, List <Guid> firmatari = null) { var query = PRContext.EM .Where(em => em.UIDAtto == attoUId && !em.Eliminato); if (CLIENT_MODE == (int)ClientModeEnum.TRATTAZIONE) { query = query.Where(em => em.IDStato >= (int)StatiEnum.Depositato && !string.IsNullOrEmpty(em.DataDeposito)); } else { query = query.Where(em => em.IDStato != (int)StatiEnum.Bozza_Riservata || em.IDStato == (int)StatiEnum.Bozza_Riservata && (em.UIDPersonaCreazione == persona.UID_persona || em.UIDPersonaProponente == persona.UID_persona)); if (persona.IsGiunta()) { query = query .Where(em => em.id_gruppo >= AppSettingsConfiguration.GIUNTA_REGIONALE_ID); } else if (persona.CurrentRole != RuoliIntEnum.Amministratore_PEM && persona.CurrentRole != RuoliIntEnum.Segreteria_Assemblea && persona.CurrentRole != RuoliIntEnum.Presidente_Regione) { query = query .Where(em => em.id_gruppo == persona.Gruppo.id_gruppo); } if (persona.CurrentRole == RuoliIntEnum.Segreteria_Assemblea) { query = query.Where(em => !string.IsNullOrEmpty(em.DataDeposito) || em.idRuoloCreazione == (int)RuoliIntEnum.Segreteria_Assemblea); } } filtro?.BuildExpression(ref query); if (firmatari != null) { if (firmatari.Count > 0) { //Avvio ricerca firmatari var firme = await PRContext .FIRME .Where(f => firmatari.Contains(f.UID_persona)) .Select(f => f.UIDEM) .ToListAsync(); query = query .Where(em => firme.Contains(em.UIDEM)); } } switch (counter_emendamenti) { case CounterEmendamentiEnum.NONE: { return(await query.CountAsync()); } case CounterEmendamentiEnum.EM: if (persona.CurrentRole == RuoliIntEnum.Segreteria_Assemblea) { return(await query.CountAsync(e => !string.IsNullOrEmpty(e.N_EM) && string.IsNullOrEmpty(e.N_SUBEM))); } else { return(await query.CountAsync(e => string.IsNullOrEmpty(e.N_SUBEM))); } case CounterEmendamentiEnum.SUB_EM: if (persona.CurrentRole == RuoliIntEnum.Segreteria_Assemblea) { return(await query.CountAsync(e => string.IsNullOrEmpty(e.N_EM))); } else { return(await query.CountAsync(e => string.IsNullOrEmpty(e.N_EM) && !string.IsNullOrEmpty(e.N_SUBEM))); } default: return(0); } }
/// <summary> /// Conteggio emendamenti nell'atto /// </summary> /// <param name="attoUId"></param> /// <param name="persona"></param> /// <returns></returns> public async Task <int> Count(Guid attoUId, PersonaDto persona, CounterEmendamentiEnum counter_emendamenti, int CLIENT_MODE, Filter <EM> filtro = null) { var query = PRContext.EM .Where(em => em.UIDAtto == attoUId && !em.Eliminato); if (CLIENT_MODE == (int)ClientModeEnum.TRATTAZIONE) { query = query.Where(em => em.IDStato >= (int)StatiEnum.Depositato); } else { query = query.Where(em => em.IDStato != (int)StatiEnum.Bozza_Riservata || em.IDStato == (int)StatiEnum.Bozza_Riservata && (em.UIDPersonaCreazione == persona.UID_persona || em.UIDPersonaProponente == persona.UID_persona)); if (persona.CurrentRole == RuoliIntEnum.Amministratore_Giunta) { query = query .Where(em => em.id_gruppo >= 10000); } else if (persona.CurrentRole != RuoliIntEnum.Amministratore_PEM && persona.CurrentRole != RuoliIntEnum.Segreteria_Assemblea) { query = query .Where(em => em.id_gruppo == persona.Gruppo.id_gruppo); } if (persona.CurrentRole == RuoliIntEnum.Segreteria_Assemblea) { query = query.Where(em => !string.IsNullOrEmpty(em.DataDeposito) || em.idRuoloCreazione == (int)RuoliIntEnum.Segreteria_Assemblea); } } filtro?.BuildExpression(ref query); switch (counter_emendamenti) { case CounterEmendamentiEnum.NONE: { return((await query.ToListAsync()).Count); } case CounterEmendamentiEnum.EM: if (persona.CurrentRole == RuoliIntEnum.Segreteria_Assemblea) { return(await query.CountAsync(e => !string.IsNullOrEmpty(e.N_EM) && string.IsNullOrEmpty(e.N_SUBEM))); } else { return(await query.CountAsync(e => string.IsNullOrEmpty(e.N_SUBEM))); } case CounterEmendamentiEnum.SUB_EM: if (persona.CurrentRole == RuoliIntEnum.Segreteria_Assemblea) { return(await query.CountAsync(e => string.IsNullOrEmpty(e.N_EM))); } else { return(await query.CountAsync(e => string.IsNullOrEmpty(e.N_EM) && !string.IsNullOrEmpty(e.N_SUBEM))); } default: return(0); } }