public static int Update(PickupDeliveryAddress a)
        {
            try
            {
                a.ModifiedAt =  DateTime.UtcNow;
                a.ModifiedBy =  Environment.UserName;

                using (var conn = new SqlConnection(ConfigurationManager.ConnectionStrings["DefaultConnection"].ConnectionString))
                {
                    conn.Open();
                    var result = conn.Query<int>(@"
                                        update invoice.PickupDeliveryAddress
                                        set Location = @Location
                                            ,Name = @Name
                                            ,Line1 = @Line1
                                            ,City = @City
                                            ,State =  @State
                                            ,Zip = @Zip
                                            ,ModifiedBy = @ModifiedBy
                                            ,ModifiedAt = @ModifiedAt
                                        where PickupDeliveryAddressId = @PickupDeliveryAddressId
                                            ", a);

                    return result.FirstOrDefault();
                }
            }
            catch (Exception ex)
            {
                logger.Fatal(ex);
                return 0;
            }
        }
        public static bool Add(PickupDeliveryAddress a)
        {
            try {
                if (!(GetPickupAndDeliveryLocation(a.Location) == null))
                    return true;

                a.ModifiedAt = a.CreatedAt = DateTime.UtcNow;
                a.ModifiedBy = a.CreatedBy = Environment.UserName;



                using (var conn = new SqlConnection(ConfigurationManager.ConnectionStrings["DefaultConnection"].ConnectionString))
                {
                    conn.Open();
                    var result = conn.Query<int>(@"
                    insert into invoice.PickupDeliveryAddress(Location,Name,Line1,City,State,Zip,CreatedBy,CreatedAt,ModifiedBy,ModifiedAt)
                                           values(@Location,@Name,@Line1,@City,@State,@Zip,@CreatedBy,@CreatedAt,@ModifiedBy,@ModifiedAt);
                    SELECT SCOPE_IDENTITY()", a);
                    return true;
                }
            }
            catch(Exception ex)
            {
                logger.Fatal(ex);
                return false;
            }
        }
        public ActionResult SaveJobTicket([DataSourceRequest]DataSourceRequest request, string inputJobTicket)
        {

            if (!User.Identity.IsAuthenticated)
            {
                return RedirectToAction("Login", "Account");
            }
            var json_serializer = new JavaScriptSerializer();
            JobTicket ticket = json_serializer.Deserialize<JobTicket>(inputJobTicket);


            if (lc == null)
                lc = lch.GetCompanyRegisteredByUser(User.Identity.Name);

            var clientCompany = cch.GetClientCompanyByName(ticket.ClientName, lc);
            ticket.ClientCompanyId = clientCompany.ClientCompanyId;


            PickupDeliveryAddress addrPickupFrom = new PickupDeliveryAddress(ticket.PickupFrom);
            PickupDeliveryAddress addrDeliverTo = new PickupDeliveryAddress(ticket.DeliverTo);

            PickupDeliveryAddress.Add(addrPickupFrom);
            PickupDeliveryAddress.Add(addrDeliverTo);


            if (ticket.JobTicketId == 0)
            {

                ticket.CreatedBy = User.Identity.Name;
                ticket.CompanyId = lc.CompanyId;
                
                ticket.JobTicketId = jth.Add(ticket, User.Identity.Name);
            }
            else
            {
                ticket.ModifiedBy = User.Identity.Name;
                jth.Update(ticket);

            }
            // Save to db here
            // Assign job ticket number to the object
            // return jobTicket

            return Json(new { success = true, message = ticket }, JsonRequestBehavior.AllowGet);
        }