/// <summary> /// This method save all the users imported data /// </summary> /// <param name="file">Excel File</param> /// <returns></returns> /// <author>Edwin (Origin) - Abigail Rodriguez(Edit)</author> public String saveImport(String data, IEnumerable <HttpPostedFileBase> files) { try { String dataimport = data.ToString(); JArray dataimportarray = JsonConvert.DeserializeObject <JArray>(dataimport); int count = 0; int totalAdd = 0; int totalFail = 0; int totalAddIMG = 0; int totalFailIMG = 0; JArray result = new JArray(); JObject bossNotFound = new JObject(); foreach (JObject items in dataimportarray) { count++; bool error = false; /*The selected employee name is already in use and is not the employee who has it*/ if (employeeExists(items["employee"].ToString()) == "true") { result.Add("{\"error\":\"El ID del Empleado ya está siendo utilizado\", \"registro\":\"" + count + "\"}"); error = true; } /* Format validations */ else if (!Regex.IsMatch(items["employee"].ToString(), "([a-zA-Z0-9-_.]){4,}") || items["employee"].ToString() == "") { result.Add("{\"error\":\"Formato incorrecto para ID del Empleado\", \"registro\":\"" + count + "\"}"); error = true; } else if (!Regex.IsMatch(items["name"].ToString(), "[A-ZÁÉÍÓÚÑa-záéíóúñ]+( [A-ZÁÉÍÓÚÑa-záéíóúñ]+){0,2}")) { result.Add("\"error\":\"Formato incorrecto para: name\", \"registro\":\"" + count + "\"}"); error = true; } else if (!Regex.IsMatch(items["lastname"].ToString(), "[A-ZÁÉÍÓÚÑa-záéíóúñ]+( [A-ZÁÉÍÓÚÑa-záéíóúñ]+){0,1}")) { result.Add("{\"error\":\"Formato incorrecto para apellido\",\"registro\":\"" + count + "\"}"); error = true; } else if (!Regex.IsMatch(items["motherlastname"].ToString(), "[A-ZÁÉÍÓÚÑa-záéíóúñ]+( [A-ZÁÉÍÓÚÑa-záéíóúñ]+){0,1}")) { result.Add("{\"error\":\"Formato incorrecto para apellido\",\"registro\":\"" + count + "\"}"); error = true; } if (error) { totalFail++; continue; } //Section to get profile ID string profileID = ""; //JArray profileOtro = JsonConvert.DeserializeObject<JArray>(employeeprofileTable.Get("name", "Null")); //JObject profileOt = JsonConvert.DeserializeObject<JObject>(JsonConvert.SerializeObject(profileOtro[0])); //profileID = profileOt["_id"].ToString(); if (items["profileId"] != null && items["profileId"].ToString() != "") { string profileResult = employeeprofileTable.Get("name", items["profileId"].ToString()); if (profileResult != "[]" && profileResult != "" && profileResult != null) { JArray conjuntja = JsonConvert.DeserializeObject <JArray>(profileResult); profileID = (from mov in conjuntja select(string) mov["_id"]).First().ToString(); } } //Change name representation items["name"] = CultureInfo.InvariantCulture.TextInfo.ToTitleCase(items["name"].ToString().ToLower().Trim()); items["lastname"] = CultureInfo.InvariantCulture.TextInfo.ToTitleCase(items["lastname"].ToString().ToLower().Trim()); //there are fields that we know that exists so we set them into the json String jsonData = "{'employee':'" + items["employee"] + "','name':'" + items["name"].ToString().Replace("+", " ") + "','imgext':'" + "','lastname':'" + items["lastname"].ToString().Replace("+", " ") + "','motherlastname':'" + items["motherlastname"].ToString().Replace("+", " ") + "','type':'" + items["type"] + "','profileId':'" + profileID + "','area':'" + items["area"]; try //trying to set the creator's id { jsonData += "','creatorId':'"; jsonData += this.Session["_id"]; jsonData += "'}"; } catch (Exception e) { /*Ignored*/ } string id = employeetable.saveRow(jsonData, null); //Save new user _logTable.SaveLog(Session["_id"].ToString(), "Empleados", "Insert: " + items["employee"].ToString(), "Employees", DateTime.Now.ToString()); result.Add("{\"success\":\"Empleado guardado en registo: " + count + "\"}"); totalAdd++; } //Save imagen files string ext = null; string relativepath = @"\Uploads\Images\TempEmployee"; string absolutepath = Server.MapPath(relativepath); ////Delete all files if (System.IO.Directory.Exists(absolutepath + "\\")) { System.IO.Directory.Delete(absolutepath + "\\", true); } ////Create de upload directory if (!System.IO.Directory.Exists(absolutepath + "\\")) { System.IO.Directory.CreateDirectory(absolutepath + "\\"); } for (int i = 0; i < Request.Files.Count; i++) { HttpPostedFileBase file = Request.Files[i]; //Uploaded file string fileName = file.FileName; ext = file.FileName.Split('.').Last(); //getting the extension if (ext == "rar" || ext == "zip") { try { //Saves de compress file file.SaveAs(absolutepath + "\\" + fileName); //Extract file ZipFile.ExtractToDirectory(absolutepath + "\\" + fileName, absolutepath + "\\"); string[] filesArray = System.IO.Directory.GetFiles(absolutepath + "\\" + fileName.Split('.').First() + "\\"); foreach (string s in filesArray) { string namefileS = Path.GetFileName(s); JArray employeesInfo = JsonConvert.DeserializeObject <JArray>(employeetable.Get("employee", namefileS.Split('.').First())); if (employeesInfo.Count() > 0 && employeesInfo != null) { JObject employeeInfo = JsonConvert.DeserializeObject <JObject>(JsonConvert.SerializeObject(employeesInfo[0])); employeeInfo["imgext"] = s.Split('.').Last(); employeetable.SaveRow(JsonConvert.SerializeObject(employeeInfo), employeeInfo["_id"].ToString()); _logTable.SaveLog(Session["_id"].ToString(), "Empleados", "Insert: " + employeeInfo["employee"].ToString(), "Employees", DateTime.Now.ToString()); System.IO.File.Move(s, Server.MapPath(@"\Uploads\Images\" + employeeInfo["_id"].ToString() + "." + s.Split('.').Last())); totalAddIMG++; } } } catch (Exception e) { totalFailIMG++; result.Add("{\"error\":\"Error al gaurdar imagen\"}"); } } } JObject finalResult = new JObject(); finalResult.Add("employeeSuccess", totalAdd.ToString()); finalResult.Add("employeeError", totalFail.ToString()); finalResult.Add("imgSuccess", totalAddIMG.ToString()); finalResult.Add("imgError", totalFailIMG.ToString()); finalResult.Add("details", JsonConvert.SerializeObject(result)); return(JsonConvert.SerializeObject(finalResult)); } catch (Exception ex) { return(null); } }