private async Task <ImmagineRegalo> createOrUpdateImmagineRegalo(byte[] Immagine, string IdImmagineRegalo) { ImmagineRegalo immRegalo; if (IdImmagineRegalo != null) { immRegalo = await dbDataContext.ImmagineRegalo.FindAsync(new Guid(IdImmagineRegalo)); dbDataContext.ImmagineRegalo.Attach(immRegalo); dbDataContext.Entry(immRegalo).State = EntityState.Modified; } else { immRegalo = new ImmagineRegalo(); dbDataContext.ImmagineRegalo.Attach(immRegalo); dbDataContext.Entry(immRegalo).State = EntityState.Added; } immRegalo.Immagine = Immagine; return(immRegalo); }
public async Task <IHttpActionResult> UpdateRegalo([FromUri] Guid IdRegalo, [FromBody] RegaloDtoInput RegaloDto) { //Controllo che i parametri siano valorizzati if (RegaloDto == null || !ModelState.IsValid || (IdRegalo == null || IdRegalo == Guid.Empty)) { return(BadRequest(ModelState)); } //Cerco il regalo Regalo regalo = await dbDataContext.Regalo.Include(x => x.ImmagineRegalo).Where(x => x.Id == IdRegalo).FirstAsync(); //Modifico il regalo regalo.Cancellato = RegaloDto.Cancellato; regalo.Descrizione = RegaloDto.Descrizione; regalo.ImportoCollezionato = RegaloDto.ImportoCollezionato; regalo.Prezzo = RegaloDto.Prezzo; regalo.Titolo = RegaloDto.Titolo; if (RegaloDto.ImmagineRegalo != null) { ImmagineRegalo immagineRegalo = new ImmagineRegalo() { Id = (regalo.IdImmagineRegalo.HasValue ? regalo.IdImmagineRegalo.Value : new Guid()), Immagine = RegaloDto.ImmagineRegalo }; regalo.ImmagineRegalo = immagineRegalo; } //regalo.ImmagineRegalo.Immagine = RegaloDto.ImmagineRegalo; //await createOrUpdateImmagineRegalo(RegaloDto.ImmagineRegalo, regalo.IdImmagineRegalo.ToString()); //Regalo regalo = RegaloMapper.RegaloDtoToRegalo(dto); ////FIXME //regalo.ImmagineRegalo = null; //regalo.Evento = null; //if (!ModelState.IsValid) //{ // return BadRequest(ModelState); //} //if (regalo.Id != null) //{ // ImmagineRegalo immRegalo = await createOrUpdateImmagineRegalo(dto.ImmagineRegalo, dto.IdImmagineRegalo); // regalo.ImmagineRegalo = immRegalo; // dbDataContext.Regalo.Attach(regalo); // dbDataContext.Entry(regalo).State = EntityState.Modified; //} try { //Salvo le modifiche sul DB. dbDataContext.SaveChanges(); } catch (DbUpdateConcurrencyException) { if (!EventoExists(regalo.Id)) { return(NotFound()); } else { throw; } } return(Ok(RegaloMapper.RegaloToRegaloDto(regalo))); }