Пример #1
0
        public List <IndustrialArea> GetAreaByCityId(int cityId)
        {
            OfferQuery offerQuery = new OfferQuery(language);

            System.Data.DataTable dataTable = conn_db.ReadTable(offerQuery.GetObjectByColname("IndustrialAreas", "CITY_ID", cityId));

            if (dataTable.Rows.Count == 0)
            {
                throw new EmptyViewException(language);
            }


            IndustrialArea        industrialArea;
            List <IndustrialArea> listArea = new List <IndustrialArea>();

            foreach (System.Data.DataRow row in dataTable.Rows)
            {
                industrialArea = new IndustrialArea();

                industrialArea.id            = Convert.ToInt32(row["id"].ToString());
                industrialArea.areaName      = row["areaName"].ToString();
                industrialArea.areaNumber    = row["areaNumber"].ToString();
                industrialArea.areaLocationX = row["LocationX"].ToString();
                industrialArea.areaLocationY = row["LocationY"].ToString();
                listArea.Add(industrialArea);
            }
            return(listArea);
        }
Пример #2
0
        public OfferDetails GetOfferDetailsWorkShop(int accident_id, int workshop_id)
        {
            OfferQuery offerQuery = new OfferQuery(language);

            System.Data.DataTable dataTable    = conn_db.ReadTable(offerQuery.GetOfferDetailsWorkShop(accident_id, workshop_id));
            OfferDetails          offerDetails = new OfferDetails();

            if (dataTable.Rows.Count == 0)
            {
                throw new EmptyViewException(language);
            }


            offerDetails                    = new OfferDetails();
            offerDetails.OFFER_ID           = Convert.ToInt32(dataTable.Rows[0]["OFFER_ID"]);
            offerDetails.shop_ID            = Convert.ToInt32(dataTable.Rows[0]["WORKSHOP_ID"]);
            offerDetails.FULLNAME           = dataTable.Rows[0]["FULLNAME"].ToString();
            offerDetails.SHOPNUMBER         = dataTable.Rows[0]["SHOPNUMBER"].ToString();
            offerDetails.SHOPNAME           = dataTable.Rows[0]["SHOPNAME"].ToString();
            offerDetails.LOCATIONX_WORKSHOP = Convert.ToDouble(dataTable.Rows[0]["LOCATIONX"].ToString());
            offerDetails.LOCATIONY_WORKSHOP = Convert.ToDouble(dataTable.Rows[0]["LOCATIONY"].ToString());
            offerDetails.CONFIRMATION       = Convert.ToInt32(dataTable.Rows[0]["CONFIRMATION"].ToString());
            offerDetails.timeValue          = dataTable.Rows[0]["timeValue"] is DBNull ? 0 : Convert.ToInt32(dataTable.Rows[0]["timeValue"]);
            offerDetails.timeFlag           = dataTable.Rows[0]["timeFlag"] is DBNull ? 0 : Convert.ToInt32(dataTable.Rows[0]["timeFlag"]);
            offerDetails.PRICE              = Convert.ToDouble(dataTable.Rows[0]["PRICE"]);
            offerDetails.rating             = Convert.ToDouble(dataTable.Rows[0]["RATING"]);
            offerDetails.workshop_image     = dataTable.Rows[0]["IMAGE"].ToString();
            offerDetails.OFFER_DATETIME     = Convert.ToDateTime(dataTable.Rows[0]["OFFER_DATETIME"]).ToString("dd-MM-yyyy");
            offerDetails.canFinish          = Convert.ToInt32(dataTable.Rows[0]["WAITINGFIX"].ToString());
            offerDetails.isDelivered        = Convert.ToInt32(dataTable.Rows[0]["FINISHEDFLAG"].ToString());

            offerDetails.AreaName    = dataTable.Rows[0]["AreaName"].ToString();
            offerDetails.phonenumber = dataTable.Rows[0]["phoneNumber"].ToString();
            return(offerDetails);
        }
Пример #3
0
        public Stats GetSupplierStats(int workshop_id)
        {
            OfferQuery offerQuery = new OfferQuery(language);

            System.Data.DataTable dataTable = new System.Data.DataTable();
            dataTable = conn_db.ReadTable(offerQuery.GetSupplierStats(workshop_id));

            if (dataTable.Rows.Count == 0)
            {
                throw new EmptyViewException(language);
            }


            Stats stats = new Stats();

            foreach (System.Data.DataRow row in dataTable.Rows)
            {
                //if (row["OFFERTYPE"].ToString() == Enums.OfferType.offerNotAccepted.ToString())
                //    try { stats.offerNotAccepted = Convert.ToInt32(row["OFFERCOUNT"].ToString()); } catch { stats.offerNotAccepted = 0; }

                //if (row["OFFERTYPE"].ToString() == Enums.OfferType.offerAccepted.ToString())
                //    try { stats.offerAccepted = Convert.ToInt32(row["OFFERCOUNT"].ToString()); } catch { stats.offerAccepted = 0; }

                //if (row["OFFERTYPE"].ToString() == Enums.OfferType.offerIsFixing.ToString())
                //    try { stats.offerIsFixing = Convert.ToInt32(row["OFFERCOUNT"].ToString()); } catch { stats.offerIsFixing = 0; }

                //if (row["OFFERTYPE"].ToString() == Enums.OfferType.offerFinishFixing.ToString())
                //    try { stats.offerFinishFixing = Convert.ToInt32(row["OFFERCOUNT"].ToString()); } catch { stats.offerFinishFixing = 0; }

                stats.CONFIRMED = Convert.ToInt32(row["ORDERCOUNT"].ToString());
            }
            return(stats);
        }
Пример #4
0
        public static async Task <List <OfferViewModel> > GetOffers(List <OfferViewModel> offersToGet)
        {
            var taskDictionary = new Dictionary <Guid, Task <IRestResponse <long> > >();
            var OPEKey         = OPE.CreateKeyString();
            var ope            = new OPE(OPEKey);

            foreach (var offer in offersToGet)
            {
                var query = new OfferQuery()
                {
                    Id  = offer.ProductId,
                    Key = OPEKey
                };
                var client  = new RestClient(offer.StoreApiUrl);
                var request = new RestRequest(_paths["offer"]);
                request.AddJsonBody(query);
                request.Method = Method.POST;
                var cancellationTokenSource = new CancellationTokenSource(TimeSpan.FromSeconds(10));
                var task = client.ExecuteAsync <long>(request, cancellationTokenSource.Token);
                taskDictionary.Add(offer.ProductId, task);
            }
            await Task.WhenAll(taskDictionary.Values);

            taskDictionary
            .Where(t => !t.Value.IsFaulted && t.Value.Result.StatusCode == System.Net.HttpStatusCode.OK)
            .ToList()
            .ForEach(t =>
            {
                offersToGet.First(o => o.ProductId == t.Key).EncryptedPrice = t.Value.Result.Data;
                offersToGet.First(o => o.ProductId == t.Key).RealPrice      = ope.Decrypt(t.Value.Result.Data);
            });
            return(offersToGet);
        }
Пример #5
0
        public long GetOffer(OfferQuery query)
        {
            var ope            = new OPE(query.Key);
            var prod           = _db.Products.FirstOrDefault(p => p.Id == query.Id);
            var encryptedPrice = ope.Encrypt(Convert.ToInt32(Math.Ceiling(prod.Price)));

            return(encryptedPrice);
        }
Пример #6
0
        public List <OfferDTO> GetOffers(OfferCriteria offerCriteria)
        {
            OfferQuery offerQuery = new OfferQuery(language);

            System.Data.DataTable OfferDT = conn_db.ReadTable(offerQuery.GetOffersWithCondition(offerCriteria.filters, offerCriteria.sort));

            OfferDTO        offersDTO;
            List <OfferDTO> Offers = new List <OfferDTO>();

            if (OfferDT.Rows.Count == 0)
            {
                throw new EmptyViewException(language, Messages.GetMessage(language, TypeM.OFFER, offerM.OFFER_NOT_FOUND));
            }

            foreach (System.Data.DataRow dataRow   in OfferDT.Rows)
            {
                offersDTO               = new OfferDTO();
                offersDTO.OFFER_ID      = dataRow["OFFER_ID"] is DBNull ? 0 : Convert.ToInt32(dataRow["OFFER_ID"]);
                offersDTO.ORDER_ID      = dataRow["ORDER_ID"] is DBNull ? 0 : Convert.ToInt32(dataRow["ORDER_ID"]);
                offersDTO.PRICE         = dataRow["PRICE"] is DBNull ? 0 : Convert.ToDouble(dataRow["PRICE"]);
                offersDTO.SUPPLIER_Name = dataRow["SUPPLIER_Name"] is DBNull ? "" : dataRow["SUPPLIER_Name"].ToString();
                offersDTO.timeValue     = dataRow["timeValue"] is DBNull ? 0 : Convert.ToInt32(dataRow["timeValue"]);
                offersDTO.timeFlag      = dataRow["timeFlag"] is DBNull ? 0 : Convert.ToInt32(dataRow["timeFlag"]);
                offersDTO.supplierImage = dataRow["supplierImage"] is DBNull ? "" : dataRow["supplierImage"].ToString();
                offersDTO.PHONENUMBER   = dataRow["PHONENUMBER"] is DBNull ? "" : dataRow["PHONENUMBER"].ToString();
                offersDTO.lat           = dataRow["LOCATIONX"] is DBNull ? 0 : Convert.ToDouble(dataRow["LOCATIONX"]);
                offersDTO.lng           = dataRow["LOCATIONY"] is DBNull ? 0 : Convert.ToDouble(dataRow["LOCATIONY"]);
                offersDTO.Rating        = dataRow["RATING"] is DBNull ? 0 : Convert.ToDouble(dataRow["RATING"]);
                offersDTO.offerStatus   = dataRow["offer_status"] is DBNull ? 0 : Convert.ToInt32(dataRow["offer_status"]);

                offersDTO.RateType   = new Enums().checkRateTypeWords(offersDTO.Rating, language);
                offersDTO.RateTypeId = (int)new Enums().checkRateType(offersDTO.Rating);

                if (offerCriteria.lat == 0 || offerCriteria.lng == 0 || offersDTO.lat == 0 || offersDTO.lng == 0)
                {
                    offersDTO.DISTANCE = 0;
                    offersDTO.time     = "0";
                }

                else
                {
                    double distanceMiles = Math.Sqrt(
                        Math.Pow((offerCriteria.lat - offersDTO.lat) * 69, 2) +
                        Math.Pow((offerCriteria.lng - offersDTO.lng) * 69.172, 2));
                    offersDTO.DISTANCE = Math.Round(distanceMiles * 1.60934, 2);
                    offersDTO.time     = new ServicesRepository(language).getTime(offerCriteria.lat + "," + offerCriteria.lng, offersDTO.lat + "," + offersDTO.lng);
                }



                Offers.Add(offersDTO);
            }



            return(Offers);
        }
Пример #7
0
        /// <summary>
        /// Récupérer un Offer en base
        /// </summary>
        /// <param name="offerId">Id de l'Offer</param>
        /// <returns>Offer</returns>
        public Offer GetOffer(int offerId)
        {
            OfferQuery fq = new OfferQuery(_context);
            Offer      o  = fq.GetById(offerId);

            o.Status       = this.GetStatus(o.StatusId);
            o.Postulations = this.GetPostulationsFromOffer(o);
            return(o);
        }
Пример #8
0
        /// <summary>
        /// Récupérer une liste de Offers en base
        /// </summary>
        /// <returns>Offers List</returns>
        public List <Offer> GetAllOffers()
        {
            OfferQuery   oq         = new OfferQuery(_context);
            List <Offer> listOffers = oq.GetAll().ToList();

            foreach (Offer o in listOffers)
            {
                o.Status       = GetStatus(o.StatusId);
                o.Postulations = GetPostulationsFromOffer(o);
            }
            return(listOffers);
        }
Пример #9
0
        /// <summary>
        /// Rechercher une liste d'offres
        /// </summary>
        /// <returns></returns>
        public List <Offer> GetSearchedOffers(string searchOffer)
        {
            OfferQuery   oq         = new OfferQuery(_context);
            List <Offer> listOffers = oq.GetAll().Where(x => x.Title.ToUpper().Contains(searchOffer.ToUpper())).ToList();

            foreach (Offer o in listOffers)
            {
                o.Status       = GetStatus(o.StatusId);
                o.Postulations = GetPostulationsFromOffer(o);
            }
            return(listOffers);
        }
Пример #10
0
        public virtual DataSet PostOrder(ulong[] orderIds,
                                         uint[] quanties,
                                         string[] messages,
                                         uint[] orderCodes1,
                                         uint[] orderCodes2,
                                         bool[] junks)
        {
            if (orderIds == null ||
                quanties == null ||
                orderCodes1 == null ||
                orderCodes2 == null ||
                junks == null ||
                orderIds.Length != quanties.Length ||
                orderIds.Length != orderCodes1.Length ||
                orderIds.Length != orderCodes2.Length ||
                orderIds.Length != junks.Length)
            {
                return(null);
            }

            var toOrders = ToOrder.FromRequest(orderIds, quanties, messages, orderCodes1, orderCodes2, junks);

            using (var session = _factory.OpenSession())
                using (var trx = session.BeginTransaction()) {
                    var user   = ServiceContext.User;
                    var rules  = session.Load <OrderRules>(user.Client.Id);
                    var offers = OfferQuery.GetByIds(session, user, orderIds);
                    var orders = new List <Order>();
                    foreach (var toOrder in toOrders)
                    {
                        var offer = offers.FirstOrDefault(o => o.Id.CoreId == toOrder.OfferId);
                        if (offer == null)
                        {
                            continue;
                        }

                        var order = orders.FirstOrDefault(o => o.PriceList.PriceCode == offer.PriceList.Id.Price.PriceCode);
                        if (order == null)
                        {
                            order = new Order(offer.PriceList, ServiceContext.User, rules);
                            order.ClientAddition = toOrder.Message;
                            orders.Add(order);
                        }
                        toOrder.OrderItem = order.AddOrderItem(offer, toOrder.Quantity);
                    }

                    session.SaveEach(orders.Where(x => x.OrderItems.Count > 0));
                    trx.Commit();
                }
            return(BuildOrderReport(toOrders));
        }
Пример #11
0
        public void Post_order()
        {
            var data = service.GetPrices(false, false,
                                         new[] { "OriginalName" },
                                         new[] { "*" },
                                         new string[] { },
                                         new string[] { },
                                         100,
                                         0);

            Assert.That(data.Tables[0].Rows.Count, Is.GreaterThan(0), "предложений нет");
            var coreId = Convert.ToUInt64(data.Tables[0].Rows[0]["OrderID"]);

            session.CreateSQLQuery(@"
update farm.core0
set RequestRatio = 5,
	OrderCost = 10.5,
	MinOrderCount = 10
where id = :CoreId")
            .SetParameter("CoreId", coreId)
            .ExecuteUpdate();

            var result = service.PostOrder(new[] { coreId },
                                           new[] { 20u },
                                           new[] { "это тестовый заказ" },
                                           new[] { Convert.ToUInt32(data.Tables[0].Rows[0]["OrderCode1"]) },
                                           new[] { Convert.ToUInt32(data.Tables[0].Rows[0]["OrderCode2"]) },
                                           new[] { false });

            Assert.That(result.Tables[0].Rows.Count, Is.EqualTo(1), "ни вернули ни одной записи");
            Assert.That(result.Tables[0].Rows[0]["OriginalOrderID"], Is.EqualTo(coreId),
                        "заказали что то не то, идентификатор из core не совпал");
            var orderid = Convert.ToUInt32(result.Tables[0].Rows[0]["OrderId"]);

            session.BeginTransaction();
            var offer = OfferQuery.GetById(session, user, coreId);
            var order = session.Load <Order>(orderid);

            var orderLine = (from orderItem in order.OrderItems
                             where orderItem.CoreId == coreId
                             select orderItem).Single();

            Assert.That(offer.Id.CoreId, Is.EqualTo(orderLine.CoreId));
            Assert.That(orderLine.RequestRatio, Is.EqualTo(offer.RequestRatio));
            Assert.That(orderLine.MinOrderCount, Is.EqualTo(offer.MinOrderCount));
            Assert.That(orderLine.OrderCost, Is.EqualTo(offer.OrderCost));
        }
Пример #12
0
        public ActionResult Search(string searchText, bool?orderByDate)
        {
            string IndexPath     = Server.MapPath("~/Index");
            var    indexSearcher = new DirectoryIndexSearcher(new DirectoryInfo(IndexPath), true);

            using (var searchService = new SearchService(indexSearcher))
            {
                var query  = new OfferQuery().WithKeywords(searchText);
                var result = searchService.SearchIndex <Offers>(query.Query, new OfferResultDefinition());

                if (orderByDate.HasValue)
                {
                    return(View(result.Results.OrderBy(x => x.DateAndTime).ToList()));
                }
                return(View("Search", result.Results.ToList()));
            }
        }
Пример #13
0
        public List <WarshaRequestDTO> GetAllRequestsCityPermission(int workshop)
        {
            OfferQuery offerQuery = new OfferQuery(language);

            System.Data.DataTable dataTable = conn_db.ReadTable(offerQuery.GetAllRequestsCityPermission(workshop));

            if (dataTable.Rows.Count == 0)
            {
                throw new EmptyViewException(language);
            }

            WarshaRequestDTO        workshopRequestDTO = new WarshaRequestDTO();
            List <WarshaRequestDTO> workshopRequests   = new List <WarshaRequestDTO>();

            foreach (System.Data.DataRow row in dataTable.Rows)
            {
                workshopRequestDTO              = new WarshaRequestDTO();
                workshopRequestDTO.ACCIDENT_ID  = Convert.ToInt32(row["ACCIDENT_ID"].ToString());
                workshopRequestDTO.FULLNAME     = row["FULLNAME"].ToString();
                workshopRequestDTO.PLATENUMBER  = row["PLATENUMBER"].ToString();
                workshopRequestDTO.MANUFACTURER = row["MANUFACTURER"].ToString();
                workshopRequestDTO.MODEL        = row["MODEL"].ToString();
                workshopRequestDTO.FOUNDDATE    = row["FOUNDDATE"].ToString();
                workshopRequestDTO.COLOR        = row["COLOR"].ToString();
                workshopRequestDTO.paper_NO     = row["paper_NO"].ToString();
                workshopRequestDTO.LocationX    = Convert.ToDouble(row["LocationX"].ToString());
                workshopRequestDTO.LocationY    = Convert.ToDouble(row["LocationY"].ToString());
                workshopRequestDTO.Image        = row["url"].ToString();
                try
                {
                    workshopRequestDTO.ACCIDENTDATE = Convert.ToDateTime(row["AccidentDate"].ToString()).ToString("dd-MM-yyyy h:mm tt");
                }
                catch
                {
                    workshopRequestDTO.ACCIDENTDATE = "01-01-2000";
                }

                workshopRequestDTO.Status       = Convert.ToInt32(row["Status"].ToString());
                workshopRequestDTO.statusNameAr = row["status_Name_Ar"].ToString();
                workshopRequestDTO.statusNameEn = row["status_Name_En"].ToString();

                workshopRequests.Add(workshopRequestDTO);
            }
            return(workshopRequests);
        }
Пример #14
0
        public PersonStats GetPersonStats(int user_id)
        {
            OfferQuery offerQuery = new OfferQuery(language);

            System.Data.DataTable dataTable = new System.Data.DataTable();
            dataTable = conn_db.ReadTable(offerQuery.GetPersonOfferCount(user_id));

            if (dataTable.Rows.Count == 0)
            {
                throw new EmptyViewException(language);
            }


            PersonStats personStats = new PersonStats();

            foreach (System.Data.DataRow row in dataTable.Rows)
            {
                personStats.AvailableOffers = Convert.ToInt32(row[0]);
            }
            return(personStats);
        }
Пример #15
0
        internal static async Task GetOffers(Player player, int page, OfferQuery q, ISocketMessageChannel chan)
        {
            int itemPerPage = 5;

            ItemOffer[]  array = null;
            EmbedBuilder em    = player.UserEmbedColor(new EmbedBuilder());

            switch (q)
            {
            case OfferQuery.Receiver:
                array = await GetOffers(player.userid);

                em.WithTitle("Received Offers");
                break;

            case OfferQuery.Sender:
                array = await SentOffers(player.userid);

                em.WithTitle("Sent Offers");
                break;
            }
            if (array != null && array.Length > 0)
            {
                page = Methods.Verify.MinMax(page, Methods.NumbersM.CeilParse <int>(array.Length / 5.00));
                int         x     = 1;
                List <Guid> guids = new List <Guid>();
                for (int p = (itemPerPage * page); p < (itemPerPage * (page + 1)) &&
                     p < array.Length; p++, x++)
                {
                    em.AddField($"{EUI.GetNum(x)} {array[p]._id}", array[p].ToInfo(false));
                    guids.Add(array[p]._id);
                }
                em.WithFooter("Use reactions to inspect Offer and use accept and deny/delete options");
                await player.NewUI(await chan.SendMessageAsync(embed: em.Build()), MsgType.OfferList, $"{page}.{array.Length}.{q}.{JsonConvert.SerializeObject(guids)}");
            }
            else
            {
                await chan.SendMessageAsync("No offers to display");
            }
        }
Пример #16
0
        public List <City> GetCity(string lang)
        {
            OfferQuery offerQuery = new OfferQuery(language);

            System.Data.DataTable dataTable = conn_db.ReadTable(offerQuery.GetMasterTranslated("city", lang));

            if (dataTable.Rows.Count == 0)
            {
                throw new EmptyViewException(language);
            }

            City        city;
            List <City> cities = new List <City>();

            foreach (System.Data.DataRow row in dataTable.Rows)
            {
                city          = new City();
                city.CityId   = Convert.ToInt32(row["id"].ToString());
                city.CityName = row["city_Name"].ToString();
                cities.Add(city);
            }
            return(cities);
        }
Пример #17
0
        public static IList <NamedOffer> QueryOffers(ISession session, uint userId)
        {
            var query = new OfferQuery();

            query.SelectSynonyms();

            using (StorageProcedures.GetActivePrices((MySqlConnection)session.Connection, userId)) {
                var sql = query.ToSql()
                          .Replace(" as {Offer.Id.CoreId}", " as CoreId")
                          .Replace(" as {Offer.Id.RegionCode}", " as RegionId")
                          .Replace("{Offer.", "")
                          .Replace("}", "");
                var offers = session.CreateSQLQuery(sql)
                             .SetResultTransformer(new AliasToPropertyTransformer(typeof(NamedOffer)))
                             .List <NamedOffer>();
                var activePrices = session.Query <ActivePrice>().Where(p => p.Id.Price.PriceCode > 0).ToList();
                offers.Each(
                    offer =>
                    offer.PriceList =
                        activePrices.First(
                            price => price.Id.Price.PriceCode == offer.PriceCode && price.Id.RegionCode == offer.Id.RegionCode));
                return(offers);
            }
        }
Пример #18
0
        private static Order OrderParse(ISession session, uint userId, DataTable table)
        {
            var   user  = session.Load <User>(userId);
            Order order = null;

            if (table.Rows.Count == 0)
            {
                return(null);
            }

            var  supplierDeliveryId = table.Rows[0]["PODRCD"].ToString();
            uint id;

            unchecked {
                id = (uint)table.Rows[0]["NUMZ"].GetHashCode();
            }

            var reject = new Reject {
                DepId   = supplierDeliveryId,
                OrderId = id
            };

            foreach (DataRow row in table.Rows)
            {
                uint qunatity;
                try {
                    qunatity = Convert.ToUInt32(row["QNT"]);
                } catch (Exception) {
                    qunatity = SafeConvert.ToUInt32(row["QNT"].ToString());
                }
                var cost    = Convert.ToDecimal(row["PRICE"]);
                var offerId = SafeConvert.ToUInt64(row["XCODE"].ToString());
                var code    = row["CODEPST"].ToString();
                var name    = row["NAME"].ToString();

                reject.Items.Add(new RejectItem(id, code, qunatity, name, cost, offerId));
            }

            var addressIds = Program.GetAddressId(session, supplierDeliveryId, null, Program.SupplierIdForCodeLookup, user);

            var address = session.Load <Address>(addressIds[0]);
            var rules   = session.Load <OrderRules>(user.Client.Id);

            rules.Strict = false;
            rules.CheckAddressAccessibility = false;
            List <ActivePrice> activePrices;

            using (StorageProcedures.GetActivePrices((MySqlConnection)session.Connection, userId)) {
                activePrices = session.Query <ActivePrice>().ToList();
            }

            var existOrder =
                session.Query <Order>().FirstOrDefault(o => o.UserId == userId && o.ClientOrderId == id && !o.Deleted);

            if (existOrder != null)
            {
                throw new UserFriendlyException(
                          $"Дублирующий заказ {id}, существующий заказ {existOrder.RowId}",
                          "Дублирующая заявка");
            }

            var ordered = new List <RejectItem>();

            foreach (var item in reject.Items)
            {
                try {
                    var offer = OfferQuery.GetById(session, user, item.OfferId);

                    if (offer == null)
                    {
                        var archiveOffer = session.Get <ArchiveOffer>(item.OfferId);
                        if (archiveOffer == null)
                        {
                            throw new UserFriendlyException($"Не удалось найти предложение {item.OfferId} игнорирую строку",
                                                            "Заявка сделана по неактуальному прайс-листу");
                        }

                        offer = archiveOffer.ToOffer(activePrices, item.Price);
                        if (offer == null)
                        {
                            throw new UserFriendlyException(
                                      $"Прайс {archiveOffer.PriceList.PriceCode} больше не доступен клиенту игнорирую строку",
                                      "Прайс-лист отключен");
                        }
                    }

                    if (order == null)
                    {
                        order = new Order(offer.PriceList, user, address, rules);
                        order.ClientOrderId = id;
                    }

                    order.AddOrderItem(offer, item.Quantity);
                    ordered.Add(item);
                } catch (OrderException e) {
                    log.Warn($"Не удалось заказать позицию {item.Name} в количестве {item.Quantity}", e);
                }
            }

            foreach (var rejectItem in ordered)
            {
                reject.Items.Remove(rejectItem);
            }

            if (order != null && order.OrderItems.Count == 0)
            {
                return(null);
            }

            return(order);
        }
Пример #19
0
        public List <Offer> GetSearchOffer(String search)
        {
            OfferQuery oq = new OfferQuery(contexte);

            return(oq.GetByName(search));
        }
Пример #20
0
        public Offer GetOfferById(int id)
        {
            OfferQuery oq = new OfferQuery(contexte);

            return(oq.GetById(id));
        }
Пример #21
0
        public List <Offer> GetAllOffer()
        {
            OfferQuery oq = new OfferQuery(contexte);

            return(oq.GetAll().ToList());
        }
Пример #22
0
        public List <Employee> GetEmployeeFromSpecificOffer(int offerId)
        {
            OfferQuery oq = new OfferQuery(contexte);

            return(oq.GetAllEmployeeOfSpecificOffer(offerId).ToList());
        }
Пример #23
0
        public virtual DataSet PostOrder2(ulong[] orderIds,
                                          decimal[] cost,
                                          uint[] quanties,
                                          DateTime[] priceDates,
                                          string[] messages,
                                          uint[] orderCodes1,
                                          uint[] orderCodes2,
                                          bool[] junks)
        {
            orderIds    = orderIds ?? new ulong[0];
            cost        = cost ?? new decimal[0];
            quanties    = quanties ?? new uint[0];
            messages    = messages ?? new string[0];
            orderCodes1 = orderCodes1 ?? new uint[0];
            orderCodes2 = orderCodes2 ?? new uint[0];
            junks       = junks ?? new bool[0];
            priceDates  = priceDates ?? new DateTime[0];

            var length = orderIds.Length;

            if (cost.Length != length ||
                quanties.Length != length ||
                orderCodes1.Length != length ||
                orderCodes2.Length != length ||
                junks.Length != length ||
                priceDates.Length != length)
            {
                log.Warn("Некорректное число параметров");
                return(null);
            }

            using (var session = _factory.OpenSession())
                using (var trx = session.BeginTransaction()) {
                    var user  = ServiceContext.User;
                    var rules = session.Load <OrderRules>(user.Client.Id);
                    List <ActivePrice> activePrices;
                    using (StorageProcedures.GetActivePrices((MySqlConnection)session.Connection, user.Id)) {
                        activePrices = session.Query <ActivePrice>().ToList();
                    }

                    var orders   = new List <Order>();
                    var toOrders = ToOrder.FromRequest(orderIds, quanties, cost, priceDates, messages, orderCodes1, orderCodes2, junks);
                    var offers   = OfferQuery.GetByIds(session, user, toOrders.Select(o => o.OfferId));
                    foreach (var toOrder in toOrders)
                    {
                        try {
                            if (toOrder.Cost <= 0)
                            {
                                throw new OrderException($"Цена не может быть меньше или равной нулю, текущее значение цены {cost}");
                            }

                            var offer = offers.FirstOrDefault(o => o.Id.CoreId == toOrder.OfferId);
                            if (offer == null)
                            {
                                var archiveOffer = session.Get <ArchiveOffer>(toOrder.OfferId);
                                if (archiveOffer == null)
                                {
                                    log.WarnFormat("Не удалось найти предложение в архиве {0} игнорирую строку", toOrder.OfferId);
                                    continue;
                                }
                                offer = archiveOffer.ToOffer(activePrices, toOrder.Cost);
                                if (offer == null)
                                {
                                    log.WarnFormat("Прайс {0} больше не доступен клиенту игнорирую строку {1}",
                                                   archiveOffer.PriceList.PriceCode, toOrder.OfferId);
                                    continue;
                                }
                            }
                            else if ((decimal)offer.Cost != toOrder.Cost)
                            {
                                log.WarnFormat("Заявка сделана по неактуальному прайс-листу код предложения {0}", toOrder.OfferId);
                                offer = Offer.Clone(offer, offer.PriceList, (float)toOrder.Cost, toOrder.OfferId);
                            }

                            if (toOrder.PriceDate > offer.PriceList.PriceDate)
                            {
                                throw new OrderException(
                                          $"Дата прайс-листа {toOrder.PriceDate} по позиции {toOrder.OfferId} больше текущей даты прайс-листа {offer.PriceList.PriceDate}");
                            }

                            var order = orders.FirstOrDefault(o => o.PriceList == offer.PriceList.Id.Price &&
                                                              o.PriceDate == toOrder.PriceDate);
                            if (order == null)
                            {
                                order                = new Order(offer.PriceList, user, rules);
                                order.PriceDate      = toOrder.PriceDate;
                                order.ClientAddition = toOrder.Message;
                                orders.Add(order);
                            }
                            toOrder.OrderItem = order.AddOrderItem(offer, toOrder.Quantity);
                        }
                        catch (OrderException e) {
                            log.Warn($"Не удалось сформировать заявку по позиции {toOrder.OfferId}", e);
                        }
                    }

                    session.SaveEach(orders.Where(x => x.OrderItems.Count > 0));
                    trx.Commit();

                    return(BuildOrderReport(toOrders));
                }
        }
Пример #24
0
        public Domain.Entities.Order.OrdersDetails   GetOrderDetails(int user_id, int order_id, double lat, double lng, int offer_id)
        {
            OrderQuery orderQuery = new OrderQuery(language);
            OfferQuery offerQuery = new OfferQuery(language);

            System.Data.DataTable OrderDT = conn_db.ReadTable(orderQuery.GetRequestByOrder_id(order_id, language));
            int orderStatus = 0;

            if (OrderDT.Rows.Count > 0)
            {
                orderStatus = OrderDT.Rows[0]["order_status"] is DBNull ?  0:Convert.ToInt32(OrderDT.Rows[0]["order_status"]);
            }

            System.Data.DataTable OrderDetailsAssign = conn_db.ReadTable(offerQuery.GetOrderDetailsAssigns(order_id));
            System.Data.DataTable OfferDT            = new System.Data.DataTable();

            if (orderStatus == (int)Enums.orderStatus.UNCONFIRMED)
            {
                OfferDT = conn_db.ReadTable(offerQuery.GetOffertempOfferByOffer_id(offer_id));
            }
            else
            {
                OfferDT = conn_db.ReadTable(offerQuery.GetOfferDetailsByOrderId(order_id));
            }

            UserRequestCriteria userRequestCriteria = new UserRequestCriteria();
            OfferDTO            offersDTO           = new OfferDTO();

            if (OrderDT.Rows.Count == 0)
            {
                throw new EmptyViewException(language, Messages.GetMessage(language, TypeM.ACCIDENT, orderM.Order_DATA_NOT_FOUND));
            }



            userRequestCriteria.ORDER_ID = OrderDT.Rows[0]["ORDER_ID"] is DBNull ? 0 : Convert.ToInt32(OrderDT.Rows[0]["ORDER_ID"]);
            userRequestCriteria.USER_ID  = OrderDT.Rows[0]["USER_ID"]  is DBNull ? 0 : Convert.ToInt32(OrderDT.Rows[0]["USER_ID"].ToString());
            try
            {
                userRequestCriteria.ORDERDATE = Convert.ToDateTime(OrderDT.Rows[0]["ORDERDATE"].ToString()).ToString("dd-MM-yyyy");
            }
            catch (Exception ex)
            {
                userRequestCriteria.ORDERDATE = "";
            }
            userRequestCriteria.PLATENUMBER    = OrderDT.Rows[0]["PLATENUMBER"].ToString();
            userRequestCriteria.ORDER_IDENTITY = OrderDT.Rows[0]["ORDER_IDENTITY"].ToString();
            userRequestCriteria.firstName      = OrderDT.Rows[0]["FIRSTNAME"].ToString();
            userRequestCriteria.lastName       = OrderDT.Rows[0]["LASTNAME"].ToString();
            userRequestCriteria.CountryCode    = OrderDT.Rows[0]["COUNTRY_CODE"] is DBNull ? 0 : Convert.ToInt32(OrderDT.Rows[0]["COUNTRY_CODE"].ToString());
            userRequestCriteria.phoneNumber    = OrderDT.Rows[0]["PHONENUMBER"].ToString();
            userRequestCriteria.ORDERTYPE_ID   = OrderDT.Rows[0]["ORDERTYPE_ID"]  is DBNull ? 0 : Convert.ToInt32(OrderDT.Rows[0]["ORDERTYPE_ID"].ToString());
            userRequestCriteria.ORDERTYPE_NAME = OrderDT.Rows[0]["ORDERTYPE_NAME"].ToString();
            userRequestCriteria.VEHICLE_ID     = OrderDT.Rows[0]["VEHICLE_ID"]  is DBNull ? 0 :  Convert.ToInt32(OrderDT.Rows[0]["VEHICLE_ID"].ToString());
            userRequestCriteria.ORDER_STATUS   = OrderDT.Rows[0]["ORDER_STATUS"] is DBNull ? 0 : Convert.ToInt32(OrderDT.Rows[0]["ORDER_STATUS"].ToString());
            userRequestCriteria.ISACTIVE       = OrderDT.Rows[0]["ISACTIVE"] is DBNull ? 0 : Convert.ToInt32(OrderDT.Rows[0]["ISACTIVE"].ToString());
            userRequestCriteria.OFFERS_COUNT   = OrderDT.Rows[0]["OFFERS_COUNT"]  is DBNull ? 0 : Convert.ToInt32(OrderDT.Rows[0]["OFFERS_COUNT"].ToString());
            if (language == Messages.language.ar.ToString())
            {
                userRequestCriteria.BRANDNAME = OrderDT.Rows[0]["BRANDNAME_AR"].ToString();
                userRequestCriteria.MODELNAME = OrderDT.Rows[0]["MODELNAME_AR"].ToString();
            }
            else
            {
                userRequestCriteria.BRANDNAME = OrderDT.Rows[0]["BRANDNAME_EN"].ToString();
                userRequestCriteria.MODELNAME = OrderDT.Rows[0]["MODELNAME_EN"].ToString();
            }
            userRequestCriteria.carIMAGE  = OrderDT.Rows[0]["carImage"].ToString();
            userRequestCriteria.userIMAGE = OrderDT.Rows[0]["userImage"].ToString();
            userRequestCriteria.Note      = OrderDT.Rows[0]["NOTE"].ToString();
            userRequestCriteria.COLORNAME = OrderDT.Rows[0]["COLOR_NAME"].ToString();

            userRequestCriteria.lat = OrderDT.Rows[0]["lat"] is DBNull ? 0 : Convert.ToDouble(OrderDT.Rows[0]["lat"].ToString());
            userRequestCriteria.lng = OrderDT.Rows[0]["lng"] is DBNull ? 0 : Convert.ToDouble(OrderDT.Rows[0]["lng"].ToString());


            if (lat == 0 || lng == 0 || userRequestCriteria.lat == 0 || userRequestCriteria.lng == 0)
            {
                userRequestCriteria.time     = "0";
                userRequestCriteria.distance = 0;
            }
            else
            {
                double distanceMiles1 = Math.Sqrt(
                    Math.Pow((lat - userRequestCriteria.lat) * 69, 2) +
                    Math.Pow((lng - userRequestCriteria.lng) * 69.172, 2));
                userRequestCriteria.distance = Math.Round(distanceMiles1 * 1.60934, 2);
                userRequestCriteria.time     = new ServicesRepository(language).getTime(lat + "," + lng, userRequestCriteria.lat + "," + userRequestCriteria.lng);
            }



            if (OfferDT.Rows.Count > 0)
            {
                offersDTO.OFFER_ID      = OfferDT.Rows[0]["OFFER_ID"] is DBNull ? 0 : Convert.ToInt32(OfferDT.Rows[0]["OFFER_ID"]);
                offersDTO.offerStatus   = OfferDT.Rows[0]["OFFER_STATUS"] is DBNull ? 0: Convert.ToInt32(OfferDT.Rows[0]["OFFER_STATUS"]);
                offersDTO.ORDER_ID      = OfferDT.Rows[0]["ORDER_ID"] is DBNull ? 0 : Convert.ToInt32(OfferDT.Rows[0]["ORDER_ID"]);
                offersDTO.PRICE         = OfferDT.Rows[0]["PRICE"] is DBNull ? 0 : Convert.ToDouble(OfferDT.Rows[0]["PRICE"]);
                offersDTO.SUPPLIER_Name = OfferDT.Rows[0]["SUPPLIER_Name"] is DBNull ? "" : OfferDT.Rows[0]["SUPPLIER_Name"].ToString();
                offersDTO.timeValue     = OfferDT.Rows[0]["timeValue"] is DBNull ? 0 : Convert.ToInt32(OfferDT.Rows[0]["timeValue"]);
                offersDTO.timeFlag      = OfferDT.Rows[0]["timeFlag"] is DBNull ? 0 : Convert.ToInt32(OfferDT.Rows[0]["timeFlag"]);
                offersDTO.supplierImage = OfferDT.Rows[0]["supplierImage"] is DBNull ? "" :  OfferDT.Rows[0]["supplierImage"].ToString();
                offersDTO.CountryCode   = OfferDT.Rows[0]["COUNTRY_CODE"] is DBNull ? 0 : Convert.ToInt32(OfferDT.Rows[0]["COUNTRY_CODE"]);
                offersDTO.PHONENUMBER   = OfferDT.Rows[0]["PHONENUMBER"] is DBNull ? "" : OfferDT.Rows[0]["PHONENUMBER"].ToString();
                offersDTO.lat           = OfferDT.Rows[0]["LOCATIONX"] is DBNull ? 0 : Convert.ToDouble(OfferDT.Rows[0]["LOCATIONX"]);
                offersDTO.lng           = OfferDT.Rows[0]["LOCATIONY"] is DBNull ? 0 : Convert.ToDouble(OfferDT.Rows[0]["LOCATIONY"]);
                offersDTO.Rating        = OfferDT.Rows[0]["RATING"] is DBNull ? 0 : Convert.ToDouble(OfferDT.Rows[0]["RATING"]);

                offersDTO.RateType   = new Enums().checkRateTypeWords(offersDTO.Rating, language);
                offersDTO.RateTypeId = (int)new Enums().checkRateType(offersDTO.Rating);


                if (lat == 0 || lng == 0 || offersDTO.lat == 0 || offersDTO.lng == 0)
                {
                    offersDTO.time     = "0";
                    offersDTO.DISTANCE = 0;
                }
                else
                {
                    double distanceMiles2 = Math.Sqrt(
                        Math.Pow((lat - offersDTO.lat) * 69, 2) +
                        Math.Pow((lng - offersDTO.lng) * 69.172, 2));
                    offersDTO.DISTANCE = Math.Round(distanceMiles2 * 1.60934, 2);
                    offersDTO.time     = new ServicesRepository(language).getTime(lat + "," + lng, offersDTO.lat + "," + offersDTO.lng);
                }
            }
            infoAssign        info;
            List <infoAssign> infoAssigns = new List <infoAssign>();

            if (OrderDetailsAssign.Rows.Count > 0)
            {
                foreach (System.Data.DataRow row in OrderDetailsAssign.Rows)
                {
                    info = new infoAssign();
                    if (language == Messages.language.ar.ToString())
                    {
                        info.key   = row["LISTNAME_AR"].ToString();
                        info.value = row["CONTENTNAME_AR"].ToString();
                    }
                    else
                    {
                        info.key   = row["LISTNAME_EN"].ToString();
                        info.value = row["CONTENTNAME_EN"].ToString();
                    }
                    infoAssigns.Add(info);
                }
            }


            userRequestCriteria.info = infoAssigns;
            Domain.Entities.Order.OrdersDetails orderDatails = new Domain.Entities.Order.OrdersDetails();
            orderDatails.order = userRequestCriteria;
            orderDatails.offer = offersDTO;



            return(orderDatails);
        }
Пример #25
0
        public Offer GetOffer(int id)
        {
            OfferQuery of = new OfferQuery(contexte);

            return(of.GetByID(id));
        }
Пример #26
0
        public List <Offer> GetOfferByString(String chaine)
        {
            OfferQuery oq = new OfferQuery(contexte);

            return(oq.GetByString(chaine).ToList());
        }
Пример #27
0
        public List <UserOffer> GetSupplierOffers(OfferCriteria offerCriteria, int user_id)
        {
            OfferQuery offerQuery = new OfferQuery(language);
            OrderQuery orderQuery = new OrderQuery(language);

            System.Data.DataTable OfferDT = new System.Data.DataTable();


            switch (offerCriteria.offerType)
            {
            case (int)OfferType.offerNotAccepted:
                OfferDT = conn_db.ReadTable(offerQuery.GetsupplierOffersUnConfirmed(user_id, language));
                break;

            case (int)OfferType.offerAccepted:
                OfferDT = conn_db.ReadTable(offerQuery.GetsupplierOffersConfirmed(user_id, language));
                break;

            case (int)OfferType.offerIsFixing:
                OfferDT = conn_db.ReadTable(offerQuery.GetsupplierOffersStart(user_id, language));
                break;

            case (int)OfferType.offerFinishFixing:
                OfferDT = conn_db.ReadTable(offerQuery.GetsupplierOffersfinish(user_id, language));
                break;

            default:
                OfferDT = conn_db.ReadTable(offerQuery.GetsupplierOffersUnConfirmed(user_id, language));
                break;
            }


            UserOffer        userOffer;
            List <UserOffer> userOffers = new List <UserOffer>();

            if (OfferDT.Rows.Count == 0)
            {
                throw new EmptyViewException(language, Messages.GetMessage(language, TypeM.OFFER, offerM.OFFER_NOT_FOUND));
            }

            foreach (System.Data.DataRow dataRow in OfferDT.Rows)
            {
                userOffer = new UserOffer();
                userOffer.ORDERTYPE_NAME = dataRow["ORDERTYPE_NAME"] is DBNull ? "" : dataRow["ORDERTYPE_NAME"].ToString();
                userOffer.colorname      = dataRow["COLOR_NAME"] is DBNull ? "" : dataRow["COLOR_NAME"].ToString();

                userOffer.firstName = dataRow["FIRSTNAME"].ToString();
                userOffer.lastName  = dataRow["LASTNAME"].ToString();
                userOffer.carImage  = dataRow["CARIMAGE"].ToString();
                userOffer.userImage = dataRow["userIMAGE"].ToString();

                if (language == Messages.language.ar.ToString())
                {
                    userOffer.brandname = dataRow["BRANDNAME_AR"].ToString();
                    userOffer.modelname = dataRow["MODELNAME_AR"].ToString();
                }
                else
                {
                    userOffer.brandname = dataRow["BRANDNAME_EN"].ToString();
                    userOffer.modelname = dataRow["MODELNAME_EN"].ToString();
                }


                userOffer.OFFER_ID      = dataRow["OFFER_ID"] is DBNull ? 0 : Convert.ToInt32(dataRow["OFFER_ID"]);
                userOffer.ORDER_ID      = dataRow["ORDER_ID"] is DBNull ? 0 : Convert.ToInt32(dataRow["ORDER_ID"]);
                userOffer.PRICE         = dataRow["PRICE"] is DBNull ? 0 : Convert.ToDouble(dataRow["PRICE"]);
                userOffer.SUPPLIER_Name = dataRow["SUPPLIER_Name"] is DBNull ? "" : dataRow["SUPPLIER_Name"].ToString();
                userOffer.timeValue     = dataRow["timeValue"] is DBNull ? 0 : Convert.ToInt32(dataRow["timeValue"]);
                userOffer.timeFlag      = dataRow["timeFlag"] is DBNull ? 0 : Convert.ToInt32(dataRow["timeFlag"]);
                userOffer.supplierImage = dataRow["supplierImage"] is DBNull ? "" : dataRow["supplierImage"].ToString();
                userOffer.PHONENUMBER   = dataRow["PHONENUMBER"] is DBNull ? "" : dataRow["PHONENUMBER"].ToString();
                userOffer.lat           = dataRow["LOCATIONX"] is DBNull ? 0 : Convert.ToDouble(dataRow["LOCATIONX"]);
                userOffer.lng           = dataRow["LOCATIONY"] is DBNull ? 0 : Convert.ToDouble(dataRow["LOCATIONY"]);
                userOffer.Rating        = dataRow["RATING"] is DBNull ? 0 : Convert.ToDouble(dataRow["RATING"]);
                userOffer.offerStatus   = dataRow["offer_status"] is DBNull ? 0 : Convert.ToInt32(dataRow["offer_status"]);

                userOffer.RateType   = new Enums().checkRateTypeWords(userOffer.Rating, language);
                userOffer.RateTypeId = (int)new Enums().checkRateType(userOffer.Rating);

                if (offerCriteria.lat == 0 || offerCriteria.lng == 0 || userOffer.lat == 0 || userOffer.lng == 0)
                {
                    userOffer.DISTANCE = 0;
                    userOffer.time     = "0";
                }

                else
                {
                    double distanceMiles = Math.Sqrt(
                        Math.Pow((offerCriteria.lat - userOffer.lat) * 69, 2) +
                        Math.Pow((offerCriteria.lng - userOffer.lng) * 69.172, 2));
                    userOffer.DISTANCE = Math.Round(distanceMiles * 1.60934, 2);
                    userOffer.time     = new ServicesRepository(language).getTime(offerCriteria.lat + "," + offerCriteria.lng, userOffer.lat + "," + userOffer.lng);
                }

                userOffers.Add(userOffer);
            }
            return(userOffers);
        }
Пример #28
0
        public List <UserOffer> GetPrsonOffers(OfferCriteria offerCriteria, int user_id)
        {
            OfferQuery offerQuery = new OfferQuery(language);

            System.Data.DataTable OfferDT = conn_db.ReadTable(offerQuery.GetPersonOffersWithCondition(offerCriteria, language, user_id));

            UserOffer        userOffer;
            List <UserOffer> userOffers = new List <UserOffer>();

            if (OfferDT.Rows.Count == 0)
            {
                throw new EmptyViewException(language, Messages.GetMessage(language, TypeM.OFFER, offerM.OFFER_NOT_FOUND));
            }

            foreach (System.Data.DataRow dataRow in OfferDT.Rows)
            {
                userOffer = new UserOffer();
                userOffer.ORDERTYPE_NAME = dataRow["ORDERTYPE_NAME"] is DBNull ? "" : dataRow["ORDERTYPE_NAME"].ToString();
                userOffer.colorname      = dataRow["COLOR_NAME"] is DBNull ? "" : dataRow["COLOR_NAME"].ToString();

                if (language == Messages.language.ar.ToString())
                {
                    userOffer.brandname = dataRow["BRANDNAME_AR"].ToString();
                    userOffer.modelname = dataRow["MODELNAME_AR"].ToString();
                }
                else
                {
                    userOffer.brandname = dataRow["BRANDNAME_EN"].ToString();
                    userOffer.modelname = dataRow["MODELNAME_EN"].ToString();
                }


                userOffer.OFFER_ID = dataRow["OFFER_ID"] is DBNull ? 0 : Convert.ToInt32(dataRow["OFFER_ID"]);
                userOffer.ORDER_ID = dataRow["ORDER_ID"] is DBNull ? 0 : Convert.ToInt32(dataRow["ORDER_ID"]);
                try
                {
                    userOffer.ORDER_DATE = Convert.ToDateTime(dataRow["ORDERDATE"].ToString()).ToString("dd-MM-yyyy");
                }
                catch (Exception ex)
                {
                    userOffer.ORDER_DATE = "";
                }
                userOffer.ORDER_NO      = dataRow["ORDER_IDENTITY"] is DBNull ? 0 : Convert.ToInt64(dataRow["ORDER_IDENTITY"]);
                userOffer.PRICE         = dataRow["PRICE"] is DBNull ? 0 : Convert.ToDouble(dataRow["PRICE"]);
                userOffer.SUPPLIER_Name = dataRow["SUPPLIER_Name"] is DBNull ? "" : dataRow["SUPPLIER_Name"].ToString();
                userOffer.timeValue     = dataRow["timeValue"] is DBNull ? 0 : Convert.ToInt32(dataRow["timeValue"]);
                userOffer.timeFlag      = dataRow["timeFlag"] is DBNull ? 0 : Convert.ToInt32(dataRow["timeFlag"]);
                userOffer.supplierImage = dataRow["supplierImage"] is DBNull ? "" : dataRow["supplierImage"].ToString();
                userOffer.PHONENUMBER   = dataRow["PHONENUMBER"] is DBNull ? "" : dataRow["PHONENUMBER"].ToString();
                userOffer.lat           = dataRow["LOCATIONX"] is DBNull ? 0 : Convert.ToDouble(dataRow["LOCATIONX"]);
                userOffer.lng           = dataRow["LOCATIONY"] is DBNull ? 0 : Convert.ToDouble(dataRow["LOCATIONY"]);
                userOffer.Rating        = dataRow["RATING"] is DBNull ? 0 : Convert.ToDouble(dataRow["RATING"]);
                userOffer.Rater_No      = dataRow["Rater_NO"] is DBNull ? 0 : Convert.ToInt32(dataRow["Rater_NO"]);
                userOffer.offerStatus   = dataRow["offer_status"] is DBNull ? 0 : Convert.ToInt32(dataRow["offer_status"]);

                userOffer.RateType   = new Enums().checkRateTypeWords(userOffer.Rating, language);
                userOffer.RateTypeId = (int)new Enums().checkRateType(userOffer.Rating);

                if (offerCriteria.lat == 0 || offerCriteria.lng == 0 || userOffer.lat == 0 || userOffer.lng == 0)
                {
                    userOffer.DISTANCE = 0;
                    userOffer.time     = "0";
                }

                else
                {
                    double distanceMiles = Math.Sqrt(
                        Math.Pow((offerCriteria.lat - userOffer.lat) * 69, 2) +
                        Math.Pow((offerCriteria.lng - userOffer.lng) * 69.172, 2));
                    userOffer.DISTANCE = Math.Round(distanceMiles * 1.60934, 2);
                    userOffer.time     = new ServicesRepository(language).getTime(offerCriteria.lat + "," + offerCriteria.lng, userOffer.lat + "," + userOffer.lng);
                }



                userOffers.Add(userOffer);
            }
            return(userOffers);
        }
Пример #29
0
        private static Order OrderParse(ISession session, uint userId, XDocument doc, List <Reject> rejects,
                                        TextWriter logForClient, out uint id)
        {
            var user = session.Load <User>(userId);

            id = 0;
            Order order  = null;
            var   packet = doc.XPathSelectElement("/PACKET");

            if (packet == null)
            {
                return(null);
            }

            var type = (string)packet.Attribute("TYPE");

            if (type == null)
            {
                return(null);
            }

            var predId        = (string)packet.Attribute("PRED_ID");
            var to            = (string)packet.Attribute("TO");
            var from          = (string)packet.Attribute("FROM");
            var depId         = (string)doc.XPathSelectElement("/PACKET/ORDER/DEP_ID");
            var orderElement  = doc.XPathSelectElement("/PACKET/ORDER");
            var clientOrderId = SafeConvert.ToUInt32((string)orderElement.XPathSelectElement("ORDER_ID"));

            id = clientOrderId;

            var reject = new Reject {
                To      = to,
                From    = @from,
                PredId  = predId,
                DepId   = depId,
                OrderId = clientOrderId
            };
            var items = orderElement.XPathSelectElements("ITEMS/ITEM");

            foreach (var item in items)
            {
                var qunatity = SafeConvert.ToUInt32((string)item.XPathSelectElement("QTTY"));
                var cost     = Convert.ToDecimal((string)item.XPathSelectElement("PRICE"));
                var offerId  = SafeConvert.ToUInt64((string)item.XPathSelectElement("XCODE"));
                var code     = (string)item.XPathSelectElement("CODE");
                var name     = (string)item.XPathSelectElement("NAME");

                reject.Items.Add(new RejectItem(clientOrderId, code, qunatity, name, cost, offerId));
            }
            rejects.Add(reject);

            var addressIds = Program.GetAddressId(session, reject.DepId.Slice(-2, -1), reject.PredId, Program.SupplierIdForCodeLookup, user);
            var address    = session.Load <Address>(addressIds[0]);
            var rules      = session.Load <OrderRules>(user.Client.Id);

            rules.Strict = false;
            rules.CheckAddressAccessibility = false;
            List <ActivePrice> activePrices;

            using (StorageProcedures.GetActivePrices((MySqlConnection)session.Connection, userId)) {
                activePrices = session.Query <ActivePrice>().ToList();
            }

            var comment    = (string)orderElement.XPathSelectElement("COMMENT");
            var existOrder =
                session.Query <Order>().FirstOrDefault(o => o.UserId == userId && o.ClientOrderId == clientOrderId && !o.Deleted);

            if (existOrder != null)
            {
                throw new UserFriendlyException(
                          $"Дублирующий заказ {clientOrderId}, существующий заказ {existOrder.RowId}",
                          "Дублирующая заявка");
            }

            var ordered = new List <RejectItem>();

            foreach (var item in reject.Items)
            {
                try {
                    var offer = OfferQuery.GetById(session, user, item.OfferId);

                    if (offer == null)
                    {
                        var archiveOffer = session.Get <ArchiveOffer>(item.OfferId);
                        if (archiveOffer == null)
                        {
                            throw new UserFriendlyException($"Не удалось найти предложение {item.OfferId} игнорирую строку",
                                                            "Заявка сделана по неактуальному прайс-листу");
                        }

                        offer = archiveOffer.ToOffer(activePrices, item.Price);
                        if (offer == null)
                        {
                            throw new UserFriendlyException(
                                      $"Прайс {archiveOffer.PriceList.PriceCode} больше не доступен клиенту игнорирую строку",
                                      "Прайс-лист отключен");
                        }
                    }

                    if (order == null)
                    {
                        order = new Order(offer.PriceList, user, address, rules);
                        order.ClientAddition = comment;
                        order.ClientOrderId  = clientOrderId;
                    }

                    order.AddOrderItem(offer, item.Quantity);
                    ordered.Add(item);
                } catch (OrderException e) {
                    var message = Utils.TryGetUserFriendlyMessage(e);
                    log.Warn($"Не удалось заказать позицию {item.Name} в количестве {item.Quantity}", e);
                    logForClient.WriteLine("Не удалось заказать позицию {0} по заявке {3} в количестве {1}: {2}", item.Name,
                                           item.Quantity, message, clientOrderId);
                }
            }

            foreach (var rejectItem in ordered)
            {
                reject.Items.Remove(rejectItem);
            }

            if (reject.Items.Count == 0)
            {
                rejects.Remove(reject);
            }

            if (order != null && order.OrderItems.Count == 0)
            {
                return(null);
            }

            return(order);
        }
Пример #30
0
        // Gets


        public List <WarshaOffersCriteria> GetOffersByWarsha_id(int warsha_id, Enums.OfferType offerType)
        {
            OfferQuery offerQuery = new OfferQuery(language);

            System.Data.DataTable dataTable = new System.Data.DataTable();

            if (offerType == Enums.OfferType.offerNotAccepted)
            {
                dataTable = conn_db.ReadTable(offerQuery.GetWorkshopOfferNotAccespted(warsha_id));
            }
            else if (offerType == Enums.OfferType.offerAccepted)
            {
                dataTable = conn_db.ReadTable(offerQuery.GetWorkshopOfferAccespted(warsha_id));
            }
            else if (offerType == Enums.OfferType.offerIsFixing)
            {
                dataTable = conn_db.ReadTable(offerQuery.GetWorkshopOfferIsFixing(warsha_id));
            }
            else if (offerType == Enums.OfferType.offerFinishFixing)
            {
                dataTable = conn_db.ReadTable(offerQuery.GetWorkshopOfferFinishFixing(warsha_id));
            }

            if (dataTable.Rows.Count == 0)
            {
                throw new EmptyViewException(language);
            }


            WarshaOffersCriteria        warshaOffersCriteria  = new WarshaOffersCriteria();
            List <WarshaOffersCriteria> warshaOffersCriterias = new List <WarshaOffersCriteria>();

            foreach (System.Data.DataRow row in dataTable.Rows)
            {
                warshaOffersCriteria             = new WarshaOffersCriteria();
                warshaOffersCriteria.offer_id    = Convert.ToInt32(row["OFFER_ID"].ToString());
                warshaOffersCriteria.workshop_id = Convert.ToInt32(row["WORKSHOP_ID"].ToString());
                warshaOffersCriteria.accident_Id = Convert.ToInt32(row["accidentId"].ToString());
                warshaOffersCriteria.Price       = row["PRICE"].ToString();
                try { warshaOffersCriteria.timeValue = Convert.ToInt32(row["timeValue"]); } catch (Exception ex) { warshaOffersCriteria.timeValue = 0; }
                try { warshaOffersCriteria.timeFlag = Convert.ToInt32(row["timeFlag"]); } catch (Exception ex) { warshaOffersCriteria.timeFlag = 0; }
                try { warshaOffersCriteria.offerDateTime = Convert.ToDateTime(row["offer_DateTime"].ToString()).ToString("dd-MM-yyyy"); }
                catch { warshaOffersCriteria.offerDateTime = "01-01-2000"; }


                //IMPORTANT
                //if(offerType == Enums.OfferType.offerIsFixing)
                //{
                //    DateTime fixingStartDate =  Convert.ToDateTime(row["WAITINGFIX_DATETIME"].ToString()).AddDays( Convert.ToInt32(warshaOffersCriteria.workDays+1) );
                //    DateTime Nowaday = DateTime.Now ;
                //    TimeSpan noOfDays = fixingStartDate -Nowaday ;
                //    if(noOfDays.Days<0)
                //    {
                //        warshaOffersCriteria.workDays = 0;
                //    }
                //    else
                //    {
                //        DateTime age = DateTime.MinValue + noOfDays;
                //        int days = age.Day - 1;
                //        warshaOffersCriteria.workDays = days;
                //    }

                //}


                warshaOffersCriteria.plateNumber  = row["plateNumber"].ToString();
                warshaOffersCriteria.Status       = Convert.ToInt32(row["Status"].ToString());
                warshaOffersCriteria.statusNameEn = row["STATUS_NAME_EN"].ToString();
                warshaOffersCriteria.statusNameAr = row["STATUS_NAME_AR"].ToString();


                warshaOffersCriterias.Add(warshaOffersCriteria);
            }
            return(warshaOffersCriterias);
        }