public HttpResponseMessage CreatePart(string token, string PartJson, int UserId) { if (token != null && token.Length > 0) { var tenants = db.JDE_Tenants.Where(t => t.TenantToken == token.Trim()); if (tenants.Any()) { JavaScriptSerializer jss = new JavaScriptSerializer(); JDE_Parts item = jss.Deserialize <JDE_Parts>(PartJson); var httpRequest = HttpContext.Current.Request; if (httpRequest.ContentLength > 0) { if (httpRequest.ContentLength > Static.RuntimeSettings.MaxFileContentLength) { return(Request.CreateResponse(HttpStatusCode.BadRequest, $"{item.Name} przekracza dopuszczalną wielość pliku ({Static.RuntimeSettings.MaxFileContentLength} MB) i został odrzucony")); } //create unique token unless the file already exists item.Token = Static.Utilities.GetToken(); item.TenantId = tenants.FirstOrDefault().TenantId; var postedFile = httpRequest.Files[0]; string filePath = ""; if (postedFile != null && postedFile.ContentLength > 0) { var ext = postedFile.FileName.Substring(postedFile.FileName.LastIndexOf('.')); filePath = $"{Static.RuntimeSettings.Path2Files}{item.Token + ext.ToLower()}"; postedFile.SaveAs(filePath); Static.Utilities.ProduceThumbnail(filePath); item.Image = item.Token + ext.ToLower(); } } item.TenantId = tenants.FirstOrDefault().TenantId; item.CreatedOn = DateTime.Now; db.JDE_Parts.Add(item); db.SaveChanges(); JDE_Logs Log = new JDE_Logs { UserId = UserId, Description = "Utworzenie części", TenantId = tenants.FirstOrDefault().TenantId, Timestamp = DateTime.Now, NewValue = new JavaScriptSerializer().Serialize(item) }; db.JDE_Logs.Add(Log); db.SaveChanges(); return(Request.CreateResponse(HttpStatusCode.Created, item)); } else { return(Request.CreateResponse(HttpStatusCode.NotFound)); } } else { return(Request.CreateResponse(HttpStatusCode.NotFound)); } }
public IHttpActionResult EditPart(string token, int id, int UserId, JDE_Parts item, bool DeleteImage = false) { Logger.Info("EditPart. Start. This is version without a file"); if (token != null && token.Length > 0) { var tenants = db.JDE_Tenants.Where(t => t.TenantToken == token.Trim()); if (tenants.Any()) { var items = db.JDE_Parts.AsNoTracking().Where(u => u.TenantId == tenants.FirstOrDefault().TenantId&& u.PartId == id); if (items.Any()) { JDE_Logs Log = new JDE_Logs { UserId = UserId, Description = "Edycja części", TenantId = tenants.FirstOrDefault().TenantId, Timestamp = DateTime.Now, OldValue = new JavaScriptSerializer().Serialize(items.FirstOrDefault()), NewValue = new JavaScriptSerializer().Serialize(item) }; db.JDE_Logs.Add(Log); item.LmBy = UserId; item.LmOn = DateTime.Now; // Check if to remove image if (DeleteImage) { string oFileName = item.Image; if (!string.IsNullOrEmpty(oFileName)) { // There was a file, must delete it first System.IO.File.Delete(Path.Combine(RuntimeSettings.Path2Files, oFileName)); System.IO.File.Delete(Path.Combine(RuntimeSettings.Path2Thumbs, oFileName)); } item.Image = null; } db.Entry(item).State = EntityState.Modified; try { db.SaveChanges(); } catch (DbUpdateConcurrencyException) { if (!JDE_PartExists(id)) { return(NotFound()); } else { throw; } } } } } return(StatusCode(HttpStatusCode.NoContent)); }
public HttpResponseMessage ArchivePart(string token, int id, int UserId) { if (token != null && token.Length > 0) { var tenants = db.JDE_Tenants.Where(t => t.TenantToken == token.Trim()); if (tenants.Any()) { var items = db.JDE_Parts.AsNoTracking().Where(u => u.TenantId == tenants.FirstOrDefault().TenantId&& u.PartId == id); if (items.Any()) { JDE_Parts orgItem = items.FirstOrDefault(); orgItem.IsArchived = true; JDE_Logs Log = new JDE_Logs { UserId = UserId, Description = "Archiwizacja części", TenantId = tenants.FirstOrDefault().TenantId, Timestamp = DateTime.Now, OldValue = new JavaScriptSerializer().Serialize(items.FirstOrDefault()), NewValue = "" }; db.JDE_Logs.Add(Log); try { db.Entry(orgItem).State = EntityState.Modified; db.SaveChanges(); } catch (DbUpdateConcurrencyException) { if (!JDE_PartExists(id)) { return(Request.CreateResponse(HttpStatusCode.NotFound)); } else { throw; } } catch (Exception ex) { return(Request.CreateErrorResponse(HttpStatusCode.InternalServerError, ex)); } } } } return(Request.CreateResponse(HttpStatusCode.NoContent)); }
public HttpResponseMessage EditPart(string token, int id, int UserId, string PartJson) { Logger.Info("EditPart. Start. PartJso={PartJson}", PartJson); try { if (token != null && token.Length > 0) { var tenants = db.JDE_Tenants.Where(t => t.TenantToken == token.Trim()); if (tenants.Any()) { JavaScriptSerializer jss = new JavaScriptSerializer(); JDE_Parts item = jss.Deserialize <JDE_Parts>(Uri.UnescapeDataString(PartJson)); try { var items = db.JDE_Parts.Where(u => u.TenantId == tenants.FirstOrDefault().TenantId&& u.PartId == id); if (items.Any()) { Logger.Info("EditPart: Znalazłem odpowiednią część. Przystępuję do edycji Id={id}, UserId={UserId}", id, UserId); JDE_Parts orgItem = items.FirstOrDefault(); //handle image var httpRequest = HttpContext.Current.Request; if (httpRequest.ContentLength > 0) { //there's a new content if (httpRequest.ContentLength > Static.RuntimeSettings.MaxFileContentLength) { return(Request.CreateResponse(HttpStatusCode.BadRequest, $"{item.Name} przekracza dopuszczalną wielość pliku ({Static.RuntimeSettings.MaxFileContentLength} MB) i został odrzucony")); } item.TenantId = tenants.FirstOrDefault().TenantId; var postedFile = httpRequest.Files[0]; string filePath = ""; if (postedFile != null && postedFile.ContentLength > 0) { Logger.Info("EditPart: Znaleziono nowe pliki. Przystępuję do zapisu na dysku. Id={id}, UserId={UserId}", id, UserId); var ext = postedFile.FileName.Substring(postedFile.FileName.LastIndexOf('.')); filePath = $"{Static.RuntimeSettings.Path2Files}{item.Token + ext.ToLower()}"; string oFileName = db.JDE_Parts.Where(p => p.PartId == id).FirstOrDefault().Image; if (!string.IsNullOrEmpty(oFileName)) { // There was a file, must delete it first Logger.Info("EditPart: Istnieją poprzednie pliki pod tą nazwą. Przystępuję do usuwania. Id={id}, UserId={UserId}", id, UserId); System.IO.File.Delete(Path.Combine(RuntimeSettings.Path2Files, oFileName)); System.IO.File.Delete(Path.Combine(RuntimeSettings.Path2Thumbs, oFileName)); } postedFile.SaveAs(filePath); Logger.Info("EditPart: Zapisano pliki. Przystępuję do utworzenia miniatury.. Id={id}, UserId={UserId}", id, UserId); Static.Utilities.ProduceThumbnail(filePath); item.Image = item.Token + ext.ToLower(); } } JDE_Logs Log = new JDE_Logs { UserId = UserId, Description = "Edycja części", TenantId = tenants.FirstOrDefault().TenantId, Timestamp = DateTime.Now, OldValue = new JavaScriptSerializer().Serialize(items.FirstOrDefault()), NewValue = PartJson }; db.JDE_Logs.Add(Log); item.LmBy = UserId; item.LmOn = DateTime.Now; try { Logger.Info("EditPart: Przystępuję do zapisu zmian w bazie danych. Id={id}, UserId={UserId}", id, UserId); db.Entry(orgItem).CurrentValues.SetValues(item); db.Entry(orgItem).State = EntityState.Modified; db.SaveChanges(); Logger.Info("EditPart: Zapisano zmiany w bazie. Id={id}, UserId={UserId}", id, UserId); } catch (DbUpdateConcurrencyException) { if (!JDE_PartExists(id)) { return(Request.CreateResponse(HttpStatusCode.NotFound)); } else { throw; } } catch (Exception ex) { Logger.Error("Błąd w EditPart. Id={id}, UserId={UserId}. Szczegóły: {Message}, nowa wartość: {item}", id, UserId, ex.ToString(), item); return(Request.CreateErrorResponse(HttpStatusCode.InternalServerError, ex)); } } } catch (Exception ex) { Logger.Error("Błąd w EditPart. Id={id}, UserId={UserId}. Szczegóły: {Message}, nowa wartość: {item}", id, UserId, ex.ToString(), item); return(Request.CreateResponse(HttpStatusCode.NoContent)); } } } } catch (Exception ex) { Logger.Error("Błąd w EditPart. Id={id}, UserId={UserId}. Szczegóły: {Message}", id, UserId, ex.ToString()); return(Request.CreateResponse(HttpStatusCode.InternalServerError, ex.ToString())); } return(Request.CreateResponse(HttpStatusCode.NoContent)); }