public static string ExportPrisonersByCells(SoftJailDbContext context, int[] ids) { var officersDto = context.OfficerPrisoners .Where(x => ids.Contains(x.Prisoner.Id)) .Select(x => new ExportPrisonerDto { Id = x.Prisoner.Id, Name = x.Prisoner.FullName, CellNumber = x.Prisoner.Cell.CellNumber, Officers = x.Officer.PrisonerOfficers .Select(y => new ExportOfficerDto { OfficerName = y.Officer.FullName, Department = y.Officer.Department.Name }) .OrderBy(o => o.OfficerName) .ToArray(), TotalOfficerSalary = x.Officer.Salary }) .OrderBy(p => p.Name) .ThenBy(i => i.Id) .ToArray(); var json = JsonConvert.SerializeObject(officersDto, Newtonsoft.Json.Formatting.Indented); return(json); }
public static string ExportPrisonersInbox(SoftJailDbContext context, string prisonersNames) { StringBuilder sb = new StringBuilder(); var names = prisonersNames .Split(",", StringSplitOptions.RemoveEmptyEntries) .ToList(); var prisoners = context .Prisoners .Where(p => names.Contains(p.FullName)) .Select(p => new PrisonerDto() { Id = p.Id, Name = p.FullName, IncarcerationDate = p.IncarcerationDate.ToString("yyyy-MM-dd"), EncryptedMessages = p.Mails.Select(m => new MailDto() { Description = ReverseString(m.Description) }) .ToList() }) .OrderBy(p => p.Name) .ThenBy(pi => pi.Id) .ToArray(); var serializer = new XmlSerializer(typeof(PrisonerDto[]), new XmlRootAttribute("Prisoners")); serializer.Serialize(new StringWriter(sb), prisoners, new XmlSerializerNamespaces(new[] { XmlQualifiedName.Empty })); var result = sb.ToString(); return(result); }
public static string ExportPrisonersByCells(SoftJailDbContext context, int[] ids) { var prisoners = context.Prisoners .Where(p => ids.Contains(p.Id)) .Select(p => new { p.Id, Name = p.FullName, p.Cell.CellNumber, Officers = p.PrisonerOfficers .Select(po => new { OfficerName = po.Officer.FullName, Department = po.Officer.Department.Name }) .OrderBy(o => o.OfficerName) .ToArray(), TotalOfficerSalary = Math.Round(p.PrisonerOfficers.Sum(op => op.Officer.Salary), 2) }) .OrderBy(p => p.Name) .ThenBy(p => p.Id) .ToArray(); string json = JsonConvert.SerializeObject(prisoners, Formatting.Indented); return(json); }
public static string ExportPrisonersInbox(SoftJailDbContext context, string prisonersNames) { var names = prisonersNames.Split(","); var result = context.Prisoners .Where(x => names.Contains(x.FullName)) .Select(x => new PrisonerViewModel { Id = x.Id, Name = x.FullName, IncarcerationDate = x.IncarcerationDate.ToString("yyyy-MM-dd"), EncryptedMessages = x.Mails.Select(m => new EncryptedMessages { Description = string.Join("", m.Description.Reverse()) }) .ToArray() }) .OrderBy(x => x.Name) .ThenBy(x => x.Id) .ToArray(); var root = new XmlRootAttribute("Prisoners"); var serializer = new XmlSerializer(typeof(PrisonerViewModel[]), root); var writer = new StringWriter(); var namespacesSerializer = new XmlSerializerNamespaces(); namespacesSerializer.Add("", ""); using (writer) { serializer.Serialize(writer, result, namespacesSerializer); } return(writer.ToString()); }
public static string ExportPrisonersByCells(SoftJailDbContext context, int[] ids) { var prisoners = context .Prisoners .Where(p => ids.Contains(p.Id)) .Select(p => new PrisonersExport() { Id = p.Id, Name = p.FullName, CellNumber = p.Cell.CellNumber, Officers = p.PrisonerOfficers.Select(po => new OfficersExport() { OfficerName = po.Officer.FullName, Department = po.Officer.Department.Name }) .OrderBy(n => n.OfficerName) .ToList(), TotalOfficerSalary = p.PrisonerOfficers.Select(o => o.Officer.Salary).Sum() }) .OrderBy(n => n.Name) .ThenBy(pr => pr.Id) .ToArray(); string result = JsonConvert.SerializeObject(prisoners, Newtonsoft.Json.Formatting.Indented); return(result); }
public static string ExportPrisonersInbox(SoftJailDbContext context, string prisonersNames) { var namespaces = new XmlSerializerNamespaces(); namespaces.Add("", ""); var prisoners = context.Prisoners .Where(x => prisonersNames.Contains(x.FullName)) .Select(x => new ExportPrisonersWithMailsDTO { Id = x.Id, FullName = x.FullName, IncarcerationDate = x.IncarcerationDate.ToString("yyyy-MM-dd"), Mails = x.Mails.Select(x => new ExportMailsDTO { Description = new string(x.Description.Reverse().ToArray()) }) .ToArray() }) .OrderBy(x => x.FullName) .ThenBy(x => x.Id) .ToArray(); var serializer = new XmlSerializer(typeof(ExportPrisonersWithMailsDTO[]), new XmlRootAttribute("Prisoners")); var writer = new StringWriter(); serializer.Serialize(writer, prisoners, namespaces); writer.Close(); return(writer.ToString()); }
private static void ResetDatabase(SoftJailDbContext context, bool shouldDropDatabase = false) { if (shouldDropDatabase) { context.Database.EnsureDeleted(); } if (context.Database.EnsureCreated()) { return; } var disableIntegrityChecksQuery = "EXEC sp_MSforeachtable @command1='ALTER TABLE ? NOCHECK CONSTRAINT ALL'"; context.Database.ExecuteSqlCommand(disableIntegrityChecksQuery); var deleteRowsQuery = "EXEC sp_MSforeachtable @command1='SET QUOTED_IDENTIFIER ON;DELETE FROM ?'"; context.Database.ExecuteSqlCommand(deleteRowsQuery); var enableIntegrityChecksQuery = "EXEC sp_MSforeachtable @command1='ALTER TABLE ? WITH CHECK CHECK CONSTRAINT ALL'"; context.Database.ExecuteSqlCommand(enableIntegrityChecksQuery); var reseedQuery = "EXEC sp_MSforeachtable @command1='IF OBJECT_ID(''?'') IN (SELECT OBJECT_ID FROM SYS.IDENTITY_COLUMNS) DBCC CHECKIDENT(''?'', RESEED, 0)'"; context.Database.ExecuteSqlCommand(reseedQuery); }
public static string ExportPrisonersInbox(SoftJailDbContext context, string prisonersNames) { var names = prisonersNames.Split(",", StringSplitOptions.RemoveEmptyEntries); var prisoners = context.Prisoners .ToList() .Where(x => names.Contains(x.FullName)) .Select(x => new XMLPrisoner { Id = x.Id, Name = x.FullName, IncarcerationDate = x.IncarcerationDate.ToString("yyyy-MM-dd", CultureInfo.InvariantCulture), EncryptedMessages = x.Mails.Select(m => new XMLEncryptedMessage { Description = string.Join("", m.Description.Reverse()) }).ToArray() }) .OrderBy(x => x.Name) .ThenBy(x => x.Id) .ToList(); var result = XmlConverter.Serialize(prisoners, "Prisoners"); return(result); }
public static string ExportPrisonersByCells(SoftJailDbContext context, int[] ids) { var prisoners = context.Prisoners .Where(x => ids.Contains(x.Id)) .Select(x => new { Id = x.Id, Name = x.FullName, CellNumber = x.Cell.CellNumber, Officers = x.PrisonerOfficers.Select(c => new { OfficerName = c.Officer.FullName, Department = c.Officer.Department.Name }) .OrderBy(c => c.OfficerName), TotalOfficerSalary = x.PrisonerOfficers.Sum(c => c.Officer.Salary) }) .OrderBy(x => x.Name) .ThenBy(x => x.Id); var json = JsonConvert.SerializeObject(prisoners, new JsonSerializerSettings() { NullValueHandling = NullValueHandling.Ignore, Formatting = Formatting.Indented }); return(json); }
public static string ExportPrisonersInbox(SoftJailDbContext context, string prisonersNames) { var names = prisonersNames.Split(',', StringSplitOptions.RemoveEmptyEntries); var prisoners = context.Prisoners .Where(p => names.Contains(p.FullName)) .OrderBy(p => p.FullName) .ThenBy(p => p.Id) .Select(p => new ExportPrisonerDto { Id = p.Id, Name = p.FullName, IncarcerationDate = p.IncarcerationDate.ToString("yyyy-MM-dd", CultureInfo.InvariantCulture), EncryptedMessages = p.Mails.Select(m => new ExportMessageDto { Description = ReverseString(m.Description) }).ToArray() }) .ToArray(); var serializer = new XmlSerializer(typeof(ExportPrisonerDto[]), new XmlRootAttribute("Prisoners")); var ns = new XmlSerializerNamespaces(new[] { XmlQualifiedName.Empty }); var sb = new StringBuilder(); using (var writer = new StringWriter(sb)) { serializer.Serialize(writer, prisoners, ns); } return(sb.ToString().TrimEnd()); }
public static string ExportPrisonersByCells(SoftJailDbContext context, int[] ids) { var prisoners = context.Prisoners .ToList() .Where(x => ids.Contains(x.Id)) .Select(x => new { x.Id, Name = x.FullName, x.Cell.CellNumber, Officers = x.PrisonerOfficers .Select(p => new { OfficerName = p.Officer.FullName, Department = p.Officer.Department.Name, }) .OrderBy(p => p.OfficerName) .ToList(), TotalOfficerSalary = decimal.Parse(x.PrisonerOfficers.Sum(po => po.Officer.Salary).ToString("F2")) }) .OrderBy(x => x.Name) .ThenBy(x => x.Id) .ToList(); var json = JsonConvert.SerializeObject(prisoners, Formatting.Indented); return(json); }
public static string ExportPrisonersByCells(SoftJailDbContext context, int[] ids) { var prisoners = context.Prisoners .Where(p => ids.Contains(p.Id)) .OrderBy(p => p.FullName) .ThenBy(p => p.Id) .Select(p => new { Id = p.Id, Name = p.FullName, CellNumber = p.Cell.CellNumber, Officers = p.PrisonerOfficers .Select(o => new { OfficerName = o.Officer.FullName, Department = o.Officer.Department.Name, }) .OrderBy(o => o.OfficerName) .ToList(), TotalOfficerSalary = Math.Round(p.PrisonerOfficers.Sum(po => po.Officer.Salary), 2) }) .ToList(); return(JsonConvert.SerializeObject(prisoners, Newtonsoft.Json.Formatting.Indented)); }
public static string ExportPrisonersInbox(SoftJailDbContext context, string prisonersNames) { var names = prisonersNames.Split(",", StringSplitOptions.RemoveEmptyEntries).ToArray(); var prisonersInbox = context.Prisoners .Where(x => names.Contains(x.FullName)) .Select(x => new PrisonerInboxExportModel { Id = x.Id, Name = x.FullName, IncarcerationDate = x.IncarcerationDate.ToString("yyyy-MM-dd"), EncryptedMessages = x.Mails.Select(x => new EncryptedMessageExportModel { Description = string.Join("", x.Description.Reverse()) }) .ToArray() }) .OrderBy(x => x.Name) .ThenBy(x => x.Id) .ToList(); var xml = XmlConverter.Serialize(prisonersInbox, "Prisoners"); return(xml); }
public static string ExportPrisonersInbox(SoftJailDbContext context, string prisonersNames) { var names = prisonersNames.Split(",").ToArray(); var prisonersDto = context.Prisoners .Where(x => names.Contains(x.FullName)) .Select(x => new ExportPrisonerXmlDto { Id = x.Id, Name = x.FullName, IncarcerationDate = x.IncarcerationDate.ToString("yyyy-MM-dd", CultureInfo.InvariantCulture), EncryptedMessages = x.Mails.Select(y => new ExportMailDto { Description = Reverse(y.Description) }) .ToArray() }) .OrderBy(x => x.Name) .ThenBy(x => x.Id) .ToArray(); var serializer = new XmlSerializer(typeof(ExportPrisonerXmlDto[]), new XmlRootAttribute("Prisoners")); var sb = new StringBuilder(); var namespaces = new XmlSerializerNamespaces(new[] { XmlQualifiedName.Empty }); serializer.Serialize(new StringWriter(sb), prisonersDto, namespaces); return(sb.ToString().TrimEnd()); }
public static string ExportPrisonersByCells(SoftJailDbContext context, int[] ids) { var prisoners = context .Prisoners .ToArray() .Where(x => ids.Contains(x.Id)) .Select(p => new { Id = p.Id, Name = p.FullName, CellNumber = p.Cell.CellNumber, Officers = p.PrisonerOfficers.Select(off => new { OfficerName = off.Officer.FullName, Department = off.Officer.Department.Name }) .OrderBy(x => x.OfficerName) .ToArray(), TotalOfficerSalary = p.PrisonerOfficers.Sum(x => x.Officer.Salary) }) .OrderBy(x => x.Name) .ThenBy(x => x.Id) .ToArray(); string json = JsonConvert.SerializeObject(prisoners, Formatting.Indented); return(json); ; }
public static string ExportPrisonersInbox(SoftJailDbContext context, string prisonersNames) { var prisonersNamesArr = prisonersNames.Split(","); var prisoners = context .Prisoners .Where(x => prisonersNamesArr.Contains(x.FullName)) .Select(x => new ExportPrisonersInboxDto { Id = x.Id, Name = x.FullName, IncarcerationDate = x.IncarcerationDate.ToString("yyyy-MM-dd"), EncryptedMessages = x.Mails.Select(c => new EncryptedMessagesDto() { Description = ReverseMessage(c.Description) }).ToArray() }) .OrderBy(x => x.Name) .ThenBy(x => x.Id) .ToArray(); var sb = new StringBuilder(); var serializer = new XmlSerializer(typeof(ExportPrisonersInboxDto[]), new XmlRootAttribute("Prisoners")); serializer.Serialize(new StringWriter(sb), prisoners, new XmlSerializerNamespaces(new[] { XmlQualifiedName.Empty })); var result = sb.ToString(); return(result); }
public static string ExportPrisonersByCells(SoftJailDbContext context, int[] ids) { var prisoners = context.Prisoners .Where(x => ids.Contains(x.Id)) .Select(x => new ExportPrisonersWitthCellsAndOfficerDTO { Id = x.Id, Name = x.FullName, CellNumber = x.Cell.CellNumber, Officers = x.PrisonerOfficers.Select(po => new ExportOfficersDTO { OfficerName = po.Officer.FullName, Department = po.Officer.Department.Name }) .OrderBy(x => x.OfficerName) .ToArray(), TotalOfficerSalary = double.Parse(x.PrisonerOfficers.Sum(o => o.Officer.Salary).ToString("f2")) }) .OrderBy(x => x.Name) .ThenBy(x => x.Id) .ToArray(); var jsonPrisoners = JsonConvert.SerializeObject(prisoners, Formatting.Indented); return(jsonPrisoners); }
public static string ExportPrisonersInbox(SoftJailDbContext context, string prisonersNames) { string[] names = prisonersNames.Split(','); PrisonerExportDto[] prisoners = context.Prisoners .Where(p => names.Contains(p.FullName)) .Select(p => new PrisonerExportDto { Id = p.Id, Name = p.FullName, IncarcerationDate = p.IncarcerationDate.ToString("yyyy-MM-dd", CultureInfo.InvariantCulture), EncryptedMessages = p.Mails .Select(m => new MessageDto { Description = Reverse(m.Description) }) .ToArray() }) .OrderBy(p => p.Name) .ThenBy(p => p.Id) .ToArray(); var serializer = new XmlSerializer(typeof(PrisonerExportDto[]), new XmlRootAttribute("Prisoners")); var sb = new StringBuilder(); var xmlNamespaces = new XmlSerializerNamespaces(new[] { XmlQualifiedName.Empty }); serializer.Serialize(new StringWriter(sb), prisoners, xmlNamespaces); return(sb.ToString()); }
public static string ExportPrisonersByCells(SoftJailDbContext context, int[] ids) { var prisoners = context.Prisoners.Where(x => ids.Any(p => p == x.Id)).Include(p => p.PrisonerOfficers) .ThenInclude(op => op.Officer) .ThenInclude(o => o.Department) .Select(i => new { Id = i.Id, Name = i.FullName, CellNumber = i.Cell.CellNumber, Officers = i.PrisonerOfficers.Select(o => new OfficersDto { OfficerName = o.Officer.FullName, Department = o.Officer.Department.Name }) .OrderBy(o => o.OfficerName) .ToArray() }) .OrderBy(x => x.Name) .ThenByDescending(x => x.Id) .ToArray(); string result = JsonConvert.SerializeObject(prisoners, Formatting.Indented); return(result); }
public static string ImportDepartmentsCells(SoftJailDbContext context, string jsonString) { var departmentsCells = JsonConvert.DeserializeObject <List <Department> >(jsonString); var departments = new List <Department>(); var cells = new List <Cell>(); var sb = new StringBuilder(); foreach (var departmentCell in departmentsCells) { var isValid = IsValid(departmentCell); if (!isValid) { sb.AppendLine("Invalid Data"); continue; } var department = new Department() { Name = departmentCell.Name }; var shouldContinue = true; foreach (var currentCell in departmentCell.Cells) { var isCellValid = IsValid(currentCell); if (!isCellValid) { sb.AppendLine("Invalid Data"); shouldContinue = false; break; } var cell = new Cell() { CellNumber = currentCell.CellNumber, HasWindow = currentCell.HasWindow }; department.Cells.Add(cell); cells.Add(cell); } if (shouldContinue) { departments.Add(department); sb.AppendLine($"Imported {department.Name} with {department.Cells.Count} cells"); } } context.Departments.AddRange(departments); context.Cells.AddRange(cells); context.SaveChanges(); return(sb.ToString().TrimEnd()); }
public static string ImportDepartmentsCells(SoftJailDbContext context, string jsonString) { var deparmentCells = JsonConvert.DeserializeObject <DepartmentCellsImportDto[]>(jsonString); var sb = new StringBuilder(); var deparments = new List <Department>(); foreach (var dto in deparmentCells) { if (!IsValid(dto)) { sb.AppendLine(ErrorMessage); continue; } var isValidCell = true; var cells = new List <Cell>(); foreach (var cellDto in dto.Cells) { if (!IsValid(cellDto)) { isValidCell = false; break; } var cell = new Cell { CellNumber = cellDto.CellNumber, HasWindow = cellDto.HasWindow }; cells.Add(cell); } if (!isValidCell) { sb.AppendLine(ErrorMessage); continue; } var deparment = new Department { Name = dto.Name, Cells = cells }; deparments.Add(deparment); sb.AppendLine(String.Format(SuccessDepartmentMessage, deparment.Name, deparment.Cells.Count)); } context.Departments.AddRange(deparments); context.SaveChanges(); var result = sb.ToString(); return(result); }
public static string ImportPrisonersMails(SoftJailDbContext context, string jsonString) { var prisonersDto = JsonConvert.DeserializeObject <List <ImportPrisonersDto> >(jsonString, new JsonSerializerSettings { NullValueHandling = NullValueHandling.Ignore }); var prisoners = new List <Prisoner>(); StringBuilder sb = new StringBuilder(); foreach (var prisoner in prisonersDto) { var areMailsValid = true; if (!IsModelValid(prisoner)) { sb.AppendLine("Invalid Data"); continue; } var mails = new List <Mail>(); foreach (var mail in prisoner.Mails) { if (!IsModelValid(mail)) { sb.AppendLine("Invalid Data"); areMailsValid = false; break; } mails.Add(new Mail() { Description = mail.Description, Sender = mail.Sender, Address = mail.Address }); } if (!areMailsValid) { continue; } var currentPrisoner = new Prisoner() { FullName = prisoner.FullName, Nickname = prisoner.Nickname, Age = prisoner.Age, IncarcerationDate = DateTime.ParseExact(prisoner.IncarcerationDate, "dd/MM/yyyy", CultureInfo.InvariantCulture), ReleaseDate = DateTime.ParseExact(prisoner.ReleaseDate, "dd/MM/yyyy", CultureInfo.InvariantCulture), Bail = prisoner.Bail, CellId = prisoner.CellId, Mails = mails }; prisoners.Add(currentPrisoner); sb.AppendLine($"Imported {currentPrisoner.FullName} {currentPrisoner.Age} years old"); } context.Prisoners.AddRange(prisoners); context.SaveChanges(); return(sb.ToString()); }
public static string ImportDepartmentsCells(SoftJailDbContext context, string jsonString) { var sb = new StringBuilder(); var deserializedJson = JsonConvert.DeserializeObject <DepartmentCellsDto[]>(jsonString); var departments = new List <Department>(); foreach (var departmentCellsDto in deserializedJson) { if (!IsValid(departmentCellsDto)) { sb.AppendLine(ErrorMessage); continue; } var cellsByDept = new List <Cell>(); bool allCellsAreValid = true; foreach (var cellDto in departmentCellsDto.Cells) { if (!IsValid(cellDto)) { sb.AppendLine(ErrorMessage); allCellsAreValid = false; break; } var cell = new Cell { CellNumber = cellDto.CellNumber, HasWindow = cellDto.HasWindow }; cellsByDept.Add(cell); } if (allCellsAreValid == true) { var deptName = departmentCellsDto.Name; var dept = new Department { Name = deptName, Cells = cellsByDept }; departments.Add(dept); sb.AppendLine($"Imported {deptName} with {cellsByDept.Count} cells"); } } context.Departments.AddRange(departments); context.SaveChanges(); var result = sb.ToString(); return(result); }
public static string ImportPrisonersMails(SoftJailDbContext context, string jsonString) { var sb = new StringBuilder(); var prisoners = new List <Prisoner>(); var prisonerMails = JsonConvert .DeserializeObject <IEnumerable <PrisonerMailInputModel> >(jsonString); foreach (var currentPrisoner in prisonerMails) { if (!IsValid(currentPrisoner) || !currentPrisoner.Mails.All(IsValid)) { sb.AppendLine("Invalid Data"); continue; } //dd/MM/yyyy var isValidReleaseDate = DateTime.TryParseExact( currentPrisoner.ReleaseDate, "dd/MM/yyyy", CultureInfo.InvariantCulture, DateTimeStyles.None, out DateTime releaseDate); var incarcerationDate = DateTime.ParseExact( currentPrisoner.IncarcerationDate, "dd/MM/yyyy", CultureInfo.InvariantCulture); var prisoner = new Prisoner { FullName = currentPrisoner.FullName, Nickname = currentPrisoner.Nickname, Age = currentPrisoner.Age, Bail = currentPrisoner.Bail, CellId = currentPrisoner.CellId, ReleaseDate = isValidReleaseDate ? (DateTime?)releaseDate : null, IncarcerationDate = incarcerationDate, Mails = currentPrisoner.Mails.Select(m => new Mail { Sender = m.Sender, Address = m.Address, Description = m.Description }) .ToList() }; prisoners.Add(prisoner); sb.AppendLine($"Imported {prisoner.FullName} {prisoner.Age} years old"); } context.Prisoners.AddRange(prisoners); context.SaveChanges(); return(sb.ToString().TrimEnd()); }
public static string ImportOfficersPrisoners(SoftJailDbContext context, string xmlString) { var serializer = new XmlSerializer(typeof(OfficerImportDto[]), new XmlRootAttribute("Officers")); var deserializedData = (OfficerImportDto[])serializer.Deserialize(new StringReader(xmlString)); var sb = new StringBuilder(); var officers = new List <Officer>(); foreach (var dto in deserializedData) { if (!IsValid(dto)) { sb.AppendLine(ErrorMessage); continue; } var officer = new Officer(); officer.FullName = dto.Name; officer.Salary = dto.Money; officer.DepartmentId = dto.DepartmentId; var validEnums = Enum.TryParse <Weapon>(dto.Weapon, out Weapon weapon) && Enum.TryParse <Position>(dto.Position, out Position position); if (!validEnums) { sb.AppendLine(ErrorMessage); continue; } officer.Position = Enum.Parse <Position>(dto.Position); officer.Weapon = weapon; var officerPrisoners = new List <OfficerPrisoner>(); foreach (var prisDto in dto.Prisoners) { var prisonerId = int.Parse(prisDto.Id); var officerPrisoner = new OfficerPrisoner() { PrisonerId = prisonerId, Officer = officer }; officerPrisoners.Add(officerPrisoner); } officer.OfficerPrisoners = officerPrisoners; officers.Add(officer); sb.AppendLine($"Imported {officer.FullName} ({officer.OfficerPrisoners.Count} prisoners)"); } context.Officers.AddRange(officers); context.SaveChanges(); return(sb.ToString().TrimEnd()); }
public static string ImportDepartmentsCells(SoftJailDbContext context, string jsonString) { var dtos = JsonConvert.DeserializeObject <ImportDepartmentsDto[]>(jsonString); var sb = new StringBuilder(); var departs = new List <Department>(); foreach (var dto in dtos) { var cells = new List <Cell>(); if (IsValid(dto)) { bool isError = false; foreach (var item in dto.Cells) { if (IsValid(item)) { var cell = new Cell { CellNumber = item.CellNumber, HasWindow = item.HasWindow, }; cells.Add(cell); } else { isError = true; sb.AppendLine("Invalid Data"); break; } } if (isError) { continue; } var depart = new Department { Name = dto.Name, Cells = cells }; departs.Add(depart); sb.AppendLine($"Imported {depart.Name} with {cells.Count} cells"); } else { sb.AppendLine("Invalid Data"); } } context.Departments.AddRange(departs); context.SaveChanges(); return(sb.ToString().TrimEnd()); }
public static string ImportPrisonersMails(SoftJailDbContext context, string jsonString) { var prisonersModels = JsonConvert.DeserializeObject <PrisonerImportModel[]>(jsonString); StringBuilder result = new StringBuilder(); foreach (var prisonerModel in prisonersModels) { var validMailsModels = prisonerModel.Mails.Where(x => IsValid(x)).ToArray(); if (!IsValid(prisonerModel) || validMailsModels.Length != prisonerModel.Mails.Length) { result.AppendLine(ErrorMessage); continue; } ParseDateTime(prisonerModel.IncarcerationDate, out DateTime incarcerationDate); ParseDateTime(prisonerModel.ReleaseDate, out DateTime releaseDate); if (incarcerationDate == null || (!string.IsNullOrWhiteSpace(prisonerModel.ReleaseDate) && releaseDate == null)) { result.AppendLine(ErrorMessage); continue; } var prisoner = new Prisoner { FullName = prisonerModel.FullName, Nickname = prisonerModel.Nickname, Age = prisonerModel.Age, IncarcerationDate = incarcerationDate, ReleaseDate = releaseDate, Bail = prisonerModel.Bail, CellId = prisonerModel.CellId }; context.Prisoners.Add(prisoner); foreach (var mailModel in validMailsModels) { prisoner.Mails.Add(new Mail { Sender = mailModel.Sender, Description = mailModel.Description, Address = mailModel.Address }); } result.AppendLine( GetSuccessfullyImportedPrisonerMessage( prisoner.FullName, prisoner.Age )); } context.SaveChanges(); return(result.ToString()); }
public static string ImportDepartmentsCells(SoftJailDbContext context, string jsonString) { var json = JsonConvert.DeserializeObject <DepartmentDto[]>(jsonString); var sb = new StringBuilder(); var departments = new List <Department>(); foreach (var dto in json) { if (IsValid(dto)) { var cells = new List <Cell>(); bool haveEror = false; foreach (var cell in dto.Cells) { if (IsValid(cell)) { var currentCell = new Cell { CellNumber = cell.CellNumber, HasWindow = cell.HasWindow }; cells.Add(currentCell); } else { haveEror = true; break; } } if (haveEror) { sb.AppendLine(ErrorMessage); continue; } var department = new Department { Name = dto.Name, Cells = cells }; departments.Add(department); sb.AppendLine($"Imported {department.Name} with {department.Cells.Count} cells"); } else { sb.AppendLine(ErrorMessage); continue; } } context.Departments.AddRange(departments); context.SaveChanges(); return(sb.ToString().TrimEnd()); }
public static string ImportDepartmentsCells(SoftJailDbContext context, string jsonString) { var sb = new StringBuilder(); bool hasError = false; var elements = JsonConvert.DeserializeObject <DepartmentDto[]>(jsonString); foreach (var depart in elements) { if (depart.Cells.Count() > 0) { var cells = new List <Cell>(); for (int i = 0; i < depart.Cells.Count(); i++) { var cell = depart.Cells[i]; if (cell.CellNumber >= 1 && cell.CellNumber <= 1000) { cells.Add(new Cell() { CellNumber = cell.CellNumber, HasWindow = cell.HasWindow }); } else { hasError = true; break; } } if (!hasError) { var department = new Department() { Name = depart.Name, Cells = cells }; if (IsValid(department)) { context.Cells.AddRange(cells); context.Departments.Add(department); sb.AppendLine($"Imported {department.Name} with {department.Cells.Count()} cells"); } else { hasError = true; } } } if (hasError) { sb.AppendLine(ErrorMessage); hasError = !hasError; } } context.SaveChanges(); return(sb.ToString().TrimEnd()); }
public static string ImportPrisonersMails(SoftJailDbContext context, string jsonString) { var prisonersDto = JsonConvert.DeserializeObject <ImportPrisonerDto[]>(jsonString); var sb = new StringBuilder(); var validPrisoners = new List <Prisoner>(); foreach (var dto in prisonersDto) { var isValid = IsValid(dto) && dto.Mails.All(IsValid); if (isValid) { var releaseDate = dto.ReleaseDate == null ? new DateTime?() : DateTime.ParseExact( dto.ReleaseDate, "dd/MM/yyyy", CultureInfo.InvariantCulture); var prisoner = new Prisoner { FullName = dto.FullName, Nickname = dto.Nickname, Age = dto.Age, IncarcerationDate = DateTime.ParseExact( dto.IncarcerationDate, "dd/MM/yyyy", CultureInfo.InvariantCulture), ReleaseDate = releaseDate, Bail = dto.Bail, CellId = dto.CellId, Mails = dto.Mails .Select(m => new Mail { Description = m.Description, Sender = m.Sender, Address = m.Address }) .ToArray(), }; validPrisoners.Add(prisoner); sb.AppendLine($"Imported {prisoner.FullName} {prisoner.Age} years old"); } else { sb.AppendLine($"Invalid Data"); } } context.Prisoners.AddRange(validPrisoners); context.SaveChanges(); var result = sb.ToString().TrimEnd(); return(result); }