public ActionResult Create()
        {
            var uManager = HttpContext.GetOwinContext().GetUserManager <ApplicationUserManager>();
            var userInfo = uManager.FindByNameAsync(User.Identity.Name).GetAwaiter().GetResult();
            var model    = new HumDistributionPlan();

            if (userInfo.Companies.Count > 0)
            {
                model.CompanyId = userInfo.Companies.First().Id;
                model.Company   = userInfo.Companies.First();

                var    xmldoc    = new XmlDocument();
                string urlOrigin = "http://www.nbkr.kg/XML/CurrenciesReferenceList.xml";
                string urlFake   = Server.MapPath("~/Doc/CurrenciesReferenceList.xml");
                string url       = urlFake;
                if (ConfigurationManager.AppSettings.AllKeys.Contains("HasInternetConnection") && ConfigurationManager.AppSettings["HasInternetConnection"] == "yes")
                {
                    url = urlOrigin;
                }

                xmldoc.Load(url);

                var xdoc = DocumentExtensions.ToXDocument(xmldoc);

                ViewBag.Currencies = from c in xdoc.Root.Elements()
                                     select c.Attribute("ISOCode").Value;
            }
            else
            {
                return(RedirectToAction("Create", "Companies", new { userId = userInfo.Id, returnUrl = Request.Path }));
            }
            return(View(model));
        }
Exemplo n.º 2
0
        public CurrencyRates GetCurrencyRates()
        {
            var xmldoc = new XmlDocument();

            string urlOrigin = "http://www.nbkr.kg/XML/daily.xml";
            string urlFake   = Server.MapPath("~/Doc/daily.xml");
            string url       = urlFake;

            if (ConfigurationManager.AppSettings["HasInternetConnection"] == "yes")
            {
                url = urlOrigin;
            }
            xmldoc.Load(url);

            var xdoc          = DocumentExtensions.ToXDocument(xmldoc);
            var CurrencyRates = new CurrencyRates
            {
                Name = xdoc.Root.Attribute("Name").Value.ToString(),
                Date = xdoc.Root.Attribute("Date").Value.ToString()
            };

            CurrencyRates.List = new List <Currency>();
            foreach (var rate in xdoc.Root.Elements())
            {
                var isoCode  = rate.Attribute("ISOCode").Value;
                var nominal  = rate.Element("Nominal").Value;
                var value    = rate.Element("Value").Value.Replace(',', '.');
                var currency = new Currency();
                currency.ISOCode = isoCode;
                int nominalInt;
                if (int.TryParse(nominal, out nominalInt))
                {
                    currency.Nominal = nominalInt;
                }
                else
                {
                    throw new Exception("Can't convert to int: " + nominal);
                }
                decimal valueDec;
                if (decimal.TryParse(value, out valueDec))
                {
                    currency.Value = valueDec;
                }
                else if (decimal.TryParse(value.Replace('.', ','), out valueDec))
                {
                    currency.Value = valueDec;
                }
                else
                {
                    throw new Exception("Can't convert to decimal: " + value);
                }
                CurrencyRates.List.Add(currency);
            }
            return(CurrencyRates);
        }
        /*[HttpPost]
         * [ValidateAntiForgeryToken]
         * public ActionResult Create(HttpPostedFileBase FileUpload, [Bind(Include = "Id,CompanyId,Date,CurrencyISOCode")] HumDistributionPlan humDistributionPlan)
         * {
         *  List<string> messages = new List<string>();
         *  var planItems = new List<HumDistributionPlanItem>();
         *  if (ModelState.IsValid)
         *  {
         *      if (FileUpload != null)
         *      {
         *          if (FileUpload.ContentType == "application/vnd.ms-excel" || FileUpload.ContentType == "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet")
         *          {
         *              string filename = FileUpload.FileName;
         *              string targetpath = Server.MapPath("~/TempDoc/");
         *              FileUpload.SaveAs(targetpath + filename);
         *              string pathToExcelFile = targetpath + filename;
         *              var connectionString = "";
         *              if (filename.EndsWith(".xls"))
         *              {
         *                  connectionString = string.Format("Provider=Microsoft.Jet.OLEDB.4.0; data source={0}; Extended Properties=Excel 8.0;", pathToExcelFile);
         *              }
         *              else if (filename.EndsWith(".xlsx"))
         *              {
         *                  connectionString = string.Format("Provider=Microsoft.ACE.OLEDB.12.0;Data Source={0};Extended Properties=\"Excel 12.0 Xml;HDR=YES;IMEX=1\";", pathToExcelFile);
         *              }
         *              string sheetName = "План распределения";
         *              var adapter = new OleDbDataAdapter("SELECT * FROM [" + sheetName + "$]", connectionString);
         *              var ds = new DataSet();
         *
         *              adapter.Fill(ds, "ExcelTable");
         *
         *              DataTable dtable = ds.Tables["ExcelTable"];
         *
         *
         *
         *              var excelFile = new ExcelQueryFactory(pathToExcelFile);
         *              var humDistributionPlanItems = from a in excelFile.Worksheet<HumDistributionPlanItemModel>(sheetName) select a;
         *              var units = db.UnitTypes.ToList();
         *
         *              foreach (var item in humDistributionPlanItems)
         *              {
         *                  try
         *                  {
         *                      var unitStr = item.Unit;
         *
         *                      var unitType = units.FirstOrDefault(x => x.Name.ToLower() == unitStr.ToLower());
         *                      if (item.Consumer != "" &&
         *                          item.Address != "" &&
         *                          item.Region != "" &&
         *                          item.ProductName != "" &&
         *                          item.Unit != "" &&
         *                          item.Amount != null &&
         *                          item.Sum != null &&
         *                          unitType != null)
         *                      {
         *                          HumDistributionPlanItem objItem = new HumDistributionPlanItem();
         *                          objItem.Consumer = item.Consumer;
         *                          objItem.Address = item.Address;
         *                          objItem.Region = item.Region;
         *                          objItem.ProductName = item.ProductName;
         *                          objItem.Amount = item.Amount;
         *                          objItem.Sum = item.Sum;
         *                          objItem.UnitTypeId = unitType.Id;
         *
         *                          planItems.Add(objItem);
         *                      }
         *                      else
         *                      {
         *                          if (item.Consumer == "" || item.Consumer == null) messages.Add("Поле Consumer не может быть пустым");
         *                          if (item.Region == "" || item.Region == null) messages.Add("Поле Region не может быть пустым");
         *                          if (item.ProductName == "" || item.ProductName == null) messages.Add("Поле ProductName не может быть пустым");
         *                          if (item.Amount == null) messages.Add("Поле Amount не может быть пустым");
         *                          if (item.Sum == null) messages.Add("Поле Sum не может быть пустым");
         *                          if (unitType == null) messages.Add("Поле Unit не может быть пустым, или оно не найдено в справочнике");
         *                      }
         *                  }
         *
         *                  catch (DbEntityValidationException ex)
         *                  {
         *                      foreach (var entityValidationErrors in ex.EntityValidationErrors)
         *                      {
         *
         *                          foreach (var validationError in entityValidationErrors.ValidationErrors)
         *                          {
         *
         *                              Response.Write("Свойство: " + validationError.PropertyName + " Текст ошибки: " + validationError.ErrorMessage);
         *
         *                          }
         *
         *                      }
         *                  }
         *              }
         *              //deleting excel file from folder
         *              if ((System.IO.File.Exists(pathToExcelFile)))
         *              {
         *                  System.IO.File.Delete(pathToExcelFile);
         *              }
         *          }
         *          else
         *          {
         *              messages.Add("Только Excel-формат доступен.");
         *          }
         *      }
         *
         *      if (messages.Count == 0)
         *      {
         *          db.Database.BeginTransaction();
         *          try
         *          {
         *              db.HumDistributionPlans.Add(humDistributionPlan);
         *              db.SaveChanges();
         *              foreach (var item in planItems)
         *              {
         *                  item.HumDistributionPlanId = humDistributionPlan.Id;
         *                  db.HumDistributionPlanItems.Add(item);
         *                  db.SaveChanges();
         *              }
         *              db.Database.CurrentTransaction.Commit();
         *              return RedirectToAction("Details", new { id = humDistributionPlan.Id });
         *          }
         *          catch (Exception e)
         *          {
         *              messages.Add("Error on saving items: " + e.Message);
         *              db.Database.CurrentTransaction.Rollback();
         *          }
         *          finally
         *          {
         *              db.Database.Connection.Close();
         *          }
         *      }
         *  }
         *  ViewBag.Messages = messages.ToArray();
         *  humDistributionPlan.Company = db.Companies.Find(humDistributionPlan.CompanyId);
         *
         *
         *  var xmldoc = new XmlDocument();
         *  string urlOrigin = "http://www.nbkr.kg/XML/CurrenciesReferenceList.xml";
         *  string urlFake = Server.MapPath("~/Doc/CurrenciesReferenceList.xml");
         *  string url = urlFake;
         *  if (ConfigurationManager.AppSettings.AllKeys.Contains("HasInternetConnection") && ConfigurationManager.AppSettings["HasInternetConnection"] == "yes")
         *      url = urlOrigin;
         *
         *  xmldoc.Load(url);
         *
         *  var xdoc = DocumentExtensions.ToXDocument(xmldoc);
         *
         *  ViewBag.Currencies = from c in xdoc.Root.Elements()
         *                       select c.Attribute("ISOCode").Value;
         *
         *  return View(humDistributionPlan);
         * }
         */
        public ActionResult CreateWithRows()
        {
            var uManager = HttpContext.GetOwinContext().GetUserManager <ApplicationUserManager>();
            var userInfo = uManager.FindByNameAsync(User.Identity.Name).GetAwaiter().GetResult();
            var model    = new HumDistributionPlan {
                Items = new List <HumDistributionPlanItem> {
                    new HumDistributionPlanItem()
                }
            };

            if (userInfo.Companies.Count > 0)
            {
                model.CompanyId = userInfo.Companies.First().Id;
                model.Company   = userInfo.Companies.First();

                var    xmldoc    = new XmlDocument();
                string urlOrigin = "http://www.nbkr.kg/XML/CurrenciesReferenceList.xml";
                string urlFake   = Server.MapPath("~/Doc/CurrenciesReferenceList.xml");
                string url       = urlFake;
                if (ConfigurationManager.AppSettings.AllKeys.Contains("HasInternetConnection") && ConfigurationManager.AppSettings["HasInternetConnection"] == "yes")
                {
                    url = urlOrigin;
                }

                xmldoc.Load(url);

                var xdoc = DocumentExtensions.ToXDocument(xmldoc);

                ViewBag.CurrencyISOCode = from c in xdoc.Root.Elements()
                                          select new SelectListItem {
                    Text = " " + c.Attribute("ISOCode").Value + " ", Value = c.Attribute("ISOCode").Value
                };

                var consumers = db.Consumers.ToList();
                consumers.Insert(0, new Consumer());
                ViewBag.ConsumerId = new SelectList(consumers, "Id", "Name");

                var products = db.Products.ToList();
                products.Insert(0, new Product());
                ViewBag.ProductId = new SelectList(products, "Id", "Name");

                var areas = db.Areas.ToList();
                areas.Insert(0, new Area());
                ViewBag.AreaId = new SelectList(areas, "Id", "Name");

                var unitTypes = db.UnitTypes.ToList();
                unitTypes.Insert(0, new UnitType());
                ViewBag.UnitTypeId = new SelectList(unitTypes, "Id", "Name");
            }
            else
            {
                return(RedirectToAction("Create", "Companies", new { userId = userInfo.Id, returnUrl = Request.Path }));
            }
            return(View(model));
        }
        public ActionResult CreateWithRows([Bind(Include = "CompanyId,Date,CurrencyISOCode,Items")] HumDistributionPlan plan)
        {
            if (plan.Items == null)
            {
                ModelState.AddModelError("", "Добавьте строки");
            }
            else
            {
                foreach (var item in plan.Items)
                {
                    if (item.ConsumerId == 0)
                    {
                        ModelState.AddModelError("", "Потребитель не указан");
                    }
                    if (item.AreaId == 0)
                    {
                        ModelState.AddModelError("", "Область не указана");
                    }
                    if (item.ProductId == 0)
                    {
                        ModelState.AddModelError("", "Товар / Продукт / Изделие не указано");
                    }
                    if (item.UnitTypeId == 0)
                    {
                        ModelState.AddModelError("", "Ед. измерения не указана");
                    }
                    if (item.Amount <= 0)
                    {
                        ModelState.AddModelError("", "Кол-во не задано");
                    }
                    if (item.Sum <= 0)
                    {
                        ModelState.AddModelError("", "Сумма не задана");
                    }
                }
            }
            if (ModelState.IsValid)
            {
                var humPlan = new HumDistributionPlan
                {
                    CompanyId       = plan.CompanyId,
                    CurrencyISOCode = plan.CurrencyISOCode,
                    Date            = plan.Date
                };
                db.HumDistributionPlans.Add(humPlan);
                foreach (var planItem in plan.Items)
                {
                    planItem.HumDistributionPlanId = humPlan.Id;
                    db.HumDistributionPlanItems.Add(planItem);
                }
                db.SaveChanges();
                return(RedirectToAction("Details", new { id = humPlan.Id }));
            }
            plan.Company = db.Companies.Find(plan.CompanyId);
            plan.Items   = plan.Items == null ? new List <HumDistributionPlanItem>() : plan.Items;

            var    xmldoc    = new XmlDocument();
            string urlOrigin = "http://www.nbkr.kg/XML/CurrenciesReferenceList.xml";
            string urlFake   = Server.MapPath("~/Doc/CurrenciesReferenceList.xml");
            string url       = urlFake;

            if (ConfigurationManager.AppSettings.AllKeys.Contains("HasInternetConnection") && ConfigurationManager.AppSettings["HasInternetConnection"] == "yes")
            {
                url = urlOrigin;
            }

            xmldoc.Load(url);

            var xdoc = DocumentExtensions.ToXDocument(xmldoc);

            ViewBag.CurrencyISOCode = from c in xdoc.Root.Elements()
                                      select new SelectListItem {
                Text = " " + c.Attribute("ISOCode").Value + " ", Value = c.Attribute("ISOCode").Value, Selected = c.Attribute("ISOCode").Value == plan.CurrencyISOCode
            };

            var consumers = db.Consumers.ToList();

            consumers.Insert(0, new Consumer());
            ViewBag.ConsumerId = new SelectList(consumers, "Id", "Name");

            var products = db.Products.ToList();

            products.Insert(0, new Product());
            ViewBag.ProductId = new SelectList(products, "Id", "Name");

            var areas = db.Areas.ToList();

            areas.Insert(0, new Area());
            ViewBag.AreaId = new SelectList(areas, "Id", "Name");

            var unitTypes = db.UnitTypes.ToList();

            unitTypes.Insert(0, new UnitType());
            ViewBag.UnitTypeId = new SelectList(unitTypes, "Id", "Name");

            return(View(plan));
        }