public async void ZapuskPoiska(List <List <string> > excel, DateTime Date, List <Adres> Adresa) { ProgressHub.SendMessage("Запускаем обработку файла ...", 0); await Task.Run(() => Poisk(excel, Date, Adresa)); ProgressHub.SendMessage("Файл успешно обработан ...", 100); }
async Task MakeOnePageAsync(string url, int executionPercent) { Page page = await new PageClient(url).MakePageAsync(); pages.Add(page); percent += executionPercent; ProgressHub.SendMessage("", percent / 100); }
public void otklik(int max, ref int tek, string message) { tek++; int progress = Convert.ToInt16(tek / max * 100); if (tek > max) { tek = Convert.ToInt32(max); } ProgressHub.SendMessage(message, progress); }
public async Task <Message> Post() { string contentBody; var message = new Message(); contentBody = await Request.Content.ReadAsStringAsync(); message.ClientAddress = HttpContext.Current.Request.UserHostAddress; message.ContentBody = contentBody; ProgressHub.SendMessage(JsonConvert.SerializeObject(message)); return(message); }
public async Task <ActionResult> Signup(RegisterUserViewModel model) { MusicEntities en = new MusicEntities(); var login = en.Logins.FirstOrDefault(a => a.Username.Equals(model.Username)); if (login != null) { return(Json(new { success = false, message = "Username exist, Please choose another username!" })); } else { try { string storageUrl = "musicproject-9f3c5.appspot.com"; string date = DateTime.Now.ToString("yyyyMMddHHmmssffff"); var stream2 = model.ImageBase.InputStream; var task2 = new FirebaseStorage(storageUrl) .Child("MusicProject") .Child("Images") .Child(date + "-" + model.ImageBase.FileName) .PutAsync(stream2); task2.Progress.ProgressChanged += (s, e) => ProgressHub.SendMessage("Uploading User Avatar ... (" + Math.Round((e.Position * 1.0 / e.Length * 100), 0) + "%)"); string imageUrl = await task2; Login newUser = new Login { Username = model.Username, Password = model.Password, User = new User { Avatar = imageUrl, FirstName = model.Firstname, LastName = model.Lastname, Phone = model.Phone, Gender = model.Gender, Email = model.Email, } }; en.Logins.Add(newUser); en.SaveChanges(); } catch (Exception ex) { return(Json(new { success = false, message = ex.Message })); } } return(Json(new { success = true })); }
public async Task <ActionResult> Index(SiteMapModel siteMap) { if (ModelState.IsValid) { try { ProgressHub.SendMessage("", 1); await testService.MakeTestAsync(siteMap.Host); } catch (Exception ex) { ViewBag.Error = ex.Message; return(View(siteMap)); } return(RedirectToAction("TestResult")); } return(View(siteMap)); }
private void Process(bool multithread, string connectionID) { // Prepare var _Cancel = new CancellationTokenSource(); Session["_Cancel"] = _Cancel; var FileName = Session["FileName"]?.ToString(); var Parser = _Facade.Parser; if (Parser.FileAlreadyParsed(FileName)) { ProgressHub.SendMessage(connectionID, "File already parsed!"); return; } // Fire and forget Task <bool> .Run(() => { var progress = new Progress <int>(); try { var ProgressBarMaximum = Parser.RowsInAnketa(FileName).Result; progress.ProgressChanged += (sender, args) => { ProgressHub.SendProgress(connectionID, args, ProgressBarMaximum); }; if (!multithread) { Parser.Parse_SigleAsync(FileName, progress, _Cancel).Wait(); } else { Parser.Parse_MultipleAsync(FileName, progress, _Cancel).Wait(); } } catch (Exception ex) { ProgressHub.SendMessage(connectionID, ex.InnerException.Message); } int fileId = _Facade.Keeper.GetFile(Path.GetFileName(FileName)).ID; ProgressHub.ParsingCompleted(connectionID, fileId); return(true); }); }
public async Task MakeTestAsync(string host) { List <string> urlAddresses = new LinkUrl(host).GetURLAddresses(); if (urlAddresses == null) { throw new ValidationException("Don't have any URL", ""); } ProgressHub.SendMessage("determining sitemap", 5); List <Task> tasks = new List <Task>(); percent = 500; int execPer = 8500 / urlAddresses.Count; foreach (var url in urlAddresses) { tasks.Add(MakeOnePageAsync(url, execPer)); } await Task.WhenAll(tasks); ProgressHub.SendMessage("evaluating the time server response", 90); Test test = new Test() { Host = Database.Hosts.GetAll() .Where(h => h.HostURL == host).FirstOrDefault() ?? new Host() { HostURL = host }, TestDate = DateTime.Now, Pages = pages }; Database.Tests.Create(test); Database.Save(); ProgressHub.SendMessage("saving test", 95); }
public ActionResult TestResult(int?id) { try { MapperConfiguration config = new MapperConfiguration(map => map.CreateMap <PageDTO, PageViewModel>()); var mapper = config.CreateMapper(); pages = mapper.Map <IEnumerable <PageDTO>, IEnumerable <PageViewModel> >(testService.GetTestPages(id)); TestDTO test = testService.GetTest(id); ViewBag.HostURL = test.HostURL; ViewBag.Date = test.TestDate; ProgressHub.SendMessage("receiving data", 99); return(View(pages)); } catch (Exception ex) { ViewBag.Error = ex.Message; return(View()); } }
public async Task <ActionResult> Edit(RegisterUserViewModel model) { MusicEntities en = new MusicEntities(); try { string storageUrl = "musicproject-9f3c5.appspot.com"; string date = DateTime.Now.ToString("yyyyMMddHHmmssffff"); string imageUrl = null; if (model.ImageBase != null) { var stream2 = model.ImageBase.InputStream; var task2 = new FirebaseStorage(storageUrl) .Child("MusicProject") .Child("Images") .Child(date + "-" + model.ImageBase.FileName) .PutAsync(stream2); task2.Progress.ProgressChanged += (s, e) => ProgressHub.SendMessage("Uploading User Avatar ... (" + Math.Round((e.Position * 1.0 / e.Length * 100), 0) + "%)"); imageUrl = await task2; } var user = en.Users.FirstOrDefault(a => a.Id == model.Id); user.Avatar = string.IsNullOrEmpty(imageUrl) ? user.Avatar : imageUrl; user.FirstName = model.Firstname; user.LastName = model.Lastname; user.Phone = model.Phone; user.Gender = model.Gender; user.Email = model.Email; en.SaveChanges(); } catch (Exception ex) { return(Json(new { success = false, message = ex.Message })); } return(Json(new { success = true })); }
// mock action that takes a while to complete and provides user feedback via signalR connection hub public ActionResult DoWork(string connectionId) { // loop to mock 5 sequential tasks (in a real world scenario you would invoke service/db calls) for (var i = 1; i <= 5; i++) { ProgressHub.SendMessage($"Starting <span class=\"violet\">Task {i}</span>...", connectionId); Thread.Sleep(1000); ProgressHub.SendMessage($"<span class=\"green\"> Completed!</span>\n\n", connectionId); Thread.Sleep(500); } // mock a failed task ProgressHub.SendMessage($"Starting <span class=\"violet\">Task 6</span>...", connectionId); Thread.Sleep(1000); ProgressHub.SendMessage($"<span class=\"red\"> Failed!</span>\n\n", connectionId); Thread.Sleep(500); // add a footer messages ProgressHub.SendMessage($"Ran 6 tasks,<span class=\"orange\"> 5 passed, 1 failed.</span>\n\n", connectionId); ProgressHub.SendMessage($"Finished! <span class=\"cursor\"></span>\n\n", connectionId); return(Content("Finished /DoWork")); }
public ActionResult Upload(HttpPostedFileBase upload, DateTime Date) { int progress = 0; double pro100 = 0; int procount = 0; if (upload != null) { HttpCookie cookie = new HttpCookie("My localhost cookie"); //найдем старые данные за этот месяц и заменим их не щадя List <SVN> dbSVN = db.SVNs.Where(x => x.Date.Year == Date.Year && x.Date.Month == Date.Month).ToList(); pro100 = dbSVN.Count; foreach (SVN S in dbSVN) { try { db.SVNs.Remove(S); db.SaveChanges(); procount++; progress = Convert.ToInt16(procount / pro100 * 100); if (procount > pro100) { procount = Convert.ToInt32(pro100); } ProgressHub.SendMessage("Удаляем старые данные...", progress); } catch (Exception e) { Console.WriteLine(e.Message); } } // Установить значения в нем cookie["Download"] = "0"; // Добавить куки в ответ Response.Cookies.Add(cookie); //call this method inside your working action ProgressHub.SendMessage("Инициализация и подготовка...", 0); // получаем имя файла string fileName = System.IO.Path.GetFileName(upload.FileName); // сохраняем файл в папку Files в проекте if (Directory.Exists(Server.MapPath("~/Files/")) == false) { Directory.CreateDirectory(Server.MapPath("~/Files/")); } upload.SaveAs(Server.MapPath("~/Files/" + fileName)); //обрабатываем файл после загрузки string[] Names = new string[] { "STREET_HOUSE", "SERVICE", "DELIVER", "CHARGE_PLAN", "CHARGE_FACT", "MAKET" }; string Error = ""; List <List <string> > excel = ExcelSVNUpload.IMPORT(Server.MapPath("~/Files/" + fileName), Names, out Error); if (excel.Count < 1) { //если нифига не загрузилось то ViewBag.Error = Error; ViewBag.Names = Names; Console.WriteLine("Пустой массив значит файл не загрузился!(он уже удалился)"); return(View("NotUpload")); } else { pro100 = excel.Count; SVN SVNKA = new SVN(); List <Adres> Adresa = db.Adres.ToList();// грузим все адреса из БД List <TableService> TSdb = db.TableServices.ToList(); List <List <string> > Services = new List <List <string> >(); //один раз преобразуем таблицу сервисов для сравнения чтоб в цикле не вызывать int ser = 0; foreach (TableService T in TSdb) { T.Type = T.Type.Replace(" ", "").ToUpper(); Services.Add(new List <string>()); Services[ser].Add(T.Type);//для проверки сохраняем ser++; } //для каждой строки в экселе foreach (List <string> L in excel) { string Service = L[1].Replace(" ", "").ToUpper(); bool EstService = false; if (Service.Contains("ОБЩ.ИМУЩ.")) { } foreach (TableService TS in TSdb) { if (TS.Type.Equals(Service)) { EstService = true; SVNKA.ServiceId = TS.Id; ser = TS.Id - 1;//номер сервиса по порядку с 0 break; } } //если сервис не найден в списке то и адрес не проверяем идем дальше if (EstService) { bool EstName = false; string Name = L[0].Replace(" ", ""); foreach (Adres A in Adresa) { string AName = A.Adress.Replace(" ", ""); if (AName.Equals(Name)) { //если в массиве адресов есть адрес из строчки то сохраняем айдишник EstName = true; SVNKA.AdresId = A.Id; if (ser < 4) { Services[ser].Add(Name); } // Adresa.Remove(A);//уменьшаем массив для дальнейшего ускорения поиска break; } } //если имени нет в списке то и сохранять не будем if (EstName) { try { SVNKA.Plan = Convert.ToDecimal(L[3]); SVNKA.Fact = Convert.ToDecimal(L[4]); SVNKA.Maket = Convert.ToDecimal(L[5]); SVNKA.Agent = L[2]; SVNKA.Date = Date; } catch (Exception e) { Console.WriteLine("Не преобразуется в децимал " + SVNKA.AdresId + " " + e.Message); } try { db.SVNs.Add(SVNKA); db.SaveChanges(); } catch (Exception e) { Console.WriteLine("Ошибка записи в базу данных " + e.Message); } } } procount++; progress = Convert.ToInt16(50 + procount / pro100 * 50); ProgressHub.SendMessage("Обрабатываем файл СВН...", progress); if (procount > pro100) { procount = Convert.ToInt32(pro100); } } List <string> Adr = Adresa.Select(x => x.Adress).ToList(); for (int a = 0; a < Adr.Count; a++) { Adr[a] = Adr[a].Replace(" ", "").ToUpper(); } ViewBag.VsegoServices = TSdb.Count; ViewBag.Services = Services; ViewBag.date = Date; ViewBag.file = fileName; return(View("UploadComplete")); } } return(RedirectToAction("Index")); }
private bool NotificarUsuario(int tempoPercorrido, string alimento) { ProgressHub.SendMessage(tempoPercorrido, alimento); return(true); }
public ActionResult Upload(HttpPostedFileBase upload, DateTime Date, bool JQ = false) { int progress = 0; double pro100 = 0; int procount = 0; if (upload != null) { //найдем старые данные за этот месяц и заменим их не щадя List <IPU> dbIPU = db.IPUs.Where(x => x.Date.Year == Date.Year && x.Date.Month == Date.Month).ToList(); pro100 = dbIPU.Count; try { procount++; progress = Convert.ToInt16(procount / pro100 * 100); if (procount > pro100) { procount = Convert.ToInt32(pro100); } ProgressHub.SendMessage("Удаляем старые данные...", progress); db.IPUs.RemoveRange(dbIPU); db.SaveChanges(); } catch (Exception e) { } //call this method inside your working action ProgressHub.SendMessage("Инициализация и подготовка...", 0); // получаем имя файла string fileName = Path.GetFileName(upload.FileName); // сохраняем файл в папку Files в проекте if (Directory.Exists(Server.MapPath("~/Files/")) == false) { Directory.CreateDirectory(Server.MapPath("~/Files/")); } upload.SaveAs(Server.MapPath("~/Files/" + fileName)); //обрабатываем файл после загрузки string Vkladka = "для УЭВ по ГВС без ОПУ"; string Error = ""; string[] Names = new string[] { "адрес", "начислениепонормативу(руб.)", "начислениепосчетчику(руб.)", "Номер счетчика" }; List <List <string> > excel = ExcelSVNUpload.IMPORT(Server.MapPath("~/Files/" + fileName), Names, out Error, Vkladka); if (excel.Count < 1) { //если нифига не загрузилось то ViewBag.Error = Error; ViewBag.Names = Names; Console.WriteLine("Пустой массив значит файл не загрузился!(он уже удалился)"); if (!JQ) { return(View("NotUpload")); } else { return(Json(Error)); } } else { List <Adres> Adresa = db.Adres.ToList();// грузим все адреса из БД foreach (Adres A in Adresa) { A.Adress = A.Adress.Replace(" ", ""); } if (!JQ) { ZapuskPoiska(excel, Date, Adresa); } else { Poisk(excel, Date, Adresa); } ViewBag.date = Date; ViewBag.file = fileName; if (!JQ) { return(View("UploadComplete")); } else { return(Json("Ошибок загрузки нет!")); } } } if (!JQ) { return(RedirectToAction("NotUpload")); } else { return(Json("Файл не выбран или неверный формат файла.")); } }
public ActionResult Upload(HttpPostedFileBase upload, DateTime Date, bool JQ = false) { int progress = 0; double pro100 = 0; int procount = 0; if (upload != null) { //найдем старые данные за этот месяц и заменим их не щадя List <OBSD> dbOBSD = db.OBSDs.Where(x => x.Date.Year == Date.Year && x.Date.Month == Date.Month).ToList(); pro100 = dbOBSD.Count; try { db.OBSDs.RemoveRange(dbOBSD); db.SaveChanges(); procount++; progress = Convert.ToInt16(procount / pro100 * 100); if (procount > pro100) { procount = Convert.ToInt32(pro100); } ProgressHub.SendMessage("Удаляем старые данные ОБСД...", progress); } catch (Exception e) { Console.WriteLine(e.Message); } //call this method inside your working action ProgressHub.SendMessage("Инициализация и подготовка...", 0); // получаем имя файла string fileName = Path.GetFileName(upload.FileName); // сохраняем файл в папку Files в проекте if (Directory.Exists(Server.MapPath("~/Files/")) == false) { Directory.CreateDirectory(Server.MapPath("~/Files/")); } upload.SaveAs(Server.MapPath("~/Files/" + fileName)); //обрабатываем файл после загрузки string Vkladka = "Общая"; string[] Names = new string[] { "адрес", "лицевой", "услуга", "начислениефактическое", "фио", "сальдоисходящее", "квартира" }; string Error = ""; List <List <string> > excel = ExcelSVNUpload.IMPORT(Server.MapPath("~/Files/" + fileName), Names, out Error, Vkladka); if (excel.Count < 1) { //если нифига не загрузилось то ViewBag.Names = Names; ViewBag.Error = Error; Console.WriteLine("Пустой массив значит файл не загрузился!(он уже удалился)"); if (!JQ) { return(View("NotUpload")); } else { return(Json(Error)); } } else { List <Adres> Adresa = db.Adres.ToList();// грузим все адреса из БД foreach (Adres A in Adresa) { A.Adress = A.Adress.Replace(" ", ""); } List <TableService> Services = db.TableServices.ToList(); foreach (TableService S in Services)//Преобразуем в беспробельных { S.Type = S.Type.Replace(" ", ""); } if (!JQ) { ZapuskPoiska(excel, Date, Adresa, Services); } else { FastPoisk(excel, Date, Adresa, Services); } ViewBag.date = Date; ViewBag.file = fileName; if (!JQ) { return(View("UploadComplete")); } else { return(Json("Ошибок загрузки нет!")); } } } if (!JQ) { return(RedirectToAction("NotUpload")); } else { return(Json("Файл не выбран или неверный формат файла.")); } }
/// <summary> /// 新增上傳 /// </summary> /// <returns></returns> public ActionResult ConfirmUpload() { string[] rtn = new string[] { "", "" }; List <long> time = new List <long>(); if (Request.HttpMethod == "POST") { var files = Request.Files; double interval = (double)100 / (double)files.AllKeys.Count(); interval = interval <= 1 ? 1.8 : interval; var totalSize = Request["fileTsize"].ToInt(); int doneSize = 0; string videoNo = ""; for (var i = 0; i < files.AllKeys.Count(); i++) { var file = files[i]; var size = file.ContentLength; string fileName = Path.GetFileNameWithoutExtension(file.FileName); var fileExt = Path.GetExtension(file.FileName); try { if (fileExt == ".jpg") { // 上傳影片縮圖 Stream fs = file.InputStream; using (Stream ftpStream = System.IO.File.Create($"{VideoThbPath}{videoNo}{fileExt}")) { byte[] buffer = new byte[1024000]; int read; while ((read = fs.Read(buffer, 0, buffer.Length)) > 0) { ftpStream.Write(buffer, 0, read); } } fs.Seek(0, SeekOrigin.Begin); Image image = Image.FromStream(fs, true, false); Sql = $"SELECT * FROM Video WHERE VideoNo = '{videoNo}' "; var res = db.Query <VideoInfo>(Sql).FirstOrDefault(); var vdW = res.Width; var vdH = res.Height; if (image.Width != res.Width && image.Height != res.Height) { res.IsRotate = "Y"; db.Update(res); } } else { using (var scope = new TransactionScope()) { VideoInfo vd = new VideoInfo(); vd.FileName = fileName; vd.FileExt = fileExt; vd.FileDesc = Request["videoDesc"]; vd.Size = file.ContentLength; vd.Width = 0; vd.Height = 0; vd.OrgCreateDateTime = Key.Now; vd.OrgModifyDateTime = Key.Now; vd.CreateDateTime = Key.Now; vd.ModifyDateTime = Key.Now; db.Insert(vd); videoNo = vd.VideoNo.ToString(); var fileStream = file.InputStream; // 分批寫入影片 using (Stream ftpStream = System.IO.File.Create($"{VideoPath}{videoNo}{fileExt}")) { byte[] buffer = new byte[1024000]; int read; while ((read = fileStream.Read(buffer, 0, buffer.Length)) > 0) { doneSize += 1024000; ftpStream.Write(buffer, 0, read); } } fileStream.Seek(0, SeekOrigin.Begin); ////取得 Metadata , 影片解析 string crtDateTime = "", modDateTime = "", videoW = "", videoH = ""; var directories = ImageMetadataReader.ReadMetadata(fileStream); foreach (var directory in directories) { foreach (var tag in directory.Tags) { var name = tag.Name.ToLower(); var val = tag.Description.Trim(); switch (name) { case "modified": modDateTime = (modDateTime != "") ? modDateTime : val; break; case "created": crtDateTime = (crtDateTime != "") ? crtDateTime : val; break; case "width": videoW = val == "0" ? videoW : tag.Description.Trim(); break; case "height": videoH = val == "0" ? videoH : tag.Description.Trim(); break; } } } var keyName = files.AllKeys[i]; var fileModDate = Request[$"fileModDate_{keyName.Substring(keyName.LastIndexOf('_') + 1)}"].FixNull(); var modDate = fileModDate == "" ? Key.Now : DateTime.Parse(Key.FullDateTime(fileModDate)); var orgCrt = DateTimeFormat(crtDateTime); var orgMod = DateTimeFormat(modDateTime); Sql = $"SELECT * FROM Video WHERE VideoNo = '{vd.VideoNo}' "; var res = db.Query <VideoInfo>(Sql).FirstOrDefault(); res.Width = Math.Round(videoW.FixNum(), 0).FixInt(); res.Height = Math.Round(videoH.FixNum(), 0).FixInt(); res.OrgCreateDateTime = DateTime.Compare(modDate, orgCrt) == -1 ? modDate : orgCrt; // 選日期小的 res.OrgModifyDateTime = DateTime.Compare(modDate, orgMod) == -1 ? modDate : orgCrt; if (db.Update(res)) { scope.Complete(); } else { Files.DelFile(VideoPath, fileName, fileExt); Files.DelFile(VideoThbPath, fileName, ".jpg"); rtn[0] = "新增失敗 !"; } } // transaction } ProgressHub.SendMessage(100); } catch (Exception e) { Files.DelFile(VideoPath, fileName, fileExt); Files.DelFile(VideoThbPath, fileName, ".jpg"); Log.ErrLog(e, $"[Error] {fileName}"); rtn[0] = e.Message; } } } else { rtn[0] = AppConfig.ParamError; } return(new JsonNetResult(rtn)); }
/// <summary> /// 製作上傳圖片的縮圖 /// </summary> /// <returns></returns> public ActionResult GetPhotoInfo() { string[] rtn = new string[] { "", "", "" }; if (Request.HttpMethod == "POST") { var uaParser = JsonConvert.DeserializeObject <UAParserModel>(Request["UAParser"]); var files = Request.Files; var fileLen = files.AllKeys.Count(); if (fileLen == 0) { rtn[0] = "無任何上傳檔案 !"; return(this.ToJsonNet(rtn)); } var now = DateTime.Now; var t = new PhotoInfoModel(); var sw = new Stopwatch(); var photoList = new List <int>(); sw.Start(); for (var i = 0; i < fileLen; i++) { using (var scope = new TransactionScope()) { using (var db = new SqlConnection(this.SettingsContext.GetValue("Test"))) { var file = files[i]; t.FileExt = Path.GetExtension(file.FileName); t.FileName = Path.GetFileNameWithoutExtension(file.FileName); Stream fs = file.InputStream; Image img = null; var guid = Guid.NewGuid(); var maxPix = AppConfig.ThumbnailPixel; var path = Server.MapPath($"~/Temp/{guid}.jpg"); var thbPath = Server.MapPath($"~/Temp/{guid}_{maxPix}.jpg"); var thb1920Path = Server.MapPath($"~/Temp/{guid}_1920.jpg"); try { using (Stream stream = new FileStream(path, FileMode.Create)) { if (t.FileExt.ToLower() == ".heic") { // heic to jpg using (MagickImage mag = new MagickImage(fs)) { mag.Write(stream, MagickFormat.Jpg); } img = Image.FromStream(stream, true, true); } else { img = Image.FromStream(fs, true, true); } PhotoUtility.PhotoExif(ref img, ref t); // Origin img.Save(stream, ImageFormat.Jpeg); // Thumbnail PhotoUtility.MakeThumbnail(stream, thbPath, maxPix.FixInt()); // Thumbnail PhotoUtility.MakeThumbnail(stream, thb1920Path, 1920); } // 主檔 var p = new PhotoModel(); p.CreateDateTime = now; p.FileDesc = ""; p.FileExt = t.FileExt; p.FileName = t.FileName; p.OrgCreateDateTime = t.OrgCreatDateTime; p.OrgModifyDateTime = t.OrgModifyDateTime; p.ModifyDateTime = t.OrgModifyDateTime; p.Orientation = t.Orientation; p.Location = t.Location; p.Width = t.Width; p.Height = t.Height; p.Person = ""; p.CreateDateTime = now; p.ModifyDateTime = now; db.Insert(p); // 原圖 var orgPhoto = new PhotoDetailModel(); orgPhoto.PhotoDetailSN = p.PhotoSN; orgPhoto.CreateDateTime = now; orgPhoto.Photo = Files.ReadBinaryFile(path); orgPhoto.Type = "Origin"; db.Insert(orgPhoto); Files.RenameFile(path, path.Replace(guid.ToString(), p.PhotoSN.ToString())); path = path.Replace(guid.ToString(), p.PhotoSN.ToString()); // 縮圖 var thumbPhoto = new PhotoDetailModel(); thumbPhoto.PhotoDetailSN = p.PhotoSN; thumbPhoto.CreateDateTime = now; thumbPhoto.Photo = Files.ReadBinaryFile(thbPath); thumbPhoto.Type = "Thumbnail"; db.Insert(thumbPhoto); Files.RenameFile(thbPath, thbPath.Replace(guid.ToString(), p.PhotoSN.ToString())); thbPath = thbPath.Replace(guid.ToString(), p.PhotoSN.ToString()); // 縮圖 1920 var thumbPhoto1920 = new PhotoDetailModel(); thumbPhoto1920.PhotoDetailSN = p.PhotoSN; thumbPhoto1920.CreateDateTime = now; thumbPhoto1920.Photo = Files.ReadBinaryFile(thb1920Path); thumbPhoto1920.Type = "Thumbnail"; db.Insert(thumbPhoto1920); Files.RenameFile(thb1920Path, thb1920Path.Replace(guid.ToString(), p.PhotoSN.ToString())); thb1920Path = thb1920Path.Replace(guid.ToString(), p.PhotoSN.ToString()); //t.Url = "data:image/" + t.FileExt.Replace(".", "") + ";base64," + Convert.ToBase64String(Files.ReadBinaryFile(path)); t.Thumbnail = "data:image/" + t.FileExt.Replace(".", "") + ";base64," + Convert.ToBase64String(thumbPhoto1920.Photo); var percent = ((double)(i + 1) / (double)fileLen * 100); percent = percent > 99 ? 99 : percent; ProgressHub.SendMessage(Request["Selector"], percent, "", Request["ConnId"], i, t.Thumbnail); photoList.Add(p.PhotoSN); } catch (Exception e) { this.LogContext.LogRepoistory.SysLog(e); rtn[0] += $"{t.FileName} - {e.Message} <br>"; Files.DelBulkFiles(new string[] { path, thbPath, thb1920Path }); ProgressHub.SendMessage(Request["Selector"], 0, e.Message, Request["ConnId"], i, ""); continue; } finally { if (img != null) { img.Dispose(); } img = null; } } scope.Complete(); } } if (rtn[0] == "") { // 上傳記錄 var log = new UploadLog(); log.Browser = $"{uaParser.BrowserName} {uaParser.BrowserVersion}"; log.Device = $"{uaParser.DeviceType} {uaParser.DeviceVendor}"; log.OS = $"{uaParser.OsName} {uaParser.OsVersion}"; log.LocalIP = ""; log.TotalNum = fileLen; log.Type = "Photo"; log.CompletedTime = sw.Elapsed.ToString("mm\\:ss\\.ff"); log.CreateDateTime = now; log.PhotoSNList = photoList.ToArray().Join(","); using (var db = new SqlConnection(this.SettingsContext.GetValue("Test"))) { db.Insert(log); } } ProgressHub.SendMessage(Request["Selector"], 100, "", Request["ConnId"], fileLen, ""); } return(this.ToJsonNet(rtn)); }
public ActionResult Upload(HttpPostedFileBase upload, DateTime Date) { int progress = 0; double pro100 = 0; int procount = 0; Date = new DateTime(Date.Year, Date.Month, 1); if (upload != null) { HttpCookie cookie = new HttpCookie("My localhost cookie"); //найдем старые данные за этот месяц и заменим их не щадя List <DOMFundament> dbFundaments = db.DOMFundaments.Where(x => x.Date.Year == Date.Year && x.Date.Month == Date.Month).ToList(); int tek = 0; foreach (DOMFundament S in dbFundaments) { try { db.DOMFundaments.Remove(S); db.SaveChanges(); otklik(dbFundaments.Count, ref tek, "удаляем старые данные фундамента..."); } catch (Exception e) { Console.WriteLine(e.Message); } } List <DOMRoof> dbRoofs = db.DOMRoofs.Where(x => x.Date.Year == Date.Year && x.Date.Month == Date.Month).ToList(); tek = 0; foreach (DOMRoof S in dbRoofs) { try { db.DOMRoofs.Remove(S); db.SaveChanges(); otklik(dbRoofs.Count, ref tek, "удаляем старые данные крыш..."); } catch (Exception e) { Console.WriteLine(e.Message); } } List <DOMFasad> dbFasads = db.DOMFasads.Where(x => x.Date.Year == Date.Year && x.Date.Month == Date.Month).ToList(); tek = 0; foreach (DOMFasad S in dbFasads) { try { db.DOMFasads.Remove(S); db.SaveChanges(); otklik(dbRoofs.Count, ref tek, "удаляем старые данные фасадов..."); } catch (Exception e) { Console.WriteLine(e.Message); } } List <DOMRoom> dbRooms = db.DOMRooms.Where(x => x.Date.Year == Date.Year && x.Date.Month == Date.Month).ToList(); tek = 0; foreach (DOMRoom S in dbRooms) { try { db.DOMRooms.Remove(S); db.SaveChanges(); otklik(dbRoofs.Count, ref tek, "удаляем старые данные внутридомовых элементов..."); } catch (Exception e) { Console.WriteLine(e.Message); } } // Установить значения в нем cookie["Download"] = "0"; // Добавить куки в ответ Response.Cookies.Add(cookie); //call this method inside your working action ProgressHub.SendMessage("Инициализация и подготовка...", 0); // получаем имя файла string fileName = Path.GetFileName(upload.FileName); // сохраняем файл в папку Files в проекте if (Directory.Exists(Server.MapPath("~/Files/")) == false) { Directory.CreateDirectory(Server.MapPath("~/Files/")); } upload.SaveAs(Server.MapPath("~/Files/" + fileName)); //обрабатываем файл после загрузки //0адрес 1площадь_отмостки 2материал_фундамента 3тип_фундамента 4Кап_Ремонт_кровли 5Утеплитель 6ФормаКрыши 7КапРемонтНесущейЧасти 8ВидНесущейЧасти 9 ТипКровли 10 Износ фасада 11 Год ремонта фасада 12 Материал отделки фасада 13 Тип фасада 14 Утепление фасада 15 Балконы, лоджии 16 Количество балконов 17 Количество лоджий 18Тип внутренних стен 19Перекрытия 20 Окна 21 Двери string[] Names = new string[] { "HOME_ADDRESS", "MKDSPECIFIED_14581", "MKDSPECIFIED_15016_1", "MKDSPECIFIED_13516_1", "MKDSPECIFIED_20083", "MKDSPECIFIED_15246_1", "MKDSPECIFIED_12179_1", "MKDSPECIFIED_20078", "MKDSPECIFIED_20152_1", "MKDSPECIFIED_12185_1", "MKDSPECIFIED_20072", "MKDSPECIFIED_20073", "MKDSPECIFIED_13049_1", "MKDSPECIFIED_14549_1", "MKDSPECIFIED_14011_1", "MKDSPECIFIED_20120", "MKDSPECIFIED_11556", "MKDSPECIFIED_13056", "MKDSPECIFIED_16590_1", "MKDSPECIFIED_15087_1", "MKDSPECIFIED_13059_1", "MKDSPECIFIED_12139_1" }; string Error = ""; List <List <string> > excel = ExcelSVNUpload.IMPORT(Server.MapPath("~/Files/" + fileName), Names, out Error, "КонстЭлемОЖФ"); if (excel.Count < 1) { //если нифига не загрузилось то ViewBag.Error = Error; ViewBag.Names = Names; Console.WriteLine("Пустой массив значит файл не загрузился!(он уже удалился)"); return(View("NotUpload")); } else { pro100 = excel.Count; DOMFundament Fundament = new DOMFundament(); DOMRoof Roof = new DOMRoof(); DOMFasad Fasad = new DOMFasad(); DOMRoom Room = new DOMRoom(); List <Adres> Adresa = db.Adres.ToList();// грузим все адреса из БД List <FundamentMaterial> FundamentMat = db.FundamentMaterials.ToList(); List <FundamentType> FundamentType = db.FundamentTypes.ToList(); List <RoofType> RT = db.RoofTypes.ToList(); List <RoofForm> RF = db.RoofForms.ToList(); List <RoofVid> RV = db.RoofVids.ToList(); List <RoofUteplenie> RU = db.RoofUteplenies.ToList(); List <string> save = new List <string>(); List <string> errors = new List <string>(); List <string> saveR = new List <string>(); List <string> errorsR = new List <string>(); List <string> saveRoom = new List <string>(); List <string> errorsRoom = new List <string>(); List <string> saveF = new List <string>(); List <string> errorsF = new List <string>(); //для каждой строки в экселе foreach (List <string> L in excel) { string adr = zachistkaAdresa(L[0]); //сверяем улицу bool go = false; foreach (Adres A in Adresa) { if (A.Adress.Equals(adr)) { //если улица совпала то сохраняем айдишник Fundament.AdresId = A.Id; Roof.AdresId = A.Id; Fasad.AdresId = A.Id; Room.AdresId = A.Id; go = true; break; } } //если нашли адрес то сохраняем все остальные данные if (go) { Fundament.Date = Date; //ищем материал Fundament.MaterialId = 1;//если не найдет Fundament.Ploshad = Convert.ToDecimal(L[1]); foreach (FundamentMaterial FM in FundamentMat) { if (FM.Material.Replace(" ", "").Equals(L[2].Replace(" ", ""))) { Fundament.MaterialId = FM.Id; break; } } //ищем тип фундамента Fundament.TypeId = 1;//если не найдет foreach (FundamentType FT in FundamentType) { if (FT.Type.Replace(" ", "").Equals(L[3].Replace(" ", ""))) { Fundament.TypeId = FT.Id; break; } } //сохраняем фундамент if (Fundament.TypeId != 1 && Fundament.MaterialId != 1) { try { db.DOMFundaments.Add(Fundament); db.SaveChanges(); save.Add(L[0]); } catch (Exception e) { errors.Add(L[0] + "(ошибка сохранения)"); } } else { errors.Add(L[0] + "(нулевые данные)"); } //теперь ищем крыши Roof.Date = Date; Roof.Ploshad = 0; Roof.YearKrovlya = Convert.ToInt16(L[4]); Roof.Year = Convert.ToInt16(L[7]); //Тип крыши Roof.TypeId = 1;//если не найдет foreach (RoofType R in RT) { if (R.Type.Replace(" ", "").Equals(L[9].Replace(" ", ""))) { Roof.TypeId = R.Id; break; } } //Вид крыши Roof.VidId = 1;//если не найдет foreach (RoofVid R in RV) { if (R.Vid.Replace(" ", "").Equals(L[8].Replace(" ", ""))) { Roof.VidId = R.Id; break; } } //Форма крыши Roof.FormId = 1;//если не найдет foreach (RoofForm R in RF) { if (R.Form.Replace(" ", "").Equals(L[6].Replace(" ", ""))) { Roof.FormId = R.Id; break; } } //Утепление крыши Roof.UteplenieId = 1;//если не найдет foreach (RoofUteplenie R in RU) { if (R.Uteplenie.Replace(" ", "").Equals(L[5].Replace(" ", ""))) { Roof.UteplenieId = R.Id; break; } } //если данные по крышам не нулевые то сохраняем if (Roof.UteplenieId + Roof.TypeId + Roof.VidId + Roof.FormId > 4) { try { db.DOMRoofs.Add(Roof); db.SaveChanges(); saveR.Add(L[0]); } catch (Exception e) { db.DOMRoofs.Remove(Roof); errorsR.Add(L[0] + "(ошибка сохранения)"); } } else { errorsR.Add(L[0] + "(нулевые данные)"); } // Теперь ищем фасады 10 Износ фасада 11 Год ремонта фасада 12 Материал отделки фасада 13 Тип фасада 14 Утепление фасада Fasad.Date = Date; Fasad.Iznos = Convert.ToInt16(L[10]); Fasad.Year = Convert.ToInt16(L[11]); Fasad.MaterialId = 1; try { foreach (FasadMaterial F in db.FasadMaterials) { if (F.Material.Replace(" ", "").ToUpper().Equals(L[12].Replace(" ", "").ToUpper())) { Fasad.MaterialId = F.Id; break; } } } catch { } Fasad.UteplenieId = 1; try { foreach (FasadUteplenie F in db.FasadUteplenies) { if (F.Uteplenie.Replace(" ", "").ToUpper().Equals(L[14].Replace(" ", "").ToUpper())) { Fasad.UteplenieId = F.Id; break; } } } catch { } Fasad.TypeId = 1; try { foreach (FasadType F in db.FasadTypes) { if (F.Type.Replace(" ", "").ToUpper().Equals(L[13].Replace(" ", "").ToUpper())) { Fasad.TypeId = F.Id; break; } } } catch { } if (Fasad.UteplenieId + Fasad.TypeId + Fasad.MaterialId > 3) { try { db.DOMFasads.Add(Fasad); db.SaveChanges(); saveF.Add(L[0]); } catch (Exception e) { db.DOMFasads.Remove(Fasad); errorsF.Add(L[0] + "(ошибка сохранения)"); } } else { errorsF.Add(L[0] + "(нулевые данные)"); } //Теперь внутренности помещений 16 Количество балконов 17 Количество лоджий 18Тип внутренних стен 19Перекрытия 20 Окна 21 Двери Room.Date = Date; Room.Lodgi = Convert.ToInt16(L[17]); Room.Balkon = Convert.ToInt16(L[16]); Room.TypeId = 1; try { foreach (RoomType F in db.RoomTypes) { if (F.Type.Replace(" ", "").ToUpper().Equals(L[18].Replace(" ", "").ToUpper())) { Room.TypeId = F.Id; break; } } } catch { } Room.WindowId = 1; try { foreach (RoomWindow F in db.RoomWindows) { if (F.Window.Replace(" ", "").ToUpper().Equals(L[20].Replace(" ", "").ToUpper())) { Room.WindowId = F.Id; break; } } } catch { } Room.OverlapId = 1; try { foreach (RoomOverlap F in db.RoomOverlaps) { if (F.Overlap.Replace(" ", "").ToUpper().Equals(L[19].Replace(" ", "").ToUpper())) { Room.TypeId = F.Id; break; } } } catch { } Room.DoorId = 1; try { foreach (RoomDoor F in db.RoomDoors) { if (F.Door.Replace(" ", "").ToUpper().Equals(L[21].Replace(" ", "").ToUpper())) { Room.DoorId = F.Id; break; } } } catch { } if (Room.DoorId + Room.TypeId + Room.OverlapId + Room.WindowId > 4) { try { db.DOMRooms.Add(Room); db.SaveChanges(); saveRoom.Add(L[0]); } catch (Exception e) { db.DOMRooms.Remove(Room); errorsRoom.Add(L[0] + "(ошибка сохранения)"); } } else { errorsRoom.Add(L[0] + "(нулевые данные)"); } } else { errors.Add(L[0]); } procount++; progress = Convert.ToInt16(50 + procount / pro100 * 50); ProgressHub.SendMessage("Обрабатываем файл ГИС ЖКХ...", progress); if (procount > pro100) { procount = Convert.ToInt32(pro100); } } ViewBag.Save = save; ViewBag.Errors = errors; ViewBag.SaveR = saveR; ViewBag.ErrorsR = errorsR; ViewBag.SaveRoom = saveRoom; ViewBag.ErrorsRoom = errorsRoom; ViewBag.SaveF = saveF; ViewBag.ErrorsF = errorsF; ViewBag.date = Date; ViewBag.file = fileName; //Грузим 2 часть файла!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! upload.SaveAs(Server.MapPath("~/Files/" + fileName)); //обрабатываем файл после загрузки //0адрес 1Износ ГВ 2материал ХВ 3Износ ХВ 4Материал ГВ 5Материал стояков 6КоличествоЭлектровводов 7МатериалВодоотведения 8Год кап. рем. водоотвед. 9Кап. рем. электро. 10Кап. рем. ХВ. 11Кап.рем.ГВ 12Износ отопл. 13Количество вводов отопления. 14.Материал отопления1 15.Материал отопления2 16.Материал труб отопления 17.Износ электро 18.Износ водоотвод Names = new string[] { "HOME_ADDRESS", "MKDSPECIFIED_20114", "MKDSPECIFIED_14778_1", "MKDSPECIFIED_20107", "MKDSPECIFIED_12023_1", "MKDSPECIFIED_12060_1", "MKDSPECIFIED_12545", "MKDSPECIFIED_13412_1", "MKDSPECIFIED_20143", "MKDSPECIFIED_20122", "MKDSPECIFIED_20105", "MKDSPECIFIED_20112", "MKDSPECIFIED_20096", "MKDSPECIFIED_12035", "MKDSPECIFIED_14721_1", "MKDSPECIFIED_14721_2", "MKDSPECIFIED_15055_1", "MKDSPECIFIED_21834", "MKDSPECIFIED_21833" }; Error = ""; excel = ExcelSVNUpload.IMPORT(Server.MapPath("~/Files/" + fileName), Names, out Error, "ВнутрСистемыОЖФ"); if (excel.Count < 1) { //если нифига не загрузилось то ViewBag.Error = Error; ViewBag.Names = Names; Console.WriteLine("Пустой массив значит файл не загрузился!(он уже удалился)"); return(View("NotUpload")); } else { DOMOtoplenie Otoplenie = new DOMOtoplenie(); DOMVodootvod Vodootvod = new DOMVodootvod(); DOMHW HW = new DOMHW(); DOMCW CW = new DOMCW(); DOMElectro Electro = new DOMElectro(); pro100 = excel.Count; Material Material = new Material(); Adresa = db.Adres.ToList(); // грузим все адреса из БД // List<Material> Materials = db.Materials.ToList(); //для каждой строки в экселе foreach (List <string> L in excel) { string adr = zachistkaAdresa(L[0]); //сверяем улицу foreach (Adres A in Adresa) { if (A.Adress.Equals(adr)) { //если улица совпала то сохраняем айдишник bool s = false; try { Otoplenie = db.DOMOtoplenies.Where(x => x.AdresId == A.Id && x.Date.Year == Date.Year && x.Date.Month == Date.Month).First(); s = true; } catch { } Otoplenie.AdresId = A.Id; Otoplenie.IznosOtop = Convert.ToInt32(L[12]); Otoplenie.VvodsOtop = Convert.ToInt32(L[13]); Otoplenie.MaterialOtop1Id = PoiskMateriala(L[14].ToString()); Otoplenie.MaterialOtop2Id = PoiskMateriala(L[15].ToString()); Otoplenie.MaterialOtopTrubId = PoiskMateriala(L[16].ToString()); Otoplenie.MaterialTeploId = PoiskMateriala(L[5].ToString()); Otoplenie.Date = Date; if (s) { db.Entry(Otoplenie).State = EntityState.Modified; db.SaveChanges(); } else { db.DOMOtoplenies.Add(Otoplenie); db.SaveChanges(); } s = false; try { Vodootvod = db.DOMVodootvods.Where(x => x.AdresId == A.Id && x.Date.Year == Date.Year && x.Date.Month == Date.Month).First(); s = true; } catch { } Vodootvod.AdresId = A.Id; Vodootvod.Iznos = Convert.ToInt32(L[18]); Vodootvod.MaterialId = PoiskMateriala(L[7].ToString()); Vodootvod.Remont = Convert.ToInt32(L[8]); Vodootvod.Date = Date; if (s) { db.Entry(Vodootvod).State = EntityState.Modified; db.SaveChanges(); } else { db.DOMVodootvods.Add(Vodootvod); db.SaveChanges(); } s = false; try { HW = db.DOMHWs.Where(x => x.AdresId == A.Id && x.Date.Year == Date.Year && x.Date.Month == Date.Month).First(); s = true; } catch { } HW.AdresId = A.Id; HW.IznosHW = Convert.ToInt32(L[1]); HW.MaterialHWId = PoiskMateriala(L[4].ToString()); HW.RemontHW = Convert.ToInt32(L[11]); HW.Date = Date; if (s) { db.Entry(HW).State = EntityState.Modified; db.SaveChanges(); } else { db.DOMHWs.Add(HW); db.SaveChanges(); } s = false; try { CW = db.DOMCWs.Where(x => x.AdresId == A.Id && x.Date.Year == Date.Year && x.Date.Month == Date.Month).First(); s = true; } catch { } CW.AdresId = A.Id; CW.IznosCW = Convert.ToInt32(L[3]); CW.MaterialCWId = PoiskMateriala(L[2].ToString()); CW.RemontCW = Convert.ToInt32(L[10]); CW.Date = Date; if (s) { db.Entry(CW).State = EntityState.Modified; db.SaveChanges(); } else { db.DOMCWs.Add(CW); db.SaveChanges(); } s = false; try { Electro = db.DOMElectroes.Where(x => x.AdresId == A.Id && x.Date.Year == Date.Year && x.Date.Month == Date.Month).First(); s = true; } catch { } Electro.AdresId = A.Id; Electro.Electrovvods = Convert.ToInt32(L[6]); Electro.IznosElectro = Convert.ToInt32(L[17]); Electro.RemontElectro = Convert.ToInt32(L[9]); Electro.Date = Date; if (s) { db.Entry(Electro).State = EntityState.Modified; db.SaveChanges(); } else { db.DOMElectroes.Add(Electro); db.SaveChanges(); } break; } } //если нашли адрес то сохраняем все остальные данные } return(View("UploadComplete")); } } } return(RedirectToAction("Index")); }
public ActionResult Upload() { string[] rtn = new string[] { "", "" }; if (Request.HttpMethod == "POST") { var files = Request.Files; string failUpload = files.AllKeys.Count() == 0 ? "無任何檔案上傳 !" : ""; var totalSize = Request["fileTsize"].ToInt(); int doneSize = 0; int successCnt = 0; int uploadCnt = files.AllKeys.Count(); for (var i = 0; i < uploadCnt; i++) { var file = files[i]; var fileExt = Path.GetExtension(file.FileName); var fileName = Path.GetFileNameWithoutExtension(file.FileName); //https://www.aspsnippets.com/Articles/Convert-HttpPostedFile-to-Byte-Array-in-ASPNet-using-C-and-VBNet.aspx try { if (AllowExt.Contains(fileExt.Replace(".", "").ToLower())) { using (var scope = new TransactionScope()) { var modDate = Key.FullDateTime(Request[$"fileModDate_{i}"]); var size = file.ContentLength; doneSize += size; Stream fs = file.InputStream; Audio audio = new Audio(); audio.FileName = fileName; audio.FileExt = fileExt; audio.Size = file.ContentLength; audio.OrgCreateDateTime = Key.Now; audio.OrgModifyDateTime = Key.Now; audio.CreateDateTime = Key.Now; audio.ModifyDateTime = Key.Now; db.Insert(audio); var fileStream = file.InputStream; // 分批寫入 using (Stream ftpStream = System.IO.File.Create($"{AudioPath}{audio.AudioNo}{fileExt}")) { byte[] buffer = new byte[1024000]; int read; while ((read = fileStream.Read(buffer, 0, buffer.Length)) > 0) { doneSize += 1024000; ftpStream.Write(buffer, 0, read); } } fileStream.Seek(0, SeekOrigin.Begin); ////取得 Metadata , 影片解析 string crtDateTime = "", modDateTime = ""; try { var directories = ImageMetadataReader.ReadMetadata(fileStream); foreach (var directory in directories) { foreach (var tag in directory.Tags) { var name = tag.Name.ToLower(); var val = tag.Description.Trim(); switch (name) { case "created": crtDateTime = (crtDateTime != "") ? crtDateTime : val; break; case "modified": modDateTime = (modDateTime != "") ? modDateTime : val; break; } } } } catch { } Sql = $"SELECT * FROM Audio WHERE AudioNo = '{audio.AudioNo}' "; var res = db.Query<VideoInfo>(Sql).FirstOrDefault(); res.OrgCreateDateTime = crtDateTime == "" ? DateTime.Parse(Key.FullDateTime(modDate)) : DateTimeFormat(crtDateTime); res.OrgModifyDateTime = modDateTime == "" ? DateTime.Parse(Key.FullDateTime(modDate)) : DateTimeFormat(modDateTime); var percent = ((double)doneSize / (double)totalSize * 100 / 2 + 50); ProgressHub.SendMessage(percent > 100 ? 100 : percent); scope.Complete(); } } } catch (Exception e) { Files.DelFile(AudioPath, fileName, fileExt); Log.ErrLog(e); failUpload = e.Message; } } rtn[0] = failUpload; var obj = new { Files = files.Count, Success = successCnt, Failed = uploadCnt - successCnt }; rtn[1] = obj.ToJson(); } return new JsonNetResult(rtn); }
public ActionResult Upload(HttpPostedFileBase upload, DateTime Date, bool JQ = false) { int progress = 0; double pro100 = 0; int procount = 0; if (upload != null) { HttpCookie cookie = new HttpCookie("My localhost cookie"); //найдем старые данные за этот месяц и заменим их не щадя List <UEV> dbUEV = db.UEVs.Where(x => x.Date.Year == Date.Year && x.Date.Month == Date.Month).ToList(); pro100 = dbUEV.Count; foreach (UEV S in dbUEV) { try { db.UEVs.Remove(S); db.SaveChanges(); procount++; progress = Convert.ToInt16(procount / pro100 * 100); if (procount > pro100) { procount = Convert.ToInt32(pro100); } ProgressHub.SendMessage("Удаляем старые данные...", progress); } catch (Exception e) { Console.WriteLine(e.Message); } } //call this method inside your working action ProgressHub.SendMessage("Инициализация и подготовка...", 0); // получаем имя файла string fileName = Path.GetFileName(upload.FileName); // сохраняем файл в папку Files в проекте if (Directory.Exists(Server.MapPath("~/Files/")) == false) { Directory.CreateDirectory(Server.MapPath("~/Files/")); } upload.SaveAs(Server.MapPath("~/Files/" + fileName)); //обрабатываем файл после загрузки string[] Names = new string[] { "Kp", "№прибора", "Тариф", "Общийотпуск", "ИтогосуммасНДСруб.", "Тариф", "Общийотпуск", "ИтогосуммасНДСруб.", "Тариф", "Общийотпуск", "ИтогосуммасНДСруб." }; string Error = ""; List <List <string> > excel = ExcelSVNUpload.IMPORT(Server.MapPath("~/Files/" + fileName), Names, out Error); List <string> Errors = new List <string>(); List <string> SmallErrors = new List <string>(); List <string> Codes = new List <string>(); //коды УЭВ все построчно для сверки с таблицей List <string> Teplos = new List <string>(); //рубли тепло List <string> HWs = new List <string>(); //рубли гв if (excel.Count < 1) { //если нифига не загрузилось то ViewBag.Error = Error; ViewBag.Names = Names; return(View("NotUpload")); } else { procount = 0; pro100 = excel.Count; UEV UEVKA = new UEV(); List <Adres> Adresa = db.Adres.ToList();// грузим все адреса из БД //для каждой строки в экселе foreach (List <string> L in excel) { bool EstName = false; int CodUEV = 0; Codes.Add(L[0]); Teplos.Add(L[4]); HWs.Add(L[7]); try { CodUEV = Convert.ToInt32(L[0]); } catch { SmallErrors.Add(L[0] + ";" + L[1] + ";" + L[2] + " Ошибка конвертации кода"); } if (CodUEV != 0) { foreach (Adres A in Adresa) { if (A.UEV == CodUEV) { //если в массиве адресов есть адрес из строчки то сохраняем айдишник EstName = true; UEVKA.AdresId = A.Id; UEVKA.KodUEV = A.UEV; UEVKA.Date = Date; UEVKA.Name = ""; break; } } //если имени нет в списке то и сохранять не будем if (EstName) { int Pribor = 0; decimal OtEnergyGkal = 0; decimal OtEnergyRub = 0; decimal HwEnergyGkal = 0; decimal HwEnergyRub = 0; decimal HwVodaM3 = 0; decimal HwVodaRub = 0; try { Pribor = Convert.ToInt32(L[1]); } catch (Exception e) { Console.WriteLine("Не преобразуется в инт " + UEVKA.AdresId + " " + e.Message); SmallErrors.Add(L[0] + ";" + L[1] + ";" + L[2] + " Не преобразуется ПУ"); } try { OtEnergyGkal = Convert.ToDecimal(L[3]); } catch (Exception e) { Console.WriteLine("Не преобразуется в децимал " + UEVKA.AdresId + " " + e.Message); SmallErrors.Add(L[0] + ";" + L[1] + ";" + L[2] + " Не преобразуется отопление энергия объём"); } try { OtEnergyRub = Convert.ToDecimal(L[4]); } catch (Exception e) { Console.WriteLine("Не преобразуется в децимал " + UEVKA.AdresId + " " + e.Message); SmallErrors.Add(L[0] + ";" + L[1] + ";" + L[2] + " Не преобразуется отопление энергия руб."); } try { HwEnergyGkal = Convert.ToDecimal(L[6]); } catch (Exception e) { Console.WriteLine("Не преобразуется в децимал " + UEVKA.AdresId + " " + e.Message); SmallErrors.Add(L[0] + ";" + L[1] + ";" + L[2] + " Не преобразуется ГВ энергия"); } try { HwEnergyRub = Convert.ToDecimal(L[7]); } catch (Exception e) { Console.WriteLine("Не преобразуется в децимал " + UEVKA.AdresId + " " + e.Message); SmallErrors.Add(L[0] + ";" + L[1] + ";" + L[2] + " Не преобразуется ГВ энергия руб"); } try { HwVodaM3 = Convert.ToDecimal(L[9]); } catch (Exception e) { Console.WriteLine("Не преобразуется в децимал " + UEVKA.AdresId + " " + e.Message); SmallErrors.Add(L[0] + ";" + L[1] + ";" + L[2] + " Не преобразуется ГВ объём"); } try { HwVodaRub = Convert.ToDecimal(L[10]); } catch (Exception e) { Console.WriteLine("Не преобразуется в децимал " + UEVKA.AdresId + " " + e.Message); SmallErrors.Add(L[0] + ";" + L[1] + ";" + L[2] + " Не преобразуется ГВ руб"); } UEVKA.Pribor = Pribor; UEVKA.OtEnergyGkal = OtEnergyGkal; UEVKA.OtEnergyRub = OtEnergyRub; UEVKA.HwEnergyGkal = HwEnergyGkal; UEVKA.HwEnergyRub = HwEnergyRub; UEVKA.HwVodaM3 = HwVodaM3; UEVKA.HwVodaRub = HwVodaRub; try { db.UEVs.Add(UEVKA); db.SaveChanges(); } catch (Exception e) { Console.WriteLine("Ошибка записи в базу данных " + e.Message); SmallErrors.Add(L[0] + ";" + L[1] + ";" + L[2] + " Не смогли сохранить в БД адрес ИД=" + UEVKA.AdresId); } } else {//если имени нет в списке, значит нужно вывести предупреждение чтобы часами не искать if (CodUEV != 0) { if (Errors.Count == 0) { Errors.Add("Найдены коды, отсутствующие в БД!"); } Errors.Add("Код=" + CodUEV.ToString() + " не найден в БД."); } } } procount++; progress = Convert.ToInt16(50 + procount / pro100 * 50); ProgressHub.SendMessage("Обрабатываем файл УЭВ...", progress); if (procount > pro100) { procount = Convert.ToInt32(pro100); } } List <string> Adr = Adresa.Select(x => x.Adress).ToList(); for (int a = 0; a < Adr.Count; a++) { Adr[a] = Adr[a].Replace(" ", "").ToUpper(); } if (Errors.Count == 0) { Errors.Add("Ошибок загрузки нет!"); } ViewBag.VsegoUEV = db.UEVs.Where(x => x.Date.Year == Date.Year && x.Date.Month == Date.Month).Count(); //ViewBag.Services = Services; ViewBag.UEV = db.UEVs.Where(x => x.Date == Date).Include(z => z.Adres.Adress).Select(y => y.Adres.Adress + "ОТ(энергия руб.)=" + y.OtEnergyRub + " ГВ(энергия руб.)=" + y.HwEnergyRub + "ГВ(теплоноситель руб.)=" + y.HwVodaRub).ToList(); ViewBag.date = Date; ViewBag.file = fileName; ViewBag.Gkal = db.UEVs.Where(x => x.Date.Year == Date.Year && x.Date.Month == Date.Month).Sum(y => y.OtEnergyGkal); ViewBag.M3Water = db.UEVs.Where(x => x.Date.Year == Date.Year && x.Date.Month == Date.Month).Sum(y => y.HwVodaM3); ViewBag.GkalWater = db.UEVs.Where(x => x.Date.Year == Date.Year && x.Date.Month == Date.Month).Sum(y => y.HwEnergyGkal); ViewBag.Errors = Errors; ViewBag.Codes = Codes; ViewBag.HWs = HWs; ViewBag.Teplos = Teplos; ViewBag.SmallErrors = SmallErrors; if (JQ == false) { return(View("UploadComplete")); } else { Errors.Add(Error); return(Json(Errors)); } } } if (!JQ) { return(RedirectToAction("Index")); } else { return(Json("Файл не выбран! Выберните файл EXCEL формата XLS или XLSX НЕ CSV!!!")); } }
public ActionResult Upload(HttpPostedFileBase upload, DateTime Date, bool JQ = false) { int progress = 0; double pro100 = 0; int procount = 0; if (upload != null) { //найдем старые данные за этот месяц и заменим их не щадя List <Arendator> dbArendator = db.Arendators.Where(x => x.Date.Year == Date.Year && x.Date.Month == Date.Month).ToList(); List <string> AR = new List <string>(); pro100 = dbArendator.Count; try { db.Arendators.RemoveRange(dbArendator); db.SaveChanges(); procount++; progress = Convert.ToInt16(procount / pro100 * 100); if (procount > pro100) { procount = Convert.ToInt32(pro100); } ProgressHub.SendMessage("Удаляем старые данные...", progress); } catch (Exception e) { Console.WriteLine(e.Message); } //call this method inside your working action ProgressHub.SendMessage("Инициализация и подготовка...", 0); // получаем имя файла string fileName = System.IO.Path.GetFileName(upload.FileName); // сохраняем файл в папку Files в проекте if (Directory.Exists(Server.MapPath("~/Files/")) == false) { Directory.CreateDirectory(Server.MapPath("~/Files/")); } upload.SaveAs(Server.MapPath("~/Files/" + fileName)); //обрабатываем файл после загрузки string OpenText = Server.MapPath("~/Files/" + fileName); string Vkladka = Date.Month.ToString();//укажем номер вкладки List <List <string> > Dannie; int[] X = new int[] { 1, 2, 3, 4, 6, 8, 10 }; string[] Names = new string[] { "адрес", "№дома", "теплотаотопл, гкалфактич", "площадь", "теплота1/12(гкал,)", "гвкуб,м", "хвкуб,м" }; string Error; List <List <string> > excel = ExcelSVNUpload.IMPORT(Server.MapPath("~/Files/" + fileName), Names, out Error, Vkladka, X); if (excel.Count < 1) { ViewBag.Error = Error; ViewBag.Names = Names; //если нифига не загрузилось то Console.WriteLine("Пустой массив значит файл не загрузился!(он уже удалился)"); if (!JQ) { return(View("NotUpload")); } else { return(Json(Error)); } } string HomeAdress; string ADRESS = ""; string CODE = ""; progress = 0; pro100 = excel.Count; procount = 0; for (int i = 0; i < excel.Count; i++) { Arendator Ar = new Arendator(); bool swsave = false; // for (int j = 0; j < Dannie[i].Count; j++) //{ if (excel[i][1] != null) { excel[i][1] = excel[i][1].Replace(" ", ""); } if (excel[i][1] != null && excel[i][1] != "")//Когда дошли до номера дома значит это дом и в нем есть арендаторы { decimal ploshad = 0; try { ploshad = Convert.ToDecimal(excel[i][3]); } catch { } decimal teplota12 = 0; try { teplota12 = Convert.ToDecimal(excel[i][4]); } catch { } string adr = excel[i][0].ToString(); adr = adr.ToUpper(); adr = adr.Replace("ПР.", ""); adr = adr.Replace("М.ДЖАЛИЛЯ", "МУСЫ ДЖАЛИЛЯ"); if (adr.Equals("ШЛЮЗОВАЯ")) { } int ii = adr.IndexOf(" "); if (ii == adr.Length - 1) { adr = adr.Replace(" ", ""); } if (ii < adr.Length - 1 && ii != -1) { // adr = adr.Replace(" ", ""); adr = adr.Replace(",", ""); string s1 = adr.Remove(ii); s1 = s1.Replace(",", ""); s1 = s1.Replace(" ", ""); string s2 = adr.Remove(0, ii); s2 = s2.Replace(",", ""); s2 = s2.Replace(" ", ""); adr = s1 + " " + s2; } string adr2 = excel[i][1].ToString(); adr += " " + adr2; //сохраняем в формате [ХХХХ 123] adr = adr.ToUpper(); adr = adr.Replace(",", "").Replace(" ", "").Replace("A", "А"); //Английскую в русскую А int AdrId = 0; try { AdrId = db.Adres.Where(x => x.Adress.Equals(adr)).Select(y => y.Id).First();//сохранили адрес } catch { continue; }//если адрес не нашли то пропустим данный шаг в цикле string Adr = ""; if (AdrId != 0 && ploshad != 0) { Adres A = db.Adres.Where(x => x.Id == AdrId).First(); A.Ploshad = ploshad; if (teplota12 != 0) { A.Teplota12 = teplota12; } db.Entry(A).State = EntityState.Modified; db.SaveChanges(); Adr = A.Adress; } Ar.AdresId = AdrId;//пишем в адрес Ar.Date = Date; int j = i + 1; while (j < excel.Count && excel[j][1] == "0") { try { Ar.Name = excel[j][0]; } catch { } try { Ar.Teplota = Convert.ToDecimal(excel[j][2]); } catch { } try { Ar.Ploshad = Convert.ToDecimal(excel[j][3]); } catch { } try { Ar.Teplota12 = Convert.ToDecimal(excel[j][4]); } catch { } try { Ar.HotWater = Convert.ToDecimal(excel[j][5]); } catch { } try { Ar.ColdWater = Convert.ToDecimal(excel[j][6]); } catch { } db.Arendators.Add(Ar); db.SaveChanges(); AR.Add(Adr + ";" + Ar.Name + ";" + Ar.HotWater); j++; } i = j - 1; } procount++; progress = Convert.ToInt16(i / pro100 * 100); if (procount > pro100) { procount = Convert.ToInt32(pro100); } ProgressHub.SendMessage("Обрабатываем файл аренды...", progress); } if (excel.Count < 1) { //если нифига не загрузилось то Console.WriteLine("Пустой массив значит файл не загрузился!(он уже удалился)"); if (!JQ) { return(View("NotUpload")); } else { return(Json(Error)); } } else { pro100 = excel.Count; Arendator ArendatorKA = new Arendator(); List <Adres> Adresa = db.Adres.ToList();// грузим все адреса из БД List <TableService> TSdb = db.TableServices.ToList(); List <List <string> > Services = new List <List <string> >(); //один раз преобразуем таблицу сервисов для сравнения чтоб в цикле не вызывать int ser = 0; foreach (TableService T in TSdb) { T.Type = T.Type.Replace(" ", "").ToUpper(); Services.Add(new List <string>()); Services[ser].Add(T.Type);//для проверки сохраняем ser++; } //для каждой строки в экселе List <string> Adr = Adresa.Select(x => x.Adress).ToList(); for (int a = 0; a < Adr.Count; a++) { Adr[a] = Adr[a].Replace(" ", "").ToUpper(); } ViewBag.VsegoServices = TSdb.Count; ViewBag.Services = Services; ViewBag.date = Date; ViewBag.file = fileName; ViewBag.AR = AR; if (!JQ) { return(View("UploadComplete")); } else { return(Json("Ошибок загрузки нет!")); } } } if (!JQ) { return(RedirectToAction("NotUpload")); } else { return(Json("Файл не выбран или неверный формат файла.")); } }
public async void Poisk(List <List <string> > excel, DateTime Date, List <Adres> Adresa) { int progress = 0; double pro100 = 0; int procount = 0; pro100 = excel.Count; IPU IPUKA = new IPU(); List <string> NoAdress = new List <string>(); //для каждой строки в экселе int lastadres = 0; int summ = 0; decimal summnorm = 0; decimal summschetchik = 0; foreach (List <string> L in excel) { bool EstService = false; string adr = L[0].Replace(" ", "").ToUpper(); decimal Normativ = 0; decimal Schetchik = 0; bool ignore = false; try { Normativ = Math.Round(Convert.ToDecimal(L[1].Replace(",", ".")), 2); summnorm += Normativ; } catch { } try { Schetchik = Math.Round(Convert.ToDecimal(L[2].Replace(",", ".")), 2); summschetchik += Schetchik; } catch { } if (Normativ + Schetchik == 0) { ignore = true; summ++; } if (!ignore)//если ненулевые показания { bool nashli = false; for (int A = lastadres; A < Adresa.Count; A++) { if (Adresa[A].Adress.Equals(adr))//и адрес совпал { //если в массиве адресов есть адрес из строчки то сохраняем айдишник IPUKA.AdresId = Adresa[A].Id; lastadres = A; nashli = true; IPUKA.Normativ = Normativ; IPUKA.Schetchik = Schetchik; IPUKA.NomerSchetchika = L[3]; IPUKA.Date = Date; using (WorkContext db = new WorkContext()) { try//сохраняем в БД { db.IPUs.Add(IPUKA); await db.SaveChangesAsync(); } catch (Exception e) { Console.WriteLine("Ошибка записи в базу данных " + e.Message); } } // IPUKA.Name = ""; break; } } if (!nashli && lastadres > 0)//если адрес не нашли то продолжаем поиск с начала списка { for (int A = 0; A < lastadres; A++) { if (Adresa[A].Adress.Equals(adr))//и адрес совпал { //если в массиве адресов есть адрес из строчки то сохраняем айдишник IPUKA.AdresId = Adresa[A].Id; lastadres = A; nashli = true; IPUKA.Normativ = Normativ; IPUKA.Schetchik = Schetchik; IPUKA.NomerSchetchika = L[3]; using (WorkContext db = new WorkContext()) { try//сохраняем в БД { db.IPUs.Add(IPUKA); db.SaveChanges(); } catch (Exception e) { Console.WriteLine("Ошибка записи в базу данных " + e.Message); } } // IPUKA.Name = ""; break; } } } if (!nashli) { NoAdress.Add(adr + "Не найден"); } } procount++; progress = Convert.ToInt16(50 + procount / pro100 * 50); ProgressHub.SendMessage("Обрабатываем файл ИПУ...", progress); if (procount > pro100) { procount = Convert.ToInt32(pro100); } } List <string> Adr = Adresa.Select(x => x.Adress).ToList(); for (int a = 0; a < Adr.Count; a++) { Adr[a] = Adr[a].Replace(" ", "").ToUpper(); } }
public void FastPoisk(List <List <string> > excel, DateTime Date, List <Adres> Adresa, List <TableService> Services) { //упрощаем поиск List <Adres2> A2 = new List <Adres2>(); foreach (Adres A in Adresa) { Adres2 AA = new Adres2(); AA.Adres = A.Adress; AA.id = A.Id; A2.Add(AA); } int progress = 0; double pro100 = 0; int procount = 0; pro100 = excel.Count; CultureInfo culture = new CultureInfo("en-US"); //для каждой строки в экселе int counter = 0; foreach (List <string> L in excel) { OBSD OBSDKA = new OBSD(); counter++; bool EstService = false; string ser = L[2].Replace(" ", "").ToUpper(); string adr = L[0].Replace(" ", "").ToUpper(); decimal Saldo = 0; decimal Nach = 0; bool ignore = false; try { Saldo = Convert.ToDecimal(L[5], culture); } catch { } try { Nach = Convert.ToDecimal(L[3], culture); } catch { } if (Nach == 0 && Saldo == 0) { ignore = true; } if (!ignore)//Если не игнорить то ищем { try { OBSDKA.TableServiceId = Services.Where(x => x.Type.Equals(ser)).Select(x => x.Id).First(); EstService = true; } catch { } // foreach (TableService S in Services) // { // if (S.Type.Equals(ser)) // { // OBSDKA.TableServiceId = S.Id; // EstService = true; // break; // } // } } if (EstService)//если есть такой сервис { try { OBSDKA.AdresId = A2.Where(x => x.Adres.Equals(adr)).Select(x => x.id).First(); int licevoi = 0; try { licevoi = Convert.ToInt32(L[1]); } catch { } OBSDKA.Licevoi = licevoi; OBSDKA.Date = Date; OBSDKA.Nachislenie = Nach; OBSDKA.Saldo = Saldo; OBSDKA.FIO = L[4]; OBSDKA.Kvartira = L[6]; db.OBSDs.Add(OBSDKA); db.SaveChanges(); } catch { } } procount++; progress = Convert.ToInt16(50 + procount / pro100 * 50); ProgressHub.SendMessage("Обрабатываем файл ОБСД...", progress); if (procount > pro100) { procount = Convert.ToInt32(pro100); } } List <string> Adr = Adresa.Select(x => x.Adress).ToList(); for (int a = 0; a < Adr.Count; a++) { Adr[a] = Adr[a].Replace(" ", "").ToUpper(); } }
/// <summary> /// 上傳圖片 /// </summary> /// <returns></returns> public ActionResult Upload() { string[] rtn = new string[] { "", "" }; if (Request.HttpMethod == "POST") { var files = Request.Files; string failUpload = files.AllKeys.Count() == 0 ? "無任何檔案上傳 !" : ""; var totalSize = Request["fileTsize"].ToInt(); var albumNo = Request["album"].FixNull(); var addList = new List <int>(); // 要加入相簿的相片 int doneSize = 0; int successCnt = 0; int uploadCnt = files.AllKeys.Count(); for (var i = 0; i < uploadCnt; i++) { var file = files[i]; var fileExt = Path.GetExtension(file.FileName); var isPass = true; //https://www.aspsnippets.com/Articles/Convert-HttpPostedFile-to-Byte-Array-in-ASPNet-using-C-and-VBNet.aspx if (AllowExt.Contains(fileExt.Replace(".", "").ToLower())) { var modDate = Key.FullDateTime(Request[$"fileModDate_{i}"]); var fileName = Path.GetFileNameWithoutExtension(file.FileName); var size = file.ContentLength; doneSize += size; Stream fs = file.InputStream; Photo img = new Photo(); img.FileName = fileName; img.FileExt = fileExt; img.Width = 0; img.Height = 0; img.OrgCreateDateTime = Key.Now; img.OrgModifyDateTime = Key.Now; img.CreateDateTime = Key.Now; img.ModifyDateTime = Key.Now; if (db.Insert(img) > 0) { var imgInfo = GetExIf(fs, img.ImgNo.ToString(), fileExt); if (imgInfo["Error"] == "") { Sql = $"SELECT * FROM Photo WHERE ImgNo = '{img.ImgNo}' "; var res = db.Query <Photo>(Sql).FirstOrDefault(); res.Width = imgInfo["Width"].ToInt(); res.Height = imgInfo["Height"].ToInt(); // 無拍攝日期, 就用檔案最後更新日期 res.OrgCreateDateTime = DateTime.Parse((imgInfo["OrgCreatDateTime"] == "") ? modDate : imgInfo["OrgCreatDateTime"]); res.OrgModifyDateTime = DateTime.Parse((imgInfo["OrgModifyDateTime"] == "") ? modDate : imgInfo["OrgModifyDateTime"]); if (db.Update(res)) { addList.Add(img.ImgNo); successCnt++; isPass = true; } } else { isPass = false; failUpload += fileName; } if (!isPass) { Files.DelFile(ImgPath, img.ImgNo, fileExt); Files.DelFile(ImgThbPath, img.ImgNo, fileExt); db.Delete(new Photo { ImgNo = img.ImgNo }); } } var percent = ((double)doneSize / (double)totalSize * 100 / 2 + 50); ProgressHub.SendMessage(percent > 100 ? 100 : percent); } } rtn[0] = failUpload; var obj = new { Files = files.Count, Success = successCnt, Failed = uploadCnt - successCnt }; rtn[1] = obj.ToJson(); if (rtn[0] == "" && albumNo != "" && addList.Count() > 0) { // 加入相簿 Album a = db.Query <Album>($" SELECT * FROM Album WHERE AlbumNo= '{albumNo.FixSQL()}' ").FirstOrDefault(); a.ImgNo = $"{a.ImgNo},{addList.ToArray().Join(",")}".Trim(','); // 設定背景 if (string.IsNullOrEmpty(a.BgImg)) { var bgImgNo = a.ImgNo.Split(',')[0].Replace("'", "").Trim(','); Sql = $"SELECT CAST(ImgNo AS varchar) + FileExt FileName FROM Photo WHERE ImgNo = '{bgImgNo}' "; a.BgImg = db.Query <string>(Sql).FirstOrDefault(); } a.ModifyDateTime = Key.Now; db.Update(a); } } return(new JsonNetResult(rtn)); }
public async void Poisk(List <List <string> > excel, DateTime Date, List <Adres> Adresa, List <TableService> Services) { int progress = 0; double pro100 = 0; int procount = 0; pro100 = excel.Count; OBSD OBSDKA = new OBSD(); CultureInfo culture = new CultureInfo("en-US"); //для каждой строки в экселе int lastadres = 0; int counter = 0; foreach (List <string> L in excel) { counter++; bool EstService = false; string ser = L[2].Replace(" ", "").ToUpper(); string adr = L[0].Replace(" ", "").ToUpper(); decimal Saldo = 0; decimal Nach = 0; bool ignore = false; try { Saldo = Convert.ToDecimal(L[5], culture); } catch { } try { Nach = Convert.ToDecimal(L[3], culture); } catch { } if (Nach == 0 && Saldo == 0) { ignore = true; } if (!ignore)//Если не игнорить то ищем { try { OBSDKA.TableServiceId = Services.Where(x => x.Type.Equals(ser)).Select(x => x.Id).First(); EstService = true; } catch { } // foreach (TableService S in Services) // { // if (S.Type.Equals(ser)) // { // OBSDKA.TableServiceId = S.Id; // EstService = true; // break; // } // } } if (EstService)//если есть такой сервис { bool nashli = false; for (int A = lastadres; A < Adresa.Count; A++) { if (Adresa[A].Adress.Equals(adr))//и адрес совпал { //если в массиве адресов есть адрес из строчки то сохраняем айдишник OBSDKA.AdresId = Adresa[A].Id; lastadres = A; nashli = true; int licevoi = 0; try { licevoi = Convert.ToInt32(L[1]); } catch { } OBSDKA.Licevoi = licevoi; OBSDKA.Date = Date; OBSDKA.Nachislenie = Nach; OBSDKA.Saldo = Saldo; OBSDKA.FIO = L[4]; OBSDKA.Kvartira = L[6]; using (WorkContext db = new WorkContext()) { try//сохраняем в БД { db.OBSDs.Add(OBSDKA); await db.SaveChangesAsync(); } catch (Exception e) { Console.WriteLine("Ошибка записи в базу данных " + e.Message); } } // OBSDKA.Name = ""; break; } } if (!nashli && lastadres > 0)//если адрес не нашли то продолжаем поиск с начала списка { for (int A = 0; A < lastadres; A++) { if (Adresa[A].Adress.Equals(adr))//и адрес совпал { //если в массиве адресов есть адрес из строчки то сохраняем айдишник OBSDKA.AdresId = Adresa[A].Id; lastadres = A; nashli = true; int licevoi = 0; try { licevoi = Convert.ToInt32(L[1]); } catch { } OBSDKA.Licevoi = licevoi; OBSDKA.Date = Date; OBSDKA.Nachislenie = Nach; OBSDKA.Saldo = Saldo; OBSDKA.FIO = L[4]; OBSDKA.Kvartira = L[6]; try//сохраняем в БД { db.OBSDs.Add(OBSDKA); await db.SaveChangesAsync(); } catch (Exception e) { Console.WriteLine("Ошибка записи в базу данных " + e.Message); } // OBSDKA.Name = ""; break; } } } } procount++; progress = Convert.ToInt16(50 + procount / pro100 * 50); ProgressHub.SendMessage("Обрабатываем файл ОБСД...", progress); if (procount > pro100) { procount = Convert.ToInt32(pro100); } } List <string> Adr = Adresa.Select(x => x.Adress).ToList(); for (int a = 0; a < Adr.Count; a++) { Adr[a] = Adr[a].Replace(" ", "").ToUpper(); } }
public ActionResult Upload(HttpPostedFileBase upload) { int progress = 0; double pro100 = 0; int procount = 0; if (upload != null) { //call this method inside your working action ProgressHub.SendMessage("Инициализация и подготовка...", 0); // получаем имя файла string fileName = System.IO.Path.GetFileName(upload.FileName); // сохраняем файл в папку Files в проекте if (Directory.Exists(Server.MapPath("~/Files/")) == false) { Directory.CreateDirectory(Server.MapPath("~/Files/")); } upload.SaveAs(Server.MapPath("~/Files/" + fileName)); //обрабатываем файл после загрузки string[] Names = new string[] { "Adres", "Code" }; string Error = ""; List <List <string> > excel = ExcelSVNUpload.IMPORT(Server.MapPath("~/Files/" + fileName), Names, out Error); if (excel.Count < 1) { //если нифига не загрузилось то ViewBag.Error = Error; ViewBag.Names = Names; Console.WriteLine("Пустой массив значит файл не загрузился!(он уже удалился)"); return(View("NotUpload")); } else { pro100 = excel.Count; procount = 0; List <Adres> Adresdb = db.Adres.ToList(); foreach (List <string> e in excel) { string E = e[0].Replace(" ", ""); foreach (Adres A in Adresdb) { if (E.Equals(A.Adress.Replace(" ", ""))) {//модифицируем записи в ДБ A.UEV = Convert.ToInt16(e[1]); db.Entry(A).State = EntityState.Modified; db.SaveChanges(); break; } } procount++; progress = Convert.ToInt16(50 + procount / pro100 * 50); ProgressHub.SendMessage("Обрабатываем файл, подождите чуток ...", progress); if (procount > pro100) { procount = Convert.ToInt32(pro100); } } } } return(View("UploadComplete")); }
public async void Poisk(List <List <string> > excel, DateTime Date, List <Adres> Adresa) { int progress = 0; double pro100 = 0; int procount = 0; pro100 = excel.Count; OPU OPUKA = new OPU(); //для каждой строки в экселе int lastadres = 0; foreach (List <string> L in excel) { if (L[0].Contains("Правды")) { } string adr = L[0].Replace("пр.", "").Replace("М.", "МУСЫ"); adr = adr.Replace(" ", "").ToUpper() + L[1].Replace(" ", "").Replace("A", "А").ToUpper();//адрес составной из улицы и дома // "адрес"0, "№дом"1, "теплотаобщаясОПУ(Гкал)"2, "РасходГВСсОПУкуб,м"3, "РасходХВСкуб,мзамесяц"4, "РУБОТОПЛЕНИЕ"5, "РУБГОР.ВОДА"6, "РУБХОЛ.ВОДА"7 decimal OtopGkal = 0; decimal OtopRub = 0; decimal GWM3 = 0; decimal GWRub = 0; decimal HWM3 = 0; decimal HWRub = 0; string Primech = ""; string Primech2 = ""; bool ignore = false; try { OtopGkal = Math.Round(Convert.ToDecimal(L[2].Replace(",", ".")), 2); if (OtopGkal < 0) { OtopGkal = 0; } OtopRub = Math.Round(Convert.ToDecimal(L[5].Replace(",", ".")), 2); if (OtopRub < 0) { OtopRub = 0; } } catch { if (L[2] != "") { Primech = L[2].Replace(" ", ""); } } try { GWM3 = Math.Round(Convert.ToDecimal(L[3].Replace(",", ".")), 2); if (GWM3 < 0) { GWM3 = 0; } GWRub = Math.Round(Convert.ToDecimal(L[6].Replace(",", ".")), 2); if (GWRub < 0) { GWRub = 0; } } catch { } try { HWM3 = Math.Round(Convert.ToDecimal(L[4].Replace(",", ".")), 2); if (HWM3 < 0) { HWM3 = 0; } HWRub = Math.Round(Convert.ToDecimal(L[7].Replace(",", ".")), 2); if (HWRub < 0) { HWRub = 0; } } catch { if (L[4] != "") { Primech2 = L[4].Replace(" ", ""); HWM3 = 0; HWRub = 0; } } if (OtopGkal + GWM3 + HWM3 == 0) { ignore = true; } if (!ignore)//если ненулевые показания { bool nashli = false; for (int A = lastadres; A < Adresa.Count; A++) { if (Adresa[A].Adress.Equals(adr))//и адрес совпал { //если в массиве адресов есть адрес из строчки то сохраняем айдишник OPUKA.AdresId = Adresa[A].Id; lastadres = A; nashli = true; OPUKA.GWM3 = GWM3; OPUKA.HWM3 = HWM3; OPUKA.OtopGkal = OtopGkal; OPUKA.GWRub = GWRub; OPUKA.HWRub = HWRub; OPUKA.OtopRub = OtopRub; string prim = ""; if (Primech.Length > Primech2.Length) { prim = Primech; } else { //если в примечании сохранено число -25323563.... что означает не считанные данные, то сохраняем как ремонт (обычно это значит ремонт) if (Primech2.Contains("-2")) { Primech2 = "*"; } prim = Primech2; } OPUKA.Primech = prim; OPUKA.Date = Date; using (WorkContext db = new WorkContext()) { try//сохраняем в БД { db.OPUs.Add(OPUKA); await db.SaveChangesAsync(); } catch (Exception e) { Console.WriteLine("Ошибка записи в базу данных " + e.Message); } } // OPUKA.Name = ""; break; } } if (!nashli && lastadres > 0)//если адрес не нашли то продолжаем поиск с начала списка { for (int A = 0; A < lastadres; A++) { if (Adresa[A].Adress.Equals(adr))//и адрес совпал { //если в массиве адресов есть адрес из строчки то сохраняем айдишник OPUKA.AdresId = Adresa[A].Id; lastadres = A; nashli = true; OPUKA.GWM3 = GWM3; OPUKA.HWM3 = HWM3; OPUKA.OtopGkal = OtopGkal; OPUKA.GWRub = GWRub; OPUKA.HWRub = HWRub; OPUKA.OtopRub = OtopRub; OPUKA.Primech = Primech; OPUKA.Date = Date; using (WorkContext db = new WorkContext()) { try//сохраняем в БД { db.OPUs.Add(OPUKA); db.SaveChanges(); } catch (Exception e) { Console.WriteLine("Ошибка записи в базу данных " + e.Message); } } // OPUKA.Name = ""; break; } } } } procount++; progress = Convert.ToInt16(50 + procount / pro100 * 50); ProgressHub.SendMessage("Обрабатываем файл ОПУ...", progress); if (procount > pro100) { procount = Convert.ToInt32(pro100); } } List <string> Adr = Adresa.Select(x => x.Adress).ToList(); for (int a = 0; a < Adr.Count; a++) { Adr[a] = Adr[a].Replace(" ", "").ToUpper(); } }
public async Task <ActionResult> Upload(MusicUploadViewModel model) { string storageUrl = "musicproject-9f3c5.appspot.com"; string message = "Save failed"; string date = DateTime.Now.ToString("yyyyMMddHHmmssffff"); try { var stream1 = model.ImageBase.InputStream; var task1 = new FirebaseStorage(storageUrl) .Child("MusicProject") .Child("Images") .Child(date + model.ImageBase.FileName) .PutAsync(stream1); task1.Progress.ProgressChanged += (s, e) => ProgressHub.SendMessage("Uploading Image ... (" + Math.Round((e.Position * 1.0 / e.Length * 100), 0) + "%)"); var stream2 = model.MusicBase.InputStream; var task2 = new FirebaseStorage(storageUrl) .Child("MusicProject") .Child("Musics") .Child(date + model.MusicBase.FileName) .PutAsync(stream2); task2.Progress.ProgressChanged += (s, e) => ProgressHub.SendMessage("Uploading Music ... (" + Math.Round((e.Position * 1.0 / e.Length * 100), 0) + "%)"); MusicEntities en = new MusicEntities(); var name = System.Web.HttpContext.Current.User.Identity.Name; var login = en.Logins.FirstOrDefault(a => a.Username.Equals(name)); User userLogin = null; if (login != null) { userLogin = login.User; } string imageUrl = await task1; string musicUrl = await task2; var music = new MusicWebApp.Models.Music { Name = model.Name, AlbumId = model.AlbumId, Image = imageUrl, Link = musicUrl, SingerId = model.SingerId, UserId = userLogin.Id, GenresId = model.GenresId, Pending = false, UploadDate = DateTime.Now, C_View = 0, }; en.Musics.Add(music); en.SaveChanges(); message = "Save successful"; } catch (Exception ex) { return(Json(new { succress = false, message = ex.Message })); } return(Json(new { success = true, message = message })); }
public ActionResult Upload(HttpPostedFileBase upload, HttpPostedFileBase upload2, DateTime Date) { int progress = 0; double pro100 = 0; int procount = 0; if (upload != null) { HttpCookie cookie = new HttpCookie("My localhost cookie"); //найдем старые данные за этот месяц и заменим их не щадя List <Musor> dbMusor = new List <Musor>(); try { dbMusor = db.Musors.Where(x => x.Date.Year == Date.Year && x.Date.Month == Date.Month).ToList(); } catch { } pro100 = dbMusor.Count; foreach (Musor S in dbMusor) { try { db.Musors.Remove(S); db.SaveChanges(); procount++; progress = Convert.ToInt16(procount / pro100 * 100); if (procount > pro100) { procount = Convert.ToInt32(pro100); } ProgressHub.SendMessage("Удаляем старые данные...", progress); } catch (Exception e) { Console.WriteLine(e.Message); } } Excel.Application ApExcel = new Excel.Application(); Excel.Workbooks WB = null; WB = ApExcel.Workbooks; Excel.Workbook WbExcel = ApExcel.Workbooks.Add(System.Reflection.Missing.Value); for (int h = 1; h <= 31; h++) { ApExcel.Worksheets.Add(Type.Missing);//Добавляем лист Excel.Worksheet WS = WbExcel.Sheets[1]; WS.Name = h.ToString() + ".01.2019"; Excel.Range range; //рэндж ApExcel.Visible = false; //невидимо ApExcel.ScreenUpdating = false; //и не обновляемо //call this method inside your working action ProgressHub.SendMessage("Инициализация и подготовка...", 0); // получаем имя файла string fileName = Path.GetFileName(upload.FileName); string fileName2 = Path.GetFileName(upload2.FileName); // сохраняем файл в папку Files в проекте if (Directory.Exists(Server.MapPath("~/Files/")) == false) { Directory.CreateDirectory(Server.MapPath("~/Files/")); } upload.SaveAs(Server.MapPath("~/Files/" + fileName)); upload2.SaveAs(Server.MapPath("~/Files/" + fileName2)); //обрабатываем файл после загрузки //Загружаем файл ТБО string[] Names2 = new string[] { "Государственный регистрационный знак", "Итого принято ТКО за смену, кг", "Итого принято ТКО за смену, куб.м." }; string Error2 = ""; List <List <string> > excel2 = ExcelSVNUpload.IMPORT(Server.MapPath("~/Files/" + fileName2), Names2, out Error2, h.ToString()); //Загружаем файл наших выездов string[] Names = new string[] { "Дата", "Автомобиль", "Улица", "Номер дома", "Объем ТКО за смену, м3" }; string Error = ""; List <List <string> > excel = ExcelSVNUpload.IMPORT(Server.MapPath("~/Files/" + fileName), Names, out Error, h.ToString()); List <Musor> Result = new List <Musor>(); if (excel.Count < 1 || excel2.Count < 1) { //если нифига не загрузилось то ViewBag.Error = Error + Error2; ViewBag.Names = Names; return(View("NotUpload")); } else { pro100 = excel.Count; List <Musor> Mus = new List <Musor>(); List <string> NeMus = new List <string>(); //для каждой строки в экселе "Дата", "Автомобиль", "Улица", "Номер дома", "Объем ТКО за смену, м3" Musor Old = new Musor(); string Name = ""; foreach (List <string> L in excel) { try { if (L[1] != null && L[1] != "" && L[1] != "0") { Musor MusorKA = new Musor(); MusorKA.Date = Convert.ToDateTime(L[0]); MusorKA.Name = L[1].ToUpper().Replace(" ", "").Replace("154", "").Replace("54", "").Replace("ГАЗ", "").Replace("САЗ", "").Replace("МАЗ", "").Replace("ВАЗ", "").Replace("ЗИЛ", "").Replace("МТЗ", "").Replace("-", ""); MusorKA.AvtoID = 0; try { MusorKA.AvtoID = db.Avtomobils.Where(x => MusorKA.Name.Equals(x.Number)).Select(x => x.Id).First(); } catch { } MusorKA.KgOut = 0; MusorKA.Mesta = (L[2] + L[3]).Replace(" ", ""); MusorKA.ObiemIn = Convert.ToDecimal(L[4]); Mus.Add(MusorKA); Old = MusorKA; } else { if (L[2] != "0" && L[2] != null && L[2] != "") { Musor MusorKA = new Musor(); MusorKA.Date = Old.Date; MusorKA.Name = Old.Name; MusorKA.AvtoID = Old.AvtoID; MusorKA.KgOut = 0; MusorKA.Mesta = (L[2] + L[3]).Replace(" ", ""); MusorKA.ObiemIn = Convert.ToDecimal(L[4]); Mus.Add(MusorKA); } else { NeMus.Add(L[0] + ";" + L[1] + ";" + L[2] + ";" + L[3] + ";" + L[4] + ";"); continue; } } // db.Musors.Add(MusorKA); // db.SaveChanges(); } catch { if (L[0] != "" && L[0] != null) { Name = L[0].ToUpper().Replace(" ", "").Replace("154", "").Replace("54", "").Replace("ГАЗ", "").Replace("САЗ", "").Replace("МАЗ", "").Replace("ВАЗ", "").Replace("ЗИЛ", "").Replace("МАРШРУТ", "").Replace("МТЗ", "").Replace("-", ""); if (Name.Contains("№")) { for (int i = 0; i < 10; i++) { Name = Name.Replace("№" + i.ToString(), ""); } } Old.AvtoID = 0; try { Old.AvtoID = db.Avtomobils.Where(x => Name.Equals(x.Number)).Select(x => x.Id).First(); Old.Name = Name; } catch { NeMus.Add(L[0] + ";" + L[1] + ";" + L[2] + ";" + L[3] + ";" + L[4] + ";"); continue; } } else { NeMus.Add(L[0] + ";" + L[1] + ";" + L[2] + ";" + L[3] + ";" + L[4] + ";"); continue; } } procount++; progress = Convert.ToInt16(50 + procount / pro100 * 50); ProgressHub.SendMessage("Обрабатываем файл УЭВ...", progress); if (procount > pro100) { procount = Convert.ToInt32(pro100); } } List <string> Nam = Mus.Select(x => x.Name).Distinct().ToList(); foreach (string N in Nam) { if (N != "") { List <Musor> summa = Mus.Where(x => x.Name.Equals(N)).ToList(); string Mest = ""; decimal sum = 0; for (int i = 0; i < summa.Count; i++) { Mest += summa[i].Mesta + "\r\n"; sum += summa[i].ObiemIn; } Musor M = new Musor(); M.Date = summa[0].Date; M.AvtoID = summa[0].AvtoID; M.Mesta = Mest; M.Name = N; M.ObiemIn = sum; M.ObiemOut = 0; M.KgOut = 0; //Теперь ищем объёмы с полигона "Государственный регистрационный знак", "Итого принято ТКО за смену, кг", "Итого принято ТКО за смену, куб.м." foreach (List <string> P in excel2) { if (P[0].ToUpper().Replace(" ", "").Contains(N)) { M.ObiemOut = Convert.ToDecimal(P[2]); M.KgOut = Convert.ToDecimal(P[1]); break; } else { continue; } } //Ищем водителя и пробег в ездках Ezdka E = new Ezdka(); try { E = db.Ezdkas.Where(x => x.Date.Year == M.Date.Year && x.Date.Month == M.Date.Month && x.Date.Day == M.Date.Day && x.AvtoId == M.AvtoID).First(); } catch { } if (E.Voditel == null) { E.Voditel = ""; } if (E.Probeg == null) { E.Probeg = 0; } M.Driver = E.Voditel; M.Probeg = E.Probeg; Result.Add(M); } } } //Выводим отчет int stroka = 1; WS.Cells[stroka, 1] = "Приложение №3 "; range = WS.get_Range("A" + stroka.ToString(), "P" + stroka.ToString()); Opr.RangeMerge(ApExcel, range, true, true); stroka++; WS.Cells[stroka, 1] = "к договору на оказание услуг по транспортированию твердых коммунальных отходов №______от " + Result[0].Date.ToString("dd/MM/yyyy"); range = WS.get_Range("A" + stroka.ToString(), "P" + stroka.ToString()); Opr.RangeMerge(ApExcel, range, true, true); stroka++; WS.Cells[stroka, 1] = "Выезд на маршрут"; range = WS.get_Range("A" + stroka.ToString(), "C" + stroka.ToString()); Opr.RangeMerge(ApExcel, range, true, true); WS.Cells[stroka, 4] = "Загрузка ТКО"; range = WS.get_Range("D" + stroka.ToString(), "G" + stroka.ToString()); Opr.RangeMerge(ApExcel, range, true, true, 13, 70); WS.Cells[stroka, 8] = "Транспортирование ТКО"; range = WS.get_Range("H" + stroka.ToString(), "J" + stroka.ToString()); Opr.RangeMerge(ApExcel, range, true, true); WS.Cells[stroka, 11] = "Выгрузка ТКО"; range = WS.get_Range("K" + stroka.ToString(), "N" + stroka.ToString()); Opr.RangeMerge(ApExcel, range, true, true); WS.Cells[stroka, 15] = "Примечание"; range = WS.get_Range("O" + stroka.ToString(), "O" + stroka.ToString()); Opr.RangeMerge(ApExcel, range, true, true); stroka++; WS.Cells[stroka, 1] = "Дата"; range = WS.get_Range("A" + stroka.ToString(), "A" + stroka.ToString()); Opr.RangeMerge(ApExcel, range, true, true, 13, 20); WS.Cells[stroka, 2] = "Номер рейса"; range = WS.get_Range("B" + stroka.ToString(), "B" + (stroka + 1).ToString()); Opr.RangeMerge(ApExcel, range, true, true); WS.Cells[stroka, 3] = "ФИО водителя"; range = WS.get_Range("C" + stroka.ToString(), "C" + (stroka + 1).ToString()); Opr.RangeMerge(ApExcel, range, true, true); WS.Cells[stroka, 4] = "Место накопления(адрес загрузки мусоровоза)"; range = WS.get_Range("D" + stroka.ToString(), "D" + (stroka + 1).ToString()); Opr.RangeMerge(ApExcel, range, true, true, 13, 60); WS.Cells[stroka, 5] = "Объем / тип контейнера"; range = WS.get_Range("E" + stroka.ToString(), "E" + (stroka + 1).ToString()); Opr.RangeMerge(ApExcel, range, true, true); WS.Cells[stroka, 6] = "Время загрузки"; range = WS.get_Range("F" + stroka.ToString(), "F" + (stroka + 1).ToString()); Opr.RangeMerge(ApExcel, range, true, true); WS.Cells[stroka, 7] = "Объем загрузки"; WS.Cells[stroka, 8] = "Показания одометра, км"; range = WS.get_Range("H" + stroka.ToString(), "I" + stroka.ToString()); Opr.RangeMerge(ApExcel, range, true, true); WS.Cells[stroka, 10] = "Показания одометра Плечо доставки, км"; WS.Cells[stroka, 11] = "Место(адрес) выгрузки"; range = WS.get_Range("K" + stroka.ToString(), "K" + (stroka + 1).ToString()); Opr.RangeMerge(ApExcel, range, true, true); WS.Cells[stroka, 12] = "Дата / время выгрузки"; range = WS.get_Range("L" + stroka.ToString(), "L" + (stroka + 1).ToString()); Opr.RangeMerge(ApExcel, range, true, true); WS.Cells[stroka, 13] = "Объем и / или масса выгрузки"; range = WS.get_Range("O" + stroka.ToString(), "P" + stroka.ToString()); Opr.RangeMerge(ApExcel, range, true, true); stroka++; WS.Cells[stroka, 1] = "Время"; range = WS.get_Range("A" + stroka.ToString(), "A" + stroka.ToString()); Opr.RangeMerge(ApExcel, range, true, true, 13, 20); WS.Cells[stroka, 7] = "Объем, м³"; WS.Cells[stroka, 8] = "Начало маршрута"; WS.Cells[stroka, 9] = "Конец маршрута"; WS.Cells[stroka, 10] = "(от последнего места загрузки до места выгрузки)"; WS.Cells[stroka, 13] = "Объем, м³"; WS.Cells[stroka, 14] = "Масса, кг"; range = WS.get_Range("A1", "O15"); range.Font.Size = 13; range.HorizontalAlignment = Excel.XlHAlign.xlHAlignCenter; range.VerticalAlignment = Excel.XlHAlign.xlHAlignCenter; range.WrapText = true; range.Font.Bold = true; range.ColumnWidth = 15; range = WS.get_Range("A1", "A1"); range.ColumnWidth = 20; range = WS.get_Range("B1", "B1"); range.ColumnWidth = 6; range = WS.get_Range("C1", "C1"); range.ColumnWidth = 20; range = WS.get_Range("D1", "D1"); range.ColumnWidth = 60; range = WS.get_Range("E1", "E1"); range.ColumnWidth = 10; range = WS.get_Range("G1", "G1"); range.ColumnWidth = 10; range = WS.get_Range("J1", "J1"); range.ColumnWidth = 10; range = WS.get_Range("M1", "O1"); range.ColumnWidth = 10; stroka++; for (int i = 0; i < Result.Count(); i++) { WS.Cells[stroka, 1] = Result[i].Date; WS.Cells[stroka, 2] = (i + 1).ToString(); WS.Cells[stroka, 3] = Result[i].Driver; WS.Cells[stroka, 4] = Result[i].Mesta; WS.Cells[stroka, 5] = "0,75/M"; WS.Cells[stroka, 7] = Result[i].ObiemIn; WS.Cells[stroka, 10] = Result[i].Probeg; WS.Cells[stroka, 11] = "Полигон ТБО"; WS.Cells[stroka, 13] = Result[i].ObiemOut; WS.Cells[stroka, 14] = Result[i].KgOut; WS.Cells[stroka, 15] = Result[i].Name; range = WS.get_Range("A" + stroka, "A" + stroka); range.RowHeight = 50; range.Font.Size = 12; range.HorizontalAlignment = Excel.XlHAlign.xlHAlignCenter; range.VerticalAlignment = Excel.XlHAlign.xlHAlignCenter; range.WrapText = true; range.Borders.LineStyle = Excel.XlLineStyle.xlContinuous; stroka++; } } string patch = Server.MapPath("~/Content/OtchetECO.xlsx"); //@"C:\inetpub\Otchets\ASP" + "X" + Year.Remove(0, 2) + "X" + Month + ".xlsx";//Server.MapPath("~\\ASP" +"X"+ Year.Remove(0,2) +"X"+ Month + ".xlsx"); string filename = "OtchetECO.xlsx"; string path2 = Url.Content("~/Content/OtchetECO.xlsx"); // RedirectToAction("DownloadPS", new {path,filename}); string dat = path2; //+ filename; string contentType = "application/vnd.ms-excel"; // // Сохранение файла Excel. try { Opr.EstLiFile(patch); WbExcel.SaveCopyAs(patch);//сохраняем в папку } catch { } //WbExcel.PrintOutEx(1, 1, 1, true, null, null, null, null, null);//печать сразу после сохранения ApExcel.Visible = false; //невидимо ApExcel.ScreenUpdating = false; //и не обновляемо // Закрытие книги. WbExcel.Close(false, "", Type.Missing); // Закрытие приложения Excel. ApExcel.Quit(); Marshal.FinalReleaseComObject(WbExcel); Marshal.FinalReleaseComObject(WB); GC.Collect(); Marshal.FinalReleaseComObject(ApExcel); GC.WaitForPendingFinalizers(); ViewBag.date = Date; ViewBag.file = filename; ViewBag.dat = dat; // return File(path2, contentType, filename); // return Json(dat); return(View("UploadComplete")); } return(RedirectToAction("Upload")); }
public ActionResult ActivePloshadUpload(HttpPostedFileBase upload) { int progress = 0; double pro100 = 0; int procount = 0; if (upload != null) { //call this method inside your working action ProgressHub.SendMessage("Инициализация и подготовка...", 0); // получаем имя файла string fileName = System.IO.Path.GetFileName(upload.FileName); // сохраняем файл в папку Files в проекте if (Directory.Exists(Server.MapPath("~/Files/")) == false) { Directory.CreateDirectory(Server.MapPath("~/Files/")); } upload.SaveAs(Server.MapPath("~/Files/" + fileName)); //обрабатываем файл после загрузки // 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 string[] Names = new string[] { "№п.п.", "Адрес", "Дом", "Итогожилая+нежилая", "Этажей", "Подъездов", "Количествоквартир", "Количестволифтов", "Количествопроживающих", "Общаяплощадьквартир", "Нежилаяплощадьквартир,собственниковпобазеОРС", "Площадьподвала", "Площадьлестничныхклеток", "Площадькровли", "Площадьмусорокамер", "Площадьземельногоучастка", "Подрядчик" }; string Error = ""; List <List <string> > excel = ExcelSVNUpload.IMPORT(Server.MapPath("~/Files/" + fileName), Names, out Error); if (excel.Count < 1) { //если нифига не загрузилось то ViewBag.Error = Error; ViewBag.Names = Names; Console.WriteLine("Пустой массив значит файл не загрузился!(он уже удалился)"); return(View("NotUpload")); } else { pro100 = excel.Count; procount = 0; List <Adres> Adresdb = db.Adres.ToList(); foreach (List <string> e in excel) { string E = e[1].Replace("ул.", "").ToUpper().Replace(" ", "").Replace("ПРОСПЕКТ", "").Replace("ПРОЕЗД", "").Replace("БУЛЬВАР", "").Replace(".", ""); string D = e[2].Replace(" ", ""); E = E + D; Adres A = null; //чистим от пр ул и т.д. try { A = Adresdb.Where(x => x.Adress.Equals(E)).First(); try { A.ActivePloshad = Convert.ToDecimal(e[3]); A.Etagi = Convert.ToInt16(e[4]); A.Podezds = Convert.ToInt16(e[5]); A.Kvartirs = Convert.ToInt16(e[6]); A.Lifts = Convert.ToInt16(e[7]); A.Peoples = Convert.ToInt16(e[8]); A.PloshadGilaya = Convert.ToDecimal(e[9]); A.PloshadNegilaya = Convert.ToDecimal(e[10]); A.PloshadPodval = Convert.ToDecimal(e[11]); A.PloshadLestnica = Convert.ToDecimal(e[12]); A.PloshadKrovlya = Convert.ToDecimal(e[13]); A.PloshadMusor = Convert.ToDecimal(e[14]); A.PloshadZemlya = Convert.ToDecimal(e[15]); A.IP = e[16]; } catch (Exception exx) { } db.Entry(A).State = EntityState.Modified; db.SaveChanges(); } catch (Exception ex) { } procount++; progress = Convert.ToInt16(50 + procount / pro100 * 50); ProgressHub.SendMessage("Обрабатываем файл, подождите чуток ...", progress); if (procount > pro100) { procount = Convert.ToInt32(pro100); } } } } return(View("UploadComplete")); }