public Serv_ParaleloExcel(Stream data, ApplicationDbContext context, string fileName, ServProcess process, CustomUser user, int headerin = 1, int sheets = 1, string resultfileName = "Result") : base(cols, data, fileName, headerin, sheets, resultfileName, context) { this.process = process; this.user = user; _context = context; isFormatValid(); }
public IHttpActionResult CheckUpload([FromBody] JObject upload) { int branchid = 0; int processid = 0; if (upload["FileType"] == null || upload["BranchesId"] == null || !Int32.TryParse(upload["BranchesId"].ToString(), out branchid) || upload["ProcessId"] == null) { return(BadRequest("Debes enviar Tipo de Archivo y segmentoOrigen")); } var FileType = upload["FileType"].ToString(); ServProcess process = null; if (Int32.TryParse(upload["ProcessId"].ToString(), out processid)) { process = _context.ServProcesses.FirstOrDefault(f => f.BranchesId == branchid && f.Id == processid); } else { process = _context.ServProcesses.FirstOrDefault(f => f.BranchesId == branchid && (f.State == ServProcess.Serv_FileState.Started) && f.FileType == FileType); } if (process == null) { return(Ok()); } List <string> tipos = new List <string>(); tipos.Add(FileType); dynamic res = new JObject(); res.array = JToken.FromObject(tipos); res.id = process.Id; res.state = process.State; return(Ok(res)); }
private ServProcess AddFileToProcess(int BranchesId, string FileType, int userid) { var processInDB = _context.ServProcesses.FirstOrDefault(p => p.BranchesId == BranchesId && p.FileType == FileType && p.State == ServProcess.Serv_FileState.Started); //if exist a process of the same type, cancel and create a new one if (processInDB != null) { processInDB.State = ServProcess.Serv_FileState.Canceled; } //create new process var process = new ServProcess(); process.Id = process.GetNextId(_context); process.CreatedAt = DateTime.Now; process.FileType = FileType; process.State = ServProcess.Serv_FileState.Started; process.CreatedBy = userid; process.BranchesId = BranchesId; _context.ServProcesses.Add(process); _context.SaveChanges(); return(process); }
private void DynamicExcelToDB(string FileType, dynamic o, ServProcess file, CustomUser user, out HttpResponseMessage response) { response = new HttpResponseMessage(); switch (FileType) { case ServProcess.Serv_FileType.Varios: Serv_VariosExcel ExcelFile = new Serv_VariosExcel(o.excelStream, _context, o.fileName, file, user, headerin: 1, sheets: 1); if (ExcelFile.ValidateFile()) { ExcelFile.toDataBase(); file.State = ServProcess.Serv_FileState.Started; _context.SaveChanges(); response.StatusCode = HttpStatusCode.OK; response.Content = new StringContent("Se subio el archivo correctamente."); _context.SaveChanges(); } else { file.State = ServProcess.Serv_FileState.ERROR; _context.SaveChanges(); response = ExcelFile.toResponse(); } break; case ServProcess.Serv_FileType.Carrera: Serv_CarreraExcel ExcelFile2 = new Serv_CarreraExcel(o.excelStream, _context, o.fileName, file, user, headerin: 1, sheets: 1); if (ExcelFile2.ValidateFile()) { ExcelFile2.toDataBase(); file.State = ServProcess.Serv_FileState.Started; _context.SaveChanges(); response.StatusCode = HttpStatusCode.OK; response.Content = new StringContent("Se subio el archivo correctamente."); _context.SaveChanges(); } else { file.State = ServProcess.Serv_FileState.ERROR; _context.SaveChanges(); response = ExcelFile2.toResponse(); } break; case ServProcess.Serv_FileType.Proyectos: Serv_ProyectosExcel ExcelFile3 = new Serv_ProyectosExcel(o.excelStream, _context, o.fileName, file, user, headerin: 1, sheets: 1); if (ExcelFile3.ValidateFile()) { ExcelFile3.toDataBase(); file.State = ServProcess.Serv_FileState.Started; _context.SaveChanges(); response.StatusCode = HttpStatusCode.OK; response.Content = new StringContent("Se subio el archivo correctamente."); _context.SaveChanges(); } else { file.State = ServProcess.Serv_FileState.ERROR; _context.SaveChanges(); response = ExcelFile3.toResponse(); } break; case ServProcess.Serv_FileType.Paralelo: Serv_ParaleloExcel ExcelFile4 = new Serv_ParaleloExcel(o.excelStream, _context, o.fileName, file, user, headerin: 1, sheets: 1); if (ExcelFile4.ValidateFile()) { ExcelFile4.toDataBase(); file.State = ServProcess.Serv_FileState.Started; _context.SaveChanges(); response.StatusCode = HttpStatusCode.OK; response.Content = new StringContent("Se subio el archivo correctamente."); _context.SaveChanges(); } else { file.State = ServProcess.Serv_FileState.ERROR; _context.SaveChanges(); response = ExcelFile4.toResponse(); } break; } }
public async Task <HttpResponseMessage> UploadORExcel() { var response = new HttpResponseMessage(); try { var req = await Request.Content.ReadAsMultipartAsync(); dynamic o = HttpContentToVariables(req).Result; if (!((IDictionary <string, object>)o).ContainsKey("BranchesId") || !((IDictionary <string, object>)o).ContainsKey("FileType") || !((IDictionary <string, object>)o).ContainsKey("fileName") || !((IDictionary <string, object>)o).ContainsKey("excelStream") || !o.fileName.ToString().EndsWith(".xlsx")) { response.StatusCode = HttpStatusCode.BadRequest; response.Headers.Add("UploadErrors", "{ \"Faltan datos\": \"Debe enviar mes(mm), gestion(yyyy), segmentoOrigen(id) y un archivo excel llamado file (en formato .xlsx)\"}"); response.Content = new StringContent("Debe enviar mes(mm), gestion(yyyy), segmentoOrigen(id) y un archivo excel llamado file"); return(response); } //todo validate FileType // ... string realFileName; if (!verifyName(o.fileName, o.BranchesId, o.FileType, out realFileName)) { response.StatusCode = HttpStatusCode.BadRequest; response.Headers.Add("UploadErrors", "{ \"Nombre Incorrecto\": \"El archivo enviado no cumple con la regla de nombres. Nombre sugerido: " + realFileName + "\"}"); response.Content = new StringContent("El archivo enviado no cumple con la regla de nombres."); return(response); } var user = auth.getUser(Request); int userid = Int32.Parse(Request.Headers.GetValues("id").First()); ServProcess file = AddFileToProcess(Int32.Parse(o.BranchesId.ToString()), o.FileType.ToString(), userid); if (file == null) { response.StatusCode = HttpStatusCode.BadRequest; response.Headers.Add("UploadErrors", "{ \"Ya se Subio archivos para este mes\": \"Ya se subio datos para este mes, si quiere volver a subir cancele el anterior archivo.\"}"); response.Content = new StringContent("Ya se subió datos para este mes, si quiere volver a subir cancele el anterior archivo."); return(response); } DynamicExcelToDB(o.FileType, o, file, user, out response); return(response); } catch (System.ArgumentException e) { response.StatusCode = HttpStatusCode.BadRequest; response.Headers.Add("UploadErrors", "{ \"Formato Archivo Invalido\": \"Por favor enviar un archivo en formato excel (.xlsx)\"}"); response.Content = new StringContent("Por favor enviar un archivo en formato excel (.xlsx)" + e); return(response); } catch (System.IO.IOException e) { Console.WriteLine(e); response.StatusCode = HttpStatusCode.BadRequest; response.Headers.Add("UploadErrors", "{ \"Archivo demasiado grande\": \"El archivo es demasiado grande para ser procesado.\"}"); response.Content = new StringContent("El archivo es demasiado grande para ser procesado."); return(response); } catch (HanaException e) { if (e.NativeError == 258) { Console.WriteLine(e); response.StatusCode = HttpStatusCode.BadRequest; response.Headers.Add("UploadErrors", "{ \"La conexion con SAP se perdio\": \"No se pudo validar el archivo con con SAP\"}"); response.Content = new StringContent("Error conexion SAP"); return(response); } Console.WriteLine(e); response.StatusCode = HttpStatusCode.BadRequest; response.Headers.Add("UploadErrors", "{ \"La conexion con SAP se perdio\": \"No se pudo validar el archivo con con SAP\"}"); response.Content = new StringContent("Error conexion SAP"); return(response); } /*catch (System.Exception e) * { * Console.WriteLine(e); * response.StatusCode = HttpStatusCode.BadRequest; * response.Headers.Add("UploadErrors", "{ \"Existen Enlaces a otros archivos\": \"Existen celdas con referencias a otros archivos.\"}"); * response.Content = new StringContent("Por favor enviar un archivo en formato excel sin referencias a otros libros excel o formulas(.xls, .xslx)"); * return response; * }*/ }