コード例 #1
0
        public static async Task <Customer> InsertCustomer(CustomerOrderDataModel cdm)
        {
            if (cdm != null)
            {
                Customer c = new Customer();
                c.CustomerId     = Guid.NewGuid();
                c.Email          = cdm.measurements.email;
                c.MeasurementsId = Guid.NewGuid();

                //insert customer
                using (var conn = Business.Database.Connection)
                {
                    var newCustomer = await conn.QueryAsync <Customer>("CustomerOrderInsert", new
                    {
                        c.CustomerId,
                        c.Email,
                        c.MeasurementsId
                    },
                                                                       commandType : CommandType.StoredProcedure);

                    if (newCustomer.Count() > 0)
                    {
                        return(newCustomer.AsList()[0]);
                    }
                    return(null);
                }
            }
            return(null);
        }
コード例 #2
0
        public static async Task <Measurements> InsertMeasurments(CustomerOrderDataModel cdm, Guid measurementsId)
        {
            if (cdm != null)
            {
                Measurements m = new Measurements();
                m.MeasurementsId = measurementsId;
                m.bust           = cdm.measurements.bust;
                m.waist          = cdm.measurements.waist;
                m.hips           = cdm.measurements.hips;
                m.neck           = cdm.measurements.neck;
                m.shoulder       = cdm.measurements.shoulder;
                m.backWidth      = cdm.measurements.backWidth;
                m.frontLength    = cdm.measurements.frontLength;
                m.backLength     = cdm.measurements.backLength;
                m.crotch         = cdm.measurements.crotch;
                m.inseam         = cdm.measurements.inseam;
                m.outseam        = cdm.measurements.outseam;
                m.thigh          = cdm.measurements.thigh;
                m.knee           = cdm.measurements.knee;
                m.leg            = cdm.measurements.leg;

                //insert measurements
                using (var conn = Business.Database.Connection)
                {
                    var newMeasurements = await conn.QueryAsync <Measurements>("MeasurementsInsert", new
                    {
                        m.MeasurementsId,
                        m.bust,
                        m.waist,
                        m.hips,
                        m.neck,
                        m.shoulder,
                        m.backWidth,
                        m.frontLength,
                        m.backLength,
                        m.crotch,
                        m.inseam,
                        m.outseam,
                        m.thigh,
                        m.knee,
                        m.leg
                    },
                                                                               commandType : CommandType.StoredProcedure);

                    if (newMeasurements.Count() > 0)
                    {
                        return(newMeasurements.AsList()[0]);
                    }
                    return(null);
                }
            }
            return(null);
        }
コード例 #3
0
        public static async Task <Measurements> UpsertMeasurements(Measurements m)
        {
            Measurements measurements = await UpdateMeasurements(m);

            if (measurements == null)
            {
                CustomerOrderDataModel cdm = new CustomerOrderDataModel();
                cdm.measurements = m;
                Guid measurementsId = Guid.NewGuid();

                measurements = await InsertMeasurments(cdm, measurementsId, m.UserId);
            }
            return(measurements);
        }
コード例 #4
0
        public async Task <IActionResult> CreateOrder([FromBody] CustomerOrderDataModel customerDataModel)
        {
            try
            {
                CustomerOrderDataModel newCODM = new CustomerOrderDataModel();

                if (customerDataModel != null)
                {
                    var customer = await CustomerHandler.InsertCustomer(customerDataModel);

                    if (customer == null)
                    {
                        return(StatusCode(505, "An unexpected error has ocurred, unable to create Customer"));
                    }

                    var measurements = await MeasurementsHandler.InsertMeasurments(customerDataModel, customer.MeasurementsId);

                    if (measurements == null)
                    {
                        return(StatusCode(505, "An unexpected error has ocurred, unable to create Customer measurements"));
                    }
                    else
                    {
                        newCODM.measurements = measurements;
                    }

                    var order = await CustomerHandler.InsertCustomerOrder(customerDataModel, customer.CustomerId);

                    if (measurements == null)
                    {
                        return(StatusCode(505, "An unexpected error has ocurred, unable to complete order"));
                    }
                    else
                    {
                        newCODM.orderItems = order;
                    }

                    return(Ok(newCODM));
                }
                return(StatusCode(404));
            }
            catch (Exception ex)
            {
                Logger.LogError(ex.ToString());
                return(StatusCode(505, ex.Message));
            }
        }
コード例 #5
0
        public static async Task <CustomerAddress> InsertAddress(CustomerOrderDataModel codm)
        {
            CustomerAddress a = new CustomerAddress();

            a.Address1    = codm.shippingAddress.Address1;
            a.Address2    = codm.shippingAddress.Address2;
            a.City        = codm.shippingAddress.City;
            a.Country     = codm.shippingAddress.Country;
            a.PhoneNumber = codm.shippingAddress.PhoneNumber;
            a.FirstName   = codm.shippingAddress.FirstName;
            a.LastName    = codm.shippingAddress.LastName;
            a.Zipcode     = codm.shippingAddress.Zipcode;
            a.Province    = codm.shippingAddress.Province;

            a.customerAddressId = Guid.NewGuid();
            a.CreatedOn         = DateTime.UtcNow;
            a.UpdatedOn         = DateTime.UtcNow;
            a.userId            = codm.userId;

            using (var conn = Database.Connection)
            {
                var newAddress = await conn.QueryAsync <CustomerAddress>("CustomerAddressInsert", new
                {
                    a.customerAddressId,
                    a.userId,
                    a.FirstName,
                    a.LastName,
                    a.PhoneNumber,
                    a.Address1,
                    a.Address2,
                    a.City,
                    a.Province,
                    a.Country,
                    a.Zipcode,
                    a.UpdatedOn,
                    a.CreatedOn
                }, commandType : CommandType.StoredProcedure);

                if (newAddress.Count() > 0)
                {
                    return(newAddress.AsList()[0]);
                }
                return(null);
            }
        }
コード例 #6
0
        public static async Task <List <OrderItem> > InsertCustomerOrder(CustomerOrderDataModel cdm, Guid customerId)
        {
            if (cdm != null)
            {
                CustomerOrderDataModel codm  = new CustomerOrderDataModel();
                List <OrderItem>       items = new List <OrderItem>();
                items = cdm.orderItems;
                Customer         c             = new Customer();
                List <OrderItem> returnedItems = new List <OrderItem>();

                //insert customer
                using (var conn = Business.Database.Connection)
                {
                    foreach (var item in items)
                    {
                        item.CustomerId  = customerId;
                        item.OrderItemId = Guid.NewGuid();

                        var newOrder = await conn.QueryAsync <OrderItem>("NewOrderInsert", new
                        {
                            item.OrderItemId,
                            item.CustomerId,
                            item.count,
                            item.description,
                            item.StripePriceID,
                            item.StripeID,
                            item.Title
                        },
                                                                         commandType : CommandType.StoredProcedure);

                        returnedItems.Add(item);
                    }

                    if (returnedItems.Count() > 0)
                    {
                        return(returnedItems);
                    }
                    return(null);
                }
            }
            return(null);
        }
コード例 #7
0
        public static async Task <Customer> InsertCustomer(CustomerOrderDataModel cdm)
        {
            if (cdm != null)
            {
                Customer c = new Customer();
                c.CustomerId     = Guid.NewGuid();
                c.UserId         = Guid.NewGuid();
                c.Email          = cdm.measurements.email;
                c.MeasurementsId = Guid.NewGuid();
                c.CreatedOn      = DateTime.UtcNow;
                c.UpdatedOn      = DateTime.UtcNow;

                //insert customer
                using (var conn = Business.Database.Connection)
                {
                    var newCustomer = await conn.QueryAsync <Customer>("CustomerOrderInsert", new
                    {
                        c.CustomerId,
                        c.Email,
                        c.MeasurementsId,
                        c.FirstName,
                        c.LastName,
                        c.Gender,
                        c.TimeZoneId,
                        c.UserId,
                        c.IsMember,
                        c.CreatedOn,
                        c.UpdatedOn
                    },
                                                                       commandType : CommandType.StoredProcedure);

                    if (newCustomer.Count() > 0)
                    {
                        return(newCustomer.AsList()[0]);
                    }
                    return(null);
                }
            }
            return(null);
        }
コード例 #8
0
        public static async Task <Measurements> InsertMeasurments(CustomerOrderDataModel cdm, Guid measurementsId, Guid userId)
        {
            if (cdm != null)
            {
                Measurements m = new Measurements();
                m.MeasurementsId = measurementsId;
                m.bust           = cdm.measurements.bust;
                m.waist          = cdm.measurements.waist;
                m.hip            = cdm.measurements.hip;
                m.centerLength   = cdm.measurements.centerLength;
                m.fullLength     = cdm.measurements.fullLength;
                m.shoulderSlope  = cdm.measurements.shoulderSlope;
                m.strap          = cdm.measurements.strap;
                m.bustDepth      = cdm.measurements.bustDepth;
                m.bustSpan       = cdm.measurements.bustSpan;
                m.sideLength     = cdm.measurements.sideLength;
                m.backNeck       = cdm.measurements.backNeck;
                m.shoulderLength = cdm.measurements.shoulderLength;
                m.acrossShoulder = cdm.measurements.acrossShoulder;
                m.acrossChest    = cdm.measurements.acrossChest;
                m.acrossBack     = cdm.measurements.acrossBack;
                m.bustArc        = cdm.measurements.bustArc;
                m.backArc        = cdm.measurements.backArc;
                m.waistArc       = cdm.measurements.waistArc;
                m.dartPlacement  = cdm.measurements.dartPlacement;
                m.abdomenArc     = cdm.measurements.abdomenArc;
                m.hipArc         = cdm.measurements.hipArc;
                m.crotchDepth    = cdm.measurements.crotchDepth;
                m.hipDepth       = cdm.measurements.hipDepth;
                m.sideHipDepth   = cdm.measurements.sideHipDepth;
                m.waistToAnkle   = cdm.measurements.waistToAnkle;
                m.crotchLength   = cdm.measurements.crotchLength;
                m.upperThigh     = cdm.measurements.upperThigh;
                m.knee           = cdm.measurements.knee;
                m.calf           = cdm.measurements.calf;
                m.ankle          = cdm.measurements.ankle;
                m.overarmLength  = cdm.measurements.overarmLength;
                m.underarmLength = cdm.measurements.underarmLength;
                m.toElbow        = cdm.measurements.toElbow;
                m.bicep          = cdm.measurements.bicep;
                m.elbow          = cdm.measurements.elbow;
                m.wrist          = cdm.measurements.wrist;
                m.aroundHand     = cdm.measurements.aroundHand;
                m.UserId         = userId;

                //insert measurements
                using (var conn = Business.Database.Connection)
                {
                    var newMeasurements = await conn.QueryAsync <Measurements>("MeasurementsInsert", new
                    {
                        m.MeasurementsId,
                        m.UserId,
                        m.bust,
                        m.waist,
                        m.hip,
                        m.centerLength,
                        m.fullLength,
                        m.shoulderSlope,
                        m.strap,
                        m.bustDepth,
                        m.bustSpan,
                        m.sideLength,
                        m.backNeck,
                        m.shoulderLength,
                        m.acrossShoulder,
                        m.acrossChest,
                        m.acrossBack,
                        m.bustArc,
                        m.backArc,
                        m.waistArc,
                        m.dartPlacement,
                        m.abdomenArc,
                        m.hipArc,
                        m.crotchDepth,
                        m.hipDepth,
                        m.sideHipDepth,
                        m.waistToAnkle,
                        m.crotchLength,
                        m.upperThigh,
                        m.knee,
                        m.calf,
                        m.ankle,
                        m.overarmLength,
                        m.underarmLength,
                        m.toElbow,
                        m.bicep,
                        m.elbow,
                        m.wrist,
                        m.aroundHand
                    },
                                                                               commandType : CommandType.StoredProcedure);

                    if (newMeasurements.Count() > 0)
                    {
                        return(newMeasurements.AsList()[0]);
                    }
                    return(null);
                }
            }
            return(null);
        }
コード例 #9
0
        public async Task <IActionResult> CreateOrder([FromBody] CustomerOrderDataModel customerDataModel)
        {
            try
            {
                CustomerOrderDataModel newCODM = new CustomerOrderDataModel();

                if (customerDataModel != null)
                {
                    if (customerDataModel.isNewCustomer)
                    {
                        var customer = await CustomerHandler.InsertCustomer(customerDataModel);

                        if (customer == null)
                        {
                            return(StatusCode(505, "An unexpected error has ocurred, unable to create Customer"));
                        }
                        customerDataModel.userId = customer.UserId;
                        newCODM.userId           = customer.UserId;
                        customerDataModel.measurements.UserId = customer.UserId;

                        Measurements measurements = await MeasurementsHandler.UpdateMeasurements(customerDataModel.measurements);

                        if (measurements == null)
                        {
                            measurements = await MeasurementsHandler.InsertMeasurments(customerDataModel, customer.MeasurementsId, customerDataModel.measurements.UserId);

                            if (measurements == null)
                            {
                                return(StatusCode(505, "An unexpected error has ocurred, unable to create Customer measurements"));
                            }
                        }
                        else
                        {
                            newCODM.measurements = measurements;
                        }
                    }

                    if (customerDataModel.isGuest)
                    {
                        customerDataModel.order.isMemberCheckout = false;
                    }

                    if (customerDataModel.isExistingCustomer)
                    {
                        customerDataModel.order.isMemberCheckout = true;
                    }

                    var address = await AddressHandler.InsertAddress(customerDataModel);

                    if (address == null)
                    {
                        return(StatusCode(505, "An unexpected error has ocurred, unable to insert address"));
                    }
                    newCODM.shippingAddress           = address;
                    customerDataModel.shippingAddress = address;

                    var order = await CustomerHandler.InsertCustomerOrder(customerDataModel);

                    if (order == null)
                    {
                        return(StatusCode(505, "An unexpected error has ocurred, unable to complete order"));
                    }
                    else
                    {
                        newCODM.order = order;
                    }

                    return(Ok(newCODM));
                }
                return(StatusCode(404));
            }
            catch (Exception ex)
            {
                Logger.LogError(ex.ToString());
                return(StatusCode(505, ex.Message));
            }
        }
コード例 #10
0
        public static async Task <Order> InsertCustomerOrder(CustomerOrderDataModel cdm)
        {
            if (cdm != null)
            {
                CustomerOrderDataModel codm  = new CustomerOrderDataModel();
                List <OrderItem>       items = new List <OrderItem>();
                Order order = new Order();
                order.OrderId     = Guid.NewGuid();
                order.OrderNumber = "TestOrder-" + order.OrderId;
                if (cdm.userId != null)
                {
                    order.CustomerId = cdm.userId;
                }
                DateTime temp = DateTime.UtcNow;
                order.CreatedOn = temp;
                order.UpdatedOn = temp;
                items           = cdm.orderItems;

                //insert order
                using (var conn = Business.Database.Connection)
                {
                    foreach (OrderItem item in items)
                    {
                        item.OrderItemId      = Guid.NewGuid();
                        item.OrderId          = order.OrderId;
                        item.ProductVariantId = item.ProductVariantId;
                        item.CreatedOn        = DateTime.UtcNow;
                        item.UpdatedOn        = DateTime.UtcNow;

                        var newOrderItem = await conn.QueryAsync <OrderItem>("OrderItemInsert", new
                        {
                            item.OrderItemId,
                            item.StripePriceID,
                            item.OrderId,
                            item.ProductVariantId,
                            item.PrepaidAlterations,
                            item.PurchasedInsurance,
                            item.QuantityOrdered,
                            item.UnitPrice,
                            item.UnitPriceInclTax,
                            item.TaxRate,
                            item.ProductTitle,
                            item.ProductDescription,
                            item.CreatedOn,
                            item.UpdatedOn
                        },
                                                                             commandType : CommandType.StoredProcedure);
                    }
                    order.OrderItems  = items;
                    order.OrderStatus = "OrderReceived";

                    var newOrder = await conn.QueryAsync <CustomerOrder>("OrderInsert", new
                    {
                        order.OrderId,
                        order.email,
                        order.OrderNumber,
                        order.CustomerId,
                        order.CreatedOn,
                        order.UpdatedOn,
                        order.TransactionId,
                        order.BillingAddressId,
                        order.ShippingAddressId,
                    },
                                                                         commandType : CommandType.StoredProcedure);

                    if (newOrder.Count() > 0)
                    {
                        return(order);
                    }
                    return(null);
                }
            }
            return(null);
        }