コード例 #1
0
        /// <summary>
        /// Gets the item details.
        /// </summary>
        /// <param name="itemId">The item identifier.</param>
        /// <param name="itemBriefId">The item brief identifier.</param>
        /// <param name="userId">The user identifier.</param>
        /// <param name="itemTypeIdToBeLoad">The item type identifier to be load.</param>
        /// <param name="fromDate">From date.</param>
        /// <param name="toDate">To date.</param>
        /// <returns></returns>
        public ItemDetails GetItemDetails(int itemId, int itemBriefId, int userId, int?itemTypeIdToBeLoad, DateTime?fromDate = null, DateTime?toDate = null)
        {
            bool isItemCreated = false;
            bool isReadOnly    = false;
            int  itemTypeId    = 0;

            InventoryBL inventoryBL = new InventoryBL(DataContext);
            ItemBriefBL itemBriefBL = new ItemBriefBL(DataContext);

            ItemDetails itemDetails = new ItemDetails();

            InitializeIds(ref itemId, ref itemBriefId, ref isItemCreated);

            if (itemId > 0)
            {
                StageBitz.Data.Item item = inventoryBL.GetItem(itemId);
                if (item != null)
                {
                    ItemBooking itemBooking = null;
                    itemDetails.IsEditableToAdminOnly = true;

                    if (itemBriefId > 0)
                    {
                        ProjectBL projectBL = new ProjectBL(DataContext);
                        itemBooking = itemBriefBL.GetInUseItemBooking(itemBriefId);
                        itemDetails.CanEditInItemBrief    = inventoryBL.CanEditIteminItemBrief(itemBriefId, itemId);
                        itemDetails.IsEditableToAdminOnly = inventoryBL.IsItemGeneretedFromGivenItemBrief(itemId, itemBriefId) && !projectBL.IsReadOnlyRightsForProject(itemBriefBL.GetItemBrief(itemBriefId).ProjectId, userId, true);
                    }
                    else
                    {
                        itemDetails.MinQuantity = inventoryBL.GetMaxBookedQuantityForAllDuration(item.ItemId);

                        ItemStatusInformationForUser itemStatusInformationForUser = inventoryBL.GetItemStatusInformationForUser(item, item.CompanyId.Value, userId);
                        isReadOnly = itemStatusInformationForUser.IsReadOnly;
                        itemDetails.IsEditableToAdminOnly = itemStatusInformationForUser.CanEditQuantity;
                    }

                    itemDetails.Name        = item.Name;
                    itemDetails.Description = item.Description;
                    itemDetails.LocationId  = item.LocationId;
                    itemDetails.Quantity    = itemBooking != null ? itemBooking.Quantity : item.Quantity.HasValue ? item.Quantity.Value : item.Quantity;

                    User bookingManager = inventoryBL.GetContactBookingManager(item.CompanyId.Value, item.LocationId);
                    if (bookingManager != null)
                    {
                        itemDetails.BookingManagerName  = Utils.GetFullName(bookingManager);
                        itemDetails.BookingManagerEmail = bookingManager.Email1;
                    }

                    if (fromDate.HasValue && toDate.HasValue)
                    {
                        itemDetails.AvailableQty = DataContext.GetAvailableItemQuantity(itemId, fromDate.Value, toDate.Value, 0).FirstOrDefault().Value;
                    }
                    itemDetails.CreatedFor      = item.CreatedFor;
                    itemDetails.ItemBriefId     = itemBriefId;
                    itemDetails.LastUpdatedDate = item.LastUpdatedDate;
                    itemTypeId = itemTypeIdToBeLoad.HasValue ? itemTypeIdToBeLoad.Value : item.ItemTypeId.Value;

                    itemDetails.LastUpdatedDate = item.LastUpdatedDate;

                    itemDetails.ItemStatus = itemBooking != null?inventoryBL.GetItemBookingStatus(itemBooking.ItemBookingId).Description : string.Empty;

                    itemDetails.ItemId     = itemId;
                    itemDetails.ItemValues = GetItemFieldValues(itemId).Select(iv =>
                                                                               new ValuesInfo
                    {
                        Id            = iv.ItemValueId,
                        FieldId       = iv.FieldId,
                        FieldOptionId = iv.FieldOptionId,
                        Value         = iv.Value
                    }).ToList();

                    itemDetails.CountryId  = inventoryBL.GetCountryIdByItemId(item.ItemId);
                    itemDetails.ItemTypeId = item.ItemTypeId;
                    itemDetails.Status     = "OK";
                }
            }
            else if (itemBriefId > 0)
            {
                Data.ItemVersionHistory itemVersionHistory = inventoryBL.GetItemVersionHistoryByItemBriefId(itemBriefId);
                itemDetails.ItemBriefId = itemBriefId;
                if (itemVersionHistory != null)
                {
                    itemId                            = itemVersionHistory.ItemId;
                    itemDetails.Name                  = itemVersionHistory.Name;
                    itemDetails.Description           = itemVersionHistory.Description;
                    itemDetails.LocationId            = null; //itemVersionHistory.Location;
                    itemDetails.Quantity              = itemVersionHistory.Quantity.HasValue ? itemVersionHistory.Quantity.Value : itemDetails.Quantity;
                    itemDetails.IsEditableToAdminOnly = false;
                    itemDetails.ItemBriefId           = itemVersionHistory.ItemBriefId;
                    itemDetails.ItemValues            = GetItemVersionHistoryValues(itemVersionHistory.ItemVersionHistoryId).Select(ivhv =>
                                                                                                                                    new ValuesInfo
                    {
                        Id            = ivhv.ItemVersionHistoryId,
                        FieldId       = ivhv.FieldId,
                        FieldOptionId = ivhv.FieldOptionId,
                        Value         = ivhv.Value
                    }).ToList();
                    itemTypeId             = itemTypeIdToBeLoad.HasValue ? itemTypeIdToBeLoad.Value : itemVersionHistory.ItemTypeId.Value;
                    itemDetails.CountryId  = inventoryBL.GetCountryIdByItemId(itemVersionHistory.ItemId);
                    itemDetails.ItemTypeId = itemVersionHistory.ItemTypeId;
                    itemDetails.Status     = "OK";
                }
                else
                {
                    StageBitz.Data.ItemBrief itemBrief = itemBriefBL.GetItemBrief(itemBriefId);
                    if (itemBrief != null)
                    {
                        itemDetails.Name                  = itemBrief.Name;
                        itemDetails.Description           = itemBrief.Description;
                        itemDetails.LocationId            = null;
                        itemDetails.IsEditableToAdminOnly = true;
                        itemDetails.ItemBriefId           = itemBriefId;
                        itemDetails.Quantity              = itemBrief.Quantity.HasValue ? itemBrief.Quantity.Value : itemBrief.Quantity;
                        itemDetails.ItemBriefId           = itemBrief.ItemBriefId;
                        itemDetails.ItemValues            = GetItemBriefFieldValues(itemBriefId).Select(ibfv =>
                                                                                                        new ValuesInfo
                        {
                            Id            = 0,
                            FieldId       = ibfv.FieldId,
                            FieldOptionId = ibfv.FieldOptionId,
                            Value         = ibfv.Value
                        }).ToList();

                        itemTypeId                     = itemTypeIdToBeLoad.HasValue ? itemTypeIdToBeLoad.Value : itemBriefBL.GetItemBriefType(itemBrief.ItemBriefId).ItemTypeId;
                        itemDetails.CountryId          = itemBriefBL.GetCountryIdByItemBriefId(itemBrief.ItemBriefId);
                        itemDetails.Status             = "OK";
                        itemDetails.CanEditInItemBrief = true;
                        itemDetails.ItemTypeId         = itemBrief.ItemBriefTypes.FirstOrDefault().ItemTypeId;
                    }
                }
            }

            itemDetails.IsReadOnly    = isReadOnly;
            itemDetails.DisplayMarkUp = GetItemTypeHTML(itemTypeId);

            Data.ItemType itemType = Utils.GetItemTypeById(itemDetails.ItemTypeId.Value);
            itemDetails.ItemTypeName = itemType != null ? itemType.Name : string.Empty;

            return(itemDetails);
        }
コード例 #2
0
        public MobileItemDetails GetItemDetails(MobileItemRequestDetails mobileItemRequestDetails)
        {
            string            message           = string.Empty;
            string            status            = string.Empty;
            bool              isValidVersion    = true;
            MobileItemDetails mobileItemDetails = new MobileItemDetails();

            try
            {
                using (StageBitzDB dataContext = new StageBitzDB())
                {
                    isValidVersion = Helper.IsValidAppVersion(mobileItemRequestDetails.Version, out status);
                    if (isValidVersion)
                    {
                        //Check the user security
                        int userId = int.Parse(Utils.DecryptStringAES(mobileItemRequestDetails.Token));

                        if (Utils.CanAccessInventory(mobileItemRequestDetails.CompanyId, userId))
                        {
                            Item item = dataContext.Items.Where(i => i.ItemId == mobileItemRequestDetails.ItemId).FirstOrDefault();
                            if (item != null)
                            {
                                InventoryBL inventoryBL = new InventoryBL(dataContext);
                                mobileItemDetails.ItemId      = item.ItemId;
                                mobileItemDetails.Status      = "OK";
                                mobileItemDetails.Name        = item.Name;
                                mobileItemDetails.ItemTypeId  = item.ItemTypeId.HasValue ? item.ItemTypeId.Value : 0;
                                mobileItemDetails.Description = item.Description;
                                mobileItemDetails.Quantity    = item.Quantity.HasValue ? item.Quantity.Value : 0;
                                mobileItemDetails.CanEditItem = inventoryBL.GetItemStatusInformationForUser(item, mobileItemRequestDetails.CompanyId, userId).IsReadOnly ? 0 : 1;
                                //Get Item Status
                                mobileItemDetails.ItemStatus = inventoryBL.GetItemStatus(item.ItemId);

                                mobileItemDetails.LastUpdatedDate = item.LastUpdatedDate.HasValue ? item.LastUpdatedDate.Value : item.CreatedDate.Value;
                                UtilityBL utilityBL = new UtilityBL(dataContext);

                                var medias = utilityBL.GetDocumentMedias("Item", item.ItemId, true, null);
                                if (medias.Count > 0)
                                {
                                    var docMediaIdList = medias.OrderByDescending(m => m.SortOrder).ThenBy(m => m.DocumentMediaId).Select(m => m.DocumentMediaId).ToList <int>();
                                    mobileItemDetails.DocumentMediaIdList = docMediaIdList;
                                }
                            }
                            else
                            {
                                mobileItemDetails.Status  = "NOTOK";
                                mobileItemDetails.Message = "Item not exist.";
                            }
                        }
                        else
                        {
                            mobileItemDetails.Status  = "NOTOK";
                            mobileItemDetails.Message = "Check settings with Company Administrator.";
                        }
                    }
                    else
                    {
                        mobileItemDetails.Status  = "NOTOK";
                        mobileItemDetails.Message = "Please update App.";
                    }
                }
            }
            catch (Exception ex)
            {
                AgentErrorLog.HandleException(ex);
                mobileItemDetails.Status  = "ERROR";
                mobileItemDetails.Message = "Oops! Unkown error. Sorry...";
            }
            return(mobileItemDetails);
        }
コード例 #3
0
        public ItemResult SyncItem(MobileItem mobileItem)
        {
            string     status         = string.Empty;
            string     message        = string.Empty;
            ItemResult itemResult     = new ItemResult();
            bool       isValidVersion = true;

            try
            {
                using (StageBitzDB dataContext = new StageBitzDB())
                {
                    isValidVersion = Helper.IsValidAppVersion(mobileItem.Version, out status);
                    if (isValidVersion)
                    {
                        if (mobileItem != null)
                        {
                            //Check if this Item has already been created in MobileItem table
                            //If not create
                            InventoryMobileItem inventoryMobileItem = dataContext.InventoryMobileItems.Where(imi => imi.MobileItemId == mobileItem.DeviceItemId).FirstOrDefault();
                            if (inventoryMobileItem == null)
                            {
                                int userId = int.Parse(Utils.DecryptStringAES(mobileItem.Token));

                                //Check if the user can Create the Item
                                CompanyBL   companyBL   = new CompanyBL(dataContext);
                                FinanceBL   financeBL   = new FinanceBL(dataContext);
                                InventoryBL inventoryBL = new InventoryBL(dataContext);

                                if (companyBL.HasEditPermissionForInventoryStaff(mobileItem.CompanyId, userId, null))
                                {
                                    //New Creation of Item
                                    if (mobileItem.ItemId == 0)
                                    {
                                        //To create items in the hidden mode, if the limits have reached.
                                        bool isFreeTrailCompany = companyBL.IsFreeTrialCompany(mobileItem.CompanyId);

                                        CompanyPaymentPackage companyPaymentPackage = financeBL.GetCurrentPaymentPackageFortheCompanyIncludingFreeTrial(mobileItem.CompanyId);

                                        InventoryPaymentPackageDetails inventoryPaymentPackageDetails = null;
                                        if (companyPaymentPackage != null)
                                        {
                                            inventoryPaymentPackageDetails =
                                                Utils.GetSystemInventoryPackageDetailByPaymentPackageTypeId(companyPaymentPackage.InventoryPaymentPackageTypeId);
                                        }

                                        CompanyCurrentUsage companyCurrentUsage = financeBL.GetCompanyCurrentUsage(mobileItem.CompanyId, null);

                                        if (!financeBL.HasExceededInventoryLimit(isFreeTrailCompany, inventoryPaymentPackageDetails, companyCurrentUsage))
                                        {
                                            inventoryMobileItem = new InventoryMobileItem();
                                            inventoryMobileItem.MobileItemId = mobileItem.DeviceItemId;
                                            inventoryMobileItem.CreatedBy    = userId;
                                            inventoryMobileItem.CreatedDate  = Utils.Now;
                                            dataContext.InventoryMobileItems.AddObject(inventoryMobileItem);

                                            Item item = new Item();
                                            item.Name                  = mobileItem.Name;
                                            item.IsManuallyAdded       = true;
                                            item.ItemTypeId            = mobileItem.ItemTypeId;
                                            item.Quantity              = mobileItem.Quantity;
                                            item.Description           = mobileItem.Description;
                                            item.CompanyId             = mobileItem.CompanyId;
                                            item.IsActive              = true;
                                            item.CreatedByUserId       = item.LastUpdatedByUserId = userId;
                                            item.CreatedDate           = item.LastUpdatedDate = Utils.Now;
                                            item.VisibilityLevelCodeId = Utils.GetCodeIdByCodeValue("InventoryVisibilityLevel", "ABOVE_SHAREDINVENTORY");

                                            dataContext.Items.AddObject(item);
                                            dataContext.SaveChanges();
                                            itemResult.Id = item.ItemId;
                                            status        = "OK";
                                        }
                                        else
                                        {
                                            status  = "LIMITREACHED";
                                            message = "Inventory plan limit reached.";
                                        }
                                    }
                                    else
                                    {
                                        //Edit existing one
                                        Item exItem = inventoryBL.GetItem(mobileItem.ItemId);
                                        if (exItem != null && exItem.IsActive)
                                        {
                                            Code userVisibilityCode = inventoryBL.GetUserInventoryVisibilityLevel(mobileItem.CompanyId, userId, null, false);
                                            if (!inventoryBL.GetItemStatusInformationForUser(exItem, mobileItem.CompanyId, userId).IsReadOnly&& exItem.Code.SortOrder >= userVisibilityCode.SortOrder)
                                            {
                                                if (mobileItem.LastUpdateDate == exItem.LastUpdatedDate)
                                                {
                                                    exItem.Name                = mobileItem.Name;
                                                    exItem.ItemTypeId          = mobileItem.ItemTypeId;
                                                    exItem.Description         = mobileItem.Description;
                                                    exItem.Quantity            = mobileItem.Quantity;
                                                    exItem.LastUpdatedByUserId = userId;
                                                    exItem.LastUpdatedDate     = Utils.Now;
                                                    dataContext.SaveChanges();
                                                    status        = "OK";
                                                    itemResult.Id = mobileItem.ItemId;
                                                }
                                                else
                                                {
                                                    status  = "ITEMEDITED";
                                                    message = "Item already edited.";
                                                }
                                            }
                                            else
                                            {
                                                status  = "NORIGHTS";
                                                message = "Check settings with Company Administrator.";
                                            }
                                        }
                                        else
                                        {
                                            status  = "ITEMDELETED";
                                            message = "Item no longer exists.";
                                        }
                                    }
                                }
                                else
                                {
                                    status  = "NOACCESS";
                                    message = "Check settings with Company Administrator.";
                                }
                            }
                            else
                            {
                                itemResult.Id = inventoryMobileItem.ItemId;
                                status        = "ITEMEXIST";
                                message       = "Item already synced.";
                            }
                        }
                    }
                    else
                    {
                        status  = "INVALIDAPP";
                        message = "Please update App.";
                    }
                }
            }
            catch (Exception ex)
            {
                AgentErrorLog.HandleException(ex);
                status  = "ERROR";
                message = "Oops! Unkown error. Sorry...";
            }
            itemResult.MobileId = mobileItem.DeviceItemId;
            itemResult.Status   = status;
            itemResult.Message  = message;
            return(itemResult);
        }
コード例 #4
0
        public ItemResult SyncImage(MobileDocumentMedia mobileDocumentMedia)
        {
            ItemResult itemResult      = new ItemResult();
            string     message         = string.Empty;
            string     status          = string.Empty;
            bool       isValidVersion  = true;
            int        documentMediaId = 0;

            try
            {
                using (StageBitzDB dataContext = new StageBitzDB())
                {
                    if (mobileDocumentMedia != null)
                    {
                        isValidVersion = Helper.IsValidAppVersion(mobileDocumentMedia.Version, out status);
                        if (isValidVersion)
                        {
                            if (mobileDocumentMedia != null)
                            {
                                //Check if the Item is already being synced
                                if (dataContext.InventoryMobileDocumentMedias.Where(imdm => imdm.MobileDocumentMediaId == mobileDocumentMedia.MobileImageId && imdm.RelatedTable == mobileDocumentMedia.RelatedTable && imdm.RelatedId == mobileDocumentMedia.RelatedId).FirstOrDefault() == null)
                                {
                                    //Check if the Item is exist
                                    Data.Item item = dataContext.Items.Where(i => i.ItemId == mobileDocumentMedia.RelatedId).FirstOrDefault();

                                    if (item != null && item.IsActive)
                                    {
                                        int         userId      = int.Parse(Utils.DecryptStringAES(mobileDocumentMedia.Token));
                                        InventoryBL inventoryBL = new InventoryBL(dataContext);
                                        if (!inventoryBL.GetItemStatusInformationForUser(item, mobileDocumentMedia.CompanyId, userId).IsReadOnly)
                                        {
                                            //Images can be either deleted or added.
                                            if (mobileDocumentMedia.DocumentMediaId == 0)
                                            {
                                                DocumentMedia documentMedia = new DocumentMedia();
                                                documentMedia.DocumentMediaContent = Helper.LoadImage(mobileDocumentMedia.Image, false, mobileDocumentMedia.FileExtension);
                                                documentMedia.Thumbnail            = Helper.LoadImage(mobileDocumentMedia.Image, true, mobileDocumentMedia.FileExtension);
                                                documentMedia.RelatedId            = mobileDocumentMedia.RelatedId;
                                                documentMedia.RelatedTableName     = mobileDocumentMedia.RelatedTable;
                                                documentMedia.SortOrder            = inventoryBL.HasDefaultImageSet(mobileDocumentMedia.RelatedId, mobileDocumentMedia.RelatedTable) ? 0 : 1;
                                                documentMedia.IsImageFile          = true;
                                                documentMedia.FileExtension        = mobileDocumentMedia.FileExtension;
                                                documentMedia.Name        = mobileDocumentMedia.Name;
                                                documentMedia.CreatedBy   = documentMedia.LastUpdatedBy = userId;
                                                documentMedia.CreatedDate = documentMedia.LastUpdatedDate = Utils.Today;
                                                dataContext.DocumentMedias.AddObject(documentMedia);

                                                InventoryMobileDocumentMedia inventoryMobileDocumentMedia = new InventoryMobileDocumentMedia();
                                                inventoryMobileDocumentMedia.MobileDocumentMediaId = mobileDocumentMedia.MobileImageId;
                                                inventoryMobileDocumentMedia.DocumentMediaId       = documentMedia.DocumentMediaId;
                                                inventoryMobileDocumentMedia.RelatedTable          = mobileDocumentMedia.RelatedTable;
                                                inventoryMobileDocumentMedia.RelatedId             = mobileDocumentMedia.RelatedId;
                                                inventoryMobileDocumentMedia.CreatedBy             = userId;
                                                inventoryMobileDocumentMedia.CreatedDate           = inventoryMobileDocumentMedia.LastUpdateDate = Utils.Today;
                                                dataContext.InventoryMobileDocumentMedias.AddObject(inventoryMobileDocumentMedia);

                                                dataContext.SaveChanges();
                                                status          = "OK";
                                                documentMediaId = documentMedia.DocumentMediaId;
                                            }
                                            else
                                            {
                                                UtilityBL     utilityBL     = new UtilityBL(dataContext);
                                                DocumentMedia documentMedia = utilityBL.GetDocumentMedia(mobileDocumentMedia.DocumentMediaId);
                                                if (documentMedia != null)
                                                {
                                                    dataContext.DeleteDocumentMedia(mobileDocumentMedia.DocumentMediaId);
                                                    status = "OK";
                                                }
                                                else
                                                {
                                                    status  = "OK";
                                                    message = "Image no longer exists.";
                                                }
                                            }
                                        }
                                        else
                                        {
                                            status  = "NORIGHTS";
                                            message = "Check settings with Company Administrator.";
                                        }
                                    }
                                    else
                                    {
                                        status  = "ITEMDELETED";
                                        message = "Item no longer exists.";
                                    }
                                }
                                else
                                {
                                    status  = "EXIST";
                                    message = "Image already synced.";
                                }
                            }
                        }
                        else
                        {
                            status  = "INVALIDAPP";
                            message = "Please update App.";
                        }
                    }
                    else
                    {
                        status  = "ERROR";
                        message = "Oops! Unkown error. Sorry...";
                    }
                }
            }
            catch (Exception ex)
            {
                AgentErrorLog.HandleException(ex);
                status  = "ERROR";
                message = "Oops! Unkown error. Sorry...";
            }
            itemResult.Id       = documentMediaId;
            itemResult.MobileId = mobileDocumentMedia != null ? mobileDocumentMedia.MobileImageId : "0";
            itemResult.Status   = status;
            itemResult.Message  = message;
            return(itemResult);
        }