Exemplo n.º 1
0
        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);
            }
        }
Exemplo n.º 2
0
        /// <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();
        }
Exemplo n.º 3
0
 /// <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;
 }
Exemplo n.º 4
0
        /// <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();
        }
Exemplo n.º 5
0
        /// <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();
                }
            }
        }
Exemplo n.º 6
0
        /// <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();
                    }
                }
            }
        }
Exemplo n.º 7
0
        /// <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;
                }
            }
        }
Exemplo n.º 8
0
        /// <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();
                }
            }
        }
Exemplo n.º 9
0
        /// <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);
            }
        }