public HttpResponseMessage GenerateInvoiceAutomatically(int salon_id, int appointment_id, decimal discount = 0) { try { // Check if a session already exists or if it's expired //if (HttpContext.Current.Session["Token"] == null) // return Request.CreateResponse(HttpStatusCode.Unauthorized, new { Success = false, Message = "Session expired! Unable to authenticate user." }); using (SalonDbEntities entities = new SalonDbEntities()) { // Check if an invoice is already existing for the particular appointment if (entities.tblinvoices.Any(e => e.appointment_id == appointment_id)) { return(Messages.GetInstance().HandleException("Failed to create invoice! An invoice already exists for appointment id = " + appointment_id)); } using (var transaction = entities.Database.BeginTransaction()) { int[] requested_services = entities.tblservice_booked.Where(x => x.appointment_id == appointment_id).Select(x => x.service_id).ToArray(); decimal totalPrice = CalculateTotal(salon_id, requested_services); tblinvoice invoice = new tblinvoice { salon_id = salon_id, appointment_id = appointment_id, total_price = totalPrice, discount = discount, final_price = CalculateFinalTotal(totalPrice, discount), }; entities.tblinvoices.Add(invoice); entities.SaveChanges(); Utilities.getInstance().UpdateChanges(entities, transaction, invoice.invoice_id.ToString(), typeof(tblinvoice).Name, ActionType.INSERT); return(Messages.GetInstance().HandleRequest("Invoice", ActionType.INSERT)); } } } catch (Exception) { return(Messages.GetInstance().HandleException("An error occured! Failed to create invoice.")); } }
public HttpResponseMessage Post([FromBody] JObject invoice_details) { try { // Check if a session already exists or if it's expired //if (HttpContext.Current.Session["Token"] == null) // return Request.CreateResponse(HttpStatusCode.Unauthorized, new { Success = false, Message = "Session expired! Unable to authenticate user." }); using (SalonDbEntities entities = new SalonDbEntities()) { int salon_id = int.Parse(invoice_details["salon_id"].ToString()); int appointment_id = int.Parse(invoice_details["appointment_id"].ToString()); decimal discount = decimal.Parse(invoice_details["discount"].ToString()); int[] requested_services = new int[invoice_details["requested_services"].Count()]; int count = 0; foreach (var service in invoice_details["requested_services"]) { requested_services[count] = int.Parse(invoice_details["requested_services"][count].ToString()); count++; } // Check if an invoice is already existing for the particular appointment if (entities.tblinvoices.Any(e => e.appointment_id == appointment_id)) { return(Messages.GetInstance().HandleException("Failed to create invoice! An invoice already exists for appointment id = " + appointment_id)); } // Check if the requested services exist in the given salon foreach (int service in requested_services) { if (!entities.tblservices.Any(x => x.salon_id == salon_id && x.service_id == service)) { return(Messages.GetInstance().HandleException("Failed to create invoice! Requested service doesn't exist in the given salon.")); } } // Check if the services have been requested in the given appointment foreach (int service in requested_services) { if (!entities.tblservice_booked.Any(x => x.appointment_id == appointment_id && x.service_id == service)) { return(Messages.GetInstance().HandleException("Failed to create invoice! Service id = " + service + " has not been requested, in the given appointment.")); } } using (var transaction = entities.Database.BeginTransaction()) { decimal totalPrice = CalculateTotal(salon_id, requested_services); tblinvoice invoice = new tblinvoice { salon_id = salon_id, appointment_id = appointment_id, total_price = CalculateTotal(salon_id, requested_services), discount = discount, final_price = CalculateFinalTotal(totalPrice, discount) }; entities.tblinvoices.Add(invoice); entities.SaveChanges(); Utilities.getInstance().UpdateChanges(entities, transaction, invoice.invoice_id.ToString(), typeof(tblinvoice).Name, ActionType.INSERT); return(Messages.GetInstance().HandleRequest("Invoice", ActionType.INSERT)); } } } catch (Exception) { return(Messages.GetInstance().HandleException("An error occured! Failed to create invoice.")); } }
public HttpResponseMessage Get(int invoice_id) { try { // Check if a session already exists or if it's expired //if (HttpContext.Current.Session["Token"] == null) // return Request.CreateResponse(HttpStatusCode.Unauthorized, new { Success = false, Message = "Session expired! Unable to authenticate user." }); using (SalonDbEntities entities = new SalonDbEntities()) { tblinvoice selectedInvoice = entities.tblinvoices.FirstOrDefault(e => e.invoice_id == invoice_id); if (selectedInvoice != null) { List <Object> services = new List <Object>(); int customerId = entities.tblappointments.Where(x => x.appointment_id == selectedInvoice.appointment_id).Select(x => x.customer_id).FirstOrDefault(); var requestedServices = entities.tblservice_booked.Where(x => x.appointment_id == selectedInvoice.appointment_id).Select(x => x.service_id).ToArray(); foreach (int serviceId in requestedServices) { services.Add(new { serviceId, service_name = entities.tblservices.Where(x => x.service_id == serviceId).Select(x => x.service_name).First(), price = entities.tblservices.Where(x => x.service_id == serviceId).Select(x => x.price).First() }); } return(Request.CreateResponse(HttpStatusCode.OK, new { Success = true, Message = "Invoice retrieved successfully!", Invoice_details = new { selectedInvoice.invoice_id, date_created = entities.tblappointments.Where(x => x.appointment_id == selectedInvoice.appointment_id).Select(x => x.due_date).First(), selectedInvoice.salon_id, salon_name = entities.tblsalons.Where(x => x.salon_id == selectedInvoice.salon_id).Select(x => x.salon_name).First(), customer_id = customerId, customer_name = entities.tblcustomers.Where(x => x.customer_id == customerId).Select(x => x.name).FirstOrDefault(), selectedInvoice.appointment_id, offered_services = services, selectedInvoice.total_price, selectedInvoice.discount, selectedInvoice.final_price } })); } else { return(Messages.GetInstance().HandleException("Retrieve failed! Invoice with id = ", invoice_id.ToString())); } } } catch (Exception) { return(Messages.GetInstance().HandleException("An error occured! Failed to retrieve invoice details.")); } }