All associated Part, Emp, Worker and Vendor pages have been created (still need to edit look and recheck field validation and input)
This commit is contained in:
parent
d4f7e64906
commit
9569ae50c6
|
@ -0,0 +1,47 @@
|
||||||
|
class VendorsController < ApplicationController
|
||||||
|
def index
|
||||||
|
@vendors = Vendor.all
|
||||||
|
end
|
||||||
|
|
||||||
|
def show
|
||||||
|
@vendor = Vendor.find(params[:id])
|
||||||
|
end
|
||||||
|
|
||||||
|
def new
|
||||||
|
@vendor = Vendor.new
|
||||||
|
end
|
||||||
|
|
||||||
|
def create
|
||||||
|
@vendor = Vendor.new(vendor_params)
|
||||||
|
if @vendor.save
|
||||||
|
redirect_to @vendor
|
||||||
|
else
|
||||||
|
render :new
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
def edit
|
||||||
|
@vendor = Vendor.find(params[:id])
|
||||||
|
end
|
||||||
|
|
||||||
|
def update
|
||||||
|
@vendor = Vendor.find(params[:id])
|
||||||
|
if @vendor.update(vendor_params)
|
||||||
|
redirect_to @vendor
|
||||||
|
else
|
||||||
|
render :edit
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
def destroy
|
||||||
|
@vendor = Vendor.find(params[:id])
|
||||||
|
@vendor.destroy
|
||||||
|
redirect_to vendors_path
|
||||||
|
end
|
||||||
|
|
||||||
|
private
|
||||||
|
def vendor_params
|
||||||
|
params.require(:vendor).permit(:name, :address, :phone, :email, :dba, :tin, :contact)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
|
@ -0,0 +1,2 @@
|
||||||
|
module VendorsHelper
|
||||||
|
end
|
|
@ -0,0 +1,94 @@
|
||||||
|
<%= form_with(model: vendor, local: true) do |form| %>
|
||||||
|
<% if vendor.errors.any? %>
|
||||||
|
<div id="error_explanation">
|
||||||
|
<h2><%= pluralize(vendor.errors.count, "error") %> prohibited this vendor from being saved:</h2>
|
||||||
|
|
||||||
|
<ul>
|
||||||
|
<% vendor.errors.full_messages.each do |message| %>
|
||||||
|
<li><%= message %></li>
|
||||||
|
<% end %>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
<% end %>
|
||||||
|
|
||||||
|
<div class="field">
|
||||||
|
<%= form.label :name %>
|
||||||
|
<%= form.text_field :name %>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="field">
|
||||||
|
<%= form.label :address %>
|
||||||
|
<%= form.text_area :address, rows: 1, class: 'auto-expand' %>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="field">
|
||||||
|
<%= form.label :phone %>
|
||||||
|
<%= form.telephone_field :phone, id: 'phone-field' %>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="field">
|
||||||
|
<%= form.label :email %>
|
||||||
|
<%= form.email_field :email, id: 'email-field', required: true %>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="field">
|
||||||
|
<%= form.label :dba, 'DBA' %>
|
||||||
|
<%= form.text_field :dba %>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="field">
|
||||||
|
<%= form.label :tin, 'TIN' %>
|
||||||
|
<%= form.text_field :tin, maxlength: 9 %>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="field">
|
||||||
|
<%= form.label :contact %>
|
||||||
|
<%= form.text_field :contact %>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="actions">
|
||||||
|
<%= form.submit %>
|
||||||
|
</div>
|
||||||
|
<% end %>
|
||||||
|
|
||||||
|
|
||||||
|
<%# This is to correct phone number entry %>
|
||||||
|
<script>
|
||||||
|
document.addEventListener("DOMContentLoaded", function() {
|
||||||
|
const phoneField = document.getElementById('phone-field');
|
||||||
|
|
||||||
|
phoneField.addEventListener('input', function() {
|
||||||
|
let input = phoneField.value.replace(/\D/g, ''); // Remove non-numeric characters
|
||||||
|
const inputLength = input.length;
|
||||||
|
|
||||||
|
if (inputLength > 3 && inputLength <= 6) {
|
||||||
|
input = `(${input.slice(0, 3)}) ${input.slice(3)}`;
|
||||||
|
} else if (inputLength > 6) {
|
||||||
|
input = `(${input.slice(0, 3)}) ${input.slice(3, 6)}-${input.slice(6, 10)}`;
|
||||||
|
}
|
||||||
|
|
||||||
|
phoneField.value = input;
|
||||||
|
});
|
||||||
|
});
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<%# This is for auto resizing the address field %>
|
||||||
|
<script>
|
||||||
|
document.addEventListener("DOMContentLoaded", function() {
|
||||||
|
const textareas = document.querySelectorAll('.auto-expand');
|
||||||
|
|
||||||
|
const resizeTextarea = function(el) {
|
||||||
|
el.style.height = 'auto';
|
||||||
|
el.style.height = (el.scrollHeight) + 'px';
|
||||||
|
}
|
||||||
|
|
||||||
|
textareas.forEach(textarea => {
|
||||||
|
textarea.addEventListener('input', function() {
|
||||||
|
resizeTextarea(textarea);
|
||||||
|
});
|
||||||
|
|
||||||
|
// Initial resize
|
||||||
|
resizeTextarea(textarea);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
</script>
|
|
@ -0,0 +1,6 @@
|
||||||
|
<h1>Edit Vendor</h1>
|
||||||
|
|
||||||
|
<%= render 'form', vendor: @vendor %>
|
||||||
|
|
||||||
|
<%= link_to 'Cancel', vendor_path(@vendor) %> |
|
||||||
|
<%= link_to 'Back to List', vendors_path %>
|
|
@ -0,0 +1,36 @@
|
||||||
|
<h1>Vendors</h1>
|
||||||
|
|
||||||
|
<table>
|
||||||
|
<thead>
|
||||||
|
<tr>
|
||||||
|
<th>Name</th>
|
||||||
|
<th>Address</th>
|
||||||
|
<th>Phone</th>
|
||||||
|
<th>Email</th>
|
||||||
|
<th>DBA</th>
|
||||||
|
<th>TIN</th>
|
||||||
|
<th>Contact</th>
|
||||||
|
<th>Actions</th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tbody>
|
||||||
|
<% @vendors.each do |vendor| %>
|
||||||
|
<tr>
|
||||||
|
<td><%= vendor.name %></td>
|
||||||
|
<td><%= vendor.address %></td>
|
||||||
|
<td><%= vendor.phone %></td>
|
||||||
|
<td><%= vendor.email %></td>
|
||||||
|
<td><%= vendor.dba %></td>
|
||||||
|
<td><%= vendor.tin %></td>
|
||||||
|
<td><%= vendor.contact %></td>
|
||||||
|
<td>
|
||||||
|
<%= link_to 'Show', vendor_path(vendor) %> |
|
||||||
|
<%= link_to 'Edit', edit_vendor_path(vendor) %> |
|
||||||
|
<%= link_to 'Destroy', vendor_path(vendor), method: :delete, data: { confirm: 'Are you sure?' } %>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<% end %>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
|
||||||
|
<%= link_to 'New Vendor', new_vendor_path %>
|
|
@ -0,0 +1,5 @@
|
||||||
|
<h1>New Vendor</h1>
|
||||||
|
|
||||||
|
<%= render 'form', vendor: @vendor %>
|
||||||
|
|
||||||
|
<%= link_to 'Back to List', vendors_path %>
|
|
@ -0,0 +1,33 @@
|
||||||
|
<h1>Vendor Details</h1>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
<strong>Name:</strong>
|
||||||
|
<%= @vendor.name %>
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
<strong>Address:</strong>
|
||||||
|
<%= @vendor.address %>
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
<strong>Phone:</strong>
|
||||||
|
<%= @vendor.phone %>
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
<strong>Email:</strong>
|
||||||
|
<%= @vendor.email %>
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
<strong>DBA:</strong>
|
||||||
|
<%= @vendor.dba %>
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
<strong>TIN:</strong>
|
||||||
|
<%= @vendor.tin %>
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
<strong>Contact:</strong>
|
||||||
|
<%= @vendor.contact %>
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<%= link_to 'Edit', edit_vendor_path(@vendor) %> |
|
||||||
|
<%= link_to 'Back to List', vendors_path %>
|
|
@ -12,7 +12,7 @@ Rails.application.routes.draw do
|
||||||
resources :participants
|
resources :participants
|
||||||
resources :employers
|
resources :employers
|
||||||
resources :workers
|
resources :workers
|
||||||
|
resources :vendors
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,7 @@
|
||||||
|
require "test_helper"
|
||||||
|
|
||||||
|
class VendorsControllerTest < ActionDispatch::IntegrationTest
|
||||||
|
# test "the truth" do
|
||||||
|
# assert true
|
||||||
|
# end
|
||||||
|
end
|
Loading…
Reference in New Issue