Exemplo n.º 1
0
        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);
        }
Exemplo n.º 4
0
        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);
        }
Exemplo n.º 6
0
        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());
        }
Exemplo n.º 7
0
        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);
        }
Exemplo n.º 8
0
        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);
        }
Exemplo n.º 10
0
        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());
        }
Exemplo n.º 11
0
        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);
        }
Exemplo n.º 12
0
        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));
        }
Exemplo n.º 13
0
        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);
        }
Exemplo n.º 14
0
        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());
        }
Exemplo n.º 15
0
        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);
        }
Exemplo n.º 17
0
        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());
        }
Exemplo n.º 19
0
        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);
        }
Exemplo n.º 20
0
        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());
        }
Exemplo n.º 21
0
        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);
        }
Exemplo n.º 22
0
        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());
        }
Exemplo n.º 25
0
        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());
        }
Exemplo n.º 26
0
        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());
        }
Exemplo n.º 27
0
        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());
        }
Exemplo n.º 28
0
        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);
        }