示例#1
0
        /// <summary>
        /// For Validating the time entry before saving
        /// </summary>
        /// <param name="dataAccessToken"></param>
        /// <param name="timeEntrySubmissionDetails"></param>
        /// <returns>ErrorBO</returns>
        private ErrorBO SubmitValidation(string dataAccessToken, string apiVersion, TimeEntrySubmissionBO timeEntrySubmissionDetails)
        {
            ErrorBO error = new ErrorBO();

            try
            {
                CustomTerminologyBO customTerminology = GetCustomTerminology(Constants.CONSUMER_SECRET_TOKEN, dataAccessToken, apiVersion);

                // Validate Clientid, ProjectId, TaskId for required
                if (customTerminology != null)
                {
                    if (string.IsNullOrEmpty(timeEntrySubmissionDetails.ClientId))
                    {
                        error.Message = "Please select" + customTerminology.Client.Singular;
                        return(error);
                    }
                    if (string.IsNullOrEmpty(timeEntrySubmissionDetails.ProjectId))
                    {
                        error.Message = "Please select" + customTerminology.Project.Singular;
                        return(error);
                    }
                    if (string.IsNullOrEmpty(timeEntrySubmissionDetails.TaskId))
                    {
                        error.Message = "Please select" + customTerminology.Task.Singular;
                        return(error);
                    }
                }

                // Check Description for 4000 lenght
                if (!string.IsNullOrEmpty(timeEntrySubmissionDetails.Description))
                {
                    if (timeEntrySubmissionDetails.Description.Length > 4000)
                    {
                        error.Message = "Description cannot be greater than 4000 Characters.";
                        return(error);
                    }
                }

                // Check hours for greater than 0
                if (!timeEntrySubmissionDetails.CalendarEntry)
                {
                    if (timeEntrySubmissionDetails.Hours == 0.0)
                    {
                        error.Message = "Please Enter Total Hours";
                        return(error);
                    }
                }

                // If Calendar entry check start/stop time for required and validity
                if (timeEntrySubmissionDetails.CalendarEntry)
                {
                    if (string.IsNullOrEmpty(timeEntrySubmissionDetails.StartTime))
                    {
                        error.Message = "Please Enter Start Time.";
                        return(error);
                    }
                    if (string.IsNullOrEmpty(timeEntrySubmissionDetails.StopTime))
                    {
                        error.Message = "Please Enter Stop Time.";
                        return(error);
                    }

                    if (!Utility.IsValidTimeFormat(timeEntrySubmissionDetails.StartTime))
                    {
                        error.Message = "Please enter valid start time.";
                        return(error);
                    }

                    if (!Utility.IsValidTimeFormat(timeEntrySubmissionDetails.StopTime))
                    {
                        error.Message = "Please enter valid stop time.";
                        return(error);
                    }

                    if (!Utility.IsValidTime(Convert.ToDateTime(timeEntrySubmissionDetails.StartDate.ToShortDateString() + " " + timeEntrySubmissionDetails.StartTime),
                                             Convert.ToDateTime(timeEntrySubmissionDetails.EndDate.ToShortDateString() + " " + timeEntrySubmissionDetails.StopTime)))
                    {
                        error.Message = "Stop Time should be greater than Start Time";
                        return(error);
                    }
                }

                return(error);
            }
            catch (Exception e)
            {
                logger.Log(LogLevel.Error, e);
                error.Message = e.Message;
                return(error);
            }
        }
示例#2
0
        /// <summary>
        /// For Updating time entry
        /// </summary>
        /// <param name="consumerSecretToken"></param>
        /// <param name="dataAccessToken"></param>
        /// <param name="version"></param>
        /// <param name="timeEntrySubmissionDetails"></param>
        /// <returns>IList<TimeEntryBO></returns>
        public IList <TimeEntryBO> UpdateTimeEntry(string consumerSecretToken, string dataAccessToken, string version, TimeEntrySubmissionBO timeEntrySubmissionDetails)
        {
            string fromDate = timeEntrySubmissionDetails.StartDate.ToString("yyyy-MM-dd");

            timeEntrySubmissionDetails.Description = timeEntrySubmissionDetails.Description.Replace("\r", "\\r").Replace("\n", "\\n").Replace("\"", "'");

            // Create Post Data
            CStringBuilder postData = new CStringBuilder();

            postData.Append("{");
            if (!string.IsNullOrEmpty(timeEntrySubmissionDetails.ClientId))
            {
                postData.Append(string.Concat("\"ClientID\":\"", timeEntrySubmissionDetails.ClientId, "\","));
            }
            postData.Append(string.Concat("\"ProjectID\":\"", timeEntrySubmissionDetails.ProjectId, "\","));
            postData.Append(string.Concat("\"TaskID\":\"", timeEntrySubmissionDetails.TaskId, "\","));
            postData.Append(string.Concat("\"EmployeeID\":\"", timeEntrySubmissionDetails.EmployeeId, "\","));
            postData.Append(string.Concat("\"Date\":\"", fromDate, "\","));
            // Convert start/stop time to 24 hours format
            if (!string.IsNullOrEmpty(timeEntrySubmissionDetails.StartTime))
            {
                postData.Append(string.Concat("\"StartTime\":\"", Convert.ToDateTime(timeEntrySubmissionDetails.StartTime).ToString("HHmm"), "\","));
            }
            if (!string.IsNullOrEmpty(timeEntrySubmissionDetails.StopTime))
            {
                postData.Append(string.Concat("\"StopTime\":\"", Convert.ToDateTime(timeEntrySubmissionDetails.StopTime).ToString("HHmm"), "\","));
            }
            postData.Append(string.Concat("\"Description\":\"", timeEntrySubmissionDetails.Description, "\","));
            postData.Append(string.Concat("\"Billable\":\"", timeEntrySubmissionDetails.Billable ? "T" : "F", "\","));
            postData.Append(string.Concat("\"TotalHours\":\"", timeEntrySubmissionDetails.Hours, "\","));

            postData.Append("\"CustomFields\":");
            postData.Append("[");
            StringBuilder innerPostData = new StringBuilder();

            // For Custom Fields
            if (timeEntrySubmissionDetails.CustomFields != null && timeEntrySubmissionDetails.CustomFields.Count > 0)
            {
                foreach (CustomFieldSubmissionBO customField in timeEntrySubmissionDetails.CustomFields)
                {
                    innerPostData.Append("{");
                    if (String.IsNullOrEmpty(customField.ID))
                    {
                        innerPostData.Append(string.Concat("\"ID\":\"", "FFFFFFFF-FFFF-FFFF-FFFF-FFFFFFFFFFFF", "\","));
                    }
                    else
                    {
                        innerPostData.Append(string.Concat("\"ID\":\"", customField.ID, "\","));
                    }
                    innerPostData.Append(string.Concat("\"TemplateID\":\"", customField.TemplateID, "\","));
                    innerPostData.Append("\"Values\":");
                    innerPostData.Append("[");
                    if (customField.Values != null)
                    {
                        foreach (ValueItemsSubmission item in customField.Values)
                        {
                            innerPostData.Append(string.Concat("\"", item.Value, "\","));
                        }
                        innerPostData.Remove(innerPostData.Length - 1, 1);
                    }
                    innerPostData.Append("]");
                    innerPostData.Append("},");
                }
                innerPostData.Remove(innerPostData.Length - 1, 1);
            }
            postData.Append(innerPostData.ToString());
            postData.Append("]");
            postData.Append("}");

            // Create uri to hit and make request using Dovico.CommonLibrary CRestApiHelper.MakeAPIRequest method
            string uri    = CRestApiHelper.BuildURI(string.Concat("TimeEntries/", timeEntrySubmissionDetails.TimeEntryId), null, version);
            string result = CRestApiHelper.MakeAPIRequest(uri, "PUT", CRestApiHelper.MIME_TYPE_APPLICATION_JSON, postData, consumerSecretToken, dataAccessToken);

            UtilityService.CheckErrorsInDovicoAPI(result);

            IList <TimeEntryBO> timeEntries = DeserializeObject(result).TimeEntries;

            return(timeEntries);
        }
示例#3
0
        /// <summary>
        /// Saves the Time Entry
        /// </summary>
        /// <param name="dataAccessToken"></param>
        /// <param name="timeEntrySubmissionDetails"></param>
        /// <returns>TimeEntryListBO</returns>
        public TimeEntryListBO SaveTimeEntry(string dataAccessToken, string apiVersion, TimeEntrySubmissionBO timeEntrySubmissionDetails)
        {
            ErrorBO         output            = null;
            TimeEntryListBO outputTimeEntries = new TimeEntryListBO();

            try
            {
                // Calls the Validations before submitting data
                output = SubmitValidation(dataAccessToken, apiVersion, timeEntrySubmissionDetails);

                // If validations pass
                if (output != null && string.IsNullOrEmpty(output.Message))
                {
                    // Call SaveTimeEntry / UpdateTimeEntry of Integration layer based on timeentryId
                    TimeEntryService integrationService = new TimeEntryService();
                    if (String.IsNullOrEmpty(timeEntrySubmissionDetails.TimeEntryId))
                    {
                        outputTimeEntries.timeEntries = integrationService.SaveTimeEntry(Constants.CONSUMER_SECRET_TOKEN, UtilityService.DecryptedText(dataAccessToken),
                                                                                         apiVersion, timeEntrySubmissionDetails);
                    }
                    else
                    {
                        outputTimeEntries.timeEntries = integrationService.UpdateTimeEntry(Constants.CONSUMER_SECRET_TOKEN, UtilityService.DecryptedText(dataAccessToken),
                                                                                           apiVersion, timeEntrySubmissionDetails);
                    }
                }
                else
                {
                    outputTimeEntries.ErrorMessage = output.Message;
                }
            }
            catch (DovicoException e)
            {
                logger.Log(LogLevel.Error, e);
                outputTimeEntries.ErrorMessage = e.Message;
            }
            catch (Exception e)
            {
                logger.Log(LogLevel.Error, e);
                outputTimeEntries.ErrorMessage = "Error Saving Time Entry.";
            }

            return(outputTimeEntries);
        }