Beispiel #1
0
        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."));
            }
        }
Beispiel #2
0
        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."));
            }
        }
Beispiel #3
0
        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."));
            }
        }