Пример #1
0
 public LCManager.Infrastructure.Response.ReportResponse BonusesNoChequeReport(BonusesNotForPurchasesRequest request)
 {
     return(_bonusService.BonusesNoChequeReport(request));
 }
Пример #2
0
        public string GetBonuses(JQueryDataTableParamModel param)
        {
            BonusesNotForPurchasesResponse response = new BonusesNotForPurchasesResponse();

            try
            {
                BonusesNotForPurchasesRequest request = new BonusesNotForPurchasesRequest
                {
                    Operator  = Implementation.JwtProps.GetOperator(),
                    Date      = Request["columns[1][search][value]"],
                    DateStart = Request["date_from"],
                    DateEnd   = Request["date_to"],
                    Phone     = Request["columns[3][search][value]"],
                    Page      = Convert.ToInt64(param.start),
                    PageSize  = Convert.ToInt64(param.length)
                };

                if (!string.IsNullOrEmpty(Request["columns[2][search][value]"]))
                {
                    request.Name = Request["columns[2][search][value]"];
                }
                if (!string.IsNullOrEmpty(Request["columns[5][search][value]"]))
                {
                    var values = Request["columns[5][search][value]"].Split('-');
                    try { request.AddedMore = values[0]; } catch { };
                    try { request.AddedLess = values[1]; } catch { };
                }
                if (!string.IsNullOrEmpty(Request["columns[6][search][value]"]))
                {
                    var values = Request["columns[6][search][value]"].Split('-');
                    try { request.RedeemedMore = values[0]; } catch { };
                    try { request.RedeemedLess = values[1]; } catch { };
                }
                if (!string.IsNullOrEmpty(Request["columns[7][search][value]"]))
                {
                    var values = Request["columns[7][search][value]"].Split('-');
                    try { request.BurnMore = values[0]; } catch { };
                    try { request.BurnLess = values[1]; } catch { };
                }
                try { request.Page++; } catch { }
                HttpResponseMessage responseMessage = HttpClientService.PostAsync("api/client/BonusesNotForPurchases", request).Result;
                if (responseMessage.IsSuccessStatusCode)
                {
                    try { response = responseMessage.Content.ReadAsAsync <BonusesNotForPurchasesResponse>().Result; } catch { }
                    if (response.ErrorCode == 0)
                    {
                        Bonuses bonuses = new Bonuses();
                        foreach (Bonus c in response.Bonuses)
                        {
                            BonusesViewModel bonus = new BonusesViewModel
                            {
                                date = "<p>" + c.BonusDate.ToString("dd.MM.yyyy") + "</p> <p>" +
                                       c.BonusDate.ToString("HH:mm") + "</p>",
                                type     = c.BonusSource,
                                added    = c.BonusAdded.ToString(CultureInfo.InvariantCulture),
                                redeemed = c.BonusRedeemed.ToString(CultureInfo.InvariantCulture),
                                fireed   = c.BonusBurn.ToString(CultureInfo.InvariantCulture),
                                card     = c.BonusCard.ToString(CultureInfo.CurrentCulture),
                                phone    = c.Phone,
                                reason   = "Механика ПЛ",
                                lorem    = ""
                            };
                            bonuses.data.Add(bonus);
                        }
                        bonuses.draw            = param.draw;
                        bonuses.recordsTotal    = response.RecordTotal;
                        bonuses.recordsFiltered = response.RecordFilterd;
                        var data = JsonConvert.SerializeObject(bonuses);
                        return(data);
                    }
                    return(responseMessage.ReasonPhrase);
                }
                response.ErrorCode = 10;
                response.Message   = "Ошибка получения данных";
            }
            catch (Exception ex)
            {
                response.ErrorCode = 2;
                response.Message   = ex.Message;
            }
            return(JsonConvert.SerializeObject(response));
        }
Пример #3
0
        public FileResult BonusNoChequeReport(
            string bonus_from,
            string bonus_to,
            string bonus_date,
            string bonus_type,
            string bonus_added,
            string bonus_redeemed,
            string bonus_burned,
            string bonus_phone)
        {
            try
            {
                BonusesNotForPurchasesRequest request = new BonusesNotForPurchasesRequest
                {
                    Operator  = Implementation.JwtProps.GetOperator(),
                    Date      = bonus_date,
                    DateStart = bonus_from,
                    DateEnd   = bonus_to,
                    Phone     = bonus_phone,
                    Page      = -1,
                    PageSize  = -1
                };

                if (!string.IsNullOrEmpty(bonus_type))
                {
                    request.Name = bonus_type.Substring(1, bonus_type.Length - 2);
                }
                if (!string.IsNullOrEmpty(bonus_added))
                {
                    var values = bonus_added.Split('-');
                    try { request.AddedMore = values[0]; } catch { };
                    try { request.AddedLess = values[1]; } catch { };
                }
                if (!string.IsNullOrEmpty(bonus_redeemed))
                {
                    var values = bonus_redeemed.Split('-');
                    try { request.RedeemedMore = values[0]; } catch { };
                    try { request.RedeemedLess = values[1]; } catch { };
                }
                if (!string.IsNullOrEmpty(bonus_burned))
                {
                    var values = bonus_burned.Split('-');
                    try { request.BurnMore = values[0]; } catch { };
                    try { request.BurnLess = values[1]; } catch { };
                }
                ReportResponse      response        = new ReportResponse();
                HttpResponseMessage responseMessage = HttpClientService.PostAsync("api/reports/BonusesNoChequeReport", request).Result;
                if (responseMessage.IsSuccessStatusCode)
                {
                    response = responseMessage.Content.ReadAsAsync <ReportResponse>().Result;
                    if (response.ErrorCode != 0 || !string.IsNullOrEmpty(response.Message))
                    {
                        return(null);
                    }
                    var reportName = "Отчёт по бонусам не за покупки";
                    if (!string.IsNullOrEmpty(bonus_from))
                    {
                        reportName = reportName + " с " + bonus_from;
                    }
                    if (!string.IsNullOrEmpty(bonus_to))
                    {
                        reportName = reportName + " по " + bonus_to;
                    }
                    reportName = reportName + ".xlsx";
                    return(File(response.Report, "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", reportName));
                }
                return(null);
            }
            catch { return(null); }
        }
Пример #4
0
 public BonusesNotForPurchasesResponse BonusesNotForPurchases(BonusesNotForPurchasesRequest request)
 {
     return(_bonusService.GetBonusesNotForPurchases(request));
 }
Пример #5
0
        /// <summary>
        /// Отчет по бонусам не за покупки
        /// </summary>
        /// <param name="cnn"></param>
        /// <param name="request"></param>
        /// <returns></returns>
        public LCManager.Infrastructure.Response.ReportResponse BonusesNoChequeReport(BonusesNotForPurchasesRequest request)
        {
            var response = new LCManager.Infrastructure.Response.ReportResponse();

            try
            {
                var data = this.GetBonusesNotForPurchases(request);
                using (var package = new ExcelPackage())
                {
                    var    workbook      = package.Workbook;
                    string workSheetName = string.Format("с {0} по {1}", request.DateStart, request.DateEnd);
                    var    worksheet     = workbook.Worksheets.Add(workSheetName);
                    worksheet.View.FreezePanes(2, 1);
                    worksheet.Cells["A1"].Value = "Дата";
                    worksheet.Cells["A1"].Style.Border.BorderAround(ExcelBorderStyle.Hair);
                    worksheet.Cells["B1"].Value = "Тип бонуса";
                    worksheet.Cells["B1"].Style.Border.BorderAround(ExcelBorderStyle.Hair);
                    worksheet.Cells["C1"].Value = "Телефон";
                    worksheet.Cells["C1"].Style.Border.BorderAround(ExcelBorderStyle.Hair);
                    worksheet.Cells["D1"].Value = "Основание";
                    worksheet.Cells["D1"].Style.Border.BorderAround(ExcelBorderStyle.Hair);
                    worksheet.Cells["E1"].Value = "Начислено";
                    worksheet.Cells["E1"].Style.Border.BorderAround(ExcelBorderStyle.Hair);
                    worksheet.Cells["F1"].Value = "Списано";
                    worksheet.Cells["F1"].Style.Border.BorderAround(ExcelBorderStyle.Hair);
                    worksheet.Cells["G1"].Value = "Сгорело";
                    worksheet.Cells["G1"].Style.Border.BorderAround(ExcelBorderStyle.Hair);

                    worksheet.Cells["A1:G1"].AutoFilter              = true;
                    worksheet.Cells["A1:G1"].Style.WrapText          = true;
                    worksheet.Cells["A1:G1"].Style.VerticalAlignment =
                        OfficeOpenXml.Style.ExcelVerticalAlignment.Center;
                    worksheet.Cells["A1:G1"].Style.HorizontalAlignment =
                        OfficeOpenXml.Style.ExcelHorizontalAlignment.Center;
                    var color = System.Drawing.ColorTranslator.FromHtml("#0070C0");
                    worksheet.Cells["A1:G1"].Style.Fill.PatternType = ExcelFillStyle.Solid;
                    worksheet.Cells["A1:G1"].Style.Fill.BackgroundColor.SetColor(color);
                    worksheet.Cells["A1:G1"].Style.Font.Color.SetColor(ColorTranslator.FromHtml("#ffffff"));
                    worksheet.Cells["A1:G1"].Style.Font.Size = 11;
                    for (var i = 1; i < 8; i++)
                    {
                        worksheet.Column(i).Width = 20;
                    }

                    var row     = 1;
                    var cellNum = string.Empty;
                    foreach (var bonuse in data.Bonuses)
                    {
                        row++;

                        cellNum = row.ToString();
                        worksheet.Cells["A" + cellNum].Value = bonuse.BonusDate != null
                            ? Convert.ToDateTime(bonuse.BonusDate).ToString("dd.MM.yyyy")
                            : string.Empty;

                        worksheet.Cells["A" + cellNum].Style.Border.BorderAround(ExcelBorderStyle.Hair);

                        worksheet.Cells["B" + cellNum].Value = bonuse.BonusSource;
                        worksheet.Cells["B" + cellNum].Style.Border.BorderAround(ExcelBorderStyle.Hair);

                        worksheet.Cells["C" + cellNum].Value = bonuse.Phone;
                        worksheet.Cells["C" + cellNum].Style.Border.BorderAround(ExcelBorderStyle.Hair);
                        worksheet.Cells["C" + cellNum].Style.Numberformat.Format = "0";

                        worksheet.Cells["D" + cellNum].Value = "Механика ПЛ";
                        worksheet.Cells["D" + cellNum].Style.Border.BorderAround(ExcelBorderStyle.Hair);

                        worksheet.Cells["E" + cellNum].Value = bonuse.BonusAdded;
                        worksheet.Cells["E" + cellNum].Style.Border.BorderAround(ExcelBorderStyle.Hair);
                        worksheet.Cells["E" + cellNum].Style.Numberformat.Format = "0";

                        worksheet.Cells["F" + cellNum].Value = bonuse.BonusRedeemed;
                        worksheet.Cells["F" + cellNum].Style.Border.BorderAround(ExcelBorderStyle.Hair);
                        worksheet.Cells["F" + cellNum].Style.Numberformat.Format = "0";


                        worksheet.Cells["G" + cellNum].Value = bonuse.BonusBurn;
                        worksheet.Cells["G" + cellNum].Style.Border.BorderAround(ExcelBorderStyle.Hair);
                        worksheet.Cells["G" + cellNum].Style.Numberformat.Format = "0";
                    }
                    worksheet.Cells["A1:G" + cellNum].Style.Font.Size = 10;
                    response.Report = package.GetAsByteArray();
                }
                return(response);
            }
            catch (Exception e)
            {
                response.ErrorCode = 10;
                response.Message   = e.Message;
            }
            return(response);
        }
Пример #6
0
        public BonusesNotForPurchasesResponse GetBonusesNotForPurchases(BonusesNotForPurchasesRequest request)
        {
            BonusesNotForPurchasesResponse response = new BonusesNotForPurchasesResponse();

            try
            {
                var bonuses = new List <Bonus>();
                _cnn.Open();
                var cmd = _cnn.CreateCommand();
                cmd.CommandType = CommandType.StoredProcedure;
                cmd.CommandText = "CardBonusesTypePaging";

                if (request.Operator > 0)
                {
                    cmd.Parameters.AddWithValue("@operator", request.Operator);
                }
                if (request.Partner > 0)
                {
                    cmd.Parameters.AddWithValue("@partner", request.Partner);
                }
                if (request.Pos > 0)
                {
                    cmd.Parameters.AddWithValue("@pos", request.Pos);
                }
                if (request.Card > 0)
                {
                    cmd.Parameters.AddWithValue("@card", request.Card);
                }
                if (!string.IsNullOrEmpty(request.CardStr))
                {
                    cmd.Parameters.AddWithValue("@f_card", request.CardStr);
                }
                if (request.Page == 0)
                {
                    request.Page++;
                }

                cmd.Parameters.AddWithValue("@start", request.Page);

                //Если start = -1 и length = -1 это значит выгрузить все без пагинации
                if (request.Page != -1)
                {
                    cmd.Parameters.AddWithValue("@length", request.Page + request.PageSize);
                }
                else
                {
                    cmd.Parameters.AddWithValue("@length", request.PageSize);
                }

                cmd.Parameters.Add("@errormessage", SqlDbType.NVarChar, 100);
                cmd.Parameters["@errormessage"].Direction = ParameterDirection.Output;
                cmd.Parameters.Add("@result", SqlDbType.Int);
                cmd.Parameters["@result"].Direction = ParameterDirection.ReturnValue;
                cmd.Parameters.Add("@total_rows", SqlDbType.Int);
                cmd.Parameters["@total_rows"].Direction = ParameterDirection.Output;

                //Фильтр по дате
                if (!string.IsNullOrEmpty(request.Date))
                {
                    if (DateTime.TryParseExact(request.Date, new[] { "dd.MM.yyyy" }, CultureInfo.InvariantCulture, System.Globalization.DateTimeStyles.None, out var date))
                    {
                        cmd.Parameters.AddWithValue("@f_date", date);
                    }
                }

                //Фильтр по дате (Верхний фильтр с диапазоном)
                if (!string.IsNullOrEmpty(request.DateStart))
                {
                    if (DateTime.TryParseExact(request.DateStart, new[] { "dd.MM.yyyy" }, CultureInfo.InvariantCulture, System.Globalization.DateTimeStyles.None, out var date))
                    {
                        cmd.Parameters.AddWithValue("@f_date_start", date.ToString("yyyy-MM-dd"));
                    }
                }

                //Фильтр по дате (Верхний фильтр с диапазоном)
                if (!string.IsNullOrEmpty(request.DateEnd))
                {
                    if (DateTime.TryParseExact(request.DateEnd, new[] { "dd.MM.yyyy" }, CultureInfo.InvariantCulture, System.Globalization.DateTimeStyles.None, out var date))
                    {
                        cmd.Parameters.AddWithValue("@f_date_end", date.ToString("yyyy-MM-dd"));
                    }
                }

                //Фильтр по названию
                if (!string.IsNullOrEmpty(request.Name))
                {
                    cmd.Parameters.AddWithValue("@f_name", request.Name);
                }
                //Фильтр по телефону
                if (!string.IsNullOrEmpty(request.Phone))
                {
                    cmd.Parameters.AddWithValue("@f_phone", request.Phone);
                }
                //Фильтр по начислению
                try { if (!string.IsNullOrEmpty(request.AddedMore))
                      {
                          cmd.Parameters.AddWithValue("@f_added_more", Convert.ToInt32(request.AddedMore));
                      }
                } catch { }
                try { if (!string.IsNullOrEmpty(request.AddedLess))
                      {
                          cmd.Parameters.AddWithValue("@f_added_less", Convert.ToInt32(request.AddedLess));
                      }
                } catch { }
                //Фильтр по списанию
                try { if (!string.IsNullOrEmpty(request.RedeemedMore))
                      {
                          cmd.Parameters.AddWithValue("@f_redeemed_more", Convert.ToInt32(request.RedeemedMore));
                      }
                } catch { }
                try { if (!string.IsNullOrEmpty(request.RedeemedLess))
                      {
                          cmd.Parameters.AddWithValue("@f_redeemed_less", Convert.ToInt32(request.RedeemedLess));
                      }
                } catch { }
                //Фильтр по сгорело
                try { if (!string.IsNullOrEmpty(request.BurnMore))
                      {
                          cmd.Parameters.AddWithValue("@f_burn_more", Convert.ToInt32(request.BurnMore));
                      }
                } catch { }
                try { if (!string.IsNullOrEmpty(request.BurnLess))
                      {
                          cmd.Parameters.AddWithValue("@f_burn_less", Convert.ToInt32(request.BurnLess));
                      }
                } catch { }

                SqlDataReader readerBonuses = cmd.ExecuteReader();
                while (readerBonuses.Read())
                {
                    Bonus bonus = new Bonus();
                    try
                    {
                        if (!readerBonuses.IsDBNull(0))
                        {
                            bonus.BonusSource = readerBonuses.GetString(0);
                        }
                        if (!readerBonuses.IsDBNull(1))
                        {
                            bonus.BonusDate = readerBonuses.GetDateTime(1);
                        }
                        if (!readerBonuses.IsDBNull(2))
                        {
                            bonus.BonusAdded = readerBonuses.GetDecimal(2);
                        }
                        if (!readerBonuses.IsDBNull(3))
                        {
                            bonus.BonusRedeemed = readerBonuses.GetDecimal(3);
                        }
                        if (!readerBonuses.IsDBNull(4))
                        {
                            bonus.BonusBurn = readerBonuses.GetDecimal(4);
                        }
                        if (!readerBonuses.IsDBNull(5))
                        {
                            bonus.BonusCard = readerBonuses.GetInt64(5);
                        }
                        if (!readerBonuses.IsDBNull(6))
                        {
                            bonus.Phone = readerBonuses.GetInt64(6).ToString();
                        }
                    }
                    catch (Exception ex)
                    {
                        Log.Error(ex, "ServerOperatorClientsManager getting bonus burn {0}", request.Card);
                    }
                    bonuses.Add(bonus);
                }
                readerBonuses.Close();
                response.ErrorCode     = Convert.ToInt32(cmd.Parameters["@result"].Value);
                response.Message       = Convert.ToString(cmd.Parameters["@errormessage"].Value);
                response.RecordTotal   = Convert.ToInt32(cmd.Parameters["@total_rows"].Value);
                response.RecordFilterd = response.RecordTotal;

                response.Bonuses = bonuses;
            }
            catch (Exception e)
            {
                response.ErrorCode = 10;
                response.Message   = e.Message;
            }
            finally
            {
                _cnn.Close();
            }
            return(response);
        }