예제 #1
0
        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);
        }
예제 #2
0
        async Task MakeOnePageAsync(string url, int executionPercent)
        {
            Page page = await new PageClient(url).MakePageAsync();

            pages.Add(page);
            percent += executionPercent;
            ProgressHub.SendMessage("", percent / 100);
        }
예제 #3
0
        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);
        }
예제 #5
0
        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 }));
        }
예제 #6
0
        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));
        }
예제 #7
0
        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);
            });
        }
예제 #8
0
        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);
        }
예제 #9
0
        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());
            }
        }
예제 #10
0
        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 }));
        }
예제 #11
0
        // 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"));
        }
예제 #12
0
        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);
 }
예제 #14
0
        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("Файл не выбран или неверный формат файла."));
            }
        }
예제 #15
0
        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("Файл не выбран или неверный формат файла."));
            }
        }
예제 #16
0
        /// <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));
        }
예제 #17
0
        /// <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));
        }
예제 #18
0
        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"));
        }
예제 #19
0
        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);
        }
예제 #20
0
        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!!!"));
            }
        }
예제 #21
0
        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("Файл не выбран или неверный формат файла."));
            }
        }
예제 #22
0
        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();
            }
        }
예제 #23
0
        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();
            }
        }
예제 #24
0
        /// <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));
        }
예제 #25
0
        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();
            }
        }
예제 #26
0
        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"));
        }
예제 #27
0
        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();
            }
        }
예제 #28
0
        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 }));
        }
예제 #29
0
        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"));
        }
예제 #30
0
        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"));
        }