Exemple #1
0
        private async Task <bool> RequestHaveFinishedOffer()
        {
            var searchRequest = new OfferSearchRequest
            {
                RequestId     = Id,
                OfferStatusId = (int)Models.OfferStatus.Finished
            };
            var offerList = await _offerService.GetAll <List <Offer> >(searchRequest);

            if (offerList.Count > 0)
            {
                SupplierId = offerList[0].UserId;

                var request = new RatingSearchRequest
                {
                    RequestId = Id
                };

                var ratingList = await _ratingService.GetAll <List <Rating> >(request);

                if (ratingList.Count > 0)
                {
                    return(false);
                }
                return(true);
            }

            return(false);
        }
Exemple #2
0
        public async Task DeleteRequest()
        {
            var offerRequest = new OfferSearchRequest
            {
                RequestId = Id
            };

            var offers = await _offerService.GetAll <List <MoveMe.Model.Offer> >(offerRequest);

            foreach (var item in offers)
            {
                await _offerService.Delete(item.OfferId);
            }

            var request = new RequestUpdateRequest
            {
                AdditionalInformation = AdditionalInformation,
                Date                    = Date,
                Price                   = Price,
                Rooms                   = Rooms,
                StatusId                = StatusId,
                TotalWeightApprox       = TotalWeightApprox,
                TransportDistanceApprox = TransportDistanceApprox,
                InActive                = true
            };

            await _requestService.Update <Request>(Id, request);
        }
        private async void frmMostActiveUsers_Load(object sender, System.EventArgs e)
        {
            var suppliersReport = new List <SupplierReport>();
            var clientReport    = new List <ClientReport>();

            var userSearchRequest = new UserSearchReqeust
            {
                RoleId = (int)RoleId.Client
            };
            var clients = await _authService.GetUsers(userSearchRequest);

            userSearchRequest.RoleId = (int)RoleId.Supplier;
            var suppliers = await _authService.GetUsers(userSearchRequest);

            foreach (var client in clients)
            {
                var requestSearchRequest = new RequestSearchRequest
                {
                    StatusId = (int)EStatus.Finished,
                    UserId   = client.Id
                };

                var numberOfFinishedRequests = (await _requestService.GetAll <List <Offer> >(requestSearchRequest)).Count;

                clientReport.Add(new ClientReport
                {
                    Client = $"{client.FirstName} {client.LastName}",
                    NumberOfFinishedRequests = numberOfFinishedRequests
                });
            }

            foreach (var supplier in suppliers)
            {
                var offerRequest = new OfferSearchRequest
                {
                    OfferStatusId = (int)EOfferStatus.Finished,
                    UserId        = supplier.Id
                };

                var numberOfFinishedOffers = (await _offerService.GetAll <List <Offer> >(offerRequest)).Count;

                suppliersReport.Add(new SupplierReport
                {
                    Company = supplier.Company,
                    NumberOfFinishedRequests = numberOfFinishedOffers
                });
            }

            ClientReportBindingSource.DataSource   = clientReport.OrderByDescending(a => a.NumberOfFinishedRequests).ToList();
            SupplierReportBindingSource.DataSource = suppliersReport.OrderByDescending(a => a.NumberOfFinishedRequests).ToList();

            this.rvMostActive.RefreshReport();
        }
Exemple #4
0
        public IList <Model.Offer> GetAll(OfferSearchRequest request)
        {
            var query = _context.Offer.AsQueryable();


            if (request?.ClientId.HasValue == true)
            {
                query = query.Where(x => x.ClientId == request.ClientId);
            }

            var list = query.ToList();

            return(_mapper.Map <IList <Model.Offer> >(list));
        }
Exemple #5
0
        public DashboardOffer GetDashboardOffers(OfferSearchRequest request)
        {
            var dashboardOfferList = new DashboardOffer();

            var query = _context.Offer.AsQueryable();

            if (!string.IsNullOrWhiteSpace(request?.AppUserId))
            {
                query = query.Where(x => x.AppUserId == request.AppUserId);
            }

            var list = query
                       .Include(a => a.Client)
                       .Include(a => a.Status)
                       .Include(a => a.Currency)
                       .OrderByDescending(a => a.OfferId)
                       .ToList();

            foreach (var item in list)
            {
                var newOffer = new OfferData
                {
                    StatusId   = item.StatusId,
                    ClientId   = item.ClientId,
                    OfferId    = item.OfferId,
                    Client     = item.Client.FirstName + " " + item.Client.LastName,
                    OfferName  = item.Name,
                    Status     = item.Status.Name,
                    TotalPrice = item.TotalPrice.ToString() + " " + item.Currency.Tag
                };

                if ((item.StatusId == 1 || item.StatusId == 2 || item.StatusId == 4) && dashboardOfferList.OffersList.Count < 5)
                {
                    dashboardOfferList.OffersList.Add(newOffer);
                }
                else if (item.StatusId == 3 && dashboardOfferList.ActiveProjectsList.Count < 5)
                {
                    dashboardOfferList.ActiveProjectsList.Add(newOffer);
                }
                else if (dashboardOfferList.FinishedProjectsList.Count < 5 && item.StatusId == 5)
                {
                    dashboardOfferList.FinishedProjectsList.Add(newOffer);
                }
            }

            checkIfDeadlineExceeded();

            return(dashboardOfferList);
        }
Exemple #6
0
        private async Task <bool> RequestHaveActiveOffer()
        {
            var searchRequest = new OfferSearchRequest
            {
                RequestId     = Id,
                OfferStatusId = (int)Models.OfferStatus.Active
            };
            var offerList = await _offerService.GetAll <List <Offer> >(searchRequest);

            if (offerList.Count > 0)
            {
                return(true);
            }

            return(false);
        }
Exemple #7
0
        private async Task <bool> RequestHaveFinishedOfferWithoutRating()
        {
            var searchRequest = new OfferSearchRequest
            {
                RequestId     = Id,
                OfferStatusId = (int)Models.OfferStatus.Finished
            };
            var offerList = await _offerService.GetAll <List <Offer> >(searchRequest);

            if (offerList.Count > 0)
            {
                return(true);
            }

            return(false);
        }
        private async void frmReportRequests_Load(object sender, EventArgs e)
        {
            var searchRequest = new RequestSearchRequest
            {
                StatusId = (int)EStatus.Finished
            };

            var requestList = await _requestService.GetAll <List <Request> >(searchRequest);

            var sourceList = new List <RequestReport>();

            foreach (var request in requestList)
            {
                var client = await _authService.GetById(request.ClientId);

                var clientAddress = await _addressService.GetById <Address>((int)client.AddressId);

                var requestAddress = await _addressService.GetById <Address>(request.DeliveryAddress);

                var offerRequest = new OfferSearchRequest
                {
                    OfferStatusId = (int)EOfferStatus.Finished,
                    RequestId     = request.RequestId
                };

                var finishedOffer = await _offerService.GetAll <List <Offer> >(offerRequest);

                var companyId = finishedOffer[0].UserId;
                var company   = await _authService.GetById(companyId);

                var requestRow = new RequestReport
                {
                    Client      = $"{client.FirstName} {client.LastName}",
                    AddressFrom = clientAddress.City,
                    AddressTo   = requestAddress.City,
                    Company     = company.Company,
                    Date        = request.Date,
                    Price       = $"{request.Price} $"
                };

                sourceList.Add(requestRow);
            }

            RequestReportBindingSource.DataSource = sourceList;

            this.rvRequests.RefreshReport();
        }
Exemple #9
0
        private async Task <bool> RequestHaveAcceptedOffer()
        {
            var searchRequest = new OfferSearchRequest
            {
                RequestId     = Id,
                OfferStatusId = (int)Models.OfferStatus.Accepted
            };
            var offerList = await _offerService.GetAll <List <Offer> >(searchRequest);

            if (offerList.Count > 0)
            {
                AcceptedOfferId = offerList[0].OfferId;
                SupplierId      = offerList[0].UserId;
                return(true);
            }
            else
            {
                return(false);
            }
        }
Exemple #10
0
        public Model.OfferCounter GetOfferCounter(OfferSearchRequest request)
        {
            var query = _context.Offer.AsQueryable();

            if (!string.IsNullOrWhiteSpace(request?.AppUserId))
            {
                query = query.Where(x => x.AppUserId == request.AppUserId);
            }

            var list = query.ToList();

            var offerCounter = new OfferCounter
            {
                AcceptedOffers   = query.Where(a => a.StatusId == 2).Count(),
                DeniedOffers     = query.Where(a => a.StatusId == 4).Count(),
                DoneOffers       = query.Where(a => a.StatusId == 5).Count(),
                InProgressOffers = query.Where(a => a.StatusId == 3).Count(),
                WaitingOffers    = query.Where(a => a.StatusId == 1).Count()
            };

            return(offerCounter);
        }
Exemple #11
0
 public Model.OfferCounter GetOfferCounter([FromQuery] OfferSearchRequest request)
 {
     return(_service.GetOfferCounter(request));
 }
Exemple #12
0
 public Model.DashboardOffer GetDashboardOffers([FromQuery] OfferSearchRequest request)
 {
     return(_service.GetDashboardOffers(request));
 }
Exemple #13
0
 public IList <Model.Offer> GetAll([FromQuery] OfferSearchRequest request)
 {
     return(_service.GetAll(request));
 }
Exemple #14
0
        private async Task InitFieldsVisibility()
        {
            _userId = int.Parse(JWTService.DecodeJWT());

            var offerRequest = new OfferSearchRequest
            {
                RequestId     = Id,
                OfferStatusId = (int)Models.OfferStatus.Accepted
            };

            var allAcceptedOffers = await _offerService.GetAll <List <Offer> >(offerRequest);

            offerRequest.UserId = _userId;

            var acceptedOffers = allAcceptedOffers.Where(a => a.UserId == _userId).ToList();

            offerRequest.OfferStatusId = (int)Models.OfferStatus.Active;
            var activeOffers = await _offerService.GetAll <List <Offer> >(offerRequest);

            offerRequest.OfferStatusId = (int)Models.OfferStatus.Finished;
            var finishedOffers = await _offerService.GetAll <List <Offer> >(offerRequest);

            offerRequest.OfferStatusId = (int)Models.OfferStatus.Rejected;
            var rejectedOffers = await _offerService.GetAll <List <Offer> >(offerRequest);


            if (activeOffers.Count == 0 && acceptedOffers.Count == 0 && finishedOffers.Count == 0 && allAcceptedOffers.Count == 0)
            {
                SendOfferVisible = true;
            }
            else
            {
                SendOfferVisible = false;
            }

            if (finishedOffers.Count > 0)
            {
                OfferSendMessageVisible = false;
                OfferRejected           = false;
                OfferFinished           = true;
                OfferAcceptedVisible    = false;
            }
            else if (activeOffers.Count > 0)
            {
                OfferSendMessageVisible = true;
                OfferRejected           = false;
                OfferFinished           = false;
                OfferAcceptedVisible    = false;
            }
            else if (acceptedOffers.Count > 0)
            {
                OfferSendMessageVisible = false;
                OfferRejected           = false;
                OfferFinished           = false;
                OfferAcceptedVisible    = true;
            }
            else if (rejectedOffers.Count > 0)
            {
                OfferSendMessageVisible = false;
                OfferRejected           = true;
                OfferFinished           = false;
                OfferAcceptedVisible    = false;
            }
        }
Exemple #15
0
        public async Task Init()
        {
            var request = await _requestService.GetById <Request>(Id);

            if (request.Inactive == true)
            {
                InActiveRequest = true;
                ActiveRequest   = false;
                return;
            }
            InitRequest(request);
            var address = await _addressService.GetById <Address>(request.DeliveryAddress);

            var country = await _countryService.GetById <Country>((int)address.CountryId);

            var status = await _statusService.GetById <Model.Status>(request.StatusId);

            InitStatus(status);

            Address    = $"{country.Name}, {address.ZipCode}, {address.City}";
            IsSupplier = JWTService.DecodeJWTRole() == Role.Supplier;
            IsClient   = !IsSupplier;

            if (IsClient)
            {
                var searchRequest = new OfferSearchRequest
                {
                    RequestId     = Id,
                    OfferStatusId = (int)Models.OfferStatus.Active
                };
                var offerList = await _offerService.GetAll <List <Offer> >(searchRequest);

                if (offerList.Count == 0)
                {
                    HaveAcceptedOffer = await RequestHaveAcceptedOffer();

                    HaveFinishedOffer = await RequestHaveFinishedOffer();

                    HaveActiveOffers = await RequestHaveActiveOffer();

                    var finishedOffer = await RequestHaveFinishedOfferWithoutRating();

                    if (!HaveAcceptedOffer && !finishedOffer)
                    {
                        ShowEditButton = true;
                    }

                    if (HaveFinishedOffer)
                    {
                        var list = await _ratingTypeService.GetAll <List <Model.RatingType> >();

                        RatingTypeList.Clear();
                        foreach (var rt in list)
                        {
                            RatingTypeList.Add(rt);
                        }
                    }
                }
                else
                {
                    ShowList = true;
                }

                OfferList.Clear();
                foreach (var offer in offerList)
                {
                    var supplier = await _authService.GetById(offer.UserId);

                    var supplierAddress = await _addressService.GetById <Address>((int)supplier.AddressId);

                    var supplierCountry = await _countryService.GetById <Country>((int)supplierAddress.CountryId);

                    var user = await _authService.GetById(offer.UserId);

                    var newOffer = new RequestDetailsOffers
                    {
                        Company    = user.Company,
                        UserFromId = offer.UserId,
                        Address    = supplierCountry.Name + ", " + supplierAddress.City,
                        OfferId    = offer.OfferId
                    };

                    OfferList.Add(newOffer);
                }
                OffersHeight = OfferList.Count * 65;
            }
            else
            {
                await InitFieldsVisibility();
            }

            var recommendedRequests = await _requestService.RecommendRequest <List <Request> >(Id);

            RecommendedRequests.Clear();
            foreach (var recRequest in recommendedRequests)
            {
                var toAddress = await _addressService.GetById <Address>(recRequest.DeliveryAddress);

                var toCountry = await _countryService.GetById <Country>((int)toAddress.CountryId);

                var fromUser = await _authService.GetById(recRequest.ClientId);

                var fromAddress = await _addressService.GetById <Address>((int)fromUser.AddressId);

                var fromCountry = await _countryService.GetById <Country>((int)fromAddress.CountryId);

                var requestModel = new RequestModel
                {
                    FromCountry = fromCountry.Name,
                    Price       = recRequest.Price,
                    RequestId   = recRequest.RequestId,
                    ToCountry   = toCountry.Name,
                    FullName    = $"{fromUser.FirstName} {fromUser.LastName}"
                };

                RecommendedRequests.Add(requestModel);
            }

            if (RecommendedRequests.Count > 0)
            {
                RecommendShowList = true;
            }
            else
            {
                RecommendShowList = false;
            }
        }
Exemple #16
0
        public List <OffersVM> Get(OfferSearchRequest req)
        {
            var query     = _context.Offers.Include(o => o.Schedule).ThenInclude(s => s.ScheduleStatus).Include(s => s.Schedule.Request).ThenInclude(r => r.User).ThenInclude(u => u.CarModel).AsQueryable();
            var list      = new List <Database.Offers>();
            var modelList = new List <Data.ViewModel.OffersVM>();

            if (req.ScheduleID > 0)
            {
                query = query.Where(o => o.ScheduleID == req.ScheduleID);
                list  = query.ToList();
                foreach (var x in list)
                {
                    modelList.Add(new Data.ViewModel.OffersVM()
                    {
                        ScheduleID       = x.Schedule.ScheduleID,
                        RequestID        = x.Schedule.RequestID,
                        DateofSchedule   = x.Schedule.DateofSchedule,
                        Date             = x.Schedule.DateofSchedule.Day + " " + x.Schedule.DateofSchedule.Month + "." + x.Schedule.DateofSchedule.Year,
                        ScheduleStatusID = x.Schedule.ScheduleStatusID,
                        Status           = x.Schedule.ScheduleStatus.name,
                        isPaid           = x.Schedule.isPaid,
                        totalPrice       = x.Schedule.totalPrice,
                        User             = x.Schedule.Request.User.FirstName + " " + x.Schedule.Request.User.LastName,
                        OfferID          = x.OfferID,
                        isLocked         = x.isLocked,
                        partsSelected    = x.partsSelected,
                        UserCar          = x.Schedule.Request.User.CarModel.CarModelName
                    });
                }
                return(modelList);
            }

            if (req.AdminSearch)
            {
                query = query.Where(o => o.Schedule.ScheduleStatusID == 1 && o.partsSelected == true && o.Schedule.Request.CarServiceID == req.CarServiceID);
                list  = query.OrderBy(o => o.Schedule.DateofSchedule).ToList();
            }

            foreach (var x in list)
            {
                /*
                 * public int ScheduleID { get; set; }
                 *
                 * public int RequestID { get; set; }
                 *
                 * public DateTime DateofSchedule { get; set; }
                 *
                 * public string Date { get; set; }
                 * public int ScheduleStatusID { get; set; } //napraviti referentnu za statuse
                 *
                 * public string Status { get; set; }
                 *
                 * public bool isPaid { get; set; }
                 *
                 * public double totalPrice { get; set; }
                 *
                 * public string User { get; set; }
                 * public int OfferID { get; set; }
                 *
                 * public bool isLocked { get; set; }
                 *
                 * public bool partsSelected { get; set; }//from user
                 */
                modelList.Add(new Data.ViewModel.OffersVM()
                {
                    ScheduleID       = x.Schedule.ScheduleID,
                    RequestID        = x.Schedule.RequestID,
                    DateofSchedule   = x.Schedule.DateofSchedule,
                    Date             = x.Schedule.DateofSchedule.Day + " " + x.Schedule.DateofSchedule.Month + "." + x.Schedule.DateofSchedule.Year,
                    ScheduleStatusID = x.Schedule.ScheduleStatusID,
                    Status           = x.Schedule.ScheduleStatus.name,
                    isPaid           = x.Schedule.isPaid,
                    totalPrice       = x.Schedule.totalPrice,
                    User             = x.Schedule.Request.User.FirstName + " " + x.Schedule.Request.User.LastName,
                    OfferID          = x.OfferID,
                    isLocked         = x.isLocked,
                    partsSelected    = x.partsSelected,
                    UserCar          = x.Schedule.Request.User.CarModel.CarModelName
                });
            }
            return(modelList);
        }
 public List <Data.ViewModel.OffersVM> Get([FromQuery] OfferSearchRequest req)
 {
     return(_service.Get(req));
 }