예제 #1
0
        public IEnumerable <QuotationResponse> PackagesByTrip(QuotationRequest datosCotizacion)
        {
            List <QuotationResponse> response         = new List <QuotationResponse>();
            IList <Quotation>        PackagesWithTrip = (from i in _context.Quotation
                                                         where i.TripId == datosCotizacion.ViajeId && i.QuotationStatusId == 3
                                                         orderby i.Trip.Id descending
                                                         select i).ToList <Quotation>();

            foreach (Quotation asignados in PackagesWithTrip)
            {
                QuotationResponse item = new QuotationResponse();
                item.NombreCliente   = asignados.User.Nombre;
                item.URL             = asignados.Url;
                item.ComisionTraigo  = Math.Round(asignados.ComisionTraigoIva, 2);
                item.ComisionViajero = Math.Round(asignados.ComisionViajero, 2);
                item.Precio          = Math.Round(asignados.Precio, 2);
                item.NombreItem      = asignados.NombreItem;
                item.Peso            = asignados.Peso;
                item.Id             = asignados.Id;
                item.TrackingNumber = asignados.TackingNumber;
                item.Estado         = asignados.QuotationStatus.Nombre;
                item.ComisionTotal  = Math.Round(asignados.ComisionViajero + asignados.ComisionTraigo + asignados.ComisionTraigoIva, 2);
                Double costoTotal = Math.Round(asignados.ComisionTraigo + asignados.ComisionViajero + asignados.Precio + asignados.ComisionTraigoIva, 2);
                response.Add(item);
            }

            return(response);
        }
예제 #2
0
        public IEnumerable <QuotationResponse> GetQuotationByTrip(QuotationRequest datosCotizacion)
        {
            var trip = _context.Trip.SingleOrDefault(c => c.Id == datosCotizacion.ViajeId);

            List <QuotationResponse> respuesta       = new List <QuotationResponse>();
            IList <Quotation>        QuotationByTrip = (from i in _context.Quotation
                                                        where i.TripId == trip.Id
                                                        orderby i.FechaCotizacion descending
                                                        select i).ToList <Quotation>();

            foreach (Quotation cotizacion in QuotationByTrip)
            {
                QuotationResponse item = new QuotationResponse();
                item.URL             = cotizacion.Url;
                item.ComisionTraigo  = Math.Round(cotizacion.ComisionTraigoIva, 2);
                item.ComisionViajero = Math.Round(cotizacion.ComisionViajero, 2);
                item.Precio          = Math.Round(cotizacion.Precio, 2);
                item.NombreItem      = cotizacion.NombreItem;
                item.Peso            = cotizacion.Peso;
                item.Id            = cotizacion.Id;
                item.ComisionTotal = Math.Round(cotizacion.ComisionViajero + cotizacion.ComisionTraigo + cotizacion.ComisionTraigoIva, 2);
                Double costoTotal = Math.Round(cotizacion.ComisionTraigo + cotizacion.ComisionViajero + cotizacion.Precio + cotizacion.ComisionTraigoIva, 2);
                respuesta.Add(item);
            }
            return(respuesta);
        }
예제 #3
0
        public IEnumerable <QuotationResponse> GetQuotationByUser(QuotationRequest datosUser)
        {
            var user = _context.User.SingleOrDefault(c => c.Email == datosUser.Email);
            List <QuotationResponse> respuesta       = new List <QuotationResponse>();
            IList <Quotation>        QuotationByUser = (from i in _context.Quotation
                                                        where i.UserId == user.Id
                                                        orderby i.FechaCotizacion ascending
                                                        select i).ToList <Quotation>();

            foreach (Quotation cotizacion in QuotationByUser)
            {
                QuotationResponse item = new QuotationResponse();
                item.URL             = cotizacion.Url;
                item.ComisionTraigo  = Math.Round(cotizacion.ComisionTraigoIva, 2);
                item.ComisionViajero = Math.Round(cotizacion.ComisionViajero, 2);
                item.Precio          = Math.Round(cotizacion.Precio, 2);
                item.NombreItem      = cotizacion.NombreItem;
                item.Peso            = cotizacion.Peso;
                item.Id            = cotizacion.Id;
                item.Estado        = cotizacion.QuotationStatus.Nombre;
                item.ComisionTotal = Math.Round(cotizacion.ComisionViajero + cotizacion.ComisionTraigoIva, 2);
                //Double costoTotal = Math.Round(cotizacion.ComisionTraigo + cotizacion.ComisionViajero + cotizacion.Precio + cotizacion.ComisionTraigoIva, 2);
                if (cotizacion.FechaVuelta.HasValue)
                {
                    item.FechaVuelta = cotizacion.Trip.User.Nombre + " / " + cotizacion.Trip.Vuelta.ToString("dd/MM/yyyy");
                }
                else
                {
                    item.FechaVuelta = "No definido";
                }
                item.TextoResultado = "Estimado viajero, tenemos esta oferta por el item " + cotizacion.NombreItem + " de peso " + item.Peso + " lbs. Oferta de comisión: " + item.ComisionViajero + " USD.";
                respuesta.Add(item);
            }
            return(respuesta);
        }
예제 #4
0
        public ActionResult GetQuote(string platform, string Theme, string LoginSecurity, string Profile, string Security, string ReviewRate, string Service, string Database, string featuresstring, string EmailId, string Name, string CompanyName)
        {
            string features = string.Empty;

            ViewBag.isPublicQuote = true;
            var quotationresponse = new QuotationResponse();

            try
            {
                var quotationrequest = new QuotationRequest()
                {
                    platform       = platform,
                    Theme          = Theme,
                    LoginSecurity  = LoginSecurity,
                    Profile        = Profile,
                    Security       = Security,
                    ReviewRate     = ReviewRate,
                    Service        = Service,
                    Database       = Database,
                    featuresstring = featuresstring,
                    EmailId        = EmailId,
                    Name           = Name,
                    CompanyName    = CompanyName
                };
                quotationresponse = new Business.QuotationService().GetQuoteForMobileApp(quotationrequest);
            }
            catch (Exception ex)
            {
            }
            return(PartialView("~/Views/Quotation/_QuotationBreakdown.cshtml", quotationresponse));
        }
예제 #5
0
        private async Task <QuotationResponse> GetDolarQuotation(string currency)
        {
            var response  = new QuotationResponse();
            var formatter = new QuotationFormatter();

            var uri       = WebConfigurationManager.AppSettings["QuotationUrl"];
            var quotation = await apiClient.GetAsync <List <string> >(uri);

            response = formatter.ToQuotationResponse(quotation);
            return(response);
        }
예제 #6
0
        public QuotationResponse GetQuotationById(QuotationRequest datosCotizacion)
        {
            var cotizacion = _context.Quotation.SingleOrDefault(c => c.Id == datosCotizacion.Id);
            QuotationResponse respuesta = new QuotationResponse();

            respuesta.URL            = cotizacion.Url;
            respuesta.NombreItem     = cotizacion.NombreItem;
            respuesta.Precio         = cotizacion.Precio;
            respuesta.IdCategoria    = cotizacion.CategoryId;
            respuesta.Peso           = cotizacion.Peso;
            respuesta.Largo          = cotizacion.Largo;
            respuesta.Ancho          = cotizacion.Ancho;
            respuesta.Alto           = cotizacion.Alto;
            respuesta.TrackingNumber = cotizacion.TackingNumber;
            respuesta.IdEstado       = cotizacion.QuotationStatusId;
            respuesta.IdViaje        = cotizacion.TripId;
            return(respuesta);
        }
예제 #7
0
        public QuotationResponse EditQuotationAll(QuotationRequest datosCotizacion)
        {
            CultureInfo       cultureInfo = Thread.CurrentThread.CurrentCulture;
            TextInfo          textInfo    = cultureInfo.TextInfo;
            QuotationResponse respuesta   = new QuotationResponse();
            var cotizacion = _context.Quotation.SingleOrDefault(c => c.Id == datosCotizacion.Id);

            respuesta.FechaVuelta = "No definido";
            if (datosCotizacion.ViajeId != null)
            {
                var viaje       = _context.Trip.SingleOrDefault(c => c.Id == datosCotizacion.ViajeId);
                var transaccion = _context.TransactionControl.SingleOrDefault(c => c.Id == datosCotizacion.Id);
                if (transaccion == null)
                {
                    TransactionControl nuevaTransaccion = new TransactionControl();
                    nuevaTransaccion.QuotationId    = datosCotizacion.Id;
                    nuevaTransaccion.TripId         = datosCotizacion.ViajeId;
                    nuevaTransaccion.UserId         = cotizacion.User.Id;
                    nuevaTransaccion.TravelerUserId = viaje.UserId;
                    _context.TransactionControl.Add(nuevaTransaccion);
                }
                else
                {
                    transaccion.TripId         = datosCotizacion.ViajeId;
                    transaccion.TravelerUserId = viaje.UserId;
                }

                cotizacion.TripId      = viaje.Id;
                cotizacion.FechaVuelta = viaje.Vuelta.Date;
            }

            if (datosCotizacion.EstadoCotizacion == 3)
            {
                cotizacion.FechaVentaExitosa = DateTime.Now;
            }
            cotizacion.QuotationStatusId = datosCotizacion.EstadoCotizacion;
            cotizacion.TackingNumber     = datosCotizacion.TrackingNumber;
            cotizacion.Url        = datosCotizacion.URL;
            cotizacion.NombreItem = textInfo.ToTitleCase(datosCotizacion.NombreItem);
            cotizacion.Precio     = datosCotizacion.Precio;
            cotizacion.Largo      = datosCotizacion.Largo;
            cotizacion.Ancho      = datosCotizacion.Ancho;
            cotizacion.Alto       = datosCotizacion.Alto;
            cotizacion.CategoryId = datosCotizacion.CategoryId;
            cotizacion.Peso       = datosCotizacion.Peso;
            Double precioIsd = datosCotizacion.Precio * 0.05;

            cotizacion.ISD = Math.Round(precioIsd, 2);
            Double volumen = datosCotizacion.Largo * datosCotizacion.Ancho * datosCotizacion.Alto;

            cotizacion.Volumen = volumen;
            Double volumetrico = volumen / 5000;

            cotizacion.PesoVolumetrico = volumetrico;
            cotizacion.VentaExitosa    = false;
            switch (datosCotizacion.CategoryId)
            {
            case 1:

                cotizacion.ComisionViajero = 100;
                cotizacion.ComisionTraigo  = 50;
                Double precioPesoLaptop = datosCotizacion.Peso * 6;
                if (precioPesoLaptop > 100)
                {
                    cotizacion.ComisionViajero = Math.Round(precioPesoLaptop, 2);
                    cotizacion.ComisionTraigo  = Math.Round(cotizacion.ComisionViajero * 0.50, 2);
                }
                break;


            case 2:
                cotizacion.ComisionViajero = 60;
                cotizacion.ComisionTraigo  = 30;
                Double precioPesoConsola = datosCotizacion.Peso * 6;
                if (precioPesoConsola > 60)
                {
                    cotizacion.ComisionViajero = Math.Round(precioPesoConsola, 2);
                    cotizacion.ComisionTraigo  = Math.Round(cotizacion.ComisionViajero * 0.50, 2);
                }
                break;

            case 3:
                cotizacion.ComisionViajero = 10;
                cotizacion.ComisionTraigo  = 5;
                Double precioPesoPerfumes = datosCotizacion.Peso * 6;
                if (precioPesoPerfumes > 10)
                {
                    cotizacion.ComisionViajero = Math.Round(precioPesoPerfumes, 2);
                    cotizacion.ComisionTraigo  = Math.Round(cotizacion.ComisionViajero * 0.50, 2);
                }
                break;


            case 4:
                cotizacion.ComisionViajero = 50;
                cotizacion.ComisionTraigo  = 20;
                Double precioPesoMonitorComputadora = datosCotizacion.Peso * 6;
                if (precioPesoMonitorComputadora > 50)
                {
                    cotizacion.ComisionViajero = Math.Round(precioPesoMonitorComputadora, 2);
                    cotizacion.ComisionTraigo  = Math.Round(cotizacion.ComisionViajero * 0.50, 2);
                }
                break;

            case 5:
                cotizacion.ComisionViajero = 50;
                cotizacion.ComisionTraigo  = 25;
                Double precioPesoCelular = datosCotizacion.Peso * 6;
                if (precioPesoCelular > 50)
                {
                    cotizacion.ComisionViajero = Math.Round(precioPesoCelular, 2);
                    cotizacion.ComisionTraigo  = Math.Round(cotizacion.ComisionViajero * 0.50, 2);
                }
                break;

            default:
            {
                cotizacion.ComisionViajero = Math.Round(datosCotizacion.Peso * 6, 2);
                cotizacion.ComisionTraigo  = Math.Round(datosCotizacion.Precio * 0.10, 2);
            }
            break;
            }

            cotizacion.ComisionTraigoIva = Math.Round(cotizacion.ComisionTraigo * 1.12, 2);
            _context.SaveChanges();
            if (cotizacion.TripId != null)
            {
                respuesta.FechaVuelta = cotizacion.Trip.User.Nombre + " / " + cotizacion.Trip.Vuelta.ToString("dd/MM/yyyy");
            }
            else
            {
                respuesta.FechaVuelta = "No definido";
            }
            respuesta.ComisionTraigo  = Math.Round(cotizacion.ComisionTraigoIva, 2);
            respuesta.ComisionViajero = Math.Round(cotizacion.ComisionViajero, 2);
            respuesta.Peso            = cotizacion.Peso;
            respuesta.Precio          = cotizacion.Precio;
            respuesta.URL             = cotizacion.Url;
            respuesta.Id             = cotizacion.Id;
            respuesta.Estado         = cotizacion.QuotationStatus.Nombre;
            respuesta.TrackingNumber = cotizacion.TackingNumber;
            respuesta.NombreItem     = cotizacion.NombreItem;
            Double costoTraer = Math.Round(cotizacion.ComisionViajero + cotizacion.ComisionTraigoIva, 2);
            Double costoTotal = Math.Round(cotizacion.ComisionViajero + cotizacion.Precio + cotizacion.ComisionTraigoIva, 2);

            respuesta.ComisionTotal  = costoTotal;
            respuesta.TextoResultado = "Estimado usuario, su cotización de " + cotizacion.NombreItem + " de peso " + cotizacion.Peso + " lbs. El valor a pagar es " + costoTraer + " USD.";
            return(respuesta);
        }
예제 #8
0
        public QuotationResponse NewQuotation(QuotationRequest datosCotizacion)
        {
            CultureInfo cultureInfo = Thread.CurrentThread.CurrentCulture;
            TextInfo    textInfo    = cultureInfo.TextInfo;

            if (datosCotizacion.Peso == 0 || datosCotizacion.Precio == 0)
            {
                throw new HttpResponseException(HttpStatusCode.BadRequest);
            }
            var       user       = _context.User.SingleOrDefault(c => c.Email == datosCotizacion.Email);
            Quotation cotizacion = new Quotation();

            cotizacion.Url               = datosCotizacion.URL;
            cotizacion.NombreItem        = textInfo.ToTitleCase(datosCotizacion.NombreItem);
            cotizacion.UserId            = user.Id;
            cotizacion.FechaCotizacion   = DateTime.Now.Date;
            cotizacion.FechaVentaExitosa = DateTime.Now.Date;
            cotizacion.Precio            = datosCotizacion.Precio;
            cotizacion.Largo             = datosCotizacion.Largo;
            cotizacion.Ancho             = datosCotizacion.Ancho;
            cotizacion.Alto              = datosCotizacion.Alto;
            cotizacion.CategoryId        = datosCotizacion.CategoryId;
            cotizacion.Peso              = Math.Round(datosCotizacion.Peso, 2);
            cotizacion.QuotationStatusId = 1;
            cotizacion.PaymentId         = 1;
            Double precioIsd = datosCotizacion.Precio * 0.05;

            cotizacion.ISD = Math.Round(precioIsd, 2);
            Double volumen = datosCotizacion.Largo * datosCotizacion.Ancho * datosCotizacion.Alto;

            cotizacion.Volumen = volumen;
            Double volumetrico = volumen / 5000;

            cotizacion.PesoVolumetrico = volumetrico;
            cotizacion.VentaExitosa    = false;

            switch (datosCotizacion.CategoryId)
            {
            case 1:

                cotizacion.ComisionViajero = 100;
                cotizacion.ComisionTraigo  = 50;
                Double precioPesoLaptop = datosCotizacion.Peso * 6;
                if (precioPesoLaptop > 100)
                {
                    cotizacion.ComisionViajero = Math.Round(precioPesoLaptop, 2);
                    cotizacion.ComisionTraigo  = Math.Round(cotizacion.ComisionViajero * 0.50, 2);
                }
                break;


            case 2:
                cotizacion.ComisionViajero = 60;
                cotizacion.ComisionTraigo  = 30;
                Double precioPesoConsola = datosCotizacion.Peso * 6;
                if (precioPesoConsola > 60)
                {
                    cotizacion.ComisionViajero = Math.Round(precioPesoConsola, 2);
                    cotizacion.ComisionTraigo  = Math.Round(cotizacion.ComisionViajero * 0.50, 2);
                }
                break;

            case 3:
                cotizacion.ComisionViajero = 10;
                cotizacion.ComisionTraigo  = 5;
                Double precioPesoPerfumes = datosCotizacion.Peso * 6;
                if (precioPesoPerfumes > 10)
                {
                    cotizacion.ComisionViajero = Math.Round(precioPesoPerfumes, 2);
                    cotizacion.ComisionTraigo  = Math.Round(cotizacion.ComisionViajero * 0.50, 2);
                }
                break;


            case 4:
                cotizacion.ComisionViajero = 50;
                cotizacion.ComisionTraigo  = 20;
                Double precioPesoMonitorComputadora = datosCotizacion.Peso * 6;
                if (precioPesoMonitorComputadora > 50)
                {
                    cotizacion.ComisionViajero = Math.Round(precioPesoMonitorComputadora, 2);
                    cotizacion.ComisionTraigo  = Math.Round(cotizacion.ComisionViajero * 0.50, 2);
                }
                break;

            case 5:
                cotizacion.ComisionViajero = 50;
                cotizacion.ComisionTraigo  = 25;
                Double precioPesoCelular = datosCotizacion.Peso * 6;
                if (precioPesoCelular > 50)
                {
                    cotizacion.ComisionViajero = Math.Round(precioPesoCelular, 2);
                    cotizacion.ComisionTraigo  = Math.Round(cotizacion.ComisionViajero * 0.50, 2);
                }
                break;

            default:
            {
                cotizacion.ComisionViajero = Math.Round(datosCotizacion.Peso * 6, 2);
                cotizacion.ComisionTraigo  = Math.Round(datosCotizacion.Precio * 0.10, 2);
            }
            break;
            }

            _context.Quotation.Add(cotizacion);
            _context.SaveChanges();
            QuotationResponse respuesta = new QuotationResponse();

            respuesta.ComisionTraigo  = cotizacion.ComisionTraigo;
            respuesta.ComisionViajero = cotizacion.ComisionViajero;
            respuesta.Peso            = cotizacion.Peso;
            respuesta.Precio          = cotizacion.Precio;
            respuesta.URL             = cotizacion.Url;
            respuesta.Id          = cotizacion.Id;
            respuesta.NombreItem  = cotizacion.NombreItem;
            respuesta.FechaVuelta = "Fecha aún no asignada";
            Double costoTotal = Math.Round(cotizacion.ComisionViajero + cotizacion.Precio + cotizacion.ComisionTraigo, 2);

            respuesta.ComisionTotal = costoTotal;
            return(respuesta);
        }
 //... other class methods
 public void GeneratePdfAsync(QuotationResponse response)
 {
     var currentPath = System.Web.Hosting.HostingEnvironment.ApplicationPhysicalPath;