Advertisement
knoteva

Untitled

Dec 11th, 2019
152
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 3.03 KB | None | 0 0
  1.         public static string ImportProjects(TeisterMaskContext context, string xmlString)
  2.         {
  3.             var xmlSerializer = new XmlSerializer(typeof(ImportProjectsDtoXml[]), new XmlRootAttribute("Projects"));
  4.             var projectsDto = (ImportProjectsDtoXml[])xmlSerializer.Deserialize(new StringReader(xmlString));
  5.  
  6.             var sb = new StringBuilder();
  7.             var projects = new List<Project>();
  8.  
  9.             foreach (var projectDto in projectsDto)
  10.             {
  11.                 if (!IsValid(projectDto))
  12.                 {
  13.                     sb.AppendLine($"{ErrorMessage}");
  14.                     continue;
  15.                 }
  16.  
  17.                 var tasks = new List<Task>();
  18.  
  19.                 var projectOpenDate = DateTime.ParseExact(projectDto.OpenDate, "dd/MM/yyyy", CultureInfo.InvariantCulture);
  20.                
  21.                 var projectDueDate = projectDto.DueDate == null || projectDto.DueDate == "" ? (DateTime?)null : DateTime.ParseExact(projectDto.DueDate, @"dd/MM/yyyy", CultureInfo.InvariantCulture);
  22.                 foreach (var task in projectDto.ProjectTasks)
  23.                 {
  24.                    
  25.                     if (!IsValid(task))
  26.                     {
  27.                         sb.AppendLine($"{ErrorMessage}");
  28.                         continue;
  29.                     }
  30.  
  31.                     var taskOpenDate = DateTime.ParseExact(task.OpenDate, "dd/MM/yyyy", CultureInfo.InvariantCulture);
  32.                     var taskDueDate = DateTime.ParseExact(task.DueDate, "dd/MM/yyyy", CultureInfo.InvariantCulture);
  33.  
  34.                     //var correctDate = true;
  35.  
  36.                     //•   task open date is before project open date or task due date is after project due date)
  37.  
  38.                     if (taskOpenDate < projectOpenDate || taskDueDate > projectDueDate)
  39.                     {
  40.                         sb.AppendLine($"{ErrorMessage}");
  41.                         continue;
  42.                     }
  43.  
  44.                     tasks.Add(new Task()
  45.                     {
  46.                         Name = task.Name,
  47.                         OpenDate = DateTime.ParseExact(task.OpenDate, "dd/MM/yyyy", CultureInfo.InvariantCulture),
  48.                         DueDate = DateTime.ParseExact(task.DueDate, "dd/MM/yyyy", CultureInfo.InvariantCulture),
  49.                         ExecutionType = Enum.Parse<ExecutionType>(task.ExecutionType),
  50.                         LabelType = Enum.Parse<LabelType>(task.LabelType)
  51.  
  52.                     });
  53.                 }
  54.  
  55.                 var project = new Project
  56.                 {
  57.                     Name = projectDto.Name,
  58.                     OpenDate = projectOpenDate,
  59.                     DueDate = projectDueDate,
  60.                     Tasks = tasks
  61.                 };
  62.  
  63.  
  64.                 projects.Add(project);
  65.                 sb.AppendLine($"Successfully imported project - {project.Name} with {project.Tasks.Count} tasks.");
  66.             }
  67.  
  68.  
  69.             context.Projects.AddRange(projects);
  70.             context.SaveChanges();
  71.             return sb.ToString().TrimEnd();
  72.         }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement