/// <summary> /// Проверяет существование Реестра оплат по id /// </summary> /// <param name="id">id Реестра оплат</param> /// <returns></returns> // GET: api/OnlineReestr/5 public HttpResponseMessage Get(string id) { Online_log.Info($"Get реестра оплат {0}", id.ToString()); HttpResponseMessage response; Reestr c = new Reestr(); String ln = ""; BusinessEntityCollection fcontact = c.searchnew_reestr(id); foreach (DynamicEntity cont1 in fcontact.BusinessEntities) { ln = cont1["new_txn_id"].ToString(); } if ((ln != "")) { response = Request.CreateResponse(HttpStatusCode.OK, ln); } else { response = Request.CreateResponse(HttpStatusCode.NoContent, ln); } return(response); }
private void ExecuteEditCommand(Reestr reestr) { _dialogNavigationService.ShowDialog <ReestrEditViewModel, Reestr>(reestr, callback => { if (callback.IsSuccess) { Reestr updated = callback.Value; Task.Run(async() => { await _reestrDataService.UpdateReestr(updated); }) .ContinueWith(x => { if (x.Status == TaskStatus.RanToCompletion) { var r = ReestrsCollection.FirstOrDefault(z => z.Id == reestr.Id); r.ReestrState = updated.ReestrState; r.Customer = updated.Customer; r.CustomerId = updated.CustomerId; r.Net = updated.Net; r.Note = updated.Note; } }); } }); }
private void ExecutePrintCommand(Reestr reestr) { var printViewType = (PrintViewType)Enum.Parse(typeof(PrintViewType), SelectedPrintViewType.ToString()); var printInitialize = PrintPreviewFactory.GetPrintView(printViewType); var flowDoc = printInitialize.InitializeFlow(new Models.ViewModels.ReestrObject(reestr)); PrintHelper.Prints(flowDoc, reestr.PackingDate.ToString("dd.MM.yyyy")); }
public async Task <bool> UpdateReestr(Reestr reestr) { using (var connection = _factory.CreateConnection()) { var isSuccess = await connection.UpdateAsync(reestr); return(isSuccess); } }
public HttpResponseMessage Post([FromBody] Reestr value) { GlobalStore Proverka = new GlobalStore(); HttpResponseMessage response; string json = JsonConvert.SerializeObject(value); Online_log.Info($"Try Post. Count: {GlobalStore.CurrentCount}. Reestr: {json}"); if (Proverka.Check()) { Reestr r = new Reestr(); Guid g = new Guid(); string reestrid = r.Pay(value); if ((reestrid == null)) { response = new HttpResponseMessage(HttpStatusCode.NotModified); } else { if (Guid.TryParse(reestrid, out g)) { response = Request.CreateResponse(HttpStatusCode.OK, reestrid); } else { response = Request.CreateResponse(HttpStatusCode.Conflict, reestrid); } response.Content.Headers.Expires = new DateTimeOffset(DateTime.Now.AddSeconds(300)); Online_log.Info($"Ok Post {response.StatusCode.ToString()}. Count: {GlobalStore.CurrentCount}. ReestrPay: {reestrid.ToString()}"); } } else { string err = $"Много обращений! Count= {GlobalStore.CurrentCount}. Не более {Properties.Settings.Default.Count} в {Properties.Settings.Default.Interval} секунд"; response = Request.CreateResponse(HttpStatusCode.Forbidden, err); Online_log.Error(err); } return(response); }
public ReestrObject(Reestr reestr) { Id = reestr.Id; BarrelNumber = reestr.BarrelNumber; BatchNumber = reestr.BatchNumber; PackingDate = reestr.PackingDate; ReestrState = reestr.ReestrState; Net = reestr.Net; TareBarrel = reestr.TareBarrel; TareBarrelWithLid = reestr.TareBarrelWithLid; Note = reestr.Note; RecipeId = reestr.RecipeId; BarrelStorageId = reestr.BarrelStorageId; CustomerId = reestr.CustomerId; Recipe = (Recipe)reestr.Recipe?.Clone(); BarrelStorage = (BarrelStorage)reestr.BarrelStorage?.Clone(); Customer = (Customer)reestr.Customer?.Clone(); }
private Reestr CreateReestr(double net) { var reestr = new Reestr { BatchNumber = ReestrSetting.BatchNumber, Customer = ReestrSetting.Customer, CustomerId = ReestrSetting.CustomerId, RecipeId = ReestrSetting.CurrentRecipe.Id, Recipe = ReestrSetting.CurrentRecipe, TareBarrel = ReestrSetting.TaraBarrel, TareBarrelWithLid = ReestrSetting.TaraBarrelWithLid, PackingDate = DateTime.Now, ReestrState = true, Net = net, }; reestr.BarrelNumber = ReestrSetting.GetBarrelNumberAndClearIt(); return(reestr); }
public async Task <Reestr> CreateReestr(Reestr reestr) { using (var connection = _factory.CreateConnection()) { int barrelNumber = 1; string firstQuery = "SELECT * FROM Reestrs ORDER BY id DESC LIMIT 1"; var result = await connection.QueryFirstOrDefaultAsync <Reestr>(firstQuery); if (result != null) { barrelNumber = result.BarrelNumber + 1; } reestr.BarrelNumber = barrelNumber; await connection.InsertAsync(reestr); return(reestr); } }
public static void WriteSingleRow(this ExcelWorksheet worksheet, Reestr reestr, int row) { worksheet.Cells[row, 1].Value = reestr.Recipe.LongNameRu; worksheet.Cells[row, 2].Value = reestr.BarrelNumber; worksheet.Cells[row, 3].Value = reestr.BatchNumber; worksheet.Cells[row, 4].Style.Numberformat.Format = "dd.MM.yyyy"; worksheet.Cells[row, 4].Value = reestr.BarrelStorage.ProductionDate; worksheet.Cells[row, 5].Style.Numberformat.Format = "dd.MM.yyyy hh:mm"; worksheet.Cells[row, 5].Value = reestr.PackingDate; worksheet.Cells[row, 6].Value = reestr.Customer.ShortName; worksheet.Cells[row, 7].Value = reestr.Net; worksheet.Cells[row, 8].Value = reestr.TareBarrelWithLid + reestr.Net; worksheet.Cells[row, 9].Value = reestr.Note; if (!reestr.ReestrState) { worksheet.Row(row).Style.Fill.PatternType = OfficeOpenXml.Style.ExcelFillStyle.Solid; worksheet.Row(row).Style.Fill.BackgroundColor.SetColor(System.Drawing.Color.Red); } }
public PrintModel(Recipe recipe, Reestr reestr) { Recipe = recipe; Reestr = reestr; }
//главная страница сайта public async Task <IActionResult> Index() { //если в браузере есть куки с ключом aptekaId, то выполняем автоматическую аутентификацию используя этот идентификатор aptekaId if (HttpContext.Request.Cookies.ContainsKey("aptekaId") && !IsAuthenticated()) { string _aptekaId = HttpContext.Request.Cookies["aptekaId"]; await AutoLoginByCookie(_aptekaId); return(RedirectToAction("Index")); } if (!IsAuthenticated()) { HttpContext.Session.Remove("aptekaModel"); HttpContext.Session.Remove("aptekaId"); HttpContext.Session.Remove("userString"); return(View("Logout")); } //определяем адрес на который пришел запрос gv.qwerty.plus или gnvls.qwerty.plus string requestUrl = HttpContext.Request.Host.Host; ViewBag.requestUrl = requestUrl; //ViewBag.requestUrl = "gv.qwerty.plus"; //requestUrl = "gv.qwerty.plus"; //параметры для постраничной навигации int offset = 0; //default value int rowsCount = 20; //default value //id аптеки получаем из сессии, значение сохранено в сессию при аутентификации string aptekaId = HttpContext.Session.GetString("aptekaId"); //проверяем наличие значения id аптеки, если его нет, то отправляем на страницу аутентификации if (string.IsNullOrEmpty(aptekaId)) { await HttpContext.SignOutAsync(CookieAuthenticationDefaults.AuthenticationScheme); //return RedirectToPage("/Account/Login"); return(View("Logout")); } //сохраняем id аптеки в куки на стороне клиента, используется для автоматической аутентификации //if (!HttpContext.Request.Cookies.ContainsKey("aptekaId") || HttpContext.Request.Cookies["aptekaId"] != aptekaId) //{ //} var cookieOptions = new CookieOptions() { Path = "/", HttpOnly = true, IsEssential = true, SameSite = SameSiteMode.Strict, Expires = DateTime.Now.AddMonths(1) //срок жизни куки атоматической авторизации }; HttpContext.Response.Cookies.Append("aptekaId", aptekaId, cookieOptions); ViewBag.aptekaId = aptekaId; Apteka aptekaModel = null; //заносим модель аптеки в сессию if (HttpContext.Session.Keys.Contains("aptekaModel")) { aptekaModel = HttpContext.Session.Get <Apteka>("aptekaModel"); } else { List <Apteka> apteka = await GetAptekaModel(aptekaId); HttpContext.Session.Set("aptekaModel", apteka.First()); } //срабатывает только при первом обращении к контроллеру, когда модели аптеки еще нет в сессии if (aptekaModel == null) { aptekaModel = HttpContext.Session.Get <Apteka>("aptekaModel"); } ViewBag.RegionId = aptekaModel.RegionId; ViewBag.RegionName = aptekaModel.RegionName; ViewBag.FullAptekaName = aptekaModel.FullAptekaName; ViewBag.TaxType = aptekaModel.TaxType; string userString = string.Empty; if (Request.Method == "POST") { //сохраняем строку поиска в сессию, используется для выгрузки данных в csv if (Request.Form.Keys.Contains("userString")) { userString = Request.Form["userString"]; HttpContext.Session.SetString("userString", userString); } } try { //создаем временную таблицу с результатами await CreateTempDataTable(aptekaId, aptekaModel.RegionId); //определяем количество страниц для навигации сайта int pagesCount = await GetRecordsCount(aptekaId, userString); if (Request.Method == "GET") { pagesCount = (int)Math.Ceiling((double)pagesCount / rowsCount); ViewBag.PagesCount = pagesCount; } if (Request.Method == "POST") { int currentPage = 1; if (!string.IsNullOrEmpty(Request.Form["currentPage"])) { currentPage = int.Parse(Request.Form["currentPage"]); } if (!string.IsNullOrEmpty(Request.Form["rowsCount"])) { rowsCount = int.Parse(Request.Form["rowsCount"]); } pagesCount = (int)Math.Ceiling((double)pagesCount / rowsCount); ViewBag.PagesCount = pagesCount; if (!string.IsNullOrEmpty(Request.Form["direction"])) { switch (Request.Form["direction"]) { case "next": if (currentPage < pagesCount) { currentPage++; } offset = (currentPage - 1) * rowsCount; break; case "prev": if (currentPage > 1) { currentPage--; } offset = (currentPage - 1) * rowsCount; break; case "first": offset = 0; break; case "last": offset = (pagesCount - 1) * rowsCount; break; case "select-page": offset = (currentPage - 1) * rowsCount; break; case "page-size": offset = (currentPage - 1) * rowsCount; break; } } } using (SqlConnection connection = new SqlConnection(connectionString)) { await connection.OpenAsync(); string name = string.Empty; string barcode = string.Empty; if (Regex.IsMatch(userString, @"^\d+$") && userString.Length >= 8) { barcode = userString; } else { name = userString; } SqlCommand query = new SqlCommand(); query.CommandText = SqlCommandText.ForSite1; query.Connection = connection; query.Parameters.AddWithValue("offset", offset); query.Parameters.AddWithValue("rowsCount", rowsCount); //query.Parameters.AddWithValue("aptekaId", int.Parse(aptekaId)); //query.Parameters.AddWithValue("regionId", int.Parse(aptekaModel.RegionId)); query.Parameters.AddWithValue("name", "%" + name + "%"); query.Parameters.AddWithValue("barcode", "%" + barcode + "%"); query.Parameters.AddWithValue("tableName", "tmp_gnvls_" + aptekaId); SqlDataReader reader = await query.ExecuteReaderAsync(); if (reader.HasRows) { while (await reader.ReadAsync()) { Reestr row = new Reestr { FullAptekaName = reader["FullAptekaName"] as string, Mhh = reader["Mhh"] as string, Series = reader["Series"] as string, Name = reader["Name"] as string, Pro = reader["Pro"] as string, Barcode = reader["Barcode"] as string, Nds = reader["Nds"] as string, ProducerRegisteredPrice = reader["ProducerRegisteredPrice"] as string, ProducerRealPrice = reader["ProducerRealPrice"] as string, PurchasePriceWithoutVAT = reader["PurchasePriceWithoutVAT"] as string, PremiumInPercentOpt = reader["PremiumInPercentOpt"] as string, PremiumInRubOpt = reader["PremiumInRubOpt"] as string, MaxOptPercent = reader["MaxOptPercent"] as string, PurchasePrice = reader["PurchasePrice"] as string, RetailPriceWithoutVAT = reader["RetailPriceWithoutVAT"] as string, PremiumInPercentRetail = reader["PremiumInPercentRetail"] as string, PremiumInRubRetail = reader["PremiumInRubRetail"] as string, MaxRetailPercent = reader["MaxRetailPercent"] as string, RetailPrice = reader["RetailPrice"] as string }; data.Add(row); } } else { ViewBag.Message = "Запрошенная информация не найдена"; } reader.Close(); } } catch (SqlException e) { ViewBag.Message = "Ошибка получения данных с сервера, обновите страницу"; WebExtensions.WriteToLog(logPath, DateTime.Now + " " + e.Message + Environment.NewLine + e.StackTrace + Environment.NewLine); } catch (Exception e) { ViewBag.Message = "Произошла критическая ошибка в работе приложения, пожалуйста перезагрузите ваш браузер, если ошибка будет повторяться - обратитесь к разработчику сайта"; WebExtensions.WriteToLog(logPath, DateTime.Now + " " + e.Message + Environment.NewLine + e.StackTrace + Environment.NewLine); } if (Request.Method == "POST") { if (requestUrl == "gv.qwerty.plus") { return(PartialView("_IndexGv", data)); } return(PartialView("_Index", data)); } if (requestUrl == "gv.qwerty.plus") { return(View("IndexGv", data)); } return(View("Index", data)); }
public async Task <IEnumerable <Reestr> > GetCsvData() { string aptekaId = HttpContext.Session.GetString("aptekaId"); Apteka aptekaModel = HttpContext.Session.Get <Apteka>("aptekaModel"); string name = string.Empty; string barcode = string.Empty; if (HttpContext.Session.Keys.Contains("userString")) { string userString = HttpContext.Session.GetString("userString"); if (Regex.IsMatch(userString, @"^\d+$") && userString.Length >= 8) { barcode = userString; } else { name = userString; } } SqlCommand query = new SqlCommand(); using (SqlConnection connection = new SqlConnection(connectionString)) { await connection.OpenAsync(); query.CommandText = SqlCommandText.ForCsv1; query.Connection = connection; //query.Parameters.AddWithValue("aptekaId", int.Parse(aptekaId)); //query.Parameters.AddWithValue("regionId", int.Parse(aptekaModel.RegionId)); query.Parameters.AddWithValue("name", "%" + name + "%"); query.Parameters.AddWithValue("barcode", "%" + barcode + "%"); query.Parameters.AddWithValue("tableName", "tmp_gnvls_" + aptekaId); SqlDataReader reader = await query.ExecuteReaderAsync(); if (reader.HasRows) { while (await reader.ReadAsync()) { Reestr row = new Reestr { FullAptekaName = reader["FullAptekaName"] as string, Mhh = reader["Mhh"] as string, Series = reader["Series"] as string, Name = reader["Name"] as string, Pro = reader["Pro"] as string, Barcode = reader["Barcode"] as string, Nds = reader["Nds"] as string, ProducerRegisteredPrice = reader["ProducerRegisteredPrice"] as string, ProducerRealPrice = reader["ProducerRealPrice"] as string, PurchasePriceWithoutVAT = reader["PurchasePriceWithoutVAT"] as string, PremiumInPercentOpt = reader["PremiumInPercentOpt"] as string, PremiumInRubOpt = reader["PremiumInRubOpt"] as string, MaxOptPercent = reader["MaxOptPercent"] as string, PurchasePrice = reader["PurchasePrice"] as string, RetailPriceWithoutVAT = reader["RetailPriceWithoutVAT"] as string, PremiumInPercentRetail = reader["PremiumInPercentRetail"] as string, PremiumInRubRetail = reader["PremiumInRubRetail"] as string, MaxRetailPercent = reader["MaxRetailPercent"] as string, RetailPrice = reader["RetailPrice"] as string }; data.Add(row); } } reader.Close(); } return(data); }
public async Task <Reestr> CreateReestrAndUpdateBarrelStorage(Reestr reestr) { using (var connection = _factory.CreateConnection()) { bool isNextBarrelExist = true; string barrelQuery = "SELECT *FROM BarrelStorages where isEmpty = false and recipeId =@recipeId"; var barrelStorage = await connection.QueryFirstOrDefaultAsync <BarrelStorage>(barrelQuery, new { recipeId = reestr.RecipeId }); if (barrelStorage == null) { throw new BarrelStorageEmptyException(); } if (barrelStorage.ConsumptionWeight + reestr.Net > barrelStorage.TotalWeight) { barrelQuery += " and id != @id"; var nextBarrel = await connection.QueryFirstOrDefaultAsync <BarrelStorage>(barrelQuery, new { recipeId = reestr.RecipeId, id = barrelStorage.Id }); if (nextBarrel != null) { var reminder = barrelStorage.TotalWeight - barrelStorage.ConsumptionWeight; nextBarrel.TotalWeight += reminder; barrelStorage.TotalWeight -= reminder; string emptyUpdateQuery = "UPDATE BarrelStorages Set isEmpty= true,totalWeight = @TotalWeight WHERE id =@id"; await connection.QueryAsync(emptyUpdateQuery, new { id = barrelStorage.Id, totalWeight = barrelStorage.TotalWeight }); barrelStorage = nextBarrel; } else { isNextBarrelExist = false; } } if (isNextBarrelExist) { barrelStorage.ConsumptionWeight += reestr.Net; } await connection.UpdateAsync(barrelStorage); reestr.BarrelStorageId = barrelStorage.Id; reestr.BarrelStorage = barrelStorage; int barrelNumber = 1; string firstQuery = @"SELECT *FROM Reestrs as r LEFT JOIN Recipes as rc on rc.id = r.recipeid WHERE rc.BarrelRecipeType = @type ORDER BY r.id DESC LIMIT 1"; var result = await connection.QueryFirstOrDefaultAsync <Reestr>(firstQuery, new { type = reestr.Recipe.BarrelRecipeType }); if (result != null) { barrelNumber = result.BarrelNumber + 1; } if (reestr.BarrelNumber != 0) { barrelNumber = reestr.BarrelNumber; } reestr.BarrelNumber = barrelNumber; await connection.InsertAsync(reestr); return(reestr); } }