public ItemBriefDetails GetItemBriefDetails(ItemBriefRequestDetails itemBriefRequestDetails) { ItemBriefDetails itemBriefDetails = new Data.DataTypes.ItemBriefDetails(); using (StageBitzDB dataContext = new StageBitzDB()) { try { ItemBriefBL itemBriefBL = new ItemBriefBL(dataContext); ItemTypesBL itemTypesBL = new ItemTypesBL(dataContext); Data.ItemBrief itemBrief = itemBriefBL.GetItemBrief(itemBriefRequestDetails.ItemBriefId); int projectId = 0; if (itemBrief != null) { projectId = itemBrief.ProjectId; } itemBriefDetails.CountryId = itemBriefBL.GetCountryIdByItemBriefId(itemBrief.ItemBriefId); itemBriefDetails.ItemBriefInfo = itemBriefBL.GetItemBriefInfoByItemBrief(itemBrief); itemBriefDetails.IsReadOnly = Support.IsReadOnlyRightsForProject(projectId, itemBriefRequestDetails.UserId); itemBriefDetails.CanSeeBudgetSummary = Support.CanSeeBudgetSummary(itemBriefRequestDetails.UserId, projectId); int itemTypeId = itemBriefRequestDetails.ItemTypeId.HasValue ? itemBriefRequestDetails.ItemTypeId.Value : itemBriefBL.GetItemBriefType(itemBriefRequestDetails.ItemBriefId).ItemTypeId; itemBriefDetails.DisplayMarkUp = itemTypesBL.GetItemTypeHTML(itemTypeId); itemBriefDetails.ItemBriefValues = itemTypesBL.GetItemBriefFieldValues(itemBriefRequestDetails.ItemBriefId).Select(ibfv => new ValuesInfo { Id = ibfv.ItemBriefValueId, FieldId = ibfv.FieldId, FieldOptionId = ibfv.FieldOptionId, Value = ibfv.Value }).ToList(); int itemId = 0; int userId = 0; ItemBooking itemBooking = itemBriefBL.GetInUseItemBooking(itemBriefRequestDetails.ItemBriefId); if (itemBooking != null) { itemId = itemBooking.ItemId; } userId = itemBriefRequestDetails.UserId; ItemDetails itemDetails = itemTypesBL.GetItemDetails(itemId, itemBriefRequestDetails.ItemBriefId, userId, null, null, null); if (itemDetails != null) { itemBriefDetails.ItemDetails = itemDetails; } } catch (Exception ex) { AgentErrorLog.HandleException(ex); } return(itemBriefDetails); } }
/// <summary> /// Intializes the complete button. /// </summary> public void IntializeCompleteButton() { bool canComplete = false; bool canEditIteminItemBrief = this.GetBL <InventoryBL>().CanEditIteminItemBrief(ItemBriefId, out canComplete); btnVerifyBeforeComplete.Enabled = !IsItemBriefReadOnly; Data.ItemBrief itemBrief = GetItemBrief(this.ItemBriefId); btnCompleteItem.Enabled = !IsItemBriefReadOnly; DataContext.Refresh(RefreshMode.StoreWins, itemBrief); bool isItemBriefCompleted = (itemBrief != null && itemBrief.ItemBriefStatusCodeId == Support.GetCodeIdByCodeValue("ItemBriefStatusCode", "COMPLETED")); btnCompleteItem.Visible = (!isItemBriefCompleted && (canEditIteminItemBrief || canComplete)); if (!canEditIteminItemBrief && canComplete) { btnCompleteItem.Text = "Complete"; } UpdateUpdatePanels(); }
/// <summary> /// Loads the item brief. /// </summary> /// <param name="itemBrief">The item brief.</param> private void LoadItemBrief(Data.ItemBrief itemBrief) { documentList.RelatedTableName = "ItemBrief"; documentList.RelatedId = itemBrief.ItemBriefId; }
/// <summary> /// Loads the data. /// </summary> public void LoadData() { int relatedId = (RelatedTable == "ItemBrief") && ItemBriefId.HasValue ? ItemBriefId.Value : ItemId; var defaultImage = (from m in DataContext.DocumentMedias where m.RelatedTableName == RelatedTable && m.RelatedId == relatedId && m.IsImageFile == true orderby m.SortOrder descending select new { m.DocumentMediaId, m.Name }).FirstOrDefault(); if (defaultImage != null) { thumbItem.DocumentMediaId = defaultImage.DocumentMediaId; thumbItem.ImageTitle = defaultImage.Name; } if (RelatedTable == "ItemBrief") { if (ItemBriefId.HasValue) { Data.ItemBrief itemBrief = GetBL <ItemBriefBL>().GetItemBrief(ItemBriefId.Value); if (itemBrief != null) { lblName.Text = Support.TruncateString(itemBrief.Name, 20); if (itemBrief.Name.Length > 20) { lblName.ToolTip = itemBrief.Name; } if (itemBrief.Quantity != null) { lblQuantity.Text = itemBrief.Quantity.ToString(); rntxtQuntity.Value = itemBrief.Quantity; } else { trQuantity.Visible = false; } trStatus.Visible = false; trCompany.Visible = false; lblDescription.InnerText = Support.TruncateString(itemBrief.Description, 60); if (itemBrief.Description != null && itemBrief.Description.Length > 60) { lblDescription.Attributes.Add("title", itemBrief.Description); } } trLocation.Visible = false; } } else { Data.Item item = this.GetBL <InventoryBL>().GetItem(ItemId); if (item != null) { lblName.Text = Support.TruncateString(item.Name, 20); if (item.Name.Length > 20) { lblName.ToolTip = item.Name; } if (item.Quantity != null) { lblQuantity.Text = item.Quantity.ToString(); } else { trQuantity.Visible = false; } trCompany.Visible = true; string companyName = Support.GetCompanyNameById(Convert.ToInt32(item.CompanyId)); lblcompany.Text = Support.TruncateString(companyName, 20); if (companyName.Length > 20) { lblcompany.ToolTip = companyName; } string path = GetBL <LocationBL>().GetLocationPath(item.LocationId, item.CompanyId.Value); lblLocation.Text = Utils.ReverseEllipsize(path, 22); if (path.Length > 22) { lblLocation.ToolTip = path; } // If both ItemBriefId and ItemId exists need to get information from ItemBooking (this is specific for Pinboard tab) if (ItemBriefId.HasValue) { Data.ItemBooking itemBooking = GetBL <InventoryBL>().GetItemBookingByItemID(ItemId, ItemBriefId.Value, "ItemBrief"); if (itemBooking != null && itemBooking.ToDate.HasValue) { litStatus.Text = GetBL <InventoryBL>().GetItemBookingStatus(itemBooking.ItemBookingId).Description; lnkName.Visible = true; lblName.Visible = false; lnkName.Text = Support.TruncateString(item.Name, 20); lnkName.NavigateUrl = string.Format("~/Inventory/ItemDetails.aspx?ItemId={0}&CompanyId={1}", this.ItemId, GetBL <ItemBriefBL>().GetItemBrief(itemBooking.RelatedId).Project.CompanyId); if (item.Name.Length > 20) { lnkName.ToolTip = item.Name; } int availableQuntity = this.GetBL <InventoryBL>().GetAvailableItemQuantity(this.ItemId, itemBooking.FromDate, itemBooking.ToDate.Value); int maxQty = availableQuntity + itemBooking.Quantity; rntxtQuntity.MaxValue = maxQty; lblAvailableQty.Text = maxQty.ToString(CultureInfo.InvariantCulture); rntxtQuntity.MinValue = availableQuntity == 0 ? 0 : 1; rntxtQuntity.Value = itemBooking.Quantity >= rntxtQuntity.MinValue ? itemBooking.Quantity : rntxtQuntity.MinValue; lblQuantity.Text = itemBooking.Quantity.ToString(CultureInfo.InvariantCulture); litFromDate.Text = Support.FormatDate(itemBooking.FromDate); litToDate.Text = Support.FormatDate(itemBooking.ToDate); trBookingFrom.Visible = true; trBookingTo.Visible = true; } else { trStatus.Visible = false; } this.IsReadOnly = this.IsReadOnly || itemBooking.ItemBookingStatusCodeId != Utils.GetCodeIdByCodeValue("ItemBookingStatusCode", "PINNED") || !itemBooking.ToDate.HasValue || itemBooking.ToDate < Utils.Today; } else { trStatus.Visible = false; } lblDescription.InnerText = Support.TruncateString(item.Description, 60); if (item.Description != null && item.Description.Length > 60) { lblDescription.Attributes.Add("title", item.Description); } } } InitializeEditMode(); }
/// <summary> /// Confirms the import. /// </summary> /// <param name="sender">The sender.</param> /// <param name="e">The <see cref="EventArgs"/> instance containing the event data.</param> protected void ConfirmImport(object sender, EventArgs e) { if (!PageBase.StopProcessing) { var itemToRemove = (from pit in DataContext.ProjectItemTypes where pit.ProjectId == ProjectID && pit.ItemTypeId == ItemTypeId select pit).FirstOrDefault(); if (itemToRemove == null) { popupSuccess.HidePopup(); Response.Redirect(String.Format("~/Project/ProjectDashboard.aspx?projectid={0}", ProjectID)); } else { CheckDuplicatesinCSVFileWithExistingData(); foreach (GridDataItem gvRow in gvItems.Items) { if (!duplicateItemList.Contains(gvRow[colitemName].Text)) { StageBitz.Data.ItemBrief itemBrief = new Data.ItemBrief(); #region Set Defaults itemBrief.Description = string.Empty; itemBrief.Category = string.Empty; itemBrief.Act = string.Empty; itemBrief.Scene = string.Empty; itemBrief.Page = string.Empty; #endregion Set Defaults itemBrief.Name = gvRow[colitemName].Text; if (whiteSpace != gvRow[coldescription].Text) { itemBrief.Description = gvRow[coldescription].Text; } if (whiteSpace != gvRow[colcategory].Text) { itemBrief.Category = gvRow[colcategory].Text; } if (whiteSpace != gvRow[colact].Text) { itemBrief.Act = gvRow[colact].Text; } if (whiteSpace != gvRow[colscene].Text) { itemBrief.Scene = gvRow[colscene].Text; } if (whiteSpace != gvRow[colpage].Text) { itemBrief.Page = gvRow[colpage].Text; } if (whiteSpace != gvRow[colpreset].Text) { itemBrief.Preset = gvRow[colpreset].Text; } if (whiteSpace != gvRow[colcharacter].Text) { itemBrief.Character = gvRow[colcharacter].Text; } if (whiteSpace != gvRow[colrehearsal].Text) { itemBrief.RehearsalItem = gvRow[colrehearsal].Text; } int quantity = 0; int.TryParse(gvRow[colquantity].Text, out quantity); if (quantity == 0) { itemBrief.Quantity = null; } else { itemBrief.Quantity = int.Parse(gvRow[colquantity].Text); } itemBrief.Budget = 0; itemBrief.ProjectId = ProjectID; itemBrief.ItemBriefStatusCodeId = Support.GetCodeIdByCodeValue("ItemBriefStatusCode", "NOTSTARTED"); itemBrief.CreatedByUserId = UserID; itemBrief.LastUpdatedByUserId = UserID; itemBrief.CreatedDate = Now; itemBrief.LastUpdatedDate = Now; #region ItemBrief Types Data.ItemBriefType itemBriefType = new Data.ItemBriefType(); itemBriefType.ItemTypeId = ItemTypeId; itemBriefType.ItemBriefTypeCodeId = Support.GetCodeIdByCodeValue("ItemBriefType", "PRIMARY"); itemBriefType.CreatedByUserId = itemBriefType.LastUpdatedByUserId = UserID; itemBriefType.CreatedDate = itemBriefType.LastUpdatedDate = Now; itemBriefType.IsActive = true; #endregion ItemBrief Types itemBrief.ItemBriefTypes.Add(itemBriefType); GetBL <ItemBriefBL>().AddItemBrief(itemBrief); } } StringBuilder finalErrorbuilder = new StringBuilder(); //(gvItems.Items.Count - duplicateItemList.Count) gives how many items being inserted. int successcount = (gvItems.Items.Count - duplicateItemList.Count); if (successcount == 0) { popupSuccess.Title = "Failed to Import"; } if (successcount == 1) { finalErrorbuilder.AppendLine(string.Format("{0} Item has been successfully imported.<br />", successcount)); } else if (successcount > 1) { finalErrorbuilder.AppendLine(string.Format("{0} Items have been successfully imported.<br />", successcount)); } #region Generate 'Bulk Import' Notification Notification nf = new Notification(); nf.ModuleTypeCodeId = Support.GetCodeIdByCodeValue("ModuleType", "ITEMLIST"); nf.OperationTypeCodeId = Support.GetCodeIdByCodeValue("OperationType", "ADD"); nf.RelatedId = 0; nf.ProjectId = ProjectID; nf.Message = string.Format("{0} imported {1} Item Brief{2}.", Support.UserFullName, successcount, (successcount == 1) ? string.Empty : "s"); nf.CreatedByUserId = nf.LastUpdatedByUserId = UserID; nf.CreatedDate = nf.LastUpdatedDate = Now; GetBL <NotificationBL>().AddNotification(nf); #endregion Generate 'Bulk Import' Notification popupSuccess.ShowPopup(); divSuccessMsg.InnerHtml = finalErrorbuilder.AppendLine(errorBuilder.ToString()).ToString(); } } }
/// <summary> /// Handles the Click event of the btnAdd control. /// </summary> /// <param name="sender">The source of the event.</param> /// <param name="e">The <see cref="EventArgs"/> instance containing the event data.</param> protected void btnAdd_Click(object sender, EventArgs e) { if (!StopProcessing) { if (isItemRmoved()) { popupItemBriefRemoved.ShowPopup(); } else { txtFindName.Text = string.Empty; FindByName = string.Empty; upnlFindItems.Update(); if (this.IsValid && !this.StopProcessing) { string itemName = txtName.Text.Trim(); Data.ItemBrief itemBrief = new Data.ItemBrief(); #region Fill data itemBrief.ProjectId = ProjectId; itemBrief.Name = itemName; itemBrief.Description = txtDescription.Text.Trim(); itemBrief.Category = txtCategory.Text.Trim(); itemBrief.Act = txtAct.Text.Trim(); itemBrief.Scene = txtScene.Text.Trim(); itemBrief.Page = txtPage.Text.Trim(); itemBrief.Preset = txtPreset.Text.Trim(); itemBrief.Character = txtCharacter.Text.Trim(); itemBrief.RehearsalItem = txtRehearsal.Text.Trim(); if (txtQuantity.Value.HasValue) { itemBrief.Quantity = (int)txtQuantity.Value.Value; } else { itemBrief.Quantity = null; } itemBrief.Budget = 0; itemBrief.ItemBriefStatusCodeId = Support.GetCodeIdByCodeValue("ItemBriefStatusCode", "NOTSTARTED"); itemBrief.CreatedByUserId = itemBrief.LastUpdatedByUserId = UserID; itemBrief.CreatedDate = itemBrief.LastUpdatedDate = Now; #endregion Fill data #region ItemBrief Types Data.ItemBriefType itemBriefType = new Data.ItemBriefType(); itemBriefType.ItemTypeId = ItemTypeId; itemBriefType.ItemBriefTypeCodeId = Support.GetCodeIdByCodeValue("ItemBriefType", "PRIMARY"); itemBriefType.CreatedByUserId = itemBriefType.LastUpdatedByUserId = UserID; itemBriefType.CreatedDate = itemBriefType.LastUpdatedDate = Now; itemBriefType.IsActive = true; itemBrief.ItemBriefTypes.Add(itemBriefType); #endregion ItemBrief Types GetBL <ItemBriefBL>().AddItemBrief(itemBrief); #region Generate 'Add' Notification Notification nf = new Notification(); nf.ModuleTypeCodeId = Support.GetCodeIdByCodeValue("ModuleType", "ITEMBRIEF"); nf.OperationTypeCodeId = Support.GetCodeIdByCodeValue("OperationType", "ADD"); nf.RelatedId = itemBrief.ItemBriefId; nf.ProjectId = ProjectId; nf.Message = string.Format("{0} added an Item Brief.", Support.UserFullName); nf.CreatedByUserId = nf.LastUpdatedByUserId = UserID; nf.CreatedDate = nf.LastUpdatedDate = Now; GetBL <NotificationBL>().AddNotification(nf); #endregion Generate 'Add' Notification LoadData(); txtName.Focus(); } } } }
/// <summary> /// Handles the ItemDataBound event of the gvItemList control. /// </summary> /// <param name="sender">The source of the event.</param> /// <param name="e">The <see cref="GridItemEventArgs"/> instance containing the event data.</param> protected void gvItemList_ItemDataBound(object sender, GridItemEventArgs e) { if (e.Item.ItemType == GridItemType.EditItem) { GridDataItem dataItem = (GridDataItem)e.Item; dynamic itemData = (dynamic)dataItem.DataItem; Data.ItemBrief itemBrief = ((dynamic)dataItem.DataItem).ItemBrief; TextBox tbItemBriefName = (TextBox)dataItem.FindControl("tbItemBriefName"); tbItemBriefName.Text = itemBrief.Name; tbItemBriefName.Attributes.Add("OnKeyUp", "ClearItemBriefDuplicateErrorMessages('" + e.Item.ItemIndex + "');"); TextBox tbDescription = (TextBox)dataItem.FindControl("tbDescription"); tbDescription.Text = itemBrief.Description; TextBox tbCategory = (TextBox)dataItem.FindControl("tbCategory"); tbCategory.Text = itemBrief.Category; TextBox tbAct = (TextBox)dataItem.FindControl("tbAct"); tbAct.Text = itemBrief.Act; TextBox tbScene = (TextBox)dataItem.FindControl("tbScene"); tbScene.Text = itemBrief.Scene; TextBox tbPage = (TextBox)dataItem.FindControl("tbPage"); tbPage.Text = itemBrief.Page; RadNumericTextBox tbItemQuantity = (RadNumericTextBox)dataItem.FindControl("tbItemQuantity"); tbItemQuantity.Value = itemBrief.Quantity; (e.Item as GridEditableItem)["Status"].Enabled = false; } else if (e.Item is GridDataItem) { GridDataItem dataItem = (GridDataItem)e.Item; dynamic itemData = (dynamic)dataItem.DataItem; Data.ItemBrief itemBrief = ((dynamic)dataItem.DataItem).ItemBrief; HtmlAnchor lnkItemBriefDetails = (HtmlAnchor)e.Item.FindControl("lnkItemBriefDetails"); //Item link lnkItemBriefDetails.InnerText = Support.TruncateString(itemBrief.Name, 35); string sorting = GetSortParam(); lnkItemBriefDetails.HRef = ResolveUrl(string.Format("~/ItemBrief/ItemBriefDetails.aspx?ItemBriefId={0}&sort={1}", itemBrief.ItemBriefId, sorting)); tooltipManager.TargetControls.Add(lnkItemBriefDetails.ClientID, itemData.ThumbnailMediaId.ToString(), true); //Description dataItem["Description"].Text = Support.TruncateString(itemBrief.Description, 30); if (itemBrief.Description != null && itemBrief.Description.Length > 30) { dataItem["Description"].ToolTip = itemBrief.Description; } //Category dataItem["Category"].Text = Support.TruncateString(itemBrief.Category, 15); if (itemBrief.Category != null && itemBrief.Category.Length > 15) { dataItem["Category"].ToolTip = itemBrief.Category; } dataItem["Act"].Text = Support.TruncateString(itemBrief.Act, 4); if (itemBrief.Act != null && itemBrief.Act.Length > 4) { dataItem["Act"].ToolTip = itemBrief.Act; } dataItem["Scene"].Text = Support.TruncateString(itemBrief.Scene, 4); if (itemBrief.Scene != null && itemBrief.Scene.Length > 4) { dataItem["Scene"].ToolTip = itemBrief.Scene; } dataItem["Page"].Text = Support.TruncateString(itemBrief.Page, 4); if (itemBrief.Page != null && itemBrief.Page.Length > 4) { dataItem["Page"].ToolTip = itemBrief.Page; } dataItem["Quantity"].Text = Support.TruncateString(itemBrief.Quantity.ToString(), 4); if (itemBrief.Quantity != null && itemBrief.Quantity.ToString().Length > 4) { dataItem["Quantity"].ToolTip = itemBrief.Quantity.ToString(); } HtmlImage imgNoEstimatedCost = (HtmlImage)dataItem.FindControl("imgNoEstimatedCost"); imgNoEstimatedCost.Visible = this.GetBL <ItemBriefBL>().HasEmptyEstimateCostInItemBrief(itemBrief.ItemBriefId); dataItem["Character"].Text = Support.TruncateString(itemBrief.Character, 7); if (itemBrief.Character != null && itemBrief.Character.Length > 7) { dataItem["Character"].ToolTip = itemBrief.Character; } dataItem["Preset"].Text = Support.TruncateString(itemBrief.Preset, 6); if (itemBrief.Preset != null && itemBrief.Preset.Length > 6) { dataItem["Preset"].ToolTip = itemBrief.Preset; } dataItem["Rehearsal"].Text = Support.TruncateString(itemBrief.RehearsalItem, 7); if (itemBrief.RehearsalItem != null && itemBrief.RehearsalItem.Length > 7) { dataItem["Rehearsal"].ToolTip = itemBrief.RehearsalItem; } } }
/// <summary> /// Handles the UpdateCommand event of the gvItemList control. /// </summary> /// <param name="source">The source of the event.</param> /// <param name="e">The <see cref="Telerik.Web.UI.GridCommandEventArgs"/> instance containing the event data.</param> protected void gvItemList_UpdateCommand(object source, Telerik.Web.UI.GridCommandEventArgs e) { if (!StopProcessing) { if (Page.IsValid) { //Get the GridEditableItem of the RadGrid GridEditableItem editedItem = e.Item as GridEditableItem; int itemBriefId = (int)editedItem.GetDataKeyValue("ItemBrief.ItemBriefId");// (int)editedItem.OwnerTableView.DataKeyValues[editedItem.ItemIndex]["ItemBrief.ItemBriefId"]; DateTime localLastUpdatedDate = (DateTime)editedItem.GetDataKeyValue("ItemBrief.LastUpdatedDate"); Data.ItemBrief itemBrief = GetBL <ItemBriefBL>().GetItemBrief(itemBriefId, localLastUpdatedDate); if (itemBrief == null) { StageBitzException.ThrowException(new ConcurrencyException(ExceptionOrigin.ItemBriefList, ProjectId)); } TextBox tbItemBriefName = (TextBox)editedItem.FindControl("tbItemBriefName"); if (!IsValidtoSave(tbItemBriefName.Text, itemBriefId, false)) { Label lblErrorMsgForDuplicateItemBriefs = (Label)editedItem.FindControl("lblErrorMsgForDuplicateItemBriefs"); lblErrorMsgForDuplicateItemBriefs.Visible = true; lblErrorMsgForDuplicateItemBriefs.ToolTip = string.Format("'{0}' already exists in this Project.", tbItemBriefName.Text.Trim()); e.Canceled = true; return; } TextBox tbDescription = (TextBox)editedItem.FindControl("tbDescription"); TextBox tbCategory = (TextBox)editedItem.FindControl("tbCategory"); TextBox tbAct = (TextBox)editedItem.FindControl("tbAct"); TextBox tbScene = (TextBox)editedItem.FindControl("tbScene"); TextBox tbPage = (TextBox)editedItem.FindControl("tbPage"); TextBox tbCharacter = (TextBox)editedItem.FindControl("tbCharacter"); TextBox tbPreset = (TextBox)editedItem.FindControl("tbPreset"); TextBox tbRehearsal = (TextBox)editedItem.FindControl("tbRehearsal"); RadNumericTextBox tbItemQuantity = (RadNumericTextBox)editedItem.FindControl("tbItemQuantity"); if (itemBrief != null) { StageBitz.Data.ItemBrief tmpItemBrief = new Data.ItemBrief(); #region Assign input values to the temporary item brief object tmpItemBrief.Name = tbItemBriefName.Text.Trim(); if (tbItemQuantity.Value.HasValue) { tmpItemBrief.Quantity = (int)tbItemQuantity.Value; } else { tmpItemBrief.Quantity = null; } tmpItemBrief.Description = tbDescription.Text.Trim(); tmpItemBrief.Act = tbAct.Text.Trim(); tmpItemBrief.Scene = tbScene.Text.Trim(); tmpItemBrief.Page = tbPage.Text.Trim(); tmpItemBrief.Category = tbCategory.Text.Trim(); tmpItemBrief.Character = tbCharacter.Text.Trim(); tmpItemBrief.Preset = tbPreset.Text.Trim(); tmpItemBrief.RehearsalItem = tbRehearsal.Text.Trim(); //Added since the Grid does not contains these fields. tmpItemBrief.Budget = itemBrief.Budget; tmpItemBrief.DueDate = itemBrief.DueDate; #endregion Assign input values to the temporary item brief object //Compare and generate the edited field list. string editedFieldList = this.GetBL <ItemBriefBL>().GenerateEditedFieldListForItemBrief(itemBrief, tmpItemBrief); #region Generate 'Edit' Notification if (editedFieldList != string.Empty) { Notification nf = new Notification(); nf.ModuleTypeCodeId = Support.GetCodeIdByCodeValue("ModuleType", "ITEMBRIEF"); nf.OperationTypeCodeId = Support.GetCodeIdByCodeValue("OperationType", "EDIT"); nf.RelatedId = itemBrief.ItemBriefId; nf.ProjectId = ProjectId; nf.Message = string.Format("{0} edited the Item Brief - {1}.", Support.UserFullName, editedFieldList); nf.CreatedByUserId = nf.LastUpdatedByUserId = UserID; nf.CreatedDate = nf.LastUpdatedDate = Now; DataContext.Notifications.AddObject(nf); } #endregion Generate 'Edit' Notification #region Update the existing ItemBrief itemBrief.Name = tbItemBriefName.Text.Trim(); itemBrief.Description = tbDescription.Text.Trim(); itemBrief.Category = tbCategory.Text.Trim(); itemBrief.Act = tbAct.Text.Trim(); itemBrief.Scene = tbScene.Text.Trim(); itemBrief.Page = tbPage.Text.Trim(); itemBrief.Character = tbCharacter.Text.Trim(); itemBrief.Preset = tbPreset.Text.Trim(); itemBrief.RehearsalItem = tbRehearsal.Text.Trim(); if (tbItemQuantity.Value != null) { itemBrief.Quantity = (int)tbItemQuantity.Value; } else { itemBrief.Quantity = null; } itemBrief.LastUpdatedDate = Now; itemBrief.LastUpdatedByUserId = UserID; #endregion Update the existing ItemBrief GetBL <ItemBriefBL>().SaveChanges(); } gvItemList.EditIndexes.Clear(); gvItemList.MasterTableView.IsItemInserted = false; gvItemList.Rebind(); } } }
/// <summary> /// Saves the item details. /// </summary> /// <param name="itemDetails">The item details.</param> /// <param name="skipConcurrencyCheck">if set to <c>true</c> [skip concurrency check].</param> /// <param name="shouldCommit">if set to <c>true</c> [should commit].</param> /// <returns></returns> public ItemResultObject SaveItemDetails(ItemDetails itemDetails, bool skipConcurrencyCheck = false, bool shouldCommit = false) { ItemResultObject itemResultObject = new ItemResultObject(); ItemBriefBL itemBriefBL = new ItemBriefBL(DataContext); InventoryBL inventoryBL = new InventoryBL(DataContext); ProjectBL projectBL = new ProjectBL(DataContext); LocationBL locationBL = new LocationBL(DataContext); CompanyBL companyBL = new CompanyBL(DataContext); int itemId = itemDetails.ItemId; int companyId = 0; int projectId = 0; Data.ItemBrief itemBrief = itemBriefBL.GetItemBrief(itemDetails.ItemBriefId); Data.Item item = inventoryBL.GetItem(itemId); if (itemDetails.ItemId > 0) { companyId = item.CompanyId.Value; } else if (itemBrief != null && item == null) { companyId = itemBrief.Project.CompanyId; projectId = itemBrief.ProjectId; item = new Item(); item.CompanyId = companyId; } bool isInventoryPage = itemDetails.RelatedTable == "Company"; string relatedTable = "Company"; int relatedId = companyId; if (itemDetails.RelatedTable == "Project" && projectId > 0) { relatedTable = itemDetails.RelatedTable; relatedId = projectId; } if (!projectBL.ShouldStopProcessing(relatedTable, relatedId, itemDetails.UserId)) { ErrorCodes errorCode; if (itemDetails.ItemBriefId > 0 && !inventoryBL.CanEditIteminItemBrief(itemDetails.ItemBriefId, itemDetails.ItemId)) { itemResultObject.Status = "CONCURRENCY"; itemResultObject.ErrorCode = (int)ErrorCodes.NoEditPermissionForItemInItemBrief; itemResultObject.Message = "No Write Permission"; return(itemResultObject); } else if (relatedTable == "Company" && itemId > 0 && inventoryBL.CheckPermissionsForItemDetailsPage(itemDetails.UserId, itemId, companyId, out errorCode, false) == null) { itemResultObject.Status = "CONCURRENCY"; itemResultObject.ErrorCode = (int)errorCode; itemResultObject.Message = "No Write Permission"; return(itemResultObject); } else if (!skipConcurrencyCheck && itemId > 0 && itemDetails.LastUpdatedDate != item.LastUpdatedDate) { itemResultObject.Status = "NOTOK"; itemResultObject.Message = "Can not update"; return(itemResultObject); } item.Name = itemDetails.Name; item.Description = itemDetails.Description; if (itemDetails.IsEditableToAdminOnly && item.Quantity != itemDetails.Quantity)//Commit if changes exist { bool canSaveQty = true; if (item.Quantity > itemDetails.Quantity)//Only when reduces Units { int maxBookedQty = inventoryBL.GetMaxBookedQuantityForAllDuration(itemDetails.ItemId); if (maxBookedQty > itemDetails.Quantity) { canSaveQty = false; } } if (canSaveQty) { item.Quantity = itemDetails.Quantity; } else { itemResultObject.Status = "CONCURRENCY"; itemResultObject.ErrorCode = (int)ErrorCodes.QuantityUpdateFailed; itemResultObject.Message = "Can not reduce quantity"; return(itemResultObject); } } item.LastUpdatedByUserId = itemDetails.UserId; item.LastUpdatedDate = Utils.Now; if (isInventoryPage) { if (companyBL.HasEditPermissionForInventoryStaff(companyId, itemDetails.UserId, itemDetails.LocationId)) { item.CreatedFor = itemDetails.CreatedFor; if (itemDetails.LocationId.HasValue) { Data.Location location = locationBL.GetLocation(itemDetails.LocationId.Value); if (location == null) { itemResultObject.Status = "CONCURRENCY"; itemResultObject.ErrorCode = (int)ErrorCodes.InventoryLocationDeleted; itemResultObject.Message = "Item Location not available"; return(itemResultObject); } } item.LocationId = itemDetails.LocationId; } else { itemResultObject.Status = "CONCURRENCY"; itemResultObject.ErrorCode = (int)ErrorCodes.NoEditPermissionForInventory; itemResultObject.Message = "No Edit Permission For Item In Inventory"; return(itemResultObject); } } if (itemDetails.ItemTypeId.HasValue) { item.ItemTypeId = itemDetails.ItemTypeId; } //Update ItemBooking if (itemBrief != null) { ItemBooking itemBooking = inventoryBL.GetItemBookingByItemID(itemId, itemBrief.ItemBriefId, "ItemBrief"); itemBooking.Quantity = itemDetails.Quantity.Value; itemBooking.LastUpdateDate = Utils.Now; itemBooking.LastUpdatedBy = itemDetails.UserId; } if (itemDetails.ItemValues != null) { foreach (ValuesInfo iValue in itemDetails.ItemValues) { if (iValue.Id == 0) { //It is an Insert ItemValue iValueNew = new ItemValue(); iValueNew.ItemId = item.ItemId; iValueNew.FieldId = iValue.FieldId; iValueNew.Value = iValue.Value; iValueNew.FieldOptionId = iValue.FieldOptionId; DataContext.ItemValues.AddObject(iValueNew); } else { //Update ItemValue itemValue = GetItemFieldValueById(iValue.Id); if (itemValue != null) { if (iValue.Value == string.Empty && iValue.FieldOptionId == null) { DataContext.ItemValues.DeleteObject(itemValue); } else { itemValue.FieldOptionId = iValue.FieldOptionId; itemValue.Value = iValue.Value; } } } } } if (shouldCommit) { DataContext.SaveChanges(); } itemResultObject.Status = "OK"; return(itemResultObject); } else { itemResultObject.Status = "STOPPROCESS"; return(itemResultObject); } }