public async Task <IActionResult> Edit(string Id)
        {
            ViewData["Title"] = "Modifica Password";
            PasswordEditInputModel var_InputModel = await prop_PasswordService.GetPasswordForEditingAsync(Convert.ToInt32(Id));

            return(View(var_InputModel));
        }
        public async Task <IActionResult> Edit(PasswordEditInputModel par_InputModel)
        {
            if (ModelState.IsValid == true)
            {
                try
                {
                    PasswordDetailViewModel var_Password = await prop_PasswordService.EditPasswordAsync(par_InputModel);

                    TempData["MessaggioConfermaSalvataggio"] = "I dati sono stati salvati con sussesso";

                    return(RedirectToAction(nameof(Detail), new { Id = par_InputModel.Id }));
                }
                catch (PasswordImageInvalidException)
                {
                    ModelState.AddModelError(nameof(PasswordEditInputModel.FilePassword), "Questa Password gia esiste");
                }
                catch (PasswordDescrizioneDuplicataException)
                {
                    ModelState.AddModelError(nameof(PasswordEditInputModel.Descrizione), "Questa Password gia esiste");
                }
                catch (DBConcurrencyException)
                {
                    ModelState.AddModelError("", "Spiacenti il salvataggio non e' andato a buon fine perche nel frattempo perche un altro utente ha aggiornato il corso. aggiornare la pagine e ripetere le modifiche.");
                }
            }
            ViewData["Title"] = "Modifica Password";
            return(View(par_InputModel));
        }
예제 #3
0
        public async Task <PasswordDetailViewModel> EditPasswordAsync(PasswordEditInputModel par_InputModel)
        {
            bool bPasswordNonDuplicata = await DescrizioneDuplicataAsync(par_InputModel.Descrizione, par_InputModel.Id);

            if (bPasswordNonDuplicata == false)
            {
                throw new PasswordDescrizioneDuplicataException(par_InputModel.Descrizione, new Exception("errore nella creazione della password"));
            }
            string sFilePath = null;

            if (par_InputModel.FilePassword != null)
            {
                try
                {
                    sFilePath = await par_ImagePersister.SavePasswordImageAsync(par_InputModel.Id, par_InputModel.FilePassword);
                }
                catch (System.Exception exc)
                {
                    throw new PasswordImageInvalidException(par_InputModel.Id, exc);
                }
            }
            int var_NumRigheUpd = await db.CommandAsync($@"UPDATE Passwords 
                                                        SET PathFile=COALESCE({sFilePath}, PathFile), 
                                                        Password={par_InputModel.Password}, 
                                                        Descrizione={par_InputModel.Descrizione}, 
                                                        DataInserimento={par_InputModel.DataInserimento}, 
                                                        FkUtente={par_InputModel.FkUtente}, 
                                                        Sito={par_InputModel.Sito}, 
                                                        Tipo={par_InputModel.Tipo} 
                                                        WHERE Id={par_InputModel.Id} AND RowVersion={par_InputModel.RowVersion}");

            if (var_NumRigheUpd == 0)
            {
                int var_RecordTrovato = await db.QueryScalarAsync <int>($"SELECT COUNT(*) FROM Passwords WHERE Id={par_InputModel.Id}");

                if (var_RecordTrovato > 0)
                {
                    throw new DBConcurrencyException("Non e' possibile effettuare l'update perche un altro utente ha effettuato delle modifiche.");
                }
                else
                {
                    throw new PasswordNotFoundException(par_InputModel.Id);
                }
            }
            PasswordDetailViewModel var_Password = await GetPasswordAsync(par_InputModel.Id.ToString());

            return(var_Password);
        }
        public async Task <PasswordDetailViewModel> EditPasswordAsync(PasswordEditInputModel par_InputModel)
        {
            string sDescrizione          = par_InputModel.Descrizione;
            bool   bPasswordNonDuplicata = await DescrizioneDuplicataAsync(sDescrizione, par_InputModel.Id);

            if (bPasswordNonDuplicata == true)
            {
                Passwords var_Password = await dbContext.Passwords.FindAsync(par_InputModel.Id);

                var_Password.ChangePassword(par_InputModel.Password);
                var_Password.Descrizione     = par_InputModel.Descrizione;
                var_Password.DataInserimento = par_InputModel.DataInserimento;
                var_Password.FkUtente        = par_InputModel.FkUtente;
                var_Password.Sito            = par_InputModel.Sito;
                var_Password.Tipo            = par_InputModel.Tipo;

                dbContext.Entry(var_Password).Property(var_Password => var_Password.RowVersion).OriginalValue = par_InputModel.RowVersion;

                if (par_InputModel.FilePassword != null)
                {
                    try
                    {
                        string sFilePath = await par_ImagePersister.SavePasswordImageAsync(par_InputModel.Id, par_InputModel.FilePassword);

                        var_Password.PathFile = sFilePath;
                    }
                    catch (System.Exception exc)
                    {
                        throw new PasswordImageInvalidException(par_InputModel.Id, exc);
                    }
                }

                try
                {
                    await dbContext.SaveChangesAsync();
                }
                catch (DbUpdateConcurrencyException)
                {
                    throw new DBConcurrencyException("Non e' possibile effettuare l'update perche un altro utente ha effettuato delle modifiche.");
                }
                PasswordDetailViewModel var_PasswordDetailViewModel = PasswordDetailViewModel.FromEntity(var_Password);
                return(var_PasswordDetailViewModel);
            }
            else
            {
                throw new PasswordDescrizioneDuplicataException(sDescrizione, new Exception("errore nella creazione della password"));
            }
        }
        public async Task <PasswordEditInputModel> GetPasswordForEditingAsync(int id)
        {
            IQueryable <PasswordEditInputModel> Qry_Linq = dbContext.Passwords
                                                           .Where(var_password => var_password.Id == id)
                                                           .Select(var_password => PasswordEditInputModel.FromEntity(var_password))
                                                           .AsNoTracking();
            PasswordEditInputModel var_Password = await Qry_Linq.FirstOrDefaultAsync();

            if (var_Password == null)
            {
                //logger.LogWarning("Password {id} not found", id);
                throw new PasswordNotFoundException(id);
            }

            return(var_Password);
        }
예제 #6
0
        public async Task <PasswordEditInputModel> GetPasswordForEditingAsync(int id)
        {
            FormattableString query       = $"SELECT Id, Password, Descrizione, DataInserimento, FkUtente, Sito, Tipo, PathFile, RowVersion FROM Passwords where Id = {id}; ";
            DataSet           var_DataSet = await db.QueryAsync(query);

            var var_PasswordTable = var_DataSet.Tables[0];

            if (var_PasswordTable.Rows.Count != 1)
            {
                //logger.LogWarning("Password {id} not found", id);
                throw new PasswordNotFoundException(id);
            }
            var var_PasswordRow            = var_PasswordTable.Rows[0];
            var var_PasswordEditInputModel = PasswordEditInputModel.FromDataRow(var_PasswordRow);

            return(var_PasswordEditInputModel);
        }
 public async Task<PasswordDetailViewModel> EditPasswordAsync(PasswordEditInputModel par_InputModel)
 {
     PasswordDetailViewModel var_Password = await prop_PasswordService.EditPasswordAsync(par_InputModel);
     memoryChache.Remove($"Password{par_InputModel.Id}");
     return var_Password;
 }