示例#1
0
        public async Task GetServicesByVendor_ReturnsServicesOfVendor()
        {
            // arrange
            var vendor = new Vendor {
                id = 123, userName = "******", name = "name1", website = "website_1"
            };
            var service = new VendorServices
            {
                vendorId           = 123,
                flatFee            = true,
                price              = 20,
                serviceDescription = "desc",
                serviceName        = "svcName",
                serviceType        = "Venue"
            };

            vendor.services = new List <VendorServices> {
                service
            };

            _vendorServicesQueryMock.Setup(x => x.GetServicesByVendor(vendor.id.Value))
            .Returns(Task.Factory.StartNew(() => vendor.services));

            // act
            var task = await _sut.GetServicesByVendor(vendor.id.Value);

            // assert
            Assert.IsType <OkObjectResult>(task);

            var result      = task as OkObjectResult;
            var usersResult = result.Value as List <VendorServices>;

            Assert.Equal(vendor.services, usersResult);
        }
示例#2
0
        public async Task Search_ReturnsServices()
        {
            // arrange
            var vendorSearchProp = new VendorSearchProperties {
                type = "Venue", maxPrice = 100
            };
            var service = new VendorServices
            {
                vendorId           = 123,
                flatFee            = true,
                price              = 20,
                serviceDescription = "desc",
                serviceName        = "svcName",
                serviceType        = "Venue"
            };
            List <VendorServices> services = new List <VendorServices> {
                service, service
            };

            _vendorServicesQueryMock.Setup(x => x.Search(vendorSearchProp))
            .Returns(Task.Factory.StartNew(() => services));

            // act
            var task = await _sut.Search(vendorSearchProp);

            // assert
            Assert.IsType <OkObjectResult>(task);

            var result      = task as OkObjectResult;
            var usersResult = result.Value as List <VendorServices>;

            Assert.Equal(services, usersResult);
        }
示例#3
0
        public async Task GetById_ReturnsVendorService()
        {
            // arrange
            var service = new VendorServices
            {
                id                 = 1,
                vendorId           = 123,
                flatFee            = true,
                price              = 20,
                serviceDescription = "desc",
                serviceName        = "svcName",
                serviceType        = "Venue"
            };

            _vendorServicesQueryMock.Setup(x => x.GetById(1))
            .Returns(Task.Factory.StartNew(() => service));

            // act
            var task = await _sut.GetServiceById(1);

            // assert
            Assert.IsType <OkObjectResult>(task);

            var result      = task as OkObjectResult;
            var usersResult = result.Value as VendorServices;

            Assert.Equal(service, usersResult);
        }
示例#4
0
        public async Task PostReservationToVendor_Return202()
        {
            var reservation = new Reservation {
                id = 1, eventId = "1", vendorId = 1, vendorServiceId = 1, status = "New"
            };
            var vendor = new Vendor {
                id = 1, userName = "******", name = "name1", website = "website_1"
            };
            var service = new VendorServices
            {
                id                 = 1,
                vendorId           = 1,
                flatFee            = true,
                price              = 20,
                serviceDescription = "desc",
                serviceName        = "svcName",
                serviceType        = "Venue"
            };

            var emailMsg = new EmailMessage();

            emailMsg.from    = new source.Models.Email.EmailRecipient("*****@*****.**");
            emailMsg.subject = "Unit Test";

            List <EmailPersonalization> personalizations = new List <EmailPersonalization>();
            EmailPersonalization        personalization  = new EmailPersonalization();

            personalization.to.Add((new EmailRecipient("*****@*****.**")));
            personalizations.Add(personalization);
            emailMsg.personalizations = personalizations;

            List <EmailContent> contents = new List <EmailContent>();

            contents.Add(new EmailContent("text/plain", "unit content"));
            emailMsg.content = contents;

            _reservationQueryMock.Setup(x => x.GetById(It.IsAny <int>()))
            .Returns(Task.Factory.StartNew(() => reservation));

            _vendorQueryMock.Setup(x => x.GetById(1))
            .Returns(Task.Factory.StartNew(() => vendor));

            _vendorServiceQueryMock.Setup(x => x.GetById(1))
            .Returns(Task.Factory.StartNew(() => service));

            _emailQueryMock.Setup(x => x.sendEmailViaPostAsync(emailMsg))
            .Returns(Task.Factory.StartNew(() => HttpStatusCode.Accepted));

            var task = await _emailController.PostReservationToVendor(1, emailMsg);

            // assert
            Assert.IsType <HttpStatusCode>(task);
            Assert.Equal(HttpStatusCode.Accepted, task);
        }
示例#5
0
        public async Task GetById_ReturnsNotFound()
        {
            //arrange
            VendorServices service = null;

            _vendorServicesQueryMock.Setup(x => x.GetById(1))
            .Returns(Task.Factory.StartNew(() => service));

            var task = await _sut.GetServiceById(1);

            // assert
            Assert.IsType <NotFoundResult>(task);
        }
示例#6
0
        /// <summary>
        /// Inserts vendor service
        /// </summary>
        /// <param name="service">Vendor service</param>
        /// <returns>Saved vendor service</returns>
        public async Task InsertService(VendorServices service)
        {
            using (var db = _database)
            {
                var connection = db.Connection as MySqlConnection;
                await connection.OpenAsync();

                string query = @"INSERT INTO occasions.vendorServices (vendorId, serviceType, serviceName, serviceDescription, flatFee, price, unitsAvailable, googleId, active) "
                               + @"VALUES (@vendorId, @serviceType, @serviceName, @serviceDescription, @flatFee, @price, @unitsAvailable, @googleId, 1); ";


                var addedService = await connection.ExecuteAsync(query, service);
            }
        }
        VendorService PrepareVendorService(string[] parts, Vendor vendor)
        {
            var currentVendorService = new VendorService();

            try
            {
                currentVendorService.VendorId          = vendor.VendorId;
                currentVendorService.Id                = parts[2];
                currentVendorService.Number            = parts[4];
                currentVendorService.Name              = parts[5];
                currentVendorService.AccountLabel      = parts[6];
                currentVendorService.FormatInput       = parts[7];
                currentVendorService.CommissionPercent = string.IsNullOrEmpty(parts[8]) ? 0 : Decimal.Parse(parts[8].Replace(".", CultureInfo.CurrentCulture.NumberFormat.NumberDecimalSeparator)
                                                                                                            .Replace(",", CultureInfo.CurrentCulture.NumberFormat.NumberDecimalSeparator));

                currentVendorService.NdsPercent = string.IsNullOrEmpty(parts[9]) ? 0 : Decimal.Parse(parts[9].Replace(".", CultureInfo.CurrentCulture.NumberFormat.NumberDecimalSeparator)
                                                                                                     .Replace(",", CultureInfo.CurrentCulture.NumberFormat.NumberDecimalSeparator));
                currentVendorService.MinimalAmountComission = string.IsNullOrEmpty(parts[10]) ? 0 : Decimal.Parse(parts[10].Replace(".", CultureInfo.CurrentCulture.NumberFormat.NumberDecimalSeparator)
                                                                                                                  .Replace(",", CultureInfo.CurrentCulture.NumberFormat.NumberDecimalSeparator));


                VendorServices.Add(currentVendorService);
            }
            catch (Exception e)
            {
                throw;
            }


            for (var i = 13; i < parts.Length; i++)
            {
                if (parts[i].StartsWith(counterHeader))
                {
                    var counterParts = parts[i].Split(delimiterL3);
                    currentVendorService.Counters.Add(PrepareCounter(counterParts, currentVendorService.Id));
                }
            }

            for (var i = 13; i < parts.Length; i++)
            {
                if (parts[i].StartsWith(addInfoHeader))
                {
                    var addInfoParts = parts[i].Split(delimiterL3);
                    currentVendorService.AddInfos.Add(PrepareAddInfo(addInfoParts, currentVendorService.Id));
                }
            }

            return(currentVendorService);
        }
示例#8
0
        public async Task UpdateServiceType_ThrowsException()
        {
            //arrange
            var            exception = new Exception();
            VendorServices service   = new VendorServices {
                serviceType = "Venue", serviceName = "Test"
            };

            //act
            _vendorServicesQueryMock.Setup(x => x.UpdateService(service))
            .Throws(exception);

            var task = await _sut.Update(service);

            // assert
            Assert.IsType <BadRequestResult>(task);
        }
示例#9
0
        public async Task <IActionResult> GetServiceById(int id)
        {
            try
            {
                VendorServices service = await _vendorServicesQuery.GetById(id);

                if (service == null)
                {
                    return(new NotFoundResult());
                }

                return(new OkObjectResult(service));
            }
            catch (Exception ex)
            {
                await _logger.LogError(HttpContext.User, ex);

                return(new BadRequestResult());
            }
        }
示例#10
0
        public async Task <IActionResult> Update([FromBody] VendorServices service)
        {
            try
            {
                VendorServices newService = await _vendorServicesQuery.UpdateService(service);

                if (newService == null)
                {
                    return(new NotFoundResult());
                }

                return(new OkObjectResult(newService));
            }
            catch (Exception ex)
            {
                await _logger.LogError(HttpContext.User, ex);

                return(new BadRequestResult());
            }
        }
示例#11
0
        public async Task <IActionResult> Insert([FromBody] VendorServices service)
        {
            try
            {
                if (service == null)
                {
                    return(new UnprocessableEntityResult());
                }

                await _vendorServicesQuery.InsertService(service);

                return(new OkObjectResult(true));
            }
            catch (Exception ex)
            {
                await _logger.LogError(HttpContext.User, ex);

                return(new BadRequestResult());
            }
        }
示例#12
0
        public async Task DeactivateService_ReturnsTrue()
        {
            // arrange
            var service = new VendorServices {
                id = 123
            };

            _vendorServicesQueryMock.Setup(x => x.DeactivateByServiceId(It.IsAny <int>()))
            .Returns(Task.Factory.StartNew(() => true));

            // act
            var task = await _sut.Delete(service.id.Value);

            // assert
            Assert.IsType <OkObjectResult>(task);

            var result      = task as OkObjectResult;
            var usersResult = result.Value as bool?;

            Assert.True(usersResult);
        }
示例#13
0
        public async Task GetVendorsByService_ReturnsVendorsWithService()
        {
            // arrange
            var vendor = new Vendor {
                id = 123, userName = "******", name = "name1", website = "website_1"
            };
            var service = new VendorServices
            {
                vendorId           = 123,
                flatFee            = true,
                price              = 20,
                serviceDescription = "desc",
                serviceName        = "svcName",
                serviceType        = "Venue"
            };

            vendor.services = new List <VendorServices> {
                service
            };
            var vendors = new List <Vendor> {
                vendor, vendor, vendor
            };

            _vendorServicesQueryMock.Setup(x => x.GetVendorsByServiceTypes("Venue"))
            .Returns(Task.Factory.StartNew(() => vendors));

            // act
            var task = await _sut.GetVendorsByServiceType("Venue");

            // assert
            Assert.IsType <OkObjectResult>(task);

            var result      = task as OkObjectResult;
            var usersResult = result.Value as List <Vendor>;

            Assert.Equal(vendors[2].id, usersResult[2].id);
            Assert.Equal("Venue", usersResult[0].services.FirstOrDefault().serviceType);
        }
示例#14
0
        /// <summary>
        /// Updates vendor service
        /// </summary>
        /// <param name="service">Updated vendor service</param>
        /// <returns>Saved vendor service</returns>
        public async Task <VendorServices> UpdateService(VendorServices service)
        {
            try
            {
                using (var db = _database)
                {
                    var connection = db.Connection as MySqlConnection;
                    await connection.OpenAsync();

                    string query = @"UPDATE occasions.vendorServices "
                                   + @"SET serviceType = @serviceType, serviceName = @serviceName, serviceDescription = @serviceDescription, "
                                   + @"flatFee = @flatFee, price = @price, unitsAvailable = @unitsAvailable "
                                   + @"WHERE vendorId = @vendorId AND id = @id; "
                                   + @"SELECT * FROM occasions.vendorServices WHERE id = @id;";

                    var updatedService = connection.QueryFirstAsync <VendorServices>(query, service).Result;
                    return(updatedService);
                }
            }
            catch (Exception ex)
            {
                return(null);
            }
        }
示例#15
0
        public async Task <HttpStatusCode> PostReservationToVendor(int reservationId, [FromBody] EmailMessage emailMsg)
        {
            // retrieve reservation via reservationId
            Reservation reservation = await _reservationQuery.GetById(reservationId);

            // check if reservation is returned
            if (reservation == null)
            {
                return(HttpStatusCode.NotFound);
            }

            int    vendorId = reservation.vendorId ?? default(int);
            Vendor vendor   = await _vendorQuery.GetById(vendorId);

            if (vendor == null)
            {
                return(HttpStatusCode.NotFound);
            }

            int            vendorServiceId = reservation.vendorServiceId ?? default(int);
            VendorServices vendorService   = await _vendorServiceQuery.GetById(vendorServiceId);

            if (vendorService == null)
            {
                return(HttpStatusCode.NotFound);
            }

            Boolean isSuccessful = true;

            // create to list and set
            List <EmailPersonalization> personalizations = new List <EmailPersonalization>();
            List <EmailRecipient>       emailTos         = new List <EmailRecipient>();
            List <EmailContent>         emailContents    = new List <EmailContent>();
            EmailPersonalization        personalization  = new EmailPersonalization();

            emailTos.Add(new EmailRecipient(vendor.name, vendor.userName));
            personalization.to = emailTos;
            personalizations.Add(personalization);
            emailMsg.personalizations = personalizations;

            // Update Content
            String hostname = _emailQuery.getBaseUrlForEmail(HttpContext);

            EmailContent emailContent = new EmailContent();

            emailContent.type = "text/html";

            StringBuilder htmlBuilder = new StringBuilder();

            htmlBuilder.AppendLine("<div>").Append("Hello, ").Append(vendor.name).Append(". You have a requested reservation for the ");
            htmlBuilder.Append(vendorService.serviceName).Append(" waiting for you via Occasions.</div>");
            htmlBuilder.AppendLine("Please click ").Append("<a href='").Append(hostname).Append("/reservations-vendor'>here</a>").Append(" to view it.");
            emailContent.value = htmlBuilder.ToString();
            Console.WriteLine(htmlBuilder.ToString());
            emailContents.Add(emailContent);
            emailMsg.content = emailContents;

            Task <HttpStatusCode> response = _emailQuery.sendEmailViaPostAsync(emailMsg);

            if (response.Result.Equals(HttpStatusCode.Accepted))
            {
                Console.WriteLine("Successfully sent email to " + vendor.userName);
            }
            else
            {
                isSuccessful = false;
                Console.WriteLine("Error sending email to " + vendor.userName);
            }

            if (isSuccessful)
            {
                return(HttpStatusCode.Accepted);
            }
            else
            {
                return(HttpStatusCode.BadRequest);
            }
        }
示例#16
0
 public VendorsController(VendorServices crewServices)
 {
     this.crewServices = crewServices;
 }