public void Update(RentalItem model)
 {
     _RentalItemRepository.Update(model);
 }
        /// <summary>
        /// Gets history of an item and returns a list of rental items for that item
        /// </summary>
        /// <returns>A list of rental items with information about a specified inventory item</returns>
        public List <RentalItem> GetItemHistorySummary(int inventoryId)
        {
            List <RentalItem> rentalItems = new List <RentalItem>();

            try
            {
                var conn = DbConnection.GetConnection();
                using (conn)
                {
                    conn.Open();
                    var query = "select r.memberID, s2.`condition`, email, r.rentalID, r.rentalDateTime, r.returnDateTime, " +
                                "r.inventoryID, category, title, status, s2.updateDateTime from rental_transaction r, " +
                                "user, member, media, inventory_item i, status_history s2, status where userID = member.memberID and " +
                                "member.memberID = r.memberID and r.inventoryID = i.inventoryID and i.mediaID = media.mediaID and " +
                                "i.inventoryID = @inventoryId and s2.rentalTransactionID = r.rentalID and s2.statusID = status.statusID";
                    using (var cmd = new MySqlCommand(query, conn))
                    {
                        cmd.Parameters.Add("@inventoryId", MySqlDbType.Int32);
                        cmd.Parameters["@inventoryId"].Value = inventoryId;

                        using (var reader = cmd.ExecuteReader())
                        {
                            var memberIdOrdinal       = reader.GetOrdinal("memberID");
                            var emailOrdinal          = reader.GetOrdinal("email");
                            var rentalIdOrdinal       = reader.GetOrdinal("rentalID");
                            var rentalDateTimeOrdinal = reader.GetOrdinal("rentalDateTime");
                            var returnDateTimeOrdinal = reader.GetOrdinal("returnDateTime");
                            var inventoryIdOrdinal    = reader.GetOrdinal("inventoryID");
                            var categoryOrdinal       = reader.GetOrdinal("category");
                            var titleOrdinal          = reader.GetOrdinal("title");
                            var statusOrdinal         = reader.GetOrdinal("status");
                            var conditionOrdinal      = reader.GetOrdinal("condition");
                            var updateDateTimeOrdinal = reader.GetOrdinal("updateDateTime");

                            while (reader.Read())
                            {
                                var memberID       = reader.GetInt32(memberIdOrdinal);
                                var email          = reader[emailOrdinal] == DBNull.Value ? "null" : reader.GetString(emailOrdinal);
                                var rentalID       = reader.GetInt32(rentalIdOrdinal);
                                var rentalDateTime = reader.GetDateTime(rentalDateTimeOrdinal);
                                var returnDateTime = reader.GetDateTime(returnDateTimeOrdinal);
                                var inventoryID    = reader.GetInt32(inventoryIdOrdinal);
                                var category       = reader[categoryOrdinal] == DBNull.Value ? "null" : reader.GetString(categoryOrdinal);
                                var title          = reader[titleOrdinal] == DBNull.Value ? "null" : reader.GetString(titleOrdinal);
                                var status         = reader[statusOrdinal] == DBNull.Value ? "null" : reader.GetString(statusOrdinal);
                                var updateDateTime = reader.GetDateTime(updateDateTimeOrdinal);
                                var condition      = reader[conditionOrdinal] == DBNull.Value
                                        ? "null"
                                        : reader.GetString(conditionOrdinal);


                                var rentalItem = new RentalItem
                                {
                                    MemberId       = memberID,
                                    MemberEmail    = email,
                                    RentalId       = rentalID,
                                    RentalDate     = rentalDateTime,
                                    ReturnDate     = returnDateTime,
                                    InventoryId    = inventoryID,
                                    Category       = category,
                                    Title          = title,
                                    Status         = status,
                                    UpdateDateTime = updateDateTime,
                                    Condition      = condition
                                };

                                rentalItems.Add(rentalItem);
                            }
                        }
                    }
                    conn.Close();
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }

            return(rentalItems.OrderByDescending(item => item.RentalDate).ThenByDescending(item => item.UpdateDateTime).ToList());
        }
 public void Insert(RentalItem model)
 {
     _RentalItemRepository.Insert(model);
 }
Exemple #4
0
 public void TestGetPossibleStatusIdWithReturned()
 {
     Assert.AreEqual(4, RentalItem.GetStatusId("Returned"));
 }
Exemple #5
0
 public Decorator(RentalItem rentalItem)
 {
     _rentalItem = rentalItem;
 }
Exemple #6
0
 public void TestGetPossibleStatusIdWithShipped()
 {
     Assert.AreEqual(2, RentalItem.GetStatusId("Shipped"));
 }
Exemple #7
0
 public void TestGetPossibleStatusIdWithOrdered()
 {
     Assert.AreEqual(1, RentalItem.GetStatusId("Ordered"));
 }
        /// <summary>
        /// Retrieves select borrowed items with the given status.
        /// </summary>
        /// <param name="selectedStatus"> the desired status</param>
        /// <returns>select borrowed items with the given status or an error if something goes wrong on the database</returns>
        public List <RentalItem> RetrieveSelectRentedItems(string selectedStatus)
        {
            var rentedItems = new List <RentalItem>();

            try
            {
                var conn = DbConnection.GetConnection();
                using (conn)
                {
                    conn.Open();
                    var query = "select r.memberID, email, r.rentalID, r.rentalDateTime, " +
                                "r.returnDateTime, r.inventoryID, category, title, status from rental_transaction " +
                                "r, user, member, media, inventory_item i, status where " +
                                "userID = member.memberID and member.memberID = r.memberID and " +
                                "r.inventoryID = i.inventoryID and i.mediaID = media.mediaID and status.status = @selectedStatus and " +
                                "status.statusID = (select max(s1.statusID) from status_history s1 " +
                                "where r.rentalID = s1.rentalTransactionID " +
                                "group by s1.rentalTransactionID);";

                    using (var cmd = new MySqlCommand(query, conn))
                    {
                        cmd.Parameters.AddWithValue("@selectedStatus", selectedStatus);

                        using (var reader = cmd.ExecuteReader())
                        {
                            var memberIdOrdinal    = reader.GetOrdinal("memberID");
                            var emailOrdinal       = reader.GetOrdinal("email");
                            var rentalIdOrdinal    = reader.GetOrdinal("rentalID");
                            var rentalDateOrdinal  = reader.GetOrdinal("rentalDateTime");
                            var returnDateOrdinal  = reader.GetOrdinal("returnDateTime");
                            var inventoryIdOrdinal = reader.GetOrdinal("inventoryID");
                            var categoryOrdinal    = reader.GetOrdinal("category");
                            var titleOrdinal       = reader.GetOrdinal("title");
                            var statusOrdinal      = reader.GetOrdinal("status");



                            while (reader.Read())
                            {
                                var memberId = reader.GetInt32(memberIdOrdinal);

                                var memberEmail = reader[emailOrdinal] == DBNull.Value
                                    ? "null"
                                    : reader.GetString(emailOrdinal);

                                var rentalId = reader.GetInt32(rentalIdOrdinal);

                                var rentalDate = reader.GetDateTime(rentalDateOrdinal);

                                var returnDate = reader.GetDateTime(returnDateOrdinal);

                                var inventoryId = reader.GetInt32(inventoryIdOrdinal);

                                var category = reader[categoryOrdinal] == DBNull.Value
                                    ? "null"
                                    : reader.GetString(categoryOrdinal);

                                var title = reader[titleOrdinal] == DBNull.Value
                                    ? "null"
                                    : reader.GetString(titleOrdinal);

                                var status = reader[statusOrdinal] == DBNull.Value
                                    ? "null"
                                    : reader.GetString(statusOrdinal);



                                var item = new RentalItem
                                {
                                    MemberId    = memberId,
                                    MemberEmail = memberEmail,
                                    RentalId    = rentalId,
                                    RentalDate  = rentalDate,
                                    ReturnDate  = returnDate,
                                    InventoryId = inventoryId,
                                    Category    = category,
                                    Title       = title,
                                    Status      = status
                                };

                                rentedItems.Add(item);
                            }
                        }
                    }
                    conn.Close();
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }

            return(rentedItems.OrderByDescending(item => item.RentalDate).ToList());
        }
        public void UnprocessInvoice()
        {
            bool Success = false;

            ModelTMSContainer _ControlObjectContext = new ModelTMSContainer(Session["CustomerConnectString"].ToString(), Session);

            // start transaction
            using (TransactionScope TS = new TransactionScope())
            {
                try
                {
                    // roll back order

                    // correct invoice if there
                    if (LabelInvoiceId.Text != "")
                    {
                        Invoice CorrInvoice = _ControlObjectContext.GetObjectByKey(new EntityKey("ModelTMSContainer.InvoiceSet", "Id", Guid.Parse(LabelInvoiceId.Text))) as Invoice;

                        // unprocess
                        CorrInvoice.UnprocessInvoice(_ControlObjectContext, CorrInvoice.GroupCode, Common.CurrentClientDateTime(Session));
                    }

                    // correct rentalitemactivity status
                    ResetRentalItemStatus(_ControlObjectContext);

                    // remove any generated swap
                    if (LabelNewRIAId.Text != "")
                    {
                        string[] IDs = LabelNewRIAId.Text.Split(';');
                        foreach (string IDstring in IDs)
                        {
                            if (IDstring.Trim() != "")
                            {
                                RentalItemActivity NewRia = _ControlObjectContext.GetObjectByKey(new EntityKey("ModelTMSContainer.RentalItemActivitySet", "Id", Guid.Parse(IDstring))) as RentalItemActivity;
                                if (NewRia != null)
                                {
                                    _ControlObjectContext.RentalItemActivitySet.DeleteObject(NewRia);
                                }
                            }
                        }
                    }

                    // enable any disabled item
                    if (LabelDisabledItems.Text != "")
                    {
                        string[] IDs = LabelDisabledItems.Text.Split(';');
                        foreach (string IDstring in IDs)
                        {
                            if (IDstring.Trim() != "")
                            {
                                RentalItem NewRI = _ControlObjectContext.GetObjectByKey(new EntityKey("ModelTMSContainer.RentalItemSet", "Id", Guid.Parse(IDstring))) as RentalItem;

                                if (NewRI != null)
                                {
                                    NewRI.ItemState = "Available";
                                }
                            }
                        }
                    }

                    // update the datetime from the original values in the grid.
                    GrabUpdatedEndDateTimesForRIAs(_ControlObjectContext, true, true);

                    // and save to persistent storage
                    _ControlObjectContext.SaveChanges(System.Data.Objects.SaveOptions.DetectChangesBeforeSave);

                    // commit
                    TS.Complete();

                    Success = true;
                }
                catch (Exception ex)
                {
                    // rollback transaction
                    TS.Dispose();

                    // inform user
                    Common.InformUserOnTransactionFail(ex, Page);
                }
            }

            if (Success)
            {
                // when success revert
                PageNr--;
                ShowCorrectElements();
            }
        }
        protected void ButtonAddMaterial_Click(object sender, EventArgs e)
        {
            bool NotAddedYet = true;

            LoadOrderLines();

            // create the new Ria rental type
            ModelTMSContainer          ControlObjectContext = new ModelTMSContainer(Session["CustomerConnectString"].ToString(), Session);
            RentalItemActivityListItem ria = new RentalItemActivityListItem();

            ria.RentalTypeId          = new Guid(ComboBoxMaterialType.SelectedValue);
            ria.RentalType            = ComboBoxMaterialType.SelectedItem.Text;
            ria.TreatAsAdvancePayment = CheckBoxTreatAsAdvancePayment.Checked;

            if (RadioButtonListSpecificOrAmount.SelectedValue == "Specific")
            {
                ria.RentalItemId = new Guid(ComboBoxMaterials.SelectedValue);
                ria.RentalItem   = ComboBoxMaterials.SelectedItem.Text;

                RentalItem ri = ControlObjectContext.GetObjectByKey(new EntityKey("ModelTMSContainer.RentalItemSet", "Id", ria.RentalItemId)) as RentalItem;
                ria.BailPrice = ri.BailPrice;
                ri.CalculateRentForPeriod(StartRentDate, EndRentDate, out ria.RentPrice, out ria.Vat, out ria.TotalRentPrice);
            }
            else
            {
                try { ria.RentalItemAmount = Convert.ToInt32(TextBoxAmount.Text); }
                catch { }
            }

            if (ComboBoxCustomerLocation.SelectedValue != "")
            {
                ria.CustomerLocation   = ComboBoxCustomerLocation.SelectedItem.Text;
                ria.CustomerLocationId = new Guid(ComboBoxCustomerLocation.SelectedValue);
            }

            try { ria.DiscountPercentage = Convert.ToDouble(TextBoxDiscountPercentage.Text); }
            catch { };

            // check if this material has not been added yet
            foreach (RentalItemActivityListItem riali in OrderLines)
            {
                if (ria.RentalItemId != Guid.Empty)
                {
                    // checking for specific material
                    if ((ria.RentalItemId == riali.RentalItemId) && (ria.RentalTypeId == riali.RentalTypeId))
                    {
                        NotAddedYet = false;
                        break;
                    }
                    // checking for specific material group
                    if ((ria.RentalTypeId == riali.RentalTypeId) && (riali.RentalItemId == Guid.Empty))
                    {
                        NotAddedYet = false;
                        break;
                    }
                }
                else
                {
                    // checking for specific material group
                    if (ria.RentalTypeId == riali.RentalTypeId)
                    {
                        NotAddedYet = false;
                        break;
                    }
                }
            }

            // add the material if not added yet, otherwise inform the user
            if (NotAddedYet)
            {
                OrderLines.Add(ria);

                SaveOrderLines();
            }
            else
            {
                Common.InformUser(Page, "U heeft dit materiaal al aan deze verhuring toegevoegd.");
            }
        }