public async Task <List <PurchaseHistoryModel> > GetPurchaseHistory(string username)
        {
            List <PurchaseHistoryModel> history = new List <PurchaseHistoryModel>();
            List <Order> listOrders             = await _context.Orders.Where(order => order.Username.Equals(username)).OrderByDescending(order => order.DateOrder).ToListAsync();

            for (int i = 0; i < listOrders.Count; i++)
            {
                int idOrder            = listOrders[i].OrderId;
                List <ToyInOrder> toys = await _context.ToyInOrders.Where(toys => toys.OrderId == idOrder)
                                         .Include(t => t.Toy)
                                         .ToListAsync();

                List <ToyModel> list = new List <ToyModel>();
                for (int k = 0; k < toys.Count; k++)
                {
                    Toy toy = toys[k].Toy;
                    toy.Quantity = toys[k].Quantity;
                    toy.Price    = toys[k].Price;
                    ToyModel toyModel = _mapper.Map <ToyModel>(toy);
                    list.Add(toyModel);
                }

                PurchaseHistoryModel model = new PurchaseHistoryModel(idOrder, listOrders[i].Username, listOrders[i].DateOrder, list);
                history.Add(model);
            }

            return(history);
        }
 public static PurchaseHistory Map(this PurchaseHistoryModel source)
 {
     return(new PurchaseHistory
     {
         Id = source.Id,
         ProductId = source.ProductId,
         CreatedOn = source.CreatedOn,
         Quantity = source.Quantity,
         UserId = source.UserId
     });
 }
예제 #3
0
        private void datagrid_SelectionChanged(object sender, System.Windows.Controls.SelectionChangedEventArgs e)
        {
            log.Debug("Datagrid selected.");
            try
            {
                //History Purchase
                string sqlVendorHis = "SELECT PRODUCT_CODE,PURCHASE_DATE,VENDOR_CODE,VENDOR_NAME,QTY,PRICE,DISCOUNT_STR,VAT_RATE FROM V_PURCHASE_HISTORY_ATF where 1=1 ";
                string cond         = "";
                string groupby      = " GROUP BY  PRODUCT_CODE,PURCHASE_DATE,VENDOR_CODE,VENDOR_NAME,QTY,PRICE,DISCOUNT_STR,VAT_RATE ";
                string orderBy      = " ORDER BY PURCHASE_DATE DESC ";

                //History Order
                string sqlHisOrder = "select a.CreateDate,b.* from Product_Order_Report a"
                                     + " INNER JOIN Product_Order_Report_Details b "
                                     + " ON a.Order_ID = b.Order_ID"
                                     + " where 1=1 AND b.Product_Code = @Product_Code "
                                     + " ORDER BY CreateDate DESC,b.List_Num_Order DESC";

                if (DataGridPrducts.SelectedItem != null)
                {
                    if (DataGridPrducts.SelectedItem is ProductsModel)
                    {
                        var row = (ProductsModel)DataGridPrducts.SelectedItem;
                        if (row != null)
                        {
                            txtDatailSelect.Text = row.Product_Name;
                            txtUseDetail.Text    = row.Use;
                            log.Debug("Insert data to Text box Success.");
                            cond = " AND PRODUCT_CODE = '" + (row.Product_Code.ToLower()) + "'";

                            sqlVendorHis += cond + groupby + orderBy;
                            log.Debug("Sql Vendor History : " + sqlVendorHis);
                            List <PurchaseHistoryModel> lsPurchaseHis   = new List <PurchaseHistoryModel>();
                            List <OrderHistoryStock>    lsOrderHisStock = new List <OrderHistoryStock>();
                            using (SqlConnection cnn = new SqlConnection(Utility.ConnectionDb.connectString))
                            {
                                cnn.Open();
                                using (SqlCommand cmd = new SqlCommand(sqlVendorHis, cnn), cmd2 = new SqlCommand(sqlHisOrder, cnn))
                                {
                                    cmd2.Parameters.AddWithValue("@Product_Code", row.Product_Code.Trim());
                                    using (SqlDataReader dataReader = cmd.ExecuteReader(), dataReader2 = cmd2.ExecuteReader())
                                    {
                                        int i = 0;
                                        while (dataReader.Read())
                                        {
                                            PurchaseHistoryModel pch = new PurchaseHistoryModel();
                                            pch.RowNum        = ++i;
                                            pch.PRODUCT_CODE  = dataReader["PRODUCT_CODE"].ToString().Trim();
                                            pch.PURCHASE_DATE = comm.convertIntToShortDate(dataReader["PURCHASE_DATE"].ToString().Trim());
                                            pch.VENDOR_CODE   = dataReader["VENDOR_CODE"].ToString().Trim();
                                            pch.VENDOR_NAME   = dataReader["VENDOR_NAME"].ToString().Trim();
                                            pch.QTY           = comm.convertShowNumber2Point(dataReader["QTY"].ToString());
                                            pch.PRICE         = comm.convertShowNumber2Point(dataReader["PRICE"].ToString());
                                            pch.VAT_RATE      = comm.convertShowNumber2Point(dataReader["VAT_RATE"].ToString().Trim());
                                            pch.DISCOUNT_STR  = dataReader["DISCOUNT_STR"].ToString().Trim();
                                            lsPurchaseHis.Add(pch);
                                        }
                                        while (dataReader2.Read())
                                        {
                                            OrderHistoryStock ohs = new OrderHistoryStock();
                                            ohs.docDate        = comm.convertIntToShortDate(dataReader2["CreateDate"].ToString());
                                            ohs.orderId        = dataReader2["Order_ID"].ToString();
                                            ohs.list_Num_Order = dataReader2["List_Num_Order"].ToString().PadLeft(4, '0');
                                            ohs.topic          = dataReader2["Vendor"].ToString();
                                            ohs.suggestOrder   = comm.convertShowNumber2Point(dataReader2["Suggest_Order"].ToString());
                                            ohs.orderStatus    = (dataReader2["Order_Status"].ToString().Equals("1")) ? "ปิดงาน" : "รอปิดงาน";
                                            lsOrderHisStock.Add(ohs);
                                        }
                                    }
                                }
                            }
                            dataGridHistoryOrder.ItemsSource = lsOrderHisStock;
                            dataGridPurHis.ItemsSource       = lsPurchaseHis;
                            log.Debug("Insert List Vendor History to Datagrid success.");
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                log.Error(ex);
                throw ex;
            }
        }
예제 #4
0
        public ActionResult List(int?locationId, int?organizationId, PurchaseHistoryModel model, [ModelBinder(typeof(DataTablesRequestModelBinder))] DataTablesRequestModel dtRequestModel)
        {
            if (Request.HttpMethod == "POST" && ModelState.IsValid)
            {
                var user = Membership.GetUser().GetUserEntity();

                var transaction = new Transaction(IsolationLevel.ReadCommitted, "purchase transfer");
                try
                {
                    var fromDevice = model.FromDevice;
                    var toDevice   = model.ToDevice;

                    var from = new PurchaseHistoryEntity
                    {
                        DeviceId       = model.FromDeviceId,
                        LocationId     = fromDevice.LocationId,
                        UserId         = user.UserId,
                        PurchaseTime   = DateTime.UtcNow,
                        ScansPurchased = -model.Quantity,
                        AmountPaid     = 0,
                        TransactionId  = string.Empty,
                        PurchaseNotes  = String.Format(Purchase.TransferFrom, SharedRes.Formats.Device.FormatWith(fromDevice), SharedRes.Formats.Device.FormatWith(toDevice))
                    };
                    transaction.Add(from);
                    from.Save();

                    var to = new PurchaseHistoryEntity
                    {
                        DeviceId       = model.ToDeviceId,
                        LocationId     = toDevice.LocationId,
                        UserId         = user.UserId,
                        PurchaseTime   = DateTime.UtcNow,
                        ScansPurchased = model.Quantity,
                        AmountPaid     = 0,
                        TransactionId  = string.Empty,
                        PurchaseNotes  = String.Format(Purchase.TransferFrom, SharedRes.Formats.Device.FormatWith(fromDevice), SharedRes.Formats.Device.FormatWith(toDevice))
                    };
                    transaction.Add(to);
                    to.Save();

                    transaction.Add(fromDevice);
                    fromDevice.ScansAvailable -= model.Quantity;
                    fromDevice.Save();

                    transaction.Add(toDevice);
                    toDevice.ScansAvailable += model.Quantity;
                    toDevice.Save();

                    transaction.Commit();
                }
                catch (Exception ex)
                {
                    transaction.Rollback();
                    ModelState.AddModelError("", Purchase.TransferFailed);
                    Log.Error(Purchase.TransferFailed, ex);
                }
                finally
                {
                    transaction.Dispose();
                }
            }

            if (!organizationId.HasValue)
            {
                if (!locationId.HasValue)
                {
                    model.Puchases = new LinqMetaData().PurchaseHistory.WithPermissions();
                }
                else
                {
                    var location = new LocationEntity(locationId.Value);
                    if (location.IsNew)
                    {
                        throw new HttpException(404, SharedRes.Error.NotFound_Location);
                    }

                    if (!Permissions.UserHasPermission("View", location))
                    {
                        throw new HttpException(401, SharedRes.Error.Unauthorized_Location);
                    }

                    model.Puchases = new LinqMetaData().PurchaseHistory.Where(x => x.LocationId == locationId.Value);
                }
            }
            else
            {
                var organization = new OrganizationEntity(organizationId.Value);
                if (organization.IsNew)
                {
                    throw new HttpException(404, SharedRes.Error.NotFound_Organization);
                }

                if (!locationId.HasValue)
                {
                    if (!Permissions.UserHasPermission("View", organization))
                    {
                        throw new HttpException(401, SharedRes.Error.Unauthorized_Organization);
                    }

                    model.Puchases =
                        new LinqMetaData().PurchaseHistory.Where(x => x.Location.OrganizationId == organizationId);
                }
                else
                {
                    // do the same thing as above but check if the location is assigned to the organization
                    var location = new LocationEntity(locationId.Value);
                    if (location.IsNew && location.OrganizationId == organizationId)
                    {
                        throw new HttpException(404, SharedRes.Error.NotFound_Location);
                    }

                    if (!Permissions.UserHasPermission("View", location))
                    {
                        throw new HttpException(401, SharedRes.Error.Unauthorized_Location);
                    }

                    model.Puchases = new LinqMetaData().PurchaseHistory.Where(x => x.LocationId == locationId.Value);
                }
            }

            var result = View(model);

            if (dtRequestModel == null)
            {
                return(result);
            }

            return(Query(result, dtRequestModel));
        }