/// <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); }
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); }
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); }
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); }