public static string CreateUpdate(Project data) { string returnResult = string.Empty; try { if (data == null) { Logger.Debug("CreateUpdateCampaign.CreateUpdate : Null Project Data "); returnResult = "Invalid Data Recieved"; return returnResult; } if (data.response_put && data.id == 0) { Logger.Debug("CreateUpdateCampaign.CreateUpdate : Can't Update Project With No Id"); returnResult = "Can't Update Project With No Id"; return returnResult; } string dateFromatDB = "dd-MMM-yyyy"; string dateFromatData = "yyyy-MM-dd"; string exit_date = string.Empty; double project_cost = 0; string producer_name = string.Empty; string market = string.Empty; string hosting_platform = string.Empty; string status = string.Empty; double progress = 0; string live_url = string.Empty; string development_start_date = string.Empty; string launch_date = string.Empty; string post_result = string.Empty; for (int i = 0; i < data.custom_fields.Count; i++) { if (data.custom_fields[i].name == "Exit Date") exit_date = data.custom_fields[i].value; if (data.custom_fields[i].name == "Estimates Shared with Client") { Double.TryParse(data.custom_fields[i].value, out project_cost); project_cost = project_cost * (Convert.ToDouble((ConfigurationSettings.AppSettings["cost"]))); } if (data.custom_fields[i].name == "Producer") producer_name = data.custom_fields[i].value; if (data.custom_fields[i].name == "Market") market = data.custom_fields[i].value; if (data.custom_fields[i].name == "Project Technology") hosting_platform = data.custom_fields[i].value; if (data.custom_fields[i].name == "Live URL") live_url = data.custom_fields[i].value; if (data.custom_fields[i].name == "Development Start Date") development_start_date = data.custom_fields[i].value; if (data.custom_fields[i].name == "Launch Date") launch_date = data.custom_fields[i].value; } //Parse datetime for DataValidation class #region Date validation DateTime exitDate; DateTime launchDate; DateTime startDate; bool isExitDateValid = DateTime.TryParseExact(exit_date, dateFromatData, CultureInfo.InvariantCulture, DateTimeStyles.None, out exitDate); bool isDevStartDateValid = DateTime.TryParseExact(development_start_date, dateFromatData, CultureInfo.InvariantCulture, DateTimeStyles.None, out startDate); bool isLaunchDateValid = DateTime.TryParseExact(launch_date, dateFromatData, CultureInfo.InvariantCulture, DateTimeStyles.None, out launchDate); if (!string.IsNullOrWhiteSpace(exit_date) && !isExitDateValid) { Logger.Debug("CreateUpdateCampaign.CreateUpdate : Invalid Exit Date Format"); returnResult = "Invalid Exit Date Format"; return returnResult; } if (!string.IsNullOrWhiteSpace(development_start_date) && !isDevStartDateValid) { Logger.Debug("CreateUpdateCampaign.CreateUpdate : Invalid Exit Date Format"); returnResult = "Invalid Start Date Format"; return returnResult; } if (!string.IsNullOrWhiteSpace(launch_date) && !isLaunchDateValid) { Logger.Debug("CreateUpdateCampaign.CreateUpdate : Invalid Exit Date Format"); returnResult = "Invalid Launch Date Format"; return returnResult; } if ((startDate > launchDate) || (launchDate > exitDate) || (startDate > exitDate)) { Logger.Debug("CreateUpdateCampaign.CreateUpdate : Start Date > Launch Date > Exit Date"); returnResult = "Start Date > Launch Date > Exit Date"; return returnResult; } #endregion exit_date = exitDate.ToString(dateFromatDB); launch_date = launchDate.ToString(dateFromatDB); development_start_date = startDate.ToString(dateFromatDB); ProjectVM provm = new ProjectVM(); provm.id = data.id; provm.name = data.name; provm.exit_date = exit_date; provm.project_cost = project_cost; provm.producer_name = producer_name; provm.market = market; provm.hosting_platform = hosting_platform; provm.status = status; provm.progress = progress; provm.live_url = live_url; provm.development_start_date = development_start_date; provm.launch_date = launch_date; string requestUri = System.Configuration.ConfigurationManager.AppSettings["hostUrl"] + "projects.xml?key=" + System.Configuration.ConfigurationManager.AppSettings["apiKey"]; AddProService aps = new AddProService(); string XmlizedString = XmlFormater(data); String finalString = XmlizedString.Replace("<?xml version=\"1.0\" encoding=\"utf-16\"?>", ""); if (data.response_put == false) { post_result = aps.postXMLData(requestUri, finalString, provm); } else { int idchange = data.id; string requesturi_put = ConfigurationSettings.AppSettings["hostUrl"] + "projects/" + idchange + ".xml?key=" + ConfigurationSettings.AppSettings["apiKey"]; post_result = aps.putXMLData(requesturi_put, finalString, provm); } if (post_result == "Success") { return "Success"; } else { Logger.Debug("CreateUpdateCampaign.CreateUpdate : Post Failed" + post_result); return post_result; } } catch (Exception ex) { Logger.Error("CreateUpdateCampaign.CreateUpdate " + ex.ToString()); returnResult = "Api Server Exception"; return returnResult; } }
public static string CreateUpdate(Project data, string redmineUserId) { string returnResult = string.Empty; try { if (data == null) { Logger.Debug("CreateUpdateCampaign.CreateUpdate : Null Project Data "); returnResult = "Invalid Data Recieved"; return returnResult; } if (data.response_put && data.id == 0) { Logger.Debug("CreateUpdateCampaign.CreateUpdate : Can't Update Project With No Id"); returnResult = "Can't Update Project With No Id"; return returnResult; } string dateFromatDB = "dd-MMM-yyyy"; string dateFromatData = "yyyy-MM-dd"; string exit_date = string.Empty; double project_cost = 0; string producer_name = string.Empty; string market = string.Empty; string hosting_platform = string.Empty; string status = string.Empty; double progress = 0; string live_url = string.Empty; string development_start_date = string.Empty; string launch_date = string.Empty; string post_result = string.Empty; string due_date = string.Empty; string image_url = string.Empty; string pending_with = string.Empty; double estimateTime = 0; string qa_url = string.Empty; if (data.custom_fields != null) { for (int i = 0; i < data.custom_fields.Count; i++) { if (data.custom_fields[i].name == "Image") image_url = data.custom_fields[i].value; if (data.custom_fields[i].name == "Exit Date") exit_date = data.custom_fields[i].value; if (data.custom_fields[i].name == "Estimates Shared with Client") { Double.TryParse(data.custom_fields[i].value, out estimateTime); //estimateTime=project_cost; project_cost = estimateTime * (Convert.ToDouble((ConfigurationManager.AppSettings["cost"]))); } if (data.custom_fields[i].name == "Due Date") due_date = data.custom_fields[i].value; if (data.custom_fields[i].name == "QA CName") qa_url = data.custom_fields[i].value; if (data.custom_fields[i].name == "Producer") producer_name = data.custom_fields[i].value; if (data.custom_fields[i].name == "Market") market = data.custom_fields[i].value; if (data.custom_fields[i].name == "Project Technology") hosting_platform = data.custom_fields[i].value; if (data.custom_fields[i].name == "Live URL") live_url = data.custom_fields[i].value; if (data.custom_fields[i].name == "Development Start Date") development_start_date = data.custom_fields[i].value; if (data.custom_fields[i].name == "Launch Date") launch_date = data.custom_fields[i].value; if (data.custom_fields[i].name == "Pending With") pending_with = data.custom_fields[i].value; } } //Parse datetime for DataValidation class #region Date validation DateTime exitDate; DateTime launchDate; DateTime startDate; DateTime dueDate; bool isExitDateValid = DateTime.TryParseExact(exit_date, dateFromatData, CultureInfo.InvariantCulture, DateTimeStyles.None, out exitDate); bool isDevStartDateValid = DateTime.TryParseExact(development_start_date, dateFromatData, CultureInfo.InvariantCulture, DateTimeStyles.None, out startDate); bool isLaunchDateValid = DateTime.TryParseExact(launch_date, dateFromatData, CultureInfo.InvariantCulture, DateTimeStyles.None, out launchDate); bool isDueDateValid = DateTime.TryParseExact(due_date, dateFromatData, CultureInfo.InvariantCulture, DateTimeStyles.None, out dueDate); if (!string.IsNullOrWhiteSpace(exit_date) && !isExitDateValid) { Logger.Debug("CreateUpdateCampaign.CreateUpdate : Invalid Exit Date Format"); returnResult = "Invalid Exit Date Format"; return returnResult; } if (!string.IsNullOrWhiteSpace(development_start_date) && !isDevStartDateValid) { Logger.Debug("CreateUpdateCampaign.CreateUpdate : Invalid Start Date Format"); returnResult = "Invalid Start Date Format"; return returnResult; } if (!string.IsNullOrWhiteSpace(launch_date) && !isLaunchDateValid) { Logger.Debug("CreateUpdateCampaign.CreateUpdate : Invalid Launch Date Format"); returnResult = "Invalid Launch Date Format"; return returnResult; } if (((startDate > launchDate) || (launchDate > exitDate) || (startDate > exitDate)) && ((launch_date != "") && (exit_date != ""))) { Logger.Debug("CreateUpdateCampaign.CreateUpdate : Start Date < Launch Date < Exit Date"); returnResult = "Start Date < Launch Date < Exit Date"; return returnResult; } #endregion exit_date = exitDate.ToString(dateFromatDB); launch_date = launchDate.ToString(dateFromatDB); development_start_date = startDate.ToString(dateFromatDB); due_date = dueDate.ToString(dateFromatDB); ProjectVM provm = new ProjectVM(); provm.id = data.id; provm.name = data.name; provm.exit_date = exit_date; provm.project_cost = project_cost; provm.producer_name = producer_name; provm.market = market; provm.hosting_platform = hosting_platform; provm.status = status; provm.progress = progress; provm.live_url = live_url; provm.development_start_date = development_start_date; provm.launch_date = launch_date; provm.EstimatedTime = estimateTime; provm.due_date = due_date; provm.image_url = image_url; provm.pending_with = pending_with; provm.qa_url = qa_url; string getUserApiKey = "Select [RedmineApiKey] from [Users] where [RedmineUserId] = '" + redmineUserId + "'"; string UserApiKey = dc.GetSingleCell(getUserApiKey); string getPendingWith = "Select [pending_with] from [Project_Main] where [Project_Id] = '" + data.id + "'"; string pendingWith = dc.GetSingleCell(getPendingWith); #region // Send mails on change of pending_with status if (data.response_put) { if (!EmailService.EstimateToDevlopmentMovedMail(data.id.ToString(), data.name)) Logger.Debug("CreateUpdateCampaign.CreateUpdate: Unable to send EstimateToDevlopmentMovedMails "); if ((pending_with.Trim().ToUpper() != pendingWith.Trim().ToUpper()) && !string.IsNullOrEmpty(pending_with)) { if (!EmailService.EstimateToDevlopmentMovedMail(data.id.ToString() , data.name)) Logger.Debug("CreateUpdateCampaign.CreateUpdate: Unable to send EstimateToDevlopmentMovedMails "); } } #endregion string requestUri = System.Configuration.ConfigurationManager.AppSettings["hostUrl"] + "projects.xml?key=" + UserApiKey;//System.Configuration.ConfigurationManager.AppSettings["apiKey"]; AddProService aps = new AddProService(); string XmlizedString = XmlFormater(data); String finalString = XmlizedString.Replace("<?xml version=\"1.0\" encoding=\"utf-16\"?>", ""); if (data.response_put == false) { post_result = aps.postXMLData(requestUri, finalString, provm); } else { int idchange = data.id; string requesturi_put = ConfigurationManager.AppSettings["hostUrl"] + "projects/" + idchange + ".xml?key=" + UserApiKey;// ConfigurationManager.AppSettings["apiKey"]; post_result = aps.putXMLData(requesturi_put, finalString, provm); if (post_result != "Success") { Logger.Debug("CreateUpdateCampaign.CreateUpdate : requestUri " + requesturi_put); Logger.Debug("CreateUpdateCampaign.CreateUpdate : xml " + finalString); } } if (post_result == "Success") { return "Success"; } else { Logger.Debug("CreateUpdateCampaign.CreateUpdate : Post Failed" + post_result); Logger.Debug("CreateUpdateCampaign.CreateUpdate : requestUri " + requestUri); Logger.Debug("CreateUpdateCampaign.CreateUpdate : xml " + finalString); return post_result; } } catch (Exception ex) { Logger.Error("CreateUpdateCampaign.CreateUpdate " + ex.ToString()); returnResult = "Api Server Exception"; return returnResult; } }