public async Task <IHttpActionResult> DepositaEmendamento(ComandiAzioneModel depositoModel) { try { if (_logicEm.BloccaDepositi) { return(BadRequest( "E' in corso un'altra operazione di deposito. Riprova tra qualche secondo.")); } if (depositoModel.ListaEmendamenti.Count > Convert.ToInt16(AppSettingsConfiguration.LimiteDepositoMassivo)) { return(BadRequest( $"Non è possibile depositare contemporaneamente più di {AppSettingsConfiguration.LimiteDepositoMassivo} emendamenti")); } var session = await GetSession(); var persona = await _logicPersone.GetPersona(session); var depositoUfficio = persona.CurrentRole == RuoliIntEnum.Amministratore_PEM || persona.CurrentRole == RuoliIntEnum.Segreteria_Assemblea; if (depositoUfficio) { if (depositoModel.Pin != AppSettingsConfiguration.MasterPIN) { return(BadRequest("Pin inserito non valido")); } return(Ok(await _logicEm.DepositaEmendamento(depositoModel, persona))); } var pinInDb = await _logicPersone.GetPin(persona); if (pinInDb == null) { return(BadRequest("Pin non impostato")); } if (pinInDb.RichiediModificaPIN) { return(BadRequest("E' richiesto il reset del pin")); } if (depositoModel.Pin != pinInDb.PIN_Decrypt) { return(BadRequest("Pin inserito non valido")); } return(Ok(await _logicEm.DepositaEmendamento(depositoModel, persona))); } catch (Exception e) { Log.Error("DepositaEmendamento", e); return(ErrorHandler(e)); } finally { _logicEm.BloccaDepositi = false; } }