public ConfirmAddOrUpdatePeriodPriceCommand(PeriodPrice periodPrice, PeriodPriceViewModel periodPriceViewModel, PeriodPricesViewModel periodPricesViewModel, HomePageViewModel homePageViewModel)
 {
     PeriodPricesViewModel = periodPricesViewModel;
     PeriodPriceViewModel  = periodPriceViewModel;
     HomePageViewModel     = homePageViewModel;
     PeriodPrice           = periodPrice;
 }
        public List <PeriodPrice> GetPeriodPrices(long accommodationUnitId)
        {
            GetPeriodPricesRequestDTO getPeriodPricesRequestDTO = new GetPeriodPricesRequestDTO(accommodationUnitId);

            try
            {
                GetPeriodPricesResponseDTO getPeriodPricesResponseDTO = new GetPeriodPricesResponseDTO(periodPricePortClient.getPeriodPrices(getPeriodPricesRequestDTO.GetPeriodPricesRequest));
                List <PeriodPrice>         periodPrices = getPeriodPricesResponseDTO.PeriodPrices;
                if (periodPrices.Count > 0)
                {
                    foreach (PeriodPrice periodPrice in periodPrices)
                    {
                        PeriodPrice periodPriceDB = unitOfWork.PeriodPrices.SingleOrDefault(pp => pp.Id == periodPrice.Id);
                        if (periodPriceDB != null)
                        {
                            periodPriceDB.Price    = periodPrice.Price;
                            periodPriceDB.FromDate = periodPrice.FromDate;
                            periodPriceDB.ToDate   = periodPrice.ToDate;
                            periodPriceDB.Deleted  = false;
                        }
                        else
                        {
                            periodPrice.AccommodationUnit = unitOfWork.AccommodationUnits.SingleOrDefault(au => au.Id == accommodationUnitId);
                            unitOfWork.PeriodPrices.Add(periodPrice);
                        }
                        unitOfWork.Complete();
                    }

                    //set deleted period prices in localDB
                    List <PeriodPrice> periodPricesDB = unitOfWork.PeriodPrices.Find(p => p.AccommodationUnit.Id == accommodationUnitId).ToList();
                    foreach (PeriodPrice periodPriceDB in periodPricesDB)
                    {
                        int flag = 0;
                        foreach (PeriodPrice periodPrice in periodPrices)
                        {
                            if (periodPrice.Id == periodPriceDB.Id)
                            {
                                flag += 1;
                            }
                        }

                        if (flag == 0)
                        {
                            periodPriceDB.Deleted = true;
                            unitOfWork.Complete();
                        }
                    }
                }
            }
            catch { }
            return(unitOfWork.PeriodPrices.Find(p => p.AccommodationUnit.Id == accommodationUnitId && !p.Deleted).ToList());
        }
 public AddPeriodPriceRequestDTO(PeriodPrice PeriodPrice, long unitId)
 {
     AddPeriodPriceRequest = new addPeriodPriceRequest()
     {
         accommodationUnitId = unitId,
         periodPrice         = new periodPrice()
         {
             Price    = PeriodPrice.Price,
             FromDate = PeriodPrice.FromDate.Date,
             ToDate   = PeriodPrice.ToDate.Date
         }
     };
 }
 public bool UpdatePeriodPrice(PeriodPrice periodPrice)
 {
     try
     {
         UpdatePeriodPriceRequestDTO updatePeriodPriceDTO = new UpdatePeriodPriceRequestDTO(periodPrice);
         periodPricePortClient.updatePeriodPrice(updatePeriodPriceDTO.UpdatePeriodPriceRequest);
         return(true);
     }
     catch
     {
         return(false);
     }
 }
 public GetPeriodPricesResponseDTO(getPeriodPricesResponse getPeriodPricesResponse)
 {
     PeriodPrices = new List <PeriodPrice>();
     foreach (periodPrice periodPriceResponse in getPeriodPricesResponse.periodPrices)
     {
         PeriodPrice periodPrice = new PeriodPrice()
         {
             Id       = periodPriceResponse.Id,
             Price    = periodPriceResponse.Price,
             FromDate = periodPriceResponse.FromDate,
             ToDate   = periodPriceResponse.ToDate
         };
         PeriodPrices.Add(periodPrice);
     }
 }
 public UpdatePeriodPriceRequestDTO(PeriodPrice PeriodPrice)
 {
     UpdatePeriodPriceRequest = new updatePeriodPriceRequest()
     {
         periodPrice = new periodPrice()
         {
             Id                = PeriodPrice.Id,
             Price             = PeriodPrice.Price,
             FromDate          = PeriodPrice.FromDate.Date,
             ToDate            = PeriodPrice.ToDate.Date,
             AccommodationUnit = new accommodationUnit()
             {
                 Id = PeriodPrice.AccommodationUnit.Id
             }
         }
     };
 }
示例#7
0
 public PeriodPriceViewModel(PeriodPrice periodPrice, PeriodPricesViewModel periodPricesViewModel, HomePageViewModel homePageViewModel)
 {
     PeriodPricesViewModel = periodPricesViewModel;
     HomePageViewModel     = homePageViewModel;
     if (periodPrice != null)
     {
         PeriodPrice     = periodPrice;
         FromDate        = periodPrice.FromDate;
         ToDate          = periodPrice.ToDate;
         Price           = periodPrice.Price.ToString();
         AddOrSaveButton = "Save";
     }
     else
     {
         FromDate        = new DateTime(2001, 1, 1);
         ToDate          = new DateTime(2001, 1, 1);
         PeriodPrice     = new PeriodPrice();
         AddOrSaveButton = "Add";
     }
     AddOrUpdatePeriodPriceCommand = new ConfirmAddOrUpdatePeriodPriceCommand(PeriodPrice, this, PeriodPricesViewModel, HomePageViewModel);
     CancelPeriodPriceCommand      = new CancelPeriodPriceCommand(PeriodPricesViewModel, HomePageViewModel);
 }
示例#8
0
 public UpdatePeriodPriceCommand(PeriodPrice periodPrice, PeriodPricesViewModel periodPricesViewModel, HomePageViewModel homePageViewModel)
 {
     PeriodPrice           = periodPrice;
     PeriodPricesViewModel = periodPricesViewModel;
     HomePageViewModel     = homePageViewModel;
 }
示例#9
0
        public ActionResult Save(int selectType, int PriceLoadList, IEnumerable <HttpPostedFileBase> attachments)
        {
            HttpResponseBase response = ControllerContext.HttpContext.Response;

            response.ContentType = "text/html";
            response.Write("<html><body>");
            if (attachments == null)
            {
                response.Write("Файл для загрузки не выбран!");
            }
            else
            {
                int          idOrg       = int.Parse(getCurrentEnterpriseId());
                Organization currentOrg  = organizationRepository.Get(idOrg);
                PeriodPrice  periodPrice = periodPriceRepository.Get(PriceLoadList);
                if (selectType == 1)
                {
                    nomGroupPriceRepository.TruncNomGroupPrice(idOrg, PriceLoadList);
                }
                foreach (var file in attachments)
                {
                    // Some browsers send file names with full path. This needs to be stripped.
                    var isError  = false;
                    var fileName = Path.GetFileName(file.FileName);
                    response.Write("Обрабатывается файл <b>" + fileName + "</b><br/>");
                    response.Flush();
                    var physicalFilePath = Path.Combine(Server.MapPath("~/TempFiles"), fileName);
                    try
                    {
                        if (System.IO.File.Exists(physicalFilePath))
                        {
                            System.IO.File.Delete(physicalFilePath);
                        }
                        try
                        {
                            file.SaveAs(physicalFilePath);
                        }
                        catch (Exception e)
                        {
                            response.Write("Ошибка при охранении файла на сервере:<br/>");
                            response.Write(e.Message);
                            response.Flush();
                            isError = true;
                        }
                        System.Data.DataTable table = null;
                        string workSheetNames       = "";
                        if (!isError)
                        {
                            try
                            {
                                ExcelReader excelReader = new ExcelReader(physicalFilePath, true);
                                if (excelReader.workSheetNames.Length > 0)
                                {
                                    workSheetNames = excelReader.workSheetNames[0];
                                    table          = excelReader.GetWorksheet(workSheetNames);
                                }
                                else
                                {
                                    response.Write("В файле не найден рабочий лист!<br/>");
                                    response.Flush();
                                    isError = true;
                                }
                            }
                            catch (Exception e)
                            {
                                response.Write("Ошибка при открытии файла:<br/>");
                                response.Write(e.Message);
                                response.Flush();
                                isError = true;
                            }
                        }
                        if (table != null)
                        {
                            response.Write("Загрузка данных производится из листа '" + workSheetNames.Trim(new[] { '$' }) + "'<br/>");
                            response.Flush();
                            if (!table.Columns.Contains("Цена"))
                            {
                                response.Write("Файл содержит не коррекные данные ('Цена').<br/>");
                                response.Flush();
                                isError = true;
                            }
                            if (!table.Columns.Contains("Код группы"))
                            {
                                response.Write("Файл содержит не коррекные данные ('Код группы').<br/>");
                                response.Flush();
                                isError = true;
                            }

                            int colPrice        = table.Columns.IndexOf("Цена");
                            int colExternalCode = table.Columns.IndexOf("Код группы");

                            if (!isError)
                            {
                                DataRow[] result = table.Select();
                                Dictionary <string, object> queryParams = new Dictionary <string, object>();
                                foreach (DataRow row in result) // Loop over the rows.
                                {
                                    if (row[colExternalCode] != System.DBNull.Value)
                                    {
                                        string rowExternalCode = Convert.ToString(row[colExternalCode]);
                                        try
                                        {
                                            string rowPriceString = Convert.ToString(row[colPrice]);
                                            double rowPrice       = Convert.ToDouble(rowPriceString);
                                            queryParams.Clear();
                                            queryParams.Add("Organization", currentOrg);
                                            queryParams.Add("ExternalCode", rowExternalCode);
                                            NomGroup ng = nomGroupRepository.FindOne(queryParams);
                                            if (ng == null)
                                            {
                                                response.Write("В справочнике не найдена группа номенклатур с кодом " + rowExternalCode + ".<br/>");
                                                response.Flush();
                                            }
                                            else
                                            {
                                                NomGroupPrice nPrice = null;
                                                queryParams.Clear();
                                                queryParams.Add("OrganizationId", currentOrg.Id);
                                                queryParams.Add("NomGroup", ng);
                                                queryParams.Add("PeriodPrice", periodPrice);
                                                nPrice = nomGroupPriceRepository.FindOne(queryParams);
                                                if (nPrice == null)
                                                {
                                                    nPrice                = new NomGroupPrice();
                                                    nPrice.NomGroup       = ng;
                                                    nPrice.OrganizationId = currentOrg.Id;
                                                    nPrice.PeriodPrice    = periodPrice;
                                                    nPrice.ExternalCode   = ng.ExternalCode;
                                                }

                                                nPrice.Price = rowPrice;
                                                nomGroupPriceRepository.DbContext.BeginTransaction();
                                                try
                                                {
                                                    nomGroupPriceRepository.SaveOrUpdate(nPrice);
                                                    nomGroupPriceRepository.DbContext.CommitTransaction();
                                                }
                                                catch (Exception e)
                                                {
                                                    nomGroupPriceRepository.DbContext.RollbackTransaction();
                                                    response.Write("Ошибка при сохранении данных в БД:<br/>");
                                                    response.Write(e.Message);
                                                    response.Write("<br/>");
                                                    if (e.InnerException != null)
                                                    {
                                                        response.Write(e.InnerException.Message);
                                                        response.Write("<br/>");
                                                    }
                                                    response.Flush();
                                                }
                                            }
                                        }
                                        catch (Exception)
                                        {
                                            response.Write("Ошибка определения цены для номклатуры " + rowExternalCode + "<br/>");
                                            response.Flush();
                                        }
                                    }
                                }
                                response.Flush();
                            }
                            response.Flush();
                        }
                        if (!isError)
                        {
                            response.Write("Файл успешно обработан!");
                        }
                    }
                    finally
                    {
                        System.IO.File.Delete(physicalFilePath);
                    }
                }
            }
            Response.Write("</html></body>");
            Response.Flush();
            return(null);;
        }
 public PeriodPriceView(PeriodPrice periodPrice, PeriodPricesViewModel periodPricesViewModel, HomePageViewModel homePageViewModel)
 {
     InitializeComponent();
     DataContext = new PeriodPriceViewModel(periodPrice, periodPricesViewModel, homePageViewModel);
 }
        public void AddPeriodPrice(PeriodPrice periodPrice, long accommodationUnitId)
        {
            AddPeriodPriceRequestDTO addPeriodPriceRequestDTO = new AddPeriodPriceRequestDTO(periodPrice, accommodationUnitId);

            periodPricePortClient.addPeriodPrice(addPeriodPriceRequestDTO.AddPeriodPriceRequest);
        }