public ActionResult Validate(Scale data) { ModelState.Clear(); data.Ticket_Type = ReceivingTicketType; data.QScale = true; if (string.IsNullOrEmpty(data.Ticket_Status)) { data.Ticket_Status = TicketStatus.Open.ToString(); } if (data.Party_ID != null && data.Party_ID.ID == 0 && !string.IsNullOrEmpty(data.Party_ID.License_No)) { PartyLibrary partyLib = new PartyLibrary(ConfigurationHelper.GetsmARTDBContextConnectionString()); Party party = partyLib.GetByLicenseNo(data.Party_ID.License_No); if (party != null) { ModelState.AddModelError("Party", "Duplicate License#."); } } // Request Status is required. if (data.Ticket_Type != null && data.Ticket_Status.Contains("Select")) { ModelState.AddModelError("Ticket Status", "Request Status is a required field."); } // Ticket Type is required. if (data.Ticket_Type != null && data.Ticket_Type.Contains("Select")) { ModelState.AddModelError("Ticket Type", "Ticket type is a required field."); } //// Vehicle Plate is required. //if (string.IsNullOrEmpty(data.Vehicle_Plate_No)) // ModelState.AddModelError("Vehicle plate number ", "Vehicle plate number is a required field."); if (data.Ticket_Status != null && data.Ticket_Status.ToLower().Contains("close")) { // Party is required if (data.Party_ID.ID == 0 && string.IsNullOrEmpty(data.Party_ID.License_No)) { ModelState.AddModelError("Party", "Driving licence number is a required field."); } // Item is reuired. if (!IsLineItemExits(data.ID)) { ModelState.AddModelError("ScaleDetails", "There is at least one line item is required in the item details."); } // Gross Weight is required. if (data.Net_Weight <= 0) { ModelState.AddModelError("Net_Weight ", "Net weight is a required field."); } // Amount is required if (data.Item_Amount <= 0) { ModelState.AddModelError("Amount", "Amount is a required field."); } // State is rquire if (string.IsNullOrEmpty(data.State.Trim())) { ModelState.AddModelError("State", "State is a required field."); } // Zip Code is rquire if (data.PrimaryAddress != null && string.IsNullOrEmpty(data.PrimaryAddress.Zip_Code)) { ModelState.AddModelError("Zip_Code", "Zip code is a required field."); } // DOB is required if (data.Party_ID != null && string.IsNullOrEmpty(data.Party_ID.Party_DOB)) { ModelState.AddModelError("Party_DOB", "Party DOB is a required field."); } // Vehicle Year is required if (string.IsNullOrEmpty(data.Vehicle_Year.Trim())) { ModelState.AddModelError("Vehicle_Year", "Vehicle Year is a required field."); } // Vehicle Sate is required if (string.IsNullOrEmpty(data.Plate_State.Trim())) { ModelState.AddModelError("Plate_State", "Plate State is a required field."); } //// Amount is required //if (data.Ticket_Settled) // ModelState.AddModelError("Settled", "Ticket already paid."); } ValidQScaleItems(data); if (!ModelState.IsValid) { return(Json(new { success = false, errors = ModelState.Errors() })); } return(Json(new { success = true, errors = "" })); }
public HttpResponseMessage SaveTicket([FromBody] Ticket value) { try { if (value.Scale == null) { return(Request.CreateResponse(HttpStatusCode.BadRequest)); } // Start transaction. using (TransactionScope scope = new TransactionScope(TransactionScopeOption.Required, new TransactionOptions { IsolationLevel = IsolationLevel.ReadCommitted })) { smART.ViewModel.Scale newScale = new Scale(); // Add new party if already exists if (!string.IsNullOrEmpty(value.Scale.License_No)) { PartyLibrary partyLib = new PartyLibrary(ConString); Party party = partyLib.GetByLicenseNo(value.Scale.License_No); if (party != null) { newScale.Party_ID = party; } else { // Add new party party = new Party(); party.Party_Name = value.Scale.Customer_Name; party.Party_Short_Name = value.Scale.Customer_Name; party.License_No = value.Scale.License_No; party.Party_Type = "Individual"; party.Created_By = value.Scale.Created_By; party.Updated_By = value.Scale.Created_By; party.Created_Date = value.Scale.Created_Date; party.Last_Updated_Date = value.Scale.Created_Date; party.Active_Ind = true; party.IsActive = true; party.State = !string.IsNullOrEmpty(value.Scale.Customer_State) ? value.Scale.Customer_State.ToString().Trim() : ""; party.ACLicense_ID = value.Scale.Customer_ACLicense_ID; party.Party_DOB = value.Scale.Customer_DOB; //string dobString = value.Scale.Customer_DOB; //DateTime dobDt; //if (smART.Common.DateTimeHelper.IsValidDate(dobString, out dobDt)) // party.Party_DOB = dobDt; party = partyLib.Add(party); newScale.Party_ID = party; // Add new Address AddressBook address = new AddressBook(); address.Address1 = value.Scale.Customer_Address; address.City = value.Scale.Customer_City; address.State = value.Scale.Customer_State; address.Country = value.Scale.Customer_Country; address.Party = party; address.Created_By = value.Scale.Created_By; address.Updated_By = value.Scale.Created_By; address.Created_Date = value.Scale.Created_Date; address.Last_Updated_Date = value.Scale.Created_Date; address.Primary_Flag = true; address.Active_Ind = true; address.Zip_Code = value.Scale.Customer_Zip; AddressBookLibrary addressLib = new AddressBookLibrary(ConString); addressLib.Add(address); } } // Save Scale ScaleLibrary lib = new ScaleLibrary(ConString); newScale.Ticket_Status = "Open"; newScale.QScale = true; newScale.Gross_Weight = value.ScaleDetails.Sum(s => s.GrossWeight); newScale.Tare_Weight = value.ScaleDetails.Sum(s => s.TareWeight);; newScale.Net_Weight = value.ScaleDetails.Sum(s => s.NetWeight); value.Scale.MapServiceEntityToServerEntity(newScale); smART.ViewModel.Scale scale = lib.Add(newScale); // Save scale detail if (value.ScaleDetails != null) { ScaleDetailsLibrary libScaleDetail = new ScaleDetailsLibrary(ConfigurationHelper.GetsmARTDBContextConnectionString()); ItemLibrary libItem = new ItemLibrary(ConfigurationHelper.GetsmARTDBContextConnectionString()); foreach (var item in value.ScaleDetails) { smART.ViewModel.ScaleDetails newScaleDetails = new smART.ViewModel.ScaleDetails(); newScaleDetails.Apply_To_Item = libItem.GetByID(item.Item_ID.ToString()); newScaleDetails.Item_Received = libItem.GetByID(item.Item_ID.ToString()); newScaleDetails.Scale = scale; item.MapServiceEntityToServerEntity(newScaleDetails); ScaleDetails scaleDetails = libScaleDetail.Add(newScaleDetails); // Set docuent related id if document is related to item if (value.ScaleAttachments != null && value.ScaleAttachments.Count > 0) { Model.ScaleAttachments modelAttach = value.ScaleAttachments.Where(w => w.Document_RelatedID == item.ID).FirstOrDefault(); if (modelAttach != null && modelAttach.Document_RelatedTo == 1) { modelAttach.Document_RelatedID = scaleDetails.ID; } } } } // Save Max Ticket ID in Device Settings DeviceSettingLibrary deviceLib = new DeviceSettingLibrary(ConString); DeviceSettings deviceSettings = deviceLib.GetByUniueID(scale.Unique_ID.Value); deviceSettings.MaxTicket_ID = value.Scale.ID; deviceLib.Modify(deviceSettings); // Save Attachments if (value.ScaleAttachments != null) { ScaleAttachmentsLibrary libAttach = new ScaleAttachmentsLibrary(ConfigurationHelper.GetsmARTDBContextConnectionString()); FilelHelper fileHelper = new FilelHelper(); foreach (var item in value.ScaleAttachments) { smART.ViewModel.ScaleAttachments newScaleAttachment = new smART.ViewModel.ScaleAttachments(); // Save file Guid docRefId = Guid.NewGuid(); string destinationPath = fileHelper.GetSourceDirByFileRefId(docRefId.ToString()); fileHelper.MoveFile(item.Document_Title, fileHelper.GetTempSourceDirByFileRefId(item.Document_Path), destinationPath); // Save attachment newScaleAttachment.Parent = scale; newScaleAttachment.Document_RefId = docRefId; newScaleAttachment.Document_Path = Path.Combine(destinationPath, item.Document_Title); item.MapServiceEntityToServerEntity(newScaleAttachment); libAttach.Add(newScaleAttachment); } } // Complete transaction. scope.Complete(); } return(Request.CreateResponse(HttpStatusCode.OK)); } catch (Exception ex) { ExceptionHandler.HandleException(ex, "An error occured in SaveTicket."); //string details = string.Format("Method: {1} {0} Message: {2} {0} Stack Trace: {3}", System.Environment.NewLine, "SaveTicket", ex.Message, ex.StackTrace.ToString()); //smART.Common.MessageLogger.Instance.LogMessage(ex, details, Common.Priority.High, 0, System.Diagnostics.TraceEventType.Error, "Service Error", "Service"); return(Request.CreateResponse(HttpStatusCode.InternalServerError)); } }