コード例 #1
0
        /// <summary>
        /// Delete request and respective related request messages, request products and request items entries.
        /// </summary>
        /// <param name="reqId">Requst Id</param>
        public static void DeleteRequest(int reqId)
        {
            var request = OimsDataContext.Requests.FirstOrDefault(o => o.O_Id.Equals(reqId));

            OimsDataContext.Delete(request);
            OimsDataContext.SaveChanges();
        }
コード例 #2
0
        /// <summary>
        /// Delete Item with specific Item id.
        /// </summary>
        public static void DeleteItem(int id)
        {
            var item = GetEditableItem(id);

            OimsDataContext.Delete(item);
            OimsDataContext.SaveChanges();
        }
コード例 #3
0
ファイル: VendorRepository.cs プロジェクト: vssaini/OIMS
        /// <summary>
        /// Delete vendor with specific name.
        /// </summary>
        public static void DeleteVendor(string vendorName)
        {
            var vendor = GetEditableVendor(vendorName);

            OimsDataContext.Delete(vendor);
            OimsDataContext.SaveChanges();
        }
コード例 #4
0
        /// <summary>
        /// Delete Item log with specific id.
        /// </summary>
        public static void DeleteItemLog(int id)
        {
            var itemLog = GetEditableItemLog(id);

            // Get details for updating items stock
            var itemId            = itemLog.ItemId;
            var newItemQtyFromLog = itemLog.ItemQuantity;
            var vendorName        = itemLog.VendorName;

            OimsDataContext.Delete(itemLog);
            OimsDataContext.SaveChanges();

            #region Delete item's stock

            var itemsModel = GetItemsModel(itemId);
            if (itemsModel == null)
            {
                return;
            }

            // Calculate item quantity to set
            var itemCurrentStock = itemsModel.ItemQuantity;
            var itemQtyToSet     = itemCurrentStock - newItemQtyFromLog;

            itemsModel.ItemQuantity = itemQtyToSet;
            itemsModel.Vendor       = vendorName;
            itemsModel.UpdatedOn    = DateTime.Now;
            ItemRepository.UpdateItem(itemsModel);

            #endregion
        }
コード例 #5
0
        /// <summary>
        /// Delete cart item per user.
        /// </summary>
        /// <param name="userId">UserId of current logged in user.</param>
        /// <param name="cartId">CartId of item in cart.</param>
        public static void DeleteCartStuff(int userId, int cartId)
        {
            var ci = OimsDataContext.Cartstuffs.FirstOrDefault(i => i.U_Id.Equals(userId) && i.Id.Equals(cartId));

            OimsDataContext.Delete(ci);
            OimsDataContext.SaveChanges();
        }
コード例 #6
0
        /// <summary>
        /// Delete user with specific user id.
        /// </summary>
        public static void DeleteUser(int id)
        {
            var user = GetEditableUser(id);

            OimsDataContext.Delete(user);
            OimsDataContext.SaveChanges();
        }
コード例 #7
0
ファイル: ShelterRepository.cs プロジェクト: vssaini/OIMS
        /// <summary>
        /// Delete product with specific product id.
        /// </summary>
        public static void DeleteShelter(int id)
        {
            var product = GetEditableShelter(id);

            DeleteItems(id);                 // Delete related items to product
            OimsDataContext.Delete(product); // Delete product
            OimsDataContext.SaveChanges();
        }
コード例 #8
0
ファイル: ShelterRepository.cs プロジェクト: vssaini/OIMS
        /// <summary>
        /// Delete items related to single product.
        /// </summary>
        /// <param name="id"></param>
        public static void DeleteItems(int id)
        {
            var items = GetEditableShelterItems(id);

            foreach (var item in items)
            {
                OimsDataContext.Delete(item);
            }
        }
コード例 #9
0
ファイル: ShelterRepository.cs プロジェクト: vssaini/OIMS
        /// <summary>
        /// Create new shelter and return shelterid of saved shelter.
        /// </summary>
        public static int SaveShelter(Shelter shelter)
        {
            OimsDataContext.Add(shelter);
            OimsDataContext.SaveChanges();

            // Get product id of saved product
            var prodId = from p in Shelters
                         where p.ShelterName == shelter.P_Name
                         select p.ShelterId;

            return(prodId.FirstOrDefault());
        }
コード例 #10
0
ファイル: ShelterRepository.cs プロジェクト: vssaini/OIMS
        /// <summary>
        /// Delete product with specific product id.
        /// </summary>
        public static void DeleteShelterItem(SheltersDescInfo shelterItem)
        {
            var editProductItem = GetEditableShelterItem(shelterItem.ShelterId, shelterItem.ShelterDescKey, shelterItem.ItemId);

            if (editProductItem == null)
            {
                return;
            }

            OimsDataContext.Delete(editProductItem);
            OimsDataContext.SaveChanges();
        }
コード例 #11
0
ファイル: ShelterRepository.cs プロジェクト: vssaini/OIMS
        /// <summary>
        /// Insert new shelter item for specific shelter.
        /// </summary>
        public static void NewShelterItem(SheltersDescInfo sheltertem)
        {
            var newShelterItem = new Shelterdescription
            {
                P_Id  = sheltertem.ShelterId,
                I_Id  = sheltertem.ItemId,
                I_Qty = sheltertem.ItemQuantity
            };

            OimsDataContext.Add(newShelterItem);
            OimsDataContext.SaveChanges();
        }
コード例 #12
0
        /// <summary>
        /// Update the stock of item as per the Allocated for the items that are re-recommended.
        /// </summary>
        /// <param name="alloc"></param>
        /// <param name="quantToReduce">Quantity to reduce.</param>
        private static void UpdateItemStock(OimsDataModel.Allocated alloc, float quantToReduce)
        {
            // Get item matching with item id in 'allocated' from 'items'
            var item = OimsDataContext.Items.FirstOrDefault(i => i.I_Id.Equals(alloc.ItemId));

            if (item == null)
            {
                return;
            }
            item.I_Quantity = item.I_Quantity - quantToReduce;
            OimsDataContext.FlushChanges();
        }
コード例 #13
0
ファイル: ShelterRepository.cs プロジェクト: vssaini/OIMS
        /// <summary>
        /// Update product.
        /// </summary>
        public static void UpdateShelter(SheltersModel shelter)
        {
            var editProduct = GetEditableShelter(shelter.ShelterId);

            if (editProduct == null)
            {
                return;
            }

            editProduct.P_Name = shelter.ShelterName;
            OimsDataContext.SaveChanges();
        }
コード例 #14
0
ファイル: VendorRepository.cs プロジェクト: vssaini/OIMS
        /// <summary>
        /// Create new vendor.
        /// </summary>
        public static void SaveNewVendor(VendorsModel vendor)
        {
            var newVendor = new Vendor
            {
                Name    = vendor.Name,
                Address = vendor.Address,
                Phone   = vendor.Phone,
                Email   = vendor.Email
            };

            OimsDataContext.Add(newVendor);
            OimsDataContext.SaveChanges();
        }
コード例 #15
0
ファイル: ShelterRepository.cs プロジェクト: vssaini/OIMS
        /// <summary>
        /// Update shelter's item.
        /// </summary>
        public static void UpdateShelterItem(SheltersDescInfo shelterItem)
        {
            var editProductItem = GetEditableShelterItem(shelterItem.ShelterId, shelterItem.ShelterDescKey, 0);

            if (editProductItem == null)
            {
                return;
            }

            editProductItem.I_Id  = shelterItem.ItemId;
            editProductItem.I_Qty = shelterItem.ItemQuantity;
            OimsDataContext.SaveChanges();
        }
コード例 #16
0
        /// <summary>
        /// Recommend products as per stock and requested.
        /// </summary>
        /// <param name="updatedProducts">The list of products that been modified and need to update.</param>
        public static void RecommendShelters(MVCxGridViewBatchUpdateValues <OrderProduct, int> updatedProducts)
        {
            var orderShelters = OimsDataContext.Sheltersrequests;

            // Note: Key to understand terms
            // oProd.OP_Quantity - The quantity of shelters that were requested in total
            // oProd.OP_Pending - The quantity of shelters left pending to be delivered
            // oProd.OP_ProdAlloc - The quantity of shelters that have been allocated (after manager approval)
            // prod.ProdRecom - The quantity of shelter that had been marked as recommend by supervisor

            // Save items in separate other table for keeping track
            foreach (var prod in updatedProducts.Update)
            {
                if (!updatedProducts.IsValid(prod))
                {
                    continue;
                }

                var oProd = orderShelters.FirstOrDefault(i => i.OP_Id.Equals(prod.Id));
                if (oProd == null)
                {
                    continue;
                }

                var prodAlloc  = oProd.OP_ProdAlloc ?? 0;
                var prodAllRec = prodAlloc + prod.ProdRecom;

                #region Throw custom exception for some conditions

                // If Recommended more than Requested
                if (prod.ProdRecom > oProd.OP_Quantity)
                {
                    throw new CustomException(Resources.Supervisor.RGridErrorMsgForExtraRecommend);
                }

                // If sum of Allocated + Recommend exceed than Requested
                if (prodAllRec > oProd.OP_Quantity)
                {
                    throw new CustomException(Resources.Supervisor.RGridErrorMsgForPartial);
                }

                #endregion

                oProd.OP_ProdRecom = prod.ProdRecom;
                oProd.OP_Pending   = (int?)(oProd.OP_Quantity - prodAllRec);

                OimsDataContext.FlushChanges();
            }

            OimsDataContext.SaveChanges();
        }
コード例 #17
0
        /// <summary>
        /// Create new user.
        /// </summary>
        public static void SaveNewUser(UsersModel user)
        {
            var newUser = new User
            {
                R_Id        = user.RoleId,        // Will create user with role specified
                U_FirstName = user.FirstName,
                U_LastName  = user.LastName,
                U_Email     = user.Email,
                U_Password  = user.Password
            };

            OimsDataContext.Add(newUser);
            OimsDataContext.SaveChanges();
        }
コード例 #18
0
        /// <summary>
        /// Save status for current request id.
        /// </summary>
        /// <param name="reqId">Request for which status would be saved.</param>
        /// <param name="statusId">Status selected by user.</param>
        /// <param name="userId">User who modified the request.</param>
        public static void SaveStatus(int reqId, int statusId, int userId)
        {
            var request = OimsDataContext.Requests.FirstOrDefault(o => o.O_Id.Equals(reqId));

            if (request == null)
            {
                return;
            }

            request.O_Status      = statusId;
            request.O_UpdatedBy   = userId;
            request.O_UpdatedDate = DateTime.Now;
            OimsDataContext.SaveChanges();
        }
コード例 #19
0
ファイル: VendorRepository.cs プロジェクト: vssaini/OIMS
        /// <summary>
        /// Update vendor.
        /// </summary>
        public static void UpdateVendor(VendorsModel vendor)
        {
            var editVendor = GetEditableVendor(vendor.Name);

            if (editVendor == null)
            {
                return;
            }

            editVendor.Address = vendor.Address;
            editVendor.Email   = vendor.Email;
            editVendor.Phone   = vendor.Phone;

            OimsDataContext.SaveChanges();
        }
コード例 #20
0
        /// <summary>
        /// Recommend items as per stock and requested.
        /// </summary>
        /// <param name="updatedItems">The list of items that been modified and need to update.</param>
        public static void RecommendItems(MVCxGridViewBatchUpdateValues <OrderItem, int> updatedItems)
        {
            var orderItems = OimsDataContext.Itemsrequests;

            // Save items in separate other table for keeping track
            foreach (var item in updatedItems.Update)
            {
                if (!updatedItems.IsValid(item))
                {
                    continue;
                }

                var oItem = orderItems.FirstOrDefault(i => i.OI_Id.Equals(item.Id));
                if (oItem == null)
                {
                    continue;
                }

                var itemAlloc  = oItem.OI_ItemAlloc ?? 0;
                var itemAllRec = itemAlloc + item.ItemRecom;

                #region Throw custom exception for some conditions

                //if (Application.ReqStatus.Equals("Partial approved") && item.ItemRecom < oItem.OI_ItemRecom)
                //    throw new CustomException(Resources.Supervisor.RGridErrorMsgForPartial);

                if (item.ItemRecom > oItem.OI_Quantity)
                {
                    throw new CustomException(Resources.Supervisor.RGridErrorMsgForExtraRecommend);
                }

                // If sum of Allocated + Recommend exceed than Requested
                if (itemAllRec > oItem.OI_Quantity)
                {
                    throw new CustomException(Resources.Supervisor.RGridErrorMsgForPartial);
                }

                #endregion

                oItem.OI_ItemRecom = item.ItemRecom;
                oItem.OI_Pending   = oItem.OI_Quantity - itemAllRec;
                OimsDataContext.FlushChanges();
            }

            OimsDataContext.SaveChanges();
        }
コード例 #21
0
        /// <summary>
        /// Update user.
        /// </summary>
        public static void UpdateUser(UsersModel user)
        {
            var editUser = GetEditableUser(user.UserId);

            if (editUser == null)
            {
                return;
            }

            editUser.U_FirstName = user.FirstName;
            editUser.U_LastName  = user.LastName;
            editUser.U_Email     = user.Email;
            editUser.U_Password  = user.Password;
            editUser.R_Id        = user.RoleId;

            OimsDataContext.SaveChanges();
        }
コード例 #22
0
        /// <summary>
        /// Update Item.
        /// </summary>
        public static void UpdateItem(ItemsModel item)
        {
            var editItem = GetEditableItem(item.ItemId);

            if (editItem == null)
            {
                return;
            }

            editItem.I_Name     = item.ItemName;
            editItem.I_Quantity = item.ItemQuantity;
            editItem.Size       = item.Size;
            editItem.Marking    = item.Marking;
            editItem.Vendor     = item.Vendor;
            editItem.UpdatedOn  = item.UpdatedOn;

            OimsDataContext.SaveChanges();
        }
コード例 #23
0
        /// <summary>
        /// Update Item log.
        /// </summary>
        public static void UpdateItemLog(ItemsLogModel itemLog)
        {
            var editItemLog = GetEditableItemLog(itemLog.Id);

            if (editItemLog == null)
            {
                return;
            }

            var oldItemQtyFromLog = editItemLog.ItemQuantity;

            editItemLog.ItemId       = itemLog.ItemId;
            editItemLog.ItemQuantity = itemLog.ItemQuantity;
            editItemLog.VendorName   = itemLog.VendorName;
            editItemLog.EntryDate    = itemLog.EntryDate;

            OimsDataContext.SaveChanges();

            #region Update item's stock

            var itemsModel = GetItemsModel(itemLog.ItemId);
            if (itemsModel == null)
            {
                return;
            }

            // Calculate item quantity to set
            var itemCurrentStock  = itemsModel.ItemQuantity;
            var newItemQtyFromLog = itemLog.ItemQuantity;
            var itemQtyToSet      = (itemCurrentStock - oldItemQtyFromLog) + newItemQtyFromLog;

            itemsModel.ItemQuantity = itemQtyToSet;
            itemsModel.Vendor       = editItemLog.VendorName;
            itemsModel.UpdatedOn    = DateTime.Now;
            ItemRepository.UpdateItem(itemsModel);

            #endregion
        }
コード例 #24
0
        /// <summary>
        /// Add product to cart per user.
        /// </summary>
        public static void AddProductToCart(int userId, int prodId, float quantity)
        {
            var product = OimsDataContext.Cartstuffs.FirstOrDefault(ci => ci.P_Id.Equals(prodId) && ci.U_Id.Equals(userId));

            if (product != null)
            {
                product.Quantity = product.Quantity + quantity;
                OimsDataContext.SaveChanges();
            }
            else
            {
                var ci = new Cartstuff
                {
                    U_Id         = userId,
                    P_Id         = prodId,
                    Quantity     = quantity,
                    CreatedOnUtc = DateTime.Now
                };

                OimsDataContext.Add(ci);
                OimsDataContext.SaveChanges();
            }
        }
コード例 #25
0
        /// <summary>
        /// Create new items log.
        /// </summary>
        public static void SaveItemsLog(List <Itemslog> itemLogList)
        {
            itemLogList.ForEach(il => OimsDataContext.Add(il));
            OimsDataContext.SaveChanges();

            #region Add item's stock

            foreach (var il in itemLogList)
            {
                var itemsModel = GetItemsModel(il.ItemId);
                if (itemsModel == null)
                {
                    continue;
                }

                // Add new quantity to existing quantity in stock
                itemsModel.ItemQuantity = itemsModel.ItemQuantity + il.ItemQuantity;
                itemsModel.Vendor       = il.VendorName;
                itemsModel.UpdatedOn    = DateTime.Now;
                ItemRepository.UpdateItem(itemsModel);
            }

            #endregion
        }
コード例 #26
0
        /// <summary>
        /// Add item to cart per user.
        /// </summary>
        public static void AddItemToCart(int userId, int itemId, float quantity)
        {
            // Check if item already exists
            var item = OimsDataContext.Cartstuffs.FirstOrDefault(ci => ci.I_Id.Equals(itemId) && ci.U_Id.Equals(userId));

            if (item != null) //  If exist, update it
            {
                item.Quantity = item.Quantity + quantity;
                OimsDataContext.SaveChanges();
            }
            else
            {
                var ci = new Cartstuff
                {
                    U_Id         = userId,
                    I_Id         = itemId,
                    Quantity     = quantity,
                    CreatedOnUtc = DateTime.Now
                };

                OimsDataContext.Add(ci);
                OimsDataContext.SaveChanges();
            }
        }
コード例 #27
0
        /// <summary>
        /// Save request by moving each request details into 'allocated'. Also subtract same item quantities from stock too.
        /// </summary>
        /// <param name="requestorId">Id of the requestor who created the request.</param>
        /// <param name="updatorId">Id of the updator who is updating the request.</param>
        /// <param name="statusId">Status id for the request.</param>
        /// <param name="requestId">Request id assigned to current request.</param>
        public static void SaveRequest(int requestorId, int updatorId, int statusId, int requestId)
        {
            #region 1. If item (oi) in request, save items in table 'allocated' using 'orderitem'

            var orderItems = OimsDataContext.Itemsrequests.Where(o => o.O_Id.Equals(requestId) && o.OI_CreatedBy.Equals(requestorId));

            foreach (var oi in orderItems)
            {
                if (oi == null)
                {
                    continue;
                }

                var iAlloc = OimsDataContext.Allocateds.FirstOrDefault(a => a.UserId.Equals(requestorId) && a.OrderId.Equals(requestId) && a.ItemId.Equals(oi.I_Id));

                // If item already in allocated for same request
                if (iAlloc != null)
                {
                    var itemRecom = oi.OI_ItemRecom ?? 0;

                    // Set mark quantity in allocated
                    var markQty = iAlloc.MarkQty;
                    iAlloc.MarkQty = markQty + itemRecom;
                    UpdateItemStock(iAlloc, itemRecom);
                }
                else
                {
                    var alloc = new OimsDataModel.Allocated
                    {
                        OrderId = requestId,
                        UserId  = requestorId,
                        ItemId  = oi.I_Id,
                        MarkQty = oi.OI_ItemRecom != null ? (float)oi.OI_ItemRecom : 0
                    };

                    OimsDataContext.Add(alloc);
                    UpdateItemStock(alloc);
                }
            }

            #endregion

            #region 2. If shelter (op) in request, save products in table 'allocated' using 'orderproduct'

            var orderProducts = OimsDataContext.Sheltersrequests.Where(o => o.O_Id.Equals(requestId) && o.OP_CreatedBy.Equals(requestorId));

            foreach (var op in orderProducts)
            {
                if (op == null)
                {
                    continue;
                }

                // Get respective item's
                var pId       = op.P_Id;
                var prodItems = ShelterRepository.ShelterItems.Where(p => p.P_Id.Equals(pId));

                foreach (var pi in prodItems)
                {
                    var pAlloc = OimsDataContext.Allocateds.FirstOrDefault(a => a.UserId.Equals(requestorId) && a.OrderId.Equals(requestId) && a.ItemId.Equals(pi.I_Id));

                    if (pAlloc == null)
                    {
                        if (op.OP_ProdRecom == null)
                        {
                            continue;
                        }

                        var newAlloc = new OimsDataModel.Allocated
                        {
                            OrderId = requestId,
                            UserId  = requestorId,
                            ItemId  = pi.I_Id,
                            MarkQty = pi.I_Qty * (int)op.OP_ProdRecom
                        };

                        OimsDataContext.Add(newAlloc);
                        UpdateItemStock(newAlloc);
                    }
                    else
                    {
                        // If re-recommending, adjust the stock taking previous one
                        // and later one in context
                        var prodRecom = op.OP_ProdRecom ?? 0;

                        // Set mark quantity in allocated
                        var markQty = pAlloc.MarkQty;
                        prodRecom      = pi.I_Qty * prodRecom;
                        pAlloc.MarkQty = markQty + prodRecom;

                        UpdateItemStock(pAlloc, prodRecom);
                    }
                }
            }

            #endregion

            #region 3. Save status for current request

            var order = OimsDataContext.Requests.FirstOrDefault(o => o.O_Id.Equals(requestId));
            if (order == null)
            {
                return;
            }

            order.O_Status      = statusId;
            order.O_UpdatedBy   = updatorId;
            order.O_UpdatedDate = DateTime.Now;
            OimsDataContext.FlushChanges();

            #endregion

            // 4. Finally save all changes
            OimsDataContext.SaveChanges();
        }
コード例 #28
0
        /// <summary>
        /// Save cart items as single request (or order)
        /// </summary>
        /// <param name="userId">UserId of user.</param>
        public static void SaveRequest(int userId)
        {
            // 1. Create an order id and get id. Also save request status
            var request = new Request
            {
                O_CreatedBy   = userId,
                O_CreatedDate = DateTime.Now,
                O_Job         = Application.Job,
                O_Company     = Application.Company,
                O_Status      = Int32.Parse(ConfigurationManager.AppSettings["InProcess"]) // For in process (by default)
            };

            OimsDataContext.Add(request);
            OimsDataContext.FlushChanges(); // Soft commit to database (marked state as dirty)
            var orderId = request.O_Id;

            // 2. Get list of cart items categorized into items and products for the current user
            var items    = Cartstuffs.Where(ci => ci.UserId.Equals(userId) && ci.ItemId != null).ToList();
            var products = Cartstuffs.Where(ci => ci.UserId.Equals(userId) && ci.ProductId != null).ToList();

            // 3. Save items in 'itemsRequest' table
            if (items.Any())
            {
                var oiList = items.Select(item => new Itemsrequest
                {
                    O_Id           = orderId,
                    I_Id           = item.ItemId != null ? (int)item.ItemId : 0,
                    OI_Quantity    = item.Quantity,
                    OI_Pending     = item.Quantity,
                    OI_CreatedBy   = userId,
                    OI_CreatedDate = DateTime.Now
                }).ToList();

                OimsDataContext.Add(oiList);
                OimsDataContext.FlushChanges(true);
            }

            // 4. Save shelters in 'sheltersRequest' table
            if (products.Any())
            {
                var opList = products.Select(prod => new Sheltersrequest
                {
                    O_Id           = orderId,
                    P_Id           = prod.ProductId != null ? (int)prod.ProductId : 0,
                    OP_Quantity    = prod.Quantity,
                    OP_Pending     = (int?)prod.Quantity,
                    OP_CreatedBy   = userId,
                    OP_CreatedDate = DateTime.Now
                }).ToList();

                OimsDataContext.Add(opList);
                OimsDataContext.FlushChanges(true);
            }

            // 5. Delete all cart items for current user (as they are saved as request)
            var cartstuffs = OimsDataContext.Cartstuffs.Where(ci => ci.U_Id.Equals(userId));

            foreach (var ci in cartstuffs)
            {
                OimsDataContext.Delete(ci);
            }

            // 6. Save all changes to database
            OimsDataContext.SaveChanges();
        }
コード例 #29
0
ファイル: RequestsRepository.cs プロジェクト: vssaini/OIMS
        /// <summary>
        /// Save request status as approved or rejected.
        /// </summary>
        /// <param name="requestorId">Id of the requestor who created the request.</param>
        /// <param name="updatorId">Id of the updator who is updating the request.</param>
        /// <param name="statusId">Status id for the request.</param>
        /// <param name="requestId">Request id assigned to current request.</param>
        public static void SaveRequest(int requestorId, int updatorId, int statusId, int requestId)
        {
            var shelterStatusId = 0;
            var itemStatusId    = 0;
            var approveStatusId = 0;

            #region 1. Set stock as per status

            // StatusId - 3 : Approved
            // StatusId - 4 : Rejected
            // StatusId - 5 : Partial approved

            switch (statusId)
            {
            case 3:
                var orderItems = OimsDataContext.Itemsrequests.Where(o => o.O_Id.Equals(requestId) && o.OI_CreatedBy.Equals(requestorId));
                foreach (var oi in orderItems)
                {
                    // Set allocate details in 'orderitem'
                    var itemAlloc = oi.OI_ItemAlloc ?? 0;
                    var itemRecom = oi.OI_ItemRecom ?? 0;
                    oi.OI_ItemAlloc = itemRecom + itemAlloc;

                    // Save status
                    shelterStatusId = (itemRecom + itemAlloc).Equals(oi.OI_Quantity) ? 3 : 5;
                    approveStatusId = shelterStatusId;

                    // Reset recommend and save changes
                    oi.OI_ItemRecom = null;
                    OimsDataContext.FlushChanges();
                }

                var orderProducts = OimsDataContext.Sheltersrequests.Where(o => o.O_Id.Equals(requestId) && o.OP_CreatedBy.Equals(requestorId));
                foreach (var op in orderProducts)
                {
                    // Set allocate details in 'orderproduct'
                    var prodAlloc = op.OP_ProdAlloc != null ? (float)op.OP_ProdAlloc : 0;
                    var prodRecom = op.OP_ProdRecom ?? 0;
                    op.OP_ProdAlloc = (int?)(prodRecom + prodAlloc);

                    // Save status
                    itemStatusId    = (prodRecom + prodAlloc).Equals(op.OP_Quantity) ? 3 : 5;
                    approveStatusId = itemStatusId;

                    // Reset recommend and save changes
                    op.OP_ProdRecom = null;
                    OimsDataContext.FlushChanges();
                }
                break;

            case 4:
                var allocs = OimsDataContext.Allocateds.Where(a => a.UserId.Equals(requestorId) && a.OrderId.Equals(requestId));

                foreach (var alloc in allocs)
                {
                    var item = OimsDataContext.Items.FirstOrDefault(i => i.I_Id.Equals(alloc.ItemId));
                    if (item == null)
                    {
                        continue;
                    }

                    item.I_Quantity = item.I_Quantity + alloc.MarkQty;
                    OimsDataContext.FlushChanges();
                    approveStatusId = 4;
                }
                break;
            }

            #endregion

            #region 2. Save status for current request

            var request = OimsDataContext.Requests.FirstOrDefault(o => o.O_Id.Equals(requestId));
            if (request == null)
            {
                return;
            }

            //TODO: Test if the status fixed or not.
            if (shelterStatusId > 0 && itemStatusId > 0)
            {
                if (shelterStatusId.Equals(3) && itemStatusId.Equals(3))
                {
                    request.O_Status = 3;
                }
                else
                {
                    request.O_Status = 5;
                }
            }
            else
            {
                if (approveStatusId > 0)
                {
                    request.O_Status = approveStatusId;
                }
            }

            request.O_UpdatedBy   = updatorId;
            request.O_UpdatedDate = DateTime.Now;
            OimsDataContext.FlushChanges();

            #endregion

            // 3. Finally save all changes
            OimsDataContext.SaveChanges();
        }
コード例 #30
0
ファイル: ShelterRepository.cs プロジェクト: vssaini/OIMS
 /// <summary>
 /// Save new items of shelter.
 /// </summary>
 public static void SaveShelterItems(List <Shelterdescription> sdList)
 {
     sdList.ForEach(pdItem => OimsDataContext.Add(pdItem));
     OimsDataContext.SaveChanges();
 }